@aigne/core 1.73.0-beta → 1.74.0-beta
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.
- package/README.md +11 -11
- package/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/agents/agent.cjs +874 -0
- package/dist/agents/agent.d.cts +967 -0
- package/dist/agents/agent.d.cts.map +1 -0
- package/dist/agents/agent.d.mts +967 -0
- package/dist/agents/agent.d.mts.map +1 -0
- package/dist/agents/agent.mjs +863 -0
- package/dist/agents/agent.mjs.map +1 -0
- package/dist/agents/ai-agent.cjs +524 -0
- package/dist/agents/ai-agent.d.cts +401 -0
- package/dist/agents/ai-agent.d.cts.map +1 -0
- package/dist/agents/ai-agent.d.mts +401 -0
- package/dist/agents/ai-agent.d.mts.map +1 -0
- package/dist/agents/ai-agent.mjs +519 -0
- package/dist/agents/ai-agent.mjs.map +1 -0
- package/dist/agents/chat-model.cjs +397 -0
- package/dist/agents/chat-model.d.cts +674 -0
- package/dist/agents/chat-model.d.cts.map +1 -0
- package/dist/agents/chat-model.d.mts +674 -0
- package/dist/agents/chat-model.d.mts.map +1 -0
- package/dist/agents/chat-model.mjs +391 -0
- package/dist/agents/chat-model.mjs.map +1 -0
- package/dist/agents/guide-rail-agent.cjs +17 -0
- package/dist/agents/guide-rail-agent.d.cts +67 -0
- package/dist/agents/guide-rail-agent.d.cts.map +1 -0
- package/dist/agents/guide-rail-agent.d.mts +67 -0
- package/dist/agents/guide-rail-agent.d.mts.map +1 -0
- package/dist/agents/guide-rail-agent.mjs +17 -0
- package/dist/agents/guide-rail-agent.mjs.map +1 -0
- package/dist/agents/image-agent.cjs +74 -0
- package/dist/agents/image-agent.d.cts +44 -0
- package/dist/agents/image-agent.d.cts.map +1 -0
- package/dist/agents/image-agent.d.mts +44 -0
- package/dist/agents/image-agent.d.mts.map +1 -0
- package/dist/agents/image-agent.mjs +72 -0
- package/dist/agents/image-agent.mjs.map +1 -0
- package/dist/agents/image-model.cjs +83 -0
- package/dist/agents/image-model.d.cts +276 -0
- package/dist/agents/image-model.d.cts.map +1 -0
- package/dist/agents/image-model.d.mts +276 -0
- package/dist/agents/image-model.d.mts.map +1 -0
- package/dist/agents/image-model.mjs +81 -0
- package/dist/agents/image-model.mjs.map +1 -0
- package/dist/agents/mcp-agent.cjs +307 -0
- package/dist/agents/mcp-agent.d.cts +235 -0
- package/dist/agents/mcp-agent.d.cts.map +1 -0
- package/dist/agents/mcp-agent.d.mts +235 -0
- package/dist/agents/mcp-agent.d.mts.map +1 -0
- package/dist/agents/mcp-agent.mjs +303 -0
- package/dist/agents/mcp-agent.mjs.map +1 -0
- package/dist/agents/model.cjs +143 -0
- package/dist/agents/model.d.cts +257 -0
- package/dist/agents/model.d.cts.map +1 -0
- package/dist/agents/model.d.mts +257 -0
- package/dist/agents/model.d.mts.map +1 -0
- package/dist/agents/model.mjs +136 -0
- package/dist/agents/model.mjs.map +1 -0
- package/dist/agents/team-agent.cjs +342 -0
- package/dist/agents/team-agent.d.cts +390 -0
- package/dist/agents/team-agent.d.cts.map +1 -0
- package/dist/agents/team-agent.d.mts +390 -0
- package/dist/agents/team-agent.d.mts.map +1 -0
- package/dist/agents/team-agent.mjs +339 -0
- package/dist/agents/team-agent.mjs.map +1 -0
- package/dist/agents/transform-agent.cjs +77 -0
- package/dist/agents/transform-agent.d.cts +99 -0
- package/dist/agents/transform-agent.d.cts.map +1 -0
- package/dist/agents/transform-agent.d.mts +99 -0
- package/dist/agents/transform-agent.d.mts.map +1 -0
- package/dist/agents/transform-agent.mjs +76 -0
- package/dist/agents/transform-agent.mjs.map +1 -0
- package/dist/agents/types.cjs +30 -0
- package/dist/agents/types.d.cts +34 -0
- package/dist/agents/types.d.cts.map +1 -0
- package/dist/agents/types.d.mts +34 -0
- package/dist/agents/types.d.mts.map +1 -0
- package/dist/agents/types.mjs +25 -0
- package/dist/agents/types.mjs.map +1 -0
- package/dist/agents/user-agent.cjs +87 -0
- package/dist/agents/user-agent.d.cts +32 -0
- package/dist/agents/user-agent.d.cts.map +1 -0
- package/dist/agents/user-agent.d.mts +32 -0
- package/dist/agents/user-agent.d.mts.map +1 -0
- package/dist/agents/user-agent.mjs +88 -0
- package/dist/agents/user-agent.mjs.map +1 -0
- package/dist/agents/video-model.cjs +66 -0
- package/dist/agents/video-model.d.cts +286 -0
- package/dist/agents/video-model.d.cts.map +1 -0
- package/dist/agents/video-model.d.mts +286 -0
- package/dist/agents/video-model.d.mts.map +1 -0
- package/dist/agents/video-model.mjs +64 -0
- package/dist/agents/video-model.mjs.map +1 -0
- package/dist/aigne/aigne.cjs +235 -0
- package/dist/aigne/aigne.d.cts +340 -0
- package/dist/aigne/aigne.d.cts.map +1 -0
- package/dist/aigne/aigne.d.mts +340 -0
- package/dist/aigne/aigne.d.mts.map +1 -0
- package/dist/aigne/aigne.mjs +235 -0
- package/dist/aigne/aigne.mjs.map +1 -0
- package/dist/aigne/context.cjs +377 -0
- package/dist/aigne/context.d.cts +226 -0
- package/dist/aigne/context.d.cts.map +1 -0
- package/dist/aigne/context.d.mts +226 -0
- package/dist/aigne/context.d.mts.map +1 -0
- package/dist/aigne/context.mjs +376 -0
- package/dist/aigne/context.mjs.map +1 -0
- package/dist/aigne/index.cjs +4 -0
- package/dist/aigne/index.d.mts +5 -0
- package/dist/aigne/index.mjs +6 -0
- package/dist/aigne/message-queue.cjs +102 -0
- package/dist/aigne/message-queue.d.cts +52 -0
- package/dist/aigne/message-queue.d.cts.map +1 -0
- package/dist/aigne/message-queue.d.mts +52 -0
- package/dist/aigne/message-queue.d.mts.map +1 -0
- package/dist/aigne/message-queue.mjs +99 -0
- package/dist/aigne/message-queue.mjs.map +1 -0
- package/dist/aigne/type.d.cts +32 -0
- package/dist/aigne/type.d.cts.map +1 -0
- package/dist/aigne/type.d.mts +32 -0
- package/dist/aigne/type.d.mts.map +1 -0
- package/dist/aigne/usage.cjs +29 -0
- package/dist/aigne/usage.d.cts +32 -0
- package/dist/aigne/usage.d.cts.map +1 -0
- package/dist/aigne/usage.d.mts +32 -0
- package/dist/aigne/usage.d.mts.map +1 -0
- package/dist/aigne/usage.mjs +28 -0
- package/dist/aigne/usage.mjs.map +1 -0
- package/dist/index.cjs +142 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.mts +31 -0
- package/dist/index.mjs +31 -0
- package/dist/loader/agent-js.cjs +23 -0
- package/dist/loader/agent-js.d.cts +9 -0
- package/dist/loader/agent-js.d.cts.map +1 -0
- package/dist/loader/agent-js.d.mts +10 -0
- package/dist/loader/agent-js.d.mts.map +1 -0
- package/dist/loader/agent-js.mjs +23 -0
- package/dist/loader/agent-js.mjs.map +1 -0
- package/dist/loader/agent-yaml.cjs +109 -0
- package/dist/loader/agent-yaml.d.cts +87 -0
- package/dist/loader/agent-yaml.d.cts.map +1 -0
- package/dist/loader/agent-yaml.d.mts +87 -0
- package/dist/loader/agent-yaml.d.mts.map +1 -0
- package/dist/loader/agent-yaml.mjs +106 -0
- package/dist/loader/agent-yaml.mjs.map +1 -0
- package/dist/loader/agents.cjs +19 -0
- package/dist/loader/agents.d.cts +9 -0
- package/dist/loader/agents.d.cts.map +1 -0
- package/dist/loader/agents.d.mts +9 -0
- package/dist/loader/agents.d.mts.map +1 -0
- package/dist/loader/agents.mjs +20 -0
- package/dist/loader/agents.mjs.map +1 -0
- package/dist/loader/error.cjs +6 -0
- package/dist/loader/error.d.cts +5 -0
- package/dist/loader/error.d.cts.map +1 -0
- package/dist/loader/error.d.mts +5 -0
- package/dist/loader/error.d.mts.map +1 -0
- package/dist/loader/error.mjs +6 -0
- package/dist/loader/error.mjs.map +1 -0
- package/dist/loader/function-agent.cjs +9 -0
- package/dist/loader/function-agent.d.cts +7 -0
- package/dist/loader/function-agent.d.cts.map +1 -0
- package/dist/loader/function-agent.d.mts +7 -0
- package/dist/loader/function-agent.d.mts.map +1 -0
- package/dist/loader/function-agent.mjs +9 -0
- package/dist/loader/function-agent.mjs.map +1 -0
- package/dist/loader/index.cjs +233 -0
- package/dist/loader/index.d.cts +255 -0
- package/dist/loader/index.d.cts.map +1 -0
- package/dist/loader/index.d.mts +255 -0
- package/dist/loader/index.d.mts.map +1 -0
- package/dist/loader/index.mjs +228 -0
- package/dist/loader/index.mjs.map +1 -0
- package/dist/loader/schema.cjs +135 -0
- package/dist/loader/schema.d.cts +177 -0
- package/dist/loader/schema.d.cts.map +1 -0
- package/dist/loader/schema.d.mts +177 -0
- package/dist/loader/schema.d.mts.map +1 -0
- package/dist/loader/schema.mjs +127 -0
- package/dist/loader/schema.mjs.map +1 -0
- package/dist/memory/index.cjs +3 -0
- package/dist/memory/index.d.mts +3 -0
- package/dist/memory/index.mjs +5 -0
- package/dist/memory/memory.cjs +134 -0
- package/dist/memory/memory.d.cts +103 -0
- package/dist/memory/memory.d.cts.map +1 -0
- package/dist/memory/memory.d.mts +103 -0
- package/dist/memory/memory.d.mts.map +1 -0
- package/dist/memory/memory.mjs +133 -0
- package/dist/memory/memory.mjs.map +1 -0
- package/dist/memory/recorder.cjs +61 -0
- package/dist/memory/recorder.d.cts +98 -0
- package/dist/memory/recorder.d.cts.map +1 -0
- package/dist/memory/recorder.d.mts +98 -0
- package/dist/memory/recorder.d.mts.map +1 -0
- package/dist/memory/recorder.mjs +59 -0
- package/dist/memory/recorder.mjs.map +1 -0
- package/dist/memory/retriever.cjs +60 -0
- package/dist/memory/retriever.d.cts +111 -0
- package/dist/memory/retriever.d.cts.map +1 -0
- package/dist/memory/retriever.d.mts +111 -0
- package/dist/memory/retriever.d.mts.map +1 -0
- package/dist/memory/retriever.mjs +58 -0
- package/dist/memory/retriever.mjs.map +1 -0
- package/dist/prompt/agent-session.cjs +700 -0
- package/dist/prompt/agent-session.d.cts +167 -0
- package/dist/prompt/agent-session.d.cts.map +1 -0
- package/dist/prompt/agent-session.d.mts +167 -0
- package/dist/prompt/agent-session.d.mts.map +1 -0
- package/dist/prompt/agent-session.mjs +700 -0
- package/dist/prompt/agent-session.mjs.map +1 -0
- package/dist/prompt/compact/compactor.cjs +50 -0
- package/dist/prompt/compact/compactor.mjs +50 -0
- package/dist/prompt/compact/compactor.mjs.map +1 -0
- package/dist/prompt/compact/session-memory-extractor.cjs +137 -0
- package/dist/prompt/compact/session-memory-extractor.mjs +137 -0
- package/dist/prompt/compact/session-memory-extractor.mjs.map +1 -0
- package/dist/prompt/compact/types.cjs +59 -0
- package/dist/prompt/compact/types.d.cts +341 -0
- package/dist/prompt/compact/types.d.cts.map +1 -0
- package/dist/prompt/compact/types.d.mts +341 -0
- package/dist/prompt/compact/types.d.mts.map +1 -0
- package/dist/prompt/compact/types.mjs +49 -0
- package/dist/prompt/compact/types.mjs.map +1 -0
- package/dist/prompt/compact/user-memory-extractor.cjs +118 -0
- package/dist/prompt/compact/user-memory-extractor.mjs +118 -0
- package/dist/prompt/compact/user-memory-extractor.mjs.map +1 -0
- package/dist/prompt/context/afs/history.cjs +30 -0
- package/dist/prompt/context/afs/history.mjs +30 -0
- package/dist/prompt/context/afs/history.mjs.map +1 -0
- package/dist/prompt/context/afs/index.cjs +60 -0
- package/dist/prompt/context/afs/index.mjs +61 -0
- package/dist/prompt/context/afs/index.mjs.map +1 -0
- package/dist/prompt/context/index.cjs +18 -0
- package/dist/prompt/context/index.mjs +19 -0
- package/dist/prompt/context/index.mjs.map +1 -0
- package/dist/prompt/filters/index.cjs +22 -0
- package/dist/prompt/filters/index.mjs +21 -0
- package/dist/prompt/filters/index.mjs.map +1 -0
- package/dist/prompt/prompt-builder.cjs +291 -0
- package/dist/prompt/prompt-builder.d.cts +57 -0
- package/dist/prompt/prompt-builder.d.cts.map +1 -0
- package/dist/prompt/prompt-builder.d.mts +57 -0
- package/dist/prompt/prompt-builder.d.mts.map +1 -0
- package/dist/prompt/prompt-builder.mjs +291 -0
- package/dist/prompt/prompt-builder.mjs.map +1 -0
- package/dist/prompt/prompts/afs-builtin-prompt.cjs +12 -0
- package/dist/prompt/prompts/afs-builtin-prompt.mjs +13 -0
- package/dist/prompt/prompts/afs-builtin-prompt.mjs.map +1 -0
- package/dist/prompt/prompts/memory-message-template.cjs +10 -0
- package/dist/prompt/prompts/memory-message-template.mjs +10 -0
- package/dist/prompt/prompts/memory-message-template.mjs.map +1 -0
- package/dist/prompt/prompts/structured-stream-instructions.cjs +30 -0
- package/dist/prompt/prompts/structured-stream-instructions.mjs +30 -0
- package/dist/prompt/prompts/structured-stream-instructions.mjs.map +1 -0
- package/dist/prompt/skills/afs/agent-skill/agent-skill.cjs +66 -0
- package/dist/prompt/skills/afs/agent-skill/agent-skill.mjs +66 -0
- package/dist/prompt/skills/afs/agent-skill/agent-skill.mjs.map +1 -0
- package/dist/prompt/skills/afs/agent-skill/skill-loader.cjs +42 -0
- package/dist/prompt/skills/afs/agent-skill/skill-loader.mjs +41 -0
- package/dist/prompt/skills/afs/agent-skill/skill-loader.mjs.map +1 -0
- package/dist/prompt/skills/afs/base.cjs +9 -0
- package/dist/prompt/skills/afs/base.mjs +10 -0
- package/dist/prompt/skills/afs/base.mjs.map +1 -0
- package/dist/prompt/skills/afs/delete.cjs +50 -0
- package/dist/prompt/skills/afs/delete.mjs +50 -0
- package/dist/prompt/skills/afs/delete.mjs.map +1 -0
- package/dist/prompt/skills/afs/edit.cjs +92 -0
- package/dist/prompt/skills/afs/edit.mjs +92 -0
- package/dist/prompt/skills/afs/edit.mjs.map +1 -0
- package/dist/prompt/skills/afs/exec.cjs +36 -0
- package/dist/prompt/skills/afs/exec.mjs +36 -0
- package/dist/prompt/skills/afs/exec.mjs.map +1 -0
- package/dist/prompt/skills/afs/index.cjs +28 -0
- package/dist/prompt/skills/afs/index.mjs +29 -0
- package/dist/prompt/skills/afs/index.mjs.map +1 -0
- package/dist/prompt/skills/afs/list.cjs +69 -0
- package/dist/prompt/skills/afs/list.mjs +69 -0
- package/dist/prompt/skills/afs/list.mjs.map +1 -0
- package/dist/prompt/skills/afs/read.cjs +86 -0
- package/dist/prompt/skills/afs/read.mjs +86 -0
- package/dist/prompt/skills/afs/read.mjs.map +1 -0
- package/dist/prompt/skills/afs/rename.cjs +53 -0
- package/dist/prompt/skills/afs/rename.mjs +53 -0
- package/dist/prompt/skills/afs/rename.mjs.map +1 -0
- package/dist/prompt/skills/afs/search.cjs +63 -0
- package/dist/prompt/skills/afs/search.mjs +63 -0
- package/dist/prompt/skills/afs/search.mjs.map +1 -0
- package/dist/prompt/skills/afs/write.cjs +51 -0
- package/dist/prompt/skills/afs/write.mjs +51 -0
- package/dist/prompt/skills/afs/write.mjs.map +1 -0
- package/dist/prompt/template.cjs +229 -0
- package/dist/prompt/template.d.cts +247 -0
- package/dist/prompt/template.d.cts.map +1 -0
- package/dist/prompt/template.d.mts +247 -0
- package/dist/prompt/template.d.mts.map +1 -0
- package/dist/prompt/template.mjs +219 -0
- package/dist/prompt/template.mjs.map +1 -0
- package/dist/utils/agent-utils.cjs +49 -0
- package/dist/utils/agent-utils.d.cts +22 -0
- package/dist/utils/agent-utils.d.cts.map +1 -0
- package/dist/utils/agent-utils.d.mts +22 -0
- package/dist/utils/agent-utils.d.mts.map +1 -0
- package/dist/utils/agent-utils.mjs +46 -0
- package/dist/utils/agent-utils.mjs.map +1 -0
- package/dist/utils/camelize.cjs +34 -0
- package/dist/utils/camelize.d.cts +9 -0
- package/dist/utils/camelize.d.cts.map +1 -0
- package/dist/utils/camelize.d.mts +9 -0
- package/dist/utils/camelize.d.mts.map +1 -0
- package/dist/utils/camelize.mjs +33 -0
- package/dist/utils/camelize.mjs.map +1 -0
- package/dist/utils/event-stream.cjs +136 -0
- package/dist/utils/event-stream.d.cts +20 -0
- package/dist/utils/event-stream.d.cts.map +1 -0
- package/dist/utils/event-stream.d.mts +20 -0
- package/dist/utils/event-stream.d.mts.map +1 -0
- package/dist/utils/event-stream.mjs +133 -0
- package/dist/utils/event-stream.mjs.map +1 -0
- package/dist/utils/fetch.cjs +32 -0
- package/dist/utils/fetch.d.cts +8 -0
- package/dist/utils/fetch.d.cts.map +1 -0
- package/dist/utils/fetch.d.mts +8 -0
- package/dist/utils/fetch.d.mts.map +1 -0
- package/dist/utils/fetch.mjs +32 -0
- package/dist/utils/fetch.mjs.map +1 -0
- package/dist/utils/json-schema.cjs +107 -0
- package/dist/utils/json-schema.d.cts +20 -0
- package/dist/utils/json-schema.d.cts.map +1 -0
- package/dist/utils/json-schema.d.mts +20 -0
- package/dist/utils/json-schema.d.mts.map +1 -0
- package/dist/utils/json-schema.mjs +102 -0
- package/dist/utils/json-schema.mjs.map +1 -0
- package/dist/utils/json-utils.cjs +46 -0
- package/dist/utils/json-utils.d.cts +28 -0
- package/dist/utils/json-utils.d.cts.map +1 -0
- package/dist/utils/json-utils.d.mts +28 -0
- package/dist/utils/json-utils.d.mts.map +1 -0
- package/dist/utils/json-utils.mjs +44 -0
- package/dist/utils/json-utils.mjs.map +1 -0
- package/dist/utils/logger.cjs +72 -0
- package/dist/utils/logger.d.cts +41 -0
- package/dist/utils/logger.d.cts.map +1 -0
- package/dist/utils/logger.d.mts +41 -0
- package/dist/utils/logger.d.mts.map +1 -0
- package/dist/utils/logger.mjs +68 -0
- package/dist/utils/logger.mjs.map +1 -0
- package/dist/utils/mcp-utils.cjs +53 -0
- package/dist/utils/mcp-utils.d.cts +10 -0
- package/dist/utils/mcp-utils.d.cts.map +1 -0
- package/dist/utils/mcp-utils.d.mts +10 -0
- package/dist/utils/mcp-utils.d.mts.map +1 -0
- package/dist/utils/mcp-utils.mjs +51 -0
- package/dist/utils/mcp-utils.mjs.map +1 -0
- package/dist/utils/model-utils.cjs +12 -0
- package/dist/utils/model-utils.d.cts +8 -0
- package/dist/utils/model-utils.d.cts.map +1 -0
- package/dist/utils/model-utils.d.mts +8 -0
- package/dist/utils/model-utils.d.mts.map +1 -0
- package/dist/utils/model-utils.mjs +12 -0
- package/dist/utils/model-utils.mjs.map +1 -0
- package/dist/utils/promise.cjs +17 -0
- package/dist/utils/promise.d.cts +10 -0
- package/dist/utils/promise.d.cts.map +1 -0
- package/dist/utils/promise.d.mts +10 -0
- package/dist/utils/promise.d.mts.map +1 -0
- package/dist/utils/promise.mjs +17 -0
- package/dist/utils/promise.mjs.map +1 -0
- package/dist/utils/prompts.cjs +19 -0
- package/dist/utils/prompts.d.cts +6 -0
- package/dist/utils/prompts.d.cts.map +1 -0
- package/dist/utils/prompts.d.mts +6 -0
- package/dist/utils/prompts.d.mts.map +1 -0
- package/dist/utils/prompts.mjs +18 -0
- package/dist/utils/prompts.mjs.map +1 -0
- package/dist/utils/queue.cjs +273 -0
- package/dist/utils/queue.d.cts +60 -0
- package/dist/utils/queue.d.cts.map +1 -0
- package/dist/utils/queue.d.mts +60 -0
- package/dist/utils/queue.d.mts.map +1 -0
- package/dist/utils/queue.mjs +271 -0
- package/dist/utils/queue.mjs.map +1 -0
- package/dist/utils/role-utils.cjs +40 -0
- package/dist/utils/role-utils.d.cts +32 -0
- package/dist/utils/role-utils.d.cts.map +1 -0
- package/dist/utils/role-utils.d.mts +32 -0
- package/dist/utils/role-utils.d.mts.map +1 -0
- package/dist/utils/role-utils.mjs +38 -0
- package/dist/utils/role-utils.mjs.map +1 -0
- package/dist/utils/stream-polyfill.cjs +37 -0
- package/dist/utils/stream-polyfill.d.cts +1 -0
- package/dist/utils/stream-polyfill.d.mts +1 -0
- package/dist/utils/stream-polyfill.mjs +38 -0
- package/dist/utils/stream-polyfill.mjs.map +1 -0
- package/dist/utils/stream-utils.cjs +187 -0
- package/dist/utils/stream-utils.d.cts +30 -0
- package/dist/utils/stream-utils.d.cts.map +1 -0
- package/dist/utils/stream-utils.d.mts +30 -0
- package/dist/utils/stream-utils.d.mts.map +1 -0
- package/dist/utils/stream-utils.mjs +174 -0
- package/dist/utils/stream-utils.mjs.map +1 -0
- package/dist/utils/structured-stream-extractor.cjs +63 -0
- package/dist/utils/structured-stream-extractor.d.cts +23 -0
- package/dist/utils/structured-stream-extractor.d.cts.map +1 -0
- package/dist/utils/structured-stream-extractor.d.mts +23 -0
- package/dist/utils/structured-stream-extractor.d.mts.map +1 -0
- package/dist/utils/structured-stream-extractor.mjs +64 -0
- package/dist/utils/structured-stream-extractor.mjs.map +1 -0
- package/dist/utils/test/agent-response.cjs +16 -0
- package/dist/utils/test/agent-response.d.cts +12 -0
- package/dist/utils/test/agent-response.d.cts.map +1 -0
- package/dist/utils/test/agent-response.d.mts +13 -0
- package/dist/utils/test/agent-response.d.mts.map +1 -0
- package/dist/utils/test/agent-response.mjs +17 -0
- package/dist/utils/test/agent-response.mjs.map +1 -0
- package/dist/utils/test/openai-like-utils.cjs +73 -0
- package/dist/utils/test/openai-like-utils.d.cts +13 -0
- package/dist/utils/test/openai-like-utils.d.cts.map +1 -0
- package/dist/utils/test/openai-like-utils.d.mts +14 -0
- package/dist/utils/test/openai-like-utils.d.mts.map +1 -0
- package/dist/utils/test/openai-like-utils.mjs +68 -0
- package/dist/utils/test/openai-like-utils.mjs.map +1 -0
- package/dist/utils/token-estimator.cjs +57 -0
- package/dist/utils/token-estimator.d.cts +13 -0
- package/dist/utils/token-estimator.d.cts.map +1 -0
- package/dist/utils/token-estimator.d.mts +13 -0
- package/dist/utils/token-estimator.d.mts.map +1 -0
- package/dist/utils/token-estimator.mjs +57 -0
- package/dist/utils/token-estimator.mjs.map +1 -0
- package/dist/utils/type-utils.cjs +159 -0
- package/dist/utils/type-utils.d.cts +32 -0
- package/dist/utils/type-utils.d.cts.map +1 -0
- package/dist/utils/type-utils.d.mts +32 -0
- package/dist/utils/type-utils.d.mts.map +1 -0
- package/dist/utils/type-utils.mjs +141 -0
- package/dist/utils/type-utils.mjs.map +1 -0
- package/dist/utils/typed-event-emitter.cjs +0 -0
- package/dist/utils/typed-event-emitter.d.cts +13 -0
- package/dist/utils/typed-event-emitter.d.cts.map +1 -0
- package/dist/utils/typed-event-emitter.d.mts +13 -0
- package/dist/utils/typed-event-emitter.d.mts.map +1 -0
- package/dist/utils/typed-event-emitter.mjs +1 -0
- package/package.json +143 -62
- package/CHANGELOG.md +0 -2603
- package/lib/cjs/agents/agent.d.ts +0 -961
- package/lib/cjs/agents/agent.js +0 -961
- package/lib/cjs/agents/ai-agent.d.ts +0 -395
- package/lib/cjs/agents/ai-agent.js +0 -572
- package/lib/cjs/agents/chat-model.d.ts +0 -672
- package/lib/cjs/agents/chat-model.js +0 -457
- package/lib/cjs/agents/guide-rail-agent.d.ts +0 -62
- package/lib/cjs/agents/guide-rail-agent.js +0 -14
- package/lib/cjs/agents/image-agent.d.ts +0 -38
- package/lib/cjs/agents/image-agent.js +0 -71
- package/lib/cjs/agents/image-model.d.ts +0 -270
- package/lib/cjs/agents/image-model.js +0 -91
- package/lib/cjs/agents/mcp-agent.d.ts +0 -231
- package/lib/cjs/agents/mcp-agent.js +0 -366
- package/lib/cjs/agents/model.d.ts +0 -252
- package/lib/cjs/agents/model.js +0 -180
- package/lib/cjs/agents/team-agent.d.ts +0 -382
- package/lib/cjs/agents/team-agent.js +0 -386
- package/lib/cjs/agents/transform-agent.d.ts +0 -94
- package/lib/cjs/agents/transform-agent.js +0 -80
- package/lib/cjs/agents/types.d.ts +0 -31
- package/lib/cjs/agents/types.js +0 -40
- package/lib/cjs/agents/user-agent.d.ts +0 -27
- package/lib/cjs/agents/user-agent.js +0 -90
- package/lib/cjs/agents/video-model.d.ts +0 -280
- package/lib/cjs/agents/video-model.js +0 -67
- package/lib/cjs/aigne/aigne.d.ts +0 -335
- package/lib/cjs/aigne/aigne.js +0 -248
- package/lib/cjs/aigne/context.d.ts +0 -220
- package/lib/cjs/aigne/context.js +0 -423
- package/lib/cjs/aigne/index.d.ts +0 -4
- package/lib/cjs/aigne/index.js +0 -20
- package/lib/cjs/aigne/message-queue.d.ts +0 -48
- package/lib/cjs/aigne/message-queue.js +0 -109
- package/lib/cjs/aigne/type.d.ts +0 -27
- package/lib/cjs/aigne/type.js +0 -2
- package/lib/cjs/aigne/usage.d.ts +0 -28
- package/lib/cjs/aigne/usage.js +0 -34
- package/lib/cjs/index.d.ts +0 -21
- package/lib/cjs/index.js +0 -37
- package/lib/cjs/loader/agent-js.d.ts +0 -2
- package/lib/cjs/loader/agent-js.js +0 -21
- package/lib/cjs/loader/agent-yaml.d.ts +0 -78
- package/lib/cjs/loader/agent-yaml.js +0 -120
- package/lib/cjs/loader/agents.d.ts +0 -4
- package/lib/cjs/loader/agents.js +0 -17
- package/lib/cjs/loader/error.d.ts +0 -2
- package/lib/cjs/loader/error.js +0 -6
- package/lib/cjs/loader/function-agent.d.ts +0 -2
- package/lib/cjs/loader/function-agent.js +0 -7
- package/lib/cjs/loader/index.d.ts +0 -251
- package/lib/cjs/loader/index.js +0 -268
- package/lib/cjs/loader/schema.d.ts +0 -167
- package/lib/cjs/loader/schema.js +0 -162
- package/lib/cjs/memory/index.d.ts +0 -3
- package/lib/cjs/memory/index.js +0 -19
- package/lib/cjs/memory/memory.d.ts +0 -93
- package/lib/cjs/memory/memory.js +0 -147
- package/lib/cjs/memory/recorder.d.ts +0 -93
- package/lib/cjs/memory/recorder.js +0 -63
- package/lib/cjs/memory/retriever.d.ts +0 -106
- package/lib/cjs/memory/retriever.js +0 -60
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/prompt/agent-session.d.ts +0 -163
- package/lib/cjs/prompt/agent-session.js +0 -1008
- package/lib/cjs/prompt/compact/compactor.d.ts +0 -7
- package/lib/cjs/prompt/compact/compactor.js +0 -52
- package/lib/cjs/prompt/compact/session-memory-extractor.d.ts +0 -7
- package/lib/cjs/prompt/compact/session-memory-extractor.js +0 -143
- package/lib/cjs/prompt/compact/types.d.ts +0 -336
- package/lib/cjs/prompt/compact/types.js +0 -53
- package/lib/cjs/prompt/compact/user-memory-extractor.d.ts +0 -7
- package/lib/cjs/prompt/compact/user-memory-extractor.js +0 -124
- package/lib/cjs/prompt/context/afs/history.d.ts +0 -9
- package/lib/cjs/prompt/context/afs/history.js +0 -33
- package/lib/cjs/prompt/context/afs/index.d.ts +0 -20
- package/lib/cjs/prompt/context/afs/index.js +0 -54
- package/lib/cjs/prompt/context/index.d.ts +0 -31
- package/lib/cjs/prompt/context/index.js +0 -18
- package/lib/cjs/prompt/filters/index.d.ts +0 -2
- package/lib/cjs/prompt/filters/index.js +0 -51
- package/lib/cjs/prompt/prompt-builder.d.ts +0 -50
- package/lib/cjs/prompt/prompt-builder.js +0 -352
- package/lib/cjs/prompt/prompts/afs-builtin-prompt.d.ts +0 -4
- package/lib/cjs/prompt/prompts/afs-builtin-prompt.js +0 -36
- package/lib/cjs/prompt/prompts/memory-message-template.d.ts +0 -1
- package/lib/cjs/prompt/prompts/memory-message-template.js +0 -8
- package/lib/cjs/prompt/prompts/structured-stream-instructions.d.ts +0 -7
- package/lib/cjs/prompt/prompts/structured-stream-instructions.js +0 -27
- package/lib/cjs/prompt/skills/afs/agent-skill/agent-skill.d.ts +0 -19
- package/lib/cjs/prompt/skills/afs/agent-skill/agent-skill.js +0 -69
- package/lib/cjs/prompt/skills/afs/agent-skill/skill-loader.d.ts +0 -12
- package/lib/cjs/prompt/skills/afs/agent-skill/skill-loader.js +0 -50
- package/lib/cjs/prompt/skills/afs/base.d.ts +0 -4
- package/lib/cjs/prompt/skills/afs/base.js +0 -8
- package/lib/cjs/prompt/skills/afs/delete.d.ts +0 -19
- package/lib/cjs/prompt/skills/afs/delete.js +0 -55
- package/lib/cjs/prompt/skills/afs/edit.d.ts +0 -24
- package/lib/cjs/prompt/skills/afs/edit.js +0 -122
- package/lib/cjs/prompt/skills/afs/exec.d.ts +0 -16
- package/lib/cjs/prompt/skills/afs/exec.js +0 -43
- package/lib/cjs/prompt/skills/afs/index.d.ts +0 -3
- package/lib/cjs/prompt/skills/afs/index.js +0 -26
- package/lib/cjs/prompt/skills/afs/list.d.ts +0 -24
- package/lib/cjs/prompt/skills/afs/list.js +0 -82
- package/lib/cjs/prompt/skills/afs/read.d.ts +0 -28
- package/lib/cjs/prompt/skills/afs/read.js +0 -105
- package/lib/cjs/prompt/skills/afs/rename.d.ts +0 -21
- package/lib/cjs/prompt/skills/afs/rename.js +0 -60
- package/lib/cjs/prompt/skills/afs/search.d.ts +0 -24
- package/lib/cjs/prompt/skills/afs/search.js +0 -74
- package/lib/cjs/prompt/skills/afs/write.d.ts +0 -20
- package/lib/cjs/prompt/skills/afs/write.js +0 -60
- package/lib/cjs/prompt/template.d.ts +0 -243
- package/lib/cjs/prompt/template.js +0 -265
- package/lib/cjs/utils/agent-utils.d.ts +0 -13
- package/lib/cjs/utils/agent-utils.js +0 -60
- package/lib/cjs/utils/camelize.d.ts +0 -7
- package/lib/cjs/utils/camelize.js +0 -38
- package/lib/cjs/utils/event-stream.d.ts +0 -15
- package/lib/cjs/utils/event-stream.js +0 -158
- package/lib/cjs/utils/fetch.d.ts +0 -4
- package/lib/cjs/utils/fetch.js +0 -36
- package/lib/cjs/utils/json-schema.d.ts +0 -15
- package/lib/cjs/utils/json-schema.js +0 -123
- package/lib/cjs/utils/json-utils.d.ts +0 -24
- package/lib/cjs/utils/json-utils.js +0 -48
- package/lib/cjs/utils/logger.d.ts +0 -39
- package/lib/cjs/utils/logger.js +0 -81
- package/lib/cjs/utils/mcp-utils.d.ts +0 -5
- package/lib/cjs/utils/mcp-utils.js +0 -52
- package/lib/cjs/utils/model-utils.d.ts +0 -3
- package/lib/cjs/utils/model-utils.js +0 -10
- package/lib/cjs/utils/promise.d.ts +0 -6
- package/lib/cjs/utils/promise.js +0 -12
- package/lib/cjs/utils/prompts.d.ts +0 -2
- package/lib/cjs/utils/prompts.js +0 -22
- package/lib/cjs/utils/queue.d.ts +0 -57
- package/lib/cjs/utils/queue.js +0 -318
- package/lib/cjs/utils/role-utils.d.ts +0 -31
- package/lib/cjs/utils/role-utils.js +0 -37
- package/lib/cjs/utils/stream-polyfill.d.ts +0 -1
- package/lib/cjs/utils/stream-polyfill.js +0 -38
- package/lib/cjs/utils/stream-utils.d.ts +0 -26
- package/lib/cjs/utils/stream-utils.js +0 -235
- package/lib/cjs/utils/structured-stream-extractor.d.ts +0 -14
- package/lib/cjs/utils/structured-stream-extractor.js +0 -68
- package/lib/cjs/utils/token-estimator.d.ts +0 -9
- package/lib/cjs/utils/token-estimator.js +0 -66
- package/lib/cjs/utils/type-utils.d.ts +0 -31
- package/lib/cjs/utils/type-utils.js +0 -202
- package/lib/cjs/utils/typed-event-emitter.d.ts +0 -10
- package/lib/cjs/utils/typed-event-emitter.js +0 -2
- package/lib/dts/agents/agent.d.ts +0 -961
- package/lib/dts/agents/ai-agent.d.ts +0 -395
- package/lib/dts/agents/chat-model.d.ts +0 -672
- package/lib/dts/agents/guide-rail-agent.d.ts +0 -62
- package/lib/dts/agents/image-agent.d.ts +0 -38
- package/lib/dts/agents/image-model.d.ts +0 -270
- package/lib/dts/agents/mcp-agent.d.ts +0 -231
- package/lib/dts/agents/model.d.ts +0 -252
- package/lib/dts/agents/team-agent.d.ts +0 -382
- package/lib/dts/agents/transform-agent.d.ts +0 -94
- package/lib/dts/agents/types.d.ts +0 -31
- package/lib/dts/agents/user-agent.d.ts +0 -27
- package/lib/dts/agents/video-model.d.ts +0 -280
- package/lib/dts/aigne/aigne.d.ts +0 -335
- package/lib/dts/aigne/context.d.ts +0 -220
- package/lib/dts/aigne/index.d.ts +0 -4
- package/lib/dts/aigne/message-queue.d.ts +0 -48
- package/lib/dts/aigne/type.d.ts +0 -27
- package/lib/dts/aigne/usage.d.ts +0 -28
- package/lib/dts/index.d.ts +0 -21
- package/lib/dts/loader/agent-js.d.ts +0 -2
- package/lib/dts/loader/agent-yaml.d.ts +0 -78
- package/lib/dts/loader/agents.d.ts +0 -4
- package/lib/dts/loader/error.d.ts +0 -2
- package/lib/dts/loader/function-agent.d.ts +0 -2
- package/lib/dts/loader/index.d.ts +0 -251
- package/lib/dts/loader/schema.d.ts +0 -167
- package/lib/dts/memory/index.d.ts +0 -3
- package/lib/dts/memory/memory.d.ts +0 -93
- package/lib/dts/memory/recorder.d.ts +0 -93
- package/lib/dts/memory/retriever.d.ts +0 -106
- package/lib/dts/prompt/agent-session.d.ts +0 -163
- package/lib/dts/prompt/compact/compactor.d.ts +0 -7
- package/lib/dts/prompt/compact/session-memory-extractor.d.ts +0 -7
- package/lib/dts/prompt/compact/types.d.ts +0 -336
- package/lib/dts/prompt/compact/user-memory-extractor.d.ts +0 -7
- package/lib/dts/prompt/context/afs/history.d.ts +0 -9
- package/lib/dts/prompt/context/afs/index.d.ts +0 -20
- package/lib/dts/prompt/context/index.d.ts +0 -31
- package/lib/dts/prompt/filters/index.d.ts +0 -2
- package/lib/dts/prompt/prompt-builder.d.ts +0 -50
- package/lib/dts/prompt/prompts/afs-builtin-prompt.d.ts +0 -4
- package/lib/dts/prompt/prompts/memory-message-template.d.ts +0 -1
- package/lib/dts/prompt/prompts/structured-stream-instructions.d.ts +0 -7
- package/lib/dts/prompt/skills/afs/agent-skill/agent-skill.d.ts +0 -19
- package/lib/dts/prompt/skills/afs/agent-skill/skill-loader.d.ts +0 -12
- package/lib/dts/prompt/skills/afs/base.d.ts +0 -4
- package/lib/dts/prompt/skills/afs/delete.d.ts +0 -19
- package/lib/dts/prompt/skills/afs/edit.d.ts +0 -24
- package/lib/dts/prompt/skills/afs/exec.d.ts +0 -16
- package/lib/dts/prompt/skills/afs/index.d.ts +0 -3
- package/lib/dts/prompt/skills/afs/list.d.ts +0 -24
- package/lib/dts/prompt/skills/afs/read.d.ts +0 -28
- package/lib/dts/prompt/skills/afs/rename.d.ts +0 -21
- package/lib/dts/prompt/skills/afs/search.d.ts +0 -24
- package/lib/dts/prompt/skills/afs/write.d.ts +0 -20
- package/lib/dts/prompt/template.d.ts +0 -243
- package/lib/dts/utils/agent-utils.d.ts +0 -13
- package/lib/dts/utils/camelize.d.ts +0 -7
- package/lib/dts/utils/event-stream.d.ts +0 -15
- package/lib/dts/utils/fetch.d.ts +0 -4
- package/lib/dts/utils/json-schema.d.ts +0 -15
- package/lib/dts/utils/json-utils.d.ts +0 -24
- package/lib/dts/utils/logger.d.ts +0 -39
- package/lib/dts/utils/mcp-utils.d.ts +0 -5
- package/lib/dts/utils/model-utils.d.ts +0 -3
- package/lib/dts/utils/promise.d.ts +0 -6
- package/lib/dts/utils/prompts.d.ts +0 -2
- package/lib/dts/utils/queue.d.ts +0 -57
- package/lib/dts/utils/role-utils.d.ts +0 -31
- package/lib/dts/utils/stream-polyfill.d.ts +0 -1
- package/lib/dts/utils/stream-utils.d.ts +0 -26
- package/lib/dts/utils/structured-stream-extractor.d.ts +0 -14
- package/lib/dts/utils/token-estimator.d.ts +0 -9
- package/lib/dts/utils/type-utils.d.ts +0 -31
- package/lib/dts/utils/typed-event-emitter.d.ts +0 -10
- package/lib/esm/agents/agent.d.ts +0 -961
- package/lib/esm/agents/agent.js +0 -911
- package/lib/esm/agents/ai-agent.d.ts +0 -395
- package/lib/esm/agents/ai-agent.js +0 -535
- package/lib/esm/agents/chat-model.d.ts +0 -672
- package/lib/esm/agents/chat-model.js +0 -419
- package/lib/esm/agents/guide-rail-agent.d.ts +0 -62
- package/lib/esm/agents/guide-rail-agent.js +0 -11
- package/lib/esm/agents/image-agent.d.ts +0 -38
- package/lib/esm/agents/image-agent.js +0 -64
- package/lib/esm/agents/image-model.d.ts +0 -270
- package/lib/esm/agents/image-model.js +0 -87
- package/lib/esm/agents/mcp-agent.d.ts +0 -231
- package/lib/esm/agents/mcp-agent.js +0 -325
- package/lib/esm/agents/model.d.ts +0 -252
- package/lib/esm/agents/model.js +0 -143
- package/lib/esm/agents/team-agent.d.ts +0 -382
- package/lib/esm/agents/team-agent.js +0 -346
- package/lib/esm/agents/transform-agent.d.ts +0 -94
- package/lib/esm/agents/transform-agent.js +0 -73
- package/lib/esm/agents/types.d.ts +0 -31
- package/lib/esm/agents/types.js +0 -30
- package/lib/esm/agents/user-agent.d.ts +0 -27
- package/lib/esm/agents/user-agent.js +0 -86
- package/lib/esm/agents/video-model.d.ts +0 -280
- package/lib/esm/agents/video-model.js +0 -63
- package/lib/esm/aigne/aigne.d.ts +0 -335
- package/lib/esm/aigne/aigne.js +0 -244
- package/lib/esm/aigne/context.d.ts +0 -220
- package/lib/esm/aigne/context.js +0 -416
- package/lib/esm/aigne/index.d.ts +0 -4
- package/lib/esm/aigne/index.js +0 -4
- package/lib/esm/aigne/message-queue.d.ts +0 -48
- package/lib/esm/aigne/message-queue.js +0 -104
- package/lib/esm/aigne/type.d.ts +0 -27
- package/lib/esm/aigne/type.js +0 -1
- package/lib/esm/aigne/usage.d.ts +0 -28
- package/lib/esm/aigne/usage.js +0 -30
- package/lib/esm/index.d.ts +0 -21
- package/lib/esm/index.js +0 -21
- package/lib/esm/loader/agent-js.d.ts +0 -2
- package/lib/esm/loader/agent-js.js +0 -18
- package/lib/esm/loader/agent-yaml.d.ts +0 -78
- package/lib/esm/loader/agent-yaml.js +0 -113
- package/lib/esm/loader/agents.d.ts +0 -4
- package/lib/esm/loader/agents.js +0 -14
- package/lib/esm/loader/error.d.ts +0 -2
- package/lib/esm/loader/error.js +0 -2
- package/lib/esm/loader/function-agent.d.ts +0 -2
- package/lib/esm/loader/function-agent.js +0 -4
- package/lib/esm/loader/index.d.ts +0 -251
- package/lib/esm/loader/index.js +0 -260
- package/lib/esm/loader/schema.d.ts +0 -167
- package/lib/esm/loader/schema.js +0 -153
- package/lib/esm/memory/index.d.ts +0 -3
- package/lib/esm/memory/index.js +0 -3
- package/lib/esm/memory/memory.d.ts +0 -93
- package/lib/esm/memory/memory.js +0 -142
- package/lib/esm/memory/recorder.d.ts +0 -93
- package/lib/esm/memory/recorder.js +0 -59
- package/lib/esm/memory/retriever.d.ts +0 -106
- package/lib/esm/memory/retriever.js +0 -56
- package/lib/esm/package.json +0 -3
- package/lib/esm/prompt/agent-session.d.ts +0 -163
- package/lib/esm/prompt/agent-session.js +0 -968
- package/lib/esm/prompt/compact/compactor.d.ts +0 -7
- package/lib/esm/prompt/compact/compactor.js +0 -48
- package/lib/esm/prompt/compact/session-memory-extractor.d.ts +0 -7
- package/lib/esm/prompt/compact/session-memory-extractor.js +0 -139
- package/lib/esm/prompt/compact/types.d.ts +0 -336
- package/lib/esm/prompt/compact/types.js +0 -50
- package/lib/esm/prompt/compact/user-memory-extractor.d.ts +0 -7
- package/lib/esm/prompt/compact/user-memory-extractor.js +0 -120
- package/lib/esm/prompt/context/afs/history.d.ts +0 -9
- package/lib/esm/prompt/context/afs/history.js +0 -30
- package/lib/esm/prompt/context/afs/index.d.ts +0 -20
- package/lib/esm/prompt/context/afs/index.js +0 -51
- package/lib/esm/prompt/context/index.d.ts +0 -31
- package/lib/esm/prompt/context/index.js +0 -15
- package/lib/esm/prompt/filters/index.d.ts +0 -2
- package/lib/esm/prompt/filters/index.js +0 -15
- package/lib/esm/prompt/prompt-builder.d.ts +0 -50
- package/lib/esm/prompt/prompt-builder.js +0 -348
- package/lib/esm/prompt/prompts/afs-builtin-prompt.d.ts +0 -4
- package/lib/esm/prompt/prompts/afs-builtin-prompt.js +0 -32
- package/lib/esm/prompt/prompts/memory-message-template.d.ts +0 -1
- package/lib/esm/prompt/prompts/memory-message-template.js +0 -5
- package/lib/esm/prompt/prompts/structured-stream-instructions.d.ts +0 -7
- package/lib/esm/prompt/prompts/structured-stream-instructions.js +0 -24
- package/lib/esm/prompt/skills/afs/agent-skill/agent-skill.d.ts +0 -19
- package/lib/esm/prompt/skills/afs/agent-skill/agent-skill.js +0 -65
- package/lib/esm/prompt/skills/afs/agent-skill/skill-loader.d.ts +0 -12
- package/lib/esm/prompt/skills/afs/agent-skill/skill-loader.js +0 -43
- package/lib/esm/prompt/skills/afs/base.d.ts +0 -4
- package/lib/esm/prompt/skills/afs/base.js +0 -4
- package/lib/esm/prompt/skills/afs/delete.d.ts +0 -19
- package/lib/esm/prompt/skills/afs/delete.js +0 -51
- package/lib/esm/prompt/skills/afs/edit.d.ts +0 -24
- package/lib/esm/prompt/skills/afs/edit.js +0 -118
- package/lib/esm/prompt/skills/afs/exec.d.ts +0 -16
- package/lib/esm/prompt/skills/afs/exec.js +0 -39
- package/lib/esm/prompt/skills/afs/index.d.ts +0 -3
- package/lib/esm/prompt/skills/afs/index.js +0 -23
- package/lib/esm/prompt/skills/afs/list.d.ts +0 -24
- package/lib/esm/prompt/skills/afs/list.js +0 -78
- package/lib/esm/prompt/skills/afs/read.d.ts +0 -28
- package/lib/esm/prompt/skills/afs/read.js +0 -101
- package/lib/esm/prompt/skills/afs/rename.d.ts +0 -21
- package/lib/esm/prompt/skills/afs/rename.js +0 -56
- package/lib/esm/prompt/skills/afs/search.d.ts +0 -24
- package/lib/esm/prompt/skills/afs/search.js +0 -70
- package/lib/esm/prompt/skills/afs/write.d.ts +0 -20
- package/lib/esm/prompt/skills/afs/write.js +0 -56
- package/lib/esm/prompt/template.d.ts +0 -243
- package/lib/esm/prompt/template.js +0 -249
- package/lib/esm/utils/agent-utils.d.ts +0 -13
- package/lib/esm/utils/agent-utils.js +0 -54
- package/lib/esm/utils/camelize.d.ts +0 -7
- package/lib/esm/utils/camelize.js +0 -34
- package/lib/esm/utils/event-stream.d.ts +0 -15
- package/lib/esm/utils/event-stream.js +0 -151
- package/lib/esm/utils/fetch.d.ts +0 -4
- package/lib/esm/utils/fetch.js +0 -33
- package/lib/esm/utils/json-schema.d.ts +0 -15
- package/lib/esm/utils/json-schema.js +0 -114
- package/lib/esm/utils/json-utils.d.ts +0 -24
- package/lib/esm/utils/json-utils.js +0 -41
- package/lib/esm/utils/logger.d.ts +0 -39
- package/lib/esm/utils/logger.js +0 -73
- package/lib/esm/utils/mcp-utils.d.ts +0 -5
- package/lib/esm/utils/mcp-utils.js +0 -47
- package/lib/esm/utils/model-utils.d.ts +0 -3
- package/lib/esm/utils/model-utils.js +0 -7
- package/lib/esm/utils/promise.d.ts +0 -6
- package/lib/esm/utils/promise.js +0 -9
- package/lib/esm/utils/prompts.d.ts +0 -2
- package/lib/esm/utils/prompts.js +0 -18
- package/lib/esm/utils/queue.d.ts +0 -57
- package/lib/esm/utils/queue.js +0 -315
- package/lib/esm/utils/role-utils.d.ts +0 -31
- package/lib/esm/utils/role-utils.js +0 -33
- package/lib/esm/utils/stream-polyfill.d.ts +0 -1
- package/lib/esm/utils/stream-polyfill.js +0 -37
- package/lib/esm/utils/stream-utils.d.ts +0 -26
- package/lib/esm/utils/stream-utils.js +0 -217
- package/lib/esm/utils/structured-stream-extractor.d.ts +0 -14
- package/lib/esm/utils/structured-stream-extractor.js +0 -64
- package/lib/esm/utils/token-estimator.d.ts +0 -9
- package/lib/esm/utils/token-estimator.js +0 -63
- package/lib/esm/utils/type-utils.d.ts +0 -31
- package/lib/esm/utils/type-utils.js +0 -181
- package/lib/esm/utils/typed-event-emitter.d.ts +0 -10
- package/lib/esm/utils/typed-event-emitter.js +0 -1
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { logger } from "../utils/logger.mjs";
|
|
2
|
+
import { checkArguments, createAccessorArray } from "../utils/type-utils.mjs";
|
|
3
|
+
import { Agent } from "./agent.mjs";
|
|
4
|
+
import { promptFromMCPPrompt, resourceFromMCPResource, toolFromMCPTool } from "../utils/mcp-utils.mjs";
|
|
5
|
+
import { nodejs } from "@aigne/utils/nodejs";
|
|
6
|
+
import { z as z$1 } from "zod";
|
|
7
|
+
import { optionalize } from "@aigne/afs/utils/zod";
|
|
8
|
+
import { createStdioClientTransport } from "@aigne/utils/mcp/stdio-client-transport";
|
|
9
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
10
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
11
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
12
|
+
import { UriTemplate } from "@modelcontextprotocol/sdk/shared/uriTemplate.js";
|
|
13
|
+
|
|
14
|
+
//#region src/agents/mcp-agent.ts
|
|
15
|
+
const MCP_AGENT_CLIENT_NAME = "AIGNE/MCPAgent";
|
|
16
|
+
const MCP_AGENT_CLIENT_VERSION = "1.10.0";
|
|
17
|
+
const DEFAULT_MAX_RECONNECTS = 10;
|
|
18
|
+
const DEFAULT_TIMEOUT = () => z$1.coerce.number().int().min(0).safeParse(nodejs.env.MCP_TIMEOUT || nodejs.env.TIMEOUT).data || 6e4;
|
|
19
|
+
function isSSEServerParameters(options) {
|
|
20
|
+
return "url" in options && typeof options.url === "string";
|
|
21
|
+
}
|
|
22
|
+
function isStdioServerParameters(options) {
|
|
23
|
+
return "command" in options && typeof options.command === "string";
|
|
24
|
+
}
|
|
25
|
+
function getMCPServerString(options) {
|
|
26
|
+
if (isSSEServerParameters(options)) return options.url;
|
|
27
|
+
if (isStdioServerParameters(options)) return `${options.command} ${options.args?.join(" ") || ""}`;
|
|
28
|
+
return "unknown";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* MCPAgent is a specialized agent for interacting with MCP (Model Context Protocol) servers.
|
|
32
|
+
* It provides the ability to connect to remote MCP servers using different transport methods,
|
|
33
|
+
* and access their tools, prompts, and resources.
|
|
34
|
+
*
|
|
35
|
+
* MCPAgent serves as a bridge between your application and MCP servers, allowing you to:
|
|
36
|
+
* - Connect to MCP servers over HTTP/SSE or stdio
|
|
37
|
+
* - Access server tools as agent skills
|
|
38
|
+
* - Utilize server prompts and resources
|
|
39
|
+
* - Manage server connections with automatic reconnection
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* Here's an example of creating an MCPAgent with SSE transport:
|
|
43
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-from-sse}
|
|
44
|
+
*/
|
|
45
|
+
var MCPAgent = class MCPAgent extends Agent {
|
|
46
|
+
tag = "MCPAgent";
|
|
47
|
+
static schema() {
|
|
48
|
+
return z$1.object({
|
|
49
|
+
url: optionalize(z$1.string()),
|
|
50
|
+
command: optionalize(z$1.string()),
|
|
51
|
+
args: optionalize(z$1.array(z$1.string()))
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
static async load(options) {
|
|
55
|
+
const valid = await MCPAgent.schema().parseAsync(options.parsed);
|
|
56
|
+
if (!valid.url && !valid.command) throw new Error(`Missing url or command in mcp agent: ${options.filepath}`);
|
|
57
|
+
return MCPAgent.from({
|
|
58
|
+
...options.parsed,
|
|
59
|
+
...valid
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
static from(options) {
|
|
63
|
+
checkArguments("MCPAgent.from", mcpAgentOptionsSchema, options);
|
|
64
|
+
if (isSSEServerParameters(options)) {
|
|
65
|
+
const transport = () => {
|
|
66
|
+
if (options.transport === "streamableHttp") return new StreamableHTTPClientTransport(new URL(options.url), options.opts);
|
|
67
|
+
return new SSEClientTransport(new URL(options.url), options.opts);
|
|
68
|
+
};
|
|
69
|
+
return MCPAgent.fromTransport(transport, options);
|
|
70
|
+
}
|
|
71
|
+
if (isStdioServerParameters(options)) {
|
|
72
|
+
const transport = async () => createStdioClientTransport(options);
|
|
73
|
+
return MCPAgent.fromTransport(transport, options);
|
|
74
|
+
}
|
|
75
|
+
return new MCPAgent(options);
|
|
76
|
+
}
|
|
77
|
+
static async fromTransport(transportCreator, options) {
|
|
78
|
+
const client = new ClientWithReconnect({
|
|
79
|
+
name: MCP_AGENT_CLIENT_NAME,
|
|
80
|
+
version: MCP_AGENT_CLIENT_VERSION
|
|
81
|
+
}, void 0, isSSEServerParameters(options) ? {
|
|
82
|
+
transportCreator,
|
|
83
|
+
...options
|
|
84
|
+
} : void 0);
|
|
85
|
+
const transport = await transportCreator();
|
|
86
|
+
logger.debug(`Connecting to MCP server: ${getMCPServerString(options)}`);
|
|
87
|
+
await client.connect(transport);
|
|
88
|
+
const mcpServer = getMCPServerName(client);
|
|
89
|
+
const { tools: isToolsAvailable, prompts: isPromptsAvailable, resources: isResourcesAvailable } = client.getServerCapabilities() ?? {};
|
|
90
|
+
logger.debug(`Listing tools from ${mcpServer}`);
|
|
91
|
+
const skills = isToolsAvailable ? await client.listTools().then(({ tools }) => {
|
|
92
|
+
logger.debug(`Listing tools from ${mcpServer} completed %O`, tools?.map((i) => i.name));
|
|
93
|
+
return tools.map((tool) => toolFromMCPTool(tool, { client }));
|
|
94
|
+
}) : void 0;
|
|
95
|
+
logger.debug(`Listing prompts from ${mcpServer}`);
|
|
96
|
+
const prompts = isPromptsAvailable ? await client.listPrompts().then(({ prompts: prompts$1 }) => {
|
|
97
|
+
logger.debug(`Listing prompts from ${mcpServer} completed %O`, prompts$1?.map((i) => i.name));
|
|
98
|
+
return prompts$1.map((prompt) => promptFromMCPPrompt(prompt, { client }));
|
|
99
|
+
}) : void 0;
|
|
100
|
+
logger.debug(`Listing resources from ${mcpServer}`);
|
|
101
|
+
const resources = isResourcesAvailable ? await Promise.all([client.listResources().catch(() => ({ resources: [] })), client.listResourceTemplates().catch(() => ({ resourceTemplates: [] }))]).then(([{ resources: resources$1 }, { resourceTemplates }]) => {
|
|
102
|
+
const result = [...resources$1, ...resourceTemplates].map((resource) => resourceFromMCPResource(resource, { client }));
|
|
103
|
+
logger.debug(`Listing resources from ${mcpServer} completed %O`, result.map((i) => i.name));
|
|
104
|
+
return result;
|
|
105
|
+
}) : void 0;
|
|
106
|
+
return new MCPAgent({
|
|
107
|
+
name: client.getServerVersion()?.name,
|
|
108
|
+
client,
|
|
109
|
+
skills,
|
|
110
|
+
prompts,
|
|
111
|
+
resources
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create an MCPAgent instance directly with a configured client.
|
|
116
|
+
*
|
|
117
|
+
* @param options MCPAgent configuration options, including client instance
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* Here's an example of creating an MCPAgent with an existing client:
|
|
121
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-direct}
|
|
122
|
+
*/
|
|
123
|
+
constructor(options) {
|
|
124
|
+
super(options);
|
|
125
|
+
this.client = options.client;
|
|
126
|
+
if (options.prompts?.length) this.prompts.push(...options.prompts);
|
|
127
|
+
if (options.resources?.length) this.resources.push(...options.resources);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The MCP client instance used for communication with the MCP server.
|
|
131
|
+
*
|
|
132
|
+
* This client manages the connection to the MCP server and provides
|
|
133
|
+
* methods for interacting with server-provided functionality.
|
|
134
|
+
*/
|
|
135
|
+
client;
|
|
136
|
+
/**
|
|
137
|
+
* Array of MCP prompts available from the connected server.
|
|
138
|
+
*
|
|
139
|
+
* Prompts can be accessed by index or by name.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* Here's an example of accessing prompts:
|
|
143
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-prompts}
|
|
144
|
+
*/
|
|
145
|
+
prompts = createAccessorArray([], (arr, name) => arr.find((i) => i.name === name));
|
|
146
|
+
/**
|
|
147
|
+
* Array of MCP resources available from the connected server.
|
|
148
|
+
*
|
|
149
|
+
* Resources can be accessed by index or by name.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* Here's an example of accessing resources:
|
|
153
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-resources}
|
|
154
|
+
*/
|
|
155
|
+
resources = createAccessorArray([], (arr, name) => arr.find((i) => i.name === name));
|
|
156
|
+
/**
|
|
157
|
+
* Check if the agent is invokable.
|
|
158
|
+
*
|
|
159
|
+
* MCPAgent itself is not directly invokable as it acts as a container
|
|
160
|
+
* for tools, prompts, and resources. Always returns false.
|
|
161
|
+
*/
|
|
162
|
+
get isInvokable() {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Process method required by Agent interface.
|
|
167
|
+
*
|
|
168
|
+
* Since MCPAgent itself is not directly invokable, this method
|
|
169
|
+
* throws an error if called.
|
|
170
|
+
*
|
|
171
|
+
* @param _input Input message (unused)
|
|
172
|
+
* @param _options AgentInvokeOptions (unused)
|
|
173
|
+
* @throws Error This method always throws an error since MCPAgent is not directly invokable
|
|
174
|
+
*/
|
|
175
|
+
async process(_input, _options) {
|
|
176
|
+
throw new Error("Method not implemented.");
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Shut down the agent and close the MCP connection.
|
|
180
|
+
*
|
|
181
|
+
* This method cleans up resources and closes the connection
|
|
182
|
+
* to the MCP server.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* Here's an example of shutting down an MCPAgent:
|
|
186
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-shutdown}
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* Here's an example of shutting down an MCPAgent by using statement:
|
|
190
|
+
* {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-shutdown-by-using}
|
|
191
|
+
*/
|
|
192
|
+
async shutdown() {
|
|
193
|
+
await super.shutdown();
|
|
194
|
+
await this.client.close();
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
var ClientWithReconnect = class extends Client {
|
|
198
|
+
constructor(info, options, reconnectOptions) {
|
|
199
|
+
super(info, options);
|
|
200
|
+
this.reconnectOptions = reconnectOptions;
|
|
201
|
+
}
|
|
202
|
+
shouldReconnect({ error }) {
|
|
203
|
+
const { transportCreator, shouldReconnect, maxReconnects } = this.reconnectOptions || {};
|
|
204
|
+
if (!transportCreator || maxReconnects === 0) return false;
|
|
205
|
+
if (!shouldReconnect) return true;
|
|
206
|
+
return shouldReconnect(error);
|
|
207
|
+
}
|
|
208
|
+
async reconnect() {
|
|
209
|
+
const transportCreator = this.reconnectOptions?.transportCreator;
|
|
210
|
+
if (!transportCreator) throw new Error("reconnect requires a transportCreator");
|
|
211
|
+
await (await import("p-retry")).default(async () => {
|
|
212
|
+
await this.close();
|
|
213
|
+
await this.connect(await transportCreator(), { timeout: this.reconnectOptions?.timeout ?? DEFAULT_TIMEOUT() });
|
|
214
|
+
}, {
|
|
215
|
+
retries: this.reconnectOptions?.maxReconnects ?? DEFAULT_MAX_RECONNECTS,
|
|
216
|
+
shouldRetry: this.shouldReconnect,
|
|
217
|
+
onFailedAttempt: (error) => logger.error("Reconnect attempt failed: %O", error)
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
async request(request, resultSchema, options) {
|
|
221
|
+
const mergedOptions = {
|
|
222
|
+
...options,
|
|
223
|
+
timeout: options?.timeout ?? DEFAULT_TIMEOUT()
|
|
224
|
+
};
|
|
225
|
+
try {
|
|
226
|
+
return await super.request(request, resultSchema, mergedOptions);
|
|
227
|
+
} catch (error) {
|
|
228
|
+
if (this.shouldReconnect(error)) {
|
|
229
|
+
logger.error("Error occurred, reconnecting to MCP server: %O", error);
|
|
230
|
+
await this.reconnect();
|
|
231
|
+
return await super.request(request, resultSchema, mergedOptions);
|
|
232
|
+
}
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
var MCPBase = class extends Agent {
|
|
238
|
+
tag = "MCPBase";
|
|
239
|
+
constructor(options) {
|
|
240
|
+
super(options);
|
|
241
|
+
this.client = options.client;
|
|
242
|
+
}
|
|
243
|
+
client;
|
|
244
|
+
};
|
|
245
|
+
var MCPTool = class extends MCPBase {
|
|
246
|
+
tag = "MCPTool";
|
|
247
|
+
async process(input) {
|
|
248
|
+
return await this.client.callTool({
|
|
249
|
+
name: this.name,
|
|
250
|
+
arguments: input
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
var MCPPrompt = class extends MCPBase {
|
|
255
|
+
tag = "MCPPrompt";
|
|
256
|
+
async process(input) {
|
|
257
|
+
return await this.client.getPrompt({
|
|
258
|
+
name: this.name,
|
|
259
|
+
arguments: input
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
var MCPResource = class extends MCPBase {
|
|
264
|
+
tag = "MCPResource";
|
|
265
|
+
constructor(options) {
|
|
266
|
+
super(options);
|
|
267
|
+
this.uri = options.uri;
|
|
268
|
+
}
|
|
269
|
+
uri;
|
|
270
|
+
async process(input) {
|
|
271
|
+
const uri = new UriTemplate(this.uri).expand(input);
|
|
272
|
+
return await this.client.readResource({ uri });
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
function getMCPServerName(client) {
|
|
276
|
+
const info = client.getServerVersion();
|
|
277
|
+
if (!info) return void 0;
|
|
278
|
+
const { name, version } = info;
|
|
279
|
+
return `${name}@${version}`;
|
|
280
|
+
}
|
|
281
|
+
const mcpAgentOptionsSchema = z$1.union([
|
|
282
|
+
z$1.object({
|
|
283
|
+
client: z$1.instanceof(Client),
|
|
284
|
+
prompts: z$1.array(z$1.instanceof(MCPPrompt)).optional(),
|
|
285
|
+
resources: z$1.array(z$1.instanceof(MCPResource)).optional()
|
|
286
|
+
}),
|
|
287
|
+
z$1.object({
|
|
288
|
+
url: z$1.string(),
|
|
289
|
+
opts: z$1.object({}).optional(),
|
|
290
|
+
timeout: z$1.number().optional(),
|
|
291
|
+
maxReconnects: z$1.number().optional(),
|
|
292
|
+
shouldReconnect: z$1.custom().optional()
|
|
293
|
+
}),
|
|
294
|
+
z$1.object({
|
|
295
|
+
command: z$1.string(),
|
|
296
|
+
args: z$1.array(z$1.string()).optional(),
|
|
297
|
+
env: z$1.record(z$1.string(), z$1.string()).optional()
|
|
298
|
+
})
|
|
299
|
+
]);
|
|
300
|
+
|
|
301
|
+
//#endregion
|
|
302
|
+
export { MCPAgent, MCPBase, MCPPrompt, MCPResource, MCPTool };
|
|
303
|
+
//# sourceMappingURL=mcp-agent.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-agent.mjs","names":["z","prompts","resources"],"sources":["../../src/agents/mcp-agent.ts"],"sourcesContent":["import { optionalize } from \"@aigne/afs/utils/zod\";\nimport { createStdioClientTransport } from \"@aigne/utils/mcp/stdio-client-transport\";\nimport { nodejs } from \"@aigne/utils/nodejs\";\nimport { Client, type ClientOptions } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport {\n SSEClientTransport,\n type SSEClientTransportOptions,\n} from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport type { StdioServerParameters } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport {\n StreamableHTTPClientTransport,\n type StreamableHTTPClientTransportOptions,\n} from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { RequestOptions } from \"@modelcontextprotocol/sdk/shared/protocol.js\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport { UriTemplate } from \"@modelcontextprotocol/sdk/shared/uriTemplate.js\";\nimport type {\n CallToolResult,\n GetPromptResult,\n Implementation,\n ReadResourceResult,\n Request,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport type { RetryContext } from \"p-retry\";\nimport { type ZodType, z } from \"zod\";\nimport { logger } from \"../utils/logger.js\";\nimport {\n promptFromMCPPrompt,\n resourceFromMCPResource,\n toolFromMCPTool,\n} from \"../utils/mcp-utils.js\";\nimport { checkArguments, createAccessorArray, type PromiseOrValue } from \"../utils/type-utils.js\";\nimport { Agent, type AgentInvokeOptions, type AgentOptions, type Message } from \"./agent.js\";\n\nconst MCP_AGENT_CLIENT_NAME = \"AIGNE/MCPAgent\";\nconst MCP_AGENT_CLIENT_VERSION = \"1.10.0\"; // This should match the version in package.json\nconst DEFAULT_MAX_RECONNECTS = 10;\nconst DEFAULT_TIMEOUT = () =>\n z.coerce\n .number()\n .int()\n .min(0)\n .safeParse(nodejs.env.MCP_TIMEOUT || nodejs.env.TIMEOUT).data || 60e3;\n\nexport interface MCPAgentOptions extends AgentOptions {\n client: Client;\n\n prompts?: MCPPrompt[];\n\n resources?: MCPResource[];\n}\n\nexport type MCPServerOptions = SSEServerParameters | StdioServerParameters;\n\nexport type SSEServerParameters = {\n url: string;\n\n /**\n * Whether to use the StreamableHTTPClientTransport instead of the SSEClientTransport.\n * @default \"sse\"\n */\n transport?: \"sse\" | \"streamableHttp\";\n\n /**\n * Additional options to pass to the SSEClientTransport or StreamableHTTPClientTransport.\n */\n opts?: SSEClientTransportOptions | StreamableHTTPClientTransportOptions;\n /**\n * The timeout for requests to the server, in milliseconds.\n * @default 60000\n */\n timeout?: number;\n /**\n * Whether to automatically reconnect to the server if the connection is lost.\n * @default 10 set to 0 to disable automatic reconnection\n */\n maxReconnects?: number;\n /**\n * A function that determines whether to reconnect to the server based on the error.\n * default to reconnect on all errors.\n */\n shouldReconnect?: (error: Error) => boolean;\n};\n\nfunction isSSEServerParameters(\n options: MCPAgentOptions | MCPServerOptions,\n): options is SSEServerParameters {\n return \"url\" in options && typeof options.url === \"string\";\n}\n\nfunction isStdioServerParameters(\n options: MCPAgentOptions | MCPServerOptions,\n): options is StdioServerParameters {\n return \"command\" in options && typeof options.command === \"string\";\n}\n\nfunction getMCPServerString(options: MCPAgentOptions | MCPServerOptions): string {\n if (isSSEServerParameters(options)) {\n return options.url;\n }\n\n if (isStdioServerParameters(options)) {\n return `${options.command} ${options.args?.join(\" \") || \"\"}`;\n }\n\n return \"unknown\";\n}\n\n/**\n * MCPAgent is a specialized agent for interacting with MCP (Model Context Protocol) servers.\n * It provides the ability to connect to remote MCP servers using different transport methods,\n * and access their tools, prompts, and resources.\n *\n * MCPAgent serves as a bridge between your application and MCP servers, allowing you to:\n * - Connect to MCP servers over HTTP/SSE or stdio\n * - Access server tools as agent skills\n * - Utilize server prompts and resources\n * - Manage server connections with automatic reconnection\n *\n * @example\n * Here's an example of creating an MCPAgent with SSE transport:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-from-sse}\n */\nexport class MCPAgent extends Agent {\n override tag = \"MCPAgent\";\n\n static schema() {\n return z.object({\n url: optionalize(z.string()),\n command: optionalize(z.string()),\n args: optionalize(z.array(z.string())),\n });\n }\n\n static override async load<I extends Message = any, O extends Message = any>(options: {\n filepath: string;\n parsed: object;\n }): Promise<Agent<I, O>> {\n const valid = await MCPAgent.schema().parseAsync(options.parsed);\n\n if (!valid.url && !valid.command) {\n throw new Error(`Missing url or command in mcp agent: ${options.filepath}`);\n }\n\n return MCPAgent.from({\n ...options.parsed,\n ...valid,\n } as any) as any;\n }\n\n /**\n * Create an MCPAgent from a connection to an SSE server.\n *\n * This overload establishes a Server-Sent Events connection to an MCP server\n * and automatically discovers its available tools, prompts, and resources.\n *\n * @param options SSE server connection parameters\n * @returns Promise resolving to a new MCPAgent instance\n *\n * @example\n * Here's an example of creating an MCPAgent with StreamableHTTP transport:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-from-streamable-http}\n *\n * @example\n * Here's an example of creating an MCPAgent with SSE transport:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-from-sse}\n *\n * @example\n * Here's an example of creating an MCPAgent with Stdio transport:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-from-stdio}\n */\n static from(options: MCPServerOptions): Promise<MCPAgent>;\n\n /**\n * Create an MCPAgent from a pre-configured MCP client.\n *\n * This overload uses an existing MCP client instance and optionally\n * pre-defined prompts and resources.\n *\n * @param options MCPAgent configuration with client instance\n * @returns A new MCPAgent instance\n *\n * @example\n * Here's an example of creating an MCPAgent with a client instance:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-direct}\n */\n static from(options: MCPAgentOptions): MCPAgent;\n\n static from(options: MCPAgentOptions | MCPServerOptions): MCPAgent | Promise<MCPAgent> {\n checkArguments(\"MCPAgent.from\", mcpAgentOptionsSchema, options);\n\n if (isSSEServerParameters(options)) {\n const transport = () => {\n if (options.transport === \"streamableHttp\") {\n return new StreamableHTTPClientTransport(new URL(options.url), options.opts);\n }\n return new SSEClientTransport(new URL(options.url), options.opts);\n };\n\n return MCPAgent.fromTransport(transport, options);\n }\n\n if (isStdioServerParameters(options)) {\n const transport = async () => createStdioClientTransport(options);\n return MCPAgent.fromTransport(transport, options);\n }\n\n return new MCPAgent(options);\n }\n\n private static async fromTransport(\n transportCreator: () => PromiseOrValue<Transport>,\n options: MCPAgentOptions | MCPServerOptions,\n ): Promise<MCPAgent> {\n const client = new ClientWithReconnect(\n {\n name: MCP_AGENT_CLIENT_NAME,\n version: MCP_AGENT_CLIENT_VERSION,\n },\n undefined,\n isSSEServerParameters(options) ? { transportCreator, ...options } : undefined,\n );\n\n const transport = await transportCreator();\n\n logger.debug(`Connecting to MCP server: ${getMCPServerString(options)}`);\n await client.connect(transport);\n\n const mcpServer = getMCPServerName(client);\n\n const {\n tools: isToolsAvailable,\n prompts: isPromptsAvailable,\n resources: isResourcesAvailable,\n } = client.getServerCapabilities() ?? {};\n\n logger.debug(`Listing tools from ${mcpServer}`);\n const skills = isToolsAvailable\n ? await client.listTools().then(({ tools }) => {\n logger.debug(\n `Listing tools from ${mcpServer} completed %O`,\n tools?.map((i) => i.name),\n );\n return tools.map((tool) => toolFromMCPTool(tool, { client }));\n })\n : undefined;\n\n logger.debug(`Listing prompts from ${mcpServer}`);\n const prompts = isPromptsAvailable\n ? await client.listPrompts().then(({ prompts }) => {\n logger.debug(\n `Listing prompts from ${mcpServer} completed %O`,\n prompts?.map((i) => i.name),\n );\n return prompts.map((prompt) => promptFromMCPPrompt(prompt, { client }));\n })\n : undefined;\n\n logger.debug(`Listing resources from ${mcpServer}`);\n // TODO: should conditionally call listResourceTemplates based on the server capabilities\n // but the capability is not correct in the current SDK version\n const resources = isResourcesAvailable\n ? await Promise.all([\n client.listResources().catch(() => ({ resources: [] })),\n client.listResourceTemplates().catch(() => ({ resourceTemplates: [] })),\n ]).then(([{ resources }, { resourceTemplates }]) => {\n const result = [...resources, ...resourceTemplates].map((resource) =>\n resourceFromMCPResource(resource, { client }),\n );\n logger.debug(\n `Listing resources from ${mcpServer} completed %O`,\n result.map((i) => i.name),\n );\n return result;\n })\n : undefined;\n\n return new MCPAgent({\n name: client.getServerVersion()?.name,\n client,\n skills,\n prompts,\n resources,\n });\n }\n\n /**\n * Create an MCPAgent instance directly with a configured client.\n *\n * @param options MCPAgent configuration options, including client instance\n *\n * @example\n * Here's an example of creating an MCPAgent with an existing client:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-direct}\n */\n constructor(options: MCPAgentOptions) {\n super(options);\n\n this.client = options.client;\n if (options.prompts?.length) this.prompts.push(...options.prompts);\n if (options.resources?.length) this.resources.push(...options.resources);\n }\n\n /**\n * The MCP client instance used for communication with the MCP server.\n *\n * This client manages the connection to the MCP server and provides\n * methods for interacting with server-provided functionality.\n */\n client: Client;\n\n /**\n * Array of MCP prompts available from the connected server.\n *\n * Prompts can be accessed by index or by name.\n *\n * @example\n * Here's an example of accessing prompts:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-prompts}\n */\n readonly prompts = createAccessorArray<MCPPrompt>([], (arr, name) =>\n arr.find((i) => i.name === name),\n );\n\n /**\n * Array of MCP resources available from the connected server.\n *\n * Resources can be accessed by index or by name.\n *\n * @example\n * Here's an example of accessing resources:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-resources}\n */\n readonly resources = createAccessorArray<MCPResource>([], (arr, name) =>\n arr.find((i) => i.name === name),\n );\n\n /**\n * Check if the agent is invokable.\n *\n * MCPAgent itself is not directly invokable as it acts as a container\n * for tools, prompts, and resources. Always returns false.\n */\n override get isInvokable(): boolean {\n return false;\n }\n\n /**\n * Process method required by Agent interface.\n *\n * Since MCPAgent itself is not directly invokable, this method\n * throws an error if called.\n *\n * @param _input Input message (unused)\n * @param _options AgentInvokeOptions (unused)\n * @throws Error This method always throws an error since MCPAgent is not directly invokable\n */\n async process(_input: Message, _options: AgentInvokeOptions): Promise<Message> {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * Shut down the agent and close the MCP connection.\n *\n * This method cleans up resources and closes the connection\n * to the MCP server.\n *\n * @example\n * Here's an example of shutting down an MCPAgent:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-shutdown}\n *\n * @example\n * Here's an example of shutting down an MCPAgent by using statement:\n * {@includeCode ../../test/agents/mcp-agent.test.ts#example-mcp-agent-shutdown-by-using}\n */\n override async shutdown() {\n await super.shutdown();\n await this.client.close();\n }\n}\n\nexport interface ClientWithReconnectOptions {\n transportCreator?: () => PromiseOrValue<Transport>;\n timeout?: number;\n maxReconnects?: number;\n shouldReconnect?: (error: Error) => boolean;\n}\n\nclass ClientWithReconnect extends Client {\n constructor(\n info: Implementation,\n options?: ClientOptions,\n private reconnectOptions?: ClientWithReconnectOptions,\n ) {\n super(info, options);\n }\n\n private shouldReconnect({ error }: RetryContext): boolean {\n const { transportCreator, shouldReconnect, maxReconnects } = this.reconnectOptions || {};\n\n if (!transportCreator || maxReconnects === 0) return false;\n if (!shouldReconnect) return true; // default to reconnect on all errors\n\n return shouldReconnect(error);\n }\n\n private async reconnect() {\n const transportCreator = this.reconnectOptions?.transportCreator;\n if (!transportCreator) throw new Error(\"reconnect requires a transportCreator\");\n\n const retry = await import(\"p-retry\");\n await retry.default(\n async () => {\n await this.close();\n await this.connect(await transportCreator(), {\n timeout: this.reconnectOptions?.timeout ?? DEFAULT_TIMEOUT(),\n });\n },\n {\n retries: this.reconnectOptions?.maxReconnects ?? DEFAULT_MAX_RECONNECTS,\n shouldRetry: this.shouldReconnect,\n onFailedAttempt: (error) => logger.error(\"Reconnect attempt failed: %O\", error),\n },\n );\n }\n\n override async request<T extends ZodType<object>>(\n request: Request,\n resultSchema: T,\n options?: RequestOptions,\n ): Promise<z.infer<T>> {\n const mergedOptions: RequestOptions = {\n ...options,\n timeout: options?.timeout ?? DEFAULT_TIMEOUT(),\n };\n\n try {\n return await super.request(request, resultSchema, mergedOptions);\n } catch (error) {\n if (this.shouldReconnect(error)) {\n logger.error(\"Error occurred, reconnecting to MCP server: %O\", error);\n await this.reconnect();\n return await super.request(request, resultSchema, mergedOptions);\n }\n throw error;\n }\n }\n}\n\nexport interface MCPBaseOptions<I extends Message = any, O extends Message = any>\n extends AgentOptions<I, O> {\n client: ClientWithReconnect;\n}\n\nexport abstract class MCPBase<I extends Message, O extends Message> extends Agent<I, O> {\n override tag = \"MCPBase\";\n\n constructor(options: MCPBaseOptions<I, O>) {\n super(options);\n this.client = options.client;\n }\n\n protected client: ClientWithReconnect;\n}\n\nexport class MCPTool extends MCPBase<Message, CallToolResult> {\n override tag = \"MCPTool\";\n\n async process(input: Message): Promise<CallToolResult> {\n const result = await this.client.callTool({ name: this.name, arguments: input });\n\n return result as CallToolResult;\n }\n}\n\nexport interface MCPPromptInput extends Record<string, unknown> {\n [key: string]: string;\n}\n\nexport class MCPPrompt extends MCPBase<MCPPromptInput, GetPromptResult> {\n override tag = \"MCPPrompt\";\n\n async process(input: MCPPromptInput): Promise<GetPromptResult> {\n const result = await this.client.getPrompt({ name: this.name, arguments: input });\n\n return result;\n }\n}\n\nexport interface MCPResourceOptions extends MCPBaseOptions<MCPPromptInput, ReadResourceResult> {\n uri: string;\n}\n\nexport class MCPResource extends MCPBase<MCPPromptInput, ReadResourceResult> {\n override tag = \"MCPResource\";\n\n constructor(options: MCPResourceOptions) {\n super(options);\n this.uri = options.uri;\n }\n\n uri: string;\n\n async process(input: MCPPromptInput): Promise<ReadResourceResult> {\n const uri = new UriTemplate(this.uri).expand(input);\n\n const result = await this.client.readResource({ uri });\n\n return result;\n }\n}\n\nfunction getMCPServerName(client: Client): string | undefined {\n const info = client.getServerVersion();\n if (!info) return undefined;\n\n const { name, version } = info;\n return `${name}@${version}`;\n}\n\nconst mcpAgentOptionsSchema: ZodType<\n MCPAgentOptions | SSEServerParameters | StdioServerParameters\n> = z.union([\n z.object({\n client: z.instanceof(Client),\n prompts: z.array(z.instanceof(MCPPrompt)).optional(),\n resources: z.array(z.instanceof(MCPResource)).optional(),\n }),\n z.object({\n url: z.string(),\n opts: z.object({}).optional(),\n timeout: z.number().optional(),\n maxReconnects: z.number().optional(),\n shouldReconnect: z.custom<SSEServerParameters[\"shouldReconnect\"]>().optional(),\n }),\n z.object({\n command: z.string(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n]);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_utils_type_utils = require('../utils/type-utils.cjs');
|
|
3
|
+
const require_agent = require('./agent.cjs');
|
|
4
|
+
const require_utils_fetch = require('../utils/fetch.cjs');
|
|
5
|
+
let _aigne_utils_nodejs = require("@aigne/utils/nodejs");
|
|
6
|
+
let ufo = require("ufo");
|
|
7
|
+
let zod = require("zod");
|
|
8
|
+
let _aigne_afs_utils_zod = require("@aigne/afs/utils/zod");
|
|
9
|
+
let _aigne_uuid = require("@aigne/uuid");
|
|
10
|
+
|
|
11
|
+
//#region src/agents/model.ts
|
|
12
|
+
var Model = class Model extends require_agent.Agent {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
super(options);
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves model options by merging instance-level and input-level options,
|
|
19
|
+
* and recursively resolving getter patterns
|
|
20
|
+
*
|
|
21
|
+
* @param input - The input message containing potential modelOptions
|
|
22
|
+
* @param options - The agent invocation options containing context
|
|
23
|
+
* @returns Resolved model options with all getters replaced by actual values
|
|
24
|
+
*/
|
|
25
|
+
async getModelOptions(input, options) {
|
|
26
|
+
const resolveGetters = (obj) => {
|
|
27
|
+
if (!obj || typeof obj !== "object") return obj;
|
|
28
|
+
if (require_agent.DEFAULT_INPUT_ACTION_GET in obj && typeof obj[require_agent.DEFAULT_INPUT_ACTION_GET] === "string") {
|
|
29
|
+
const getterPath = obj[require_agent.DEFAULT_INPUT_ACTION_GET];
|
|
30
|
+
const value = input[getterPath] ?? options.context.userContext[getterPath];
|
|
31
|
+
return require_utils_type_utils.isNil(value) ? void 0 : value;
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(obj)) return obj.map((item) => resolveGetters(item));
|
|
34
|
+
return Object.entries(obj).reduce((resolved, [key, val]) => {
|
|
35
|
+
const resolvedValue = resolveGetters(val);
|
|
36
|
+
if (!require_utils_type_utils.isNil(resolvedValue)) resolved[key] = resolvedValue;
|
|
37
|
+
return resolved;
|
|
38
|
+
}, {});
|
|
39
|
+
};
|
|
40
|
+
return resolveGetters({
|
|
41
|
+
...this.options?.modelOptions,
|
|
42
|
+
..."modelOptions" in input ? input.modelOptions : {}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async preprocess(input, options) {
|
|
46
|
+
Object.assign(input, { modelOptions: await this.getModelOptions(input, options) });
|
|
47
|
+
return super.preprocess(input, options);
|
|
48
|
+
}
|
|
49
|
+
async transformFileType(fileType = "local", data) {
|
|
50
|
+
if (fileType === data.type) return data;
|
|
51
|
+
const common = require_utils_type_utils.pick(data, "filename", "mimeType");
|
|
52
|
+
switch (fileType) {
|
|
53
|
+
case "local": {
|
|
54
|
+
const dir = _aigne_utils_nodejs.nodejs.path.join(_aigne_utils_nodejs.nodejs.os.tmpdir(), (0, _aigne_uuid.v7)());
|
|
55
|
+
await _aigne_utils_nodejs.nodejs.fs.mkdir(dir, { recursive: true });
|
|
56
|
+
const ext = await Model.getFileExtension(data.mimeType || data.filename || "");
|
|
57
|
+
const id = (0, _aigne_uuid.v7)();
|
|
58
|
+
const filename = ext ? `${id}.${ext}` : id;
|
|
59
|
+
const path = _aigne_utils_nodejs.nodejs.path.join(dir, filename);
|
|
60
|
+
let mimeType = data.mimeType;
|
|
61
|
+
if (data.type === "file") {
|
|
62
|
+
await _aigne_utils_nodejs.nodejs.fs.writeFile(path, data.data, "base64");
|
|
63
|
+
mimeType ||= await Model.getMimeType(data.filename || "");
|
|
64
|
+
} else if (data.type === "url") {
|
|
65
|
+
await this.downloadFile(data.url).then((res) => res.body).then((body) => body && _aigne_utils_nodejs.nodejs.fs.writeFile(path, body));
|
|
66
|
+
mimeType ||= await Model.getMimeType(data.filename || (0, ufo.parseURL)(data.url).pathname);
|
|
67
|
+
} else throw new Error(`Unexpected file type: ${data.type}`);
|
|
68
|
+
return {
|
|
69
|
+
...common,
|
|
70
|
+
type: "local",
|
|
71
|
+
path,
|
|
72
|
+
mimeType
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
case "file": {
|
|
76
|
+
let base64;
|
|
77
|
+
let mimeType = data.mimeType;
|
|
78
|
+
if (data.type === "local") {
|
|
79
|
+
base64 = await _aigne_utils_nodejs.nodejs.fs.readFile(data.path, "base64");
|
|
80
|
+
mimeType ||= await Model.getMimeType(data.filename || data.path);
|
|
81
|
+
} else if (data.type === "url") {
|
|
82
|
+
base64 = Buffer.from(await (await this.downloadFile(data.url)).arrayBuffer()).toString("base64");
|
|
83
|
+
mimeType ||= await Model.getMimeType(data.filename || (0, ufo.parseURL)(data.url).pathname);
|
|
84
|
+
} else throw new Error(`Unexpected file type: ${data.type}`);
|
|
85
|
+
return {
|
|
86
|
+
...common,
|
|
87
|
+
type: "file",
|
|
88
|
+
data: base64,
|
|
89
|
+
mimeType
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
default: return data;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
static async getFileExtension(type) {
|
|
96
|
+
const { default: mime } = await import("mime");
|
|
97
|
+
return mime.getExtension(type) || void 0;
|
|
98
|
+
}
|
|
99
|
+
static async getMimeType(filename) {
|
|
100
|
+
const { default: mime } = await import("mime");
|
|
101
|
+
return mime.getType(filename) || void 0;
|
|
102
|
+
}
|
|
103
|
+
async downloadFile(url) {
|
|
104
|
+
return await require_utils_fetch.fetch(url);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const fileTypeSchema = zod.z.enum([
|
|
108
|
+
"local",
|
|
109
|
+
"file",
|
|
110
|
+
"url"
|
|
111
|
+
]);
|
|
112
|
+
const fileContentBaseSchema = zod.z.object({
|
|
113
|
+
filename: (0, _aigne_afs_utils_zod.optionalize)(zod.z.string()),
|
|
114
|
+
mimeType: (0, _aigne_afs_utils_zod.optionalize)(zod.z.string())
|
|
115
|
+
});
|
|
116
|
+
const urlContentSchema = fileContentBaseSchema.extend({
|
|
117
|
+
type: zod.z.literal("url"),
|
|
118
|
+
url: zod.z.string()
|
|
119
|
+
});
|
|
120
|
+
const fileContentSchema = fileContentBaseSchema.extend({
|
|
121
|
+
type: zod.z.literal("file"),
|
|
122
|
+
data: zod.z.string()
|
|
123
|
+
});
|
|
124
|
+
const localContentSchema = fileContentBaseSchema.extend({
|
|
125
|
+
type: zod.z.literal("local"),
|
|
126
|
+
path: zod.z.string()
|
|
127
|
+
});
|
|
128
|
+
const fileUnionContentSchema = zod.z.discriminatedUnion("type", [
|
|
129
|
+
localContentSchema,
|
|
130
|
+
urlContentSchema,
|
|
131
|
+
fileContentSchema
|
|
132
|
+
]);
|
|
133
|
+
const fileUnionContentsSchema = zod.z.union([fileUnionContentSchema, zod.z.array(fileUnionContentSchema)]);
|
|
134
|
+
|
|
135
|
+
//#endregion
|
|
136
|
+
exports.Model = Model;
|
|
137
|
+
exports.fileContentBaseSchema = fileContentBaseSchema;
|
|
138
|
+
exports.fileContentSchema = fileContentSchema;
|
|
139
|
+
exports.fileTypeSchema = fileTypeSchema;
|
|
140
|
+
exports.fileUnionContentSchema = fileUnionContentSchema;
|
|
141
|
+
exports.fileUnionContentsSchema = fileUnionContentsSchema;
|
|
142
|
+
exports.localContentSchema = localContentSchema;
|
|
143
|
+
exports.urlContentSchema = urlContentSchema;
|