{"version":3,"sources":["/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/index.cjs","../../src/index.ts","../../package.json"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC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","file":"/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/index.cjs","sourcesContent":[null,"import type { AgentCard } from \"@a2a-js/sdk\";\nimport cors from \"cors\";\nimport express, { type Response } from \"express\";\nimport helmet from \"helmet\";\nimport { StatusCodes } from \"http-status-codes\";\nimport { version } from \"../package.json\";\nimport { setAgent } from \"./config/agent\";\nimport { setManifest } from \"./config/manifest\";\nimport { setModules } from \"./config/modules\";\nimport { setOptions } from \"./config/options\";\nimport { AuthMiddleware } from \"./middlewares/auth.middleware\";\nimport { createAuthzMiddleware } from \"./middlewares/authz.middleware\";\nimport { errorMiddleware } from \"./middlewares/error.middleware\";\nimport {\n\taccessLogMiddleware,\n\trequestContextMiddleware,\n} from \"./middlewares/request-context.middleware\";\nimport type {\n\tA2AModule,\n\tAuthModule,\n\tMCPModule,\n\tMemoryModule,\n\tModelModule,\n} from \"./modules\";\nimport { createA2ARouter, createApiRouter, createQueryRouter } from \"./routes\";\nimport { createIntentRouter } from \"./routes/intent.routes\";\nimport type { AinAgentManifest, OnIntentFallback } from \"./types/agent\";\nimport type { AuthzConfig } from \"./types/authz\";\nimport { interceptConsole } from \"./utils/logger\";\n\nexport type {\n\tAinAgentManifest,\n\tIntentFallbackContext,\n\tOnIntentFallback,\n} from \"./types/agent\";\n\nimport { container } from \"./container\";\nimport isValidUrl from \"./utils/isValidUrl\";\n\n/**\n * Main class for AI Network Agent Development Kit (AIN-ADK).\n *\n * AINAgent orchestrates all modules and provides an Express server for handling\n * agent interactions through both standard query endpoints and A2A protocol endpoints.\n *\n * @example\n * ```typescript\n * const manifest = {\n *   name: \"MyAgent\",\n *   description: \"An example AI agent\",\n * };\n *\n * const agent = new AINAgent(manifest, {\n *   modelModule: new ModelModule(),\n *   a2aModule: new A2AModule(),\n *   mcpModule: new MCPModule()\n * });\n *\n * agent.start(3000);\n * ```\n */\nexport class AINAgent {\n\t/** Express application instance */\n\tpublic app: express.Application;\n\n\t/** Agent manifest containing metadata and configuration */\n\tpublic manifest: AinAgentManifest;\n\n\t/** Modules */\n\tpublic modelModule: ModelModule;\n\tpublic memoryModule: MemoryModule;\n\tpublic authModule?: AuthModule;\n\tpublic a2aModule?: A2AModule;\n\tpublic mcpModule?: MCPModule;\n\tpublic authz?: AuthzConfig;\n\n\t/** Optional fallback handler when intent matching fails */\n\tpublic onIntentFallback?: OnIntentFallback;\n\n\t/**\n\t * Creates a new AINAgent instance.\n\t *\n\t * @param manifest - Agent manifest containing name, description, version, and optional URL\n\t * @param modules - Required and optional modules for the agent\n\t * @param modules.modelModule - Required module for AI model integrations\n\t * @param modules.a2aModule - Optional module for A2A protocol support\n\t * @param modules.mcpModule - Optional module for MCP server connections\n\t * @param modules.memoryModule - Optional module for memory management\n\t * @param authScheme - Authentication middleware for securing endpoints\n\t * @param options - Optional configuration options\n\t * @param options.onIntentFallback - Fallback handler when intent matching fails\n\t */\n\tconstructor(\n\t\tmanifest: AinAgentManifest,\n\t\tmodules: {\n\t\t\tauthModule: AuthModule;\n\t\t\tmodelModule: ModelModule;\n\t\t\tmemoryModule: MemoryModule;\n\t\t\ta2aModule?: A2AModule;\n\t\t\tmcpModule?: MCPModule;\n\t\t\tauthz?: AuthzConfig;\n\t\t},\n\t\toptions?: {\n\t\t\tonIntentFallback?: OnIntentFallback;\n\t\t},\n\t) {\n\t\t// Mirror console.log/warn/error into the log file (no-op without\n\t\t// LOG_FILE_PATH) so start/shutdown banners are part of the log record.\n\t\tinterceptConsole();\n\n\t\tthis.app = express();\n\t\t// Express 5 defaults the query parser to \"simple\", which does not parse\n\t\t// nested/bracket params (e.g. `?labels[category]=logbook`). Use the\n\t\t// \"extended\" parser so faceted filters like DocumentFilter.labels are\n\t\t// decoded into nested objects on req.query.\n\t\tthis.app.set(\"query parser\", \"extended\");\n\n\t\t// Set manifest\n\t\tthis.manifest = manifest;\n\t\tsetManifest(manifest);\n\n\t\t// Set modules\n\t\tthis.modelModule = modules.modelModule;\n\t\tthis.a2aModule = modules.a2aModule;\n\t\tthis.mcpModule = modules.mcpModule;\n\t\tthis.memoryModule = modules.memoryModule;\n\t\tthis.authModule = modules.authModule;\n\t\tthis.authz = modules.authz;\n\t\tthis.onIntentFallback = options?.onIntentFallback;\n\n\t\t// Set global modules for easy access\n\t\tsetModules({\n\t\t\tmodelModule: modules.modelModule,\n\t\t\ta2aModule: modules.a2aModule,\n\t\t\tmcpModule: modules.mcpModule,\n\t\t\tmemoryModule: modules.memoryModule,\n\t\t});\n\n\t\t// Set global options\n\t\tsetOptions({\n\t\t\tonIntentFallback: options?.onIntentFallback,\n\t\t});\n\n\t\t// Set global agent reference\n\t\tsetAgent(this);\n\n\t\tthis.initializeMiddlewares();\n\t\tthis.initializeRoutes();\n\t\tthis.app.use(errorMiddleware);\n\t}\n\n\t/**\n\t * Initializes Express middlewares for security, CORS, and body parsing.\n\t * Also applies authentication middleware if configured.\n\t */\n\tprivate initializeMiddlewares(): void {\n\t\t// First so the whole request chain (auth included) shares one\n\t\t// AsyncLocalStorage context and every completion gets an access log.\n\t\tthis.app.use(requestContextMiddleware());\n\t\tthis.app.use(accessLogMiddleware());\n\t\tthis.app.use(helmet());\n\t\tthis.app.use(cors());\n\t\tthis.app.use(express.json({ limit: \"25mb\" }));\n\t\tthis.app.use(express.urlencoded({ limit: \"25mb\", extended: true }));\n\t}\n\n\t/**\n\t * Generates an A2A protocol agent card for discovery.\n\t *\n\t * The agent card contains metadata about the agent's capabilities,\n\t * supported input/output modes, and connection information.\n\t *\n\t * @returns AgentCard object with agent metadata and capabilities\n\t * @throws Error if manifest URL is invalid or missing\n\t */\n\tpublic generateAgentCard = (): AgentCard => {\n\t\tconst _url = new URL(this.manifest.url || \"\");\n\t\t_url.pathname = \"a2a\";\n\n\t\treturn {\n\t\t\tname: this.manifest.name,\n\t\t\tdescription: this.manifest.description,\n\t\t\tversion: version,\n\t\t\tprotocolVersion: \"0.3.0\",\n\t\t\turl: _url.toString(),\n\t\t\tcapabilities: {\n\t\t\t\tstreaming: true, // The new framework supports streaming\n\t\t\t\tpushNotifications: false, // Assuming not implemented for this agent yet\n\t\t\t\tstateTransitionHistory: true, // Agent uses history\n\t\t\t},\n\t\t\tdefaultInputModes: [\"text\"],\n\t\t\tdefaultOutputModes: [\"text\", \"task-status\"], // task-status is a common output mode\n\t\t\tskills: [],\n\t\t\tsupportsAuthenticatedExtendedCard: false,\n\t\t};\n\t};\n\n\t/**\n\t * Initializes all HTTP routes including health check, agent discovery,\n\t * query endpoints, and optional A2A endpoints.\n\t *\n\t * Routes initialized:\n\t * - GET / - Health check endpoint\n\t * - GET /.well-known/agent.json - Agent card discovery endpoint\n\t * - /query/* - Query processing endpoints\n\t * - /api/* - API endpoints for agent management\n\t * - /a2a/* - A2A protocol endpoints (only if valid URL is configured)\n\t */\n\tprivate initializeRoutes = (): void => {\n\t\tconst auth = new AuthMiddleware(this.authModule);\n\t\tconst authorize = this.authz\n\t\t\t? createAuthzMiddleware(this.authz.resolver, this.authz.routes)\n\t\t\t: undefined;\n\n\t\tthis.app.get(\"/\", async (_, res: Response) => {\n\t\t\tconst { name, description } = this.manifest;\n\t\t\tres.status(200).send(\n\t\t\t\t`\n        ⚡ AIN Agent: ${name} with ain-adk v${version}<br/>\n        ${description}<br/><br/>\n        Agent status: Online and ready.\n      `.trim(),\n\t\t\t);\n\t\t});\n\n\t\tthis.app.get(\n\t\t\t[\n\t\t\t\t\"/.well-known/agent.json\", // ~v0.2.0\n\t\t\t\t\"/.well-known/agent-card.json\", // v0.3.0~\n\t\t\t],\n\t\t\tasync (_, res: Response) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst card = this.generateAgentCard();\n\t\t\t\t\tres.json(card);\n\t\t\t\t} catch (_error) {\n\t\t\t\t\tres.status(StatusCodes.NOT_FOUND).send(\"No agent card\");\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\tconst guards = authorize\n\t\t\t? [auth.middleware(), authorize]\n\t\t\t: [auth.middleware()];\n\n\t\tthis.app.use(\"/query\", ...guards, createQueryRouter());\n\t\tthis.app.use(\"/intent\", ...guards, createIntentRouter());\n\t\tthis.app.use(\"/api\", ...guards, createApiRouter());\n\n\t\tif (isValidUrl(this.manifest.url)) {\n\t\t\tthis.app.use(\"/a2a\", createA2ARouter());\n\t\t}\n\t};\n\n\t/**\n\t * Starts the Express server on the specified port.\n\t *\n\t * @param port - The port number to listen on\n\t */\n\tpublic async start(port: number): Promise<void> {\n\t\tconst server = this.app.listen(port, async () => {\n\t\t\tawait this.memoryModule.initialize();\n\t\t\tawait this.mcpModule?.connectToServers();\n\n\t\t\t// Start the scheduler if user workflow memory is available\n\t\t\ttry {\n\t\t\t\tconst userWorkflowMemory = this.memoryModule.getUserWorkflowMemory();\n\t\t\t\tif (userWorkflowMemory) {\n\t\t\t\t\tconst schedulerService = container.getSchedulerService();\n\t\t\t\t\tawait schedulerService.start();\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\t// User workflow memory not implemented — skip scheduler\n\t\t\t}\n\n\t\t\tconsole.log(`AINAgent is running on port ${port}`);\n\t\t});\n\n\t\t// Graceful shutdown handling\n\t\tconst gracefulShutdown = async (signal: string) => {\n\t\t\tconsole.log(`Received ${signal}, starting graceful shutdown...`);\n\n\t\t\t// Stop accepting new connections\n\t\t\tserver.close(() => {\n\t\t\t\tconsole.log(\"HTTP server closed\");\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\t// Stop the scheduler\n\t\t\t\ttry {\n\t\t\t\t\tconst schedulerService = container.getSchedulerService();\n\t\t\t\t\tconsole.log(\"Stopping scheduler...\");\n\t\t\t\t\tawait schedulerService.stop();\n\t\t\t\t} catch (_error) {\n\t\t\t\t\t// Scheduler not initialized — skip\n\t\t\t\t}\n\n\t\t\t\t// Cleanup modules\n\t\t\t\tif (this.mcpModule) {\n\t\t\t\t\tconsole.log(\"Disconnecting from MCP servers...\");\n\t\t\t\t\tawait this.mcpModule.cleanup();\n\t\t\t\t}\n\n\t\t\t\tif (this.memoryModule) {\n\t\t\t\t\tconsole.log(\"Closing memory module...\");\n\t\t\t\t\tawait this.memoryModule.shutdown();\n\t\t\t\t}\n\n\t\t\t\tconsole.log(\"Graceful shutdown completed\");\n\t\t\t\tprocess.exit(0);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Error during graceful shutdown:\", error);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t};\n\n\t\t// Register signal handlers\n\t\tprocess.on(\"SIGTERM\", () => gracefulShutdown(\"SIGTERM\"));\n\t\tprocess.on(\"SIGINT\", () => gracefulShutdown(\"SIGINT\"));\n\t\tprocess.on(\"SIGHUP\", () => gracefulShutdown(\"SIGHUP\"));\n\t}\n}\n","{\n\t\"name\": \"@ainetwork/adk\",\n\t\"version\": \"0.8.9\",\n\t\"packageManager\": \"pnpm@10.33.0\",\n\t\"description\": \"AI Network Agent Development Kit\",\n\t\"repository\": \"git@github.com:ainetwork-ai/ain-adk.git\",\n\t\"author\": \"AI Network (https://ainetwork.ai)\",\n\t\"type\": \"module\",\n\t\"engines\": {\n\t\t\"node\": \">=20\"\n\t},\n\t\"main\": \"./dist/cjs/index.cjs\",\n\t\"module\": \"./dist/esm/index.js\",\n\t\"types\": \"./dist/esm/index.d.ts\",\n\t\"exports\": {\n\t\t\".\": {\n\t\t\t\"types\": \"./dist/esm/index.d.ts\",\n\t\t\t\"import\": \"./dist/esm/index.js\",\n\t\t\t\"require\": \"./dist/cjs/index.cjs\",\n\t\t\t\"default\": \"./dist/esm/index.js\"\n\t\t},\n\t\t\"./modules\": {\n\t\t\t\"types\": \"./dist/esm/modules/index.d.ts\",\n\t\t\t\"import\": \"./dist/esm/modules/index.js\",\n\t\t\t\"require\": \"./dist/cjs/modules/index.cjs\",\n\t\t\t\"default\": \"./dist/esm/modules/index.js\"\n\t\t},\n\t\t\"./types/*\": {\n\t\t\t\"types\": \"./dist/esm/types/*.d.ts\",\n\t\t\t\"import\": \"./dist/esm/types/*.js\",\n\t\t\t\"require\": \"./dist/cjs/types/*.cjs\",\n\t\t\t\"default\": \"./dist/esm/types/*.js\"\n\t\t},\n\t\t\"./utils/*\": {\n\t\t\t\"types\": \"./dist/esm/utils/*.d.ts\",\n\t\t\t\"import\": \"./dist/esm/utils/*.js\",\n\t\t\t\"require\": \"./dist/cjs/utils/*.cjs\",\n\t\t\t\"default\": \"./dist/esm/utils/*.js\"\n\t\t}\n\t},\n\t\"files\": [\n\t\t\"dist\"\n\t],\n\t\"scripts\": {\n\t\t\"prebuild\": \"pnpm clean\",\n\t\t\"build\": \"tsup\",\n\t\t\"clean\": \"rm -rf dist\",\n\t\t\"biome\": \"npx @biomejs/biome check\",\n\t\t\"biome:write\": \"npx @biomejs/biome check --write\",\n\t\t\"test\": \"jest --passWithNoTests\",\n\t\t\"prepare\": \"husky\",\n\t\t\"release\": \"release-it\"\n\t},\n\t\"keywords\": [],\n\t\"license\": \"MIT\",\n\t\"devDependencies\": {\n\t\t\"@biomejs/biome\": \"2.0.4\",\n\t\t\"@eslint/js\": \"^9.29.0\",\n\t\t\"@types/cors\": \"^2.8.19\",\n\t\t\"@types/express\": \"^5.0.3\",\n\t\t\"@types/jest\": \"^30.0.0\",\n\t\t\"@types/node\": \"^24.0.1\",\n\t\t\"@types/supertest\": \"^7.2.0\",\n\t\t\"eslint\": \"^9.29.0\",\n\t\t\"husky\": \"^9.1.7\",\n\t\t\"jest\": \"^30.0.0\",\n\t\t\"release-it\": \"^19.0.4\",\n\t\t\"supertest\": \"^7.2.2\",\n\t\t\"ts-jest\": \"^29.4.0\",\n\t\t\"ts-node\": \"^10.9.2\",\n\t\t\"tsup\": \"^8.5.0\",\n\t\t\"tsx\": \"^4.20.3\",\n\t\t\"typescript\": \"^5.8.3\",\n\t\t\"typescript-eslint\": \"^8.34.1\"\n\t},\n\t\"dependencies\": {\n\t\t\"@a2a-js/sdk\": \"^0.3.7\",\n\t\t\"@modelcontextprotocol/sdk\": \"^1.25.1\",\n\t\t\"cors\": \"^2.8.5\",\n\t\t\"dotenv\": \"^16.5.0\",\n\t\t\"express\": \"^5.1.0\",\n\t\t\"helmet\": \"^8.1.0\",\n\t\t\"http-status-codes\": \"^2.3.0\",\n\t\t\"node-cron\": \"^4.2.1\",\n\t\t\"uuid\": \"^11.1.0\",\n\t\t\"winston\": \"^3.17.0\",\n\t\t\"winston-daily-rotate-file\": \"^5.0.0\"\n\t},\n\t\"publishConfig\": {\n\t\t\"registry\": \"https://registry.npmjs.org\"\n\t}\n}\n"]}