botmux 2.47.0 → 2.47.2
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.en.md +10 -5
- package/README.md +10 -5
- package/dist/adapters/adopt-route.d.ts +63 -0
- package/dist/adapters/adopt-route.d.ts.map +1 -0
- package/dist/adapters/adopt-route.js +195 -0
- package/dist/adapters/adopt-route.js.map +1 -0
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +11 -0
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +11 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +17 -1
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +36 -9
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/coco.d.ts.map +1 -1
- package/dist/adapters/cli/coco.js +26 -1
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts +4 -0
- package/dist/adapters/cli/codex-app.d.ts.map +1 -0
- package/dist/adapters/cli/codex-app.js +72 -0
- package/dist/adapters/cli/codex-app.js.map +1 -0
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +34 -17
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/cursor.d.ts.map +1 -1
- package/dist/adapters/cli/cursor.js +58 -12
- package/dist/adapters/cli/cursor.js.map +1 -1
- package/dist/adapters/cli/gemini.d.ts.map +1 -1
- package/dist/adapters/cli/gemini.js +5 -1
- package/dist/adapters/cli/gemini.js.map +1 -1
- package/dist/adapters/cli/hermes.d.ts +4 -0
- package/dist/adapters/cli/hermes.d.ts.map +1 -0
- package/dist/adapters/cli/hermes.js +40 -0
- package/dist/adapters/cli/hermes.js.map +1 -0
- package/dist/adapters/cli/mira.d.ts +4 -0
- package/dist/adapters/cli/mira.d.ts.map +1 -0
- package/dist/adapters/cli/mira.js +67 -0
- package/dist/adapters/cli/mira.js.map +1 -0
- package/dist/adapters/cli/mtr.d.ts +5 -0
- package/dist/adapters/cli/mtr.d.ts.map +1 -0
- package/dist/adapters/cli/mtr.js +62 -0
- package/dist/adapters/cli/mtr.js.map +1 -0
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +19 -1
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +5 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +22 -2
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +1 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +2 -1
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +35 -2
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/adapters/hook-command.d.ts +18 -0
- package/dist/adapters/hook-command.d.ts.map +1 -0
- package/dist/adapters/hook-command.js +38 -0
- package/dist/adapters/hook-command.js.map +1 -0
- package/dist/adapters/hook-installer.d.ts +14 -0
- package/dist/adapters/hook-installer.d.ts.map +1 -0
- package/dist/adapters/hook-installer.js +192 -0
- package/dist/adapters/hook-installer.js.map +1 -0
- package/dist/bot-registry.d.ts +59 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +67 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/bots-list-output.d.ts +8 -0
- package/dist/cli/bots-list-output.d.ts.map +1 -1
- package/dist/cli/bots-list-output.js +9 -0
- package/dist/cli/bots-list-output.js.map +1 -1
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +603 -106
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.d.ts +3 -0
- package/dist/codex-app-runner.d.ts.map +1 -0
- package/dist/codex-app-runner.js +512 -0
- package/dist/codex-app-runner.js.map +1 -0
- package/dist/config.d.ts +11 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -4
- package/dist/config.js.map +1 -1
- package/dist/core/ask-api.d.ts +47 -0
- package/dist/core/ask-api.d.ts.map +1 -0
- package/dist/core/ask-api.js +139 -0
- package/dist/core/ask-api.js.map +1 -0
- package/dist/core/ask-args.d.ts +53 -0
- package/dist/core/ask-args.d.ts.map +1 -0
- package/dist/core/ask-args.js +122 -0
- package/dist/core/ask-args.js.map +1 -0
- package/dist/core/ask-broker.d.ts +98 -0
- package/dist/core/ask-broker.d.ts.map +1 -0
- package/dist/core/ask-broker.js +329 -0
- package/dist/core/ask-broker.js.map +1 -0
- package/dist/core/ask-hook/claude-code.d.ts +50 -0
- package/dist/core/ask-hook/claude-code.d.ts.map +1 -0
- package/dist/core/ask-hook/claude-code.js +145 -0
- package/dist/core/ask-hook/claude-code.js.map +1 -0
- package/dist/core/ask-hook/codex.d.ts +43 -0
- package/dist/core/ask-hook/codex.d.ts.map +1 -0
- package/dist/core/ask-hook/codex.js +69 -0
- package/dist/core/ask-hook/codex.js.map +1 -0
- package/dist/core/ask-hook/opencode.d.ts +41 -0
- package/dist/core/ask-hook/opencode.d.ts.map +1 -0
- package/dist/core/ask-hook/opencode.js +108 -0
- package/dist/core/ask-hook/opencode.js.map +1 -0
- package/dist/core/ask-hook/registry.d.ts +3 -0
- package/dist/core/ask-hook/registry.d.ts.map +1 -0
- package/dist/core/ask-hook/registry.js +12 -0
- package/dist/core/ask-hook/registry.js.map +1 -0
- package/dist/core/ask-hook/types.d.ts +26 -0
- package/dist/core/ask-hook/types.d.ts.map +1 -0
- package/dist/core/ask-hook/types.js +2 -0
- package/dist/core/ask-hook/types.js.map +1 -0
- package/dist/core/ask-types.d.ts +146 -0
- package/dist/core/ask-types.d.ts.map +1 -0
- package/dist/core/ask-types.js +18 -0
- package/dist/core/ask-types.js.map +1 -0
- package/dist/core/command-handler.d.ts +29 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +787 -312
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +2 -0
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +222 -2
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/role-resolver.d.ts +17 -1
- package/dist/core/role-resolver.d.ts.map +1 -1
- package/dist/core/role-resolver.js +64 -10
- package/dist/core/role-resolver.js.map +1 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +19 -5
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +37 -20
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/trigger-session.d.ts +9 -0
- package/dist/core/trigger-session.d.ts.map +1 -0
- package/dist/core/trigger-session.js +158 -0
- package/dist/core/trigger-session.js.map +1 -0
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +141 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +543 -24
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +224 -60
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +6 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +9 -1
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts +3 -0
- package/dist/dashboard/connector-api.d.ts.map +1 -0
- package/dist/dashboard/connector-api.js +351 -0
- package/dist/dashboard/connector-api.js.map +1 -0
- package/dist/dashboard/federated-group-core.d.ts +54 -0
- package/dist/dashboard/federated-group-core.d.ts.map +1 -0
- package/dist/dashboard/federated-group-core.js +165 -0
- package/dist/dashboard/federated-group-core.js.map +1 -0
- package/dist/dashboard/federation-api.d.ts +42 -0
- package/dist/dashboard/federation-api.d.ts.map +1 -0
- package/dist/dashboard/federation-api.js +408 -0
- package/dist/dashboard/federation-api.js.map +1 -0
- package/dist/dashboard/federation-spoke-api.d.ts +76 -0
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -0
- package/dist/dashboard/federation-spoke-api.js +618 -0
- package/dist/dashboard/federation-spoke-api.js.map +1 -0
- package/dist/dashboard/team-group.d.ts +18 -0
- package/dist/dashboard/team-group.d.ts.map +1 -0
- package/dist/dashboard/team-group.js +7 -0
- package/dist/dashboard/team-group.js.map +1 -0
- package/dist/dashboard/trigger-api.d.ts +13 -0
- package/dist/dashboard/trigger-api.d.ts.map +1 -0
- package/dist/dashboard/trigger-api.js +77 -0
- package/dist/dashboard/trigger-api.js.map +1 -0
- package/dist/dashboard/web/app.js +8 -0
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +205 -21
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/connectors.d.ts +2 -0
- package/dist/dashboard/web/connectors.d.ts.map +1 -0
- package/dist/dashboard/web/connectors.js +187 -0
- package/dist/dashboard/web/connectors.js.map +1 -0
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +43 -5
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +4 -0
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/team-federation.d.ts +3 -0
- package/dist/dashboard/web/team-federation.d.ts.map +1 -0
- package/dist/dashboard/web/team-federation.js +487 -0
- package/dist/dashboard/web/team-federation.js.map +1 -0
- package/dist/dashboard/web/workflows.js +3 -3
- package/dist/dashboard/web/workflows.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts +19 -0
- package/dist/dashboard/webhook-routes.d.ts.map +1 -0
- package/dist/dashboard/webhook-routes.js +321 -0
- package/dist/dashboard/webhook-routes.js.map +1 -0
- package/dist/dashboard/workflow-api.d.ts +8 -1
- package/dist/dashboard/workflow-api.d.ts.map +1 -1
- package/dist/dashboard/workflow-api.js +19 -4
- package/dist/dashboard/workflow-api.js.map +1 -1
- package/dist/dashboard-web/app.js +539 -375
- package/dist/dashboard-web/index.html +3 -1
- package/dist/dashboard-web/style.css +22 -0
- package/dist/dashboard.js +199 -2
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +104 -11
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +104 -11
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/ask-card.d.ts +55 -0
- package/dist/im/lark/ask-card.d.ts.map +1 -0
- package/dist/im/lark/ask-card.js +328 -0
- package/dist/im/lark/ask-card.js.map +1 -0
- package/dist/im/lark/card-builder.d.ts +108 -3
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +480 -50
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +241 -18
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +83 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +286 -70
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +29 -4
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/grant-command.d.ts +2 -1
- package/dist/im/lark/grant-command.d.ts.map +1 -1
- package/dist/im/lark/grant-command.js +3 -2
- package/dist/im/lark/grant-command.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts.map +1 -1
- package/dist/im/lark/identity-cache.js +3 -3
- package/dist/im/lark/identity-cache.js.map +1 -1
- package/dist/im/lark/md-card.d.ts +20 -2
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +49 -17
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +87 -31
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/workflow-card-handler.d.ts +2 -2
- package/dist/im/lark/workflow-card-handler.d.ts.map +1 -1
- package/dist/im/lark/workflow-card-handler.js +12 -1
- package/dist/im/lark/workflow-card-handler.js.map +1 -1
- package/dist/im/lark/workflow-progress-card.d.ts.map +1 -1
- package/dist/im/lark/workflow-progress-card.js +53 -0
- package/dist/im/lark/workflow-progress-card.js.map +1 -1
- package/dist/mira-output.d.ts +3 -0
- package/dist/mira-output.d.ts.map +1 -0
- package/dist/mira-output.js +136 -0
- package/dist/mira-output.js.map +1 -0
- package/dist/mira-runner.d.ts +3 -0
- package/dist/mira-runner.d.ts.map +1 -0
- package/dist/mira-runner.js +534 -0
- package/dist/mira-runner.js.map +1 -0
- package/dist/services/bot-owner-store.d.ts +28 -0
- package/dist/services/bot-owner-store.d.ts.map +1 -0
- package/dist/services/bot-owner-store.js +82 -0
- package/dist/services/bot-owner-store.js.map +1 -0
- package/dist/services/bot-profile-store.d.ts +16 -0
- package/dist/services/bot-profile-store.d.ts.map +1 -0
- package/dist/services/bot-profile-store.js +98 -0
- package/dist/services/bot-profile-store.js.map +1 -0
- package/dist/services/brand-store.d.ts +15 -0
- package/dist/services/brand-store.d.ts.map +1 -0
- package/dist/services/brand-store.js +47 -0
- package/dist/services/brand-store.js.map +1 -0
- package/dist/services/card-prefs-store.d.ts +20 -0
- package/dist/services/card-prefs-store.d.ts.map +1 -0
- package/dist/services/card-prefs-store.js +82 -0
- package/dist/services/card-prefs-store.js.map +1 -0
- package/dist/services/codex-bridge-queue.d.ts +1 -0
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +23 -0
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +1 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/connector-store.d.ts +58 -0
- package/dist/services/connector-store.d.ts.map +1 -0
- package/dist/services/connector-store.js +79 -0
- package/dist/services/connector-store.js.map +1 -0
- package/dist/services/deployment-identity.d.ts +22 -0
- package/dist/services/deployment-identity.d.ts.map +1 -0
- package/dist/services/deployment-identity.js +67 -0
- package/dist/services/deployment-identity.js.map +1 -0
- package/dist/services/federation-membership-store.d.ts +23 -0
- package/dist/services/federation-membership-store.d.ts.map +1 -0
- package/dist/services/federation-membership-store.js +66 -0
- package/dist/services/federation-membership-store.js.map +1 -0
- package/dist/services/federation-roster.d.ts +54 -0
- package/dist/services/federation-roster.d.ts.map +1 -0
- package/dist/services/federation-roster.js +51 -0
- package/dist/services/federation-roster.js.map +1 -0
- package/dist/services/federation-store.d.ts +76 -0
- package/dist/services/federation-store.d.ts.map +1 -0
- package/dist/services/federation-store.js +133 -0
- package/dist/services/federation-store.js.map +1 -0
- package/dist/services/grant-store.d.ts +12 -2
- package/dist/services/grant-store.d.ts.map +1 -1
- package/dist/services/grant-store.js +51 -4
- package/dist/services/grant-store.js.map +1 -1
- package/dist/services/group-creator.d.ts +10 -0
- package/dist/services/group-creator.d.ts.map +1 -1
- package/dist/services/group-creator.js +26 -1
- package/dist/services/group-creator.js.map +1 -1
- package/dist/services/groups-store.d.ts +30 -0
- package/dist/services/groups-store.d.ts.map +1 -1
- package/dist/services/groups-store.js +85 -12
- package/dist/services/groups-store.js.map +1 -1
- package/dist/services/hermes-transcript.d.ts +7 -0
- package/dist/services/hermes-transcript.d.ts.map +1 -0
- package/dist/services/hermes-transcript.js +117 -0
- package/dist/services/hermes-transcript.js.map +1 -0
- package/dist/services/invite-store.d.ts +28 -0
- package/dist/services/invite-store.d.ts.map +1 -0
- package/dist/services/invite-store.js +85 -0
- package/dist/services/invite-store.js.map +1 -0
- package/dist/services/pairing-store.d.ts +47 -0
- package/dist/services/pairing-store.d.ts.map +1 -0
- package/dist/services/pairing-store.js +132 -0
- package/dist/services/pairing-store.js.map +1 -0
- package/dist/services/project-scanner.d.ts +10 -0
- package/dist/services/project-scanner.d.ts.map +1 -1
- package/dist/services/project-scanner.js +11 -0
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/services/relay-picker.d.ts +22 -0
- package/dist/services/relay-picker.d.ts.map +1 -0
- package/dist/services/relay-picker.js +62 -0
- package/dist/services/relay-picker.js.map +1 -0
- package/dist/services/send-policy.d.ts +55 -0
- package/dist/services/send-policy.d.ts.map +1 -0
- package/dist/services/send-policy.js +47 -0
- package/dist/services/send-policy.js.map +1 -0
- package/dist/services/session-store.js +1 -1
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/team-roster.d.ts +38 -0
- package/dist/services/team-roster.d.ts.map +1 -0
- package/dist/services/team-roster.js +82 -0
- package/dist/services/team-roster.js.map +1 -0
- package/dist/services/team-store.d.ts +54 -0
- package/dist/services/team-store.d.ts.map +1 -0
- package/dist/services/team-store.js +156 -0
- package/dist/services/team-store.js.map +1 -0
- package/dist/services/trigger-log-store.d.ts +46 -0
- package/dist/services/trigger-log-store.d.ts.map +1 -0
- package/dist/services/trigger-log-store.js +132 -0
- package/dist/services/trigger-log-store.js.map +1 -0
- package/dist/services/trigger-types.d.ts +57 -0
- package/dist/services/trigger-types.d.ts.map +1 -0
- package/dist/services/trigger-types.js +28 -0
- package/dist/services/trigger-types.js.map +1 -0
- package/dist/services/webhook-key.d.ts +16 -0
- package/dist/services/webhook-key.d.ts.map +1 -0
- package/dist/services/webhook-key.js +123 -0
- package/dist/services/webhook-key.js.map +1 -0
- package/dist/services/webhook-lifecycle-extractors.d.ts +15 -0
- package/dist/services/webhook-lifecycle-extractors.d.ts.map +1 -0
- package/dist/services/webhook-lifecycle-extractors.js +59 -0
- package/dist/services/webhook-lifecycle-extractors.js.map +1 -0
- package/dist/services/webhook-lifecycle-store.d.ts +45 -0
- package/dist/services/webhook-lifecycle-store.d.ts.map +1 -0
- package/dist/services/webhook-lifecycle-store.js +159 -0
- package/dist/services/webhook-lifecycle-store.js.map +1 -0
- package/dist/setup/bot-config-editor.d.ts +8 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +20 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-tmux.d.ts +0 -22
- package/dist/setup/ensure-tmux.d.ts.map +1 -1
- package/dist/setup/ensure-tmux.js +25 -1
- package/dist/setup/ensure-tmux.js.map +1 -1
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +15 -1
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/skills/definitions.d.ts +2 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +178 -12
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/installer.d.ts +34 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +119 -2
- package/dist/skills/installer.js.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/bot-routing.d.ts +50 -0
- package/dist/utils/bot-routing.d.ts.map +1 -1
- package/dist/utils/bot-routing.js +83 -0
- package/dist/utils/bot-routing.js.map +1 -1
- package/dist/utils/daemon-discovery.d.ts +11 -0
- package/dist/utils/daemon-discovery.d.ts.map +1 -0
- package/dist/utils/daemon-discovery.js +59 -0
- package/dist/utils/daemon-discovery.js.map +1 -0
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +0 -2
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker.js +233 -51
- package/dist/worker.js.map +1 -1
- package/dist/workflows/attempt-resume.d.ts.map +1 -1
- package/dist/workflows/attempt-resume.js +2 -2
- package/dist/workflows/attempt-resume.js.map +1 -1
- package/dist/workflows/definition.d.ts +412 -9
- package/dist/workflows/definition.d.ts.map +1 -1
- package/dist/workflows/definition.js +238 -3
- package/dist/workflows/definition.js.map +1 -1
- package/dist/workflows/events/payloads.d.ts +114 -11
- package/dist/workflows/events/payloads.d.ts.map +1 -1
- package/dist/workflows/events/payloads.js +46 -0
- package/dist/workflows/events/payloads.js.map +1 -1
- package/dist/workflows/events/replay.d.ts +21 -0
- package/dist/workflows/events/replay.d.ts.map +1 -1
- package/dist/workflows/events/replay.js +103 -0
- package/dist/workflows/events/replay.js.map +1 -1
- package/dist/workflows/events/schema.d.ts +1301 -606
- package/dist/workflows/events/schema.d.ts.map +1 -1
- package/dist/workflows/events/schema.js +37 -1
- package/dist/workflows/events/schema.js.map +1 -1
- package/dist/workflows/events/types.d.ts +5 -1
- package/dist/workflows/events/types.d.ts.map +1 -1
- package/dist/workflows/loader.d.ts +14 -0
- package/dist/workflows/loader.d.ts.map +1 -1
- package/dist/workflows/loader.js +27 -0
- package/dist/workflows/loader.js.map +1 -1
- package/dist/workflows/loop.js +58 -0
- package/dist/workflows/loop.js.map +1 -1
- package/dist/workflows/ops-projection.d.ts +58 -0
- package/dist/workflows/ops-projection.d.ts.map +1 -1
- package/dist/workflows/ops-projection.js +74 -0
- package/dist/workflows/ops-projection.js.map +1 -1
- package/dist/workflows/orchestrator.d.ts +65 -1
- package/dist/workflows/orchestrator.d.ts.map +1 -1
- package/dist/workflows/orchestrator.js +486 -74
- package/dist/workflows/orchestrator.js.map +1 -1
- package/dist/workflows/output-binding.d.ts +8 -1
- package/dist/workflows/output-binding.d.ts.map +1 -1
- package/dist/workflows/output-binding.js +75 -11
- package/dist/workflows/output-binding.js.map +1 -1
- package/dist/workflows/runtime.d.ts +1 -1
- package/dist/workflows/runtime.d.ts.map +1 -1
- package/dist/workflows/runtime.js +39 -4
- package/dist/workflows/runtime.js.map +1 -1
- package/dist/workflows/trigger-from-envelope.d.ts +13 -0
- package/dist/workflows/trigger-from-envelope.d.ts.map +1 -0
- package/dist/workflows/trigger-from-envelope.js +67 -0
- package/dist/workflows/trigger-from-envelope.js.map +1 -0
- package/dist/workflows/wait.d.ts +23 -2
- package/dist/workflows/wait.d.ts.map +1 -1
- package/dist/workflows/wait.js +39 -17
- package/dist/workflows/wait.js.map +1 -1
- package/package.json +1 -1
- package/dist/services/feishu-task-client.d.ts +0 -28
- package/dist/services/feishu-task-client.d.ts.map +0 -1
- package/dist/services/feishu-task-client.js +0 -123
- package/dist/services/feishu-task-client.js.map +0 -1
- package/dist/services/task-store.d.ts +0 -37
- package/dist/services/task-store.d.ts.map +0 -1
- package/dist/services/task-store.js +0 -115
- package/dist/services/task-store.js.map +0 -1
|
@@ -3,17 +3,25 @@ import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
|
|
|
3
3
|
function delay(ms) {
|
|
4
4
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
5
5
|
}
|
|
6
|
+
/** PTYs that have already received a writeInput. The first write lands while
|
|
7
|
+
* cursor-agent's TUI is still doing its startup render, so it needs a longer
|
|
8
|
+
* settle + throttle than later writes. Tracked by identity so the warmup state
|
|
9
|
+
* is shared across adapter instances. Mirrors claude-code's first-write guard. */
|
|
10
|
+
const cursorFirstWriteSeen = new WeakSet();
|
|
6
11
|
export function createCursorAdapter(pathOverride) {
|
|
7
12
|
const bin = resolveCommand(pathOverride ?? 'cursor-agent');
|
|
8
13
|
return {
|
|
9
14
|
id: 'cursor',
|
|
10
15
|
resolvedBin: bin,
|
|
11
|
-
buildArgs({ resume, resumeSessionId }) {
|
|
16
|
+
buildArgs({ resume, resumeSessionId, model }) {
|
|
12
17
|
// --force skips approvals so the model can act inside the topic without
|
|
13
18
|
// every shell/edit bouncing back to Lark for confirmation — same posture
|
|
14
19
|
// as codex's --dangerously-bypass-approvals-and-sandbox and claude-code's
|
|
15
20
|
// --dangerously-skip-permissions.
|
|
16
21
|
const base = ['--force'];
|
|
22
|
+
if (model && model.trim()) {
|
|
23
|
+
base.push('--model', model.trim());
|
|
24
|
+
}
|
|
17
25
|
if (!resume)
|
|
18
26
|
return base;
|
|
19
27
|
if (resumeSessionId)
|
|
@@ -31,25 +39,63 @@ export function createCursorAdapter(pathOverride) {
|
|
|
31
39
|
return `cursor-agent --resume ${cliSessionId}`;
|
|
32
40
|
},
|
|
33
41
|
async writeInput(pty, content) {
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
// Emit line-by-line instead of writing the whole message at once.
|
|
43
|
+
// cursor-agent's paste detector folds a multi-line chunk that arrives in
|
|
44
|
+
// one burst into a `[Pasted text +N lines]` placeholder the model can't
|
|
45
|
+
// read; typing each line with a throttle between keeps it under that
|
|
46
|
+
// threshold so the text lands verbatim. Covers both backends — tmux
|
|
47
|
+
// (send-keys) and raw PTY (write only). Never use bracketed-paste markers
|
|
48
|
+
// (\x1b[200~ … \x1b[201~): they trigger the fold.
|
|
49
|
+
//
|
|
50
|
+
// Soft-newline differs per backend because the detector counts LF (0x0a)
|
|
51
|
+
// bytes arriving densely:
|
|
52
|
+
// - tmux: Ctrl+J, cursor's native soft-newline — renders cleanly and
|
|
53
|
+
// send-keys spaces the bytes out enough to never fold.
|
|
54
|
+
// - raw PTY: a fast write('\n') folds, so send `\` + CR; cursor eats the
|
|
55
|
+
// backslash-before-CR as a soft-newline (not part of the submitted
|
|
56
|
+
// text) and no LF byte hits the stream, making it fold-immune. Costs a
|
|
57
|
+
// cosmetic trailing `\` in the local TUI render only.
|
|
58
|
+
// Submit is always a bare Enter (\r). No on-disk submit verification —
|
|
59
|
+
// cursor's transcript path isn't documented, so the worker relies on
|
|
60
|
+
// idle detection + the bridge fallback timer.
|
|
61
|
+
const useKeys = !!(pty.sendText && pty.sendSpecialKeys);
|
|
62
|
+
const emitText = (s) => (useKeys ? pty.sendText(s) : pty.write(s));
|
|
63
|
+
const emitSoftNewline = () => {
|
|
64
|
+
if (useKeys) {
|
|
65
|
+
pty.sendSpecialKeys('C-j');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
pty.write('\\');
|
|
69
|
+
pty.write('\r');
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const emitEnter = () => (useKeys ? pty.sendSpecialKeys('Enter') : pty.write('\r'));
|
|
73
|
+
const isFirstWrite = !cursorFirstWriteSeen.has(pty);
|
|
74
|
+
if (isFirstWrite) {
|
|
75
|
+
cursorFirstWriteSeen.add(pty);
|
|
40
76
|
await delay(200);
|
|
41
|
-
pty.sendSpecialKeys('Enter');
|
|
42
77
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
78
|
+
const throttleMs = isFirstWrite ? 80 : 30;
|
|
79
|
+
const tick = () => delay(throttleMs);
|
|
80
|
+
const lines = content.split('\n');
|
|
81
|
+
for (let i = 0; i < lines.length; i++) {
|
|
82
|
+
if (lines[i].length > 0) {
|
|
83
|
+
emitText(lines[i]);
|
|
84
|
+
await tick();
|
|
85
|
+
}
|
|
86
|
+
if (i < lines.length - 1) {
|
|
87
|
+
emitSoftNewline();
|
|
88
|
+
await tick();
|
|
89
|
+
}
|
|
47
90
|
}
|
|
91
|
+
await delay(200);
|
|
92
|
+
emitEnter();
|
|
48
93
|
},
|
|
49
94
|
completionPattern: undefined,
|
|
50
95
|
skillsDir: '~/.cursor/skills',
|
|
51
96
|
systemHints: BOTMUX_SHELL_HINTS,
|
|
52
97
|
altScreen: true,
|
|
98
|
+
modelChoices: ['auto', 'claude-4-sonnet', 'claude-4-opus', 'gpt-5'],
|
|
53
99
|
};
|
|
54
100
|
}
|
|
55
101
|
export const create = createCursorAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/adapters/cli/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,CAAC;IAC3D,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE;
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/adapters/cli/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CA6CrE;AAED,eAAO,MAAM,MAAM,4BAAsB,CAAC"}
|
|
@@ -8,10 +8,13 @@ export function createGeminiAdapter(pathOverride) {
|
|
|
8
8
|
return {
|
|
9
9
|
id: 'gemini',
|
|
10
10
|
resolvedBin: bin,
|
|
11
|
-
buildArgs({ initialPrompt }) {
|
|
11
|
+
buildArgs({ initialPrompt, model }) {
|
|
12
12
|
// Gemini CLI manages sessions internally (--resume takes "latest" or
|
|
13
13
|
// an index/UUID, not our daemon session IDs). We always start fresh.
|
|
14
14
|
const args = ['--yolo'];
|
|
15
|
+
if (model && model.trim()) {
|
|
16
|
+
args.push('--model', model.trim());
|
|
17
|
+
}
|
|
15
18
|
// Use -i (prompt-interactive) for the initial prompt. Gemini's Ink TUI
|
|
16
19
|
// has a startup phase where the TextInput component isn't mounted yet
|
|
17
20
|
// (auth, model loading, extensions). Writing to stdin during this phase
|
|
@@ -40,6 +43,7 @@ export function createGeminiAdapter(pathOverride) {
|
|
|
40
43
|
systemHints: BOTMUX_SHELL_HINTS,
|
|
41
44
|
altScreen: true, // Ink renders in alternate screen buffer by default
|
|
42
45
|
skillsDir: '~/.gemini/skills',
|
|
46
|
+
modelChoices: ['gemini-2.5-pro', 'gemini-2.5-flash'],
|
|
43
47
|
};
|
|
44
48
|
}
|
|
45
49
|
export const create = createGeminiAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE;
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/adapters/cli/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE;YAChC,qEAAqE;YACrE,sEAAsE;YACtE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,wEAAwE;YACxE,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS,EAAI,kDAAkD;QAClF,YAAY,EAAE,SAAS,EAAS,mEAAmE;QACnG,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,IAAI,EAAiB,oDAAoD;QACpF,SAAS,EAAE,kBAAkB;QAC7B,YAAY,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/hermes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAkCrE;AAED,eAAO,MAAM,MAAM,4BAAsB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { resolveCommand } from './registry.js';
|
|
2
|
+
import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
|
|
3
|
+
function delay(ms) {
|
|
4
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
5
|
+
}
|
|
6
|
+
export function createHermesAdapter(pathOverride) {
|
|
7
|
+
const bin = resolveCommand(pathOverride ?? 'hermes');
|
|
8
|
+
return {
|
|
9
|
+
id: 'hermes',
|
|
10
|
+
resolvedBin: bin,
|
|
11
|
+
buildArgs({ sessionId, resume }) {
|
|
12
|
+
const args = [];
|
|
13
|
+
if (resume)
|
|
14
|
+
args.push('--resume', sessionId);
|
|
15
|
+
args.push('--yolo', '--accept-hooks', '--pass-session-id');
|
|
16
|
+
return args;
|
|
17
|
+
},
|
|
18
|
+
buildResumeCommand({ sessionId }) {
|
|
19
|
+
return `hermes --resume ${sessionId}`;
|
|
20
|
+
},
|
|
21
|
+
async writeInput(pty, content) {
|
|
22
|
+
if (pty.sendText && pty.sendSpecialKeys) {
|
|
23
|
+
pty.sendText(content);
|
|
24
|
+
await delay(200);
|
|
25
|
+
pty.sendSpecialKeys('Enter');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
pty.write(content);
|
|
29
|
+
await delay(1000);
|
|
30
|
+
pty.write('\r');
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
completionPattern: undefined,
|
|
34
|
+
readyPattern: undefined,
|
|
35
|
+
systemHints: BOTMUX_SHELL_HINTS,
|
|
36
|
+
altScreen: false,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export const create = createHermesAdapter;
|
|
40
|
+
//# sourceMappingURL=hermes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../../src/adapters/cli/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAqB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;YAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,CAAC,EAAE,SAAS,EAAE;YAC9B,OAAO,mBAAmB,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mira.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/mira.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAoBxD,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CA4CpE;AAED,eAAO,MAAM,MAAM,0BAAoB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { dirname, resolve } from 'node:path';
|
|
4
|
+
function runnerPath() {
|
|
5
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const compiledSibling = resolve(here, '..', '..', 'mira-runner.js');
|
|
7
|
+
if (existsSync(compiledSibling))
|
|
8
|
+
return compiledSibling;
|
|
9
|
+
const builtFromSourceTree = resolve(here, '..', '..', '..', 'dist', 'mira-runner.js');
|
|
10
|
+
if (existsSync(builtFromSourceTree))
|
|
11
|
+
return builtFromSourceTree;
|
|
12
|
+
return compiledSibling;
|
|
13
|
+
}
|
|
14
|
+
function pushOpt(args, key, value) {
|
|
15
|
+
if (value === undefined || value.length === 0)
|
|
16
|
+
return;
|
|
17
|
+
args.push(key, value);
|
|
18
|
+
}
|
|
19
|
+
function encodeInput(content) {
|
|
20
|
+
return Buffer.from(JSON.stringify({ type: 'message', content }), 'utf8').toString('base64');
|
|
21
|
+
}
|
|
22
|
+
export function createMiraAdapter(_pathOverride) {
|
|
23
|
+
return {
|
|
24
|
+
id: 'mira',
|
|
25
|
+
resolvedBin: process.execPath,
|
|
26
|
+
buildArgs({ sessionId, resume, resumeSessionId, botName, botOpenId, locale }) {
|
|
27
|
+
const args = [
|
|
28
|
+
runnerPath(),
|
|
29
|
+
'--session-id', sessionId,
|
|
30
|
+
];
|
|
31
|
+
if (resume && resumeSessionId)
|
|
32
|
+
args.push('--mira-session-id', resumeSessionId);
|
|
33
|
+
pushOpt(args, '--bot-name', botName);
|
|
34
|
+
pushOpt(args, '--bot-open-id', botOpenId);
|
|
35
|
+
pushOpt(args, '--locale', locale);
|
|
36
|
+
return args;
|
|
37
|
+
},
|
|
38
|
+
buildResumeCommand() {
|
|
39
|
+
// Mira sessions resume through botmux using the persisted Mira session id.
|
|
40
|
+
// There is no stable user-facing CLI command equivalent.
|
|
41
|
+
return null;
|
|
42
|
+
},
|
|
43
|
+
async writeInput(pty, content) {
|
|
44
|
+
const line = `::botmux-mira:${encodeInput(content)}`;
|
|
45
|
+
try {
|
|
46
|
+
if (pty.sendText && pty.sendSpecialKeys) {
|
|
47
|
+
pty.sendText(line);
|
|
48
|
+
pty.sendSpecialKeys('Enter');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
pty.write(line + '\r');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { submitted: false };
|
|
56
|
+
}
|
|
57
|
+
return { submitted: true };
|
|
58
|
+
},
|
|
59
|
+
completionPattern: undefined,
|
|
60
|
+
readyPattern: /›/,
|
|
61
|
+
systemHints: [],
|
|
62
|
+
injectsSessionContext: true,
|
|
63
|
+
altScreen: false,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export const create = createMiraAdapter;
|
|
67
|
+
//# sourceMappingURL=mira.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mira.js","sourceRoot":"","sources":["../../../src/adapters/cli/mira.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CliAdapter } from './types.js';
|
|
2
|
+
export declare function mtrSessionIdForBotmuxSession(sessionId: string): string;
|
|
3
|
+
export declare function createMtrAdapter(pathOverride?: string): CliAdapter;
|
|
4
|
+
export declare const create: typeof createMtrAdapter;
|
|
5
|
+
//# sourceMappingURL=mtr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mtr.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/mtr.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAYxD,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQtE;AAMD,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CA0ClE;AAED,eAAO,MAAM,MAAM,yBAAmB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { resolveCommand } from './registry.js';
|
|
3
|
+
import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
|
|
4
|
+
const BASE62 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
5
|
+
function delay(ms) {
|
|
6
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
7
|
+
}
|
|
8
|
+
function isMtrSessionId(value) {
|
|
9
|
+
return typeof value === 'string' && /^ses_[0-9A-Za-z]+$/.test(value);
|
|
10
|
+
}
|
|
11
|
+
export function mtrSessionIdForBotmuxSession(sessionId) {
|
|
12
|
+
const digest = createHash('sha256').update(sessionId).digest();
|
|
13
|
+
const timeHex = digest.subarray(0, 6).toString('hex');
|
|
14
|
+
let suffix = '';
|
|
15
|
+
for (let i = 6; i < 20; i++) {
|
|
16
|
+
suffix += BASE62[digest[i] % BASE62.length];
|
|
17
|
+
}
|
|
18
|
+
return `ses_${timeHex}${suffix}`;
|
|
19
|
+
}
|
|
20
|
+
function nativeSessionId(sessionId, cliSessionId) {
|
|
21
|
+
return isMtrSessionId(cliSessionId) ? cliSessionId : mtrSessionIdForBotmuxSession(sessionId);
|
|
22
|
+
}
|
|
23
|
+
export function createMtrAdapter(pathOverride) {
|
|
24
|
+
const bin = resolveCommand(pathOverride ?? 'mtr');
|
|
25
|
+
return {
|
|
26
|
+
id: 'mtr',
|
|
27
|
+
resolvedBin: bin,
|
|
28
|
+
buildArgs({ sessionId, resume, resumeSessionId, initialPrompt }) {
|
|
29
|
+
const mtrSessionId = nativeSessionId(sessionId, resumeSessionId);
|
|
30
|
+
const args = resume
|
|
31
|
+
? ['--session', mtrSessionId]
|
|
32
|
+
: ['--set-session', mtrSessionId];
|
|
33
|
+
if (initialPrompt) {
|
|
34
|
+
args.push('--prompt', initialPrompt);
|
|
35
|
+
}
|
|
36
|
+
return args;
|
|
37
|
+
},
|
|
38
|
+
buildResumeCommand({ sessionId, cliSessionId }) {
|
|
39
|
+
return `mtr --session ${nativeSessionId(sessionId, cliSessionId)}`;
|
|
40
|
+
},
|
|
41
|
+
passesInitialPromptViaArgs: true,
|
|
42
|
+
async writeInput(pty, content) {
|
|
43
|
+
if (pty.sendText && pty.sendSpecialKeys) {
|
|
44
|
+
pty.sendText(content);
|
|
45
|
+
await delay(200);
|
|
46
|
+
pty.sendSpecialKeys('Enter');
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
pty.write(content);
|
|
50
|
+
await delay(1000);
|
|
51
|
+
pty.write('\r');
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
completionPattern: undefined,
|
|
55
|
+
readyPattern: undefined,
|
|
56
|
+
systemHints: BOTMUX_SHELL_HINTS,
|
|
57
|
+
altScreen: true,
|
|
58
|
+
skillsDir: '~/.config/opencode/skills',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export const create = createMtrAdapter;
|
|
62
|
+
//# sourceMappingURL=mtr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mtr.js","sourceRoot":"","sources":["../../../src/adapters/cli/mtr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAMxD,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CA2DvE;AAED,eAAO,MAAM,MAAM,8BAAwB,CAAC"}
|
|
@@ -8,12 +8,15 @@ export function createOpenCodeAdapter(pathOverride) {
|
|
|
8
8
|
return {
|
|
9
9
|
id: 'opencode',
|
|
10
10
|
resolvedBin: bin,
|
|
11
|
-
buildArgs({ initialPrompt }) {
|
|
11
|
+
buildArgs({ initialPrompt, model }) {
|
|
12
12
|
// OpenCode manages sessions internally (SQLite store).
|
|
13
13
|
// Resume not supported — always start fresh. --continue exits
|
|
14
14
|
// immediately (code 0) when there is no prior session, causing a
|
|
15
15
|
// crash-loop in the daemon auto-restart path.
|
|
16
16
|
const args = [];
|
|
17
|
+
if (model && model.trim()) {
|
|
18
|
+
args.push('--model', model.trim());
|
|
19
|
+
}
|
|
17
20
|
// Use --prompt for the initial prompt. OpenCode's Bubble Tea TUI
|
|
18
21
|
// has an async startup phase; writing to stdin during this window
|
|
19
22
|
// may be lost. --prompt injects it once the TUI is ready.
|
|
@@ -40,6 +43,21 @@ export function createOpenCodeAdapter(pathOverride) {
|
|
|
40
43
|
systemHints: BOTMUX_SHELL_HINTS,
|
|
41
44
|
altScreen: true, // Bubble Tea renders in alternate screen buffer
|
|
42
45
|
skillsDir: '~/.config/opencode/skills',
|
|
46
|
+
// botmux hook 安装:spawn 时写入 OpenCode 插件文件,
|
|
47
|
+
// 使 question.asked 事件自动转发到 `botmux hook opencode`。
|
|
48
|
+
hookInstall: {
|
|
49
|
+
configPath: '~/.config/opencode/plugin/botmux-ask.js',
|
|
50
|
+
format: 'opencode-plugin',
|
|
51
|
+
},
|
|
52
|
+
asksViaHook: true,
|
|
53
|
+
// OpenCode model 通常 provider/name 形式(anthropic/claude-sonnet-4、openai/gpt-5),
|
|
54
|
+
// 自由度高,候选只做引导,setup 时选 Other 自定义最常见。
|
|
55
|
+
modelChoices: [
|
|
56
|
+
'anthropic/claude-sonnet-4',
|
|
57
|
+
'anthropic/claude-opus-4',
|
|
58
|
+
'openai/gpt-5',
|
|
59
|
+
'google/gemini-2.5-pro',
|
|
60
|
+
],
|
|
43
61
|
};
|
|
44
62
|
}
|
|
45
63
|
export const create = createOpenCodeAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAqB;IACzD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACvD,OAAO;QACL,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE;
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/cli/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAqB;IACzD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC;IACvD,OAAO;QACL,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE;YAChC,uDAAuD;YACvD,+DAA+D;YAC/D,iEAAiE;YACjE,8CAA8C;YAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,kEAAkE;YAClE,kEAAkE;YAClE,2DAA2D;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS,EAAI,kDAAkD;QAClF,YAAY,EAAE,SAAS,EAAS,oFAAoF;QACpH,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,IAAI,EAAiB,gDAAgD;QAChF,SAAS,EAAE,2BAA2B;QACtC,0CAA0C;QAC1C,mDAAmD;QACnD,WAAW,EAAE;YACX,UAAU,EAAE,yCAAyC;YACrD,MAAM,EAAE,iBAAiB;SAC1B;QACD,WAAW,EAAE,IAAI;QACjB,8EAA8E;QAC9E,qCAAqC;QACrC,YAAY,EAAE;YACZ,2BAA2B;YAC3B,yBAAyB;YACzB,cAAc;YACd,uBAAuB;SACxB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,qBAAqB,CAAC"}
|
|
@@ -3,17 +3,21 @@ import { createClaudeCodeAdapter } from './claude-code.js';
|
|
|
3
3
|
import { createAidenAdapter } from './aiden.js';
|
|
4
4
|
import { createCocoAdapter } from './coco.js';
|
|
5
5
|
import { createCodexAdapter } from './codex.js';
|
|
6
|
+
import { createCodexAppAdapter } from './codex-app.js';
|
|
6
7
|
import { createCursorAdapter } from './cursor.js';
|
|
7
8
|
import { createGeminiAdapter } from './gemini.js';
|
|
8
9
|
import { createOpenCodeAdapter } from './opencode.js';
|
|
9
10
|
import { createAntigravityAdapter } from './antigravity.js';
|
|
11
|
+
import { createMtrAdapter } from './mtr.js';
|
|
12
|
+
import { createHermesAdapter } from './hermes.js';
|
|
13
|
+
import { createMiraAdapter } from './mira.js';
|
|
10
14
|
/** Resolve a command name to its absolute path via shell `which`.
|
|
11
15
|
* Tries login shell first (-lc), then interactive shell (-ic) for tools
|
|
12
16
|
* whose installers add PATH entries to .bashrc/.zshrc only. */
|
|
13
17
|
export declare function resolveCommand(cmd: string): string;
|
|
14
18
|
/** Async adapter factory (uses dynamic import for lazy loading in daemon process). */
|
|
15
19
|
export declare function createCliAdapter(id: CliId, pathOverride?: string): Promise<CliAdapter>;
|
|
16
|
-
export { createClaudeCodeAdapter, createAidenAdapter, createCocoAdapter, createCodexAdapter, createCursorAdapter, createGeminiAdapter, createOpenCodeAdapter, createAntigravityAdapter };
|
|
20
|
+
export { createClaudeCodeAdapter, createAidenAdapter, createCocoAdapter, createCodexAdapter, createCodexAppAdapter, createCursorAdapter, createGeminiAdapter, createOpenCodeAdapter, createAntigravityAdapter, createMtrAdapter, createHermesAdapter, createMiraAdapter };
|
|
17
21
|
/** Synchronous version for use in worker process. */
|
|
18
22
|
export declare function createCliAdapterSync(id: CliId, pathOverride?: string): CliAdapter;
|
|
19
23
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;gEAEgE;AAChE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BlD;AAID,sFAAsF;AACtF,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAO5F;AAED,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAE1Q,qDAAqD;AACrD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAgBjF"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { execSync } from 'node:child_process';
|
|
2
|
-
import {
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { isAbsolute, join } from 'node:path';
|
|
3
5
|
import { createClaudeCodeAdapter } from './claude-code.js';
|
|
4
6
|
import { createAidenAdapter } from './aiden.js';
|
|
5
7
|
import { createCocoAdapter } from './coco.js';
|
|
6
8
|
import { createCodexAdapter } from './codex.js';
|
|
9
|
+
import { createCodexAppAdapter } from './codex-app.js';
|
|
7
10
|
import { createCursorAdapter } from './cursor.js';
|
|
8
11
|
import { createGeminiAdapter } from './gemini.js';
|
|
9
12
|
import { createOpenCodeAdapter } from './opencode.js';
|
|
10
13
|
import { createAntigravityAdapter } from './antigravity.js';
|
|
14
|
+
import { createMtrAdapter } from './mtr.js';
|
|
15
|
+
import { createHermesAdapter } from './hermes.js';
|
|
16
|
+
import { createMiraAdapter } from './mira.js';
|
|
11
17
|
/** Resolve a command name to its absolute path via shell `which`.
|
|
12
18
|
* Tries login shell first (-lc), then interactive shell (-ic) for tools
|
|
13
19
|
* whose installers add PATH entries to .bashrc/.zshrc only. */
|
|
@@ -31,6 +37,16 @@ export function resolveCommand(cmd) {
|
|
|
31
37
|
catch { /* try next */ }
|
|
32
38
|
}
|
|
33
39
|
}
|
|
40
|
+
if (process.platform === 'darwin' && cmd === 'codex') {
|
|
41
|
+
const bundledCodexCandidates = [
|
|
42
|
+
'/Applications/Codex.app/Contents/Resources/codex',
|
|
43
|
+
join(homedir(), 'Applications', 'Codex.app', 'Contents', 'Resources', 'codex'),
|
|
44
|
+
];
|
|
45
|
+
for (const candidate of bundledCodexCandidates) {
|
|
46
|
+
if (existsSync(candidate))
|
|
47
|
+
return candidate;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
34
50
|
return cmd;
|
|
35
51
|
}
|
|
36
52
|
const adapterCache = new Map();
|
|
@@ -44,7 +60,7 @@ export async function createCliAdapter(id, pathOverride) {
|
|
|
44
60
|
adapterCache.set(key, adapter);
|
|
45
61
|
return adapter;
|
|
46
62
|
}
|
|
47
|
-
export { createClaudeCodeAdapter, createAidenAdapter, createCocoAdapter, createCodexAdapter, createCursorAdapter, createGeminiAdapter, createOpenCodeAdapter, createAntigravityAdapter };
|
|
63
|
+
export { createClaudeCodeAdapter, createAidenAdapter, createCocoAdapter, createCodexAdapter, createCodexAppAdapter, createCursorAdapter, createGeminiAdapter, createOpenCodeAdapter, createAntigravityAdapter, createMtrAdapter, createHermesAdapter, createMiraAdapter };
|
|
48
64
|
/** Synchronous version for use in worker process. */
|
|
49
65
|
export function createCliAdapterSync(id, pathOverride) {
|
|
50
66
|
switch (id.toLowerCase()) {
|
|
@@ -52,10 +68,14 @@ export function createCliAdapterSync(id, pathOverride) {
|
|
|
52
68
|
case 'aiden': return createAidenAdapter(pathOverride);
|
|
53
69
|
case 'coco': return createCocoAdapter(pathOverride);
|
|
54
70
|
case 'codex': return createCodexAdapter(pathOverride);
|
|
71
|
+
case 'codex-app': return createCodexAppAdapter(pathOverride);
|
|
55
72
|
case 'cursor': return createCursorAdapter(pathOverride);
|
|
56
73
|
case 'gemini': return createGeminiAdapter(pathOverride);
|
|
57
74
|
case 'opencode': return createOpenCodeAdapter(pathOverride);
|
|
58
75
|
case 'antigravity': return createAntigravityAdapter(pathOverride);
|
|
76
|
+
case 'mtr': return createMtrAdapter(pathOverride);
|
|
77
|
+
case 'hermes': return createHermesAdapter(pathOverride);
|
|
78
|
+
case 'mira': return createMiraAdapter(pathOverride);
|
|
59
79
|
default: throw new Error(`Unknown CLI adapter: ${id}`);
|
|
60
80
|
}
|
|
61
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/adapters/cli/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/adapters/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Claude Code has its own `--append-system-prompt` text baked into
|
|
5
5
|
* `claude-code.ts`; this constant is only consumed by CLIs that don't expose
|
|
6
|
-
* a system-prompt flag (coco / codex / gemini / opencode / aiden).
|
|
6
|
+
* a system-prompt flag (coco / codex / gemini / opencode / aiden / mtr / hermes).
|
|
7
7
|
*
|
|
8
8
|
* Each array element becomes one line inside the `<botmux_routing>` XML block
|
|
9
9
|
* rendered by `buildNewTopicPrompt` in `session-manager.ts`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-hints.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAK,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"shared-hints.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAK,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/D;AAED,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAA4B,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Claude Code has its own `--append-system-prompt` text baked into
|
|
5
5
|
* `claude-code.ts`; this constant is only consumed by CLIs that don't expose
|
|
6
|
-
* a system-prompt flag (coco / codex / gemini / opencode / aiden).
|
|
6
|
+
* a system-prompt flag (coco / codex / gemini / opencode / aiden / mtr / hermes).
|
|
7
7
|
*
|
|
8
8
|
* Each array element becomes one line inside the `<botmux_routing>` XML block
|
|
9
9
|
* rendered by `buildNewTopicPrompt` in `session-manager.ts`.
|
|
@@ -18,6 +18,7 @@ export function buildBotmuxShellHints(locale) {
|
|
|
18
18
|
t('ai.shell.heredoc_example', undefined, locale),
|
|
19
19
|
t('ai.shell.helpers', undefined, locale),
|
|
20
20
|
t('ai.shell.when_to_send', undefined, locale),
|
|
21
|
+
t('ai.shell.mention_gate', undefined, locale),
|
|
21
22
|
];
|
|
22
23
|
}
|
|
23
24
|
/** @deprecated Use `buildBotmuxShellHints(locale)` instead. Kept for any external callers. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAe,MAAM,qBAAqB,CAAC;AAErD,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,OAAO;QACL,CAAC,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC;QACtC,CAAC,CAAC,6BAA6B,EAAE,SAAS,EAAE,MAAM,CAAC;QACnD,CAAC,CAAC,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC;QAC5C,CAAC,CAAC,4BAA4B,EAAE,SAAS,EAAE,MAAM,CAAC;QAClD,CAAC,CAAC,0BAA0B,EAAE,SAAS,EAAE,MAAM,CAAC;QAChD,CAAC,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC;QACxC,CAAC,CAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAa,qBAAqB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared-hints.js","sourceRoot":"","sources":["../../../src/adapters/cli/shared-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAe,MAAM,qBAAqB,CAAC;AAErD,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,OAAO;QACL,CAAC,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC;QACtC,CAAC,CAAC,6BAA6B,EAAE,SAAS,EAAE,MAAM,CAAC;QACnD,CAAC,CAAC,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC;QAC5C,CAAC,CAAC,4BAA4B,EAAE,SAAS,EAAE,MAAM,CAAC;QAClD,CAAC,CAAC,0BAA0B,EAAE,SAAS,EAAE,MAAM,CAAC;QAChD,CAAC,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC;QACxC,CAAC,CAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC;QAC7C,CAAC,CAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAa,qBAAqB,EAAE,CAAC"}
|