orbitx 0.0.8 → 0.0.9
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 +227 -67
- package/dist/core/agent-providers.d.ts +16 -0
- package/dist/core/agent-providers.d.ts.map +1 -0
- package/dist/core/agent-providers.js +21 -0
- package/dist/core/agent-providers.js.map +1 -0
- package/dist/core/ai-provider.d.ts +69 -1
- package/dist/core/ai-provider.d.ts.map +1 -1
- package/dist/core/ai-provider.js.map +1 -1
- package/dist/core/base-agent.d.ts +8 -4
- package/dist/core/base-agent.d.ts.map +1 -1
- package/dist/core/base-agent.js +220 -88
- package/dist/core/base-agent.js.map +1 -1
- package/dist/core/deepseek-provider.d.ts +10 -3
- package/dist/core/deepseek-provider.d.ts.map +1 -1
- package/dist/core/deepseek-provider.js +144 -39
- package/dist/core/deepseek-provider.js.map +1 -1
- package/dist/core/image-describer.d.ts +13 -0
- package/dist/core/image-describer.d.ts.map +1 -0
- package/dist/core/image-describer.js +33 -0
- package/dist/core/image-describer.js.map +1 -0
- package/dist/core/mcp-client.d.ts +17 -4
- package/dist/core/mcp-client.d.ts.map +1 -1
- package/dist/core/mcp-client.js +32 -16
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/core/mcp-computer.d.ts +10 -2
- package/dist/core/mcp-computer.d.ts.map +1 -1
- package/dist/core/mcp-computer.js +108 -2
- package/dist/core/mcp-computer.js.map +1 -1
- package/dist/core/mcp-fs-storage.d.ts +8 -0
- package/dist/core/mcp-fs-storage.d.ts.map +1 -0
- package/dist/core/mcp-fs-storage.js +27 -0
- package/dist/core/mcp-fs-storage.js.map +1 -0
- package/dist/core/mcp-rng.d.ts +7 -0
- package/dist/core/mcp-rng.d.ts.map +1 -0
- package/dist/core/mcp-rng.js +14 -0
- package/dist/core/mcp-rng.js.map +1 -0
- package/dist/core/mcp-server.d.ts +8 -4
- package/dist/core/mcp-server.d.ts.map +1 -1
- package/dist/core/mcp-server.js +20 -3
- package/dist/core/mcp-server.js.map +1 -1
- package/dist/core/mcp-storage.d.ts +5 -0
- package/dist/core/mcp-storage.d.ts.map +1 -0
- package/dist/core/mcp-storage.js +3 -0
- package/dist/core/mcp-storage.js.map +1 -0
- package/dist/core/mcp.d.ts +37 -3
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +42 -1
- package/dist/core/mcp.js.map +1 -1
- package/dist/core/ollama-provider.d.ts +10 -3
- package/dist/core/ollama-provider.d.ts.map +1 -1
- package/dist/core/ollama-provider.js +122 -41
- package/dist/core/ollama-provider.js.map +1 -1
- package/dist/core/retry.d.ts +10 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +39 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/skill.d.ts +3 -0
- package/dist/core/skill.d.ts.map +1 -1
- package/dist/core/skill.js.map +1 -1
- package/dist/core/tool-schema-translator.d.ts +10 -0
- package/dist/core/tool-schema-translator.d.ts.map +1 -0
- package/dist/core/tool-schema-translator.js +29 -0
- package/dist/core/tool-schema-translator.js.map +1 -0
- package/dist/index.d.ts +34 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/sandbox.d.ts +2 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +27 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/skills/backend-security.d.ts +4 -0
- package/dist/skills/backend-security.d.ts.map +1 -0
- package/dist/skills/backend-security.js +74 -0
- package/dist/skills/backend-security.js.map +1 -0
- package/dist/skills/big-task.d.ts +4 -0
- package/dist/skills/big-task.d.ts.map +1 -0
- package/dist/skills/big-task.js +66 -0
- package/dist/skills/big-task.js.map +1 -0
- package/dist/skills/code-verification.d.ts +4 -0
- package/dist/skills/code-verification.d.ts.map +1 -0
- package/dist/skills/code-verification.js +59 -0
- package/dist/skills/code-verification.js.map +1 -0
- package/dist/skills/long-task-efficiency.d.ts +4 -0
- package/dist/skills/long-task-efficiency.d.ts.map +1 -0
- package/dist/skills/long-task-efficiency.js +50 -0
- package/dist/skills/long-task-efficiency.js.map +1 -0
- package/dist/skills/node-backend.d.ts +4 -0
- package/dist/skills/node-backend.d.ts.map +1 -0
- package/dist/skills/node-backend.js +110 -0
- package/dist/skills/node-backend.js.map +1 -0
- package/dist/skills/planner.d.ts +4 -0
- package/dist/skills/planner.d.ts.map +1 -0
- package/dist/skills/planner.js +49 -0
- package/dist/skills/planner.js.map +1 -0
- package/dist/skills/present.d.ts +4 -0
- package/dist/skills/present.d.ts.map +1 -0
- package/dist/skills/present.js +56 -0
- package/dist/skills/present.js.map +1 -0
- package/dist/skills/question-answer.d.ts +4 -0
- package/dist/skills/question-answer.d.ts.map +1 -0
- package/dist/skills/question-answer.js +55 -0
- package/dist/skills/question-answer.js.map +1 -0
- package/dist/skills/react-frontend.d.ts +4 -0
- package/dist/skills/react-frontend.d.ts.map +1 -0
- package/dist/skills/react-frontend.js +111 -0
- package/dist/skills/react-frontend.js.map +1 -0
- package/dist/skills/research.d.ts +4 -0
- package/dist/skills/research.d.ts.map +1 -0
- package/dist/skills/research.js +81 -0
- package/dist/skills/research.js.map +1 -0
- package/dist/skills/shopping.d.ts +4 -0
- package/dist/skills/shopping.d.ts.map +1 -0
- package/dist/skills/shopping.js +71 -0
- package/dist/skills/shopping.js.map +1 -0
- package/dist/skills/ui-ux-design.d.ts +4 -0
- package/dist/skills/ui-ux-design.d.ts.map +1 -0
- package/dist/skills/ui-ux-design.js +70 -0
- package/dist/skills/ui-ux-design.js.map +1 -0
- package/dist/skills/web-end-to-end-test.d.ts +4 -0
- package/dist/skills/web-end-to-end-test.d.ts.map +1 -0
- package/dist/skills/web-end-to-end-test.js +76 -0
- package/dist/skills/web-end-to-end-test.js.map +1 -0
- package/dist/templates/simple.d.ts +1 -1
- package/dist/templates/simple.d.ts.map +1 -1
- package/dist/templates/simple.js +4 -0
- package/dist/templates/simple.js.map +1 -1
- package/dist/tests/mcp.test.js +2 -54
- package/dist/tests/mcp.test.js.map +1 -1
- package/dist/tools/bash/index.d.ts +10 -0
- package/dist/tools/bash/index.d.ts.map +1 -0
- package/dist/tools/bash/index.js +22 -0
- package/dist/tools/bash/index.js.map +1 -0
- package/dist/tools/bash/interaction.d.ts +29 -0
- package/dist/tools/bash/interaction.d.ts.map +1 -0
- package/dist/tools/bash/interaction.js +13 -0
- package/dist/tools/bash/interaction.js.map +1 -0
- package/dist/tools/bash/list.d.ts +4 -0
- package/dist/tools/bash/list.d.ts.map +1 -0
- package/dist/tools/bash/list.js +23 -0
- package/dist/tools/bash/list.js.map +1 -0
- package/dist/tools/bash/logs.d.ts +4 -0
- package/dist/tools/bash/logs.d.ts.map +1 -0
- package/dist/tools/bash/logs.js +47 -0
- package/dist/tools/bash/logs.js.map +1 -0
- package/dist/tools/bash/process-manager.d.ts +35 -0
- package/dist/tools/bash/process-manager.d.ts.map +1 -0
- package/dist/tools/bash/process-manager.js +137 -0
- package/dist/tools/bash/process-manager.js.map +1 -0
- package/dist/tools/bash/run.d.ts +5 -0
- package/dist/tools/bash/run.d.ts.map +1 -0
- package/dist/tools/bash/run.js +57 -0
- package/dist/tools/bash/run.js.map +1 -0
- package/dist/tools/bash/terminate.d.ts +5 -0
- package/dist/tools/bash/terminate.d.ts.map +1 -0
- package/dist/tools/bash/terminate.js +39 -0
- package/dist/tools/bash/terminate.js.map +1 -0
- package/dist/tools/bash/wait.d.ts +5 -0
- package/dist/tools/bash/wait.d.ts.map +1 -0
- package/dist/tools/bash/wait.js +50 -0
- package/dist/tools/bash/wait.js.map +1 -0
- package/dist/tools/bash/write-input.d.ts +5 -0
- package/dist/tools/bash/write-input.d.ts.map +1 -0
- package/dist/tools/bash/write-input.js +47 -0
- package/dist/tools/bash/write-input.js.map +1 -0
- package/dist/tools/browser/click.d.ts +5 -0
- package/dist/tools/browser/click.d.ts.map +1 -0
- package/dist/tools/browser/click.js +44 -0
- package/dist/tools/browser/click.js.map +1 -0
- package/dist/tools/browser/console.d.ts +4 -0
- package/dist/tools/browser/console.d.ts.map +1 -0
- package/dist/tools/browser/console.js +41 -0
- package/dist/tools/browser/console.js.map +1 -0
- package/dist/tools/browser/create-session.d.ts +5 -0
- package/dist/tools/browser/create-session.d.ts.map +1 -0
- package/dist/tools/browser/create-session.js +30 -0
- package/dist/tools/browser/create-session.js.map +1 -0
- package/dist/tools/browser/evaluate-safe.d.ts +10 -0
- package/dist/tools/browser/evaluate-safe.d.ts.map +1 -0
- package/dist/tools/browser/evaluate-safe.js +65 -0
- package/dist/tools/browser/evaluate-safe.js.map +1 -0
- package/dist/tools/browser/fill.d.ts +5 -0
- package/dist/tools/browser/fill.d.ts.map +1 -0
- package/dist/tools/browser/fill.js +78 -0
- package/dist/tools/browser/fill.js.map +1 -0
- package/dist/tools/browser/get-sessions.d.ts +4 -0
- package/dist/tools/browser/get-sessions.d.ts.map +1 -0
- package/dist/tools/browser/get-sessions.js +14 -0
- package/dist/tools/browser/get-sessions.js.map +1 -0
- package/dist/tools/browser/index.d.ts +19 -0
- package/dist/tools/browser/index.d.ts.map +1 -0
- package/dist/tools/browser/index.js +49 -0
- package/dist/tools/browser/index.js.map +1 -0
- package/dist/tools/browser/inject.d.ts +5 -0
- package/dist/tools/browser/inject.d.ts.map +1 -0
- package/dist/tools/browser/inject.js +51 -0
- package/dist/tools/browser/inject.js.map +1 -0
- package/dist/tools/browser/interaction.d.ts +49 -0
- package/dist/tools/browser/interaction.d.ts.map +1 -0
- package/dist/tools/browser/interaction.js +14 -0
- package/dist/tools/browser/interaction.js.map +1 -0
- package/dist/tools/browser/navigate.d.ts +5 -0
- package/dist/tools/browser/navigate.d.ts.map +1 -0
- package/dist/tools/browser/navigate.js +39 -0
- package/dist/tools/browser/navigate.js.map +1 -0
- package/dist/tools/browser/network-status.d.ts +4 -0
- package/dist/tools/browser/network-status.d.ts.map +1 -0
- package/dist/tools/browser/network-status.js +35 -0
- package/dist/tools/browser/network-status.js.map +1 -0
- package/dist/tools/browser/network.d.ts +4 -0
- package/dist/tools/browser/network.d.ts.map +1 -0
- package/dist/tools/browser/network.js +51 -0
- package/dist/tools/browser/network.js.map +1 -0
- package/dist/tools/browser/read-page.d.ts +45 -0
- package/dist/tools/browser/read-page.d.ts.map +1 -0
- package/dist/tools/browser/read-page.js +264 -0
- package/dist/tools/browser/read-page.js.map +1 -0
- package/dist/tools/browser/read.d.ts +5 -0
- package/dist/tools/browser/read.d.ts.map +1 -0
- package/dist/tools/browser/read.js +56 -0
- package/dist/tools/browser/read.js.map +1 -0
- package/dist/tools/browser/remove-session.d.ts +5 -0
- package/dist/tools/browser/remove-session.d.ts.map +1 -0
- package/dist/tools/browser/remove-session.js +29 -0
- package/dist/tools/browser/remove-session.js.map +1 -0
- package/dist/tools/browser/screenshot.d.ts +5 -0
- package/dist/tools/browser/screenshot.d.ts.map +1 -0
- package/dist/tools/browser/screenshot.js +50 -0
- package/dist/tools/browser/screenshot.js.map +1 -0
- package/dist/tools/browser/scroll-info.d.ts +4 -0
- package/dist/tools/browser/scroll-info.d.ts.map +1 -0
- package/dist/tools/browser/scroll-info.js +28 -0
- package/dist/tools/browser/scroll-info.js.map +1 -0
- package/dist/tools/browser/scroll.d.ts +5 -0
- package/dist/tools/browser/scroll.d.ts.map +1 -0
- package/dist/tools/browser/scroll.js +43 -0
- package/dist/tools/browser/scroll.js.map +1 -0
- package/dist/tools/browser/session-manager.d.ts +35 -0
- package/dist/tools/browser/session-manager.d.ts.map +1 -0
- package/dist/tools/browser/session-manager.js +101 -0
- package/dist/tools/browser/session-manager.js.map +1 -0
- package/dist/tools/browser/submit-form.d.ts +5 -0
- package/dist/tools/browser/submit-form.d.ts.map +1 -0
- package/dist/tools/browser/submit-form.js +45 -0
- package/dist/tools/browser/submit-form.js.map +1 -0
- package/dist/tools/fs/create-dir.d.ts +5 -0
- package/dist/tools/fs/create-dir.d.ts.map +1 -0
- package/dist/tools/fs/create-dir.js +28 -0
- package/dist/tools/fs/create-dir.js.map +1 -0
- package/dist/tools/fs/delete.d.ts +5 -0
- package/dist/tools/fs/delete.d.ts.map +1 -0
- package/dist/tools/fs/delete.js +45 -0
- package/dist/tools/fs/delete.js.map +1 -0
- package/dist/tools/fs/edit-file.d.ts +5 -0
- package/dist/tools/fs/edit-file.d.ts.map +1 -0
- package/dist/tools/fs/edit-file.js +74 -0
- package/dist/tools/fs/edit-file.js.map +1 -0
- package/dist/tools/fs/index.d.ts +11 -2
- package/dist/tools/fs/index.d.ts.map +1 -1
- package/dist/tools/fs/index.js +27 -2
- package/dist/tools/fs/index.js.map +1 -1
- package/dist/tools/fs/interaction.d.ts +37 -0
- package/dist/tools/fs/interaction.d.ts.map +1 -0
- package/dist/tools/fs/interaction.js +13 -0
- package/dist/tools/fs/interaction.js.map +1 -0
- package/dist/tools/fs/list-dir.d.ts +5 -0
- package/dist/tools/fs/list-dir.d.ts.map +1 -0
- package/dist/tools/fs/list-dir.js +87 -0
- package/dist/tools/fs/list-dir.js.map +1 -0
- package/dist/tools/fs/move.d.ts +5 -0
- package/dist/tools/fs/move.d.ts.map +1 -0
- package/dist/tools/fs/move.js +44 -0
- package/dist/tools/fs/move.js.map +1 -0
- package/dist/tools/fs/read-file.d.ts +4 -3
- package/dist/tools/fs/read-file.d.ts.map +1 -1
- package/dist/tools/fs/read-file.js +50 -42
- package/dist/tools/fs/read-file.js.map +1 -1
- package/dist/tools/fs/stat.d.ts +5 -0
- package/dist/tools/fs/stat.d.ts.map +1 -0
- package/dist/tools/fs/stat.js +40 -0
- package/dist/tools/fs/stat.js.map +1 -0
- package/dist/tools/fs/utils.d.ts +20 -0
- package/dist/tools/fs/utils.d.ts.map +1 -0
- package/dist/tools/fs/utils.js +33 -0
- package/dist/tools/fs/utils.js.map +1 -0
- package/dist/tools/fs/write-file.d.ts +4 -3
- package/dist/tools/fs/write-file.d.ts.map +1 -1
- package/dist/tools/fs/write-file.js +39 -58
- package/dist/tools/fs/write-file.js.map +1 -1
- package/dist/tools/present/add.d.ts +5 -0
- package/dist/tools/present/add.d.ts.map +1 -0
- package/dist/tools/present/add.js +54 -0
- package/dist/tools/present/add.js.map +1 -0
- package/dist/tools/present/clear.d.ts +5 -0
- package/dist/tools/present/clear.d.ts.map +1 -0
- package/dist/tools/present/clear.js +23 -0
- package/dist/tools/present/clear.js.map +1 -0
- package/dist/tools/present/get-list.d.ts +5 -0
- package/dist/tools/present/get-list.d.ts.map +1 -0
- package/dist/tools/present/get-list.js +24 -0
- package/dist/tools/present/get-list.js.map +1 -0
- package/dist/tools/present/index.d.ts +8 -0
- package/dist/tools/present/index.d.ts.map +1 -0
- package/dist/tools/present/index.js +14 -0
- package/dist/tools/present/index.js.map +1 -0
- package/dist/tools/present/interaction.d.ts +17 -0
- package/dist/tools/present/interaction.d.ts.map +1 -0
- package/dist/tools/present/interaction.js +15 -0
- package/dist/tools/present/interaction.js.map +1 -0
- package/dist/tools/present/utils.d.ts +12 -0
- package/dist/tools/present/utils.d.ts.map +1 -0
- package/dist/tools/present/utils.js +40 -0
- package/dist/tools/present/utils.js.map +1 -0
- package/dist/tools/question-answer/index.d.ts +5 -0
- package/dist/tools/question-answer/index.d.ts.map +1 -0
- package/dist/tools/question-answer/index.js +7 -0
- package/dist/tools/question-answer/index.js.map +1 -0
- package/dist/tools/question-answer/interaction.d.ts +14 -0
- package/dist/tools/question-answer/interaction.d.ts.map +1 -0
- package/dist/tools/question-answer/interaction.js +13 -0
- package/dist/tools/question-answer/interaction.js.map +1 -0
- package/dist/tools/question-answer/question-answer.d.ts +5 -0
- package/dist/tools/question-answer/question-answer.d.ts.map +1 -0
- package/dist/tools/question-answer/question-answer.js +24 -0
- package/dist/tools/question-answer/question-answer.js.map +1 -0
- package/dist/tools/todo/check-task.d.ts +5 -0
- package/dist/tools/todo/check-task.d.ts.map +1 -0
- package/dist/tools/todo/check-task.js +49 -0
- package/dist/tools/todo/check-task.js.map +1 -0
- package/dist/tools/todo/create-list.d.ts +5 -0
- package/dist/tools/todo/create-list.d.ts.map +1 -0
- package/dist/tools/todo/create-list.js +36 -0
- package/dist/tools/todo/create-list.js.map +1 -0
- package/dist/tools/todo/create-task.d.ts +5 -0
- package/dist/tools/todo/create-task.d.ts.map +1 -0
- package/dist/tools/todo/create-task.js +63 -0
- package/dist/tools/todo/create-task.js.map +1 -0
- package/dist/tools/todo/get-list.d.ts +4 -0
- package/dist/tools/todo/get-list.d.ts.map +1 -0
- package/dist/tools/todo/get-list.js +38 -0
- package/dist/tools/todo/get-list.js.map +1 -0
- package/dist/tools/todo/get-lists.d.ts +4 -0
- package/dist/tools/todo/get-lists.d.ts.map +1 -0
- package/dist/tools/todo/get-lists.js +18 -0
- package/dist/tools/todo/get-lists.js.map +1 -0
- package/dist/tools/todo/index.d.ts +12 -0
- package/dist/tools/todo/index.d.ts.map +1 -0
- package/dist/tools/todo/index.js +25 -0
- package/dist/tools/todo/index.js.map +1 -0
- package/dist/tools/todo/interaction.d.ts +30 -0
- package/dist/tools/todo/interaction.d.ts.map +1 -0
- package/dist/tools/todo/interaction.js +13 -0
- package/dist/tools/todo/interaction.js.map +1 -0
- package/dist/tools/todo/remove-list.d.ts +5 -0
- package/dist/tools/todo/remove-list.d.ts.map +1 -0
- package/dist/tools/todo/remove-list.js +42 -0
- package/dist/tools/todo/remove-list.js.map +1 -0
- package/dist/tools/todo/remove-task.d.ts +5 -0
- package/dist/tools/todo/remove-task.d.ts.map +1 -0
- package/dist/tools/todo/remove-task.js +45 -0
- package/dist/tools/todo/remove-task.js.map +1 -0
- package/dist/tools/todo/storage.d.ts +22 -0
- package/dist/tools/todo/storage.d.ts.map +1 -0
- package/dist/tools/todo/storage.js +44 -0
- package/dist/tools/todo/storage.js.map +1 -0
- package/dist/tools/utils/delay.d.ts +10 -0
- package/dist/tools/utils/delay.d.ts.map +1 -0
- package/dist/tools/utils/delay.js +33 -0
- package/dist/tools/utils/delay.js.map +1 -0
- package/dist/tools/utils/get-current-time.d.ts +7 -2
- package/dist/tools/utils/get-current-time.d.ts.map +1 -1
- package/dist/tools/utils/get-current-time.js +12 -31
- package/dist/tools/utils/get-current-time.js.map +1 -1
- package/dist/tools/utils/index.d.ts +2 -0
- package/dist/tools/utils/index.d.ts.map +1 -1
- package/dist/tools/utils/index.js +7 -0
- package/dist/tools/utils/index.js.map +1 -1
- package/package.json +54 -56
- package/dist/templates/researcher.d.ts +0 -27
- package/dist/templates/researcher.d.ts.map +0 -1
- package/dist/templates/researcher.js +0 -70
- package/dist/templates/researcher.js.map +0 -1
- package/dist/tools/www/fetch.d.ts +0 -4
- package/dist/tools/www/fetch.d.ts.map +0 -1
- package/dist/tools/www/fetch.js +0 -147
- package/dist/tools/www/fetch.js.map +0 -1
- package/dist/tools/www/index.d.ts +0 -4
- package/dist/tools/www/index.d.ts.map +0 -1
- package/dist/tools/www/index.js +0 -4
- package/dist/tools/www/index.js.map +0 -1
- package/dist/tools/www/read-web-page.d.ts +0 -4
- package/dist/tools/www/read-web-page.d.ts.map +0 -1
- package/dist/tools/www/read-web-page.js +0 -330
- package/dist/tools/www/read-web-page.js.map +0 -1
- package/dist/tools/www/web-search.d.ts +0 -4
- package/dist/tools/www/web-search.d.ts.map +0 -1
- package/dist/tools/www/web-search.js +0 -82
- package/dist/tools/www/web-search.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* MCP RNG Generate unique cross reference hex numbers shared with tools and guaranty tools never use duplicate id */
|
|
2
|
+
export default class MCPRNG {
|
|
3
|
+
#storage;
|
|
4
|
+
constructor(storage) {
|
|
5
|
+
this.#storage = storage;
|
|
6
|
+
}
|
|
7
|
+
async getRNG() {
|
|
8
|
+
const current = await this.#storage.get("__RNG__");
|
|
9
|
+
const rng = current ? Number(current) : 0;
|
|
10
|
+
await this.#storage.set("__RNG__", (rng + 1).toString());
|
|
11
|
+
return `0x${rng.toString(16)}`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mcp-rng.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-rng.js","sourceRoot":"","sources":["../../src/core/mcp-rng.ts"],"names":[],"mappings":"AAGA,qHAAqH;AACrH,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,QAAQ,CAAa;IAErB,YAAY,OAAmB;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;CACJ"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type MCPTool from "./mcp.js";
|
|
1
|
+
import { MCP, type MCPTool } from "./mcp.js";
|
|
2
2
|
import type MCPConnection from "./mcp-connection.js";
|
|
3
|
-
|
|
3
|
+
import type MCPStorage from "./mcp-storage.js";
|
|
4
|
+
import MCPRNG from "./mcp-rng.js";
|
|
5
|
+
export declare class MCPServer extends MCP {
|
|
4
6
|
#private;
|
|
5
|
-
constructor(connection: MCPConnection);
|
|
6
|
-
|
|
7
|
+
constructor(connection: MCPConnection, storage?: MCPStorage, rng?: MCPRNG);
|
|
8
|
+
getStorage(): MCPStorage;
|
|
9
|
+
getRNG(): MCPRNG;
|
|
10
|
+
registerTool(tool: MCPTool<any>): void;
|
|
7
11
|
}
|
|
8
12
|
export default MCPServer;
|
|
9
13
|
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,qBAAa,SAAU,SAAQ,GAAG;;gBAKlB,UAAU,EAAE,aAAa,EAAE,OAAO,GAAE,UAA+B,EAAE,GAAG,CAAC,EAAE,MAAM;IA0C7F,UAAU;IAIV,MAAM;IAIN,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;CAIlC;AAED,eAAe,SAAS,CAAC"}
|
package/dist/core/mcp-server.js
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { MCP } from "./mcp.js";
|
|
2
|
+
import MCPFSStorage from "./mcp-fs-storage.js";
|
|
3
|
+
import MCPRNG from "./mcp-rng.js";
|
|
4
|
+
export class MCPServer extends MCP {
|
|
2
5
|
#connection;
|
|
6
|
+
#storage;
|
|
7
|
+
#rng;
|
|
3
8
|
#tools = [];
|
|
4
|
-
constructor(connection) {
|
|
9
|
+
constructor(connection, storage = new MCPFSStorage(), rng) {
|
|
10
|
+
super();
|
|
5
11
|
this.#connection = connection;
|
|
12
|
+
this.#storage = storage;
|
|
13
|
+
if (!rng)
|
|
14
|
+
rng = new MCPRNG(storage);
|
|
15
|
+
this.#rng = rng;
|
|
6
16
|
this.#connection.on("read", (data) => {
|
|
7
17
|
const topic = data.topic;
|
|
8
18
|
const pid = data.pid;
|
|
@@ -20,7 +30,7 @@ export class MCPServer {
|
|
|
20
30
|
if (topic == "toolCall") {
|
|
21
31
|
const tool = this.#tools.find(t => t.getOptions().name == data.tool);
|
|
22
32
|
if (tool) {
|
|
23
|
-
tool.getOptions().execute(data.envID, data.inputs).then((response) => {
|
|
33
|
+
tool.getOptions().execute(data.envID, data.inputs, tool.getMCP(), tool.getOptions().customClass).then((response) => {
|
|
24
34
|
this.#connection.emit("write", {
|
|
25
35
|
pid,
|
|
26
36
|
topic: "toolCallCallback",
|
|
@@ -37,7 +47,14 @@ export class MCPServer {
|
|
|
37
47
|
}
|
|
38
48
|
});
|
|
39
49
|
}
|
|
50
|
+
getStorage() {
|
|
51
|
+
return this.#storage;
|
|
52
|
+
}
|
|
53
|
+
getRNG() {
|
|
54
|
+
return this.#rng;
|
|
55
|
+
}
|
|
40
56
|
registerTool(tool) {
|
|
57
|
+
tool.setMCP(this);
|
|
41
58
|
this.#tools.push(tool);
|
|
42
59
|
}
|
|
43
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAG7C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,MAAM,OAAO,SAAU,SAAQ,GAAG;IAC9B,WAAW,CAAC;IACZ,QAAQ,CAAC;IACT,IAAI,CAAC;IACL,MAAM,GAAmB,EAAE,CAAC;IAC5B,YAAY,UAAyB,EAAE,UAAsB,IAAI,YAAY,EAAE,EAAE,GAAY;QACzF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG;YACJ,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC3B,GAAG;oBACH,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI;wBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW;wBAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;qBACnC,CAAC,CAAC;iBACN,CAAC,CAAC;YACP,CAAC;YACD,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAC/G,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,QAAQ;yBACnB,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;yBACnC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,IAAkB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACJ;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-storage.d.ts","sourceRoot":"","sources":["../../src/core/mcp-storage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU;IACpC,QAAQ,CAAC,GAAG,CACR,GAAG,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAElB,QAAQ,CAAC,GAAG,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-storage.js","sourceRoot":"","sources":["../../src/core/mcp-storage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,UAAU;CASvC"}
|
package/dist/core/mcp.d.ts
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
import EventEmitter from "events";
|
|
2
|
+
import type MCPRNG from "./mcp-rng.js";
|
|
3
|
+
import type MCPStorage from "./mcp-storage.js";
|
|
4
|
+
export type MCPToolOutput = {
|
|
5
|
+
type: "text";
|
|
6
|
+
output: Record<string, any>;
|
|
7
|
+
} | {
|
|
8
|
+
type: "image";
|
|
9
|
+
output: {
|
|
10
|
+
image: string;
|
|
11
|
+
mimeType?: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare function normalizeToolOutput(raw: any): MCPToolOutput;
|
|
16
|
+
export declare abstract class MCPCustomClass {
|
|
17
|
+
#private;
|
|
18
|
+
setMCP(mcp: MCP): void;
|
|
19
|
+
getMCP(): MCP | undefined;
|
|
20
|
+
/** Subscribe to / emit interaction events from this tool (e.g. "status", "progress"). */
|
|
21
|
+
getEvents(): EventEmitter;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class MCP {
|
|
24
|
+
abstract getStorage(): MCPStorage;
|
|
25
|
+
abstract getRNG(): MCPRNG;
|
|
26
|
+
}
|
|
27
|
+
/** Convenience helper: get a fresh, guaranteed-unique hex id from an MCP instance's RNG. */
|
|
28
|
+
export declare function generateRefId(mcp?: MCP): Promise<string>;
|
|
29
|
+
export declare class MCPTool<T extends MCPCustomClass | undefined = undefined> {
|
|
2
30
|
#private;
|
|
3
31
|
constructor(options: {
|
|
4
32
|
name: string;
|
|
@@ -10,8 +38,12 @@ export declare class MCPTool {
|
|
|
10
38
|
required?: boolean;
|
|
11
39
|
default?: any;
|
|
12
40
|
}[];
|
|
13
|
-
|
|
41
|
+
stopIterationAfterUsingThisTool?: boolean;
|
|
42
|
+
customClass?: T;
|
|
43
|
+
execute: (envID: string, inputs: Record<string, any>, mcp?: MCP, customClass?: T) => Promise<any>;
|
|
14
44
|
});
|
|
45
|
+
setMCP(mcp: MCP): void;
|
|
46
|
+
getMCP(): MCP | undefined;
|
|
15
47
|
getOptions(): {
|
|
16
48
|
name: string;
|
|
17
49
|
description: string;
|
|
@@ -22,7 +54,9 @@ export declare class MCPTool {
|
|
|
22
54
|
required?: boolean;
|
|
23
55
|
default?: any;
|
|
24
56
|
}[];
|
|
25
|
-
|
|
57
|
+
stopIterationAfterUsingThisTool: boolean;
|
|
58
|
+
customClass?: T;
|
|
59
|
+
execute: (envID: string, inputs: Record<string, any>, mcp?: MCP, customClass?: T) => Promise<any>;
|
|
26
60
|
};
|
|
27
61
|
}
|
|
28
62
|
export default MCPTool;
|
package/dist/core/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,MAAM,MAAM,aAAa,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAA;CAAE,CAAC;AAEzF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAW3D;AAGD,8BAAsB,cAAc;;IAIhC,MAAM,CAAC,GAAG,EAAE,GAAG;IAIf,MAAM;IAIN,yFAAyF;IACzF,SAAS,IAAI,YAAY;CAG5B;AAED,8BAAsB,GAAG;IACrB,QAAQ,CAAC,UAAU,IAAI,UAAU;IACjC,QAAQ,CAAC,MAAM,IAAI,MAAM;CAC5B;AAED,4FAA4F;AAC5F,wBAAsB,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9D;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS;;gBAIrD,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;QACJ,+BAA+B,CAAC,EAAE,OAAO,CAAA;QACzC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,CACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,CAAC,EAAE,GAAG,EACT,WAAW,CAAC,EAAE,CAAC,KACd,OAAO,CAAC,GAAG,CAAC,CAAC;KACrB;IAID,MAAM,CAAC,GAAG,EAAE,GAAG;IAKf,MAAM;IAIN,UAAU;cA9BA,MAAM;qBACC,MAAM;gBACX;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE;yCAC+B,OAAO;sBAC3B,CAAC;iBACN,CACL,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,CAAC,EAAE,GAAG,EACT,WAAW,CAAC,EAAE,CAAC,KACd,OAAO,CAAC,GAAG,CAAC;;CAiBxB;AAED,eAAe,OAAO,CAAC"}
|
package/dist/core/mcp.js
CHANGED
|
@@ -1,7 +1,48 @@
|
|
|
1
|
+
import EventEmitter from "events";
|
|
2
|
+
export function normalizeToolOutput(raw) {
|
|
3
|
+
if (raw &&
|
|
4
|
+
typeof raw === "object" &&
|
|
5
|
+
(raw.type === "text" || raw.type === "image") &&
|
|
6
|
+
raw.output &&
|
|
7
|
+
typeof raw.output === "object") {
|
|
8
|
+
return raw;
|
|
9
|
+
}
|
|
10
|
+
return { type: "text", output: raw ?? {} };
|
|
11
|
+
}
|
|
12
|
+
export class MCPCustomClass {
|
|
13
|
+
#mcp;
|
|
14
|
+
#events = new EventEmitter();
|
|
15
|
+
setMCP(mcp) {
|
|
16
|
+
this.#mcp = mcp;
|
|
17
|
+
}
|
|
18
|
+
getMCP() {
|
|
19
|
+
return this.#mcp;
|
|
20
|
+
}
|
|
21
|
+
/** Subscribe to / emit interaction events from this tool (e.g. "status", "progress"). */
|
|
22
|
+
getEvents() {
|
|
23
|
+
return this.#events;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class MCP {
|
|
27
|
+
}
|
|
28
|
+
/** Convenience helper: get a fresh, guaranteed-unique hex id from an MCP instance's RNG. */
|
|
29
|
+
export async function generateRefId(mcp) {
|
|
30
|
+
if (!mcp)
|
|
31
|
+
return `0x${Math.random().toString(16).slice(2, 10)}`;
|
|
32
|
+
return mcp.getRNG().getRNG();
|
|
33
|
+
}
|
|
1
34
|
export class MCPTool {
|
|
2
35
|
#options;
|
|
36
|
+
#mcp;
|
|
3
37
|
constructor(options) {
|
|
4
|
-
this.#options = options;
|
|
38
|
+
this.#options = { stopIterationAfterUsingThisTool: false, ...options };
|
|
39
|
+
}
|
|
40
|
+
setMCP(mcp) {
|
|
41
|
+
this.#mcp = mcp;
|
|
42
|
+
this.#options.customClass?.setMCP(mcp);
|
|
43
|
+
}
|
|
44
|
+
getMCP() {
|
|
45
|
+
return this.#mcp;
|
|
5
46
|
}
|
|
6
47
|
getOptions() {
|
|
7
48
|
return this.#options;
|
package/dist/core/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAC;IACT,YAAY,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AASlC,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IACxC,IACI,GAAG;QACH,OAAO,GAAG,KAAK,QAAQ;QACvB,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;QAC7C,GAAG,CAAC,MAAM;QACV,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAChC,CAAC;QACC,OAAO,GAAoB,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;AAC/C,CAAC;AAGD,MAAM,OAAgB,cAAc;IAChC,IAAI,CAAkB;IACtB,OAAO,GAAiB,IAAI,YAAY,EAAE,CAAC;IAE3C,MAAM,CAAC,GAAQ;QACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,yFAAyF;IACzF,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAgB,GAAG;CAGxB;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAS;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAChE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAC;IACT,IAAI,CAAkB;IAEtB,YAAY,OAkBX;QACG,IAAI,CAAC,QAAQ,GAAG,EAAE,+BAA+B,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,GAAQ;QACX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { Message, ChatResponse, StreamCallback, ToolSchema, ProviderCapabilities } from "./ai-provider.js";
|
|
2
|
+
import AIProvider from "./ai-provider.js";
|
|
2
3
|
export declare class OllamaProvider extends AIProvider {
|
|
3
4
|
private client;
|
|
4
5
|
private model;
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
private supportsTools;
|
|
7
|
+
private contextWindow;
|
|
8
|
+
constructor(model: string, host?: string, options?: {
|
|
9
|
+
supportsTools?: boolean;
|
|
10
|
+
contextWindow?: number;
|
|
11
|
+
});
|
|
12
|
+
getCapabilities(): ProviderCapabilities;
|
|
13
|
+
chat(messages: Message[], streamCallback?: StreamCallback, tools?: ToolSchema[]): Promise<ChatResponse>;
|
|
7
14
|
}
|
|
8
15
|
export default OllamaProvider;
|
|
9
16
|
//# sourceMappingURL=ollama-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAmB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjI,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAuD1C,qBAAa,cAAe,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IAMtB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAS;gBAElB,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiC,EAAE,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO;IAQrI,eAAe,IAAI,oBAAoB;IASjC,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;CAqE3B;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,57 +1,138 @@
|
|
|
1
1
|
import { Ollama } from "ollama";
|
|
2
|
-
import AIProvider
|
|
2
|
+
import AIProvider from "./ai-provider.js";
|
|
3
|
+
import { toOpenAIFunctionTools } from "./tool-schema-translator.js";
|
|
4
|
+
import { withRetry } from "./retry.js";
|
|
5
|
+
const DEFAULT_CONTEXT_WINDOW = 32_000;
|
|
6
|
+
function toOllamaMessages(messages, supportsTools) {
|
|
7
|
+
return messages.map(msg => {
|
|
8
|
+
// Ollama rejects `tool`-role messages for models that don't support
|
|
9
|
+
// tool-calling at all (it throws). BaseAgent only builds tool-role
|
|
10
|
+
// messages when it already knows supportsTools is true, so this is
|
|
11
|
+
// just a defensive downgrade in case a `tool` message ever reaches
|
|
12
|
+
// here on a non-tool-capable model — fold it into `system` instead
|
|
13
|
+
// of letting the API error out.
|
|
14
|
+
if (msg.role === "tool" && !supportsTools) {
|
|
15
|
+
return { role: "system", content: msg.content || "" };
|
|
16
|
+
}
|
|
17
|
+
if (msg.role === "tool") {
|
|
18
|
+
return {
|
|
19
|
+
role: "tool",
|
|
20
|
+
content: msg.content || "",
|
|
21
|
+
tool_name: msg.toolName,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (msg.role === "assistant" && msg.toolCalls?.length && supportsTools) {
|
|
25
|
+
return {
|
|
26
|
+
role: "assistant",
|
|
27
|
+
content: msg.content || "",
|
|
28
|
+
tool_calls: msg.toolCalls.map(tc => ({
|
|
29
|
+
function: { name: tc.name, arguments: tc.inputs },
|
|
30
|
+
})),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (msg.parts?.length) {
|
|
34
|
+
const text = msg.parts.filter(p => p.type === "text").map(p => p.text).join("\n");
|
|
35
|
+
const images = msg.parts.filter(p => p.type === "image").map(p => p.image);
|
|
36
|
+
return { role: msg.role, content: text, ...(images.length ? { images } : {}) };
|
|
37
|
+
}
|
|
38
|
+
return { role: msg.role, content: msg.content || "" };
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function fromOllamaToolCalls(toolCalls) {
|
|
42
|
+
if (!toolCalls || toolCalls.length === 0)
|
|
43
|
+
return undefined;
|
|
44
|
+
return toolCalls.map((tc, idx) => ({
|
|
45
|
+
id: `${idx}`,
|
|
46
|
+
name: tc.function?.name || "",
|
|
47
|
+
inputs: tc.function?.arguments || {},
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
3
50
|
export class OllamaProvider extends AIProvider {
|
|
4
51
|
client;
|
|
5
52
|
model;
|
|
6
|
-
|
|
53
|
+
// Whether the currently-configured model supports Ollama's native
|
|
54
|
+
// function-calling API. Ollama throws if `tools` is sent to a model
|
|
55
|
+
// that doesn't support it, so this must be known ahead of time rather
|
|
56
|
+
// than discovered by trial and error — callers should set this based on
|
|
57
|
+
// the model card (most recent tool-capable families default to true).
|
|
58
|
+
supportsTools;
|
|
59
|
+
contextWindow;
|
|
60
|
+
constructor(model, host = "http://localhost:11434", options = {}) {
|
|
7
61
|
super();
|
|
8
62
|
this.client = new Ollama({ host });
|
|
9
63
|
this.model = model;
|
|
64
|
+
this.supportsTools = options.supportsTools ?? false;
|
|
65
|
+
this.contextWindow = options.contextWindow ?? DEFAULT_CONTEXT_WINDOW;
|
|
10
66
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
67
|
+
getCapabilities() {
|
|
68
|
+
return {
|
|
69
|
+
supportsTools: this.supportsTools,
|
|
70
|
+
supportsImages: true,
|
|
71
|
+
contextWindow: this.contextWindow,
|
|
72
|
+
safeUsageRatio: 0.5,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async chat(messages, streamCallback, tools) {
|
|
76
|
+
const formattedMessages = toOllamaMessages(messages, this.supportsTools);
|
|
77
|
+
// Never send `tools` to a model we don't know supports it — Ollama
|
|
78
|
+
// throws rather than silently ignoring an unsupported `tools` field.
|
|
79
|
+
const formattedTools = tools && tools.length > 0 && this.supportsTools
|
|
80
|
+
? toOpenAIFunctionTools(tools)
|
|
81
|
+
: undefined;
|
|
16
82
|
if (streamCallback) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
83
|
+
return withRetry(async () => {
|
|
84
|
+
// Per-attempt accumulators live inside this closure so a
|
|
85
|
+
// failed/partial stream from a previous attempt never leaks
|
|
86
|
+
// into a retry's output — each attempt starts clean.
|
|
87
|
+
const stream = await this.client.chat({
|
|
88
|
+
model: this.model,
|
|
89
|
+
messages: formattedMessages,
|
|
90
|
+
...(formattedTools ? { tools: formattedTools } : {}),
|
|
91
|
+
stream: true
|
|
92
|
+
});
|
|
93
|
+
let fullContent = "";
|
|
94
|
+
let promptEvalCount = 0;
|
|
95
|
+
let evalCount = 0;
|
|
96
|
+
let toolCalls;
|
|
97
|
+
for await (const chunk of stream) {
|
|
98
|
+
const content = chunk.message?.content || "";
|
|
99
|
+
if (content) {
|
|
100
|
+
fullContent += content;
|
|
101
|
+
streamCallback({ role: "assistant", content, done: false });
|
|
102
|
+
}
|
|
103
|
+
if (chunk.message?.tool_calls?.length) {
|
|
104
|
+
toolCalls = fromOllamaToolCalls(chunk.message.tool_calls);
|
|
105
|
+
}
|
|
106
|
+
if (chunk.prompt_eval_count !== undefined) {
|
|
107
|
+
promptEvalCount = chunk.prompt_eval_count;
|
|
108
|
+
}
|
|
109
|
+
if (chunk.eval_count !== undefined) {
|
|
110
|
+
evalCount = chunk.eval_count;
|
|
111
|
+
}
|
|
33
112
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
outputTokens: evalCount
|
|
43
|
-
};
|
|
113
|
+
streamCallback({ role: "assistant", content: "", done: true, ...(toolCalls ? { toolCalls } : {}) });
|
|
114
|
+
return {
|
|
115
|
+
content: fullContent,
|
|
116
|
+
inputTokens: promptEvalCount,
|
|
117
|
+
outputTokens: evalCount,
|
|
118
|
+
...(toolCalls ? { toolCalls } : {}),
|
|
119
|
+
};
|
|
120
|
+
});
|
|
44
121
|
}
|
|
45
122
|
else {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
123
|
+
return withRetry(async () => {
|
|
124
|
+
const response = await this.client.chat({
|
|
125
|
+
model: this.model,
|
|
126
|
+
messages: formattedMessages,
|
|
127
|
+
...(formattedTools ? { tools: formattedTools } : {}),
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
content: response.message?.content || "",
|
|
131
|
+
inputTokens: response.prompt_eval_count || 0,
|
|
132
|
+
outputTokens: response.eval_count || 0,
|
|
133
|
+
...(fromOllamaToolCalls(response.message?.tool_calls) ? { toolCalls: fromOllamaToolCalls(response.message?.tool_calls) } : {}),
|
|
134
|
+
};
|
|
49
135
|
});
|
|
50
|
-
return {
|
|
51
|
-
content: response.message?.content || "",
|
|
52
|
-
inputTokens: response.prompt_eval_count || 0,
|
|
53
|
-
outputTokens: response.eval_count || 0
|
|
54
|
-
};
|
|
55
136
|
}
|
|
56
137
|
}
|
|
57
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs `fn`, retrying on any thrown error using the fixed backoff schedule
|
|
3
|
+
* above. Every error is treated as transient/retryable — callers that only
|
|
4
|
+
* want to retry specific error shapes should filter inside `fn` and rethrow
|
|
5
|
+
* a non-retryable marker instead (not needed currently, since all providers
|
|
6
|
+
* here want to retry on any error: network errors, timeouts, 5xx, etc).
|
|
7
|
+
*/
|
|
8
|
+
export declare function withRetry<T>(fn: () => Promise<T>): Promise<T>;
|
|
9
|
+
export default withRetry;
|
|
10
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAenE;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry-with-backoff helper. Each provider calls this around its own SDK
|
|
3
|
+
* call (not a central wrapper in BaseAgent) so provider-specific errors
|
|
4
|
+
* (rate limits, transient 5xx, network blips) are retried right at the
|
|
5
|
+
* source before ever reaching the agent loop.
|
|
6
|
+
*
|
|
7
|
+
* Schedule: 1s, 2s, 4s, 8s between attempts (4 waits => 5 total attempts).
|
|
8
|
+
* After the last attempt still fails, the error is rethrown as-is so the
|
|
9
|
+
* caller sees the real underlying error rather than a generic wrapper.
|
|
10
|
+
*/
|
|
11
|
+
const BACKOFF_SCHEDULE_MS = [1_000, 2_000, 4_000, 8_000];
|
|
12
|
+
function sleep(ms) {
|
|
13
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Runs `fn`, retrying on any thrown error using the fixed backoff schedule
|
|
17
|
+
* above. Every error is treated as transient/retryable — callers that only
|
|
18
|
+
* want to retry specific error shapes should filter inside `fn` and rethrow
|
|
19
|
+
* a non-retryable marker instead (not needed currently, since all providers
|
|
20
|
+
* here want to retry on any error: network errors, timeouts, 5xx, etc).
|
|
21
|
+
*/
|
|
22
|
+
export async function withRetry(fn) {
|
|
23
|
+
let lastError;
|
|
24
|
+
for (let attempt = 0; attempt <= BACKOFF_SCHEDULE_MS.length; attempt++) {
|
|
25
|
+
try {
|
|
26
|
+
return await fn();
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
lastError = err;
|
|
30
|
+
const waitMs = BACKOFF_SCHEDULE_MS[attempt];
|
|
31
|
+
if (waitMs === undefined)
|
|
32
|
+
break; // no more retries left
|
|
33
|
+
await sleep(waitMs);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
throw lastError;
|
|
37
|
+
}
|
|
38
|
+
export default withRetry;
|
|
39
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/core/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzD,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB;IACnD,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,uBAAuB;YACxD,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED,MAAM,SAAS,CAAC;AACpB,CAAC;AAED,eAAe,SAAS,CAAC"}
|
package/dist/core/skill.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import type MCPTool from "./mcp.js";
|
|
1
2
|
export declare class Skill {
|
|
2
3
|
#private;
|
|
3
4
|
constructor(skill: {
|
|
4
5
|
name: string;
|
|
5
6
|
description: string;
|
|
6
7
|
instructions: string;
|
|
8
|
+
tools: MCPTool<any>[];
|
|
7
9
|
});
|
|
8
10
|
getSkill(): {
|
|
9
11
|
name: string;
|
|
10
12
|
description: string;
|
|
11
13
|
instructions: string;
|
|
14
|
+
tools: MCPTool<any>[];
|
|
12
15
|
};
|
|
13
16
|
}
|
|
14
17
|
export default Skill;
|
package/dist/core/skill.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,qBAAa,KAAK;;gBAEF,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB;IAID,QAAQ;
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AAEpC,qBAAa,KAAK;;gBAEF,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;KACxB;IAID,QAAQ;cARE,MAAM;qBACC,MAAM;sBACL,MAAM;eACb,OAAO,CAAC,GAAG,CAAC,EAAE;;CAQ5B;AAED,eAAe,KAAK,CAAC"}
|
package/dist/core/skill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,KAAK;IACd,MAAM,CAAC;IACP,YAAY,KAKX;QACG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ToolSchema } from "./ai-provider.js";
|
|
2
|
+
/**
|
|
3
|
+
* Translates our standard, provider-agnostic ToolSchema[] into the
|
|
4
|
+
* OpenAI-compatible `tools: [{type:"function", function:{...}}]` shape.
|
|
5
|
+
* Both the OpenAI SDK (DeepSeekProvider) and Ollama's function-calling API
|
|
6
|
+
* use this same shape, so it's shared rather than duplicated per provider.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toOpenAIFunctionTools(tools: ToolSchema[]): any[];
|
|
9
|
+
export default toOpenAIFunctionTools;
|
|
10
|
+
//# sourceMappingURL=tool-schema-translator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema-translator.d.ts","sourceRoot":"","sources":["../../src/core/tool-schema-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,EAAE,CAoBhE;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translates our standard, provider-agnostic ToolSchema[] into the
|
|
3
|
+
* OpenAI-compatible `tools: [{type:"function", function:{...}}]` shape.
|
|
4
|
+
* Both the OpenAI SDK (DeepSeekProvider) and Ollama's function-calling API
|
|
5
|
+
* use this same shape, so it's shared rather than duplicated per provider.
|
|
6
|
+
*/
|
|
7
|
+
export function toOpenAIFunctionTools(tools) {
|
|
8
|
+
return tools.map(t => ({
|
|
9
|
+
type: "function",
|
|
10
|
+
function: {
|
|
11
|
+
name: t.name,
|
|
12
|
+
description: t.description,
|
|
13
|
+
parameters: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: Object.fromEntries(t.inputs.map(i => [
|
|
16
|
+
i.name,
|
|
17
|
+
{
|
|
18
|
+
type: i.type === "array" ? "array" : i.type === "object" ? "object" : i.type,
|
|
19
|
+
description: i.description,
|
|
20
|
+
...(i.default !== undefined ? { default: i.default } : {}),
|
|
21
|
+
}
|
|
22
|
+
])),
|
|
23
|
+
required: t.inputs.filter(i => i.required).map(i => i.name),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
export default toOpenAIFunctionTools;
|
|
29
|
+
//# sourceMappingURL=tool-schema-translator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema-translator.js","sourceRoot":"","sources":["../../src/core/tool-schema-translator.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACN,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,CAAC,CAAC,IAAI;oBACN;wBACI,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;wBAC5E,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7D;iBACJ,CAAC,CAAC;gBACH,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAC9D;SACJ;KACJ,CAAC,CAAC,CAAC;AACR,CAAC;AAED,eAAe,qBAAqB,CAAC"}
|