im-hub-pro 0.2.29
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/LICENSE +21 -0
- package/README.md +497 -0
- package/README.zh-CN.md +496 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +921 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/acp-server.d.ts +8 -0
- package/dist/core/acp-server.d.ts.map +1 -0
- package/dist/core/acp-server.js +266 -0
- package/dist/core/acp-server.js.map +1 -0
- package/dist/core/agent-base.d.ts +94 -0
- package/dist/core/agent-base.d.ts.map +1 -0
- package/dist/core/agent-base.js +374 -0
- package/dist/core/agent-base.js.map +1 -0
- package/dist/core/agent-cwd.d.ts +45 -0
- package/dist/core/agent-cwd.d.ts.map +1 -0
- package/dist/core/agent-cwd.js +178 -0
- package/dist/core/agent-cwd.js.map +1 -0
- package/dist/core/agent-cwd.test.d.ts +2 -0
- package/dist/core/agent-cwd.test.d.ts.map +1 -0
- package/dist/core/agent-cwd.test.js +149 -0
- package/dist/core/agent-cwd.test.js.map +1 -0
- package/dist/core/approval-bus.d.ts +232 -0
- package/dist/core/approval-bus.d.ts.map +1 -0
- package/dist/core/approval-bus.js +703 -0
- package/dist/core/approval-bus.js.map +1 -0
- package/dist/core/approval-bus.synthetic.test.d.ts +2 -0
- package/dist/core/approval-bus.synthetic.test.d.ts.map +1 -0
- package/dist/core/approval-bus.synthetic.test.js +182 -0
- package/dist/core/approval-bus.synthetic.test.js.map +1 -0
- package/dist/core/approval-bus.test.d.ts +2 -0
- package/dist/core/approval-bus.test.d.ts.map +1 -0
- package/dist/core/approval-bus.test.js +537 -0
- package/dist/core/approval-bus.test.js.map +1 -0
- package/dist/core/approval-router.d.ts +95 -0
- package/dist/core/approval-router.d.ts.map +1 -0
- package/dist/core/approval-router.js +450 -0
- package/dist/core/approval-router.js.map +1 -0
- package/dist/core/approval-router.test.d.ts +2 -0
- package/dist/core/approval-router.test.d.ts.map +1 -0
- package/dist/core/approval-router.test.js +413 -0
- package/dist/core/approval-router.test.js.map +1 -0
- package/dist/core/audit-log.d.ts +55 -0
- package/dist/core/audit-log.d.ts.map +1 -0
- package/dist/core/audit-log.js +203 -0
- package/dist/core/audit-log.js.map +1 -0
- package/dist/core/bgjob-reader.d.ts +65 -0
- package/dist/core/bgjob-reader.d.ts.map +1 -0
- package/dist/core/bgjob-reader.js +212 -0
- package/dist/core/bgjob-reader.js.map +1 -0
- package/dist/core/bgjob-reader.test.d.ts +2 -0
- package/dist/core/bgjob-reader.test.d.ts.map +1 -0
- package/dist/core/bgjob-reader.test.js +178 -0
- package/dist/core/bgjob-reader.test.js.map +1 -0
- package/dist/core/circuit-breaker.d.ts +37 -0
- package/dist/core/circuit-breaker.d.ts.map +1 -0
- package/dist/core/circuit-breaker.js +115 -0
- package/dist/core/circuit-breaker.js.map +1 -0
- package/dist/core/commands/agent.d.ts +4 -0
- package/dist/core/commands/agent.d.ts.map +1 -0
- package/dist/core/commands/agent.js +21 -0
- package/dist/core/commands/agent.js.map +1 -0
- package/dist/core/commands/approval.d.ts +3 -0
- package/dist/core/commands/approval.d.ts.map +1 -0
- package/dist/core/commands/approval.js +44 -0
- package/dist/core/commands/approval.js.map +1 -0
- package/dist/core/commands/approval.test.d.ts +2 -0
- package/dist/core/commands/approval.test.d.ts.map +1 -0
- package/dist/core/commands/approval.test.js +85 -0
- package/dist/core/commands/approval.test.js.map +1 -0
- package/dist/core/commands/audit.d.ts +3 -0
- package/dist/core/commands/audit.d.ts.map +1 -0
- package/dist/core/commands/audit.js +84 -0
- package/dist/core/commands/audit.js.map +1 -0
- package/dist/core/commands/builtin.d.ts +3 -0
- package/dist/core/commands/builtin.d.ts.map +1 -0
- package/dist/core/commands/builtin.js +26 -0
- package/dist/core/commands/builtin.js.map +1 -0
- package/dist/core/commands/job.d.ts +3 -0
- package/dist/core/commands/job.d.ts.map +1 -0
- package/dist/core/commands/job.js +195 -0
- package/dist/core/commands/job.js.map +1 -0
- package/dist/core/commands/model.d.ts +9 -0
- package/dist/core/commands/model.d.ts.map +1 -0
- package/dist/core/commands/model.js +183 -0
- package/dist/core/commands/model.js.map +1 -0
- package/dist/core/commands/plan.d.ts +3 -0
- package/dist/core/commands/plan.d.ts.map +1 -0
- package/dist/core/commands/plan.js +75 -0
- package/dist/core/commands/plan.js.map +1 -0
- package/dist/core/commands/plan.test.d.ts +2 -0
- package/dist/core/commands/plan.test.d.ts.map +1 -0
- package/dist/core/commands/plan.test.js +122 -0
- package/dist/core/commands/plan.test.js.map +1 -0
- package/dist/core/commands/router.d.ts +3 -0
- package/dist/core/commands/router.d.ts.map +1 -0
- package/dist/core/commands/router.js +71 -0
- package/dist/core/commands/router.js.map +1 -0
- package/dist/core/commands/schedule.d.ts +3 -0
- package/dist/core/commands/schedule.d.ts.map +1 -0
- package/dist/core/commands/schedule.js +123 -0
- package/dist/core/commands/schedule.js.map +1 -0
- package/dist/core/commands/sessions.d.ts +3 -0
- package/dist/core/commands/sessions.d.ts.map +1 -0
- package/dist/core/commands/sessions.js +88 -0
- package/dist/core/commands/sessions.js.map +1 -0
- package/dist/core/commands/stats.d.ts +3 -0
- package/dist/core/commands/stats.d.ts.map +1 -0
- package/dist/core/commands/stats.js +73 -0
- package/dist/core/commands/stats.js.map +1 -0
- package/dist/core/commands/think.d.ts +3 -0
- package/dist/core/commands/think.d.ts.map +1 -0
- package/dist/core/commands/think.js +28 -0
- package/dist/core/commands/think.js.map +1 -0
- package/dist/core/commands/workspaces.d.ts +3 -0
- package/dist/core/commands/workspaces.d.ts.map +1 -0
- package/dist/core/commands/workspaces.js +47 -0
- package/dist/core/commands/workspaces.js.map +1 -0
- package/dist/core/config-schema.d.ts +58 -0
- package/dist/core/config-schema.d.ts.map +1 -0
- package/dist/core/config-schema.js +63 -0
- package/dist/core/config-schema.js.map +1 -0
- package/dist/core/cron.d.ts +29 -0
- package/dist/core/cron.d.ts.map +1 -0
- package/dist/core/cron.js +184 -0
- package/dist/core/cron.js.map +1 -0
- package/dist/core/event-bus.d.ts +80 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +62 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/intent-llm.d.ts +27 -0
- package/dist/core/intent-llm.d.ts.map +1 -0
- package/dist/core/intent-llm.js +170 -0
- package/dist/core/intent-llm.js.map +1 -0
- package/dist/core/intent.d.ts +12 -0
- package/dist/core/intent.d.ts.map +1 -0
- package/dist/core/intent.js +187 -0
- package/dist/core/intent.js.map +1 -0
- package/dist/core/job-board.d.ts +84 -0
- package/dist/core/job-board.d.ts.map +1 -0
- package/dist/core/job-board.js +379 -0
- package/dist/core/job-board.js.map +1 -0
- package/dist/core/logger.d.ts +6 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +54 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/metrics.d.ts +55 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +291 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/onboarding.d.ts +94 -0
- package/dist/core/onboarding.d.ts.map +1 -0
- package/dist/core/onboarding.js +426 -0
- package/dist/core/onboarding.js.map +1 -0
- package/dist/core/onboarding.test.d.ts +2 -0
- package/dist/core/onboarding.test.d.ts.map +1 -0
- package/dist/core/onboarding.test.js +112 -0
- package/dist/core/onboarding.test.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +44 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +115 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/registry.d.ts +32 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +122 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/router.d.ts +41 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/router.js +431 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/schedule.d.ts +65 -0
- package/dist/core/schedule.d.ts.map +1 -0
- package/dist/core/schedule.js +316 -0
- package/dist/core/schedule.js.map +1 -0
- package/dist/core/session-subtasks.test.d.ts +2 -0
- package/dist/core/session-subtasks.test.d.ts.map +1 -0
- package/dist/core/session-subtasks.test.js +88 -0
- package/dist/core/session-subtasks.test.js.map +1 -0
- package/dist/core/session.d.ts +182 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +774 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/sqlite-helper.d.ts +37 -0
- package/dist/core/sqlite-helper.d.ts.map +1 -0
- package/dist/core/sqlite-helper.js +79 -0
- package/dist/core/sqlite-helper.js.map +1 -0
- package/dist/core/transcribe.d.ts +25 -0
- package/dist/core/transcribe.d.ts.map +1 -0
- package/dist/core/transcribe.js +217 -0
- package/dist/core/transcribe.js.map +1 -0
- package/dist/core/transcribe.test.d.ts +2 -0
- package/dist/core/transcribe.test.d.ts.map +1 -0
- package/dist/core/transcribe.test.js +163 -0
- package/dist/core/transcribe.test.js.map +1 -0
- package/dist/core/types.d.ts +352 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/workspace.d.ts +67 -0
- package/dist/core/workspace.d.ts.map +1 -0
- package/dist/core/workspace.js +113 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/agents/acp/acp-adapter.d.ts +16 -0
- package/dist/plugins/agents/acp/acp-adapter.d.ts.map +1 -0
- package/dist/plugins/agents/acp/acp-adapter.js +49 -0
- package/dist/plugins/agents/acp/acp-adapter.js.map +1 -0
- package/dist/plugins/agents/acp/acp-client.d.ts +32 -0
- package/dist/plugins/agents/acp/acp-client.d.ts.map +1 -0
- package/dist/plugins/agents/acp/acp-client.js +175 -0
- package/dist/plugins/agents/acp/acp-client.js.map +1 -0
- package/dist/plugins/agents/acp/discovery.d.ts +19 -0
- package/dist/plugins/agents/acp/discovery.d.ts.map +1 -0
- package/dist/plugins/agents/acp/discovery.js +109 -0
- package/dist/plugins/agents/acp/discovery.js.map +1 -0
- package/dist/plugins/agents/acp/index.d.ts +4 -0
- package/dist/plugins/agents/acp/index.d.ts.map +1 -0
- package/dist/plugins/agents/acp/index.js +4 -0
- package/dist/plugins/agents/acp/index.js.map +1 -0
- package/dist/plugins/agents/acp/types.d.ts +62 -0
- package/dist/plugins/agents/acp/types.d.ts.map +1 -0
- package/dist/plugins/agents/acp/types.js +5 -0
- package/dist/plugins/agents/acp/types.js.map +1 -0
- package/dist/plugins/agents/claude-code/adapter.test.d.ts +2 -0
- package/dist/plugins/agents/claude-code/adapter.test.d.ts.map +1 -0
- package/dist/plugins/agents/claude-code/adapter.test.js +195 -0
- package/dist/plugins/agents/claude-code/adapter.test.js.map +1 -0
- package/dist/plugins/agents/claude-code/index.d.ts +25 -0
- package/dist/plugins/agents/claude-code/index.d.ts.map +1 -0
- package/dist/plugins/agents/claude-code/index.js +184 -0
- package/dist/plugins/agents/claude-code/index.js.map +1 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts +42 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.d.ts.map +1 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.js +235 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.test.d.ts +2 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.test.d.ts.map +1 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.test.js +188 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.test.js.map +1 -0
- package/dist/plugins/agents/codex/adapter.test.d.ts +2 -0
- package/dist/plugins/agents/codex/adapter.test.d.ts.map +1 -0
- package/dist/plugins/agents/codex/adapter.test.js +192 -0
- package/dist/plugins/agents/codex/adapter.test.js.map +1 -0
- package/dist/plugins/agents/codex/index.d.ts +37 -0
- package/dist/plugins/agents/codex/index.d.ts.map +1 -0
- package/dist/plugins/agents/codex/index.js +254 -0
- package/dist/plugins/agents/codex/index.js.map +1 -0
- package/dist/plugins/agents/copilot/index.d.ts +35 -0
- package/dist/plugins/agents/copilot/index.d.ts.map +1 -0
- package/dist/plugins/agents/copilot/index.js +182 -0
- package/dist/plugins/agents/copilot/index.js.map +1 -0
- package/dist/plugins/agents/opencode/adapter.test.d.ts +2 -0
- package/dist/plugins/agents/opencode/adapter.test.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/adapter.test.js +139 -0
- package/dist/plugins/agents/opencode/adapter.test.js.map +1 -0
- package/dist/plugins/agents/opencode/http-adapter.test.d.ts +2 -0
- package/dist/plugins/agents/opencode/http-adapter.test.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/http-adapter.test.js +492 -0
- package/dist/plugins/agents/opencode/http-adapter.test.js.map +1 -0
- package/dist/plugins/agents/opencode/index.d.ts +5 -0
- package/dist/plugins/agents/opencode/index.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/index.js +30 -0
- package/dist/plugins/agents/opencode/index.js.map +1 -0
- package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts +138 -0
- package/dist/plugins/agents/opencode/opencode-http-adapter.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/opencode-http-adapter.js +549 -0
- package/dist/plugins/agents/opencode/opencode-http-adapter.js.map +1 -0
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts +24 -0
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js +103 -0
- package/dist/plugins/agents/opencode/opencode-stdio-adapter.js.map +1 -0
- package/dist/plugins/agents/opencode/serve-manager.d.ts +27 -0
- package/dist/plugins/agents/opencode/serve-manager.d.ts.map +1 -0
- package/dist/plugins/agents/opencode/serve-manager.js +190 -0
- package/dist/plugins/agents/opencode/serve-manager.js.map +1 -0
- package/dist/plugins/messengers/discord/discord-adapter.d.ts +22 -0
- package/dist/plugins/messengers/discord/discord-adapter.d.ts.map +1 -0
- package/dist/plugins/messengers/discord/discord-adapter.js +241 -0
- package/dist/plugins/messengers/discord/discord-adapter.js.map +1 -0
- package/dist/plugins/messengers/discord/discord-adapter.test.d.ts +2 -0
- package/dist/plugins/messengers/discord/discord-adapter.test.d.ts.map +1 -0
- package/dist/plugins/messengers/discord/discord-adapter.test.js +332 -0
- package/dist/plugins/messengers/discord/discord-adapter.test.js.map +1 -0
- package/dist/plugins/messengers/discord/index.d.ts +4 -0
- package/dist/plugins/messengers/discord/index.d.ts.map +1 -0
- package/dist/plugins/messengers/discord/index.js +4 -0
- package/dist/plugins/messengers/discord/index.js.map +1 -0
- package/dist/plugins/messengers/discord/markdown-to-discord.d.ts +11 -0
- package/dist/plugins/messengers/discord/markdown-to-discord.d.ts.map +1 -0
- package/dist/plugins/messengers/discord/markdown-to-discord.js +59 -0
- package/dist/plugins/messengers/discord/markdown-to-discord.js.map +1 -0
- package/dist/plugins/messengers/discord/types.d.ts +9 -0
- package/dist/plugins/messengers/discord/types.d.ts.map +1 -0
- package/dist/plugins/messengers/discord/types.js +3 -0
- package/dist/plugins/messengers/discord/types.js.map +1 -0
- package/dist/plugins/messengers/feishu/card-builder.d.ts +23 -0
- package/dist/plugins/messengers/feishu/card-builder.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/card-builder.js +89 -0
- package/dist/plugins/messengers/feishu/card-builder.js.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-adapter.d.ts +33 -0
- package/dist/plugins/messengers/feishu/feishu-adapter.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-adapter.js +195 -0
- package/dist/plugins/messengers/feishu/feishu-adapter.js.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-client.d.ts +44 -0
- package/dist/plugins/messengers/feishu/feishu-client.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-client.js +120 -0
- package/dist/plugins/messengers/feishu/feishu-client.js.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-dedup.test.d.ts +2 -0
- package/dist/plugins/messengers/feishu/feishu-dedup.test.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/feishu-dedup.test.js +70 -0
- package/dist/plugins/messengers/feishu/feishu-dedup.test.js.map +1 -0
- package/dist/plugins/messengers/feishu/index.d.ts +4 -0
- package/dist/plugins/messengers/feishu/index.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/index.js +4 -0
- package/dist/plugins/messengers/feishu/index.js.map +1 -0
- package/dist/plugins/messengers/feishu/types.d.ts +113 -0
- package/dist/plugins/messengers/feishu/types.d.ts.map +1 -0
- package/dist/plugins/messengers/feishu/types.js +4 -0
- package/dist/plugins/messengers/feishu/types.js.map +1 -0
- package/dist/plugins/messengers/telegram/index.d.ts +4 -0
- package/dist/plugins/messengers/telegram/index.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/index.js +4 -0
- package/dist/plugins/messengers/telegram/index.js.map +1 -0
- package/dist/plugins/messengers/telegram/markdown-to-html.d.ts +5 -0
- package/dist/plugins/messengers/telegram/markdown-to-html.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/markdown-to-html.js +186 -0
- package/dist/plugins/messengers/telegram/markdown-to-html.js.map +1 -0
- package/dist/plugins/messengers/telegram/media-download.d.ts +51 -0
- package/dist/plugins/messengers/telegram/media-download.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/media-download.js +224 -0
- package/dist/plugins/messengers/telegram/media-download.js.map +1 -0
- package/dist/plugins/messengers/telegram/media-download.test.d.ts +2 -0
- package/dist/plugins/messengers/telegram/media-download.test.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/media-download.test.js +125 -0
- package/dist/plugins/messengers/telegram/media-download.test.js.map +1 -0
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts +62 -0
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/telegram-adapter.js +653 -0
- package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -0
- package/dist/plugins/messengers/telegram/types.d.ts +47 -0
- package/dist/plugins/messengers/telegram/types.d.ts.map +1 -0
- package/dist/plugins/messengers/telegram/types.js +3 -0
- package/dist/plugins/messengers/telegram/types.js.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-adapter.d.ts +68 -0
- package/dist/plugins/messengers/wechat/ilink-adapter.d.ts.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-adapter.js +483 -0
- package/dist/plugins/messengers/wechat/ilink-adapter.js.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-client.d.ts +66 -0
- package/dist/plugins/messengers/wechat/ilink-client.d.ts.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-client.js +288 -0
- package/dist/plugins/messengers/wechat/ilink-client.js.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-types.d.ts +173 -0
- package/dist/plugins/messengers/wechat/ilink-types.d.ts.map +1 -0
- package/dist/plugins/messengers/wechat/ilink-types.js +12 -0
- package/dist/plugins/messengers/wechat/ilink-types.js.map +1 -0
- package/dist/utils/backoff.d.ts +35 -0
- package/dist/utils/backoff.d.ts.map +1 -0
- package/dist/utils/backoff.js +59 -0
- package/dist/utils/backoff.js.map +1 -0
- package/dist/utils/cross-platform.d.ts +26 -0
- package/dist/utils/cross-platform.d.ts.map +1 -0
- package/dist/utils/cross-platform.js +58 -0
- package/dist/utils/cross-platform.js.map +1 -0
- package/dist/utils/message-split.d.ts +14 -0
- package/dist/utils/message-split.d.ts.map +1 -0
- package/dist/utils/message-split.js +65 -0
- package/dist/utils/message-split.js.map +1 -0
- package/dist/utils/safe-equal.d.ts +2 -0
- package/dist/utils/safe-equal.d.ts.map +1 -0
- package/dist/utils/safe-equal.js +11 -0
- package/dist/utils/safe-equal.js.map +1 -0
- package/dist/web/public/_app.js +196 -0
- package/dist/web/public/index.html +935 -0
- package/dist/web/public/settings.html +1181 -0
- package/dist/web/public/tasks.html +1827 -0
- package/dist/web/server.d.ts +11 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +1820 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ChatMessage } from '../../../core/types.js';
|
|
2
|
+
import type { ACPAgentConfig, ACPManifest } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Build auth headers from ACP config. Extracted as a shared helper
|
|
5
|
+
* so both ACPClient and CLI config validation use the same logic.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildAuthHeaders(config: {
|
|
8
|
+
auth?: ACPAgentConfig['auth'];
|
|
9
|
+
}): Record<string, string> | undefined;
|
|
10
|
+
export declare class ACPClient {
|
|
11
|
+
private baseUrl;
|
|
12
|
+
private authHeaders?;
|
|
13
|
+
private manifest?;
|
|
14
|
+
constructor(config: ACPAgentConfig);
|
|
15
|
+
/** Fetch and cache the Agent Manifest (GET /agent/card) */
|
|
16
|
+
fetchManifest(): Promise<ACPManifest>;
|
|
17
|
+
/** Check if the agent endpoint is reachable */
|
|
18
|
+
healthCheck(): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Send prompt and stream response chunks via SSE.
|
|
21
|
+
* Parses Server-Sent Events per the W3C spec:
|
|
22
|
+
* - Multiple `data:` lines for a single event are joined with newlines
|
|
23
|
+
* - Events separated by blank lines
|
|
24
|
+
*
|
|
25
|
+
* `sessionId` is forwarded as `session_id` in the request body so the
|
|
26
|
+
* remote agent can persist context across turns (P2-C).
|
|
27
|
+
*/
|
|
28
|
+
streamPrompt(prompt: string, history?: ChatMessage[], sessionId?: string): AsyncGenerator<string>;
|
|
29
|
+
/** Send prompt and wait for complete response (non-streaming fallback) */
|
|
30
|
+
sendPromptSync(prompt: string, history?: ChatMessage[], sessionId?: string): Promise<string>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=acp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-client.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/acp-client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAyC,MAAM,YAAY,CAAA;AAEpG;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAM9G;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAC,CAAwB;IAC5C,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,MAAM,EAAE,cAAc;IAKlC,2DAA2D;IACrD,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3C,+CAA+C;IACzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;;;;;;;OAQG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAwFxG,0EAA0E;IACpE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BnG"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// ACP HTTP client — communicates with remote ACP-compatible agents
|
|
2
|
+
//
|
|
3
|
+
// ACP convention for endpoint paths (per OpenAPI spec):
|
|
4
|
+
// GET /agent/card → Agent Manifest
|
|
5
|
+
// POST /tasks → Create task (sync or stream)
|
|
6
|
+
// GET /tasks/{id} → Get task status
|
|
7
|
+
//
|
|
8
|
+
// The user provides the base URL. We append these standard paths.
|
|
9
|
+
/**
|
|
10
|
+
* Build auth headers from ACP config. Extracted as a shared helper
|
|
11
|
+
* so both ACPClient and CLI config validation use the same logic.
|
|
12
|
+
*/
|
|
13
|
+
export function buildAuthHeaders(config) {
|
|
14
|
+
if (!config.auth || config.auth.type === 'none')
|
|
15
|
+
return undefined;
|
|
16
|
+
if (!config.auth.token)
|
|
17
|
+
return undefined;
|
|
18
|
+
if (config.auth.type === 'bearer')
|
|
19
|
+
return { Authorization: `Bearer ${config.auth.token}` };
|
|
20
|
+
if (config.auth.type === 'apikey')
|
|
21
|
+
return { 'X-API-Key': config.auth.token };
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
export class ACPClient {
|
|
25
|
+
baseUrl;
|
|
26
|
+
authHeaders;
|
|
27
|
+
manifest;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.baseUrl = config.endpoint.replace(/\/$/, '');
|
|
30
|
+
this.authHeaders = buildAuthHeaders(config);
|
|
31
|
+
}
|
|
32
|
+
/** Fetch and cache the Agent Manifest (GET /agent/card) */
|
|
33
|
+
async fetchManifest() {
|
|
34
|
+
const res = await fetch(`${this.baseUrl}/agent/card`, {
|
|
35
|
+
headers: { ...this.authHeaders, Accept: 'application/json' },
|
|
36
|
+
signal: AbortSignal.timeout(10000),
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
throw new Error(`Failed to fetch manifest: ${res.status} ${res.statusText}`);
|
|
40
|
+
}
|
|
41
|
+
this.manifest = (await res.json());
|
|
42
|
+
return this.manifest;
|
|
43
|
+
}
|
|
44
|
+
/** Check if the agent endpoint is reachable */
|
|
45
|
+
async healthCheck() {
|
|
46
|
+
try {
|
|
47
|
+
const manifest = await this.fetchManifest();
|
|
48
|
+
return !!manifest.name;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Send prompt and stream response chunks via SSE.
|
|
56
|
+
* Parses Server-Sent Events per the W3C spec:
|
|
57
|
+
* - Multiple `data:` lines for a single event are joined with newlines
|
|
58
|
+
* - Events separated by blank lines
|
|
59
|
+
*
|
|
60
|
+
* `sessionId` is forwarded as `session_id` in the request body so the
|
|
61
|
+
* remote agent can persist context across turns (P2-C).
|
|
62
|
+
*/
|
|
63
|
+
async *streamPrompt(prompt, history, sessionId) {
|
|
64
|
+
const body = {
|
|
65
|
+
input: {
|
|
66
|
+
prompt,
|
|
67
|
+
history: history?.map((m) => ({ role: m.role, content: m.content })),
|
|
68
|
+
},
|
|
69
|
+
mode: 'stream',
|
|
70
|
+
...(sessionId ? { session_id: sessionId } : {}),
|
|
71
|
+
};
|
|
72
|
+
const res = await fetch(`${this.baseUrl}/tasks`, {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
headers: {
|
|
75
|
+
'Content-Type': 'application/json',
|
|
76
|
+
...this.authHeaders,
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify(body),
|
|
79
|
+
signal: AbortSignal.timeout(300000), // 5min timeout for long tasks
|
|
80
|
+
});
|
|
81
|
+
if (!res.ok) {
|
|
82
|
+
const errorBody = await res.text().catch(() => 'unknown error');
|
|
83
|
+
throw new Error(`ACP task failed: ${res.status} ${errorBody}`);
|
|
84
|
+
}
|
|
85
|
+
// Parse SSE stream (W3C spec compliant)
|
|
86
|
+
const reader = res.body?.getReader();
|
|
87
|
+
if (!reader)
|
|
88
|
+
throw new Error('No response body for streaming');
|
|
89
|
+
const decoder = new TextDecoder();
|
|
90
|
+
let buffer = '';
|
|
91
|
+
let eventDataLines = [];
|
|
92
|
+
while (true) {
|
|
93
|
+
const { done, value } = await reader.read();
|
|
94
|
+
if (done)
|
|
95
|
+
break;
|
|
96
|
+
buffer += decoder.decode(value, { stream: true });
|
|
97
|
+
// Process complete lines
|
|
98
|
+
let newlineIdx;
|
|
99
|
+
while ((newlineIdx = buffer.indexOf('\n')) !== -1) {
|
|
100
|
+
const line = buffer.slice(0, newlineIdx).replace(/\r$/, '');
|
|
101
|
+
buffer = buffer.slice(newlineIdx + 1);
|
|
102
|
+
if (line === '') {
|
|
103
|
+
// Empty line = end of event. Process accumulated data.
|
|
104
|
+
if (eventDataLines.length > 0) {
|
|
105
|
+
const data = eventDataLines.join('\n');
|
|
106
|
+
eventDataLines = [];
|
|
107
|
+
if (data === '[DONE]')
|
|
108
|
+
return;
|
|
109
|
+
try {
|
|
110
|
+
const event = JSON.parse(data);
|
|
111
|
+
if (event.output?.content) {
|
|
112
|
+
yield event.output.content;
|
|
113
|
+
}
|
|
114
|
+
else if (event.error) {
|
|
115
|
+
throw new Error(`ACP error: ${event.error.message}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
if (e instanceof SyntaxError)
|
|
120
|
+
continue;
|
|
121
|
+
throw e;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (line.startsWith('data: ')) {
|
|
126
|
+
eventDataLines.push(line.slice(6));
|
|
127
|
+
}
|
|
128
|
+
else if (line.startsWith('data:')) {
|
|
129
|
+
eventDataLines.push(line.slice(5).trimStart());
|
|
130
|
+
}
|
|
131
|
+
// Ignore comment lines (starting with ':') and other SSE fields
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Process any remaining data in buffer
|
|
135
|
+
if (eventDataLines.length > 0) {
|
|
136
|
+
const data = eventDataLines.join('\n');
|
|
137
|
+
if (data !== '[DONE]') {
|
|
138
|
+
try {
|
|
139
|
+
const event = JSON.parse(data);
|
|
140
|
+
if (event.output?.content)
|
|
141
|
+
yield event.output.content;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
/* ignore trailing malformed data */
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Send prompt and wait for complete response (non-streaming fallback) */
|
|
150
|
+
async sendPromptSync(prompt, history, sessionId) {
|
|
151
|
+
const body = {
|
|
152
|
+
input: {
|
|
153
|
+
prompt,
|
|
154
|
+
history: history?.map((m) => ({ role: m.role, content: m.content })),
|
|
155
|
+
},
|
|
156
|
+
mode: 'sync',
|
|
157
|
+
...(sessionId ? { session_id: sessionId } : {}),
|
|
158
|
+
};
|
|
159
|
+
const res = await fetch(`${this.baseUrl}/tasks`, {
|
|
160
|
+
method: 'POST',
|
|
161
|
+
headers: {
|
|
162
|
+
'Content-Type': 'application/json',
|
|
163
|
+
...this.authHeaders,
|
|
164
|
+
},
|
|
165
|
+
body: JSON.stringify(body),
|
|
166
|
+
signal: AbortSignal.timeout(300000),
|
|
167
|
+
});
|
|
168
|
+
if (!res.ok) {
|
|
169
|
+
throw new Error(`ACP task failed: ${res.status}`);
|
|
170
|
+
}
|
|
171
|
+
const task = (await res.json());
|
|
172
|
+
return task.output?.content || '';
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=acp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/acp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ACPAgentConfig } from './types.js';
|
|
2
|
+
export interface DiscoveryResult {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
agents: ACPAgentConfig[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Fetch and parse `<baseUrl>/.well-known/acp`. Trailing slashes are
|
|
8
|
+
* trimmed. Returns the discovery result on success; throws on network
|
|
9
|
+
* error, non-2xx status, or invalid JSON. Individual malformed agent
|
|
10
|
+
* entries are skipped silently with a warn log.
|
|
11
|
+
*/
|
|
12
|
+
export declare function discoverAgents(baseUrl: string): Promise<DiscoveryResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Discover from multiple base URLs in parallel. Failures on individual
|
|
15
|
+
* URLs are logged but don't fail the batch — partial results are
|
|
16
|
+
* returned. Useful for `discoveryUrls` config or REST API fan-out.
|
|
17
|
+
*/
|
|
18
|
+
export declare function discoverMany(baseUrls: string[]): Promise<DiscoveryResult[]>;
|
|
19
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/discovery.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AAgCD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B9E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAWjF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// ACP agent discovery via the `.well-known/acp` HTTP endpoint.
|
|
2
|
+
//
|
|
3
|
+
// Convention: a host that wants to publish one or more ACP-compatible
|
|
4
|
+
// agents serves a JSON document at <base>/.well-known/acp containing:
|
|
5
|
+
//
|
|
6
|
+
// {
|
|
7
|
+
// "agents": [
|
|
8
|
+
// {
|
|
9
|
+
// "name": "weather-bot",
|
|
10
|
+
// "endpoint": "https://example.com/agents/weather",
|
|
11
|
+
// "aliases": ["w", "wx"],
|
|
12
|
+
// "auth": { "type": "bearer", "token": "..." },
|
|
13
|
+
// "description": "Real-time weather forecasts"
|
|
14
|
+
// },
|
|
15
|
+
// ...
|
|
16
|
+
// ]
|
|
17
|
+
// }
|
|
18
|
+
//
|
|
19
|
+
// The endpoint must be the BASE of the agent's ACP root — discovery
|
|
20
|
+
// itself does not poke the agent's `/agent/card`; that's left to
|
|
21
|
+
// ACPAdapter.isAvailable() at registration time.
|
|
22
|
+
import { logger as rootLogger } from '../../../core/logger.js';
|
|
23
|
+
const log = rootLogger.child({ component: 'acp-discovery' });
|
|
24
|
+
const DISCOVERY_TIMEOUT_MS = 10_000;
|
|
25
|
+
/**
|
|
26
|
+
* Validate one entry from the well-known doc. Returns a clean
|
|
27
|
+
* ACPAgentConfig or null if the entry is malformed.
|
|
28
|
+
*/
|
|
29
|
+
function validateEntry(raw) {
|
|
30
|
+
if (!raw || typeof raw !== 'object')
|
|
31
|
+
return null;
|
|
32
|
+
const r = raw;
|
|
33
|
+
if (typeof r.name !== 'string' || r.name.length === 0)
|
|
34
|
+
return null;
|
|
35
|
+
if (typeof r.endpoint !== 'string' || r.endpoint.length === 0)
|
|
36
|
+
return null;
|
|
37
|
+
const out = {
|
|
38
|
+
name: r.name,
|
|
39
|
+
endpoint: r.endpoint,
|
|
40
|
+
};
|
|
41
|
+
if (Array.isArray(r.aliases)) {
|
|
42
|
+
out.aliases = r.aliases.filter((a) => typeof a === 'string');
|
|
43
|
+
}
|
|
44
|
+
if (r.auth && typeof r.auth === 'object') {
|
|
45
|
+
const auth = r.auth;
|
|
46
|
+
if (auth.type === 'none' || auth.type === 'apikey' || auth.type === 'bearer') {
|
|
47
|
+
out.auth = {
|
|
48
|
+
type: auth.type,
|
|
49
|
+
token: typeof auth.token === 'string' ? auth.token : undefined,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (typeof r.enabled === 'boolean')
|
|
54
|
+
out.enabled = r.enabled;
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Fetch and parse `<baseUrl>/.well-known/acp`. Trailing slashes are
|
|
59
|
+
* trimmed. Returns the discovery result on success; throws on network
|
|
60
|
+
* error, non-2xx status, or invalid JSON. Individual malformed agent
|
|
61
|
+
* entries are skipped silently with a warn log.
|
|
62
|
+
*/
|
|
63
|
+
export async function discoverAgents(baseUrl) {
|
|
64
|
+
const cleaned = baseUrl.replace(/\/+$/, '');
|
|
65
|
+
const url = `${cleaned}/.well-known/acp`;
|
|
66
|
+
log.info({ url }, 'Discovering ACP agents');
|
|
67
|
+
const res = await fetch(url, {
|
|
68
|
+
headers: { Accept: 'application/json' },
|
|
69
|
+
signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS),
|
|
70
|
+
});
|
|
71
|
+
if (!res.ok) {
|
|
72
|
+
throw new Error(`Discovery failed: ${res.status} ${res.statusText}`);
|
|
73
|
+
}
|
|
74
|
+
const body = (await res.json());
|
|
75
|
+
if (!body || !Array.isArray(body.agents)) {
|
|
76
|
+
throw new Error('Invalid discovery doc: missing `agents` array');
|
|
77
|
+
}
|
|
78
|
+
const agents = [];
|
|
79
|
+
for (const raw of body.agents) {
|
|
80
|
+
const entry = validateEntry(raw);
|
|
81
|
+
if (entry) {
|
|
82
|
+
agents.push(entry);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
log.warn({ raw }, 'Skipping malformed agent entry');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
log.info({ baseUrl: cleaned, count: agents.length }, 'Discovery complete');
|
|
89
|
+
return { baseUrl: cleaned, agents };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Discover from multiple base URLs in parallel. Failures on individual
|
|
93
|
+
* URLs are logged but don't fail the batch — partial results are
|
|
94
|
+
* returned. Useful for `discoveryUrls` config or REST API fan-out.
|
|
95
|
+
*/
|
|
96
|
+
export async function discoverMany(baseUrls) {
|
|
97
|
+
const results = await Promise.allSettled(baseUrls.map((u) => discoverAgents(u)));
|
|
98
|
+
const out = [];
|
|
99
|
+
results.forEach((r, i) => {
|
|
100
|
+
if (r.status === 'fulfilled') {
|
|
101
|
+
out.push(r.value);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
log.warn({ baseUrl: baseUrls[i], error: String(r.reason) }, 'Discovery failed');
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP Agent Manifest — describes agent capabilities.
|
|
3
|
+
* Fetched from GET /agent/card per the ACP spec.
|
|
4
|
+
*/
|
|
5
|
+
export interface ACPManifest {
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
version?: string;
|
|
9
|
+
capabilities: ACPCapability[];
|
|
10
|
+
}
|
|
11
|
+
export interface ACPCapability {
|
|
12
|
+
name: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
inputSchema?: Record<string, unknown>;
|
|
15
|
+
outputSchema?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/** ACP Task creation request (POST /tasks) */
|
|
18
|
+
export interface ACPCreateTaskRequest {
|
|
19
|
+
input: {
|
|
20
|
+
prompt: string;
|
|
21
|
+
history?: Array<{
|
|
22
|
+
role: string;
|
|
23
|
+
content: string;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
mode: 'sync' | 'stream';
|
|
27
|
+
/**
|
|
28
|
+
* Stable session identifier — passed through so the remote agent can
|
|
29
|
+
* thread context across multi-turn conversations. Not part of the
|
|
30
|
+
* upstream ACP spec yet; the remote may ignore it (the field is in
|
|
31
|
+
* the request body, not headers, so unknown-field-tolerant parsers
|
|
32
|
+
* pass it through fine).
|
|
33
|
+
*/
|
|
34
|
+
session_id?: string;
|
|
35
|
+
}
|
|
36
|
+
/** ACP Task response */
|
|
37
|
+
export interface ACPTaskResponse {
|
|
38
|
+
id: string;
|
|
39
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
40
|
+
output?: {
|
|
41
|
+
content: string;
|
|
42
|
+
};
|
|
43
|
+
error?: {
|
|
44
|
+
code: string;
|
|
45
|
+
message: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Configuration for a remote ACP agent.
|
|
50
|
+
* Stored in ~/.im-hub/config.json under the "acpAgents" key.
|
|
51
|
+
*/
|
|
52
|
+
export interface ACPAgentConfig {
|
|
53
|
+
name: string;
|
|
54
|
+
aliases?: string[];
|
|
55
|
+
endpoint: string;
|
|
56
|
+
auth?: {
|
|
57
|
+
type: 'none' | 'apikey' | 'bearer';
|
|
58
|
+
token?: string;
|
|
59
|
+
};
|
|
60
|
+
enabled?: boolean;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/types.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,aAAa,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACnD,CAAA;IACD,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IACtD,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;QAClC,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/agents/acp/types.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,yCAAyC;AACzC,wEAAwE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.test.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/claude-code/adapter.test.ts"],"names":[],"mappings":""}
|