@agentrun/sdk 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +20 -15
  2. package/dist/agent-runtime/api/index.cjs +907 -0
  3. package/dist/agent-runtime/api/index.cjs.map +1 -0
  4. package/dist/agent-runtime/api/index.d.cts +193 -0
  5. package/dist/agent-runtime/api/index.d.ts +193 -0
  6. package/dist/agent-runtime/api/index.js +882 -0
  7. package/dist/agent-runtime/api/index.js.map +1 -0
  8. package/dist/agent-runtime/index.cjs +2528 -0
  9. package/dist/agent-runtime/index.cjs.map +1 -0
  10. package/dist/agent-runtime/index.d.cts +778 -0
  11. package/dist/agent-runtime/index.d.ts +778 -0
  12. package/dist/agent-runtime/index.js +2496 -0
  13. package/dist/agent-runtime/index.js.map +1 -0
  14. package/dist/base-K1GMfJbH.d.ts +59 -0
  15. package/dist/base-xcWt5bua.d.cts +59 -0
  16. package/dist/client-DHXxjuo3.d.ts +58 -0
  17. package/dist/client-DPUTs69s.d.cts +58 -0
  18. package/dist/config-07gMelJP.d.cts +125 -0
  19. package/dist/config-07gMelJP.d.ts +125 -0
  20. package/dist/control-api-BWD4eua5.d.cts +27 -0
  21. package/dist/control-api-d-82Sgpr.d.ts +27 -0
  22. package/dist/credential/api/index.cjs +655 -0
  23. package/dist/credential/api/index.cjs.map +1 -0
  24. package/dist/credential/api/index.d.cts +93 -0
  25. package/dist/credential/api/index.d.ts +93 -0
  26. package/dist/credential/api/index.js +630 -0
  27. package/dist/credential/api/index.js.map +1 -0
  28. package/dist/credential/index.cjs +1286 -0
  29. package/dist/credential/index.cjs.map +1 -0
  30. package/dist/credential/index.d.cts +246 -0
  31. package/dist/credential/index.d.ts +246 -0
  32. package/dist/credential/index.js +1263 -0
  33. package/dist/credential/index.js.map +1 -0
  34. package/dist/data-api-B-4h9_Vf.d.ts +166 -0
  35. package/dist/data-api-DsG-8JRQ.d.cts +166 -0
  36. package/dist/exception-DM9H2Rpo.d.cts +68 -0
  37. package/dist/exception-DM9H2Rpo.d.ts +68 -0
  38. package/dist/index.cjs +29281 -1427
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +38 -4485
  41. package/dist/index.d.ts +38 -4485
  42. package/dist/index.js +29259 -1426
  43. package/dist/index.js.map +1 -1
  44. package/dist/integration/builtin/index.cjs +9399 -0
  45. package/dist/integration/builtin/index.cjs.map +1 -0
  46. package/dist/integration/builtin/index.d.cts +692 -0
  47. package/dist/integration/builtin/index.d.ts +692 -0
  48. package/dist/integration/builtin/index.js +9363 -0
  49. package/dist/integration/builtin/index.js.map +1 -0
  50. package/dist/integration/index.cjs +9524 -0
  51. package/dist/integration/index.cjs.map +1 -0
  52. package/dist/integration/index.d.cts +98 -0
  53. package/dist/integration/index.d.ts +98 -0
  54. package/dist/integration/index.js +9481 -0
  55. package/dist/integration/index.js.map +1 -0
  56. package/dist/integration/mastra/index.cjs +9383 -0
  57. package/dist/integration/mastra/index.cjs.map +1 -0
  58. package/dist/integration/mastra/index.d.cts +186 -0
  59. package/dist/integration/mastra/index.d.ts +186 -0
  60. package/dist/integration/mastra/index.js +9348 -0
  61. package/dist/integration/mastra/index.js.map +1 -0
  62. package/dist/model/index.cjs +2392 -0
  63. package/dist/model/index.cjs.map +1 -0
  64. package/dist/model/index.d.cts +97 -0
  65. package/dist/model/index.d.ts +97 -0
  66. package/dist/model/index.js +2368 -0
  67. package/dist/model/index.js.map +1 -0
  68. package/dist/model--I90nCqy.d.cts +66 -0
  69. package/dist/model--I90nCqy.d.ts +66 -0
  70. package/dist/model-BV7A6Trb.d.cts +512 -0
  71. package/dist/model-DGBy-o_L.d.cts +176 -0
  72. package/dist/model-DGBy-o_L.d.ts +176 -0
  73. package/dist/model-RiiiZnou.d.ts +512 -0
  74. package/dist/model-service-D-P2FZNi.d.ts +540 -0
  75. package/dist/model-service-VpzBb7rV.d.cts +540 -0
  76. package/dist/resource-CQovFUeh.d.cts +44 -0
  77. package/dist/resource-DnE_DEka.d.ts +44 -0
  78. package/dist/sandbox/index.cjs +3557 -0
  79. package/dist/sandbox/index.cjs.map +1 -0
  80. package/dist/sandbox/index.d.cts +1598 -0
  81. package/dist/sandbox/index.d.ts +1598 -0
  82. package/dist/sandbox/index.js +3532 -0
  83. package/dist/sandbox/index.js.map +1 -0
  84. package/dist/server/adapter/index.cjs +24886 -0
  85. package/dist/server/adapter/index.cjs.map +1 -0
  86. package/dist/server/adapter/index.d.cts +68 -0
  87. package/dist/server/adapter/index.d.ts +68 -0
  88. package/dist/server/adapter/index.js +24883 -0
  89. package/dist/server/adapter/index.js.map +1 -0
  90. package/dist/server/core/index.cjs +313 -0
  91. package/dist/server/core/index.cjs.map +1 -0
  92. package/dist/server/core/index.d.cts +58 -0
  93. package/dist/server/core/index.d.ts +58 -0
  94. package/dist/server/core/index.js +309 -0
  95. package/dist/server/core/index.js.map +1 -0
  96. package/dist/server/index.cjs +25098 -0
  97. package/dist/server/index.cjs.map +1 -0
  98. package/dist/server/index.d.cts +73 -0
  99. package/dist/server/index.d.ts +73 -0
  100. package/dist/server/index.js +25067 -0
  101. package/dist/server/index.js.map +1 -0
  102. package/dist/server/protocol/index.cjs +1057 -0
  103. package/dist/server/protocol/index.cjs.map +1 -0
  104. package/dist/server/protocol/index.d.cts +135 -0
  105. package/dist/server/protocol/index.d.ts +135 -0
  106. package/dist/server/protocol/index.js +1053 -0
  107. package/dist/server/protocol/index.js.map +1 -0
  108. package/dist/tool-CG0LY-ov.d.cts +155 -0
  109. package/dist/tool-JJHam0ms.d.ts +155 -0
  110. package/dist/toolset/api/index.cjs +754 -0
  111. package/dist/toolset/api/index.cjs.map +1 -0
  112. package/dist/toolset/api/index.d.cts +207 -0
  113. package/dist/toolset/api/index.d.ts +207 -0
  114. package/dist/toolset/api/index.js +727 -0
  115. package/dist/toolset/api/index.js.map +1 -0
  116. package/dist/toolset/index.cjs +1945 -0
  117. package/dist/toolset/index.cjs.map +1 -0
  118. package/dist/toolset/index.d.cts +182 -0
  119. package/dist/toolset/index.d.ts +182 -0
  120. package/dist/toolset/index.js +1920 -0
  121. package/dist/toolset/index.js.map +1 -0
  122. package/dist/toolset-BYDvhwRp.d.cts +394 -0
  123. package/dist/toolset-CSRsJxCb.d.ts +394 -0
  124. package/dist/utils/index.cjs +994 -0
  125. package/dist/utils/index.cjs.map +1 -0
  126. package/dist/utils/index.d.cts +30 -0
  127. package/dist/utils/index.d.ts +30 -0
  128. package/dist/utils/index.js +951 -0
  129. package/dist/utils/index.js.map +1 -0
  130. package/package.json +65 -13
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/log.ts","../../../src/utils/version-check.ts","../../../src/server/core/model.ts","../../../src/server/protocol/base.ts","../../../src/server/protocol/openai.ts","../../../src/server/protocol/agui.ts"],"names":["fp","MessageRole","uuidv4"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Logging utilities for AgentRun SDK\n *\n * 此模块提供日志功能。\n * This module provides logging utilities.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n// concise ANSI color codes we need\nconst COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nclass Logger {\n private level: LogLevel = 'info';\n // match Python logger name\n private prefix = 'agentrun-logger';\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private getColor(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return COLORS.cyan;\n case 'info':\n return COLORS.blue;\n case 'warn':\n return COLORS.yellow;\n case 'error':\n return COLORS.red;\n default:\n return COLORS.reset;\n }\n }\n\n // format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS\n private formatTimestamp(d = new Date()): string {\n const pad = (n: number, sz = 2) => n.toString().padStart(sz, '0');\n const year = d.getFullYear();\n const month = pad(d.getMonth() + 1);\n const day = pad(d.getDate());\n const hour = pad(d.getHours());\n const minute = pad(d.getMinutes());\n const second = pad(d.getSeconds());\n const ms = pad(d.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;\n }\n\n // attempt to infer caller file and line by parsing Error.stack\n // helper: parse a single stack frame into {filepath, line, functionName}\n private parseFrame(frame: string) {\n const m = frame.match(/^(?:at\\s+)?(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (!m) return null;\n return {\n functionName: m[1] ? m[1].trim() : undefined,\n filepath: m[2],\n line: parseInt(m[3], 10),\n };\n }\n\n // get caller by fixed stack offset (used in public log methods)\n private getCallerByOffset(): { filepath?: string; line?: number } {\n const err = new Error();\n const stack = err.stack;\n if (!stack) return {};\n const lines = stack.split('\\n').map(l => l.trim());\n // try the requested offset, if absent try next few frames\n\n for (let i = 3; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n // fallback: try extract /path:line:col substring\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n // skip logger internal frames\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // fallback: scan all frames and return first project frame\n const cwd = process.cwd();\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n if (fp.startsWith(cwd)) return { filepath: parsed.filepath, line: parsed.line };\n }\n // final fallback: first non-node_modules parsed frame\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n return { filepath: parsed.filepath, line: parsed.line };\n }\n return {};\n }\n\n private formatMessage(\n level: LogLevel,\n message: string,\n filepath?: string,\n line?: number\n ): string {\n const timestamp = this.formatTimestamp();\n const color = this.getColor(level);\n const reset = COLORS.reset;\n\n // filepath/line should be provided by caller via getCallerByOffset;\n // if missing, leave blank\n\n const levelName = level === 'warn' ? 'WARNING' : level.toUpperCase();\n const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;\n const nameStr = `${color}[${this.prefix}]${reset}`;\n const tsStr = `${color} ${timestamp}${reset}`;\n const pathInfo =\n filepath && line !== undefined\n ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}`\n : '';\n const msg = level === 'debug' ? `${COLORS.dim}${message}${reset}` : message;\n\n return `\\n${levelStr} ${nameStr}${tsStr}${pathInfo}\\n${msg}\\n`;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n const caller = this.getCallerByOffset();\n console.debug(this.formatMessage('debug', message, caller.filepath, caller.line), ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n const caller = this.getCallerByOffset();\n console.info(this.formatMessage('info', message, caller.filepath, caller.line), ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n const caller = this.getCallerByOffset();\n console.warn(this.formatMessage('warn', message, caller.filepath, caller.line), ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n const caller = this.getCallerByOffset();\n console.error(this.formatMessage('error', message, caller.filepath, caller.line), ...args);\n }\n }\n}\n\nexport const logger = new Logger();\nif (\n ![undefined, null, '', 'False', 'FALSE', 'false', '0'].includes(process.env['AGENTRUN_SDK_DEBUG'])\n) {\n logger.setLevel('debug');\n\n if (!(globalThis as any)._AGENTRUN_DEBUG_LOGGED) {\n logger.warn('启用 AgentRun SDK 调试日志, 移除 AGENTRUN_SDK_DEBUG 环境变量以关闭');\n (globalThis as any)._AGENTRUN_DEBUG_LOGGED = true;\n }\n} else {\n logger.setLevel('info');\n}\n","// Version check utility to ensure warning is only shown once globally\ndeclare const __VERSION__: string;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '0.0.0-dev';\nimport { logger } from './log';\n\nif (\n !process.env.DISABLE_BREAKING_CHANGES_WARNING &&\n !(globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN\n) {\n (globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN = true;\n logger.warn(\n `当前您正在使用 AgentRun Python SDK 版本 ${VERSION}。早期版本通常包含许多新功能,这些功能\\x1b[1;33m 可能引入不兼容的变更 \\x1b[0m。为避免潜在问题,我们强烈建议\\x1b[1;32m 将依赖锁定为此版本 \\x1b[0m。\nYou are currently using AgentRun Python SDK version ${VERSION}. Early versions often include many new features, which\\x1b[1;33m may introduce breaking changes\\x1b[0m. To avoid potential issues, we strongly recommend \\x1b[1;32mpinning the dependency to this version\\x1b[0m.\n\\x1b[2;3m pip install 'agentrun-sdk==${VERSION}' \\x1b[0m\n\n增加\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0m到您的环境变量以关闭此警告。\nAdd\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0mto your environment variables to disable this warning.\n \nReleases:\\x1b[2;3m https://github.com/Serverless-Devs/agentrun-sdk-python/releases\\x1b[0m`\n );\n}\n","/**\n * Server Core Data Models\n *\n * 此模块定义 Server 相关的所有数据模型。\n * This module defines all data models related to Server.\n */\n\n/**\n * Message role enum\n */\nexport enum MessageRole {\n SYSTEM = 'system',\n USER = 'user',\n ASSISTANT = 'assistant',\n TOOL = 'tool',\n}\n\n/**\n * Event type enum for AgentEvent (Protocol agnostic)\n *\n * 定义核心事件类型,框架会自动转换为对应协议格式(OpenAI、AG-UI 等)。\n */\nexport enum EventType {\n // 核心事件\n TEXT = 'TEXT', // 文本内容块\n TOOL_CALL = 'TOOL_CALL', // 完整工具调用(含 id, name, args)\n TOOL_CALL_CHUNK = 'TOOL_CALL_CHUNK', // 工具调用参数片段(流式场景)\n TOOL_RESULT = 'TOOL_RESULT', // 工具执行结果\n TOOL_RESULT_CHUNK = 'TOOL_RESULT_CHUNK', // 工具执行结果片段(流式输出场景)\n ERROR = 'ERROR', // 错误事件\n STATE = 'STATE', // 状态更新(快照或增量)\n\n // 人机交互事件\n HITL = 'HITL', // Human-in-the-Loop,请求人类介入\n\n // 扩展事件\n CUSTOM = 'CUSTOM', // 自定义事件\n RAW = 'RAW', // 原始协议数据(直接透传到响应流)\n}\n\n/**\n * Tool call definition\n */\nexport interface ToolCall {\n id: string;\n type?: string;\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * Tool definition\n */\nexport interface Tool {\n type: string;\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n };\n}\n\n/**\n * Message in a conversation\n */\nexport interface Message {\n id?: string;\n role: MessageRole;\n content?: string | Array<Record<string, unknown>>;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * Agent request\n */\nexport interface AgentRequest {\n /** Protocol name */\n protocol?: string;\n /** Messages in the conversation */\n messages: Message[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Model to use */\n model?: string;\n /** Available tools */\n tools?: Tool[];\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Raw HTTP request (for accessing headers, etc.) */\n rawRequest?: unknown;\n}\n\n/**\n * Merge options for addition field\n */\nexport interface MergeOptions {\n noNewField?: boolean;\n concatList?: boolean;\n ignoreEmptyList?: boolean;\n}\n\n/**\n * Agent event (for streaming)\n *\n * 标准化的事件结构,协议无关设计。\n * 框架层会自动将 AgentEvent 转换为对应协议的格式(OpenAI、AG-UI 等)。\n */\nexport interface AgentEvent {\n /** Event type */\n event: EventType;\n /** Event data */\n data?: Record<string, unknown>;\n /** Additional fields for protocol extension */\n addition?: Record<string, unknown>;\n /** Merge options for addition */\n additionMergeOptions?: MergeOptions;\n}\n\n/**\n * Agent result (alias for AgentEvent)\n */\nexport type AgentResult = AgentEvent;\n\n/**\n * Agent event item (can be string or AgentEvent)\n */\nexport type AgentEventItem = string | AgentEvent;\n\n/**\n * Protocol configuration base\n */\nexport interface ProtocolConfig {\n prefix?: string;\n enable?: boolean;\n}\n\n/**\n * OpenAI protocol configuration\n */\nexport interface OpenAIProtocolConfig extends ProtocolConfig {\n modelName?: string;\n}\n\n/**\n * AG-UI protocol configuration\n */\nexport interface AGUIProtocolConfig extends ProtocolConfig {\n // No additional config for now\n}\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** OpenAI protocol config */\n openai?: OpenAIProtocolConfig;\n /** AG-UI protocol config */\n agui?: AGUIProtocolConfig;\n /** CORS origins */\n corsOrigins?: string[];\n /** Port to listen on */\n port?: number;\n /** Host to listen on */\n host?: string;\n}\n\n/**\n * Protocol request interface (framework agnostic)\n */\nexport interface ProtocolRequest {\n body: Record<string, unknown>;\n headers: Record<string, string>;\n method: string;\n url: string;\n query?: Record<string, string>;\n}\n\n/**\n * Protocol response interface\n */\nexport interface ProtocolResponse {\n status: number;\n headers: Record<string, string>;\n body: string | AsyncIterable<string>;\n}\n\n/**\n * Invoke options for AgentInvoker\n */\nexport interface InvokeOptions {\n signal?: AbortSignal;\n timeout?: number;\n}\n","/**\n * Protocol Handler Base\n *\n * Abstract base class for protocol handlers.\n * Each protocol (OpenAI, AG-UI, etc.) implements this interface.\n */\n\nimport type { AgentInvoker } from '../core/invoker';\nimport type { ProtocolRequest, ProtocolResponse } from '../core/model';\n\n/**\n * Route definition for protocol handler\n */\nexport interface RouteDefinition {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE';\n path: string;\n handler: (req: ProtocolRequest, invoker: AgentInvoker) => Promise<ProtocolResponse>;\n}\n\n/**\n * Protocol Handler abstract base class\n *\n * Responsibilities:\n * - Define protocol routes\n * - Parse protocol-specific requests to AgentRequest\n * - Format AgentEvent stream to protocol-specific response\n */\nexport abstract class ProtocolHandler {\n /**\n * Protocol name identifier\n */\n abstract readonly name: string;\n\n /**\n * Get protocol route prefix\n */\n abstract getPrefix(): string;\n\n /**\n * Get all routes supported by this protocol\n */\n abstract getRoutes(): RouteDefinition[];\n\n /**\n * Check if a request matches this protocol\n */\n matches(req: ProtocolRequest): boolean {\n const prefix = this.getPrefix();\n return this.getRoutes().some(\n route => route.method === req.method && this.matchPath(prefix + route.path, req.url)\n );\n }\n\n /**\n * Handle a request\n */\n async handle(req: ProtocolRequest, invoker: AgentInvoker): Promise<ProtocolResponse> {\n const prefix = this.getPrefix();\n const route = this.getRoutes().find(\n r => r.method === req.method && this.matchPath(prefix + r.path, req.url)\n );\n\n if (!route) {\n return {\n status: 404,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ error: 'Not Found' }),\n };\n }\n\n try {\n return await route.handler(req, invoker);\n } catch (error) {\n return this.createErrorResponse(error, 500);\n }\n }\n\n /**\n * Create error response\n */\n protected createErrorResponse(error: unknown, status: number = 500): ProtocolResponse {\n const message = error instanceof Error ? error.message : String(error);\n return {\n status,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n error: {\n message,\n type: 'server_error',\n },\n }),\n };\n }\n\n /**\n * Match path with simple pattern matching\n * Supports exact match and prefix match with trailing slash\n */\n private matchPath(pattern: string, path: string): boolean {\n // Normalize paths\n const normalizedPattern = pattern.replace(/\\/+$/, '');\n const normalizedPath = path.replace(/\\/+$/, '').split('?')[0];\n\n return normalizedPattern === normalizedPath;\n }\n}\n","/**\n * OpenAI Protocol Handler\n *\n * Implements OpenAI Chat Completions API compatible protocol.\n * Supports both streaming (SSE) and non-streaming responses.\n */\n\nimport type { AgentInvoker } from '../core/invoker';\nimport {\n AgentEvent,\n AgentRequest,\n EventType,\n Message,\n MessageRole,\n OpenAIProtocolConfig,\n ProtocolRequest,\n ProtocolResponse,\n Tool,\n ToolCall,\n} from '../core/model';\nimport { ProtocolHandler, RouteDefinition } from './base';\n\n/**\n * OpenAI Protocol Handler\n */\nexport class OpenAIProtocolHandler extends ProtocolHandler {\n readonly name = 'openai';\n\n constructor(private config?: OpenAIProtocolConfig) {\n super();\n }\n\n getPrefix(): string {\n return this.config?.prefix ?? '/openai/v1';\n }\n\n getRoutes(): RouteDefinition[] {\n return [\n {\n method: 'POST',\n path: '/chat/completions',\n handler: this.handleChatCompletions.bind(this),\n },\n {\n method: 'GET',\n path: '/models',\n handler: this.handleListModels.bind(this),\n },\n ];\n }\n\n /**\n * Handle POST /chat/completions\n */\n private async handleChatCompletions(\n req: ProtocolRequest,\n invoker: AgentInvoker\n ): Promise<ProtocolResponse> {\n try {\n const { agentRequest, context } = this.parseRequest(req.body);\n\n if (agentRequest.stream) {\n return {\n status: 200,\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n body: this.formatStream(invoker.invoke(agentRequest), context),\n };\n }\n\n // Non-streaming response\n const events: AgentEvent[] = [];\n for await (const event of invoker.invoke(agentRequest)) {\n events.push(event);\n }\n\n return {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(this.formatNonStream(events, context)),\n };\n } catch (error) {\n return this.createErrorResponse(error, 400);\n }\n }\n\n /**\n * Handle GET /models\n */\n private async handleListModels(): Promise<ProtocolResponse> {\n const modelName = this.config?.modelName ?? 'agentrun';\n return {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n object: 'list',\n data: [\n {\n id: modelName,\n object: 'model',\n created: Math.floor(Date.now() / 1000),\n owned_by: 'agentrun',\n },\n ],\n }),\n };\n }\n\n /**\n * Parse OpenAI format request to AgentRequest\n */\n private parseRequest(body: Record<string, unknown>): {\n agentRequest: AgentRequest;\n context: { id: string; model: string; created: number };\n } {\n if (!body.messages || !Array.isArray(body.messages)) {\n throw new Error('Missing required field: messages');\n }\n\n const context = {\n id: `chatcmpl-${this.generateId()}`,\n model: (body.model as string) || this.config?.modelName || 'agentrun',\n created: Math.floor(Date.now() / 1000),\n };\n\n const messages = this.parseMessages(body.messages);\n const tools = this.parseTools(body.tools);\n\n const agentRequest: AgentRequest = {\n protocol: 'openai',\n messages,\n stream: (body.stream as boolean) ?? false,\n model: context.model,\n tools: tools || undefined,\n metadata: body.metadata as Record<string, unknown> | undefined,\n };\n\n return { agentRequest, context };\n }\n\n /**\n * Parse OpenAI messages to internal Message format\n */\n private parseMessages(messages: unknown[]): Message[] {\n return messages.map(m => {\n const msg = m as Record<string, unknown>;\n return {\n id: msg.id as string | undefined,\n role: msg.role as MessageRole,\n content: msg.content as string | undefined,\n name: msg.name as string | undefined,\n toolCallId: msg.tool_call_id as string | undefined,\n toolCalls: msg.tool_calls\n ? (msg.tool_calls as unknown[]).map(tc => {\n const call = tc as Record<string, unknown>;\n return {\n id: call.id as string,\n type: call.type as string | undefined,\n function: call.function as { name: string; arguments: string },\n };\n })\n : undefined,\n };\n });\n }\n\n /**\n * Parse OpenAI tools format\n */\n private parseTools(tools: unknown): Tool[] | null {\n if (!tools || !Array.isArray(tools)) {\n return null;\n }\n\n return tools.map(t => {\n const tool = t as Record<string, unknown>;\n return {\n type: (tool.type as string) || 'function',\n function: tool.function as Tool['function'],\n };\n });\n }\n\n /**\n * Format streaming response (SSE)\n */\n private async *formatStream(\n events: AsyncGenerator<AgentEvent>,\n context: { id: string; model: string; created: number }\n ): AsyncGenerator<string> {\n let sentRole = false;\n let hasText = false;\n let toolCallIndex = -1;\n const toolCallStates = new Map<string, { index: number; started: boolean }>();\n let hasToolCalls = false;\n\n for await (const event of events) {\n // Handle RAW event - pass through directly\n if (event.event === EventType.RAW) {\n const raw = event.data?.raw as string;\n if (raw) {\n yield raw.endsWith('\\n\\n') ? raw : raw.replace(/\\n+$/, '') + '\\n\\n';\n }\n continue;\n }\n\n // Handle TEXT event\n if (event.event === EventType.TEXT) {\n const delta: Record<string, unknown> = {};\n\n if (!sentRole) {\n delta.role = 'assistant';\n sentRole = true;\n }\n\n const content = event.data?.delta as string;\n if (content) {\n delta.content = content;\n hasText = true;\n }\n\n yield this.buildChunk(context, { delta });\n continue;\n }\n\n // Handle TOOL_CALL_CHUNK event\n if (event.event === EventType.TOOL_CALL_CHUNK) {\n const toolId = event.data?.id as string;\n const toolName = event.data?.name as string;\n const argsDelta = (event.data?.args_delta as string) || (event.data?.argsDelta as string);\n\n // First time seeing this tool call\n if (toolId && !toolCallStates.has(toolId)) {\n toolCallIndex++;\n toolCallStates.set(toolId, { index: toolCallIndex, started: true });\n hasToolCalls = true;\n\n // Send tool call start with id and name\n yield this.buildChunk(context, {\n delta: {\n tool_calls: [\n {\n index: toolCallIndex,\n id: toolId,\n type: 'function',\n function: { name: toolName || '', arguments: '' },\n },\n ],\n },\n });\n }\n\n // Send arguments delta\n if (argsDelta) {\n const state = toolCallStates.get(toolId);\n const currentIndex = state?.index ?? toolCallIndex;\n\n yield this.buildChunk(context, {\n delta: {\n tool_calls: [\n {\n index: currentIndex,\n function: { arguments: argsDelta },\n },\n ],\n },\n });\n }\n continue;\n }\n\n // Handle ERROR event\n if (event.event === EventType.ERROR) {\n yield this.buildChunk(context, {\n delta: {},\n finish_reason: 'error',\n });\n continue;\n }\n }\n\n // Send finish_reason\n const finishReason = hasToolCalls ? 'tool_calls' : hasText ? 'stop' : 'stop';\n yield this.buildChunk(context, { delta: {}, finish_reason: finishReason });\n\n // Send [DONE]\n yield 'data: [DONE]\\n\\n';\n }\n\n /**\n * Build SSE chunk\n */\n private buildChunk(\n context: { id: string; model: string; created: number },\n choice: {\n delta?: Record<string, unknown>;\n finish_reason?: string | null;\n }\n ): string {\n const chunk = {\n id: context.id,\n object: 'chat.completion.chunk',\n created: context.created,\n model: context.model,\n choices: [\n {\n index: 0,\n delta: choice.delta || {},\n finish_reason: choice.finish_reason ?? null,\n },\n ],\n };\n return `data: ${JSON.stringify(chunk)}\\n\\n`;\n }\n\n /**\n * Format non-streaming response\n */\n private formatNonStream(\n events: AgentEvent[],\n context: { id: string; model: string; created: number }\n ): Record<string, unknown> {\n let content = '';\n const toolCalls: ToolCall[] = [];\n\n for (const event of events) {\n if (event.event === EventType.TEXT) {\n content += (event.data?.delta as string) || '';\n } else if (event.event === EventType.TOOL_CALL_CHUNK) {\n const toolId = event.data?.id as string;\n const toolName = event.data?.name as string;\n const argsDelta = (event.data?.args_delta as string) || (event.data?.argsDelta as string);\n\n // Find or create tool call\n let toolCall = toolCalls.find(tc => tc.id === toolId);\n if (!toolCall && toolId) {\n toolCall = {\n id: toolId,\n type: 'function',\n function: { name: toolName || '', arguments: '' },\n };\n toolCalls.push(toolCall);\n }\n\n // Append arguments\n if (toolCall && argsDelta) {\n toolCall.function.arguments += argsDelta;\n }\n }\n }\n\n const message: Record<string, unknown> = {\n role: 'assistant',\n content: content || null,\n };\n\n if (toolCalls.length > 0) {\n message.tool_calls = toolCalls.map((tc, idx) => ({\n index: idx,\n id: tc.id,\n type: tc.type,\n function: tc.function,\n }));\n }\n\n return {\n id: context.id,\n object: 'chat.completion',\n created: context.created,\n model: context.model,\n choices: [\n {\n index: 0,\n message,\n finish_reason: toolCalls.length > 0 ? 'tool_calls' : 'stop',\n },\n ],\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n total_tokens: 0,\n },\n };\n }\n\n /**\n * Generate unique ID\n */\n private generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n }\n}\n","/**\n * AG-UI Protocol Handler\n *\n * Implements AG-UI (Agent-User Interaction Protocol) compatible interface.\n * AG-UI is an open-source, lightweight, event-based protocol for standardizing\n * AI Agent to frontend application interactions.\n *\n * Reference: https://docs.ag-ui.com/\n */\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport type { AgentInvoker } from '../core/invoker';\nimport {\n AGUIProtocolConfig,\n AgentEvent,\n AgentRequest,\n EventType,\n Message,\n MessageRole,\n MergeOptions,\n ProtocolRequest,\n ProtocolResponse,\n Tool,\n ToolCall,\n} from '../core/model';\nimport { ProtocolHandler } from './base';\nimport type { RouteDefinition } from './base';\n\n// ============================================================================\n// AG-UI Event Types\n// ============================================================================\n\nexport const AGUI_EVENT_TYPES = {\n RUN_STARTED: 'RUN_STARTED',\n RUN_FINISHED: 'RUN_FINISHED',\n RUN_ERROR: 'RUN_ERROR',\n TEXT_MESSAGE_START: 'TEXT_MESSAGE_START',\n TEXT_MESSAGE_CONTENT: 'TEXT_MESSAGE_CONTENT',\n TEXT_MESSAGE_END: 'TEXT_MESSAGE_END',\n TOOL_CALL_START: 'TOOL_CALL_START',\n TOOL_CALL_ARGS: 'TOOL_CALL_ARGS',\n TOOL_CALL_END: 'TOOL_CALL_END',\n TOOL_CALL_RESULT: 'TOOL_CALL_RESULT',\n STATE_SNAPSHOT: 'STATE_SNAPSHOT',\n STATE_DELTA: 'STATE_DELTA',\n MESSAGES_SNAPSHOT: 'MESSAGES_SNAPSHOT',\n STEP_STARTED: 'STEP_STARTED',\n STEP_FINISHED: 'STEP_FINISHED',\n CUSTOM: 'CUSTOM',\n RAW: 'RAW',\n} as const;\n\n// ============================================================================\n// Stream State\n// ============================================================================\n\ninterface TextState {\n started: boolean;\n ended: boolean;\n messageId: string;\n}\n\ninterface ToolCallState {\n name: string;\n started: boolean;\n ended: boolean;\n hasResult: boolean;\n isHitl: boolean;\n}\n\n/**\n * Stream state for tracking message and tool call boundaries\n */\nclass StreamState {\n text: TextState = {\n started: false,\n ended: false,\n messageId: uuidv4(),\n };\n toolCalls = new Map<string, ToolCallState>();\n toolResultChunks = new Map<string, string[]>();\n hasError = false;\n\n /**\n * End all open tool calls\n */\n *endAllToolCalls(exclude?: string): Generator<Record<string, unknown>> {\n for (const [toolId, state] of this.toolCalls) {\n if (exclude && toolId === exclude) continue;\n if (state.started && !state.ended) {\n yield { type: AGUI_EVENT_TYPES.TOOL_CALL_END, toolCallId: toolId };\n state.ended = true;\n }\n }\n }\n\n /**\n * Ensure text message has started\n */\n *ensureTextStarted(): Generator<Record<string, unknown>> {\n if (!this.text.started || this.text.ended) {\n if (this.text.ended) {\n this.text = { started: false, ended: false, messageId: uuidv4() };\n }\n yield {\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_START,\n messageId: this.text.messageId,\n role: 'assistant',\n };\n this.text.started = true;\n this.text.ended = false;\n }\n }\n\n /**\n * End text message if open\n */\n *endTextIfOpen(): Generator<Record<string, unknown>> {\n if (this.text.started && !this.text.ended) {\n yield {\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_END,\n messageId: this.text.messageId,\n };\n this.text.ended = true;\n }\n }\n\n /**\n * Cache tool result chunk\n */\n cacheToolResultChunk(toolId: string, delta: string): void {\n if (!toolId || delta === null || delta === undefined) return;\n if (delta) {\n const chunks = this.toolResultChunks.get(toolId) || [];\n chunks.push(delta);\n this.toolResultChunks.set(toolId, chunks);\n }\n }\n\n /**\n * Pop and concatenate cached tool result chunks\n */\n popToolResultChunks(toolId: string): string {\n const chunks = this.toolResultChunks.get(toolId) || [];\n this.toolResultChunks.delete(toolId);\n return chunks.join('');\n }\n}\n\n// ============================================================================\n// AG-UI Protocol Handler\n// ============================================================================\n\nconst DEFAULT_PREFIX = '/ag-ui';\n\n/**\n * AG-UI Protocol Handler\n */\nexport class AGUIProtocolHandler extends ProtocolHandler {\n readonly name = 'agui';\n\n constructor(private config?: AGUIProtocolConfig) {\n super();\n }\n\n getPrefix(): string {\n return this.config?.prefix ?? DEFAULT_PREFIX;\n }\n\n getRoutes(): RouteDefinition[] {\n return [\n {\n method: 'POST',\n path: '/agent',\n handler: this.handleAgent.bind(this),\n },\n ];\n }\n\n /**\n * Handle POST /agent\n */\n private async handleAgent(\n req: ProtocolRequest,\n invoker: AgentInvoker\n ): Promise<ProtocolResponse> {\n try {\n const { agentRequest, context } = this.parseRequest(req.body);\n\n return {\n status: 200,\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n body: this.formatStream(invoker.invoke(agentRequest), context),\n };\n } catch (error) {\n // Return error as AG-UI stream\n return {\n status: 200,\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n body: this.errorStream(error instanceof Error ? error.message : String(error)),\n };\n }\n }\n\n /**\n * Parse AG-UI request\n */\n private parseRequest(body: Record<string, unknown>): {\n agentRequest: AgentRequest;\n context: { threadId: string; runId: string };\n } {\n const context = {\n threadId: (body.threadId as string) || uuidv4(),\n runId: (body.runId as string) || uuidv4(),\n };\n\n const messages = this.parseMessages((body.messages as Array<Record<string, unknown>>) || []);\n const tools = this.parseTools(body.tools as Array<Record<string, unknown>> | undefined);\n\n const agentRequest: AgentRequest = {\n protocol: 'agui',\n messages,\n stream: true, // AG-UI always streams\n tools: tools || undefined,\n model: body.model as string | undefined,\n metadata: body.metadata as Record<string, unknown> | undefined,\n };\n\n return { agentRequest, context };\n }\n\n /**\n * Parse messages list\n */\n private parseMessages(rawMessages: Array<Record<string, unknown>>): Message[] {\n const messages: Message[] = [];\n\n for (const msg of rawMessages) {\n if (typeof msg !== 'object' || msg === null) continue;\n\n const roleStr = (msg.role as string) || 'user';\n let role: MessageRole;\n if (Object.values(MessageRole).includes(roleStr as MessageRole)) {\n role = roleStr as MessageRole;\n } else {\n role = MessageRole.USER;\n }\n\n let toolCalls: ToolCall[] | undefined;\n const rawToolCalls = msg.toolCalls as Array<Record<string, unknown>> | undefined;\n if (rawToolCalls && Array.isArray(rawToolCalls)) {\n toolCalls = rawToolCalls.map(tc => ({\n id: (tc.id as string) || '',\n type: (tc.type as string) || 'function',\n function: (tc.function as { name: string; arguments: string }) || {\n name: '',\n arguments: '',\n },\n }));\n }\n\n messages.push({\n id: msg.id as string | undefined,\n role,\n content: msg.content as string | undefined,\n name: msg.name as string | undefined,\n toolCalls,\n toolCallId: msg.toolCallId as string | undefined,\n });\n }\n\n return messages;\n }\n\n /**\n * Parse tools list\n */\n private parseTools(rawTools?: Array<Record<string, unknown>>): Tool[] | null {\n if (!rawTools || !Array.isArray(rawTools)) return null;\n\n const tools: Tool[] = [];\n for (const tool of rawTools) {\n if (typeof tool !== 'object' || tool === null) continue;\n\n tools.push({\n type: (tool.type as string) || 'function',\n function: (tool.function as Tool['function']) || { name: '' },\n });\n }\n\n return tools.length > 0 ? tools : null;\n }\n\n /**\n * Format event stream as AG-UI SSE format\n */\n private async *formatStream(\n events: AsyncGenerator<AgentEvent>,\n context: { threadId: string; runId: string }\n ): AsyncGenerator<string> {\n const state = new StreamState();\n\n // Send RUN_STARTED\n yield this.encode({ type: AGUI_EVENT_TYPES.RUN_STARTED, ...context });\n\n for await (const event of events) {\n if (state.hasError) continue;\n\n if (event.event === EventType.ERROR) {\n state.hasError = true;\n }\n\n for (const aguiEvent of this.processEvent(event, context, state)) {\n yield this.encode(aguiEvent);\n }\n }\n\n // Don't send cleanup events after error\n if (state.hasError) return;\n\n // End all open tool calls\n for (const event of state.endAllToolCalls()) {\n yield this.encode(event);\n }\n\n // End text if open\n for (const event of state.endTextIfOpen()) {\n yield this.encode(event);\n }\n\n // Send RUN_FINISHED\n yield this.encode({ type: AGUI_EVENT_TYPES.RUN_FINISHED, ...context });\n }\n\n /**\n * Process single event and yield AG-UI events\n */\n private *processEvent(\n event: AgentEvent,\n context: { threadId: string; runId: string },\n state: StreamState\n ): Generator<Record<string, unknown>> {\n // RAW event: yield raw data directly (handled specially in encode)\n if (event.event === EventType.RAW) {\n const raw = event.data?.raw as string;\n if (raw) {\n yield { __raw: raw };\n }\n return;\n }\n\n // TEXT event\n if (event.event === EventType.TEXT) {\n yield* state.endAllToolCalls();\n yield* state.ensureTextStarted();\n\n const aguiEvent: Record<string, unknown> = {\n type: AGUI_EVENT_TYPES.TEXT_MESSAGE_CONTENT,\n messageId: state.text.messageId,\n delta: (event.data?.delta as string) || '',\n };\n\n if (event.addition) {\n yield this.applyAddition(aguiEvent, event.addition, event.additionMergeOptions);\n } else {\n yield aguiEvent;\n }\n return;\n }\n\n // TOOL_CALL_CHUNK event\n if (event.event === EventType.TOOL_CALL_CHUNK) {\n const toolId = (event.data?.id as string) || '';\n const toolName = (event.data?.name as string) || '';\n\n yield* state.endTextIfOpen();\n\n // Check if need to start new tool call\n const currentState = state.toolCalls.get(toolId);\n if (toolId && (!currentState || currentState.ended)) {\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n };\n state.toolCalls.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta: (event.data?.args_delta as string) || (event.data?.argsDelta as string) || '',\n };\n return;\n }\n\n // TOOL_CALL event (complete)\n if (event.event === EventType.TOOL_CALL) {\n const toolId = (event.data?.id as string) || '';\n const toolName = (event.data?.name as string) || '';\n const toolArgs = (event.data?.args as string) || '';\n\n yield* state.endTextIfOpen();\n\n const currentState = state.toolCalls.get(toolId);\n if (toolId && (!currentState || currentState.ended)) {\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n };\n state.toolCalls.set(toolId, {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n });\n }\n\n if (toolArgs) {\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: toolId,\n delta: toolArgs,\n };\n }\n return;\n }\n\n // TOOL_RESULT_CHUNK event\n if (event.event === EventType.TOOL_RESULT_CHUNK) {\n const toolId = (event.data?.id as string) || '';\n const delta = (event.data?.delta as string) || '';\n state.cacheToolResultChunk(toolId, delta);\n return;\n }\n\n // HITL event (Human-in-the-Loop)\n if (event.event === EventType.HITL) {\n const hitlId = (event.data?.id as string) || '';\n const toolCallId =\n (event.data?.tool_call_id as string) || (event.data?.toolCallId as string) || '';\n const hitlType = (event.data?.type as string) || 'confirmation';\n const prompt = (event.data?.prompt as string) || '';\n\n yield* state.endTextIfOpen();\n\n // If tool_call_id exists and tool is tracked\n if (toolCallId && state.toolCalls.has(toolCallId)) {\n const toolState = state.toolCalls.get(toolCallId)!;\n if (toolState.started && !toolState.ended) {\n yield { type: AGUI_EVENT_TYPES.TOOL_CALL_END, toolCallId };\n toolState.ended = true;\n }\n toolState.isHitl = true;\n toolState.hasResult = false;\n return;\n }\n\n // Create independent HITL tool call\n const argsDict: Record<string, unknown> = { type: hitlType, prompt };\n if (event.data?.options) argsDict.options = event.data.options;\n if (event.data?.default !== undefined) argsDict.default = event.data.default;\n if (event.data?.timeout !== undefined) argsDict.timeout = event.data.timeout;\n if (event.data?.schema) argsDict.schema = event.data.schema;\n\n const actualId = toolCallId || hitlId;\n\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: actualId,\n toolCallName: `hitl_${hitlType}`,\n };\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_ARGS,\n toolCallId: actualId,\n delta: JSON.stringify(argsDict),\n };\n yield { type: AGUI_EVENT_TYPES.TOOL_CALL_END, toolCallId: actualId };\n\n state.toolCalls.set(actualId, {\n name: `hitl_${hitlType}`,\n started: true,\n ended: true,\n hasResult: false,\n isHitl: true,\n });\n return;\n }\n\n // TOOL_RESULT event\n if (event.event === EventType.TOOL_RESULT) {\n const toolId = (event.data?.id as string) || '';\n const toolName = (event.data?.name as string) || '';\n\n yield* state.endTextIfOpen();\n\n let toolState = state.toolCalls.get(toolId);\n if (toolId && !toolState) {\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_START,\n toolCallId: toolId,\n toolCallName: toolName,\n };\n toolState = {\n name: toolName,\n started: true,\n ended: false,\n hasResult: false,\n isHitl: false,\n };\n state.toolCalls.set(toolId, toolState);\n }\n\n if (toolState && toolState.started && !toolState.ended) {\n yield { type: AGUI_EVENT_TYPES.TOOL_CALL_END, toolCallId: toolId };\n toolState.ended = true;\n }\n\n let finalResult = ((event.data?.content as string) || (event.data?.result as string)) ?? '';\n if (toolId) {\n const cachedChunks = state.popToolResultChunks(toolId);\n if (cachedChunks) {\n finalResult = cachedChunks + finalResult;\n }\n }\n\n yield {\n type: AGUI_EVENT_TYPES.TOOL_CALL_RESULT,\n messageId:\n (event.data?.message_id as string) ||\n (event.data?.messageId as string) ||\n `tool-result-${toolId}`,\n toolCallId: toolId,\n content: finalResult,\n role: 'tool',\n };\n return;\n }\n\n // ERROR event\n if (event.event === EventType.ERROR) {\n yield {\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message: (event.data?.message as string) || '',\n code: event.data?.code,\n };\n return;\n }\n\n // STATE event\n if (event.event === EventType.STATE) {\n if ('snapshot' in (event.data || {})) {\n yield {\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data?.snapshot || {},\n };\n } else if ('delta' in (event.data || {})) {\n yield {\n type: AGUI_EVENT_TYPES.STATE_DELTA,\n delta: event.data?.delta || [],\n };\n } else {\n yield {\n type: AGUI_EVENT_TYPES.STATE_SNAPSHOT,\n snapshot: event.data || {},\n };\n }\n return;\n }\n\n // CUSTOM event\n if (event.event === EventType.CUSTOM) {\n yield {\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: (event.data?.name as string) || 'custom',\n value: event.data?.value,\n };\n return;\n }\n\n // Unknown event type - convert to CUSTOM\n yield {\n type: AGUI_EVENT_TYPES.CUSTOM,\n name: event.event || 'unknown',\n value: event.data,\n };\n }\n\n /**\n * Encode event to SSE format\n */\n private encode(event: Record<string, unknown>): string {\n // Handle raw data passthrough\n if ('__raw' in event) {\n const raw = event.__raw as string;\n return raw.endsWith('\\n\\n') ? raw : raw.replace(/\\n+$/, '') + '\\n\\n';\n }\n return `data: ${JSON.stringify(event)}\\n\\n`;\n }\n\n /**\n * Apply addition fields\n */\n private applyAddition(\n eventData: Record<string, unknown>,\n addition: Record<string, unknown>,\n mergeOptions?: MergeOptions\n ): Record<string, unknown> {\n if (!addition) return eventData;\n\n const result = { ...eventData };\n for (const [key, value] of Object.entries(addition)) {\n if (mergeOptions?.noNewField && !(key in eventData)) continue;\n result[key] = value;\n }\n return result;\n }\n\n /**\n * Generate error stream\n */\n private async *errorStream(message: string): AsyncGenerator<string> {\n const threadId = uuidv4();\n const runId = uuidv4();\n\n yield this.encode({ type: AGUI_EVENT_TYPES.RUN_STARTED, threadId, runId });\n yield this.encode({\n type: AGUI_EVENT_TYPES.RUN_ERROR,\n message,\n code: 'REQUEST_ERROR',\n });\n }\n}\n"]}
@@ -0,0 +1,155 @@
1
+ import { C as Config } from './config-07gMelJP.cjs';
2
+ import { T as ToolSet } from './toolset-BYDvhwRp.cjs';
3
+
4
+ /**
5
+ * Common Tool Definition and Conversion Module
6
+ *
7
+ * Provides cross-framework tool definition and conversion capabilities.
8
+ * 提供跨框架的通用工具定义和转换功能。
9
+ */
10
+
11
+ /**
12
+ * Normalize a tool name to fit provider limits.
13
+ * If name length is <= MAX_TOOL_NAME_LEN, return it unchanged.
14
+ * Otherwise, return the first TOOL_NAME_HEAD_LEN characters + md5(full_name).
15
+ */
16
+ declare function normalizeToolName(name: string): string;
17
+ /**
18
+ * Tool Parameter Definition
19
+ * 工具参数定义
20
+ */
21
+ interface ToolParameter {
22
+ name: string;
23
+ paramType: string;
24
+ description?: string;
25
+ required?: boolean;
26
+ default?: unknown;
27
+ enum?: unknown[];
28
+ items?: Record<string, unknown>;
29
+ properties?: Record<string, unknown>;
30
+ format?: string;
31
+ nullable?: boolean;
32
+ }
33
+ /**
34
+ * JSON Schema for tool parameters
35
+ */
36
+ interface ToolParametersSchema {
37
+ type: 'object';
38
+ properties: Record<string, unknown>;
39
+ required?: string[];
40
+ }
41
+ /**
42
+ * Tool execution function type
43
+ */
44
+ type ToolFunction = (...args: unknown[]) => unknown | Promise<unknown>;
45
+ /**
46
+ * Tool Definition
47
+ * 工具定义
48
+ */
49
+ interface ToolDefinition {
50
+ name: string;
51
+ description: string;
52
+ parameters: ToolParametersSchema;
53
+ func?: ToolFunction;
54
+ }
55
+ /**
56
+ * Common Tool class
57
+ * 通用工具类
58
+ */
59
+ declare class Tool implements ToolDefinition {
60
+ name: string;
61
+ description: string;
62
+ parameters: ToolParametersSchema;
63
+ func?: ToolFunction;
64
+ constructor(options: {
65
+ name: string;
66
+ description?: string;
67
+ parameters?: ToolParametersSchema;
68
+ func?: ToolFunction;
69
+ });
70
+ /**
71
+ * Get parameters as JSON Schema
72
+ */
73
+ getParametersSchema(): ToolParametersSchema;
74
+ /**
75
+ * Convert to OpenAI Function Calling format
76
+ */
77
+ toOpenAIFunction(): Record<string, unknown>;
78
+ /**
79
+ * Convert to Anthropic Claude Tools format
80
+ */
81
+ toAnthropicTool(): Record<string, unknown>;
82
+ /**
83
+ * Execute the tool
84
+ */
85
+ call(...args: unknown[]): Promise<unknown>;
86
+ /**
87
+ * Bind tool to an instance (for class methods)
88
+ */
89
+ bind(instance: unknown): Tool;
90
+ }
91
+ /**
92
+ * Canonical Tool representation for cross-framework conversion
93
+ */
94
+ interface CanonicalTool {
95
+ name: string;
96
+ description: string;
97
+ parameters: ToolParametersSchema;
98
+ func?: ToolFunction;
99
+ }
100
+ /**
101
+ * Common ToolSet class
102
+ * 通用工具集类
103
+ *
104
+ * Manages multiple tools and provides batch conversion capabilities.
105
+ */
106
+ declare class CommonToolSet {
107
+ protected name: string;
108
+ protected _tools: Tool[];
109
+ constructor(name?: string, tools?: Tool[]);
110
+ /**
111
+ * Collect declared tools from subclass
112
+ */
113
+ protected _collectDeclaredTools(): Tool[];
114
+ /**
115
+ * Get tools with optional filtering and modification
116
+ */
117
+ tools(options?: {
118
+ prefix?: string;
119
+ filterByName?: (name: string) => boolean;
120
+ modifyTool?: (tool: Tool) => Tool;
121
+ }): CanonicalTool[];
122
+ /**
123
+ * Create CommonToolSet from AgentRun ToolSet
124
+ */
125
+ static fromAgentRunToolSet(toolset: ToolSet, config?: Config): Promise<CommonToolSet>;
126
+ /**
127
+ * Convert to OpenAI Function Calling format
128
+ */
129
+ toOpenAIFunctions(options?: {
130
+ prefix?: string;
131
+ filterByName?: (name: string) => boolean;
132
+ }): Record<string, unknown>[];
133
+ /**
134
+ * Convert to Anthropic Claude Tools format
135
+ */
136
+ toAnthropicTools(options?: {
137
+ prefix?: string;
138
+ filterByName?: (name: string) => boolean;
139
+ }): Record<string, unknown>[];
140
+ /**
141
+ * Close and release resources
142
+ */
143
+ close(): void;
144
+ }
145
+ /**
146
+ * Tool decorator factory
147
+ * Creates a Tool from a method definition
148
+ */
149
+ declare function tool(options: {
150
+ name?: string;
151
+ description?: string;
152
+ parameters?: ToolParametersSchema;
153
+ }): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
154
+
155
+ export { CommonToolSet as C, Tool as T, type CanonicalTool as a, type ToolDefinition as b, type ToolFunction as c, type ToolParameter as d, type ToolParametersSchema as e, normalizeToolName as n, tool as t };
@@ -0,0 +1,155 @@
1
+ import { C as Config } from './config-07gMelJP.js';
2
+ import { T as ToolSet } from './toolset-CSRsJxCb.js';
3
+
4
+ /**
5
+ * Common Tool Definition and Conversion Module
6
+ *
7
+ * Provides cross-framework tool definition and conversion capabilities.
8
+ * 提供跨框架的通用工具定义和转换功能。
9
+ */
10
+
11
+ /**
12
+ * Normalize a tool name to fit provider limits.
13
+ * If name length is <= MAX_TOOL_NAME_LEN, return it unchanged.
14
+ * Otherwise, return the first TOOL_NAME_HEAD_LEN characters + md5(full_name).
15
+ */
16
+ declare function normalizeToolName(name: string): string;
17
+ /**
18
+ * Tool Parameter Definition
19
+ * 工具参数定义
20
+ */
21
+ interface ToolParameter {
22
+ name: string;
23
+ paramType: string;
24
+ description?: string;
25
+ required?: boolean;
26
+ default?: unknown;
27
+ enum?: unknown[];
28
+ items?: Record<string, unknown>;
29
+ properties?: Record<string, unknown>;
30
+ format?: string;
31
+ nullable?: boolean;
32
+ }
33
+ /**
34
+ * JSON Schema for tool parameters
35
+ */
36
+ interface ToolParametersSchema {
37
+ type: 'object';
38
+ properties: Record<string, unknown>;
39
+ required?: string[];
40
+ }
41
+ /**
42
+ * Tool execution function type
43
+ */
44
+ type ToolFunction = (...args: unknown[]) => unknown | Promise<unknown>;
45
+ /**
46
+ * Tool Definition
47
+ * 工具定义
48
+ */
49
+ interface ToolDefinition {
50
+ name: string;
51
+ description: string;
52
+ parameters: ToolParametersSchema;
53
+ func?: ToolFunction;
54
+ }
55
+ /**
56
+ * Common Tool class
57
+ * 通用工具类
58
+ */
59
+ declare class Tool implements ToolDefinition {
60
+ name: string;
61
+ description: string;
62
+ parameters: ToolParametersSchema;
63
+ func?: ToolFunction;
64
+ constructor(options: {
65
+ name: string;
66
+ description?: string;
67
+ parameters?: ToolParametersSchema;
68
+ func?: ToolFunction;
69
+ });
70
+ /**
71
+ * Get parameters as JSON Schema
72
+ */
73
+ getParametersSchema(): ToolParametersSchema;
74
+ /**
75
+ * Convert to OpenAI Function Calling format
76
+ */
77
+ toOpenAIFunction(): Record<string, unknown>;
78
+ /**
79
+ * Convert to Anthropic Claude Tools format
80
+ */
81
+ toAnthropicTool(): Record<string, unknown>;
82
+ /**
83
+ * Execute the tool
84
+ */
85
+ call(...args: unknown[]): Promise<unknown>;
86
+ /**
87
+ * Bind tool to an instance (for class methods)
88
+ */
89
+ bind(instance: unknown): Tool;
90
+ }
91
+ /**
92
+ * Canonical Tool representation for cross-framework conversion
93
+ */
94
+ interface CanonicalTool {
95
+ name: string;
96
+ description: string;
97
+ parameters: ToolParametersSchema;
98
+ func?: ToolFunction;
99
+ }
100
+ /**
101
+ * Common ToolSet class
102
+ * 通用工具集类
103
+ *
104
+ * Manages multiple tools and provides batch conversion capabilities.
105
+ */
106
+ declare class CommonToolSet {
107
+ protected name: string;
108
+ protected _tools: Tool[];
109
+ constructor(name?: string, tools?: Tool[]);
110
+ /**
111
+ * Collect declared tools from subclass
112
+ */
113
+ protected _collectDeclaredTools(): Tool[];
114
+ /**
115
+ * Get tools with optional filtering and modification
116
+ */
117
+ tools(options?: {
118
+ prefix?: string;
119
+ filterByName?: (name: string) => boolean;
120
+ modifyTool?: (tool: Tool) => Tool;
121
+ }): CanonicalTool[];
122
+ /**
123
+ * Create CommonToolSet from AgentRun ToolSet
124
+ */
125
+ static fromAgentRunToolSet(toolset: ToolSet, config?: Config): Promise<CommonToolSet>;
126
+ /**
127
+ * Convert to OpenAI Function Calling format
128
+ */
129
+ toOpenAIFunctions(options?: {
130
+ prefix?: string;
131
+ filterByName?: (name: string) => boolean;
132
+ }): Record<string, unknown>[];
133
+ /**
134
+ * Convert to Anthropic Claude Tools format
135
+ */
136
+ toAnthropicTools(options?: {
137
+ prefix?: string;
138
+ filterByName?: (name: string) => boolean;
139
+ }): Record<string, unknown>[];
140
+ /**
141
+ * Close and release resources
142
+ */
143
+ close(): void;
144
+ }
145
+ /**
146
+ * Tool decorator factory
147
+ * Creates a Tool from a method definition
148
+ */
149
+ declare function tool(options: {
150
+ name?: string;
151
+ description?: string;
152
+ parameters?: ToolParametersSchema;
153
+ }): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
154
+
155
+ export { CommonToolSet as C, Tool as T, type CanonicalTool as a, type ToolDefinition as b, type ToolFunction as c, type ToolParameter as d, type ToolParametersSchema as e, normalizeToolName as n, tool as t };