botmux 3.11.0 → 3.12.1
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/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +18 -0
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +154 -2
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/cli/coco.js +3 -3
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex.js +2 -2
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/kimi.d.ts.map +1 -1
- package/dist/adapters/cli/kimi.js +22 -8
- package/dist/adapters/cli/kimi.js.map +1 -1
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +3 -1
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +4 -1
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +23 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -0
- package/dist/cli/dashboard-command.js +61 -0
- package/dist/cli/dashboard-command.js.map +1 -0
- package/dist/cli/dashboard-endpoint.d.ts +3 -3
- package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
- package/dist/cli/dashboard-endpoint.js +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +101 -49
- package/dist/cli.js.map +1 -1
- package/dist/codex-rpc-engine.d.ts +33 -3
- package/dist/codex-rpc-engine.d.ts.map +1 -1
- package/dist/codex-rpc-engine.js +182 -20
- package/dist/codex-rpc-engine.js.map +1 -1
- package/dist/codex-rpc-lifecycle.d.ts +42 -7
- package/dist/codex-rpc-lifecycle.d.ts.map +1 -1
- package/dist/codex-rpc-lifecycle.js +73 -7
- package/dist/codex-rpc-lifecycle.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/core/command-handler.d.ts +3 -2
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +19 -4
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +16 -11
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +17 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +13 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dispatch.d.ts +9 -10
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +17 -10
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +5 -0
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/role-resolver.d.ts +5 -2
- package/dist/core/role-resolver.d.ts.map +1 -1
- package/dist/core/role-resolver.js +55 -23
- package/dist/core/role-resolver.js.map +1 -1
- package/dist/core/session-manager.d.ts +2 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +20 -18
- 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 +142 -3
- package/dist/core/skills/cli-admin-command.js.map +1 -1
- package/dist/core/skills/frontmatter.d.ts.map +1 -1
- package/dist/core/skills/frontmatter.js +44 -7
- package/dist/core/skills/frontmatter.js.map +1 -1
- package/dist/core/skills/im-command.d.ts +6 -0
- package/dist/core/skills/im-command.d.ts.map +1 -1
- package/dist/core/skills/im-command.js +34 -7
- package/dist/core/skills/im-command.js.map +1 -1
- package/dist/core/skills/install-command.d.ts +4 -0
- package/dist/core/skills/install-command.d.ts.map +1 -0
- package/dist/core/skills/install-command.js +89 -0
- package/dist/core/skills/install-command.js.map +1 -0
- package/dist/core/skills/package.d.ts.map +1 -1
- package/dist/core/skills/package.js +10 -3
- package/dist/core/skills/package.js.map +1 -1
- package/dist/core/skills/policy.d.ts +5 -1
- package/dist/core/skills/policy.d.ts.map +1 -1
- package/dist/core/skills/policy.js +66 -3
- package/dist/core/skills/policy.js.map +1 -1
- package/dist/core/skills/references.d.ts +9 -1
- package/dist/core/skills/references.d.ts.map +1 -1
- package/dist/core/skills/references.js +35 -2
- package/dist/core/skills/references.js.map +1 -1
- package/dist/core/skills/registry-paths.d.ts +1 -0
- package/dist/core/skills/registry-paths.d.ts.map +1 -1
- package/dist/core/skills/registry-paths.js +3 -0
- package/dist/core/skills/registry-paths.js.map +1 -1
- package/dist/core/skills/session-resolver.d.ts +2 -1
- 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.map +1 -1
- package/dist/core/skills/session-runtime.js +2 -0
- package/dist/core/skills/session-runtime.js.map +1 -1
- package/dist/core/skills/sources.d.ts +23 -0
- package/dist/core/skills/sources.d.ts.map +1 -1
- package/dist/core/skills/sources.js +128 -12
- package/dist/core/skills/sources.js.map +1 -1
- package/dist/core/skills/types.d.ts +22 -1
- package/dist/core/skills/types.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +4 -4
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +18 -6
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/types.d.ts +2 -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.map +1 -1
- package/dist/core/worker-pool.js +52 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +101 -12
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +21 -11
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +39 -25
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +2 -114
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +0 -1
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +0 -1
- 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 +66 -6
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/dashboard-summary-endpoint.d.ts +39 -0
- package/dist/dashboard/dashboard-summary-endpoint.d.ts.map +1 -0
- package/dist/dashboard/dashboard-summary-endpoint.js +50 -0
- package/dist/dashboard/dashboard-summary-endpoint.js.map +1 -0
- package/dist/dashboard/dashboard-summary.d.ts +62 -0
- package/dist/dashboard/dashboard-summary.d.ts.map +1 -0
- package/dist/dashboard/dashboard-summary.js +106 -0
- package/dist/dashboard/dashboard-summary.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +3 -0
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/skill-install-request.js +10 -11
- package/dist/dashboard/skill-install-request.js.map +1 -1
- package/dist/dashboard/skill-pack-response.d.ts +15 -0
- package/dist/dashboard/skill-pack-response.d.ts.map +1 -0
- package/dist/dashboard/skill-pack-response.js +32 -0
- package/dist/dashboard/skill-pack-response.js.map +1 -0
- package/dist/dashboard/web/connectors-page.d.ts +69 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +47 -7
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/feed-group-picker.d.ts +13 -0
- package/dist/dashboard/web/feed-group-picker.d.ts.map +1 -0
- package/dist/dashboard/web/feed-group-picker.js +45 -0
- package/dist/dashboard/web/feed-group-picker.js.map +1 -0
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +2 -5
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +309 -40
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +4 -2
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +14 -6
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +36 -4
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard/web/roles.d.ts +3 -1
- package/dist/dashboard/web/roles.d.ts.map +1 -1
- package/dist/dashboard/web/roles.js +10 -2
- 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 +8 -2
- package/dist/dashboard/web/schedules-page.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +101 -5
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +3 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +13 -6
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/skills/bot-assignments-tab.d.ts +27 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.js +257 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.js.map +1 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.d.ts +25 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.js +20 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.js.map +1 -0
- package/dist/dashboard/web/skills/shared.d.ts +86 -0
- package/dist/dashboard/web/skills/shared.d.ts.map +1 -0
- package/dist/dashboard/web/skills/shared.js +178 -0
- package/dist/dashboard/web/skills/shared.js.map +1 -0
- package/dist/dashboard/web/skills/skill-library-tab.d.ts +75 -0
- package/dist/dashboard/web/skills/skill-library-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/skill-library-tab.js +108 -0
- package/dist/dashboard/web/skills/skill-library-tab.js.map +1 -0
- package/dist/dashboard/web/skills/skill-packs-tab.d.ts +21 -0
- package/dist/dashboard/web/skills/skill-packs-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/skill-packs-tab.js +185 -0
- package/dist/dashboard/web/skills/skill-packs-tab.js.map +1 -0
- package/dist/dashboard/web/skills/types.d.ts +95 -0
- package/dist/dashboard/web/skills/types.d.ts.map +1 -0
- package/dist/dashboard/web/skills/types.js +2 -0
- package/dist/dashboard/web/skills/types.js.map +1 -0
- package/dist/dashboard/web/skills/use-skills-data.d.ts +31 -0
- package/dist/dashboard/web/skills/use-skills-data.d.ts.map +1 -0
- package/dist/dashboard/web/skills/use-skills-data.js +86 -0
- package/dist/dashboard/web/skills/use-skills-data.js.map +1 -0
- package/dist/dashboard/web/skills-page.d.ts +34 -31
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +321 -176
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts +18 -0
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +35 -1
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-GED4FEMS.js → bot-defaults-page-HL655CNR.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-HK7NIBJG.js → chunk-5PAYQ3KT.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-KRHWZEXU.js → chunk-5ZL7NLR5.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-6ALR252E.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-VBXJOJFH.js → chunk-BFUTTYVK.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-ELL53D62.js +55 -0
- package/dist/dashboard-web/chunks/connectors-page-3QQACF23.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-SDZMJ7UV.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-54UBPPOC.js → insights-page-ZZ3JEJ6L.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-PORHVKRH.js → monitor-room-ROJ5GZ4N.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-XGA7AXNL.js → monitoring-page-IATV7KJF.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-AO3AFG45.js → office-page-TYO5OIIT.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-F5BUTYR6.js → overview-page-VJUULZF2.js} +1 -1
- package/dist/dashboard-web/chunks/roles-page-7RJJKZGK.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-JTEJ5IXW.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-KD7HDT3U.js +8 -0
- package/dist/dashboard-web/chunks/{settings-page-OJAZLZQT.js → settings-page-7CTTFBRS.js} +1 -1
- package/dist/dashboard-web/chunks/skills-page-57NZECJ3.js +4 -0
- package/dist/dashboard-web/chunks/{team-federation-page-ZJVAP7HW.js → team-federation-page-6YYIMJG3.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-GYWTRGO2.js → v3-page-ZGKBSBK3.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-MSDAG6P7.js → whiteboards-page-AACJF6DB.js} +1 -1
- package/dist/dashboard-web/style.css +1952 -377
- package/dist/dashboard.js +316 -47
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/main/ipc.js +1 -1
- package/dist/desktop/main/runtime-service.js +2 -2
- package/dist/desktop/main/runtime-service.js.map +1 -1
- package/dist/desktop/shared/types.d.ts +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +5 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +5 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index-daemon.js +6 -1
- package/dist/index-daemon.js.map +1 -1
- package/dist/services/adopt-input-sequence.d.ts +52 -0
- package/dist/services/adopt-input-sequence.d.ts.map +1 -0
- package/dist/services/adopt-input-sequence.js +50 -0
- package/dist/services/adopt-input-sequence.js.map +1 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +34 -11
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +103 -7
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +291 -17
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +4 -3
- 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 +14 -1
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/connector-topic-template.d.ts +7 -0
- package/dist/services/connector-topic-template.d.ts.map +1 -0
- package/dist/services/connector-topic-template.js +210 -0
- package/dist/services/connector-topic-template.js.map +1 -0
- package/dist/services/project-scanner.d.ts +33 -0
- package/dist/services/project-scanner.d.ts.map +1 -1
- package/dist/services/project-scanner.js +40 -1
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/services/skill-pack-store.d.ts +50 -0
- package/dist/services/skill-pack-store.d.ts.map +1 -0
- package/dist/services/skill-pack-store.js +270 -0
- package/dist/services/skill-pack-store.js.map +1 -0
- package/dist/services/skill-registry-store.d.ts +8 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +100 -68
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +8 -1
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +13 -0
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/submit-confirmation.d.ts +50 -0
- package/dist/services/submit-confirmation.d.ts.map +1 -1
- package/dist/services/submit-confirmation.js +82 -0
- package/dist/services/submit-confirmation.js.map +1 -1
- package/dist/services/todo-state.d.ts +74 -0
- package/dist/services/todo-state.d.ts.map +1 -0
- package/dist/services/todo-state.js +351 -0
- package/dist/services/todo-state.js.map +1 -0
- package/dist/setup/agent-preset.d.ts.map +1 -1
- package/dist/setup/agent-preset.js +2 -0
- package/dist/setup/agent-preset.js.map +1 -1
- package/dist/setup/owner-identity.d.ts +47 -0
- package/dist/setup/owner-identity.d.ts.map +1 -0
- package/dist/setup/owner-identity.js +196 -0
- package/dist/setup/owner-identity.js.map +1 -0
- package/dist/setup/register-app.d.ts +4 -3
- package/dist/setup/register-app.d.ts.map +1 -1
- package/dist/setup/register-app.js.map +1 -1
- package/dist/setup/setup-args.d.ts +1 -1
- package/dist/setup/setup-args.d.ts.map +1 -1
- package/dist/setup/setup-args.js +7 -3
- package/dist/setup/setup-args.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/async-serial-queue.d.ts +9 -0
- package/dist/utils/async-serial-queue.d.ts.map +1 -0
- package/dist/utils/async-serial-queue.js +13 -0
- package/dist/utils/async-serial-queue.js.map +1 -0
- package/dist/utils/child-env.d.ts +25 -0
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +47 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/runtime-screen-status.d.ts +52 -0
- package/dist/utils/runtime-screen-status.d.ts.map +1 -0
- package/dist/utils/runtime-screen-status.js +60 -0
- package/dist/utils/runtime-screen-status.js.map +1 -0
- package/dist/worker.js +1697 -468
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +44 -44
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/chunk-6J5LS5AU.js +0 -51
- package/dist/dashboard-web/chunks/connectors-page-EELM66G3.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-WKUV6E42.js +0 -8
- package/dist/dashboard-web/chunks/roles-page-M5GIASJU.js +0 -1
- package/dist/dashboard-web/chunks/schedules-page-O232WQRR.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-YFRPSTIL.js +0 -6
- package/dist/dashboard-web/chunks/skills-page-EFZQPWV4.js +0 -4
|
@@ -6,7 +6,7 @@ import { cliAuthBind, loadDashboardSecret, signCliAuth } from '../dashboard/auth
|
|
|
6
6
|
* Classify a 404 from a `/__cli/*` request. A genuine "no token yet" only comes
|
|
7
7
|
* from `/__cli/current` carrying `{ error: 'no_active_token' }`; everything else
|
|
8
8
|
* means the port is answering for some other service (daemon IPC, a stray HTTP
|
|
9
|
-
* server, …), not the dashboard
|
|
9
|
+
* server, …), not one of the dashboard CLI routes.
|
|
10
10
|
*/
|
|
11
11
|
export function classifyDashboard404(path, bodyText) {
|
|
12
12
|
let body = null;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAoqHA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAqmPtE;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GACzF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA0I7B"}
|
package/dist/cli.js
CHANGED
|
@@ -37,7 +37,7 @@ import { validateWorkingDir } from './core/working-dir.js';
|
|
|
37
37
|
import { findAncestorSessionContext as findLiveAncestorSessionContext, resolveSessionContext, } from './core/session-marker.js';
|
|
38
38
|
import { resolveBotmuxDataDir } from './core/data-dir.js';
|
|
39
39
|
import { dashboardSecretPath } from './core/dashboard-secret.js';
|
|
40
|
-
import { acceptedDispatchBotAppIds, activeConversationBotOpenIds,
|
|
40
|
+
import { acceptedDispatchBotAppIds, activeConversationBotOpenIds, buildDispatchCompletionBrief, parseDispatchBotSpec, buildDispatchMessages, buildRepoPrimeText, buildReportContent, eligibleAutoMentionAliases, findDispatchRegistryEntry, foldableChatSessionAppIds, offTopicSubBotTopic, resolveReportPlacement, resolveReportRecipient, resolveReportTarget, resolveSendTarget, threadRootForReachability } from './core/dispatch.js';
|
|
41
41
|
import { pickTurnReplyTarget, collectTurnWindowParticipants } from './core/reply-target.js';
|
|
42
42
|
import { recordDispatchRegistryEntry } from './core/dispatch-registry.js';
|
|
43
43
|
import { enableAutostart, disableAutostart, autostartStatus, refreshAutostart } from './autostart.js';
|
|
@@ -49,13 +49,14 @@ import { checkCliAvailability, hasAgentLaunchConfigChanged } from './setup/cli-a
|
|
|
49
49
|
import { resolveSetupAppName } from './setup/app-name.js';
|
|
50
50
|
import { blocksSetupBotStart, classifySetupOpenPlatformOutcome, scriptedSetupOpenPlatformReuseOnly, setupOpenPlatformOutcomeJson, setupOpenPlatformRetryCommand, } from './setup/open-platform-outcome.js';
|
|
51
51
|
import { buildBotFromAddFlags, editInputFromFlags, isScriptedSetupInvocation, maskAppSecret, parseSetupCommand, SETUP_CLI_USAGE, } from './setup/setup-args.js';
|
|
52
|
+
import { detectUnusableOwnerEntries, normalizeManagedOwnerEntries, resolveScannerAllowedUser, } from './setup/owner-identity.js';
|
|
52
53
|
import { interactiveSelect, pickChoice, pickCliSelection } from './setup/interactive-select.js';
|
|
53
54
|
import { buildPreset, serializePreset, presetFilename } from './setup/agent-preset.js';
|
|
54
55
|
import { validateCodexAppManagedSendOrigin, } from './utils/codex-app-dispatch-ledger.js';
|
|
55
56
|
import { hasProtectedSessionMutationOwnership } from './core/session-mutation-guard.js';
|
|
56
57
|
import { logger } from './utils/logger.js';
|
|
57
58
|
import { withFileLock, withFileLockSync } from './utils/file-lock.js';
|
|
58
|
-
import { scrubClaudeSessionMarkerEnv, scrubSessionCliHomeEnv } from './utils/child-env.js';
|
|
59
|
+
import { scrubClaudeSessionMarkerEnv, scrubSessionCliHomeEnv, scrubWorkflowWorkerEnv } from './utils/child-env.js';
|
|
59
60
|
import { scheduleTimeZone } from './utils/timezone.js';
|
|
60
61
|
import { expandHomePath, invalidWorkingDirs } from './utils/working-dir.js';
|
|
61
62
|
import { firstPositional } from './cli/arg-utils.js';
|
|
@@ -82,6 +83,7 @@ import { assertIncludePm2RestartAdmission } from './cli/pm2-god-admission.js';
|
|
|
82
83
|
import { requestAttestedDaemonShutdown, requestAttestedDaemonShutdownBatch, } from './cli/supervisor-shutdown-client.js';
|
|
83
84
|
import { assertDaemonPm2GracefulExitPolicy, assertConfiguredPm2FleetReady, assertExactAttestedDaemonSet, classifyStartBotFleetAdmission, normalizeRawPm2StopExitCodes, reconcileLatePm2StartPublication, runBoundedPm2StartTransaction, } from './cli/pm2-start-transaction.js';
|
|
84
85
|
import { callDashboard } from './cli/dashboard-endpoint.js';
|
|
86
|
+
import { DASHBOARD_COMMAND_USAGE, executeDashboardCommand, formatDashboardFallbackFailure, } from './cli/dashboard-command.js';
|
|
85
87
|
import { globalInstallUpdateLockTargetIn, installLatestBotmuxSync } from './core/maintenance.js';
|
|
86
88
|
import { formatGlobalInstallCommand, resolveGlobalInstallPlan, UnsupportedGlobalInstallError, } from './utils/global-install.js';
|
|
87
89
|
import { loadDashboardSecret } from './dashboard/auth.js';
|
|
@@ -96,7 +98,7 @@ import { formatBotInfoEntriesForCli, formatChatBotsForCli, } from './cli/bots-li
|
|
|
96
98
|
import { ensureBotChatGrantMatrix, requestExactChatGrant } from './cli/exact-chat-grant-client.js';
|
|
97
99
|
import { buildFooterAddressing, hasKnownBotMention, knownBotOpenIdsFromCrossRef, orderedFooterRecipients, stripCodeSpans, } from './utils/bot-routing.js';
|
|
98
100
|
import { isLocale, localeForBot, setDefaultLocale, SUPPORTED_LOCALES, t } from './i18n/index.js';
|
|
99
|
-
import { chatAppLink, larkHosts, normalizeBrand
|
|
101
|
+
import { chatAppLink, larkHosts, normalizeBrand } from './im/lark/lark-hosts.js';
|
|
100
102
|
import { mergeDashboardConfig, mergeGlobalConfig, readGlobalConfig, setGlobalLocale, globalConfigPath } from './global-config.js';
|
|
101
103
|
import { createWhiteboard, ensureDefaultWhiteboard, getWhiteboard, listWhiteboards, readWhiteboard, whiteboardEnabled, whiteboardPath, } from './services/whiteboard-store.js';
|
|
102
104
|
import { buildBridgeSendMarkerContent, buildBridgeSendPreviewText, } from './services/bridge-fallback-gate.js';
|
|
@@ -201,6 +203,10 @@ function pm2Env(home = PM2_HOME) {
|
|
|
201
203
|
// they eventually flip transcript saving off fleet-wide once the tmux server
|
|
202
204
|
// respawns from a poisoned daemon (see CLAUDE_SESSION_MARKER_ENV_KEYS).
|
|
203
205
|
scrubClaudeSessionMarkerEnv(env);
|
|
206
|
+
// Workflow/goal markers identify one short-lived node worker. Persisting
|
|
207
|
+
// them in PM2 would make every daemon — and then every ordinary chat worker
|
|
208
|
+
// it forks — run in workflow mode after a restart initiated from that node.
|
|
209
|
+
scrubWorkflowWorkerEnv(env);
|
|
204
210
|
return env;
|
|
205
211
|
}
|
|
206
212
|
function listPm2GodDaemonPids(home = PM2_HOME) {
|
|
@@ -1137,27 +1143,6 @@ async function obtainCredentials(rl) {
|
|
|
1137
1143
|
return { ok: true, appId, appSecret, brand };
|
|
1138
1144
|
}
|
|
1139
1145
|
}
|
|
1140
|
-
/**
|
|
1141
|
-
* 用新应用自身凭证验证扫码链路拿到的 open_id。
|
|
1142
|
-
* 能解析 union_id 时写 on_;没有 union_id 但 open_id 对当前 app 有效时写 ou_。
|
|
1143
|
-
* 查询失败或用户不在当前 app 视角时返回 undefined,调用方不得 fallback 写入该 ou_。
|
|
1144
|
-
*/
|
|
1145
|
-
async function resolveScannerAllowedUser(appId, appSecret, openId, brand = 'feishu') {
|
|
1146
|
-
try {
|
|
1147
|
-
const { Client } = await import('@larksuiteoapi/node-sdk');
|
|
1148
|
-
// brand → 域名。Lark 扫码人 ou_→on_ 必须打 larksuite.com,否则失败丢掉 cross-app 稳定性。
|
|
1149
|
-
const client = new Client({ appId, appSecret, domain: sdkDomain(brand) });
|
|
1150
|
-
const res = await client.contact.v3.user.get({
|
|
1151
|
-
path: { user_id: openId },
|
|
1152
|
-
params: { user_id_type: 'open_id' },
|
|
1153
|
-
});
|
|
1154
|
-
if (res.code === 0 && res.data?.user) {
|
|
1155
|
-
return res.data.user.union_id ?? openId;
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
catch { /* do not trust scanner open_id when verification fails */ }
|
|
1159
|
-
return undefined;
|
|
1160
|
-
}
|
|
1161
1146
|
/**
|
|
1162
1147
|
* 手动建 bot 时(没有扫码人 open_id)必须指定至少一个 owner.
|
|
1163
1148
|
* 循环追问直到给出合法条目(邮箱、union_id on_xxx 或 open_id ou_xxx),拒绝裸邮箱前缀与空输入.
|
|
@@ -1559,6 +1544,10 @@ function failSetupScripted(json, message, details = {}) {
|
|
|
1559
1544
|
console.error(`❌ ${message}`);
|
|
1560
1545
|
process.exitCode = 1;
|
|
1561
1546
|
}
|
|
1547
|
+
function setupAddContinuationCommand(appId, brand, ownerPlaceholder = '<OWNER_EMAIL>') {
|
|
1548
|
+
return `botmux setup add --app-id ${appId} --app-secret <APP_SECRET> ` +
|
|
1549
|
+
`--allowed-users ${ownerPlaceholder}${brand === 'lark' ? ' --brand lark' : ''} --open-platform-auto`;
|
|
1550
|
+
}
|
|
1562
1551
|
/** 某个(可能带 ~ 前缀的)路径若不存在/不是目录,返回展开后的绝对路径;合法返回 null。 */
|
|
1563
1552
|
function missingDirResolved(raw) {
|
|
1564
1553
|
const resolved = resolve(expandHomePath(raw));
|
|
@@ -1683,6 +1672,7 @@ async function cmdSetupScripted(argv) {
|
|
|
1683
1672
|
let migratedEnv = false;
|
|
1684
1673
|
let createdAppId;
|
|
1685
1674
|
let createdAppName;
|
|
1675
|
+
const requestedBrand = normalizeBrand(cmd.flags.brand);
|
|
1686
1676
|
if (!existsSync(BOTS_JSON_FILE) && existsSync(ENV_FILE)) {
|
|
1687
1677
|
const legacy = parseDotEnvToBotConfig();
|
|
1688
1678
|
if (legacy.larkAppId && legacy.larkAppSecret) {
|
|
@@ -1690,6 +1680,34 @@ async function cmdSetupScripted(argv) {
|
|
|
1690
1680
|
migratedEnv = true;
|
|
1691
1681
|
}
|
|
1692
1682
|
}
|
|
1683
|
+
// A managed Agent sees the daemon-frozen session owner as
|
|
1684
|
+
// BOTMUX_OWNER_OPEN_ID in the source bot's app scope; it is not the
|
|
1685
|
+
// current-turn sender. Copying that ou_ into a newly created/different app
|
|
1686
|
+
// locks the owner out. Convert only that exact injected identity to on_
|
|
1687
|
+
// through the source app before any real app is created.
|
|
1688
|
+
try {
|
|
1689
|
+
cmd.flags.allowedUsers = await normalizeManagedOwnerEntries(cmd.flags.allowedUsers, {
|
|
1690
|
+
sourceAppId: process.env.BOTMUX_LARK_APP_ID,
|
|
1691
|
+
sourceOwnerOpenId: process.env.BOTMUX_OWNER_OPEN_ID ?? process.env.__OWNER_OPEN_ID,
|
|
1692
|
+
creatingApp: cmd.createApp,
|
|
1693
|
+
targetAppId: cmd.createApp ? undefined : cmd.flags.appId?.trim(),
|
|
1694
|
+
}, async (sourceAppId, sourceOwnerOpenId) => {
|
|
1695
|
+
const sourceBot = existing.find(bot => bot?.larkAppId === sourceAppId);
|
|
1696
|
+
if (!sourceBot?.larkAppSecret)
|
|
1697
|
+
return undefined;
|
|
1698
|
+
// A deliberate account/platform switch may create under another
|
|
1699
|
+
// developer tenant, where the source app's union_id is not stable.
|
|
1700
|
+
// Require an explicit target-account identity before creating.
|
|
1701
|
+
if (cmd.switchAccount || cmd.compatibilityMode || botBrand(sourceBot) !== requestedBrand) {
|
|
1702
|
+
return undefined;
|
|
1703
|
+
}
|
|
1704
|
+
return resolveScannerAllowedUser(sourceAppId, sourceBot.larkAppSecret, sourceOwnerOpenId, botBrand(sourceBot));
|
|
1705
|
+
});
|
|
1706
|
+
}
|
|
1707
|
+
catch (err) {
|
|
1708
|
+
failSetupScripted(cmd.json, `${err instanceof Error ? err.message : String(err)} 未创建应用、未写入配置。`);
|
|
1709
|
+
return;
|
|
1710
|
+
}
|
|
1693
1711
|
// --create-app 会产生真实开放平台应用;先用占位凭证完成纯本地字段、owner、
|
|
1694
1712
|
// CLI 与目录预检,避免参数错误发生在扫码建应用之后而留下孤儿应用。
|
|
1695
1713
|
if (cmd.createApp) {
|
|
@@ -1720,7 +1738,6 @@ async function cmdSetupScripted(argv) {
|
|
|
1720
1738
|
return;
|
|
1721
1739
|
}
|
|
1722
1740
|
const appName = resolveSetupAppName(cmd.flags.appName, existing.length);
|
|
1723
|
-
const requestedBrand = normalizeBrand(cmd.flags.brand);
|
|
1724
1741
|
let credentials;
|
|
1725
1742
|
let appliedAppName = false;
|
|
1726
1743
|
if ((requestedBrand === 'lark' || cmd.compatibilityMode) && cmd.flags.appName?.trim()) {
|
|
@@ -1791,7 +1808,7 @@ async function cmdSetupScripted(argv) {
|
|
|
1791
1808
|
}
|
|
1792
1809
|
if (!credentials.ok) {
|
|
1793
1810
|
const continueCommand = credentials.appId
|
|
1794
|
-
?
|
|
1811
|
+
? setupAddContinuationCommand(credentials.appId, requestedBrand)
|
|
1795
1812
|
: undefined;
|
|
1796
1813
|
failSetupScripted(cmd.json, `${credentials.message}${credentials.appId ? `;已创建 AppID ${credentials.appId},请从开放平台读取 App Secret 后运行 ${continueCommand} 继续,未重复创建。` : ''}`, credentials.appId ? { partial: true, appId: credentials.appId, appName, continueCommand } : {});
|
|
1797
1814
|
return;
|
|
@@ -1836,17 +1853,39 @@ async function cmdSetupScripted(argv) {
|
|
|
1836
1853
|
const v = await validateCredentials(bot.larkAppId, bot.larkAppSecret, botBrand(bot));
|
|
1837
1854
|
if (!v.ok) {
|
|
1838
1855
|
const continueCommand = createdAppId
|
|
1839
|
-
?
|
|
1856
|
+
? setupAddContinuationCommand(createdAppId, botBrand(bot))
|
|
1840
1857
|
: undefined;
|
|
1841
1858
|
failSetupScripted(cmd.json, `凭证校验失败 (${v.error}): ${v.message}${createdAppId ? `;应用 ${createdAppId} 已创建,未重复创建。请运行 ${continueCommand} 继续。` : ''}`, createdAppId ? { partial: true, appId: createdAppId, ...(createdAppName ? { appName: createdAppName } : {}), continueCommand } : {});
|
|
1842
1859
|
return;
|
|
1843
1860
|
}
|
|
1861
|
+
// Scripted add historically accepted any syntactically valid ou_ and wrote
|
|
1862
|
+
// it verbatim. A source bot's open_id is syntactically valid but belongs to
|
|
1863
|
+
// the wrong app, so canTalk/canOperate can never match it in the new bot.
|
|
1864
|
+
// Match Dashboard onboarding: reject only identities the target app can
|
|
1865
|
+
// definitively prove unusable; transient/scope failures remain inconclusive.
|
|
1866
|
+
const unusableOwners = await detectUnusableOwnerEntries(bot.larkAppId, bot.larkAppSecret, botBrand(bot), bot.allowedUsers ?? []);
|
|
1867
|
+
if (unusableOwners.length > 0) {
|
|
1868
|
+
const continueCommand = createdAppId
|
|
1869
|
+
? setupAddContinuationCommand(createdAppId, botBrand(bot), '<OWNER_EMAIL_OR_UNION_ID>')
|
|
1870
|
+
: undefined;
|
|
1871
|
+
failSetupScripted(cmd.json, `--allowed-users 包含当前应用无法使用的 owner: ${unusableOwners.join(', ')}。` +
|
|
1872
|
+
`open_id 仅对签发它的 Bot 有效,请改用完整邮箱、手机号或 on_ union_id。` +
|
|
1873
|
+
(continueCommand ? ` 应用已创建但未写入配置;请运行 ${continueCommand} 继续。` : ' 未写入配置。'), createdAppId
|
|
1874
|
+
? {
|
|
1875
|
+
partial: true,
|
|
1876
|
+
appId: createdAppId,
|
|
1877
|
+
...(createdAppName ? { appName: createdAppName } : {}),
|
|
1878
|
+
continueCommand,
|
|
1879
|
+
}
|
|
1880
|
+
: {});
|
|
1881
|
+
return;
|
|
1882
|
+
}
|
|
1844
1883
|
try {
|
|
1845
1884
|
writeBotsJsonAtomic([...existing, bot]);
|
|
1846
1885
|
}
|
|
1847
1886
|
catch (err) {
|
|
1848
1887
|
const continueCommand = createdAppId
|
|
1849
|
-
?
|
|
1888
|
+
? setupAddContinuationCommand(createdAppId, botBrand(bot))
|
|
1850
1889
|
: undefined;
|
|
1851
1890
|
failSetupScripted(cmd.json, `写入 bot 配置失败: ${err instanceof Error ? err.message : String(err)}${createdAppId ? `;应用 ${createdAppId} 已创建,未重复创建。请运行 ${continueCommand} 继续。` : ''}`, createdAppId ? { partial: true, appId: createdAppId, ...(createdAppName ? { appName: createdAppName } : {}), continueCommand } : {});
|
|
1852
1891
|
return;
|
|
@@ -3658,7 +3697,7 @@ async function printDashboardHintWithRetry() {
|
|
|
3658
3697
|
}
|
|
3659
3698
|
// Soft fallback
|
|
3660
3699
|
if (last?.reason === 'no-active-token') {
|
|
3661
|
-
console.log(' 面板: 运行 `botmux dashboard`
|
|
3700
|
+
console.log(' 面板: 运行 `botmux dashboard` 创建登录链接');
|
|
3662
3701
|
}
|
|
3663
3702
|
else if (last?.reason === 'no-secret') {
|
|
3664
3703
|
console.log(' 面板: dashboard 凭证未就绪,启动后可用 `botmux dashboard` 获取链接');
|
|
@@ -3670,13 +3709,22 @@ async function printDashboardHintWithRetry() {
|
|
|
3670
3709
|
console.log(' 面板: `botmux dashboard`(daemon 启动中,稍后可获取链接)');
|
|
3671
3710
|
}
|
|
3672
3711
|
}
|
|
3673
|
-
/**
|
|
3674
|
-
*
|
|
3675
|
-
*
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3712
|
+
/** Get or create the current dashboard URL, or explicitly rotate it. Bare
|
|
3713
|
+
* `dashboard` is the non-rotating get-or-create form; help and invalid
|
|
3714
|
+
* subcommands never call either credential endpoint. */
|
|
3715
|
+
async function cmdDashboard(args) {
|
|
3716
|
+
const execution = await executeDashboardCommand(args, callDashboardEndpoint);
|
|
3717
|
+
if (execution.kind === 'help') {
|
|
3718
|
+
console.log(DASHBOARD_COMMAND_USAGE);
|
|
3719
|
+
return;
|
|
3720
|
+
}
|
|
3721
|
+
if (execution.kind === 'invalid') {
|
|
3722
|
+
console.error(`未知 dashboard 子命令: ${execution.argument}`);
|
|
3723
|
+
console.error(DASHBOARD_COMMAND_USAGE);
|
|
3724
|
+
process.exitCode = 2;
|
|
3725
|
+
return;
|
|
3726
|
+
}
|
|
3727
|
+
const { action, result: r } = execution;
|
|
3680
3728
|
if (r.ok) {
|
|
3681
3729
|
// 首行保持纯 URL(脚本/复制取第一行即可);走中心化平台时再补一行本地直连兜底。
|
|
3682
3730
|
console.log(r.url);
|
|
@@ -3704,8 +3752,7 @@ async function cmdDashboard() {
|
|
|
3704
3752
|
console.error(` 详情: ${r.detail}`);
|
|
3705
3753
|
}
|
|
3706
3754
|
else {
|
|
3707
|
-
|
|
3708
|
-
console.error('Rotation failed:', r.detail ?? r.reason);
|
|
3755
|
+
console.error(formatDashboardFallbackFailure(action, r));
|
|
3709
3756
|
}
|
|
3710
3757
|
process.exit(1);
|
|
3711
3758
|
}
|
|
@@ -6065,7 +6112,10 @@ botmux v${getVersion()} — IM ↔ AI 编程 CLI 桥接
|
|
|
6065
6112
|
logs 查看 daemon 日志(--lines N, --bot <0-based-index|pm2-name|appId>)
|
|
6066
6113
|
status 查看 daemon 状态
|
|
6067
6114
|
upgrade 升级到最新版本(别名:update)
|
|
6068
|
-
dashboard
|
|
6115
|
+
dashboard current
|
|
6116
|
+
获取当前 Web Dashboard 登录 URL(裸 \`dashboard\` 同义;没有则创建)
|
|
6117
|
+
dashboard rotate
|
|
6118
|
+
显式轮换 token,并打印新的登录 URL
|
|
6069
6119
|
device enroll|status|logout
|
|
6070
6120
|
在宿主终端注册、查看或清除 desktop device 凭证(AI CLI 会话内拒绝)
|
|
6071
6121
|
list 列出活跃会话(交互式选择并连接 tmux)
|
|
@@ -9536,18 +9586,20 @@ async function cmdDispatch(rest) {
|
|
|
9536
9586
|
}
|
|
9537
9587
|
const bots = [...legacyBots, ...appBots]
|
|
9538
9588
|
.filter((bot, index, all) => all.findIndex(candidate => candidate.openId === bot.openId) === index);
|
|
9539
|
-
|
|
9540
|
-
|
|
9541
|
-
// so keep their context-derived compatibility report protocol.
|
|
9589
|
+
const { readRoleDispatchCompletionEnabled } = await import('./core/role-resolver.js');
|
|
9590
|
+
const sameTopicSendEnabled = readRoleDispatchCompletionEnabled(appId, targetChatId);
|
|
9542
9591
|
const exactReportRootEnabled = parsedBotApps.length > 0 && legacyBots.length === 0;
|
|
9543
|
-
const
|
|
9544
|
-
|
|
9545
|
-
|
|
9592
|
+
const briefWithCompletionProtocol = (dispatchRootId) => buildDispatchCompletionBrief({
|
|
9593
|
+
brief,
|
|
9594
|
+
dispatchRootId,
|
|
9595
|
+
exactReportRootEnabled,
|
|
9596
|
+
sameTopicSendEnabled,
|
|
9597
|
+
});
|
|
9546
9598
|
let built;
|
|
9547
9599
|
try {
|
|
9548
9600
|
built = buildDispatchMessages({
|
|
9549
9601
|
title: title.trim() || '子项目',
|
|
9550
|
-
brief: intoRoot ?
|
|
9602
|
+
brief: intoRoot ? briefWithCompletionProtocol(intoRoot) : brief,
|
|
9551
9603
|
bots,
|
|
9552
9604
|
});
|
|
9553
9605
|
}
|
|
@@ -9627,7 +9679,7 @@ async function cmdDispatch(rest) {
|
|
|
9627
9679
|
// resident chat-scope session's mutable latest reply alias.
|
|
9628
9680
|
const kickoffBuilt = buildDispatchMessages({
|
|
9629
9681
|
title: title.trim() || '子项目',
|
|
9630
|
-
brief:
|
|
9682
|
+
brief: briefWithCompletionProtocol(seedId),
|
|
9631
9683
|
bots,
|
|
9632
9684
|
});
|
|
9633
9685
|
const kickoffBriefJson = JSON.stringify({ zh_cn: { title: '', content: kickoffBuilt.threadContent } });
|
|
@@ -9926,7 +9978,7 @@ async function cmdReport(rest) {
|
|
|
9926
9978
|
}
|
|
9927
9979
|
let response;
|
|
9928
9980
|
try {
|
|
9929
|
-
response = await
|
|
9981
|
+
response = await fetchDaemonIpc(daemon.ipcPort, '/api/trigger', {
|
|
9930
9982
|
method: 'POST',
|
|
9931
9983
|
headers: { 'content-type': 'application/json' },
|
|
9932
9984
|
body: JSON.stringify({
|
|
@@ -12037,7 +12089,7 @@ switch (command) {
|
|
|
12037
12089
|
cmdUpgrade();
|
|
12038
12090
|
break;
|
|
12039
12091
|
case 'dashboard':
|
|
12040
|
-
await cmdDashboard();
|
|
12092
|
+
await cmdDashboard(process.argv.slice(3));
|
|
12041
12093
|
break;
|
|
12042
12094
|
case 'bind': {
|
|
12043
12095
|
// `botmux bind <code>` — 把本机绑定到中心化平台
|