botmux 2.111.0 → 2.112.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 +19 -7
- package/README.md +19 -7
- package/dist/adapters/adopt-route.d.ts.map +1 -1
- package/dist/adapters/adopt-route.js +2 -1
- package/dist/adapters/adopt-route.js.map +1 -1
- package/dist/adapters/backend/herdr-backend.d.ts +29 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +167 -0
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.js +2 -2
- package/dist/adapters/backend/sandbox.d.ts +61 -6
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +235 -43
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +1 -0
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +1 -0
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts +2 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +7 -0
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex-app-turn.d.ts +16 -0
- package/dist/adapters/cli/codex-app-turn.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app-turn.js +26 -0
- package/dist/adapters/cli/codex-app-turn.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +1 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts +8 -6
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +14 -6
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +40 -14
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +116 -19
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/runner-control-channel.d.ts +32 -0
- package/dist/adapters/cli/runner-control-channel.d.ts.map +1 -0
- package/dist/adapters/cli/runner-control-channel.js +104 -0
- package/dist/adapters/cli/runner-control-channel.js.map +1 -0
- package/dist/adapters/cli/shared-hints.d.ts +1 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +9 -0
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +100 -64
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +13 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +36 -27
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +354 -8
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/saved-workflow.d.ts +25 -0
- package/dist/cli/saved-workflow.d.ts.map +1 -0
- package/dist/cli/saved-workflow.js +338 -0
- package/dist/cli/saved-workflow.js.map +1 -0
- package/dist/cli/send-dispatch.d.ts +18 -3
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +22 -3
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli/v3-run-cancel.d.ts +47 -0
- package/dist/cli/v3-run-cancel.d.ts.map +1 -0
- package/dist/cli/v3-run-cancel.js +96 -0
- package/dist/cli/v3-run-cancel.js.map +1 -0
- package/dist/cli/vc-agent.d.ts.map +1 -1
- package/dist/cli/vc-agent.js +54 -1
- package/dist/cli/vc-agent.js.map +1 -1
- package/dist/cli/workflow-migration.d.ts +39 -0
- package/dist/cli/workflow-migration.d.ts.map +1 -0
- package/dist/cli/workflow-migration.js +302 -0
- package/dist/cli/workflow-migration.js.map +1 -0
- package/dist/cli/workflow-run-archive.d.ts +29 -0
- package/dist/cli/workflow-run-archive.d.ts.map +1 -0
- package/dist/cli/workflow-run-archive.js +183 -0
- package/dist/cli/workflow-run-archive.js.map +1 -0
- package/dist/cli/workflow.d.ts +5 -10
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +85 -764
- package/dist/cli/workflow.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1018 -191
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +30 -21
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +21 -9
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/current-turn-provenance.d.ts +39 -0
- package/dist/core/current-turn-provenance.d.ts.map +1 -0
- package/dist/core/current-turn-provenance.js +122 -0
- package/dist/core/current-turn-provenance.js.map +1 -0
- package/dist/core/daemon-ipc-auth.d.ts +20 -0
- package/dist/core/daemon-ipc-auth.d.ts.map +1 -0
- package/dist/core/daemon-ipc-auth.js +44 -0
- package/dist/core/daemon-ipc-auth.js.map +1 -0
- package/dist/core/daemon-ipc-session-auth.d.ts +37 -0
- package/dist/core/daemon-ipc-session-auth.d.ts.map +1 -0
- package/dist/core/daemon-ipc-session-auth.js +35 -0
- package/dist/core/daemon-ipc-session-auth.js.map +1 -0
- package/dist/core/dashboard-command/index.d.ts +0 -2
- package/dist/core/dashboard-command/index.d.ts.map +1 -1
- package/dist/core/dashboard-command/index.js +2 -2
- package/dist/core/dashboard-command/index.js.map +1 -1
- package/dist/core/dashboard-command/stub.d.ts +1 -1
- package/dist/core/dashboard-command/stub.d.ts.map +1 -1
- package/dist/core/dashboard-command/stub.js +0 -1
- package/dist/core/dashboard-command/stub.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +11 -2
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +266 -41
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-secret.d.ts +3 -0
- package/dist/core/dashboard-secret.d.ts.map +1 -0
- package/dist/core/dashboard-secret.js +7 -0
- package/dist/core/dashboard-secret.js.map +1 -0
- package/dist/core/data-dir.d.ts +24 -0
- package/dist/core/data-dir.d.ts.map +1 -0
- package/dist/core/data-dir.js +48 -0
- package/dist/core/data-dir.js.map +1 -0
- package/dist/core/inflight-input-tracker.d.ts +4 -2
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js +6 -5
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/inject-queue-policy.d.ts +70 -0
- package/dist/core/inject-queue-policy.d.ts.map +1 -0
- package/dist/core/inject-queue-policy.js +30 -0
- package/dist/core/inject-queue-policy.js.map +1 -0
- package/dist/core/maintenance.d.ts +1 -1
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +3 -2
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/managed-origin-capability.d.ts +30 -0
- package/dist/core/managed-origin-capability.d.ts.map +1 -0
- package/dist/core/managed-origin-capability.js +88 -0
- package/dist/core/managed-origin-capability.js.map +1 -0
- package/dist/core/role-library.d.ts +15 -0
- package/dist/core/role-library.d.ts.map +1 -0
- package/dist/core/role-library.js +75 -0
- package/dist/core/role-library.js.map +1 -0
- package/dist/core/session-cwd.d.ts +14 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +17 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +4 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +27 -8
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-marker.d.ts +22 -0
- package/dist/core/session-marker.d.ts.map +1 -1
- package/dist/core/session-marker.js +185 -20
- package/dist/core/session-marker.js.map +1 -1
- package/dist/core/slash-inject.d.ts +15 -0
- package/dist/core/slash-inject.d.ts.map +1 -0
- package/dist/core/slash-inject.js +25 -0
- package/dist/core/slash-inject.js.map +1 -0
- package/dist/core/terminal-url.d.ts +1 -0
- package/dist/core/terminal-url.d.ts.map +1 -1
- package/dist/core/terminal-url.js +14 -8
- package/dist/core/terminal-url.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +26 -0
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +48 -3
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/trigger-session.d.ts +24 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +106 -15
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +26 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +65 -2
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +459 -39
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +249 -8
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +7383 -1195
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/aggregator.d.ts +1 -1
- package/dist/dashboard/aggregator.d.ts.map +1 -1
- package/dist/dashboard/aggregator.js +2 -2
- package/dist/dashboard/aggregator.js.map +1 -1
- package/dist/dashboard/auth.d.ts +3 -8
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +63 -22
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts +5 -0
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +37 -0
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +42 -2
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/daemon-internal-api.d.ts +0 -2
- package/dist/dashboard/daemon-internal-api.d.ts.map +1 -1
- package/dist/dashboard/daemon-internal-api.js +26 -93
- package/dist/dashboard/daemon-internal-api.js.map +1 -1
- package/dist/dashboard/daemon-internal-client.d.ts.map +1 -1
- package/dist/dashboard/daemon-internal-client.js +2 -3
- package/dist/dashboard/daemon-internal-client.js.map +1 -1
- package/dist/dashboard/federation-api.js +1 -1
- package/dist/dashboard/federation-api.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +1 -1
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/history-senders.d.ts +3 -0
- package/dist/dashboard/history-senders.d.ts.map +1 -1
- package/dist/dashboard/history-senders.js.map +1 -1
- package/dist/dashboard/http.d.ts +4 -0
- package/dist/dashboard/http.d.ts.map +1 -0
- package/dist/dashboard/http.js +6 -0
- package/dist/dashboard/http.js.map +1 -0
- package/dist/dashboard/registry.d.ts +4 -0
- package/dist/dashboard/registry.d.ts.map +1 -1
- package/dist/dashboard/registry.js.map +1 -1
- package/dist/dashboard/trigger-api.js +1 -1
- package/dist/dashboard/trigger-api.js.map +1 -1
- package/dist/dashboard/v3-runs-api.d.ts +13 -10
- package/dist/dashboard/v3-runs-api.d.ts.map +1 -1
- package/dist/dashboard/v3-runs-api.js +121 -4
- package/dist/dashboard/v3-runs-api.js.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.d.ts +105 -0
- package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -0
- package/dist/dashboard/vc-consumer-profiles-api.js +312 -0
- package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +7 -6
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +9 -14
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +7 -3
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/connectors-page.d.ts +5 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +16 -12
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/create-session-entry.d.ts +4 -0
- package/dist/dashboard/web/create-session-entry.d.ts.map +1 -0
- package/dist/dashboard/web/create-session-entry.js +17 -0
- package/dist/dashboard/web/create-session-entry.js.map +1 -0
- package/dist/dashboard/web/dashboard-components.d.ts +5 -0
- package/dist/dashboard/web/dashboard-components.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-components.js +29 -4
- package/dist/dashboard/web/dashboard-components.js.map +1 -1
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +0 -1
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +192 -382
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +3 -0
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +18 -0
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
- package/dist/dashboard/web/schedules-page.js +4 -1
- 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 +64 -18
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +2 -1
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/v3-api.d.ts +12 -2
- package/dist/dashboard/web/v3-api.d.ts.map +1 -1
- package/dist/dashboard/web/v3-api.js +34 -6
- package/dist/dashboard/web/v3-api.js.map +1 -1
- package/dist/dashboard/web/v3-components.d.ts +6 -0
- package/dist/dashboard/web/v3-components.d.ts.map +1 -1
- package/dist/dashboard/web/v3-components.js +66 -23
- package/dist/dashboard/web/v3-components.js.map +1 -1
- package/dist/dashboard/web/v3-model.js +1 -1
- package/dist/dashboard/web/v3-model.js.map +1 -1
- package/dist/dashboard/web/v3-terminal.js +2 -2
- package/dist/dashboard/web/v3-terminal.js.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +19 -0
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -0
- package/dist/dashboard/web/vc-consumer-profiles-section.js +382 -0
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -0
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +29 -6
- 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-RYBL4ZYE.js +4 -0
- package/dist/dashboard-web/chunks/{chunk-OEJIT66L.js → chunk-CMDPZOPK.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-I35DXGM4.js +1 -0
- package/dist/dashboard-web/chunks/chunk-NYZHARIU.js +47 -0
- package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-YQFXGRSD.js → chunk-YBOHL7T7.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-YWCPDL4S.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-DAMP7TTV.js +1 -0
- package/dist/dashboard-web/chunks/{groups-page-5AJPPJH2.js → groups-page-BPFA356N.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-R3DFECX4.js → insights-page-SHOPHTWY.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-NLMKJLDY.js → monitor-room-PXPJGZCN.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-EHSOX4GV.js → monitoring-page-4DF54M5Y.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-OXJKFJ4R.js → office-page-6OHU6KMZ.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-GJHIVXJF.js → overview-page-IHIZ6F5M.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-6ZODQISW.js → roles-page-JYTBYKEF.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-DAGMHVCH.js → schedules-page-WJ72T7KV.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-QC56OIAI.js +3 -0
- package/dist/dashboard-web/chunks/settings-page-TCKWEXTN.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-J7EVUHXP.js → skills-page-RJJNIECW.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-YM5JBIII.js → team-federation-page-ZMDX3E7K.js} +1 -1
- package/dist/dashboard-web/chunks/v3-page-VLLAUQ33.js +94 -0
- package/dist/dashboard-web/chunks/{whiteboards-page-75N2U6W4.js → whiteboards-page-NAO53CKM.js} +1 -1
- package/dist/dashboard-web/style.css +363 -274
- package/dist/dashboard.js +194 -78
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +12 -87
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +12 -87
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/brand-template.d.ts +15 -0
- package/dist/im/lark/brand-template.d.ts.map +1 -0
- package/dist/im/lark/brand-template.js +114 -0
- package/dist/im/lark/brand-template.js.map +1 -0
- package/dist/im/lark/card-handler.d.ts +6 -3
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +23 -39
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +8 -2
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +33 -31
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/doc-comment.d.ts +18 -0
- package/dist/im/lark/doc-comment.d.ts.map +1 -1
- package/dist/im/lark/doc-comment.js +119 -5
- package/dist/im/lark/doc-comment.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +18 -2
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +41 -19
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/merge-forward.d.ts.map +1 -1
- package/dist/im/lark/merge-forward.js +7 -2
- package/dist/im/lark/merge-forward.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +7 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts +1 -2
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +1 -48
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -1
- package/dist/im/lark/v3-blocked-card-handler.js +5 -5
- package/dist/im/lark/v3-blocked-card-handler.js.map +1 -1
- package/dist/im/lark/v3-blocked-card.d.ts +1 -0
- package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
- package/dist/im/lark/v3-blocked-card.js +19 -2
- package/dist/im/lark/v3-blocked-card.js.map +1 -1
- package/dist/im/lark/v3-distillation-card-handler.d.ts +12 -0
- package/dist/im/lark/v3-distillation-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-distillation-card-handler.js +107 -0
- package/dist/im/lark/v3-distillation-card-handler.js.map +1 -0
- package/dist/im/lark/v3-distillation-card.d.ts +42 -0
- package/dist/im/lark/v3-distillation-card.d.ts.map +1 -0
- package/dist/im/lark/v3-distillation-card.js +206 -0
- package/dist/im/lark/v3-distillation-card.js.map +1 -0
- package/dist/im/lark/v3-gate-card-handler.d.ts +1 -1
- package/dist/im/lark/v3-gate-card-handler.d.ts.map +1 -1
- package/dist/im/lark/v3-gate-card-handler.js +6 -5
- package/dist/im/lark/v3-gate-card-handler.js.map +1 -1
- package/dist/im/lark/v3-gate-card.d.ts +8 -1
- package/dist/im/lark/v3-gate-card.d.ts.map +1 -1
- package/dist/im/lark/v3-gate-card.js +38 -7
- package/dist/im/lark/v3-gate-card.js.map +1 -1
- package/dist/im/lark/v3-loop-grant-card-handler.d.ts.map +1 -1
- package/dist/im/lark/v3-loop-grant-card-handler.js +3 -4
- package/dist/im/lark/v3-loop-grant-card-handler.js.map +1 -1
- package/dist/im/lark/v3-loop-grant-card.js +1 -1
- package/dist/im/lark/v3-loop-grant-card.js.map +1 -1
- package/dist/im/lark/v3-progress-card-manager.d.ts +79 -0
- package/dist/im/lark/v3-progress-card-manager.d.ts.map +1 -0
- package/dist/im/lark/v3-progress-card-manager.js +444 -0
- package/dist/im/lark/v3-progress-card-manager.js.map +1 -0
- package/dist/im/lark/v3-progress-card.d.ts +26 -0
- package/dist/im/lark/v3-progress-card.d.ts.map +1 -0
- package/dist/im/lark/v3-progress-card.js +211 -0
- package/dist/im/lark/v3-progress-card.js.map +1 -0
- package/dist/im/lark/v3-revisit-grant-card-handler.d.ts.map +1 -1
- package/dist/im/lark/v3-revisit-grant-card-handler.js +3 -4
- package/dist/im/lark/v3-revisit-grant-card-handler.js.map +1 -1
- package/dist/im/lark/v3-revisit-grant-card.js +1 -1
- package/dist/im/lark/v3-revisit-grant-card.js.map +1 -1
- package/dist/im/lark/v3-run-save-card-handler.d.ts +12 -0
- package/dist/im/lark/v3-run-save-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-run-save-card-handler.js +160 -0
- package/dist/im/lark/v3-run-save-card-handler.js.map +1 -0
- package/dist/im/lark/v3-run-save-card.d.ts +38 -0
- package/dist/im/lark/v3-run-save-card.d.ts.map +1 -0
- package/dist/im/lark/v3-run-save-card.js +125 -0
- package/dist/im/lark/v3-run-save-card.js.map +1 -0
- package/dist/im/lark/v3-saved-workflow-command.d.ts +36 -0
- package/dist/im/lark/v3-saved-workflow-command.d.ts.map +1 -0
- package/dist/im/lark/v3-saved-workflow-command.js +186 -0
- package/dist/im/lark/v3-saved-workflow-command.js.map +1 -0
- package/dist/im/lark/v3-saved-workflow-handler.d.ts +89 -0
- package/dist/im/lark/v3-saved-workflow-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-saved-workflow-handler.js +212 -0
- package/dist/im/lark/v3-saved-workflow-handler.js.map +1 -0
- package/dist/im/lark/workflow-slash-command.d.ts +7 -110
- package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
- package/dist/im/lark/workflow-slash-command.js +16 -230
- package/dist/im/lark/workflow-slash-command.js.map +1 -1
- package/dist/index-daemon.js +1 -1
- package/dist/index-daemon.js.map +1 -1
- package/dist/mir-runner.js +11 -15
- package/dist/mir-runner.js.map +1 -1
- package/dist/mira-runner.js +8 -12
- package/dist/mira-runner.js.map +1 -1
- package/dist/services/bridge-turn-queue.d.ts +29 -12
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +59 -23
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/claude-transcript.d.ts +15 -0
- package/dist/services/claude-transcript.d.ts.map +1 -1
- package/dist/services/claude-transcript.js +24 -0
- package/dist/services/claude-transcript.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +13 -2
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +20 -3
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +6 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/grok-transcript.d.ts +3 -2
- package/dist/services/grok-transcript.d.ts.map +1 -1
- package/dist/services/grok-transcript.js +73 -22
- package/dist/services/grok-transcript.js.map +1 -1
- package/dist/services/hook-runner.d.ts.map +1 -1
- package/dist/services/hook-runner.js +26 -3
- package/dist/services/hook-runner.js.map +1 -1
- package/dist/services/schedule-store.d.ts +37 -0
- package/dist/services/schedule-store.d.ts.map +1 -1
- package/dist/services/schedule-store.js +259 -141
- package/dist/services/schedule-store.js.map +1 -1
- package/dist/services/send-policy.d.ts +50 -0
- package/dist/services/send-policy.d.ts.map +1 -1
- package/dist/services/send-policy.js +65 -0
- package/dist/services/send-policy.js.map +1 -1
- package/dist/services/session-lifecycle-hooks.d.ts.map +1 -1
- package/dist/services/session-lifecycle-hooks.js +12 -0
- package/dist/services/session-lifecycle-hooks.js.map +1 -1
- package/dist/services/traex-transcript.d.ts +11 -2
- package/dist/services/traex-transcript.d.ts.map +1 -1
- package/dist/services/traex-transcript.js +142 -8
- package/dist/services/traex-transcript.js.map +1 -1
- package/dist/services/trigger-types.d.ts +6 -1
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/turn-terminal-deduper.d.ts +14 -0
- package/dist/services/turn-terminal-deduper.d.ts.map +1 -0
- package/dist/services/turn-terminal-deduper.js +34 -0
- package/dist/services/turn-terminal-deduper.js.map +1 -0
- package/dist/services/vc-meeting-action-gate.d.ts +246 -0
- package/dist/services/vc-meeting-action-gate.d.ts.map +1 -0
- package/dist/services/vc-meeting-action-gate.js +756 -0
- package/dist/services/vc-meeting-action-gate.js.map +1 -0
- package/dist/services/vc-meeting-action-store.d.ts +222 -0
- package/dist/services/vc-meeting-action-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-action-store.js +806 -0
- package/dist/services/vc-meeting-action-store.js.map +1 -0
- package/dist/services/vc-meeting-consumer-isolation.d.ts +27 -0
- package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -0
- package/dist/services/vc-meeting-consumer-isolation.js +37 -0
- package/dist/services/vc-meeting-consumer-isolation.js.map +1 -0
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +72 -0
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -0
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js +343 -0
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -0
- package/dist/services/vc-meeting-consumer-profile-store.d.ts +39 -0
- package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-consumer-profile-store.js +190 -0
- package/dist/services/vc-meeting-consumer-profile-store.js.map +1 -0
- package/dist/services/vc-meeting-daemon-auth.d.ts +29 -0
- package/dist/services/vc-meeting-daemon-auth.d.ts.map +1 -0
- package/dist/services/vc-meeting-daemon-auth.js +117 -0
- package/dist/services/vc-meeting-daemon-auth.js.map +1 -0
- package/dist/services/vc-meeting-delivery-feed.d.ts +52 -0
- package/dist/services/vc-meeting-delivery-feed.d.ts.map +1 -0
- package/dist/services/vc-meeting-delivery-feed.js +231 -0
- package/dist/services/vc-meeting-delivery-feed.js.map +1 -0
- package/dist/services/vc-meeting-delivery-hub-store.d.ts +213 -0
- package/dist/services/vc-meeting-delivery-hub-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-delivery-hub-store.js +1230 -0
- package/dist/services/vc-meeting-delivery-hub-store.js.map +1 -0
- package/dist/services/vc-meeting-delivery-protocol.d.ts +159 -0
- package/dist/services/vc-meeting-delivery-protocol.d.ts.map +1 -0
- package/dist/services/vc-meeting-delivery-protocol.js +443 -0
- package/dist/services/vc-meeting-delivery-protocol.js.map +1 -0
- package/dist/services/vc-meeting-delivery-receiver.d.ts +80 -0
- package/dist/services/vc-meeting-delivery-receiver.d.ts.map +1 -0
- package/dist/services/vc-meeting-delivery-receiver.js +543 -0
- package/dist/services/vc-meeting-delivery-receiver.js.map +1 -0
- package/dist/services/vc-meeting-delivery-store.d.ts +339 -0
- package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-delivery-store.js +1024 -0
- package/dist/services/vc-meeting-delivery-store.js.map +1 -0
- package/dist/services/vc-meeting-feed-metadata-store.d.ts +58 -0
- package/dist/services/vc-meeting-feed-metadata-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-feed-metadata-store.js +356 -0
- package/dist/services/vc-meeting-feed-metadata-store.js.map +1 -0
- package/dist/services/vc-meeting-im-reply.d.ts +55 -0
- package/dist/services/vc-meeting-im-reply.d.ts.map +1 -0
- package/dist/services/vc-meeting-im-reply.js +279 -0
- package/dist/services/vc-meeting-im-reply.js.map +1 -0
- package/dist/services/vc-meeting-im-routing.d.ts +131 -0
- package/dist/services/vc-meeting-im-routing.d.ts.map +1 -0
- package/dist/services/vc-meeting-im-routing.js +449 -0
- package/dist/services/vc-meeting-im-routing.js.map +1 -0
- package/dist/services/vc-meeting-listener-message-store.d.ts +23 -0
- package/dist/services/vc-meeting-listener-message-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-listener-message-store.js +142 -0
- package/dist/services/vc-meeting-listener-message-store.js.map +1 -0
- package/dist/services/vc-meeting-member-policy.d.ts +37 -0
- package/dist/services/vc-meeting-member-policy.d.ts.map +1 -0
- package/dist/services/vc-meeting-member-policy.js +102 -0
- package/dist/services/vc-meeting-member-policy.js.map +1 -0
- package/dist/services/vc-meeting-profile-instructions.d.ts +22 -0
- package/dist/services/vc-meeting-profile-instructions.d.ts.map +1 -0
- package/dist/services/vc-meeting-profile-instructions.js +64 -0
- package/dist/services/vc-meeting-profile-instructions.js.map +1 -0
- package/dist/services/vc-meeting-runtime-store.d.ts +63 -0
- package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-runtime-store.js +605 -116
- package/dist/services/vc-meeting-runtime-store.js.map +1 -1
- package/dist/services/vc-meeting-send-policy.d.ts +89 -0
- package/dist/services/vc-meeting-send-policy.d.ts.map +1 -0
- package/dist/services/vc-meeting-send-policy.js +150 -0
- package/dist/services/vc-meeting-send-policy.js.map +1 -0
- package/dist/services/vc-meeting-terminal-reconciler.d.ts +93 -0
- package/dist/services/vc-meeting-terminal-reconciler.d.ts.map +1 -0
- package/dist/services/vc-meeting-terminal-reconciler.js +198 -0
- package/dist/services/vc-meeting-terminal-reconciler.js.map +1 -0
- package/dist/setup/open-platform-automation.d.ts +2 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +1 -0
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/open-platform-outcome.d.ts +50 -0
- package/dist/setup/open-platform-outcome.d.ts.map +1 -0
- package/dist/setup/open-platform-outcome.js +56 -0
- package/dist/setup/open-platform-outcome.js.map +1 -0
- package/dist/setup/setup-args.d.ts +7 -2
- package/dist/setup/setup-args.d.ts.map +1 -1
- package/dist/setup/setup-args.js +21 -5
- package/dist/setup/setup-args.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +66 -54
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +5 -4
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +19 -10
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/canonical-input-hash.d.ts +5 -0
- package/dist/utils/canonical-input-hash.d.ts.map +1 -0
- package/dist/utils/canonical-input-hash.js +43 -0
- package/dist/utils/canonical-input-hash.js.map +1 -0
- package/dist/utils/canonical-json.d.ts +10 -0
- package/dist/utils/canonical-json.d.ts.map +1 -0
- package/dist/utils/canonical-json.js +23 -0
- package/dist/utils/canonical-json.js.map +1 -0
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +8 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/daemon-discovery.d.ts +4 -0
- package/dist/utils/daemon-discovery.d.ts.map +1 -1
- package/dist/utils/daemon-discovery.js +12 -6
- package/dist/utils/daemon-discovery.js.map +1 -1
- package/dist/utils/file-lock.d.ts.map +1 -1
- package/dist/utils/file-lock.js +696 -102
- package/dist/utils/file-lock.js.map +1 -1
- package/dist/utils/fs-durability.d.ts +20 -0
- package/dist/utils/fs-durability.d.ts.map +1 -0
- package/dist/utils/fs-durability.js +84 -0
- package/dist/utils/fs-durability.js.map +1 -0
- package/dist/utils/global-install.d.ts +5 -2
- package/dist/utils/global-install.d.ts.map +1 -1
- package/dist/utils/global-install.js +22 -4
- package/dist/utils/global-install.js.map +1 -1
- package/dist/utils/herdr-web-history.d.ts +12 -0
- package/dist/utils/herdr-web-history.d.ts.map +1 -0
- package/dist/utils/herdr-web-history.js +74 -0
- package/dist/utils/herdr-web-history.js.map +1 -0
- package/dist/utils/herdr-web-terminal-binding.d.ts +39 -0
- package/dist/utils/herdr-web-terminal-binding.d.ts.map +1 -0
- package/dist/utils/herdr-web-terminal-binding.js +56 -0
- package/dist/utils/herdr-web-terminal-binding.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +30 -1
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +45 -5
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/vc-agent/cards.d.ts +49 -4
- package/dist/vc-agent/cards.d.ts.map +1 -1
- package/dist/vc-agent/cards.js +460 -70
- package/dist/vc-agent/cards.js.map +1 -1
- package/dist/vc-agent/polling-source.d.ts +6 -1
- package/dist/vc-agent/polling-source.d.ts.map +1 -1
- package/dist/vc-agent/polling-source.js +17 -4
- package/dist/vc-agent/polling-source.js.map +1 -1
- package/dist/worker.js +1333 -283
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +28 -35
- package/dist/workflows/definition.d.ts.map +1 -1
- package/dist/workflows/definition.js +7 -24
- package/dist/workflows/definition.js.map +1 -1
- package/dist/workflows/events/payloads.d.ts +28 -28
- package/dist/workflows/events/replay.d.ts +5 -0
- package/dist/workflows/events/replay.d.ts.map +1 -1
- package/dist/workflows/events/replay.js +6 -1
- package/dist/workflows/events/replay.js.map +1 -1
- package/dist/workflows/events/schema.d.ts +663 -663
- package/dist/workflows/events/schema.d.ts.map +1 -1
- package/dist/workflows/events/schema.js +1 -4
- package/dist/workflows/events/schema.js.map +1 -1
- package/dist/workflows/hostExecutors/botmux-schedule.d.ts +5 -4
- package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/botmux-schedule.js +80 -35
- package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
- package/dist/workflows/hostExecutors/feishu-im.d.ts +3 -3
- package/dist/workflows/hostExecutors/feishu-im.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/feishu-im.js +3 -3
- package/dist/workflows/hostExecutors/feishu-im.js.map +1 -1
- package/dist/workflows/hostExecutors/feishu-reply.d.ts +1 -1
- package/dist/workflows/hostExecutors/feishu-reply.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/feishu-reply.js +1 -1
- package/dist/workflows/hostExecutors/feishu-reply.js.map +1 -1
- package/dist/workflows/hostExecutors/feishu-send.d.ts +1 -1
- package/dist/workflows/hostExecutors/feishu-send.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/feishu-send.js +1 -1
- package/dist/workflows/hostExecutors/feishu-send.js.map +1 -1
- package/dist/workflows/hostExecutors/index.d.ts +0 -1
- package/dist/workflows/hostExecutors/index.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/index.js +0 -1
- package/dist/workflows/hostExecutors/index.js.map +1 -1
- package/dist/workflows/hostExecutors/registry.d.ts +1 -1
- package/dist/workflows/hostExecutors/registry.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/types.d.ts +21 -29
- package/dist/workflows/hostExecutors/types.d.ts.map +1 -1
- package/dist/workflows/migration/v2-definition-paths.d.ts +3 -0
- package/dist/workflows/migration/v2-definition-paths.d.ts.map +1 -0
- package/dist/workflows/migration/v2-definition-paths.js +10 -0
- package/dist/workflows/migration/v2-definition-paths.js.map +1 -0
- package/dist/workflows/migration/v2-ledger.d.ts +138 -0
- package/dist/workflows/migration/v2-ledger.d.ts.map +1 -0
- package/dist/workflows/migration/v2-ledger.js +599 -0
- package/dist/workflows/migration/v2-ledger.js.map +1 -0
- package/dist/workflows/migration/v2-migration-service.d.ts +40 -0
- package/dist/workflows/migration/v2-migration-service.d.ts.map +1 -0
- package/dist/workflows/migration/v2-migration-service.js +454 -0
- package/dist/workflows/migration/v2-migration-service.js.map +1 -0
- package/dist/workflows/migration/v2-read-only-ids.d.ts +7 -0
- package/dist/workflows/migration/v2-read-only-ids.d.ts.map +1 -0
- package/dist/workflows/migration/v2-read-only-ids.js +9 -0
- package/dist/workflows/migration/v2-read-only-ids.js.map +1 -0
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +976 -0
- package/dist/workflows/migration/v2-run-archive-schema.d.ts.map +1 -0
- package/dist/workflows/migration/v2-run-archive-schema.js +113 -0
- package/dist/workflows/migration/v2-run-archive-schema.js.map +1 -0
- package/dist/workflows/migration/v2-run-archive.d.ts +92 -0
- package/dist/workflows/migration/v2-run-archive.d.ts.map +1 -0
- package/dist/workflows/migration/v2-run-archive.js +1220 -0
- package/dist/workflows/migration/v2-run-archive.js.map +1 -0
- package/dist/workflows/migration/v2-scanner.d.ts +22 -0
- package/dist/workflows/migration/v2-scanner.d.ts.map +1 -0
- package/dist/workflows/migration/v2-scanner.js +114 -0
- package/dist/workflows/migration/v2-scanner.js.map +1 -0
- package/dist/workflows/migration/v2-to-v3.d.ts +32 -0
- package/dist/workflows/migration/v2-to-v3.d.ts.map +1 -0
- package/dist/workflows/migration/v2-to-v3.js +494 -0
- package/dist/workflows/migration/v2-to-v3.js.map +1 -0
- package/dist/workflows/ops-projection.d.ts.map +1 -1
- package/dist/workflows/ops-projection.js +4 -3
- package/dist/workflows/ops-projection.js.map +1 -1
- package/dist/workflows/shared/idempotency-key.d.ts +19 -0
- package/dist/workflows/shared/idempotency-key.d.ts.map +1 -0
- package/dist/workflows/shared/idempotency-key.js +23 -0
- package/dist/workflows/shared/idempotency-key.js.map +1 -0
- package/dist/workflows/{params.d.ts → shared/params.d.ts} +42 -6
- package/dist/workflows/shared/params.d.ts.map +1 -0
- package/dist/workflows/{params.js → shared/params.js} +91 -4
- package/dist/workflows/shared/params.js.map +1 -0
- package/dist/workflows/shared/provider-reconciler.d.ts +47 -0
- package/dist/workflows/shared/provider-reconciler.d.ts.map +1 -0
- package/dist/workflows/shared/provider-reconciler.js +17 -0
- package/dist/workflows/shared/provider-reconciler.js.map +1 -0
- package/dist/workflows/{spawn-policy.d.ts → shared/sandbox-policy.d.ts} +2 -2
- package/dist/workflows/shared/sandbox-policy.d.ts.map +1 -0
- package/dist/workflows/{spawn-policy.js → shared/sandbox-policy.js} +1 -1
- package/dist/workflows/shared/sandbox-policy.js.map +1 -0
- package/dist/workflows/shared/worker-process.d.ts +29 -0
- package/dist/workflows/shared/worker-process.d.ts.map +1 -0
- package/dist/workflows/shared/worker-process.js +56 -0
- package/dist/workflows/shared/worker-process.js.map +1 -0
- package/dist/workflows/v3/architect.d.ts.map +1 -1
- package/dist/workflows/v3/architect.js +16 -4
- package/dist/workflows/v3/architect.js.map +1 -1
- package/dist/workflows/v3/attempt-ledger.d.ts +23 -0
- package/dist/workflows/v3/attempt-ledger.d.ts.map +1 -0
- package/dist/workflows/v3/attempt-ledger.js +74 -0
- package/dist/workflows/v3/attempt-ledger.js.map +1 -0
- package/dist/workflows/v3/bot-resolve.d.ts +19 -1
- package/dist/workflows/v3/bot-resolve.d.ts.map +1 -1
- package/dist/workflows/v3/bot-resolve.js +129 -3
- package/dist/workflows/v3/bot-resolve.js.map +1 -1
- package/dist/workflows/v3/cli-daemon-command-authority.d.ts +59 -0
- package/dist/workflows/v3/cli-daemon-command-authority.d.ts.map +1 -0
- package/dist/workflows/v3/cli-daemon-command-authority.js +175 -0
- package/dist/workflows/v3/cli-daemon-command-authority.js.map +1 -0
- package/dist/workflows/v3/cli-run.d.ts +27 -0
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +113 -29
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/contract.d.ts +16 -16
- package/dist/workflows/v3/contract.d.ts.map +1 -1
- package/dist/workflows/v3/contract.js +15 -11
- package/dist/workflows/v3/contract.js.map +1 -1
- package/dist/workflows/v3/daemon-ipc-auth.d.ts +113 -0
- package/dist/workflows/v3/daemon-ipc-auth.d.ts.map +1 -0
- package/dist/workflows/v3/daemon-ipc-auth.js +294 -0
- package/dist/workflows/v3/daemon-ipc-auth.js.map +1 -0
- package/dist/workflows/v3/daemon-ipc-body.d.ts +30 -0
- package/dist/workflows/v3/daemon-ipc-body.d.ts.map +1 -0
- package/dist/workflows/v3/daemon-ipc-body.js +65 -0
- package/dist/workflows/v3/daemon-ipc-body.js.map +1 -0
- package/dist/workflows/v3/daemon-ipc-client.d.ts +32 -0
- package/dist/workflows/v3/daemon-ipc-client.d.ts.map +1 -0
- package/dist/workflows/v3/daemon-ipc-client.js +74 -0
- package/dist/workflows/v3/daemon-ipc-client.js.map +1 -0
- package/dist/workflows/v3/daemon-run.d.ts +87 -2
- package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
- package/dist/workflows/v3/daemon-run.js +863 -68
- package/dist/workflows/v3/daemon-run.js.map +1 -1
- package/dist/workflows/v3/dag.d.ts +22 -8
- package/dist/workflows/v3/dag.d.ts.map +1 -1
- package/dist/workflows/v3/dag.js +214 -22
- package/dist/workflows/v3/dag.js.map +1 -1
- package/dist/workflows/v3/distillation-compiler.d.ts +36 -0
- package/dist/workflows/v3/distillation-compiler.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-compiler.js +704 -0
- package/dist/workflows/v3/distillation-compiler.js.map +1 -0
- package/dist/workflows/v3/distillation-private-root.d.ts +10 -0
- package/dist/workflows/v3/distillation-private-root.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-private-root.js +34 -0
- package/dist/workflows/v3/distillation-private-root.js.map +1 -0
- package/dist/workflows/v3/distillation-runner.d.ts +64 -0
- package/dist/workflows/v3/distillation-runner.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-runner.js +1028 -0
- package/dist/workflows/v3/distillation-runner.js.map +1 -0
- package/dist/workflows/v3/distillation-schema.d.ts +63 -0
- package/dist/workflows/v3/distillation-schema.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-schema.js +184 -0
- package/dist/workflows/v3/distillation-schema.js.map +1 -0
- package/dist/workflows/v3/distillation-service.d.ts +78 -0
- package/dist/workflows/v3/distillation-service.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-service.js +416 -0
- package/dist/workflows/v3/distillation-service.js.map +1 -0
- package/dist/workflows/v3/distillation-source.d.ts +35 -0
- package/dist/workflows/v3/distillation-source.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-source.js +118 -0
- package/dist/workflows/v3/distillation-source.js.map +1 -0
- package/dist/workflows/v3/distillation-store.d.ts +185 -0
- package/dist/workflows/v3/distillation-store.d.ts.map +1 -0
- package/dist/workflows/v3/distillation-store.js +1127 -0
- package/dist/workflows/v3/distillation-store.js.map +1 -0
- package/dist/workflows/v3/drive-lease.d.ts +7 -0
- package/dist/workflows/v3/drive-lease.d.ts.map +1 -0
- package/dist/workflows/v3/drive-lease.js +10 -0
- package/dist/workflows/v3/drive-lease.js.map +1 -0
- package/dist/workflows/v3/ephemeral-pool.d.ts +1 -1
- package/dist/workflows/v3/ephemeral-pool.d.ts.map +1 -1
- package/dist/workflows/v3/ephemeral-pool.js +222 -37
- package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
- package/dist/workflows/v3/grill-state.d.ts +18 -3
- package/dist/workflows/v3/grill-state.d.ts.map +1 -1
- package/dist/workflows/v3/grill-state.js +22 -5
- package/dist/workflows/v3/grill-state.js.map +1 -1
- package/dist/workflows/v3/host-bindings.d.ts +40 -0
- package/dist/workflows/v3/host-bindings.d.ts.map +1 -0
- package/dist/workflows/v3/host-bindings.js +272 -0
- package/dist/workflows/v3/host-bindings.js.map +1 -0
- package/dist/workflows/v3/host-effect-ledger.d.ts +22 -0
- package/dist/workflows/v3/host-effect-ledger.d.ts.map +1 -0
- package/dist/workflows/v3/host-effect-ledger.js +110 -0
- package/dist/workflows/v3/host-effect-ledger.js.map +1 -0
- package/dist/workflows/v3/host-execution.d.ts +142 -0
- package/dist/workflows/v3/host-execution.d.ts.map +1 -0
- package/dist/workflows/v3/host-execution.js +424 -0
- package/dist/workflows/v3/host-execution.js.map +1 -0
- package/dist/workflows/v3/host.d.ts +46 -10
- package/dist/workflows/v3/host.d.ts.map +1 -1
- package/dist/workflows/v3/host.js +419 -140
- package/dist/workflows/v3/host.js.map +1 -1
- package/dist/workflows/v3/human-gate.d.ts +19 -1
- package/dist/workflows/v3/human-gate.d.ts.map +1 -1
- package/dist/workflows/v3/human-gate.js +145 -19
- package/dist/workflows/v3/human-gate.js.map +1 -1
- package/dist/workflows/v3/journal.d.ts +125 -7
- package/dist/workflows/v3/journal.d.ts.map +1 -1
- package/dist/workflows/v3/journal.js +154 -38
- package/dist/workflows/v3/journal.js.map +1 -1
- package/dist/workflows/v3/library-materialize.d.ts +88 -0
- package/dist/workflows/v3/library-materialize.d.ts.map +1 -0
- package/dist/workflows/v3/library-materialize.js +294 -0
- package/dist/workflows/v3/library-materialize.js.map +1 -0
- package/dist/workflows/v3/library-schema.d.ts +138 -0
- package/dist/workflows/v3/library-schema.d.ts.map +1 -0
- package/dist/workflows/v3/library-schema.js +573 -0
- package/dist/workflows/v3/library-schema.js.map +1 -0
- package/dist/workflows/v3/library-service.d.ts +126 -0
- package/dist/workflows/v3/library-service.d.ts.map +1 -0
- package/dist/workflows/v3/library-service.js +542 -0
- package/dist/workflows/v3/library-service.js.map +1 -0
- package/dist/workflows/v3/library-store.d.ts +124 -0
- package/dist/workflows/v3/library-store.d.ts.map +1 -0
- package/dist/workflows/v3/library-store.js +665 -0
- package/dist/workflows/v3/library-store.js.map +1 -0
- package/dist/workflows/v3/orchestrator.d.ts +9 -1
- package/dist/workflows/v3/orchestrator.d.ts.map +1 -1
- package/dist/workflows/v3/orchestrator.js +2 -1
- package/dist/workflows/v3/orchestrator.js.map +1 -1
- package/dist/workflows/v3/progress-projection.d.ts +99 -0
- package/dist/workflows/v3/progress-projection.d.ts.map +1 -0
- package/dist/workflows/v3/progress-projection.js +197 -0
- package/dist/workflows/v3/progress-projection.js.map +1 -0
- package/dist/workflows/v3/run-envelope.d.ts +1279 -0
- package/dist/workflows/v3/run-envelope.d.ts.map +1 -0
- package/dist/workflows/v3/run-envelope.js +681 -0
- package/dist/workflows/v3/run-envelope.js.map +1 -0
- package/dist/workflows/v3/runtime.d.ts +39 -7
- package/dist/workflows/v3/runtime.d.ts.map +1 -1
- package/dist/workflows/v3/runtime.js +1992 -100
- package/dist/workflows/v3/runtime.js.map +1 -1
- package/dist/workflows/v3/session-relay-client.d.ts +61 -0
- package/dist/workflows/v3/session-relay-client.d.ts.map +1 -0
- package/dist/workflows/v3/session-relay-client.js +92 -0
- package/dist/workflows/v3/session-relay-client.js.map +1 -0
- package/dist/workflows/v3/session-relay.d.ts +66 -0
- package/dist/workflows/v3/session-relay.d.ts.map +1 -0
- package/dist/workflows/v3/session-relay.js +157 -0
- package/dist/workflows/v3/session-relay.js.map +1 -0
- package/dist/workflows/v3/start-intent.d.ts +8 -0
- package/dist/workflows/v3/start-intent.d.ts.map +1 -0
- package/dist/workflows/v3/start-intent.js +34 -0
- package/dist/workflows/v3/start-intent.js.map +1 -0
- package/dist/workflows/v3/state.d.ts +11 -2
- package/dist/workflows/v3/state.d.ts.map +1 -1
- package/dist/workflows/v3/state.js +182 -10
- package/dist/workflows/v3/state.js.map +1 -1
- package/dist/workflows/v3/template-bindings.d.ts +22 -0
- package/dist/workflows/v3/template-bindings.d.ts.map +1 -0
- package/dist/workflows/v3/template-bindings.js +204 -0
- package/dist/workflows/v3/template-bindings.js.map +1 -0
- package/dist/workflows/v3/worker-fence.d.ts +158 -0
- package/dist/workflows/v3/worker-fence.d.ts.map +1 -0
- package/dist/workflows/v3/worker-fence.js +685 -0
- package/dist/workflows/v3/worker-fence.js.map +1 -0
- package/package.json +3 -2
- package/dist/core/dashboard-command/workflows.d.ts +0 -20
- package/dist/core/dashboard-command/workflows.d.ts.map +0 -1
- package/dist/core/dashboard-command/workflows.js +0 -45
- package/dist/core/dashboard-command/workflows.js.map +0 -1
- package/dist/dashboard/web/legacy-workflow-link.d.ts +0 -2
- package/dist/dashboard/web/legacy-workflow-link.d.ts.map +0 -1
- package/dist/dashboard/web/legacy-workflow-link.js +0 -12
- package/dist/dashboard/web/legacy-workflow-link.js.map +0 -1
- package/dist/dashboard/web/legacy-workflow-page.d.ts +0 -3
- package/dist/dashboard/web/legacy-workflow-page.d.ts.map +0 -1
- package/dist/dashboard/web/legacy-workflow-page.js +0 -717
- package/dist/dashboard/web/legacy-workflow-page.js.map +0 -1
- package/dist/dashboard/web/workflow-version-switch.d.ts +0 -8
- package/dist/dashboard/web/workflow-version-switch.d.ts.map +0 -1
- package/dist/dashboard/web/workflow-version-switch.js +0 -9
- package/dist/dashboard/web/workflow-version-switch.js.map +0 -1
- package/dist/dashboard/web/workflows.d.ts +0 -273
- package/dist/dashboard/web/workflows.d.ts.map +0 -1
- package/dist/dashboard/web/workflows.js +0 -436
- package/dist/dashboard/web/workflows.js.map +0 -1
- package/dist/dashboard/workflow-api.d.ts +0 -30
- package/dist/dashboard/workflow-api.d.ts.map +0 -1
- package/dist/dashboard/workflow-api.js +0 -397
- package/dist/dashboard/workflow-api.js.map +0 -1
- package/dist/dashboard/workflow-card-model.d.ts +0 -127
- package/dist/dashboard/workflow-card-model.d.ts.map +0 -1
- package/dist/dashboard/workflow-card-model.js +0 -186
- package/dist/dashboard/workflow-card-model.js.map +0 -1
- package/dist/dashboard/workflows-action-helpers.d.ts +0 -105
- package/dist/dashboard/workflows-action-helpers.d.ts.map +0 -1
- package/dist/dashboard/workflows-action-helpers.js +0 -196
- package/dist/dashboard/workflows-action-helpers.js.map +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-7T7DPOV6.js +0 -4
- package/dist/dashboard-web/chunks/chunk-IGXYYRYJ.js +0 -1
- package/dist/dashboard-web/chunks/chunk-ISOD7VDX.js +0 -1
- package/dist/dashboard-web/chunks/chunk-PNK3HQBI.js +0 -37
- package/dist/dashboard-web/chunks/chunk-SRIE4MLQ.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-UQ4QBE45.js +0 -1
- package/dist/dashboard-web/chunks/legacy-workflow-page-QMC7OZXH.js +0 -2
- package/dist/dashboard-web/chunks/sessions-page-NNZIDHZM.js +0 -3
- package/dist/dashboard-web/chunks/settings-page-LJIXX5LQ.js +0 -2
- package/dist/dashboard-web/chunks/v3-page-YLYVHGKD.js +0 -94
- package/dist/dashboard-web/terminal-replay.html +0 -227
- package/dist/im/lark/workflow-card-handler.d.ts +0 -51
- package/dist/im/lark/workflow-card-handler.d.ts.map +0 -1
- package/dist/im/lark/workflow-card-handler.js +0 -163
- package/dist/im/lark/workflow-card-handler.js.map +0 -1
- package/dist/im/lark/workflow-cards.d.ts +0 -47
- package/dist/im/lark/workflow-cards.d.ts.map +0 -1
- package/dist/im/lark/workflow-cards.js +0 -231
- package/dist/im/lark/workflow-cards.js.map +0 -1
- package/dist/im/lark/workflow-progress-card.d.ts +0 -81
- package/dist/im/lark/workflow-progress-card.d.ts.map +0 -1
- package/dist/im/lark/workflow-progress-card.js +0 -336
- package/dist/im/lark/workflow-progress-card.js.map +0 -1
- package/dist/im/lark/workflows-card.d.ts +0 -102
- package/dist/im/lark/workflows-card.d.ts.map +0 -1
- package/dist/im/lark/workflows-card.js +0 -737
- package/dist/im/lark/workflows-card.js.map +0 -1
- package/dist/workflows/attempt-resume.d.ts +0 -119
- package/dist/workflows/attempt-resume.d.ts.map +0 -1
- package/dist/workflows/attempt-resume.js +0 -392
- package/dist/workflows/attempt-resume.js.map +0 -1
- package/dist/workflows/blob.d.ts +0 -27
- package/dist/workflows/blob.d.ts.map +0 -1
- package/dist/workflows/blob.js +0 -40
- package/dist/workflows/blob.js.map +0 -1
- package/dist/workflows/cancel-run.d.ts +0 -45
- package/dist/workflows/cancel-run.d.ts.map +0 -1
- package/dist/workflows/cancel-run.js +0 -99
- package/dist/workflows/cancel-run.js.map +0 -1
- package/dist/workflows/cancel.d.ts +0 -111
- package/dist/workflows/cancel.d.ts.map +0 -1
- package/dist/workflows/cancel.js +0 -120
- package/dist/workflows/cancel.js.map +0 -1
- package/dist/workflows/catalog.d.ts +0 -60
- package/dist/workflows/catalog.d.ts.map +0 -1
- package/dist/workflows/catalog.js +0 -119
- package/dist/workflows/catalog.js.map +0 -1
- package/dist/workflows/cold-attach.d.ts +0 -30
- package/dist/workflows/cold-attach.d.ts.map +0 -1
- package/dist/workflows/cold-attach.js +0 -40
- package/dist/workflows/cold-attach.js.map +0 -1
- package/dist/workflows/cold-scan.d.ts +0 -21
- package/dist/workflows/cold-scan.d.ts.map +0 -1
- package/dist/workflows/cold-scan.js +0 -70
- package/dist/workflows/cold-scan.js.map +0 -1
- package/dist/workflows/daemon-spawn.d.ts +0 -119
- package/dist/workflows/daemon-spawn.d.ts.map +0 -1
- package/dist/workflows/daemon-spawn.js +0 -564
- package/dist/workflows/daemon-spawn.js.map +0 -1
- package/dist/workflows/effect-input.d.ts +0 -4
- package/dist/workflows/effect-input.d.ts.map +0 -1
- package/dist/workflows/effect-input.js +0 -19
- package/dist/workflows/effect-input.js.map +0 -1
- package/dist/workflows/events/append.d.ts +0 -77
- package/dist/workflows/events/append.d.ts.map +0 -1
- package/dist/workflows/events/append.js +0 -214
- package/dist/workflows/events/append.js.map +0 -1
- package/dist/workflows/events/idempotency.d.ts +0 -77
- package/dist/workflows/events/idempotency.d.ts.map +0 -1
- package/dist/workflows/events/idempotency.js +0 -116
- package/dist/workflows/events/idempotency.js.map +0 -1
- package/dist/workflows/events/index.d.ts +0 -7
- package/dist/workflows/events/index.d.ts.map +0 -1
- package/dist/workflows/events/index.js +0 -7
- package/dist/workflows/events/index.js.map +0 -1
- package/dist/workflows/fanout.d.ts +0 -36
- package/dist/workflows/fanout.d.ts.map +0 -1
- package/dist/workflows/fanout.js +0 -115
- package/dist/workflows/fanout.js.map +0 -1
- package/dist/workflows/hostExecutors/protocol.d.ts +0 -42
- package/dist/workflows/hostExecutors/protocol.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/protocol.js +0 -181
- package/dist/workflows/hostExecutors/protocol.js.map +0 -1
- package/dist/workflows/loader.d.ts +0 -30
- package/dist/workflows/loader.d.ts.map +0 -1
- package/dist/workflows/loader.js +0 -84
- package/dist/workflows/loader.js.map +0 -1
- package/dist/workflows/loop.d.ts +0 -50
- package/dist/workflows/loop.d.ts.map +0 -1
- package/dist/workflows/loop.js +0 -408
- package/dist/workflows/loop.js.map +0 -1
- package/dist/workflows/orchestrator.d.ts +0 -171
- package/dist/workflows/orchestrator.d.ts.map +0 -1
- package/dist/workflows/orchestrator.js +0 -609
- package/dist/workflows/orchestrator.js.map +0 -1
- package/dist/workflows/output-binding.d.ts +0 -77
- package/dist/workflows/output-binding.d.ts.map +0 -1
- package/dist/workflows/output-binding.js +0 -329
- package/dist/workflows/output-binding.js.map +0 -1
- package/dist/workflows/params.d.ts.map +0 -1
- package/dist/workflows/params.js.map +0 -1
- package/dist/workflows/resume.d.ts +0 -263
- package/dist/workflows/resume.d.ts.map +0 -1
- package/dist/workflows/resume.js +0 -808
- package/dist/workflows/resume.js.map +0 -1
- package/dist/workflows/run-id.d.ts +0 -2
- package/dist/workflows/run-id.d.ts.map +0 -1
- package/dist/workflows/run-id.js +0 -7
- package/dist/workflows/run-id.js.map +0 -1
- package/dist/workflows/run-init.d.ts +0 -48
- package/dist/workflows/run-init.d.ts.map +0 -1
- package/dist/workflows/run-init.js +0 -100
- package/dist/workflows/run-init.js.map +0 -1
- package/dist/workflows/runs-dir.d.ts +0 -4
- package/dist/workflows/runs-dir.d.ts.map +0 -1
- package/dist/workflows/runs-dir.js +0 -15
- package/dist/workflows/runs-dir.js.map +0 -1
- package/dist/workflows/runtime.d.ts +0 -215
- package/dist/workflows/runtime.d.ts.map +0 -1
- package/dist/workflows/runtime.js +0 -630
- package/dist/workflows/runtime.js.map +0 -1
- package/dist/workflows/spawn-bot.d.ts +0 -165
- package/dist/workflows/spawn-bot.d.ts.map +0 -1
- package/dist/workflows/spawn-bot.js +0 -215
- package/dist/workflows/spawn-bot.js.map +0 -1
- package/dist/workflows/spawn-policy.d.ts.map +0 -1
- package/dist/workflows/spawn-policy.js.map +0 -1
- package/dist/workflows/system.d.ts +0 -49
- package/dist/workflows/system.d.ts.map +0 -1
- package/dist/workflows/system.js +0 -48
- package/dist/workflows/system.js.map +0 -1
- package/dist/workflows/trigger-from-envelope.d.ts +0 -13
- package/dist/workflows/trigger-from-envelope.d.ts.map +0 -1
- package/dist/workflows/trigger-from-envelope.js +0 -68
- package/dist/workflows/trigger-from-envelope.js.map +0 -1
- package/dist/workflows/trigger-run.d.ts +0 -70
- package/dist/workflows/trigger-run.d.ts.map +0 -1
- package/dist/workflows/trigger-run.js +0 -88
- package/dist/workflows/trigger-run.js.map +0 -1
- package/dist/workflows/wait.d.ts +0 -141
- package/dist/workflows/wait.d.ts.map +0 -1
- package/dist/workflows/wait.js +0 -203
- package/dist/workflows/wait.js.map +0 -1
|
@@ -11,32 +11,64 @@
|
|
|
11
11
|
* workflow approve-spec <id> → gate-1: spec_ready → spec_approved
|
|
12
12
|
* workflow architect <id> → spec_approved → architect_running → (runArchitect
|
|
13
13
|
* + host validateDag) → dag_ready | retreat
|
|
14
|
-
* workflow approve-dag <id> → gate-2: dag_ready → dag_approved → kick
|
|
14
|
+
* workflow approve-dag <id> → gate-2: dag_ready → dag_approved → kick daemon start
|
|
15
15
|
*
|
|
16
16
|
* The CORE operations below take injected deps so they unit-test without a real
|
|
17
17
|
* worker; the CLI wrapper resolves real bot/secret + codex's `runArchitect` +
|
|
18
18
|
* dag.ts's `loadDag`. grill state is a conversation worktable — it does NOT
|
|
19
19
|
* write the runtime journal (codex 2026-06-02).
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
21
|
+
import { readFileSync } from 'node:fs';
|
|
22
|
+
import { join, resolve, sep } from 'node:path';
|
|
23
|
+
import { loadBotConfigs } from '../../bot-registry.js';
|
|
24
|
+
import { resolveCurrentTurnProvenance } from '../../core/current-turn-provenance.js';
|
|
25
|
+
import { atomicWriteFileSync } from '../../utils/atomic-write.js';
|
|
26
|
+
import { withFileLock, withFileLockSync } from '../../utils/file-lock.js';
|
|
27
|
+
import { birthRun, GRILL_STATUS_FILE, readGrillState, transition, defaultBaseDir, } from './grill-state.js';
|
|
28
|
+
import { finalizeSpec, validateSpec, SpecValidationError } from './spec.js';
|
|
24
29
|
import { runArchitect as realRunArchitect } from './architect.js';
|
|
25
30
|
import { loadDag } from './dag.js';
|
|
26
31
|
import { isValidRunId } from './ops-projection.js';
|
|
27
|
-
import { botToSnapshot } from './bot-resolve.js';
|
|
32
|
+
import { botToSnapshot, freezeDagBotSnapshots, resolveBotConfig, serializeFrozenBotSnapshots, } from './bot-resolve.js';
|
|
33
|
+
import { artifactRef, loadAuthorizedV3Run, makeAdHocRunEnvelope, publishRunEnvelopeOnce, readRunEnvelope, } from './run-envelope.js';
|
|
34
|
+
import { V3_SUPPORTED_CLIS, isV3SupportedCli } from './contract.js';
|
|
28
35
|
// ─── Core operations (dep-injected, pure of CLI / process concerns) ─────────
|
|
29
36
|
export function hostNew(opts) {
|
|
30
37
|
return birthRun(opts);
|
|
31
38
|
}
|
|
32
39
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* CLI
|
|
37
|
-
*
|
|
40
|
+
* Resolve the grill command's *current-turn* caller into a chat binding.
|
|
41
|
+
* Static worker env is intentionally not an authority: BOTMUX_OWNER_OPEN_ID is
|
|
42
|
+
* the session owner and BOTMUX_TURN_ID/root values go stale in a long-lived
|
|
43
|
+
* CLI. In-session commands must join the fresh process-tree marker to the
|
|
44
|
+
* durable session record; detached/stale calls fail closed.
|
|
45
|
+
*
|
|
46
|
+
* A genuine standalone/dev invocation (no session claim or marker) keeps the
|
|
47
|
+
* old minimal env binding for card experiments, but never claims an owner.
|
|
38
48
|
*/
|
|
39
|
-
export function chatBindingFromEnv(env = process.env) {
|
|
49
|
+
export function chatBindingFromEnv(env = process.env, startPid = process.ppid) {
|
|
50
|
+
if (env.SESSION_DATA_DIR) {
|
|
51
|
+
const provenance = resolveCurrentTurnProvenance({
|
|
52
|
+
dataDir: env.SESSION_DATA_DIR,
|
|
53
|
+
envSessionId: env.BOTMUX_SESSION_ID,
|
|
54
|
+
startPid,
|
|
55
|
+
});
|
|
56
|
+
if (provenance) {
|
|
57
|
+
return {
|
|
58
|
+
larkAppId: provenance.larkAppId,
|
|
59
|
+
chatId: provenance.chatId,
|
|
60
|
+
...(provenance.chatType ? { chatType: provenance.chatType } : {}),
|
|
61
|
+
...(provenance.rootMessageId ? { rootMessageId: provenance.rootMessageId } : {}),
|
|
62
|
+
sessionId: provenance.sessionId,
|
|
63
|
+
ownerOpenId: provenance.callerOpenId,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else if (env.BOTMUX_SESSION_ID) {
|
|
68
|
+
throw new Error('当前命令声称来自 botmux session,但 SESSION_DATA_DIR 不可用,无法验证本轮调用者');
|
|
69
|
+
}
|
|
70
|
+
// Standalone/dev only. BOTMUX_OWNER_OPEN_ID is deliberately ignored: it is
|
|
71
|
+
// never proof of the human who invoked this turn.
|
|
40
72
|
const larkAppId = env.BOTMUX_LARK_APP_ID;
|
|
41
73
|
const chatId = env.BOTMUX_CHAT_ID;
|
|
42
74
|
if (!larkAppId || !chatId)
|
|
@@ -44,43 +76,150 @@ export function chatBindingFromEnv(env = process.env) {
|
|
|
44
76
|
return {
|
|
45
77
|
larkAppId,
|
|
46
78
|
chatId,
|
|
79
|
+
...(env.BOTMUX_CHAT_TYPE === 'group' || env.BOTMUX_CHAT_TYPE === 'p2p'
|
|
80
|
+
? { chatType: env.BOTMUX_CHAT_TYPE }
|
|
81
|
+
: {}),
|
|
47
82
|
...(env.BOTMUX_ROOT_MESSAGE_ID ? { rootMessageId: env.BOTMUX_ROOT_MESSAGE_ID } : {}),
|
|
48
|
-
...(env.BOTMUX_SESSION_ID ? { sessionId: env.BOTMUX_SESSION_ID } : {}),
|
|
49
83
|
};
|
|
50
84
|
}
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Authorize a non-`new` host mutation against the principal captured when the
|
|
87
|
+
* grill was born. A workflow started in chat is owned by that exact
|
|
88
|
+
* (app, chat, caller) tuple; a later message from the session's static owner or
|
|
89
|
+
* from another participant must not be able to finalize/approve it merely by
|
|
90
|
+
* knowing the run id.
|
|
91
|
+
*
|
|
92
|
+
* Unbound standalone/dev runs remain operable from a standalone CLI. Legacy
|
|
93
|
+
* bindings without an authenticated owner are also dev-only: an in-session
|
|
94
|
+
* caller cannot upgrade them into an owned authorization implicitly.
|
|
95
|
+
*/
|
|
96
|
+
export function assertWorkflowHostCaller(runDir, current) {
|
|
97
|
+
const state = mustRead(runDir);
|
|
98
|
+
const target = state.chatBinding;
|
|
99
|
+
if (!target) {
|
|
100
|
+
if (current?.ownerOpenId) {
|
|
101
|
+
throw new HostGuardError(`run ${state.runId} 是未绑定的 standalone/dev run,不能从 botmux chat turn 修改`);
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (!target.ownerOpenId) {
|
|
106
|
+
if (current?.ownerOpenId) {
|
|
107
|
+
throw new HostGuardError(`run ${state.runId} 的 chatBinding 缺少已认证 owner,不能从 botmux chat turn 修改`);
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (!current?.ownerOpenId) {
|
|
112
|
+
throw new HostGuardError(`run ${state.runId} 绑定了 chat caller,当前命令缺少本轮调用者认证`);
|
|
65
113
|
}
|
|
114
|
+
if (current.ownerOpenId !== target.ownerOpenId
|
|
115
|
+
|| current.larkAppId !== target.larkAppId
|
|
116
|
+
|| current.chatId !== target.chatId) {
|
|
117
|
+
throw new HostGuardError(`当前 caller/chat/bot 与 run ${state.runId} 的 grill.chatBinding 不匹配`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* All grill-host read/modify/write transactions share one run-scoped lock.
|
|
122
|
+
* `architect` holds it across the worker await because the worker always
|
|
123
|
+
* reuses `architect/attempts/001` and begins by deleting that directory.
|
|
124
|
+
* Without the lock, two calls can delete/mix one another's attempt artifacts.
|
|
125
|
+
*
|
|
126
|
+
* Lock order is deliberately fixed as:
|
|
127
|
+
*
|
|
128
|
+
* grill.state.json.lock -> run.json.lock
|
|
129
|
+
*
|
|
130
|
+
* Gate-2 authorization follows that order below. No path may acquire the
|
|
131
|
+
* grill lock while already holding run.json.lock, keeping the two-lock
|
|
132
|
+
* transaction deadlock-free.
|
|
133
|
+
*/
|
|
134
|
+
const HOST_MUTATION_LOCK_WAIT_MS = 500;
|
|
135
|
+
function hostMutationLockTarget(runDir) {
|
|
136
|
+
return join(runDir, GRILL_STATUS_FILE);
|
|
137
|
+
}
|
|
138
|
+
function hostBusyError(runDir) {
|
|
139
|
+
return new HostGuardError(`run ${mustRead(runDir).runId} 正在执行另一个 workflow host mutation,请稍后重试`);
|
|
140
|
+
}
|
|
141
|
+
function withHostMutationLockSync(runDir, fn) {
|
|
66
142
|
try {
|
|
67
|
-
|
|
143
|
+
return withFileLockSync(hostMutationLockTarget(runDir), fn, {
|
|
144
|
+
maxWaitMs: HOST_MUTATION_LOCK_WAIT_MS,
|
|
145
|
+
});
|
|
68
146
|
}
|
|
69
147
|
catch (err) {
|
|
70
|
-
if (err instanceof
|
|
71
|
-
|
|
148
|
+
if (err instanceof Error && err.message.startsWith('file-lock timeout waiting for ')) {
|
|
149
|
+
throw hostBusyError(runDir);
|
|
150
|
+
}
|
|
72
151
|
throw err;
|
|
73
152
|
}
|
|
74
|
-
|
|
75
|
-
|
|
153
|
+
}
|
|
154
|
+
async function withHostMutationLock(runDir, fn) {
|
|
155
|
+
try {
|
|
156
|
+
return await withFileLock(hostMutationLockTarget(runDir), fn, {
|
|
157
|
+
maxWaitMs: HOST_MUTATION_LOCK_WAIT_MS,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
if (err instanceof Error && err.message.startsWith('file-lock timeout waiting for ')) {
|
|
162
|
+
throw hostBusyError(runDir);
|
|
163
|
+
}
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* run.json is the create-once execution commit. Once it exists, the mutable
|
|
169
|
+
* grill worktable and every artifact producer must stop: otherwise a
|
|
170
|
+
* post-Gate-2 revise/architect/finalize could overwrite bytes whose digests are
|
|
171
|
+
* already pinned by the envelope. Invalid envelopes also fail closed.
|
|
172
|
+
*
|
|
173
|
+
* Caller must hold the run-scoped host mutation lock.
|
|
174
|
+
*/
|
|
175
|
+
function assertRunNotCommitted(runDir, cur, operation) {
|
|
176
|
+
const envelope = readRunEnvelope(runDir, cur.runId);
|
|
177
|
+
if (envelope.kind === 'missing')
|
|
178
|
+
return;
|
|
179
|
+
if (envelope.kind === 'invalid') {
|
|
180
|
+
throw new HostGuardError(`${operation} 被拒绝:run.json 已存在但无效(${envelope.problems.join('; ')})`);
|
|
181
|
+
}
|
|
182
|
+
throw new HostGuardError(`${operation} 被拒绝:run.json 已发布,Gate-2 execution artifacts 已不可变`);
|
|
183
|
+
}
|
|
184
|
+
/** Parse + validate spec.md → write spec.json → status=spec_ready. On a
|
|
185
|
+
* SpecValidationError, returns {ok:false, problems} and leaves status untouched
|
|
186
|
+
* (grill stays grilling and relays the problems to the user). */
|
|
187
|
+
export function hostSpecFinalize(runDir, now = new Date()) {
|
|
188
|
+
return withHostMutationLockSync(runDir, () => {
|
|
189
|
+
const cur = mustRead(runDir);
|
|
190
|
+
assertRunNotCommitted(runDir, cur, 'spec-finalize');
|
|
191
|
+
// Guard the status BEFORE finalizeSpec writes spec.json — otherwise an
|
|
192
|
+
// illegal-state call (e.g. re-finalizing after the spec was approved /
|
|
193
|
+
// architected) would overwrite spec.json and only THEN hit the rejected
|
|
194
|
+
// transition, leaving state ⇄ canonical-spec inconsistent.
|
|
195
|
+
// Legal from `grilling` (first finalize) and `spec_ready` (Gate-1 re-draft,
|
|
196
|
+
// re-validate in place). To revise after spec_approved/dag_ready, step back
|
|
197
|
+
// with `revise-spec` first.
|
|
198
|
+
if (cur.status !== 'grilling' && cur.status !== 'spec_ready') {
|
|
199
|
+
throw new HostGuardError(`spec-finalize 需要 status=grilling 或 spec_ready,当前 ${cur.status}(先 revise-spec 退回改稿)`);
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
finalizeSpec(cur.specPath, cur.specJsonPath, cur.runId);
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (err instanceof SpecValidationError)
|
|
206
|
+
return { ok: false, problems: err.problems };
|
|
207
|
+
throw err;
|
|
208
|
+
}
|
|
209
|
+
const state = transition(runDir, 'spec_ready', { problems: undefined }, now);
|
|
210
|
+
return { ok: true, state };
|
|
211
|
+
});
|
|
76
212
|
}
|
|
77
213
|
/** gate-1: spec_ready → spec_approved. Rejects unless status is spec_ready. */
|
|
78
214
|
export function hostApproveSpec(runDir, now = new Date()) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
215
|
+
return withHostMutationLockSync(runDir, () => {
|
|
216
|
+
const cur = mustRead(runDir);
|
|
217
|
+
assertRunNotCommitted(runDir, cur, 'approve-spec');
|
|
218
|
+
if (cur.status !== 'spec_ready') {
|
|
219
|
+
throw new HostGuardError(`approve-spec 需要 status=spec_ready,当前 ${cur.status}`);
|
|
220
|
+
}
|
|
221
|
+
return transition(runDir, 'spec_approved', {}, now);
|
|
222
|
+
});
|
|
84
223
|
}
|
|
85
224
|
/**
|
|
86
225
|
* spec_approved → architect_running → runArchitect → host loadDag/validateDag.
|
|
@@ -93,71 +232,187 @@ export function hostApproveSpec(runDir, now = new Date()) {
|
|
|
93
232
|
* approve-dag and the dashboard never re-guess paths.
|
|
94
233
|
*/
|
|
95
234
|
export async function hostArchitect(runDir, deps, now = new Date()) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
res
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
235
|
+
return withHostMutationLock(runDir, async () => {
|
|
236
|
+
const cur = mustRead(runDir);
|
|
237
|
+
assertRunNotCommitted(runDir, cur, 'architect');
|
|
238
|
+
// Accept `spec_approved` (the normal entry) AND `architect_running`
|
|
239
|
+
// (crash-recovery): a prior architect run can be killed AFTER it persisted
|
|
240
|
+
// `architect_running` but BEFORE it could retreat to spec_approved, leaving
|
|
241
|
+
// the status stuck mid-flight. Without this, the only path out of
|
|
242
|
+
// `architect_running` would be a manual edit — re-running architect would
|
|
243
|
+
// dead-end behind a spec_approved-only guard.
|
|
244
|
+
if (cur.status !== 'spec_approved' && cur.status !== 'architect_running') {
|
|
245
|
+
throw new HostGuardError(`architect 需要 status=spec_approved(先 approve-spec),当前 ${cur.status}`);
|
|
246
|
+
}
|
|
247
|
+
transition(runDir, 'architect_running', { problems: undefined }, now);
|
|
248
|
+
let res;
|
|
249
|
+
try {
|
|
250
|
+
res = await deps.runArchitect({
|
|
251
|
+
runId: cur.runId,
|
|
252
|
+
runDir,
|
|
253
|
+
specPath: cur.specPath,
|
|
254
|
+
specJsonPath: cur.specJsonPath,
|
|
255
|
+
botSnapshot: deps.botSnapshot,
|
|
256
|
+
resolveLarkAppSecret: deps.resolveLarkAppSecret,
|
|
257
|
+
timeoutMs: deps.timeoutMs,
|
|
258
|
+
cancelSignal: deps.cancelSignal,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
// Defense in depth: intended Gate-2 publication also takes this host
|
|
263
|
+
// lock, but a foreign/older publisher might not. Never mutate grill
|
|
264
|
+
// state after any run.json appeared during the awaited worker call.
|
|
265
|
+
assertRunNotCommitted(runDir, mustRead(runDir), 'architect');
|
|
266
|
+
const problems = [err instanceof Error ? err.message : String(err)];
|
|
267
|
+
const state = transition(runDir, 'spec_approved', { problems }, now);
|
|
268
|
+
return { ok: false, state, problems };
|
|
269
|
+
}
|
|
270
|
+
assertRunNotCommitted(runDir, mustRead(runDir), 'architect');
|
|
271
|
+
if (res.status !== 'ok' || !res.dagPath || !res.notesPath) {
|
|
272
|
+
const problems = res.problems ?? [
|
|
273
|
+
!res.dagPath ? 'architect 未产出 dag.json' : undefined,
|
|
274
|
+
!res.notesPath ? 'architect 未产出 architect-notes.md' : undefined,
|
|
275
|
+
].filter((p) => Boolean(p));
|
|
276
|
+
const state = transition(runDir, 'spec_approved', { problems }, now);
|
|
277
|
+
return { ok: false, state, problems };
|
|
278
|
+
}
|
|
279
|
+
// Assertion 2: do NOT trust architect's self-claim — host validates the dag.
|
|
280
|
+
try {
|
|
281
|
+
deps.loadDag(res.dagPath);
|
|
282
|
+
}
|
|
283
|
+
catch (err) {
|
|
284
|
+
const problems = err.problems ?? [err instanceof Error ? err.message : String(err)];
|
|
285
|
+
const state = transition(runDir, 'spec_approved', { problems }, now);
|
|
286
|
+
return { ok: false, state, problems };
|
|
287
|
+
}
|
|
288
|
+
const state = transition(runDir, 'dag_ready', {
|
|
289
|
+
dagPath: res.dagPath,
|
|
290
|
+
notesPath: res.notesPath,
|
|
291
|
+
architectManifestPath: res.manifestPath,
|
|
292
|
+
problems: undefined,
|
|
293
|
+
}, now);
|
|
294
|
+
return { ok: true, state };
|
|
295
|
+
});
|
|
149
296
|
}
|
|
150
|
-
/** gate-2: dag_ready → dag_approved.
|
|
151
|
-
*
|
|
297
|
+
/** gate-2: dag_ready → dag_approved. Returns the recorded dagPath for the
|
|
298
|
+
* runner. A dag_approved retry is accepted only with its valid ad-hoc envelope. */
|
|
152
299
|
export function hostApproveDag(runDir, now = new Date()) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
300
|
+
return withHostMutationLockSync(runDir, () => {
|
|
301
|
+
const cur = mustRead(runDir);
|
|
302
|
+
// run.json is the Gate-2 commit, so even the first state transition must
|
|
303
|
+
// verify it. This makes the crash window (published envelope + dag_ready
|
|
304
|
+
// grill state) an ordinary idempotent replay instead of a mutable limbo.
|
|
305
|
+
const committed = readRunEnvelope(runDir, cur.runId);
|
|
306
|
+
if (committed.kind === 'missing') {
|
|
307
|
+
throw new HostGuardError('approve-dag 需先完成 Gate-2 run.json 授权,拒绝仅修改 grill state');
|
|
308
|
+
}
|
|
309
|
+
if (committed.kind === 'invalid') {
|
|
310
|
+
throw new HostGuardError(`approve-dag 被拒绝:run.json 已存在但无效(${committed.problems.join('; ')})`);
|
|
311
|
+
}
|
|
312
|
+
if (committed.envelope.source.kind !== 'ad_hoc') {
|
|
313
|
+
throw new HostGuardError(`approve-dag 被拒绝:run.json source=${committed.envelope.source.kind} 不是 ad_hoc Gate-2`);
|
|
314
|
+
}
|
|
315
|
+
loadAuthorizedV3Run(runDir, { expectedRunId: cur.runId, allowedSources: ['ad_hoc'] });
|
|
316
|
+
// Approval is retryable after the create-once execution envelope has been
|
|
317
|
+
// committed. A caller may crash either before or after this transition;
|
|
318
|
+
// both replay states verify the same immutable artifacts.
|
|
319
|
+
if (cur.status === 'dag_approved') {
|
|
320
|
+
return { state: cur, dagPath: join(runDir, 'dag.json') };
|
|
321
|
+
}
|
|
322
|
+
if (cur.status !== 'dag_ready') {
|
|
323
|
+
throw new HostGuardError(`approve-dag 需要 status=dag_ready 或已授权的 dag_approved,当前 ${cur.status}`);
|
|
324
|
+
}
|
|
325
|
+
if (!cur.dagPath)
|
|
326
|
+
throw new Error('dag_ready 状态缺 dagPath(内部不一致)');
|
|
327
|
+
const state = transition(runDir, 'dag_approved', {}, now);
|
|
328
|
+
return { state, dagPath: join(runDir, 'dag.json') };
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Materialize Gate-2's immutable execution artifacts and publish `run.json`.
|
|
333
|
+
* This must run BEFORE the grill transitions to `dag_approved`: if the process
|
|
334
|
+
* crashes between the two writes, retrying approval verifies/reuses the
|
|
335
|
+
* existing envelope and then finishes the conversation-state transition.
|
|
336
|
+
*/
|
|
337
|
+
export function authorizeAdHocRun(runDir, bots, now = new Date()) {
|
|
338
|
+
// The outer host lock prevents Gate-2 from racing any grill RMW / architect
|
|
339
|
+
// attempt. The inner envelope lock serializes this producer with all other
|
|
340
|
+
// run.json publishers. Keep this exact order; see the lock-order invariant
|
|
341
|
+
// above.
|
|
342
|
+
return withHostMutationLockSync(runDir, () => withFileLockSync(join(runDir, 'run.json'), () => {
|
|
343
|
+
// Re-read both state and envelope after acquiring the cross-process lock.
|
|
344
|
+
const cur = mustRead(runDir);
|
|
345
|
+
// Crash-window replay: run.json is the create-once commit. Never rebuild
|
|
346
|
+
// its pinned snapshots from a possibly drifted bots.json. Both dag_ready
|
|
347
|
+
// (published before the state transition) and dag_approved (response lost
|
|
348
|
+
// after transition) are legal idempotent retry states.
|
|
349
|
+
const existing = readRunEnvelope(runDir, cur.runId);
|
|
350
|
+
if (existing.kind === 'ok') {
|
|
351
|
+
if (cur.status !== 'dag_ready' && cur.status !== 'dag_approved') {
|
|
352
|
+
throw new HostGuardError(`approve-dag 需要 status=dag_ready 或已授权的 dag_approved,当前 ${cur.status}`);
|
|
353
|
+
}
|
|
354
|
+
if (existing.envelope.source.kind !== 'ad_hoc') {
|
|
355
|
+
throw new Error(`run.json source=${existing.envelope.source.kind},不能作为 ad-hoc Gate-2 授权`);
|
|
356
|
+
}
|
|
357
|
+
const adHocEnvelope = existing.envelope;
|
|
358
|
+
loadAuthorizedV3Run(runDir, { expectedRunId: cur.runId, allowedSources: ['ad_hoc'] });
|
|
359
|
+
// Re-publish semantically identical bytes through the canonical helper:
|
|
360
|
+
// its idempotent branch heals old/crash-window envelopes by fsyncing all
|
|
361
|
+
// pinned artifacts plus the run directory before we acknowledge replay.
|
|
362
|
+
const publication = publishRunEnvelopeOnce(runDir, adHocEnvelope);
|
|
363
|
+
return {
|
|
364
|
+
dagPath: join(runDir, 'dag.json'),
|
|
365
|
+
envelope: adHocEnvelope,
|
|
366
|
+
publication,
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
if (existing.kind === 'invalid') {
|
|
370
|
+
throw new Error(`run.json 已存在但无效,拒绝覆盖:${existing.problems.join('; ')}`);
|
|
371
|
+
}
|
|
372
|
+
// A missing envelope is buildable only before Gate-2 has transitioned.
|
|
373
|
+
// dag_approved+missing is an integrity failure, never a reason to bless
|
|
374
|
+
// today's mutable DAG bytes retroactively.
|
|
375
|
+
if (cur.status !== 'dag_ready') {
|
|
376
|
+
throw new HostGuardError(`approve-dag 需要 status=dag_ready,当前 ${cur.status}`);
|
|
377
|
+
}
|
|
378
|
+
if (!cur.dagPath)
|
|
379
|
+
throw new Error('dag_ready 状态缺 dagPath(内部不一致)');
|
|
380
|
+
const dag = loadDag(cur.dagPath);
|
|
381
|
+
if (dag.runId !== cur.runId) {
|
|
382
|
+
throw new Error(`DAG runId=${dag.runId} 与 grill runId=${cur.runId} 不一致`);
|
|
383
|
+
}
|
|
384
|
+
const rawSpec = JSON.parse(readFileSync(cur.specJsonPath, 'utf-8'));
|
|
385
|
+
const spec = validateSpec(rawSpec);
|
|
386
|
+
if (spec.runId !== cur.runId) {
|
|
387
|
+
throw new Error(`spec runId=${spec.runId} 与 grill runId=${cur.runId} 不一致`);
|
|
388
|
+
}
|
|
389
|
+
const snapshots = freezeDagBotSnapshots(dag, bots, {
|
|
390
|
+
// A node that omits `bot` inherits the bot where this grill was born,
|
|
391
|
+
// never the first unrelated entry in bots.json. Standalone/dev runs have
|
|
392
|
+
// no binding and retain the legacy first-supported fallback.
|
|
393
|
+
defaultSelector: cur.chatBinding?.larkAppId,
|
|
394
|
+
});
|
|
395
|
+
const dagPath = join(runDir, 'dag.json');
|
|
396
|
+
const specPath = join(runDir, 'spec.json');
|
|
397
|
+
const botSnapshotsPath = join(runDir, 'bots.snapshot.json');
|
|
398
|
+
atomicWriteFileSync(dagPath, `${JSON.stringify(dag, null, 2)}\n`, { mode: 0o600 });
|
|
399
|
+
atomicWriteFileSync(specPath, `${JSON.stringify(spec, null, 2)}\n`, { mode: 0o600 });
|
|
400
|
+
atomicWriteFileSync(botSnapshotsPath, `${JSON.stringify(serializeFrozenBotSnapshots(snapshots), null, 2)}\n`, { mode: 0o600 });
|
|
401
|
+
const envelope = makeAdHocRunEnvelope({
|
|
402
|
+
runId: cur.runId,
|
|
403
|
+
createdAt: cur.createdAt,
|
|
404
|
+
authorizedAt: now.toISOString(),
|
|
405
|
+
...(cur.chatBinding ? { chatBinding: cur.chatBinding } : {}),
|
|
406
|
+
...(cur.chatBinding?.ownerOpenId ? { authorizedByOpenId: cur.chatBinding.ownerOpenId } : {}),
|
|
407
|
+
artifacts: {
|
|
408
|
+
dag: artifactRef(runDir, 'dag.json'),
|
|
409
|
+
spec: artifactRef(runDir, 'spec.json'),
|
|
410
|
+
botSnapshots: artifactRef(runDir, 'bots.snapshot.json'),
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
const publication = publishRunEnvelopeOnce(runDir, envelope);
|
|
414
|
+
return { dagPath, envelope, publication };
|
|
415
|
+
}));
|
|
161
416
|
}
|
|
162
417
|
/**
|
|
163
418
|
* 改稿·改需求:把任一 grilling 之后的阶段退回 `grilling`,并清掉已失效的
|
|
@@ -168,14 +423,17 @@ export function hostApproveDag(runDir, now = new Date()) {
|
|
|
168
423
|
* runtime)拒绝。
|
|
169
424
|
*/
|
|
170
425
|
export function hostReviseSpec(runDir, now = new Date()) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
426
|
+
return withHostMutationLockSync(runDir, () => {
|
|
427
|
+
const cur = mustRead(runDir);
|
|
428
|
+
assertRunNotCommitted(runDir, cur, 'revise-spec');
|
|
429
|
+
if (cur.status === 'grilling') {
|
|
430
|
+
throw new HostGuardError('当前已在 grilling,直接改 spec.md 再 spec-finalize 即可');
|
|
431
|
+
}
|
|
432
|
+
if (cur.status === 'dag_approved') {
|
|
433
|
+
throw new HostGuardError('DAG 已批准并交给 runtime,无法再 revise(如需改动请新建 run)');
|
|
434
|
+
}
|
|
435
|
+
return transition(runDir, 'grilling', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
|
|
436
|
+
});
|
|
179
437
|
}
|
|
180
438
|
/**
|
|
181
439
|
* 改稿·只改流程:需求没变、只是 DAG 编得不满意时,从 `dag_ready` 退回
|
|
@@ -183,11 +441,14 @@ export function hostReviseSpec(runDir, now = new Date()) {
|
|
|
183
441
|
* 上重编一张,不必重新 grill。
|
|
184
442
|
*/
|
|
185
443
|
export function hostReviseDag(runDir, now = new Date()) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
444
|
+
return withHostMutationLockSync(runDir, () => {
|
|
445
|
+
const cur = mustRead(runDir);
|
|
446
|
+
assertRunNotCommitted(runDir, cur, 'revise-dag');
|
|
447
|
+
if (cur.status !== 'dag_ready') {
|
|
448
|
+
throw new HostGuardError(`revise-dag 需要 status=dag_ready,当前 ${cur.status}`);
|
|
449
|
+
}
|
|
450
|
+
return transition(runDir, 'spec_approved', { dagPath: undefined, notesPath: undefined, architectManifestPath: undefined, problems: undefined }, now);
|
|
451
|
+
});
|
|
191
452
|
}
|
|
192
453
|
export class HostGuardError extends Error {
|
|
193
454
|
constructor(message) {
|
|
@@ -214,13 +475,14 @@ function runDirFor(runId, baseDir) {
|
|
|
214
475
|
}
|
|
215
476
|
return dir;
|
|
216
477
|
}
|
|
217
|
-
|
|
218
|
-
* `botmux workflow <sub>` host-controller subcommands. Dispatched from
|
|
219
|
-
* `cmdWorkflow` for the v3-specific verbs (new/spec-finalize/approve-spec/
|
|
220
|
-
* architect/approve-dag); v0.2 verbs (run/create/validate/…) stay in workflow.ts.
|
|
221
|
-
*/
|
|
222
|
-
export async function cmdWorkflowHost(sub, rest) {
|
|
478
|
+
export async function cmdWorkflowHost(sub, rest, deps = {}) {
|
|
223
479
|
const baseDir = argValue(rest, '--base-dir') ?? defaultBaseDir();
|
|
480
|
+
const guardedRunDir = (runId) => {
|
|
481
|
+
const runDir = runDirFor(runId, baseDir);
|
|
482
|
+
const current = (deps.resolveChatBinding ?? chatBindingFromEnv)();
|
|
483
|
+
assertWorkflowHostCaller(runDir, current);
|
|
484
|
+
return runDir;
|
|
485
|
+
};
|
|
224
486
|
switch (sub) {
|
|
225
487
|
case 'new': {
|
|
226
488
|
const goal = firstPositional(rest);
|
|
@@ -228,7 +490,7 @@ export async function cmdWorkflowHost(sub, rest) {
|
|
|
228
490
|
throw new Error('用法: botmux workflow new "<目标>" [--base-dir <dir>]');
|
|
229
491
|
// grill 经 daemon worker 出生时,env 带话题上下文 → 落 chatBinding,供后续
|
|
230
492
|
// daemon humanGate 发审批卡用(CLI/dev 出生无 env → undefined,不影响)。
|
|
231
|
-
const chatBinding = chatBindingFromEnv();
|
|
493
|
+
const chatBinding = (deps.resolveChatBinding ?? chatBindingFromEnv)();
|
|
232
494
|
const { runId, runDir, state } = hostNew({ goal, baseDir, chatBinding });
|
|
233
495
|
console.log(JSON.stringify({
|
|
234
496
|
runId, runDir, status: state.status, specPath: state.specPath,
|
|
@@ -238,7 +500,7 @@ export async function cmdWorkflowHost(sub, rest) {
|
|
|
238
500
|
}
|
|
239
501
|
case 'spec-finalize': {
|
|
240
502
|
const runId = requireRunId(rest);
|
|
241
|
-
const out = hostSpecFinalize(
|
|
503
|
+
const out = hostSpecFinalize(guardedRunDir(runId));
|
|
242
504
|
if (!out.ok) {
|
|
243
505
|
console.error(`spec 校验失败(先修 spec.md 再 finalize):\n - ${out.problems.join('\n - ')}`);
|
|
244
506
|
process.exitCode = 1;
|
|
@@ -249,26 +511,27 @@ export async function cmdWorkflowHost(sub, rest) {
|
|
|
249
511
|
}
|
|
250
512
|
case 'approve-spec': {
|
|
251
513
|
const runId = requireRunId(rest);
|
|
252
|
-
const state = hostApproveSpec(
|
|
514
|
+
const state = hostApproveSpec(guardedRunDir(runId));
|
|
253
515
|
console.log(JSON.stringify({ runId, status: state.status }, null, 2));
|
|
254
516
|
return;
|
|
255
517
|
}
|
|
256
518
|
case 'revise-spec': {
|
|
257
519
|
const runId = requireRunId(rest);
|
|
258
|
-
const state = hostReviseSpec(
|
|
520
|
+
const state = hostReviseSpec(guardedRunDir(runId));
|
|
259
521
|
console.log(JSON.stringify({ runId, status: state.status }, null, 2));
|
|
260
522
|
console.log('\n↩️ 已退回 grilling,可改 spec.md 再 spec-finalize(原 DAG 产物已作废)。');
|
|
261
523
|
return;
|
|
262
524
|
}
|
|
263
525
|
case 'revise-dag': {
|
|
264
526
|
const runId = requireRunId(rest);
|
|
265
|
-
const state = hostReviseDag(
|
|
527
|
+
const state = hostReviseDag(guardedRunDir(runId));
|
|
266
528
|
console.log(JSON.stringify({ runId, status: state.status }, null, 2));
|
|
267
529
|
console.log('\n↩️ 已退回 spec_approved,可直接重跑 architect 重编 DAG(需求不变)。');
|
|
268
530
|
return;
|
|
269
531
|
}
|
|
270
532
|
case 'architect': {
|
|
271
533
|
const runId = requireRunId(rest);
|
|
534
|
+
guardedRunDir(runId);
|
|
272
535
|
const out = await runArchitectCli(runId, baseDir, rest);
|
|
273
536
|
if (!out.ok) {
|
|
274
537
|
console.error(`architect/validateDag 失败(已退回 spec_approved,可修 spec 重跑):\n - ${out.problems.join('\n - ')}`);
|
|
@@ -280,9 +543,18 @@ export async function cmdWorkflowHost(sub, rest) {
|
|
|
280
543
|
}
|
|
281
544
|
case 'approve-dag': {
|
|
282
545
|
const runId = requireRunId(rest);
|
|
283
|
-
const
|
|
546
|
+
const runDir = guardedRunDir(runId);
|
|
547
|
+
const now = new Date();
|
|
548
|
+
// An already-published replay must not depend on today's bots.json just
|
|
549
|
+
// to acknowledge the same Gate-2 decision. The in-lock reader remains
|
|
550
|
+
// authoritative; this read only decides whether bot snapshots are needed.
|
|
551
|
+
const before = readRunEnvelope(runDir, runId);
|
|
552
|
+
const bots = before.kind === 'missing' ? (deps.loadBots ?? loadBotConfigs)() : [];
|
|
553
|
+
const authorized = authorizeAdHocRun(runDir, bots, now);
|
|
554
|
+
const { state } = hostApproveDag(runDir, now);
|
|
555
|
+
const dagPath = authorized.dagPath;
|
|
284
556
|
console.log(JSON.stringify({ runId, status: state.status, dagPath }, null, 2));
|
|
285
|
-
console.log(`\n✅ DAG 已批准。开跑:botmux
|
|
557
|
+
console.log(`\n✅ DAG 已批准。开跑:botmux workflow start ${runId}`);
|
|
286
558
|
return;
|
|
287
559
|
}
|
|
288
560
|
default:
|
|
@@ -294,25 +566,32 @@ export function isHostSub(sub) {
|
|
|
294
566
|
return ['new', 'spec-finalize', 'approve-spec', 'revise-spec', 'architect', 'revise-dag', 'approve-dag'].includes(sub);
|
|
295
567
|
}
|
|
296
568
|
/** Resolve real bot/secret deps and run the architect step. */
|
|
297
|
-
|
|
298
|
-
const { loadBotConfigs } = await import('../../bot-registry.js');
|
|
299
|
-
const bots = loadBotConfigs();
|
|
569
|
+
export function resolveArchitectBotSnapshot(runDir, bots, explicitSelector, workingDirOverride) {
|
|
300
570
|
if (bots.length === 0)
|
|
301
571
|
throw new Error('没有可用 bot 配置(bots.json 为空)');
|
|
302
|
-
const
|
|
572
|
+
const state = mustRead(runDir);
|
|
573
|
+
const selector = explicitSelector ?? state.chatBinding?.larkAppId;
|
|
303
574
|
const bot = selector
|
|
304
|
-
?
|
|
305
|
-
: bots
|
|
306
|
-
if (!bot)
|
|
307
|
-
throw new Error(
|
|
575
|
+
? resolveBotConfig(selector, bots)
|
|
576
|
+
: bots.find((candidate) => (candidate.disableCliBypass !== true && isV3SupportedCli(candidate.cliId)));
|
|
577
|
+
if (!bot) {
|
|
578
|
+
throw new Error(`没有同时满足 bypass + v3 CLI allowlist 的 bot(supported: ${V3_SUPPORTED_CLIS.join(', ')})`);
|
|
579
|
+
}
|
|
580
|
+
const snapshot = botToSnapshot(bot, workingDirOverride);
|
|
581
|
+
if (!isV3SupportedCli(snapshot.cliId)) {
|
|
582
|
+
throw new Error(`v3 architect bot "${bot.name ?? bot.larkAppId}" uses unsupported CLI "${snapshot.cliId}" ` +
|
|
583
|
+
`(supported: ${V3_SUPPORTED_CLIS.join(', ')})`);
|
|
584
|
+
}
|
|
585
|
+
return snapshot;
|
|
586
|
+
}
|
|
587
|
+
async function runArchitectCli(runId, baseDir, rest) {
|
|
588
|
+
const bots = loadBotConfigs();
|
|
308
589
|
const secretById = new Map(bots.map((b) => [b.larkAppId, b.larkAppSecret]));
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const botSnapshot = botToSnapshot(bot, argValue(rest, '--working-dir'));
|
|
315
|
-
return hostArchitect(runDirFor(runId, baseDir), {
|
|
590
|
+
// The authoritative constructor rejects disableCliBypass=true: architect and
|
|
591
|
+
// goal workers both require CLI bypass permissions by product contract.
|
|
592
|
+
const runDir = runDirFor(runId, baseDir);
|
|
593
|
+
const botSnapshot = resolveArchitectBotSnapshot(runDir, bots, argValue(rest, '--bot'), argValue(rest, '--working-dir'));
|
|
594
|
+
return hostArchitect(runDir, {
|
|
316
595
|
runArchitect: realRunArchitect,
|
|
317
596
|
loadDag,
|
|
318
597
|
botSnapshot,
|