botmux 2.107.0 → 2.109.0-canary.0
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 +32 -22
- package/README.md +35 -23
- package/dist/adapters/backend/sandbox.d.ts +3 -1
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +19 -3
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +16 -1
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +24 -15
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +75 -43
- 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 +4 -0
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +4 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/genius.d.ts.map +1 -1
- package/dist/adapters/cli/genius.js +9 -15
- package/dist/adapters/cli/genius.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts +73 -0
- package/dist/adapters/cli/grok.d.ts.map +1 -0
- package/dist/adapters/cli/grok.js +298 -0
- package/dist/adapters/cli/grok.js.map +1 -0
- package/dist/adapters/cli/kiro-cli.d.ts +4 -0
- package/dist/adapters/cli/kiro-cli.d.ts.map +1 -0
- package/dist/adapters/cli/kiro-cli.js +73 -0
- package/dist/adapters/cli/kiro-cli.js.map +1 -0
- package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
- package/dist/adapters/cli/oh-my-pi.js +133 -12
- package/dist/adapters/cli/oh-my-pi.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +112 -3
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +177 -8
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +3 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +5 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +8 -4
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +8 -4
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +25 -16
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/adapters/hook-installer.d.ts +5 -4
- package/dist/adapters/hook-installer.d.ts.map +1 -1
- package/dist/adapters/hook-installer.js +42 -0
- package/dist/adapters/hook-installer.js.map +1 -1
- package/dist/bot-registry.d.ts +15 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +62 -2
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/send-dispatch.d.ts +21 -0
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +159 -0
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli/session-list-liveness.d.ts +22 -0
- package/dist/cli/session-list-liveness.d.ts.map +1 -0
- package/dist/cli/session-list-liveness.js +22 -0
- package/dist/cli/session-list-liveness.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2195 -193
- package/dist/cli.js.map +1 -1
- package/dist/core/ask-types.d.ts +4 -0
- package/dist/core/ask-types.d.ts.map +1 -1
- package/dist/core/ask-types.js +10 -0
- package/dist/core/ask-types.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +7 -0
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +35 -13
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +245 -19
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +6 -2
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +6 -5
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +11 -8
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/dispatch-worker-meta.d.ts +45 -0
- package/dist/core/dispatch-worker-meta.d.ts.map +1 -0
- package/dist/core/dispatch-worker-meta.js +158 -0
- package/dist/core/dispatch-worker-meta.js.map +1 -0
- package/dist/core/dispatch.d.ts +11 -0
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +27 -2
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/goal-attention.d.ts +20 -0
- package/dist/core/goal-attention.d.ts.map +1 -0
- package/dist/core/goal-attention.js +171 -0
- package/dist/core/goal-attention.js.map +1 -0
- package/dist/core/goal-reassign-budget.d.ts +7 -0
- package/dist/core/goal-reassign-budget.d.ts.map +1 -0
- package/dist/core/goal-reassign-budget.js +20 -0
- package/dist/core/goal-reassign-budget.js.map +1 -0
- package/dist/core/goal-supervisor.d.ts +83 -0
- package/dist/core/goal-supervisor.d.ts.map +1 -0
- package/dist/core/goal-supervisor.js +326 -0
- package/dist/core/goal-supervisor.js.map +1 -0
- package/dist/core/goal-watchdog.d.ts +96 -0
- package/dist/core/goal-watchdog.d.ts.map +1 -0
- package/dist/core/goal-watchdog.js +501 -0
- package/dist/core/goal-watchdog.js.map +1 -0
- package/dist/core/goal-worker-health.d.ts +17 -0
- package/dist/core/goal-worker-health.d.ts.map +1 -0
- package/dist/core/goal-worker-health.js +11 -0
- package/dist/core/goal-worker-health.js.map +1 -0
- package/dist/core/maintenance.d.ts +11 -8
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +45 -20
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/per-bot-env.d.ts.map +1 -1
- package/dist/core/per-bot-env.js +4 -0
- package/dist/core/per-bot-env.js.map +1 -1
- package/dist/core/plugins/cli-generation.d.ts +27 -0
- package/dist/core/plugins/cli-generation.d.ts.map +1 -0
- package/dist/core/plugins/cli-generation.js +54 -0
- package/dist/core/plugins/cli-generation.js.map +1 -0
- package/dist/core/plugins/convention-scanner.d.ts +4 -0
- package/dist/core/plugins/convention-scanner.d.ts.map +1 -0
- package/dist/core/plugins/convention-scanner.js +202 -0
- package/dist/core/plugins/convention-scanner.js.map +1 -0
- package/dist/core/plugins/dependencies.d.ts +5 -0
- package/dist/core/plugins/dependencies.d.ts.map +1 -0
- package/dist/core/plugins/dependencies.js +50 -0
- package/dist/core/plugins/dependencies.js.map +1 -0
- package/dist/core/plugins/effective.d.ts +5 -0
- package/dist/core/plugins/effective.d.ts.map +1 -0
- package/dist/core/plugins/effective.js +16 -0
- package/dist/core/plugins/effective.js.map +1 -0
- package/dist/core/plugins/ids.d.ts +4 -0
- package/dist/core/plugins/ids.d.ts.map +1 -0
- package/dist/core/plugins/ids.js +30 -0
- package/dist/core/plugins/ids.js.map +1 -0
- package/dist/core/plugins/init.d.ts +23 -0
- package/dist/core/plugins/init.d.ts.map +1 -0
- package/dist/core/plugins/init.js +332 -0
- package/dist/core/plugins/init.js.map +1 -0
- package/dist/core/plugins/install.d.ts +14 -0
- package/dist/core/plugins/install.d.ts.map +1 -0
- package/dist/core/plugins/install.js +176 -0
- package/dist/core/plugins/install.js.map +1 -0
- package/dist/core/plugins/manifest.d.ts +4 -0
- package/dist/core/plugins/manifest.d.ts.map +1 -0
- package/dist/core/plugins/manifest.js +78 -0
- package/dist/core/plugins/manifest.js.map +1 -0
- package/dist/core/plugins/materializer.d.ts +16 -0
- package/dist/core/plugins/materializer.d.ts.map +1 -0
- package/dist/core/plugins/materializer.js +73 -0
- package/dist/core/plugins/materializer.js.map +1 -0
- package/dist/core/plugins/mcp/gateway-installer.d.ts +16 -0
- package/dist/core/plugins/mcp/gateway-installer.d.ts.map +1 -0
- package/dist/core/plugins/mcp/gateway-installer.js +255 -0
- package/dist/core/plugins/mcp/gateway-installer.js.map +1 -0
- package/dist/core/plugins/mcp/gateway.d.ts +51 -0
- package/dist/core/plugins/mcp/gateway.d.ts.map +1 -0
- package/dist/core/plugins/mcp/gateway.js +500 -0
- package/dist/core/plugins/mcp/gateway.js.map +1 -0
- package/dist/core/plugins/paths.d.ts +14 -0
- package/dist/core/plugins/paths.d.ts.map +1 -0
- package/dist/core/plugins/paths.js +62 -0
- package/dist/core/plugins/paths.js.map +1 -0
- package/dist/core/plugins/pm2.d.ts +13 -0
- package/dist/core/plugins/pm2.d.ts.map +1 -0
- package/dist/core/plugins/pm2.js +61 -0
- package/dist/core/plugins/pm2.js.map +1 -0
- package/dist/core/plugins/runtime.d.ts +49 -0
- package/dist/core/plugins/runtime.d.ts.map +1 -0
- package/dist/core/plugins/runtime.js +158 -0
- package/dist/core/plugins/runtime.js.map +1 -0
- package/dist/core/plugins/service-manager.d.ts +21 -0
- package/dist/core/plugins/service-manager.d.ts.map +1 -0
- package/dist/core/plugins/service-manager.js +261 -0
- package/dist/core/plugins/service-manager.js.map +1 -0
- package/dist/core/plugins/session-manifest.d.ts +25 -0
- package/dist/core/plugins/session-manifest.d.ts.map +1 -0
- package/dist/core/plugins/session-manifest.js +58 -0
- package/dist/core/plugins/session-manifest.js.map +1 -0
- package/dist/core/plugins/skills.d.ts +7 -0
- package/dist/core/plugins/skills.d.ts.map +1 -0
- package/dist/core/plugins/skills.js +36 -0
- package/dist/core/plugins/skills.js.map +1 -0
- package/dist/core/plugins/types.d.ts +125 -0
- package/dist/core/plugins/types.d.ts.map +1 -0
- package/dist/core/plugins/types.js +2 -0
- package/dist/core/plugins/types.js.map +1 -0
- package/dist/core/repo-requirement.d.ts +86 -0
- package/dist/core/repo-requirement.d.ts.map +1 -0
- package/dist/core/repo-requirement.js +412 -0
- package/dist/core/repo-requirement.js.map +1 -0
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +5 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts +13 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +60 -15
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skills/cli-admin-command.d.ts.map +1 -1
- package/dist/core/skills/cli-admin-command.js +8 -2
- package/dist/core/skills/cli-admin-command.js.map +1 -1
- package/dist/core/skills/im-command.d.ts.map +1 -1
- package/dist/core/skills/im-command.js +3 -1
- package/dist/core/skills/im-command.js.map +1 -1
- package/dist/core/skills/manifest-store.d.ts +1 -0
- package/dist/core/skills/manifest-store.d.ts.map +1 -1
- package/dist/core/skills/manifest-store.js +4 -1
- package/dist/core/skills/manifest-store.js.map +1 -1
- package/dist/core/skills/policy.d.ts +1 -0
- package/dist/core/skills/policy.d.ts.map +1 -1
- package/dist/core/skills/policy.js +9 -5
- package/dist/core/skills/policy.js.map +1 -1
- package/dist/core/skills/session-resolver.d.ts +1 -0
- package/dist/core/skills/session-resolver.d.ts.map +1 -1
- package/dist/core/skills/session-resolver.js +1 -0
- package/dist/core/skills/session-resolver.js.map +1 -1
- package/dist/core/skills/session-runtime.d.ts +2 -1
- package/dist/core/skills/session-runtime.d.ts.map +1 -1
- package/dist/core/skills/session-runtime.js +9 -4
- package/dist/core/skills/session-runtime.js.map +1 -1
- package/dist/core/skills/sources.d.ts +33 -1
- package/dist/core/skills/sources.d.ts.map +1 -1
- package/dist/core/skills/sources.js +97 -0
- package/dist/core/skills/sources.js.map +1 -1
- package/dist/core/skills/types.d.ts +12 -0
- package/dist/core/skills/types.d.ts.map +1 -1
- package/dist/core/terminal-access.d.ts +12 -0
- package/dist/core/terminal-access.d.ts.map +1 -0
- package/dist/core/terminal-access.js +15 -0
- package/dist/core/terminal-access.js.map +1 -0
- package/dist/core/terminal-url.d.ts.map +1 -1
- package/dist/core/terminal-url.js +21 -6
- package/dist/core/terminal-url.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +34 -0
- package/dist/core/terminal-write-auth.d.ts.map +1 -0
- package/dist/core/terminal-write-auth.js +84 -0
- package/dist/core/terminal-write-auth.js.map +1 -0
- package/dist/core/tmux-recovery.d.ts +11 -0
- package/dist/core/tmux-recovery.d.ts.map +1 -0
- package/dist/core/tmux-recovery.js +19 -0
- package/dist/core/tmux-recovery.js.map +1 -0
- package/dist/core/types.d.ts +11 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/update-check.d.ts +2 -2
- package/dist/core/update-check.js +2 -2
- package/dist/core/verified-delivery.d.ts +47 -0
- package/dist/core/verified-delivery.d.ts.map +1 -0
- package/dist/core/verified-delivery.js +115 -0
- package/dist/core/verified-delivery.js.map +1 -0
- package/dist/core/worker-pool.d.ts +6 -7
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +152 -152
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +43 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +1755 -41
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +1 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +7 -2
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts +32 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +95 -17
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +8 -1
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +6 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +39 -13
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +7 -1
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/history-senders.d.ts +37 -0
- package/dist/dashboard/history-senders.d.ts.map +1 -0
- package/dist/dashboard/history-senders.js +60 -0
- package/dist/dashboard/history-senders.js.map +1 -0
- package/dist/dashboard/registry.d.ts +2 -0
- package/dist/dashboard/registry.d.ts.map +1 -1
- package/dist/dashboard/registry.js.map +1 -1
- package/dist/dashboard/roles-batch.d.ts +31 -0
- package/dist/dashboard/roles-batch.d.ts.map +1 -0
- package/dist/dashboard/roles-batch.js +87 -0
- package/dist/dashboard/roles-batch.js.map +1 -0
- package/dist/dashboard/settings-card-model.d.ts +6 -3
- package/dist/dashboard/settings-card-model.d.ts.map +1 -1
- package/dist/dashboard/settings-card-model.js +20 -5
- package/dist/dashboard/settings-card-model.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +8 -3
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +19 -2
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/skill-install-request.d.ts +4 -0
- package/dist/dashboard/skill-install-request.d.ts.map +1 -1
- package/dist/dashboard/skill-install-request.js +11 -1
- package/dist/dashboard/skill-install-request.js.map +1 -1
- package/dist/dashboard/trigger-api.d.ts +9 -1
- package/dist/dashboard/trigger-api.d.ts.map +1 -1
- package/dist/dashboard/trigger-api.js +48 -10
- package/dist/dashboard/trigger-api.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +332 -271
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +26 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +1414 -12
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +95 -4
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +43 -2141
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts +6 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +368 -311
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/connectors-page.d.ts +4 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +228 -48
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/dashboard-api.d.ts +9 -0
- package/dist/dashboard/web/dashboard-api.d.ts.map +1 -0
- package/dist/dashboard/web/dashboard-api.js +18 -0
- package/dist/dashboard/web/dashboard-api.js.map +1 -0
- package/dist/dashboard/web/dashboard-components.d.ts +92 -0
- package/dist/dashboard/web/dashboard-components.d.ts.map +1 -0
- package/dist/dashboard/web/dashboard-components.js +250 -0
- package/dist/dashboard/web/dashboard-components.js.map +1 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +39 -182
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/floating-scrollbars.d.ts +2 -0
- package/dist/dashboard/web/floating-scrollbars.d.ts.map +1 -0
- package/dist/dashboard/web/floating-scrollbars.js +264 -0
- package/dist/dashboard/web/floating-scrollbars.js.map +1 -0
- package/dist/dashboard/web/goals.d.ts +2 -0
- package/dist/dashboard/web/goals.d.ts.map +1 -0
- package/dist/dashboard/web/goals.js +800 -0
- package/dist/dashboard/web/goals.js.map +1 -0
- package/dist/dashboard/web/groups-api.d.ts +38 -0
- package/dist/dashboard/web/groups-api.d.ts.map +1 -0
- package/dist/dashboard/web/groups-api.js +44 -0
- package/dist/dashboard/web/groups-api.js.map +1 -0
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +746 -15
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/groups.d.ts +51 -18
- package/dist/dashboard/web/groups.d.ts.map +1 -1
- package/dist/dashboard/web/groups.js +145 -1096
- package/dist/dashboard/web/groups.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +741 -295
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/insights-page.d.ts.map +1 -1
- package/dist/dashboard/web/insights-page.js +1047 -14
- package/dist/dashboard/web/insights-page.js.map +1 -1
- package/dist/dashboard/web/insights.d.ts +177 -7
- package/dist/dashboard/web/insights.d.ts.map +1 -1
- package/dist/dashboard/web/insights.js +187 -1926
- package/dist/dashboard/web/insights.js.map +1 -1
- package/dist/dashboard/web/legacy-workflow-page.d.ts +3 -0
- package/dist/dashboard/web/legacy-workflow-page.d.ts.map +1 -0
- package/dist/dashboard/web/legacy-workflow-page.js +717 -0
- package/dist/dashboard/web/legacy-workflow-page.js.map +1 -0
- package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
- package/dist/dashboard/web/monitor-room.js +10 -8
- package/dist/dashboard/web/monitor-room.js.map +1 -1
- package/dist/dashboard/web/monitoring-page.d.ts.map +1 -1
- package/dist/dashboard/web/monitoring-page.js +188 -14
- package/dist/dashboard/web/monitoring-page.js.map +1 -1
- package/dist/dashboard/web/office-page.d.ts.map +1 -1
- package/dist/dashboard/web/office-page.js +11 -23
- package/dist/dashboard/web/office-page.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +141 -147
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/overview.d.ts +0 -1
- package/dist/dashboard/web/overview.d.ts.map +1 -1
- package/dist/dashboard/web/overview.js +3 -275
- package/dist/dashboard/web/overview.js.map +1 -1
- package/dist/dashboard/web/plugin-events.d.ts +2 -0
- package/dist/dashboard/web/plugin-events.d.ts.map +1 -0
- package/dist/dashboard/web/plugin-events.js +2 -0
- package/dist/dashboard/web/plugin-events.js.map +1 -0
- package/dist/dashboard/web/plugin-page.d.ts +3 -0
- package/dist/dashboard/web/plugin-page.d.ts.map +1 -0
- package/dist/dashboard/web/plugin-page.js +469 -0
- package/dist/dashboard/web/plugin-page.js.map +1 -0
- package/dist/dashboard/web/preferences.d.ts +1 -6
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +0 -21
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/role-batch.d.ts +9 -0
- package/dist/dashboard/web/role-batch.d.ts.map +1 -0
- package/dist/dashboard/web/role-batch.js +42 -0
- package/dist/dashboard/web/role-batch.js.map +1 -0
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +538 -13
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard/web/roles.d.ts +98 -1
- package/dist/dashboard/web/roles.d.ts.map +1 -1
- package/dist/dashboard/web/roles.js +117 -903
- package/dist/dashboard/web/roles.js.map +1 -1
- package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
- package/dist/dashboard/web/schedules-page.js +82 -24
- package/dist/dashboard/web/schedules-page.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts +67 -0
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -0
- package/dist/dashboard/web/sessions-kanban.js +481 -0
- package/dist/dashboard/web/sessions-kanban.js.map +1 -0
- package/dist/dashboard/web/sessions-page.d.ts +4 -0
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +1633 -18
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +45 -4
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +53 -2535
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +0 -2
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +135 -117
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts +31 -1
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +495 -131
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation-page.js +446 -28
- package/dist/dashboard/web/team-federation-page.js.map +1 -1
- package/dist/dashboard/web/team-federation.d.ts +91 -2
- package/dist/dashboard/web/team-federation.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation.js +87 -474
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard/web/theme-menu.d.ts +1 -0
- package/dist/dashboard/web/theme-menu.d.ts.map +1 -1
- package/dist/dashboard/web/theme-menu.js +79 -20
- package/dist/dashboard/web/theme-menu.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +5 -2
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +22 -20
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard/web/v3-api.d.ts +16 -0
- package/dist/dashboard/web/v3-api.d.ts.map +1 -0
- package/dist/dashboard/web/v3-api.js +21 -0
- package/dist/dashboard/web/v3-api.js.map +1 -0
- package/dist/dashboard/web/v3-components.d.ts +2 -0
- package/dist/dashboard/web/v3-components.d.ts.map +1 -0
- package/dist/dashboard/web/v3-components.js +290 -0
- package/dist/dashboard/web/v3-components.js.map +1 -0
- package/dist/dashboard/web/v3-model.d.ts +80 -0
- package/dist/dashboard/web/v3-model.d.ts.map +1 -0
- package/dist/dashboard/web/v3-model.js +240 -0
- package/dist/dashboard/web/v3-model.js.map +1 -0
- package/dist/dashboard/web/v3-page.d.ts.map +1 -1
- package/dist/dashboard/web/v3-page.js +2 -22
- package/dist/dashboard/web/v3-page.js.map +1 -1
- package/dist/dashboard/web/v3-terminal.d.ts +14 -0
- package/dist/dashboard/web/v3-terminal.d.ts.map +1 -1
- package/dist/dashboard/web/v3-terminal.js +31 -19
- package/dist/dashboard/web/v3-terminal.js.map +1 -1
- package/dist/dashboard/web/webhook-logs-page.d.ts +16 -0
- package/dist/dashboard/web/webhook-logs-page.d.ts.map +1 -0
- package/dist/dashboard/web/webhook-logs-page.js +195 -0
- package/dist/dashboard/web/webhook-logs-page.js.map +1 -0
- package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
- package/dist/dashboard/web/whiteboards-page.js +18 -23
- package/dist/dashboard/web/whiteboards-page.js.map +1 -1
- package/dist/dashboard/web/workflow-version-switch.d.ts +8 -0
- package/dist/dashboard/web/workflow-version-switch.d.ts.map +1 -0
- package/dist/dashboard/web/workflow-version-switch.js +9 -0
- package/dist/dashboard/web/workflow-version-switch.js.map +1 -0
- package/dist/dashboard/web/workflows.d.ts +272 -1
- package/dist/dashboard/web/workflows.d.ts.map +1 -1
- package/dist/dashboard/web/workflows.js +211 -1397
- package/dist/dashboard/web/workflows.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +92 -39
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -65
- package/dist/dashboard-web/brand-logo.png +0 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-G7DAWTXC.js +1 -0
- package/dist/dashboard-web/chunks/chunk-26WEWGBY.js +1 -0
- package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +66 -0
- package/dist/dashboard-web/chunks/chunk-BD3PZGH2.js +1 -0
- package/dist/dashboard-web/chunks/chunk-CUC7NN6S.js +1 -0
- package/dist/dashboard-web/chunks/chunk-EVK77ASG.js +1 -0
- package/dist/dashboard-web/chunks/chunk-PMNMWFH7.js +1 -0
- package/dist/dashboard-web/chunks/chunk-R3FXBFQH.js +1 -0
- package/dist/dashboard-web/chunks/chunk-SRIE4MLQ.js +1 -0
- package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +1 -0
- package/dist/dashboard-web/chunks/chunk-SYCMR6QJ.js +37 -0
- package/dist/dashboard-web/chunks/{chunk-PE6W3C2C.js → chunk-TOQZ4B7V.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-Y5CECBH3.js +1 -0
- package/dist/dashboard-web/chunks/goals-BHR5JHZU.js +94 -0
- package/dist/dashboard-web/chunks/groups-page-NL5E7PRO.js +8 -0
- package/dist/dashboard-web/chunks/insights-page-TR5XEPIS.js +22 -0
- package/dist/dashboard-web/chunks/legacy-workflow-page-3DUDDHNN.js +2 -0
- package/dist/dashboard-web/chunks/{monitor-room-RFX4HPS5.js → monitor-room-PCKVNUQ2.js} +17 -15
- package/dist/dashboard-web/chunks/monitoring-page-ZOUXGCBM.js +2 -0
- package/dist/dashboard-web/chunks/office-page-3AJ2AKX5.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-54HRXQKY.js +1 -0
- package/dist/dashboard-web/chunks/plugin-page-7FW2LPJH.js +1 -0
- package/dist/dashboard-web/chunks/roles-page-UYLRV5ZM.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-VM6PMLHU.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-WEMS3HNZ.js +3 -0
- package/dist/dashboard-web/chunks/settings-page-DBWXQGZX.js +2 -0
- package/dist/dashboard-web/chunks/skills-page-5IAW7FDO.js +4 -0
- package/dist/dashboard-web/chunks/team-federation-page-7CVJVWJK.js +1 -0
- package/dist/dashboard-web/chunks/v3-page-75ALUY3U.js +94 -0
- package/dist/dashboard-web/chunks/whiteboards-page-ITSZWK2R.js +1 -0
- package/dist/dashboard-web/favicon.png +0 -0
- package/dist/dashboard-web/index.html +5 -69
- package/dist/dashboard-web/style.css +20515 -7198
- package/dist/dashboard.js +785 -53
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +19 -2
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +15 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +18 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +18 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +33 -7
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +223 -46
- 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 +319 -33
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +126 -8
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +4 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/settings-card.d.ts.map +1 -1
- package/dist/im/lark/settings-card.js +2 -1
- package/dist/im/lark/settings-card.js.map +1 -1
- package/dist/platform/binding.d.ts +9 -0
- package/dist/platform/binding.d.ts.map +1 -1
- package/dist/platform/binding.js +14 -0
- package/dist/platform/binding.js.map +1 -1
- package/dist/platform/tunnel-client.d.ts.map +1 -1
- package/dist/platform/tunnel-client.js +9 -0
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +1 -1
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +11 -5
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/file-bridge-path.d.ts +8 -0
- package/dist/services/file-bridge-path.d.ts.map +1 -0
- package/dist/services/file-bridge-path.js +75 -0
- package/dist/services/file-bridge-path.js.map +1 -0
- package/dist/services/goal-chat-store.d.ts +43 -0
- package/dist/services/goal-chat-store.d.ts.map +1 -0
- package/dist/services/goal-chat-store.js +148 -0
- package/dist/services/goal-chat-store.js.map +1 -0
- package/dist/services/goal-decision-options.d.ts +7 -0
- package/dist/services/goal-decision-options.d.ts.map +1 -0
- package/dist/services/goal-decision-options.js +25 -0
- package/dist/services/goal-decision-options.js.map +1 -0
- package/dist/services/goal-narration-store.d.ts +16 -0
- package/dist/services/goal-narration-store.d.ts.map +1 -0
- package/dist/services/goal-narration-store.js +74 -0
- package/dist/services/goal-narration-store.js.map +1 -0
- package/dist/services/goal-notification-retry-store.d.ts +46 -0
- package/dist/services/goal-notification-retry-store.d.ts.map +1 -0
- package/dist/services/goal-notification-retry-store.js +114 -0
- package/dist/services/goal-notification-retry-store.js.map +1 -0
- package/dist/services/goal-parent-notification-store.d.ts +22 -0
- package/dist/services/goal-parent-notification-store.d.ts.map +1 -0
- package/dist/services/goal-parent-notification-store.js +45 -0
- package/dist/services/goal-parent-notification-store.js.map +1 -0
- package/dist/services/grok-paths.d.ts +27 -0
- package/dist/services/grok-paths.d.ts.map +1 -0
- package/dist/services/grok-paths.js +106 -0
- package/dist/services/grok-paths.js.map +1 -0
- package/dist/services/grok-transcript.d.ts +67 -0
- package/dist/services/grok-transcript.d.ts.map +1 -0
- package/dist/services/grok-transcript.js +630 -0
- package/dist/services/grok-transcript.js.map +1 -0
- package/dist/services/group-creator.d.ts.map +1 -1
- package/dist/services/group-creator.js +10 -1
- package/dist/services/group-creator.js.map +1 -1
- package/dist/services/hermes-session-filter.d.ts +28 -0
- package/dist/services/hermes-session-filter.d.ts.map +1 -0
- package/dist/services/hermes-session-filter.js +53 -0
- package/dist/services/hermes-session-filter.js.map +1 -0
- package/dist/services/hermes-transcript.d.ts +3 -0
- package/dist/services/hermes-transcript.d.ts.map +1 -1
- package/dist/services/hermes-transcript.js +20 -2
- package/dist/services/hermes-transcript.js.map +1 -1
- package/dist/services/kiro-session.d.ts +2 -0
- package/dist/services/kiro-session.d.ts.map +1 -0
- package/dist/services/kiro-session.js +19 -0
- package/dist/services/kiro-session.js.map +1 -0
- package/dist/services/local-cli-opener.d.ts +58 -0
- package/dist/services/local-cli-opener.d.ts.map +1 -0
- package/dist/services/local-cli-opener.js +252 -0
- package/dist/services/local-cli-opener.js.map +1 -0
- package/dist/services/observed-bot-union-ids-store.d.ts +20 -0
- package/dist/services/observed-bot-union-ids-store.d.ts.map +1 -0
- package/dist/services/observed-bot-union-ids-store.js +102 -0
- package/dist/services/observed-bot-union-ids-store.js.map +1 -0
- package/dist/services/plugin-registry-store.d.ts +8 -0
- package/dist/services/plugin-registry-store.d.ts.map +1 -0
- package/dist/services/plugin-registry-store.js +71 -0
- package/dist/services/plugin-registry-store.js.map +1 -0
- package/dist/services/resumable-session-discovery.d.ts +3 -0
- package/dist/services/resumable-session-discovery.d.ts.map +1 -1
- package/dist/services/resumable-session-discovery.js +6 -1
- package/dist/services/resumable-session-discovery.js.map +1 -1
- package/dist/services/sandbox-store.d.ts +12 -0
- package/dist/services/sandbox-store.d.ts.map +1 -1
- package/dist/services/sandbox-store.js +33 -0
- package/dist/services/sandbox-store.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts +17 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +322 -8
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +29 -0
- package/dist/services/structured-bridge-clis.d.ts.map +1 -0
- package/dist/services/structured-bridge-clis.js +76 -0
- package/dist/services/structured-bridge-clis.js.map +1 -0
- package/dist/services/trigger-log-store.d.ts +59 -0
- package/dist/services/trigger-log-store.d.ts.map +1 -1
- package/dist/services/trigger-log-store.js +81 -10
- package/dist/services/trigger-log-store.js.map +1 -1
- package/dist/services/usage-ledger.d.ts +4 -1
- package/dist/services/usage-ledger.d.ts.map +1 -1
- package/dist/services/usage-ledger.js +48 -10
- package/dist/services/usage-ledger.js.map +1 -1
- package/dist/services/webhook-audit.d.ts +10 -0
- package/dist/services/webhook-audit.d.ts.map +1 -0
- package/dist/services/webhook-audit.js +116 -0
- package/dist/services/webhook-audit.js.map +1 -0
- package/dist/services/whiteboard-store.d.ts +6 -1
- package/dist/services/whiteboard-store.d.ts.map +1 -1
- package/dist/services/whiteboard-store.js +3 -3
- package/dist/services/whiteboard-store.js.map +1 -1
- package/dist/setup/app-name.d.ts +7 -0
- package/dist/setup/app-name.d.ts.map +1 -0
- package/dist/setup/app-name.js +10 -0
- package/dist/setup/app-name.js.map +1 -0
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +7 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-tmux.d.ts +26 -12
- package/dist/setup/ensure-tmux.d.ts.map +1 -1
- package/dist/setup/ensure-tmux.js +85 -18
- package/dist/setup/ensure-tmux.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +89 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +277 -22
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/setup-args.d.ts +6 -1
- package/dist/setup/setup-args.d.ts.map +1 -1
- package/dist/setup/setup-args.js +79 -10
- package/dist/setup/setup-args.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +228 -47
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +16 -0
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +25 -0
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/global-install.d.ts +22 -0
- package/dist/utils/global-install.d.ts.map +1 -0
- package/dist/utils/global-install.js +106 -0
- package/dist/utils/global-install.js.map +1 -0
- package/dist/utils/install-diagnostics.d.ts +1 -1
- package/dist/utils/install-diagnostics.d.ts.map +1 -1
- package/dist/utils/install-diagnostics.js +6 -4
- package/dist/utils/install-diagnostics.js.map +1 -1
- package/dist/utils/install-info.d.ts +2 -0
- package/dist/utils/install-info.d.ts.map +1 -1
- package/dist/utils/install-info.js +10 -4
- package/dist/utils/install-info.js.map +1 -1
- package/dist/verified-delivery/acceptance.d.ts +32 -0
- package/dist/verified-delivery/acceptance.d.ts.map +1 -0
- package/dist/verified-delivery/acceptance.js +149 -0
- package/dist/verified-delivery/acceptance.js.map +1 -0
- package/dist/verified-delivery/attention.d.ts +128 -0
- package/dist/verified-delivery/attention.d.ts.map +1 -0
- package/dist/verified-delivery/attention.js +184 -0
- package/dist/verified-delivery/attention.js.map +1 -0
- package/dist/verified-delivery/envelope.d.ts +91 -0
- package/dist/verified-delivery/envelope.d.ts.map +1 -0
- package/dist/verified-delivery/envelope.js +173 -0
- package/dist/verified-delivery/envelope.js.map +1 -0
- package/dist/verified-delivery/goal-board.d.ts +106 -0
- package/dist/verified-delivery/goal-board.d.ts.map +1 -0
- package/dist/verified-delivery/goal-board.js +223 -0
- package/dist/verified-delivery/goal-board.js.map +1 -0
- package/dist/verified-delivery/invariants.d.ts +10 -0
- package/dist/verified-delivery/invariants.d.ts.map +1 -0
- package/dist/verified-delivery/invariants.js +188 -0
- package/dist/verified-delivery/invariants.js.map +1 -0
- package/dist/verified-delivery/ledger.d.ts +24 -0
- package/dist/verified-delivery/ledger.d.ts.map +1 -0
- package/dist/verified-delivery/ledger.js +243 -0
- package/dist/verified-delivery/ledger.js.map +1 -0
- package/dist/verified-delivery/narration.d.ts +66 -0
- package/dist/verified-delivery/narration.d.ts.map +1 -0
- package/dist/verified-delivery/narration.js +111 -0
- package/dist/verified-delivery/narration.js.map +1 -0
- package/dist/verified-delivery/reconcile.d.ts +114 -0
- package/dist/verified-delivery/reconcile.d.ts.map +1 -0
- package/dist/verified-delivery/reconcile.js +224 -0
- package/dist/verified-delivery/reconcile.js.map +1 -0
- package/dist/verified-delivery/report.d.ts +37 -0
- package/dist/verified-delivery/report.d.ts.map +1 -0
- package/dist/verified-delivery/report.js +62 -0
- package/dist/verified-delivery/report.js.map +1 -0
- package/dist/verified-delivery/types.d.ts +291 -0
- package/dist/verified-delivery/types.d.ts.map +1 -0
- package/dist/verified-delivery/types.js +32 -0
- package/dist/verified-delivery/types.js.map +1 -0
- package/dist/worker.js +559 -217
- package/dist/worker.js.map +1 -1
- package/dist/workflows/attempt-resume.d.ts.map +1 -1
- package/dist/workflows/attempt-resume.js +1 -1
- package/dist/workflows/attempt-resume.js.map +1 -1
- package/dist/workflows/definition.d.ts +24 -24
- package/dist/workflows/events/payloads.d.ts +24 -24
- package/dist/workflows/events/schema.d.ts +366 -366
- package/package.json +13 -7
- package/dist/dashboard/web/connectors.d.ts +0 -2
- package/dist/dashboard/web/connectors.d.ts.map +0 -1
- package/dist/dashboard/web/connectors.js +0 -2
- package/dist/dashboard/web/connectors.js.map +0 -1
- package/dist/dashboard/web/office.d.ts +0 -2
- package/dist/dashboard/web/office.d.ts.map +0 -1
- package/dist/dashboard/web/office.js +0 -2
- package/dist/dashboard/web/office.js.map +0 -1
- package/dist/dashboard/web/schedules.d.ts +0 -2
- package/dist/dashboard/web/schedules.d.ts.map +0 -1
- package/dist/dashboard/web/schedules.js +0 -2
- package/dist/dashboard/web/schedules.js.map +0 -1
- package/dist/dashboard/web/settings.d.ts +0 -2
- package/dist/dashboard/web/settings.d.ts.map +0 -1
- package/dist/dashboard/web/settings.js +0 -2
- package/dist/dashboard/web/settings.js.map +0 -1
- package/dist/dashboard/web/skills.d.ts +0 -2
- package/dist/dashboard/web/skills.d.ts.map +0 -1
- package/dist/dashboard/web/skills.js +0 -2
- package/dist/dashboard/web/skills.js.map +0 -1
- package/dist/dashboard/web/skin-intro.d.ts +0 -4
- package/dist/dashboard/web/skin-intro.d.ts.map +0 -1
- package/dist/dashboard/web/skin-intro.js +0 -49
- package/dist/dashboard/web/skin-intro.js.map +0 -1
- package/dist/dashboard/web/v3.d.ts +0 -3
- package/dist/dashboard/web/v3.d.ts.map +0 -1
- package/dist/dashboard/web/v3.js +0 -539
- package/dist/dashboard/web/v3.js.map +0 -1
- package/dist/dashboard/web/whiteboards.d.ts +0 -2
- package/dist/dashboard/web/whiteboards.d.ts.map +0 -1
- package/dist/dashboard/web/whiteboards.js +0 -2
- package/dist/dashboard/web/whiteboards.js.map +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-OCIHPGEU.js +0 -438
- package/dist/dashboard-web/chunks/chunk-3N2PPQVD.js +0 -1
- package/dist/dashboard-web/chunks/chunk-3UJYRR2Q.js +0 -37
- package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +0 -1
- package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +0 -54
- package/dist/dashboard-web/chunks/chunk-QW54DWU3.js +0 -325
- package/dist/dashboard-web/chunks/connectors-IGETYWCP.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-MYBS4ZYJ.js +0 -207
- package/dist/dashboard-web/chunks/insights-page-UPA32V2S.js +0 -309
- package/dist/dashboard-web/chunks/monitoring-page-7T3BESZ2.js +0 -1
- package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +0 -1
- package/dist/dashboard-web/chunks/overview-page-LJSBCQW4.js +0 -1
- package/dist/dashboard-web/chunks/roles-page-ESURTVQH.js +0 -98
- package/dist/dashboard-web/chunks/schedules-LML2ISOT.js +0 -1
- package/dist/dashboard-web/chunks/sessions-YB73XOTU.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-MCO5QR7Z.js +0 -1
- package/dist/dashboard-web/chunks/settings-page-OSDKNVS3.js +0 -2
- package/dist/dashboard-web/chunks/skills-page-PXBZJ6P6.js +0 -2
- package/dist/dashboard-web/chunks/team-federation-page-TTPVHFPX.js +0 -10
- package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +0 -149
- package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +0 -1
- package/dist/dashboard-web/chunks/workflows-FCPM4S4D.js +0 -184
- package/dist/dashboard-web/skins/bluearchive-hero.webp +0 -0
- package/dist/dashboard-web/skins/dragonball-goku.webp +0 -0
- package/dist/dashboard-web/skins/dragonball-wukong.webp +0 -0
- package/dist/dashboard-web/skins/genshin-breeze.webp +0 -0
- package/dist/dashboard-web/skins/ikun-hero.webp +0 -0
- package/dist/dashboard-web/skins/prts-priestess.webp +0 -0
- package/dist/dashboard-web/skins/zzz-hero.webp +0 -0
- package/dist/dashboard-web/skins/zzz-pattern.svg +0 -25
package/README.en.md
CHANGED
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
<a href="#design-philosophy">Design</a> ·
|
|
16
16
|
<a href="#key-advantages">Advantages</a> ·
|
|
17
17
|
<a href="#5-minute-setup">Quick Start</a> ·
|
|
18
|
-
<a href="https://github.
|
|
18
|
+
<a href="https://deepcoldy.github.io/botmux/en/"><b>📖 Docs</b></a>
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
[中文](README.md) | English
|
|
22
22
|
|
|
23
23
|
**Plug any AI coding CLI into Feishu/Lark — every DM, group or topic gets its own CLI session, with live-streaming cards, a web terminal, and zero glue code.**
|
|
24
24
|
|
|
25
|
-
> 📖 **Full docs** (commands / config / best practices / troubleshooting): **<https://github.
|
|
25
|
+
> 📖 **Full docs** (commands / config / best practices / troubleshooting): **<https://deepcoldy.github.io/botmux/en/>** — this README only covers why and how to get started fast.
|
|
26
26
|
|
|
27
27
|
| Lark Streaming Cards | Web Terminal | tmux Session Management | Multi-Bot Collaboration |
|
|
28
28
|
|:-:|:-:|:-:|:-:|
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
### Design Philosophy
|
|
42
42
|
|
|
43
|
-
Core philosophy: **Bridge CLIs, don't rebuild them**. botmux doesn't reimplement Agent capabilities — it bridges existing AI coding CLIs (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, GitHub Copilot, Kimi Code) directly. Memory, context management, tool use, permission systems — these capabilities are evolving rapidly within the CLIs themselves. botmux rides on top of that evolution rather than rebuilding in parallel. Every CLI upgrade benefits botmux automatically with zero adaptation.
|
|
43
|
+
Core philosophy: **Bridge CLIs, don't rebuild them**. botmux doesn't reimplement Agent capabilities — it bridges existing AI coding CLIs (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, GitHub Copilot, Kimi Code, Grok Build, Kiro) directly. Memory, context management, tool use, permission systems — these capabilities are evolving rapidly within the CLIs themselves. botmux rides on top of that evolution rather than rebuilding in parallel. Every CLI upgrade benefits botmux automatically with zero adaptation.
|
|
44
44
|
|
|
45
45
|
### Key Advantages
|
|
46
46
|
|
|
@@ -52,7 +52,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
|
|
|
52
52
|
| CLI Capabilities | Full runtime (hooks, memory, plan mode, skills, `/` commands) | SDK API subset, missing features must be reimplemented |
|
|
53
53
|
| CLI Upgrades | Zero-adaptation automatic benefit | Must track SDK version changes |
|
|
54
54
|
| Memory / Context | Reuses CLI's built-in memory system, improves as the CLI evolves | Must build custom memory system, duplicating CLI-native capabilities |
|
|
55
|
-
| Multi-CLI Support |
|
|
55
|
+
| Multi-CLI Support | Many CLIs, switch with one config (Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro, …) | Tied to a single SDK, cannot switch CLIs |
|
|
56
56
|
| Web Terminal | Interactive full terminal, mobile shortcut toolbar, phone/desktop/Lark tri-screen sync | Usually web chat UI or read-only output |
|
|
57
57
|
| Multi-Bot Collaboration | Multiple bots in same group via @mention routing, isolated processes, different CLIs sparring | Usually single bot |
|
|
58
58
|
| Multi-Topic Collaboration | A lead bot auto-splits the task, opens multiple topics, and dispatches several bots to work in parallel (coder + reviewer), with a Lark task list as the shared progress board | Usually manual one-by-one assignment, no unified progress board |
|
|
@@ -64,7 +64,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
|
|
|
64
64
|
## Prerequisites
|
|
65
65
|
|
|
66
66
|
- **Node.js** >= 22
|
|
67
|
-
- **AI coding CLI / local agent app** installed and authenticated (`claude`, `codex`, `coco`, `cursor-agent`, `gemini`, `genius`, `opencode`, `hermes`, `seed` (Seed CLI, a Claude Code fork), `relay` (Relay CLI, the new release of Seed), `pi`, `omp` (oh-my-pi, a Pi fork), `copilot` (GitHub Copilot CLI), `traex` (TRAE CLI), `mircli` (Mir CLI), `agy` (Antigravity),
|
|
67
|
+
- **AI coding CLI / local agent app** installed and authenticated (`claude`, `codex`, `coco`, `cursor-agent`, `gemini`, `genius`, `opencode`, `hermes`, `seed` (Seed CLI, a Claude Code fork), `relay` (Relay CLI, the new release of Seed), `pi`, `omp` (oh-my-pi, a Pi fork), `copilot` (GitHub Copilot CLI), `traex` (TRAE CLI), `mircli` (Mir CLI), `agy` (Antigravity), `kimi` (Kimi Code), `grok` (Grok Build), or `kiro-cli` (Kiro) in PATH)
|
|
68
68
|
- **CoCo requires `0.120.32+`**: type-ahead (sending a new message while a turn is still running, parked in CoCo's own message queue) relies on 0.120.32+ behavior; earlier versions may drop or serialize input while busy — upgrade before use
|
|
69
69
|
- **tmux** >= 3.x (optional — auto-enabled when installed for persistent CLI sessions)
|
|
70
70
|
- **CJK fonts** (only needed for screenshot rendering of Chinese text / emoji):
|
|
@@ -74,15 +74,18 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
|
|
|
74
74
|
|
|
75
75
|
## 5-Minute Setup
|
|
76
76
|
|
|
77
|
-
> 💡 **TL;DR**: `npm i -g botmux` → `botmux setup
|
|
77
|
+
> 💡 **TL;DR**: `npm i -g botmux` → `botmux setup`; for Feishu tenants, **one QR scan** creates a working bot → `botmux start`. The same Web session names the app (`botmux-N` by default, customizable), creates it, reads AppID/AppSecret, imports permissions, configures the redirect URL, and creates + submits a publish version. Pass `--no-open-platform-auto` to skip permission/publish automation after app creation.
|
|
78
78
|
|
|
79
79
|
### 1. Install botmux
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
82
|
npm install -g botmux
|
|
83
|
+
# or: pnpm add -g botmux
|
|
83
84
|
```
|
|
84
85
|
|
|
85
|
-
|
|
86
|
+
Manual and scheduled updates keep using the npm or pnpm global location that owns the running botmux install. Unknown install layouts are never silently updated with npm.
|
|
87
|
+
|
|
88
|
+
> Requires **Node.js ≥ 22**, with at least one AI coding CLI installed and authenticated (`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` / `kimi` / `grok` / `kiro-cli` on your PATH). Installing **tmux** too is recommended (enables session persistence automatically).
|
|
86
89
|
|
|
87
90
|
### 2. Create the App & Configure (`botmux setup`)
|
|
88
91
|
|
|
@@ -90,7 +93,7 @@ Run `botmux setup` — every choice is an interactive picker (↑/↓ to move, t
|
|
|
90
93
|
|
|
91
94
|
1. **Action**: a fresh install goes straight into the create flow; with an existing config, first pick "add / reconfigure / edit / remove bot".
|
|
92
95
|
2. **App source** — pick one of three:
|
|
93
|
-
- **
|
|
96
|
+
- **One-scan app creation (recommended)**: enter a bot name or leave it blank for `botmux-0`, `botmux-1`, etc. After Feishu Web QR login, botmux uploads its default icon, creates a custom app, reads AppID/AppSecret, then reuses that session for permissions and publishing. If Web creation is unavailable or the account is on Lark international, the user can explicitly choose the official `@larksuiteoapi/node-sdk` compatibility mode; it may require an additional scan and the platform chooses the app name.
|
|
94
97
|
- **Pick an existing app**: reuse (or QR-login to get) a Feishu web session, list the apps you previously created on the Open Platform, and have the **AppID/AppSecret fetched automatically** — no digging through the console when re-configuring on a new machine (Feishu tenants only).
|
|
95
98
|
- **Enter AppID/Secret manually** — see "Create the app manually" folded below.
|
|
96
99
|
3. **Pick the CLI**: choose the CLI to bridge (searchable — type `cla` to filter Claude).
|
|
@@ -98,9 +101,9 @@ Run `botmux setup` — every choice is an interactive picker (↑/↓ to move, t
|
|
|
98
101
|
- **Fixed default dir (recommended)**: new topics start straight in the given directory with **no card** (persisted as `defaultWorkingDir`; change later via `/config` or `botmux setup edit`). Pick this if you want the bot to just work in one directory.
|
|
99
102
|
- **Repo-select card**: each new topic pops a card listing scanned git repos to choose from — good when you hop between repos. The follow-up question asks for the **repo scan root(s)** — usually the **parent directory** of your git projects (e.g. `~/projects`, comma-separated for multiple); the card scans **downward** for git repos (up to 3 levels). Avoid `~` (too many folders to traverse).
|
|
100
103
|
|
|
101
|
-
|
|
104
|
+
After app creation, setup reuses the same Web session to import permissions, configure `http://127.0.0.1:9768/callback`, and create + submit a publish version, so the Feishu primary path **has no second QR code**. Another scan is possible only after the user explicitly selects SDK compatibility mode. Automation failures still print the manual steps without affecting the saved bot config.
|
|
102
105
|
|
|
103
|
-
> ✅ **Both Feishu (feishu.cn) and Lark international (larksuite.com) tenants are supported.**
|
|
106
|
+
> ✅ **Both Feishu (feishu.cn) and Lark international (larksuite.com) tenants are supported.** Feishu uses the one-scan Web flow; explicitly selected SDK compatibility mode auto-detects and remembers Lark international tenants. The manual paste path asks once. Each bot connects to its own brand's domain, so one machine can run Feishu and Lark bots side by side, with login credentials isolated per app.
|
|
104
107
|
|
|
105
108
|
At the end, setup validates credentials with a `tenant_access_token` call (only writing `bots.json` on success) and writes the full scope JSON to `~/.botmux/lark-scopes.json` for reference.
|
|
106
109
|
|
|
@@ -109,6 +112,11 @@ At the end, setup validates credentials with a `tenant_access_token` call (only
|
|
|
109
112
|
|
|
110
113
|
```bash
|
|
111
114
|
botmux setup list --json # list bots (secret masked)
|
|
115
|
+
botmux setup add --create-app \
|
|
116
|
+
--app-name "Engineering Assistant" \
|
|
117
|
+
--allowed-users alice@example.com # first use scans once; later valid sessions skip it
|
|
118
|
+
botmux setup add --create-app --switch-account \
|
|
119
|
+
--allowed-users alice@example.com # explicitly rescan and replace the local session
|
|
112
120
|
botmux setup add \
|
|
113
121
|
--app-id cli_xxx --app-secret xxx \
|
|
114
122
|
--allowed-users alice@example.com \
|
|
@@ -120,7 +128,8 @@ botmux setup help # full flag reference
|
|
|
120
128
|
```
|
|
121
129
|
|
|
122
130
|
- `--working-dir` is the repo-select card's scan root; `--default-working-dir` is the fixed default dir (new topics start there directly, no card) — the same two modes as the TUI question.
|
|
123
|
-
- `--
|
|
131
|
+
- `--create-app` reuses a valid session and reports the confirmed account/tenant on stderr; the first use scans once. `--switch-account` explicitly rescans and replaces the local session. `--json` never opens an unexpected QR when no valid cache exists unless `--switch-account` is passed. On success it returns the frozen `appName` and `appId`; a post-creation failure returns `partial`, `appId`, and an `--open-platform-auto` recovery command without creating another app.
|
|
132
|
+
- Existing-credential mode skips Open Platform automation unless `--open-platform-auto` is passed. `--compatibility-mode` must be selected explicitly, may need another scan, and does not support `--app-name`.
|
|
124
133
|
- If you previously scripted setup by piping numbered answers into the TUI, migrate to these subcommands: whenever the question sequence changes (this release adds the working-dir mode question), piped answers silently shift.
|
|
125
134
|
|
|
126
135
|
</details>
|
|
@@ -150,7 +159,7 @@ botmux autostart enable
|
|
|
150
159
|
```
|
|
151
160
|
|
|
152
161
|
<details>
|
|
153
|
-
<summary><b>Manual Open Platform config: create app / permissions / redirect / publish (fallback)</b> —— handled automatically by botmux setup
|
|
162
|
+
<summary><b>Manual Open Platform config: create app / permissions / redirect / publish (fallback)</b> —— handled automatically by botmux setup with the same login session; expand only if auto-config failed or you want to verify manually</summary>
|
|
154
163
|
|
|
155
164
|
<br>
|
|
156
165
|
|
|
@@ -188,7 +197,7 @@ base64 -w0 < ~/.botmux/lark-scopes.json | awk 'BEGIN{printf "\033]52;c;"}{printf
|
|
|
188
197
|
|
|
189
198
|
<br>
|
|
190
199
|
|
|
191
|
-
|
|
200
|
+
botmux enables the bot capability, long-connection event mode, and baseline event subscriptions automatically, so normally you don't touch this. If the bot **receives no messages at all** (not even DMs) after following the steps above, verify these two:
|
|
192
201
|
|
|
193
202
|
- **Event subscription**: Open Platform → your app → Events & Callbacks → should subscribe to `im.message.receive_v1` + `card.action.trigger` (subscribed by default; add manually if missing). The delivery method must be "Receive events via long connection" (WebSocket), with the botmux daemon running.
|
|
194
203
|
- **Bot capability**: Open Platform → your app → Features → Bot should be enabled (on by default); name/avatar are editable.
|
|
@@ -223,7 +232,7 @@ On mobile/tablet, a floating shortcut toolbar provides Esc, Ctrl+C, Tab, arrow k
|
|
|
223
232
|
|
|
224
233
|
### Multi-Bot Collaboration
|
|
225
234
|
|
|
226
|
-
Run multiple Lark bots on a single machine, each mapped to a different CLI. In the same group chat, messages are routed via @mention — each bot gets its own isolated CLI process. With a single bot in the group, it responds automatically without @. In a regular (non-topic) group, `@<bot1> @<bot2> /t xxx` spawns one independent thread per mentioned bot anchored at the same message. Send `@<bot1> @<bot2> /introduce` once so they register each other's open_id; afterwards each bot can explicitly @-mention the others from within its own session (commands: [📖 Docs · Slash Commands](https://github.
|
|
235
|
+
Run multiple Lark bots on a single machine, each mapped to a different CLI. In the same group chat, messages are routed via @mention — each bot gets its own isolated CLI process. With a single bot in the group, it responds automatically without @. In a regular (non-topic) group, `@<bot1> @<bot2> /t xxx` spawns one independent thread per mentioned bot anchored at the same message. Send `@<bot1> @<bot2> /introduce` once so they register each other's open_id; afterwards each bot can explicitly @-mention the others from within its own session (commands: [📖 Docs · Slash Commands](https://deepcoldy.github.io/botmux/en/slash-commands)).
|
|
227
236
|
|
|
228
237
|
### Multi-Topic Collaboration
|
|
229
238
|
|
|
@@ -311,7 +320,7 @@ ISO timestamp (`2026-05-01T10:00`).
|
|
|
311
320
|
When a CLI spawns inside a botmux session it automatically gets
|
|
312
321
|
`~/.botmux/bin` on PATH plus a set of ready-to-use Skills:
|
|
313
322
|
|
|
314
|
-
- `botmux send` — send a message to the current thread (text, images, files, @mention)
|
|
323
|
+
- `botmux send` — send a message to the current thread (text, images, files, interactive card JSON, @mention)
|
|
315
324
|
- `botmux history` — fetch session history (topic groups → in-thread, regular groups → whole chat)
|
|
316
325
|
- `botmux quoted <message_id>` — when the user @ed the bot via Lark's quote-reply UI, fetch the quoted message on demand
|
|
317
326
|
- `botmux bots list` — discover bots + their `open_id`s
|
|
@@ -330,6 +339,7 @@ Gemini / OpenCode / Antigravity / GitHub Copilot), with no MCP protocol support
|
|
|
330
339
|
> `botmux dashboard` issues a one-time-token URL — manage every daemon/bot from the browser.
|
|
331
340
|
|
|
332
341
|
- One-click locate back to the Feishu thread / open Web Terminal / multi-select batch close
|
|
342
|
+
- Add a bot with the same one-scan Feishu flow: optional stable name, AI CLI and working-directory choices, fail-closed administrator confirmation, and an explicit compatibility fallback
|
|
333
343
|
- Create a new group with auto owner-transfer + @-mention notification
|
|
334
344
|
- Disband or leave a chat (associated sessions auto-closed)
|
|
335
345
|
- **Session Insights** (owner-only, read-only): parse each session's transcript to view action spans / work timeline / context curve / failure aggregates + diagnostic suggestions; send `/insight` in chat for the current session's summary card
|
|
@@ -387,16 +397,16 @@ Notes:
|
|
|
387
397
|
|
|
388
398
|
The full reference — commands, config, best practices, troubleshooting — lives in the docs site; not duplicated here —
|
|
389
399
|
|
|
390
|
-
### 👉 https://github.
|
|
400
|
+
### 👉 https://deepcoldy.github.io/botmux/en/
|
|
391
401
|
|
|
392
402
|
| Topic | Docs |
|
|
393
403
|
|-------|------|
|
|
394
|
-
| Slash commands / CLI commands / agent-facing subcommands | [Commands](https://github.
|
|
395
|
-
| `bots.json` fields / env vars / file locations | [Configuration](https://github.
|
|
396
|
-
| Multi-CLI adapters (incl. wrapper / gateway integration) | [Adapters](https://github.
|
|
397
|
-
| Scenario-based best practices (Oncall / alerting-ops / solo dev / team) | [Best Practices](https://github.
|
|
398
|
-
| Common pitfalls / FAQ | [Pitfalls](https://github.
|
|
399
|
-
| Features: scheduled tasks / Oncall / Dashboard / multi-bot / session relay | [Schedule](https://github.
|
|
404
|
+
| Slash commands / CLI commands / agent-facing subcommands | [Commands](https://deepcoldy.github.io/botmux/en/slash-commands) |
|
|
405
|
+
| `bots.json` fields / env vars / file locations | [Configuration](https://deepcoldy.github.io/botmux/en/bots-json) |
|
|
406
|
+
| Multi-CLI adapters (incl. wrapper / gateway integration) | [Adapters](https://deepcoldy.github.io/botmux/en/adapters) |
|
|
407
|
+
| Scenario-based best practices (Oncall / alerting-ops / solo dev / team) | [Best Practices](https://deepcoldy.github.io/botmux/en/best-practices) |
|
|
408
|
+
| Common pitfalls / FAQ | [Pitfalls](https://deepcoldy.github.io/botmux/en/pitfalls) · [FAQ](https://deepcoldy.github.io/botmux/en/faq) |
|
|
409
|
+
| Features: scheduled tasks / Oncall / Dashboard / multi-bot / session relay | [Schedule](https://deepcoldy.github.io/botmux/en/schedule) · [Oncall](https://deepcoldy.github.io/botmux/en/oncall) · [Dashboard](https://deepcoldy.github.io/botmux/en/dashboard) · [Multi-bot](https://deepcoldy.github.io/botmux/en/multi-bot) · [Relay](https://deepcoldy.github.io/botmux/en/relay) |
|
|
400
410
|
|
|
401
411
|
## Contributing
|
|
402
412
|
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<a href="#设计理念">设计理念</a> · <a href="#核心优势">核心优势</a> · <a href="#5-分钟快速接入">快速接入</a> · <a href="https://github.
|
|
15
|
+
<a href="#设计理念">设计理念</a> · <a href="#核心优势">核心优势</a> · <a href="#5-分钟快速接入">快速接入</a> · <a href="https://deepcoldy.github.io/botmux/"><b>📖 文档</b></a> · <a href="https://bytedance.larkoffice.com/wiki/UBOXwH01CixfxfkqxUpcKgvQnsg"><b>✨ 效果展示</b></a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
<p align="center">
|
|
@@ -21,9 +21,11 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
**飞书 + AI 编程 CLI——私聊 / 群聊 / 话题,每个会话一个独立 CLI 进程,实时流式回传。** Daemon 监听飞书消息,为每个新会话自动启动独立 CLI 进程(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code),提供实时流式卡片和可交互 Web 终端。
|
|
24
|
+
**飞书 + AI 编程 CLI——私聊 / 群聊 / 话题,每个会话一个独立 CLI 进程,实时流式回传。** Daemon 监听飞书消息,为每个新会话自动启动独立 CLI 进程(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro),提供实时流式卡片和可交互 Web 终端。
|
|
25
25
|
|
|
26
|
-
>
|
|
26
|
+
> ✨ **先看效果**:[**《5 分钟创建一个真正好用的飞书助理》**](https://bytedance.larkoffice.com/wiki/UBOXwH01CixfxfkqxUpcKgvQnsg) —— 飞书图文 + 视频演示:AI 消息提醒 / 多端同步跨端操作 / 多 Bot 协作 / 多话题并行编排 / 语音总结 + 飞书会议 / Oncall 与个人替身。
|
|
27
|
+
|
|
28
|
+
> 📖 **完整文档**(命令 / 配置 / 最佳实践 / 排错):**<https://deepcoldy.github.io/botmux/>** ——本 README 只讲为什么用它和怎么快速上手。
|
|
27
29
|
|
|
28
30
|
## 演示
|
|
29
31
|
|
|
@@ -45,7 +47,7 @@
|
|
|
45
47
|
|
|
46
48
|
**不做 SDK wrapper,直接桥接 CLI。**
|
|
47
49
|
|
|
48
|
-
botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI(Claude Code、Codex、Cursor、Gemini、OpenCode、Antigravity、GitHub Copilot)。记忆、上下文管理、工具调用、权限体系——这些能力 CLI 本身都在快速迭代,botmux 选择站在这个进化之上,而不是平行重造一套。CLI 的每次升级,botmux 零适配自动受益。
|
|
50
|
+
botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI(Claude Code、Codex、Cursor、Gemini、OpenCode、Antigravity、GitHub Copilot、Kimi Code、Kiro)。记忆、上下文管理、工具调用、权限体系——这些能力 CLI 本身都在快速迭代,botmux 选择站在这个进化之上,而不是平行重造一套。CLI 的每次升级,botmux 零适配自动受益。
|
|
49
51
|
|
|
50
52
|
### 核心优势
|
|
51
53
|
|
|
@@ -57,7 +59,7 @@ botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI
|
|
|
57
59
|
| CLI 能力 | 完整运行时(hooks、memory、plan mode、Skill、`/` 命令) | SDK API 子集,需手动实现缺失功能 |
|
|
58
60
|
| CLI 升级 | 零适配自动受益 | 需要跟进 SDK 版本变更 |
|
|
59
61
|
| 记忆 / 上下文 | 直接复用 CLI 内建的记忆系统,随 CLI 迭代自动增强 | 需自建记忆系统,与 CLI 原生能力重复 |
|
|
60
|
-
| 多 CLI 支持 |
|
|
62
|
+
| 多 CLI 支持 | 多种 CLI 一键切换(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro 等) | 绑定单一 SDK,无法切换 CLI |
|
|
61
63
|
| Web 终端 | 可交互的完整终端,移动端快捷键工具栏,手机/电脑/飞书三端同步 | 通常仅 Web 聊天界面或只读输出 |
|
|
62
64
|
| 多机器人协作 | 多 bot 同群 @mention 路由,独立进程隔离,不同 CLI 赛博斗蛐蛐 | 通常单机器人 |
|
|
63
65
|
| 多话题协作模式 | 主 bot 自动拆任务、开多话题、派多 bot 并行协作(coder+reviewer),飞书任务清单当共享进度板 | 通常需人工逐个分派、无统一进度板 |
|
|
@@ -92,7 +94,7 @@ botmux 可以管理 CLI 无关的自定义 Skill Registry,并按 bot 配置在
|
|
|
92
94
|
|
|
93
95
|
### 多机器人协作
|
|
94
96
|
|
|
95
|
-
同一台机器上可运行多个飞书机器人,每个机器人可对应不同的 CLI。同一群聊中通过 @mention 路由消息,仅有一个机器人时无需 @ 自动响应;多机器人时 `@<bot1> @<bot2> /t xxx` 可让每个被 @ 的机器人在同一条消息上各自独立开新话题。先发一次 `@<bot1> @<bot2> /introduce` 让它们互相登记 open_id,之后各 bot 就能在自己的会话里显式 @mention 对方协作(命令详见 [📖 文档 · 斜杠命令](https://github.
|
|
97
|
+
同一台机器上可运行多个飞书机器人,每个机器人可对应不同的 CLI。同一群聊中通过 @mention 路由消息,仅有一个机器人时无需 @ 自动响应;多机器人时 `@<bot1> @<bot2> /t xxx` 可让每个被 @ 的机器人在同一条消息上各自独立开新话题。先发一次 `@<bot1> @<bot2> /introduce` 让它们互相登记 open_id,之后各 bot 就能在自己的会话里显式 @mention 对方协作(命令详见 [📖 文档 · 斜杠命令](https://deepcoldy.github.io/botmux/slash-commands))。
|
|
96
98
|
|
|
97
99
|
### 多话题协作模式
|
|
98
100
|
|
|
@@ -176,7 +178,7 @@ BACKEND_TYPE=pty botmux start
|
|
|
176
178
|
|
|
177
179
|
CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一组开箱即用的 Skill:
|
|
178
180
|
|
|
179
|
-
- `botmux send` —
|
|
181
|
+
- `botmux send` — 向当前话题发消息(支持文本、图片、文件、interactive 卡片 JSON、@mention)
|
|
180
182
|
- `botmux history` — 读取当前会话历史消息(话题/thread 会话拉话题内,普通群 chat-scope 会话拉整群)
|
|
181
183
|
- `botmux quoted <message_id>` — 用户用引用 UI @ 机器人时,按需读取被引用的那条消息
|
|
182
184
|
- `botmux bots list` — 查询当前群聊的机器人及 open_id
|
|
@@ -189,6 +191,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
|
|
|
189
191
|
> 命令行 `botmux dashboard` 出一次性 token URL,浏览器里跨所有 daemon/机器人管控
|
|
190
192
|
|
|
191
193
|
- 一键定位回飞书话题 / 跳 Web 终端 / 多选批量关闭会话
|
|
194
|
+
- 添加机器人对齐 Feishu 单次扫码主路径:名称可选且全程冻结,支持 AI CLI / 工作目录选择、管理员 fail-closed 补填与显式兼容模式
|
|
192
195
|
- 拉新群、自动转让群主、@ 提醒
|
|
193
196
|
- 解散群聊、bot 退群(关联会话自动清理)
|
|
194
197
|
- **会话洞察**(owner-only,只读):解析各会话 transcript,看动作 span / 工作时序 / 上下文曲线 / 失败聚合 + 诊断建议;聊天里发 `/insight` 可取当前会话摘要卡
|
|
@@ -205,7 +208,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
|
|
|
205
208
|
## 前置要求
|
|
206
209
|
|
|
207
210
|
- **Node.js** >= 22
|
|
208
|
-
- **AI 编程 CLI / 本地 Agent 应用** 已安装并完成认证(`claude`、`codex`、`coco`、`cursor-agent`、`gemini`、`genius`、`opencode`、`hermes`、`seed`(Seed CLI,Claude Code 衍生)、`relay`(Relay CLI,Seed 新版)、`pi`、`omp`(oh-my-pi,Pi 衍生)、`copilot`(GitHub Copilot CLI)、`traex`(TRAE CLI)、`mircli`(Mir CLI)、`agy`(Antigravity
|
|
211
|
+
- **AI 编程 CLI / 本地 Agent 应用** 已安装并完成认证(`claude`、`codex`、`coco`、`cursor-agent`、`gemini`、`genius`、`opencode`、`hermes`、`seed`(Seed CLI,Claude Code 衍生)、`relay`(Relay CLI,Seed 新版)、`pi`、`omp`(oh-my-pi,Pi 衍生)、`copilot`(GitHub Copilot CLI)、`traex`(TRAE CLI)、`mircli`(Mir CLI)、`agy`(Antigravity)、`kimi`(Kimi Code)、`grok`(Grok Build)或 `kiro-cli`(Kiro)在 PATH 中)
|
|
209
212
|
- **CoCo 最低版本 `0.120.32`**:type-ahead(会话忙时即可发新消息,由 CoCo 自己的消息队列接住)依赖 0.120.32+ 的行为;更早版本忙时输入可能丢失或串行,请升级后再用
|
|
210
213
|
- **tmux** >= 3.x(可选,安装后自动启用会话常驻)
|
|
211
214
|
- **CJK 字体**(用于截图渲染中文/emoji):
|
|
@@ -215,15 +218,18 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
|
|
|
215
218
|
|
|
216
219
|
## 5 分钟快速接入
|
|
217
220
|
|
|
218
|
-
> 💡 **TL;DR**:`npm i -g botmux` → `botmux setup
|
|
221
|
+
> 💡 **TL;DR**:`npm i -g botmux` → `botmux setup`,飞书租户**扫一次码**就能建好一个可用机器人 → `botmux start`。这次扫码拿到的 Web 登录态会连续完成:按 `botmux-N`(可自定义)命名并创建应用、读取 AppID/AppSecret、导入权限、配置重定向 URL、创建并提交发布版本。整个开放平台配置都由 setup 默认完成;加 `--no-open-platform-auto` 可跳过应用创建后的权限/发版自动配置。
|
|
219
222
|
|
|
220
223
|
### 1. 安装 botmux
|
|
221
224
|
|
|
222
225
|
```bash
|
|
223
226
|
npm install -g botmux
|
|
227
|
+
# 或:pnpm add -g botmux
|
|
224
228
|
```
|
|
225
229
|
|
|
226
|
-
|
|
230
|
+
botmux 的手动/定时更新会识别当前全局安装归属,并继续使用同一个 npm 或 pnpm 安装位置;无法安全识别的安装方式不会自动回退到 npm。
|
|
231
|
+
|
|
232
|
+
> 要求 **Node.js ≥ 22**,且本地已装好并登录至少一种 AI 编程 CLI(`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` / `grok` / `kiro-cli` 等在 PATH 中)。推荐顺手装 **tmux**(装了自动启用会话常驻)。
|
|
227
233
|
|
|
228
234
|
### 2. 创建应用并配置(`botmux setup`)
|
|
229
235
|
|
|
@@ -231,7 +237,7 @@ npm install -g botmux
|
|
|
231
237
|
|
|
232
238
|
1. **操作**:首次安装直接进入创建流程;已有配置时先选「添加新机器人 / 重新配置 / 编辑现有机器人 / 删除机器人」。
|
|
233
239
|
2. **飞书应用来源**:三选一——
|
|
234
|
-
-
|
|
240
|
+
- **一次扫码创建新应用(推荐)**:可填写机器人名称;留空自动使用 `botmux-0`、`botmux-1`……。首次扫码拿到 Web 登录态后,botmux 自动上传默认图标、创建企业自建应用、读取 AppID/AppSecret,并复用同一登录态继续配置权限与发版;后续添加会先显示当前账号与企业供确认,有效期内免扫码。Web 自动创建不可用或使用 Lark 国际版时,可由用户明确选择 `@larksuiteoapi/node-sdk` 兼容模式;兼容模式可能需要额外扫码,且应用名称由平台决定。
|
|
235
241
|
- **选择已有应用**:复用(或扫码获取)飞书 Web 登录态,列出你在开放平台创建过的应用,选中后**自动读取 AppID/AppSecret**——换机器重配、复用旧应用不用再去后台翻 Secret(仅飞书租户)。
|
|
236
242
|
- **手动输入 AppID/Secret**:见文末折叠的「手动创建应用」。
|
|
237
243
|
3. **选择 CLI**:选本次要接入的 CLI(可搜索,如输入 `cla` 过滤出 Claude)。
|
|
@@ -239,9 +245,9 @@ npm install -g botmux
|
|
|
239
245
|
- **固定默认目录(推荐)**:新话题直接在指定目录启动、**不弹卡片**(落 `defaultWorkingDir` 字段,之后可用 `/config` 或 `botmux setup edit` 修改)。想让机器人"直接进目录干活"选这个。
|
|
240
246
|
- **仓库选择卡片**:新话题先弹卡片,从扫描到的 git 仓库里选一个再启动,适合经常在多个仓库间切换。下一问填**仓库扫描根目录**,通常是 git 项目的**父级目录**(如 `~/projects`,支持逗号分隔多个),卡片从该目录**向下**查找 git 仓库(最多 3 层);尽量别填 `~`(要遍历太多文件夹)。
|
|
241
247
|
|
|
242
|
-
|
|
248
|
+
应用创建后会直接复用同一份 Web 登录态,自动导入权限、配置 `http://127.0.0.1:9768/callback` 重定向 URL、创建并提交发布版本。Feishu 主路径是**首次最多扫码一次、后续有效期内免扫**;缓存账号/企业会在创建前展示并用同一份 cookie 再次比对,登录态失效时先提示,不会静默弹码。只有用户主动「更换账号」或明确选择 SDK 兼容模式时才会重新扫码。
|
|
243
249
|
|
|
244
|
-
> ✅ **飞书 (feishu.cn) 与 Lark 国际版 (larksuite.com)
|
|
250
|
+
> ✅ **飞书 (feishu.cn) 与 Lark 国际版 (larksuite.com) 均支持**。飞书走单次 Web 扫码;用户明确选择 SDK 兼容模式后,会自动识别并记住 Lark 国际版租户。手动粘 AppID/Secret 时会让你选一次租户类型。每个机器人按所属版本独立连对应域名,同一台机器可同时跑飞书 + Lark 机器人,登录凭证按应用隔离、互不干扰。
|
|
245
251
|
|
|
246
252
|
setup 末尾会用 `tenant_access_token` 校验凭证(通过才落盘 `bots.json`),并把完整权限 JSON 写到 `~/.botmux/lark-scopes.json` 备查。
|
|
247
253
|
|
|
@@ -250,6 +256,11 @@ setup 末尾会用 `tenant_access_token` 校验凭证(通过才落盘 `bots.js
|
|
|
250
256
|
|
|
251
257
|
```bash
|
|
252
258
|
botmux setup list --json # 列出机器人(secret 脱敏)
|
|
259
|
+
botmux setup add --create-app \
|
|
260
|
+
--app-name 研发助手 \
|
|
261
|
+
--allowed-users alice@example.com # 首次扫码;后续有效登录态下免扫
|
|
262
|
+
botmux setup add --create-app --switch-account \
|
|
263
|
+
--allowed-users alice@example.com # 明确更换账号并覆盖本机登录态
|
|
253
264
|
botmux setup add \
|
|
254
265
|
--app-id cli_xxx --app-secret xxx \
|
|
255
266
|
--allowed-users alice@example.com \
|
|
@@ -261,7 +272,8 @@ botmux setup help # 完整 flag 列表
|
|
|
261
272
|
```
|
|
262
273
|
|
|
263
274
|
- `--working-dir` 是仓库选择卡片的扫描根;`--default-working-dir` 是固定默认目录(新话题直接启动、不弹卡),对应 TUI 里工作目录模式的两个选项。
|
|
264
|
-
- `--json`
|
|
275
|
+
- `--create-app` 默认先复用并在 stderr 显示已确认的账号/企业;无缓存时首次扫码。`--switch-account` 强制重新扫码并覆盖本机登录态。`--json` 不会在缺少有效缓存时自行弹码,需显式加 `--switch-account`;成功时返回冻结后的 `appName` 与 `appId`,应用已创建但后续失败时返回 `partial`、`appId` 和带 `--open-platform-auto` 的继续命令,不会重复建应用。
|
|
276
|
+
- 已有凭证模式的开放平台自动配置默认跳过,需要时显式加 `--open-platform-auto`。`--compatibility-mode` 必须显式选择,可能需要额外扫码且不支持 `--app-name`。
|
|
265
277
|
- 以前对交互问答「管道喂数字」的脚本请迁移到这些子命令:问答序列一变(本版本就新增了工作目录模式一问),喂数字会静默错位。
|
|
266
278
|
|
|
267
279
|
</details>
|
|
@@ -291,7 +303,7 @@ botmux autostart enable
|
|
|
291
303
|
```
|
|
292
304
|
|
|
293
305
|
<details>
|
|
294
|
-
<summary><b>手动配置开放平台:建应用 / 权限 / 重定向 / 发版(备用)</b> —— 默认由 botmux setup
|
|
306
|
+
<summary><b>手动配置开放平台:建应用 / 权限 / 重定向 / 发版(备用)</b> —— 默认由 botmux setup 使用同一次登录态自动完成,仅在自动配置失败、或想手动核对时展开</summary>
|
|
295
307
|
|
|
296
308
|
<br>
|
|
297
309
|
|
|
@@ -329,7 +341,7 @@ base64 -w0 < ~/.botmux/lark-scopes.json | awk 'BEGIN{printf "\033]52;c;"}{printf
|
|
|
329
341
|
|
|
330
342
|
<br>
|
|
331
343
|
|
|
332
|
-
|
|
344
|
+
botmux 会自动开启机器人能力、长连接事件模式并订阅基础事件,正常情况下不用动。如果按上面步骤走完 bot **完全收不到任何消息**(连私聊都不回),分别确认这两项:
|
|
333
345
|
|
|
334
346
|
- **事件订阅**:开放平台 → 你的应用 → 事件与回调 → 应当订阅 `im.message.receive_v1` + `card.action.trigger`(默认已订阅,如缺失就手动添加)。订阅方式必须是「使用长连接接收事件」(WebSocket),且 botmux daemon 已经在跑。
|
|
335
347
|
- **机器人能力**:开放平台 → 你的应用 → 应用功能 → 机器人 应当已开通(默认开通),名字/头像可以改。
|
|
@@ -384,16 +396,16 @@ PersonalAgent 默认配好事件订阅 + bot 能力,正常情况下不用动
|
|
|
384
396
|
|
|
385
397
|
命令、配置、最佳实践、排错的完整内容都在文档站,这里不再重复 ——
|
|
386
398
|
|
|
387
|
-
### 👉 https://github.
|
|
399
|
+
### 👉 https://deepcoldy.github.io/botmux/
|
|
388
400
|
|
|
389
401
|
| 主题 | 文档 |
|
|
390
402
|
|------|------|
|
|
391
|
-
| 斜杠命令 / CLI 命令 / 会话内子命令 | [命令参考](https://github.
|
|
392
|
-
| `bots.json` 字段 / 环境变量 / 文件位置 | [配置参考](https://github.
|
|
393
|
-
| 多 CLI 适配器(含 wrapper / 网关接入) | [适配器](https://github.
|
|
394
|
-
| 按场景的最佳实践(Oncall / 报警运维 / 个人研发 / 多人协作) | [最佳实践](https://github.
|
|
395
|
-
| 常见踩坑 / FAQ 排错 | [踩坑](https://github.
|
|
396
|
-
| 功能详解:定时任务 / Oncall / Dashboard / 多机器人协作 / 会话接力 | [定时](https://github.
|
|
403
|
+
| 斜杠命令 / CLI 命令 / 会话内子命令 | [命令参考](https://deepcoldy.github.io/botmux/slash-commands) |
|
|
404
|
+
| `bots.json` 字段 / 环境变量 / 文件位置 | [配置参考](https://deepcoldy.github.io/botmux/bots-json) |
|
|
405
|
+
| 多 CLI 适配器(含 wrapper / 网关接入) | [适配器](https://deepcoldy.github.io/botmux/adapters) |
|
|
406
|
+
| 按场景的最佳实践(Oncall / 报警运维 / 个人研发 / 多人协作) | [最佳实践](https://deepcoldy.github.io/botmux/best-practices) |
|
|
407
|
+
| 常见踩坑 / FAQ 排错 | [踩坑](https://deepcoldy.github.io/botmux/pitfalls) · [FAQ](https://deepcoldy.github.io/botmux/faq) |
|
|
408
|
+
| 功能详解:定时任务 / Oncall / Dashboard / 多机器人协作 / 会话接力 | [定时](https://deepcoldy.github.io/botmux/schedule) · [Oncall](https://deepcoldy.github.io/botmux/oncall) · [Dashboard](https://deepcoldy.github.io/botmux/dashboard) · [多 bot](https://deepcoldy.github.io/botmux/multi-bot) · [接力](https://deepcoldy.github.io/botmux/relay) |
|
|
397
409
|
|
|
398
410
|
## 贡献
|
|
399
411
|
|
|
@@ -228,6 +228,7 @@ export declare function attachSandboxOutbox(opts: {
|
|
|
228
228
|
export declare function sweepOrphanSandboxes(dataDir: string, activeSessionIds: Set<string>): void;
|
|
229
229
|
export interface RelayRequest {
|
|
230
230
|
contentFile?: unknown;
|
|
231
|
+
cardFile?: unknown;
|
|
231
232
|
attachments?: unknown;
|
|
232
233
|
videos?: unknown;
|
|
233
234
|
videoCovers?: unknown;
|
|
@@ -235,6 +236,7 @@ export interface RelayRequest {
|
|
|
235
236
|
}
|
|
236
237
|
export interface ValidatedRelay {
|
|
237
238
|
contentName: string;
|
|
239
|
+
cardName?: string;
|
|
238
240
|
attachmentNames: string[];
|
|
239
241
|
videoNames: string[];
|
|
240
242
|
videoCoverNames: string[];
|
|
@@ -243,7 +245,7 @@ export interface ValidatedRelay {
|
|
|
243
245
|
/**
|
|
244
246
|
* PURE validation of an outbox relay request (schema + flag allowlist only — no
|
|
245
247
|
* filesystem access, so it's deterministically testable):
|
|
246
|
-
* - contentFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
|
|
248
|
+
* - contentFile/cardFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
|
|
247
249
|
* - only allowlisted presentation flags pass; any other flag → reject (this
|
|
248
250
|
* rejects raw `--content-file`/`--session-id`/path flags etc.).
|
|
249
251
|
* The TOCTOU-safe filesystem read is handled separately by materializeOutboxFile,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/sandbox.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -651,7 +651,7 @@ const RELAY_FLAGS_VAL = new Set(['--mention', '--quote']);
|
|
|
651
651
|
/**
|
|
652
652
|
* PURE validation of an outbox relay request (schema + flag allowlist only — no
|
|
653
653
|
* filesystem access, so it's deterministically testable):
|
|
654
|
-
* - contentFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
|
|
654
|
+
* - contentFile/cardFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
|
|
655
655
|
* - only allowlisted presentation flags pass; any other flag → reject (this
|
|
656
656
|
* rejects raw `--content-file`/`--session-id`/path flags etc.).
|
|
657
657
|
* The TOCTOU-safe filesystem read is handled separately by materializeOutboxFile,
|
|
@@ -661,6 +661,13 @@ export function validateRelayRequest(req) {
|
|
|
661
661
|
const safeName = (n) => typeof n === 'string' && !!n && !n.includes('/') && !n.includes('\\') && !n.includes('..');
|
|
662
662
|
if (!safeName(req.contentFile))
|
|
663
663
|
return { ok: false, error: 'contentFile must be a plain outbox basename' };
|
|
664
|
+
const cardName = req.cardFile === undefined
|
|
665
|
+
? undefined
|
|
666
|
+
: safeName(req.cardFile)
|
|
667
|
+
? req.cardFile
|
|
668
|
+
: null;
|
|
669
|
+
if (cardName === null)
|
|
670
|
+
return { ok: false, error: 'cardFile must be a plain outbox basename' };
|
|
664
671
|
const attachmentNames = [];
|
|
665
672
|
for (const a of Array.isArray(req.attachments) ? req.attachments : []) {
|
|
666
673
|
if (!safeName(a))
|
|
@@ -704,7 +711,7 @@ export function validateRelayRequest(req) {
|
|
|
704
711
|
}
|
|
705
712
|
return { ok: false, error: `flag not allowed: ${f}` };
|
|
706
713
|
}
|
|
707
|
-
return { ok: true, value: { contentName: req.contentFile, attachmentNames, videoNames, videoCoverNames, flags } };
|
|
714
|
+
return { ok: true, value: { contentName: req.contentFile, cardName, attachmentNames, videoNames, videoCoverNames, flags } };
|
|
708
715
|
}
|
|
709
716
|
/**
|
|
710
717
|
* TOCTOU-safe copy of an outbox file (`outbox/<name>`, name already validated as
|
|
@@ -822,6 +829,15 @@ export function startOutboxWatcher(outbox, baseEnv, sessionId) {
|
|
|
822
829
|
continue;
|
|
823
830
|
}
|
|
824
831
|
staged.push(contentDest);
|
|
832
|
+
let cardPath;
|
|
833
|
+
if (v.value.cardName) {
|
|
834
|
+
cardPath = join(staging, `${id}.card.json`);
|
|
835
|
+
if (!materializeOutboxFile(outbox, v.value.cardName, cardPath)) {
|
|
836
|
+
finish(id, reqPath, name, staged, 1, '', 'relay rejected: card not a regular file in outbox');
|
|
837
|
+
continue;
|
|
838
|
+
}
|
|
839
|
+
staged.push(cardPath);
|
|
840
|
+
}
|
|
825
841
|
let attBad = false;
|
|
826
842
|
const attPaths = [];
|
|
827
843
|
v.value.attachmentNames.forEach((an, i) => {
|
|
@@ -875,7 +891,7 @@ export function startOutboxWatcher(outbox, baseEnv, sessionId) {
|
|
|
875
891
|
}
|
|
876
892
|
const hostArgs = [
|
|
877
893
|
...v.value.flags,
|
|
878
|
-
'--content-file', contentDest,
|
|
894
|
+
...(cardPath ? ['--card-file', cardPath] : ['--content-file', contentDest]),
|
|
879
895
|
...attPaths.flatMap(a => ['--files', a]),
|
|
880
896
|
...videoPaths.flatMap(a => ['--videos', a]),
|
|
881
897
|
...videoCoverPaths.flatMap(a => ['--video-covers', a]),
|