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 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/adapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AgentBase, type SpawnPlan } from '../../../core/agent-base.js';
|
|
2
|
+
import type { AgentSendOpts } from '../../../core/types.js';
|
|
3
|
+
export declare class CodexAdapter extends AgentBase {
|
|
4
|
+
readonly name = "codex";
|
|
5
|
+
readonly aliases: string[];
|
|
6
|
+
/**
|
|
7
|
+
* Override to bypass the codex wrapper's broken stdio handling — see
|
|
8
|
+
* resolveCodexBinary() above. Falls back to "codex" (PATH lookup) if
|
|
9
|
+
* native binary resolution fails.
|
|
10
|
+
*
|
|
11
|
+
* commandName drives `isAvailable()` (--version probe) AND the spawn binary,
|
|
12
|
+
* so resolving here gets us both at once.
|
|
13
|
+
*/
|
|
14
|
+
protected get commandName(): string;
|
|
15
|
+
protected buildArgs(prompt: string, opts: AgentSendOpts): string[];
|
|
16
|
+
/**
|
|
17
|
+
* codex reads its project-level AGENTS.md from spawn cwd, so for IM calls we
|
|
18
|
+
* pin to ~/.im-hub-workspaces/codex/. Non-IM calls (web/scheduler) keep
|
|
19
|
+
* cwd undefined and inherit im-hub's cwd. See agent-cwd.ts for rationale.
|
|
20
|
+
*/
|
|
21
|
+
protected prepareCommand(prompt: string, opts: AgentSendOpts): Promise<SpawnPlan>;
|
|
22
|
+
protected extractText(event: unknown): string;
|
|
23
|
+
/**
|
|
24
|
+
* Side-channel hook: capture session id (`thread.started`) and usage
|
|
25
|
+
* (`turn.completed.usage`) without disrupting the text stream.
|
|
26
|
+
*/
|
|
27
|
+
protected inspectEvent(event: unknown, opts: AgentSendOpts): void;
|
|
28
|
+
protected handleError(_code: number, _stderr: string, errorMessage: string): string | null;
|
|
29
|
+
}
|
|
30
|
+
export declare const codexAdapter: CodexAdapter;
|
|
31
|
+
export declare const _testInternals: {
|
|
32
|
+
buildArgs(adapter: CodexAdapter, prompt: string, opts?: AgentSendOpts): string[];
|
|
33
|
+
prepareCommand(adapter: CodexAdapter, prompt: string, opts: AgentSendOpts): Promise<SpawnPlan>;
|
|
34
|
+
extractText(adapter: CodexAdapter, event: unknown): string;
|
|
35
|
+
inspectEvent(adapter: CodexAdapter, event: unknown, opts: AgentSendOpts): void;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/index.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AA4H3D,qBAAa,YAAa,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,OAAO,WAA+B;IAE/C;;;;;;;OAOG;IACH,SAAS,KAAK,WAAW,IAAI,MAAM,CAElC;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAelE;;;;OAIG;cACa,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAOvF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAW7C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAqBjE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAS3F;AAED,eAAO,MAAM,YAAY,cAAqB,CAAA;AAI9C,eAAO,MAAM,cAAc;uBACN,YAAY,UAAU,MAAM,SAAQ,aAAa,GAAQ,MAAM,EAAE;4BAItD,YAAY,UAAU,MAAM,QAAQ,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;yBAI/E,YAAY,SAAS,OAAO,GAAG,MAAM;0BAIpC,YAAY,SAAS,OAAO,QAAQ,aAAa,GAAG,IAAI;CAI/E,CAAA"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
// OpenAI Codex CLI agent adapter — `codex exec --json` driver.
|
|
2
|
+
//
|
|
3
|
+
// Multi-turn continuity (mirrors the opencode pattern):
|
|
4
|
+
//
|
|
5
|
+
// First turn — no opts.agentSessionId yet. Spawn `codex exec --json …`.
|
|
6
|
+
// The adapter watches for `thread.started.thread_id` and
|
|
7
|
+
// reports it back via opts.onAgentSessionId so cli persists
|
|
8
|
+
// it on the im-hub Session row (codexSessionId).
|
|
9
|
+
// Later turns — opts.agentSessionId is the captured UUID. We spawn
|
|
10
|
+
// `codex exec resume <id> --json …` so codex continues from
|
|
11
|
+
// its own ~/.codex/sessions store. router.callAgentWithHistory
|
|
12
|
+
// honours agentSessionResume by zeroing effectiveHistory so
|
|
13
|
+
// we don't double-feed prior turns.
|
|
14
|
+
//
|
|
15
|
+
// Cwd: pinned to ~/.im-hub-workspaces/codex/ for IM calls (per agent-cwd.ts);
|
|
16
|
+
// codex reads its project AGENTS.md from cwd just like opencode.
|
|
17
|
+
//
|
|
18
|
+
// Usage roll-up: `turn.completed.usage` carries token counts (no cost). We
|
|
19
|
+
// forward input/output tokens via opts.onUsage so /stats reflects real codex
|
|
20
|
+
// usage. costUsd stays undefined until codex surfaces pricing.
|
|
21
|
+
//
|
|
22
|
+
// Approval / sandbox model (current):
|
|
23
|
+
// - `codex exec` has NO external approval hook (no --ask-for-approval
|
|
24
|
+
// equivalent). Confirmed against codex CLI 0.x — only `-s` sandbox
|
|
25
|
+
// mode + `--dangerously-bypass-approvals-and-sandbox` exist. So we
|
|
26
|
+
// CANNOT route per-tool approvals through approval-bus the way
|
|
27
|
+
// claude-code (MCP sidecar) and opencode (SSE bus) do.
|
|
28
|
+
// - Best we can do today: pin sandbox to `workspace-write` by default
|
|
29
|
+
// (cwd-scoped writes only, NO auto-approval — codex's internal policy
|
|
30
|
+
// decides each call), and flip to `read-only` when session.planMode
|
|
31
|
+
// is on. This gives us a "safety floor" rather than a true gate.
|
|
32
|
+
// - True per-tool approval would require running codex via `codex
|
|
33
|
+
// mcp-server` (stdio MCP) and putting our own approval-bus shim
|
|
34
|
+
// between the MCP client and codex. Tracked as a future iteration.
|
|
35
|
+
import { execSync } from 'child_process';
|
|
36
|
+
import { existsSync, realpathSync } from 'fs';
|
|
37
|
+
import { dirname, join } from 'path';
|
|
38
|
+
import { AgentBase } from '../../../core/agent-base.js';
|
|
39
|
+
import { resolveAgentCwd } from '../../../core/agent-cwd.js';
|
|
40
|
+
import { logger as rootLogger } from '../../../core/logger.js';
|
|
41
|
+
const log = rootLogger.child({ component: 'agent.codex' });
|
|
42
|
+
/**
|
|
43
|
+
* Codex's `bin/codex.js` wrapper (npm install -g @openai/codex) drops all
|
|
44
|
+
* stdout when the parent spawns it with `stdio: ['ignore', 'pipe', 'pipe']`
|
|
45
|
+
* — the wrapper relays its own stdio to the native binary via
|
|
46
|
+
* `stdio: 'inherit'`, and that handoff fails to forward data through a
|
|
47
|
+
* piped fd back to the grandparent. The native binary works fine when
|
|
48
|
+
* called directly.
|
|
49
|
+
*
|
|
50
|
+
* Resolution: at startup, follow `which codex` → real path of wrapper →
|
|
51
|
+
* `<codex-pkg>/node_modules/@openai/codex-<triple>/vendor/<triple>/codex/codex`.
|
|
52
|
+
* Cache the result. If anything in the chain is missing (different install
|
|
53
|
+
* layout, unsupported triple), fall back to the wrapper name and hope for
|
|
54
|
+
* the best — at least the user sees a failure rather than silent 0-byte.
|
|
55
|
+
*
|
|
56
|
+
* Probed once per process; the cache lives module-level.
|
|
57
|
+
*/
|
|
58
|
+
let cachedBinary = null;
|
|
59
|
+
let probed = false;
|
|
60
|
+
function resolveCodexBinary() {
|
|
61
|
+
if (probed)
|
|
62
|
+
return cachedBinary ?? 'codex';
|
|
63
|
+
probed = true;
|
|
64
|
+
try {
|
|
65
|
+
const wrapper = execSync('command -v codex', { encoding: 'utf8' }).trim();
|
|
66
|
+
if (!wrapper)
|
|
67
|
+
return 'codex';
|
|
68
|
+
const wrapperReal = realpathSync(wrapper);
|
|
69
|
+
// wrapperReal e.g. /usr/local/lib/node_modules/@openai/codex/bin/codex.js
|
|
70
|
+
const codexPkgRoot = dirname(dirname(wrapperReal));
|
|
71
|
+
const triple = pickTriple(process.platform, process.arch);
|
|
72
|
+
if (!triple) {
|
|
73
|
+
log.warn({ platform: process.platform, arch: process.arch }, 'codex: unsupported platform, falling back to wrapper (stdio pipe bug applies)');
|
|
74
|
+
return 'codex';
|
|
75
|
+
}
|
|
76
|
+
const platformPkg = pickPlatformPackage(process.platform, process.arch);
|
|
77
|
+
if (!platformPkg)
|
|
78
|
+
return 'codex';
|
|
79
|
+
const candidates = [
|
|
80
|
+
join(codexPkgRoot, 'node_modules', platformPkg, 'vendor', triple, 'codex', 'codex'),
|
|
81
|
+
join(codexPkgRoot, 'vendor', triple, 'codex', 'codex'),
|
|
82
|
+
];
|
|
83
|
+
for (const cand of candidates) {
|
|
84
|
+
if (existsSync(cand)) {
|
|
85
|
+
cachedBinary = cand;
|
|
86
|
+
log.info({ binary: cand }, 'codex: resolved native binary, bypassing wrapper');
|
|
87
|
+
return cand;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
log.warn({ tried: candidates }, 'codex: native binary not found, using wrapper (may break in IM)');
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
log.warn({ err: String(err) }, 'codex: binary resolution failed, using wrapper');
|
|
94
|
+
}
|
|
95
|
+
return 'codex';
|
|
96
|
+
}
|
|
97
|
+
function pickTriple(platform, arch) {
|
|
98
|
+
if (platform === 'linux') {
|
|
99
|
+
if (arch === 'x64')
|
|
100
|
+
return 'x86_64-unknown-linux-musl';
|
|
101
|
+
if (arch === 'arm64')
|
|
102
|
+
return 'aarch64-unknown-linux-musl';
|
|
103
|
+
}
|
|
104
|
+
if (platform === 'darwin') {
|
|
105
|
+
if (arch === 'x64')
|
|
106
|
+
return 'x86_64-apple-darwin';
|
|
107
|
+
if (arch === 'arm64')
|
|
108
|
+
return 'aarch64-apple-darwin';
|
|
109
|
+
}
|
|
110
|
+
if (platform === 'win32') {
|
|
111
|
+
if (arch === 'x64')
|
|
112
|
+
return 'x86_64-pc-windows-msvc';
|
|
113
|
+
if (arch === 'arm64')
|
|
114
|
+
return 'aarch64-pc-windows-msvc';
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
function pickPlatformPackage(platform, arch) {
|
|
119
|
+
const archKey = arch === 'arm64' ? 'arm64' : arch === 'x64' ? 'x64' : null;
|
|
120
|
+
if (!archKey)
|
|
121
|
+
return null;
|
|
122
|
+
if (platform === 'linux')
|
|
123
|
+
return `@openai/codex-linux-${archKey}`;
|
|
124
|
+
if (platform === 'darwin')
|
|
125
|
+
return `@openai/codex-darwin-${archKey}`;
|
|
126
|
+
if (platform === 'win32')
|
|
127
|
+
return `@openai/codex-win32-${archKey}`;
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Common flags every spawn carries. Sandbox mode is intentionally absent
|
|
132
|
+
* here — it's added per-spawn by buildArgs based on opts.planMode so plan
|
|
133
|
+
* runs go read-only and normal runs land at workspace-write.
|
|
134
|
+
*
|
|
135
|
+
* Why not `--full-auto`? --full-auto = `-s workspace-write` + auto-approval
|
|
136
|
+
* of every internal prompt. That's stronger than we want for an IM-driven
|
|
137
|
+
* agent — codex's own policy engine can still ask the user "do this risky
|
|
138
|
+
* thing?" and we'd rather see those prompts surface (codex emits them as
|
|
139
|
+
* `turn.message` events on the JSON stream) than have them silently
|
|
140
|
+
* answered yes. workspace-write WITHOUT --full-auto preserves codex's
|
|
141
|
+
* internal decisioning while keeping the OS-level write fence.
|
|
142
|
+
*/
|
|
143
|
+
const BASE_FLAGS = ['--json', '--skip-git-repo-check'];
|
|
144
|
+
export class CodexAdapter extends AgentBase {
|
|
145
|
+
name = 'codex';
|
|
146
|
+
aliases = ['cx', 'openai', 'codexcli'];
|
|
147
|
+
/**
|
|
148
|
+
* Override to bypass the codex wrapper's broken stdio handling — see
|
|
149
|
+
* resolveCodexBinary() above. Falls back to "codex" (PATH lookup) if
|
|
150
|
+
* native binary resolution fails.
|
|
151
|
+
*
|
|
152
|
+
* commandName drives `isAvailable()` (--version probe) AND the spawn binary,
|
|
153
|
+
* so resolving here gets us both at once.
|
|
154
|
+
*/
|
|
155
|
+
get commandName() {
|
|
156
|
+
return resolveCodexBinary();
|
|
157
|
+
}
|
|
158
|
+
buildArgs(prompt, opts) {
|
|
159
|
+
// session.planMode → -s read-only sandbox. Best-available approximation
|
|
160
|
+
// of "agent only plans, doesn't act"; codex still emits write attempts
|
|
161
|
+
// as events but the OS layer rejects them. See file header for the
|
|
162
|
+
// approval-model discussion.
|
|
163
|
+
const sandboxMode = opts.planMode ? 'read-only' : 'workspace-write';
|
|
164
|
+
const sandboxFlags = ['-s', sandboxMode];
|
|
165
|
+
if (opts.agentSessionId && opts.agentSessionResume) {
|
|
166
|
+
// `codex exec resume <UUID> [OPTIONS] [PROMPT]` — the SESSION_ID
|
|
167
|
+
// positional has to come immediately after `resume`, before flags.
|
|
168
|
+
return ['exec', 'resume', opts.agentSessionId, ...BASE_FLAGS, ...sandboxFlags, prompt];
|
|
169
|
+
}
|
|
170
|
+
return ['exec', ...BASE_FLAGS, ...sandboxFlags, prompt];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* codex reads its project-level AGENTS.md from spawn cwd, so for IM calls we
|
|
174
|
+
* pin to ~/.im-hub-workspaces/codex/. Non-IM calls (web/scheduler) keep
|
|
175
|
+
* cwd undefined and inherit im-hub's cwd. See agent-cwd.ts for rationale.
|
|
176
|
+
*/
|
|
177
|
+
async prepareCommand(prompt, opts) {
|
|
178
|
+
return {
|
|
179
|
+
args: this.buildArgs(prompt, opts),
|
|
180
|
+
cwd: resolveAgentCwd(this.name, opts),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
extractText(event) {
|
|
184
|
+
const e = event;
|
|
185
|
+
// codex 0.128 emits assistant text inside item.completed where item.type
|
|
186
|
+
// is "agent_message". The pre-v1 adapter looked for {type:"message"},
|
|
187
|
+
// which never fires, so all output was being dropped on the floor.
|
|
188
|
+
if (e.type === 'item.completed' && e.item?.type === 'agent_message' && e.item.text) {
|
|
189
|
+
return e.item.text;
|
|
190
|
+
}
|
|
191
|
+
return '';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Side-channel hook: capture session id (`thread.started`) and usage
|
|
195
|
+
* (`turn.completed.usage`) without disrupting the text stream.
|
|
196
|
+
*/
|
|
197
|
+
inspectEvent(event, opts) {
|
|
198
|
+
const e = event;
|
|
199
|
+
if (e.type === 'thread.started' && e.thread_id && opts.onAgentSessionId) {
|
|
200
|
+
try {
|
|
201
|
+
opts.onAgentSessionId(e.thread_id);
|
|
202
|
+
}
|
|
203
|
+
catch { /* userland callback safety */ }
|
|
204
|
+
}
|
|
205
|
+
if (e.type === 'turn.completed' && e.usage && opts.onUsage) {
|
|
206
|
+
const u = e.usage;
|
|
207
|
+
const delta = {};
|
|
208
|
+
if (typeof u.input_tokens === 'number' && Number.isFinite(u.input_tokens)) {
|
|
209
|
+
delta.tokensInput = u.input_tokens;
|
|
210
|
+
}
|
|
211
|
+
if (typeof u.output_tokens === 'number' && Number.isFinite(u.output_tokens)) {
|
|
212
|
+
delta.tokensOutput = u.output_tokens;
|
|
213
|
+
}
|
|
214
|
+
// codex doesn't surface cost; leave delta.costUsd undefined.
|
|
215
|
+
if (delta.tokensInput !== undefined || delta.tokensOutput !== undefined) {
|
|
216
|
+
try {
|
|
217
|
+
opts.onUsage(delta);
|
|
218
|
+
}
|
|
219
|
+
catch { /* userland callback safety */ }
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
handleError(_code, _stderr, errorMessage) {
|
|
224
|
+
if (errorMessage.includes('expired') || errorMessage.includes('过期')) {
|
|
225
|
+
return '❌ Codex 账号已过期\n\n请运行 `codex login` 重新登录。';
|
|
226
|
+
}
|
|
227
|
+
if (errorMessage.includes('not found') || errorMessage.includes('不存在')) {
|
|
228
|
+
return '❌ Codex 用户不存在,请重新登录\n\n请运行 `codex login` 重新登录。';
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
export const codexAdapter = new CodexAdapter();
|
|
234
|
+
// Test-only escape hatch — drives the protected hooks without going through
|
|
235
|
+
// the spawnStream pipeline.
|
|
236
|
+
export const _testInternals = {
|
|
237
|
+
buildArgs(adapter, prompt, opts = {}) {
|
|
238
|
+
// @ts-expect-error — protected; tests reach in deliberately
|
|
239
|
+
return adapter.buildArgs(prompt, opts);
|
|
240
|
+
},
|
|
241
|
+
async prepareCommand(adapter, prompt, opts) {
|
|
242
|
+
// @ts-expect-error
|
|
243
|
+
return adapter.prepareCommand(prompt, opts);
|
|
244
|
+
},
|
|
245
|
+
extractText(adapter, event) {
|
|
246
|
+
// @ts-expect-error
|
|
247
|
+
return adapter.extractText(event);
|
|
248
|
+
},
|
|
249
|
+
inspectEvent(adapter, event, opts) {
|
|
250
|
+
// @ts-expect-error
|
|
251
|
+
adapter.inspectEvent(event, opts);
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/codex/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AgentBase } from '../../../core/agent-base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Copilot adapter built on AgentBase. Differs from the other CLI agents
|
|
4
|
+
* in two ways:
|
|
5
|
+
* 1. The binary path is discovered async (gh / standalone / VSCode)
|
|
6
|
+
* 2. The CLI is not JSONL — its stdout is plain text
|
|
7
|
+
*
|
|
8
|
+
* AgentBase already handles plain text via the JSON.parse fallback (yields
|
|
9
|
+
* the line verbatim). We override commandName/buildArgs/extractText after
|
|
10
|
+
* resolving the install, and use isAvailable() to short-circuit when no
|
|
11
|
+
* install was found.
|
|
12
|
+
*/
|
|
13
|
+
declare class CopilotAdapter extends AgentBase {
|
|
14
|
+
readonly name = "copilot";
|
|
15
|
+
readonly aliases: string[];
|
|
16
|
+
/** Resolved install, populated by isAvailable() and reused by spawn calls. */
|
|
17
|
+
private resolvedInstall;
|
|
18
|
+
protected get commandName(): string;
|
|
19
|
+
protected buildArgs(prompt: string): string[];
|
|
20
|
+
protected extractText(event: unknown): string;
|
|
21
|
+
isAvailable(): Promise<boolean>;
|
|
22
|
+
healthCheck(): Promise<{
|
|
23
|
+
ok: boolean;
|
|
24
|
+
latencyMs?: number;
|
|
25
|
+
}>;
|
|
26
|
+
protected handleError(_code: number, stderr: string, _errorMessage: string): string | null;
|
|
27
|
+
protected notAvailableMessage(): string;
|
|
28
|
+
sendPrompt(sessionId: string, prompt: string, history?: import('../../../core/types.js').ChatMessage[], _opts?: {
|
|
29
|
+
model?: string;
|
|
30
|
+
variant?: string;
|
|
31
|
+
}): AsyncGenerator<string>;
|
|
32
|
+
}
|
|
33
|
+
export declare const copilotAdapter: CopilotAdapter;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/copilot/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAgGvD;;;;;;;;;;GAUG;AACH,cAAM,cAAe,SAAQ,SAAS;IACpC,QAAQ,CAAC,IAAI,aAAY;IACzB,QAAQ,CAAC,OAAO,WAAyC;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,eAAe,CAA8B;IAErD,SAAS,KAAK,WAAW,IAAI,MAAM,CAQlC;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAS7C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAYvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,WAAW,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAY1F,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAchC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,wBAAwB,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC,MAAM,CAAC;CAQrL;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// GitHub Copilot CLI agent adapter
|
|
2
|
+
// Supports multiple installation methods:
|
|
3
|
+
// 1. GitHub CLI extension: `gh copilot` (recommended)
|
|
4
|
+
// 2. Standalone npm: `copilot` command
|
|
5
|
+
// 3. VS Code extension: bundled copilot CLI
|
|
6
|
+
// 4. Homebrew (macOS): `brew install copilot-cli`
|
|
7
|
+
// 5. WinGet (Windows): `winget install GitHub.Copilot`
|
|
8
|
+
import { access, constants, readdir } from 'fs/promises';
|
|
9
|
+
import { homedir } from 'os';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { AgentBase } from '../../../core/agent-base.js';
|
|
12
|
+
import { crossSpawn, isWindows, isMac } from '../../../utils/cross-platform.js';
|
|
13
|
+
import { logger as rootLogger } from '../../../core/logger.js';
|
|
14
|
+
/** Check if a command exists and can be executed */
|
|
15
|
+
async function commandExists(cmd) {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const proc = crossSpawn(cmd, ['--version'], { stdio: 'ignore' });
|
|
18
|
+
proc.on('error', () => resolve(false));
|
|
19
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async function checkGHCopilot() {
|
|
23
|
+
if (!(await commandExists('gh')))
|
|
24
|
+
return null;
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
const proc = crossSpawn('gh', ['copilot', '--version'], { stdio: 'ignore' });
|
|
27
|
+
proc.on('error', () => resolve(null));
|
|
28
|
+
proc.on('close', (code) => {
|
|
29
|
+
if (code === 0) {
|
|
30
|
+
resolve({ type: 'gh-ext', command: 'gh', argsPrefix: ['copilot'] });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
resolve(null);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function checkStandaloneCopilot() {
|
|
39
|
+
if (await commandExists('copilot')) {
|
|
40
|
+
return { type: 'standalone', command: 'copilot', argsPrefix: [] };
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
async function findVSCodeCopilot() {
|
|
45
|
+
if (isMac) {
|
|
46
|
+
const macPath = join(homedir(), 'Library/Application Support/Code/User/globalStorage/github.copilot-chat/copilotCli/copilot');
|
|
47
|
+
try {
|
|
48
|
+
await access(macPath, constants.X_OK);
|
|
49
|
+
return { type: 'vscode', command: macPath, argsPrefix: [] };
|
|
50
|
+
}
|
|
51
|
+
catch { /* fall through */ }
|
|
52
|
+
}
|
|
53
|
+
if (isWindows) {
|
|
54
|
+
const extensionsDir = join(homedir(), '.vscode', 'extensions');
|
|
55
|
+
try {
|
|
56
|
+
const entries = await readdir(extensionsDir, { withFileTypes: true });
|
|
57
|
+
const copilotDir = entries.find((entry) => entry.isDirectory() && entry.name.startsWith('github.copilot-chat-'));
|
|
58
|
+
if (copilotDir) {
|
|
59
|
+
const copilotBin = join(extensionsDir, copilotDir.name, 'copilotCli', 'copilot.exe');
|
|
60
|
+
try {
|
|
61
|
+
await access(copilotBin, constants.X_OK);
|
|
62
|
+
return { type: 'vscode', command: copilotBin, argsPrefix: [] };
|
|
63
|
+
}
|
|
64
|
+
catch { /* fall through */ }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch { /* ignore readdir errors */ }
|
|
68
|
+
}
|
|
69
|
+
const linuxPath = join(homedir(), '.vscode/extensions/github.copilot-chat/copilotCli/copilot');
|
|
70
|
+
try {
|
|
71
|
+
await access(linuxPath, constants.X_OK);
|
|
72
|
+
return { type: 'vscode', command: linuxPath, argsPrefix: [] };
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** TTL'd installation cache so a fresh install is picked up within 2min. */
|
|
79
|
+
const INSTALL_CACHE_TTL = 2 * 60 * 1000;
|
|
80
|
+
let cachedInstall = null;
|
|
81
|
+
let cachedAt = 0;
|
|
82
|
+
async function detectCopilotInstall() {
|
|
83
|
+
if (cachedInstall && Date.now() - cachedAt < INSTALL_CACHE_TTL)
|
|
84
|
+
return cachedInstall;
|
|
85
|
+
cachedInstall =
|
|
86
|
+
(await checkGHCopilot()) ||
|
|
87
|
+
(await checkStandaloneCopilot()) ||
|
|
88
|
+
(await findVSCodeCopilot());
|
|
89
|
+
cachedAt = Date.now();
|
|
90
|
+
return cachedInstall;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Copilot adapter built on AgentBase. Differs from the other CLI agents
|
|
94
|
+
* in two ways:
|
|
95
|
+
* 1. The binary path is discovered async (gh / standalone / VSCode)
|
|
96
|
+
* 2. The CLI is not JSONL — its stdout is plain text
|
|
97
|
+
*
|
|
98
|
+
* AgentBase already handles plain text via the JSON.parse fallback (yields
|
|
99
|
+
* the line verbatim). We override commandName/buildArgs/extractText after
|
|
100
|
+
* resolving the install, and use isAvailable() to short-circuit when no
|
|
101
|
+
* install was found.
|
|
102
|
+
*/
|
|
103
|
+
class CopilotAdapter extends AgentBase {
|
|
104
|
+
name = 'copilot';
|
|
105
|
+
aliases = ['gh', 'github', 'copilotcli', 'ghcp'];
|
|
106
|
+
/** Resolved install, populated by isAvailable() and reused by spawn calls. */
|
|
107
|
+
resolvedInstall = null;
|
|
108
|
+
get commandName() {
|
|
109
|
+
if (!this.resolvedInstall) {
|
|
110
|
+
// Should never happen — sendPrompt awaits isAvailable() first. But if
|
|
111
|
+
// someone calls spawnAndCollect directly we degrade by using a
|
|
112
|
+
// sentinel that the spawn will fail on, surfaced via handleError.
|
|
113
|
+
return 'copilot';
|
|
114
|
+
}
|
|
115
|
+
return this.resolvedInstall.command;
|
|
116
|
+
}
|
|
117
|
+
buildArgs(prompt) {
|
|
118
|
+
const install = this.resolvedInstall;
|
|
119
|
+
if (!install)
|
|
120
|
+
return ['-p', prompt, '-s'];
|
|
121
|
+
if (install.type === 'gh-ext') {
|
|
122
|
+
return [...install.argsPrefix, 'suggest', prompt, '--prompt-only'];
|
|
123
|
+
}
|
|
124
|
+
return [...install.argsPrefix, '-p', prompt, '-s'];
|
|
125
|
+
}
|
|
126
|
+
extractText(event) {
|
|
127
|
+
// Copilot CLI is not JSONL; AgentBase's fallback already yields the
|
|
128
|
+
// raw line. extractText is only consulted on successfully-parsed JSON,
|
|
129
|
+
// which Copilot never emits.
|
|
130
|
+
if (event && typeof event === 'object') {
|
|
131
|
+
const e = event;
|
|
132
|
+
if (typeof e.content === 'string')
|
|
133
|
+
return e.content;
|
|
134
|
+
if (typeof e.text === 'string')
|
|
135
|
+
return e.text;
|
|
136
|
+
}
|
|
137
|
+
return '';
|
|
138
|
+
}
|
|
139
|
+
async isAvailable() {
|
|
140
|
+
this.resolvedInstall = await detectCopilotInstall();
|
|
141
|
+
return this.resolvedInstall !== null;
|
|
142
|
+
}
|
|
143
|
+
async healthCheck() {
|
|
144
|
+
const start = Date.now();
|
|
145
|
+
const ok = await this.isAvailable();
|
|
146
|
+
return { ok, latencyMs: Date.now() - start };
|
|
147
|
+
}
|
|
148
|
+
handleError(_code, stderr, _errorMessage) {
|
|
149
|
+
if (stderr.includes('402') || stderr.includes('no quota') || stderr.includes('insufficient')) {
|
|
150
|
+
return `❌ Copilot 额度不足,请检查您的 GitHub Copilot 订阅。
|
|
151
|
+
|
|
152
|
+
💡 可以使用以下命令切换到其他 Agent:
|
|
153
|
+
• /claude - 切换到 Claude Code
|
|
154
|
+
• /codex - 切换到 OpenAI Codex
|
|
155
|
+
• /agents - 查看所有可用 Agent`;
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
notAvailableMessage() {
|
|
160
|
+
return `❌ Copilot CLI 未找到。
|
|
161
|
+
|
|
162
|
+
安装方式 (选择其一):
|
|
163
|
+
npm i -g @github/copilot
|
|
164
|
+
gh extension install github/gh-copilot
|
|
165
|
+
brew install copilot-cli (macOS)
|
|
166
|
+
winget install GitHub.Copilot (Windows)
|
|
167
|
+
|
|
168
|
+
或安装 VS Code Copilot Chat 扩展。`;
|
|
169
|
+
}
|
|
170
|
+
// Override sendPrompt to short-circuit when not installed — gives a
|
|
171
|
+
// friendlier message than spawnStream would after spawn failure.
|
|
172
|
+
async *sendPrompt(sessionId, prompt, history, _opts) {
|
|
173
|
+
if (!(await this.isAvailable())) {
|
|
174
|
+
yield this.notAvailableMessage();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
rootLogger.info({ component: `agent.${this.name}`, agent: this.name, install: this.resolvedInstall?.type }, '[copilot] sendPrompt');
|
|
178
|
+
yield* super.sendPrompt(sessionId, prompt, history, _opts);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
export const copilotAdapter = new CopilotAdapter();
|
|
182
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/copilot/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.test.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/opencode/adapter.test.ts"],"names":[],"mappings":""}
|