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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-neutral application service for v3 Saved Workflows.
|
|
3
|
+
*
|
|
4
|
+
* The schema/store/materializer modules own persistence and execution
|
|
5
|
+
* contracts. This layer adds the user-context rules shared by future CLI,
|
|
6
|
+
* IM, and dashboard adapters: source-run ownership, chat/global visibility,
|
|
7
|
+
* explicit name ambiguity, owner-only revision updates, and published-only
|
|
8
|
+
* instantiation. It has no daemon/session-store dependency; hosts pass the
|
|
9
|
+
* already-authenticated actor + chat context in.
|
|
10
|
+
*/
|
|
11
|
+
import type { BotConfig } from '../../bot-registry.js';
|
|
12
|
+
import type { RawParamInput } from '../shared/params.js';
|
|
13
|
+
import { type MaterializedSavedWorkflowRun } from './library-materialize.js';
|
|
14
|
+
import { type SavedWorkflowMetadata, type SavedWorkflowOwner } from './library-schema.js';
|
|
15
|
+
import { loadCurrentSavedWorkflow, type SavedWorkflowListResult, type SavedWorkflowWriteResult } from './library-store.js';
|
|
16
|
+
import { type LoadedAuthorizedV3Run } from './run-envelope.js';
|
|
17
|
+
export interface SavedWorkflowActorContext {
|
|
18
|
+
actor: SavedWorkflowOwner;
|
|
19
|
+
/** Current invocation chat. Optional for a global-only list/resolve. */
|
|
20
|
+
chatId?: string;
|
|
21
|
+
chatType?: 'group' | 'p2p';
|
|
22
|
+
rootMessageId?: string;
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
}
|
|
25
|
+
export type SavedWorkflowServiceErrorCode = 'invalid_context' | 'source_not_owned' | 'scope_mismatch' | 'not_found' | 'ambiguous' | 'not_published';
|
|
26
|
+
export declare class SavedWorkflowServiceError extends Error {
|
|
27
|
+
readonly code: SavedWorkflowServiceErrorCode;
|
|
28
|
+
readonly matches: SavedWorkflowMetadata[];
|
|
29
|
+
constructor(code: SavedWorkflowServiceErrorCode, message: string, matches?: SavedWorkflowMetadata[]);
|
|
30
|
+
}
|
|
31
|
+
interface SaveTerminalRunBase {
|
|
32
|
+
dataDir: string;
|
|
33
|
+
runDir: string;
|
|
34
|
+
context: SavedWorkflowActorContext;
|
|
35
|
+
/** Failed/blocked sources are draft-only and require this explicit opt-in. */
|
|
36
|
+
allowDraft?: boolean;
|
|
37
|
+
acknowledgeUnsafeLiterals?: boolean;
|
|
38
|
+
now?: Date;
|
|
39
|
+
}
|
|
40
|
+
export interface SaveTerminalRunAsNewWorkflowInput extends SaveTerminalRunBase {
|
|
41
|
+
workflowId?: never;
|
|
42
|
+
displayName?: string;
|
|
43
|
+
aliases?: string[];
|
|
44
|
+
/** Defaults to the current chat. Global publication must be explicit. */
|
|
45
|
+
scope?: 'chat' | 'global';
|
|
46
|
+
}
|
|
47
|
+
export interface AppendTerminalRunToWorkflowInput extends SaveTerminalRunBase {
|
|
48
|
+
/** Supplying an id always means append; it never creates implicitly. */
|
|
49
|
+
workflowId: string;
|
|
50
|
+
expectedLatestRevision?: string;
|
|
51
|
+
displayName?: never;
|
|
52
|
+
aliases?: never;
|
|
53
|
+
scope?: never;
|
|
54
|
+
}
|
|
55
|
+
export type SaveTerminalRunAsWorkflowInput = SaveTerminalRunAsNewWorkflowInput | AppendTerminalRunToWorkflowInput;
|
|
56
|
+
export type SaveTerminalRunAsWorkflowIdempotentInput = Omit<SaveTerminalRunAsNewWorkflowInput, 'allowDraft'> & {
|
|
57
|
+
allowDraft?: never;
|
|
58
|
+
};
|
|
59
|
+
export interface SaveTerminalRunAsWorkflowResult extends SavedWorkflowWriteResult {
|
|
60
|
+
sourceStatus: 'succeeded' | 'failed' | 'blocked';
|
|
61
|
+
created: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stable identity for the default "save this completed run" action. Scope and
|
|
65
|
+
* display name are intentionally excluded: the first valid save wins, so a
|
|
66
|
+
* retried command/card callback can never fork duplicate definitions.
|
|
67
|
+
*/
|
|
68
|
+
export declare function savedWorkflowIdForSourceRun(loaded: LoadedAuthorizedV3Run): string;
|
|
69
|
+
export interface ListVisibleSavedWorkflowsInput {
|
|
70
|
+
dataDir: string;
|
|
71
|
+
context: SavedWorkflowActorContext;
|
|
72
|
+
includeArchived?: boolean;
|
|
73
|
+
includeDrafts?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface ResolveVisibleSavedWorkflowInput extends ListVisibleSavedWorkflowsInput {
|
|
76
|
+
ref: string;
|
|
77
|
+
}
|
|
78
|
+
export interface InstantiatePublishedSavedWorkflowInput {
|
|
79
|
+
dataDir: string;
|
|
80
|
+
ref: string;
|
|
81
|
+
context: SavedWorkflowActorContext;
|
|
82
|
+
rawParams?: Record<string, RawParamInput>;
|
|
83
|
+
bots: BotConfig[];
|
|
84
|
+
baseDir: string;
|
|
85
|
+
runId?: string;
|
|
86
|
+
now?: Date;
|
|
87
|
+
}
|
|
88
|
+
export interface ResolveOwnedTerminalRunInput {
|
|
89
|
+
baseDir: string;
|
|
90
|
+
source: 'last' | string;
|
|
91
|
+
context: SavedWorkflowActorContext;
|
|
92
|
+
}
|
|
93
|
+
/** Resolve `last` within the authenticated actor+chat scope, never globally. */
|
|
94
|
+
export declare function resolveOwnedTerminalRunDir(input: ResolveOwnedTerminalRunInput): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Save a terminal run exactly as executed.
|
|
97
|
+
*
|
|
98
|
+
* There is deliberately no literal-to-parameter inference here. Ad-hoc runs
|
|
99
|
+
* become zero-parameter definitions. When the source itself came from a saved
|
|
100
|
+
* definition, its already-explicit input/context declarations are preserved
|
|
101
|
+
* from the integrity-pinned definition snapshot.
|
|
102
|
+
*/
|
|
103
|
+
export declare function saveTerminalRunAsWorkflow(input: SaveTerminalRunAsWorkflowInput): Promise<SaveTerminalRunAsWorkflowResult>;
|
|
104
|
+
/**
|
|
105
|
+
* Card callbacks can be delivered or clicked more than once. This dedicated
|
|
106
|
+
* seam gives that surface stable source-run idempotency without changing the
|
|
107
|
+
* existing `/workflow save` command semantics (which may intentionally create
|
|
108
|
+
* another definition with a different name/scope).
|
|
109
|
+
*/
|
|
110
|
+
export declare function saveTerminalRunAsWorkflowIdempotent(input: SaveTerminalRunAsWorkflowIdempotentInput): Promise<SaveTerminalRunAsWorkflowResult>;
|
|
111
|
+
/** List the current chat's workflows plus global workflows. */
|
|
112
|
+
export declare function listVisibleSavedWorkflows(input: ListVisibleSavedWorkflowsInput): Promise<SavedWorkflowListResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Resolve a visible id/name/alias. Exact workflowId wins; names never silently
|
|
115
|
+
* prefer chat over global, so a collision is returned as an explicit error.
|
|
116
|
+
*/
|
|
117
|
+
export declare function resolveVisibleSavedWorkflow(input: ResolveVisibleSavedWorkflowInput): Promise<SavedWorkflowMetadata>;
|
|
118
|
+
/** Resolve and re-check visibility after the second metadata/revision read. */
|
|
119
|
+
export declare function loadVisibleSavedWorkflow(input: ResolveVisibleSavedWorkflowInput, deps?: {
|
|
120
|
+
resolveVisible?: typeof resolveVisibleSavedWorkflow;
|
|
121
|
+
loadCurrent?: typeof loadCurrentSavedWorkflow;
|
|
122
|
+
}): Promise<SavedWorkflowWriteResult>;
|
|
123
|
+
/** Resolve the active revision and atomically materialize a fresh authorized run. */
|
|
124
|
+
export declare function instantiatePublishedSavedWorkflow(input: InstantiatePublishedSavedWorkflowInput): Promise<MaterializedSavedWorkflowRun>;
|
|
125
|
+
export {};
|
|
126
|
+
//# sourceMappingURL=library-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library-service.d.ts","sourceRoot":"","sources":["../../../src/workflows/v3/library-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAIL,KAAK,4BAA4B,EAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAOL,wBAAwB,EAIxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,6BAA6B,GACrC,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,WAAW,GACX,WAAW,GACX,eAAe,CAAC;AAEpB,qBAAa,yBAA0B,SAAQ,KAAK;aAEhC,IAAI,EAAE,6BAA6B;aAEnC,OAAO,EAAE,qBAAqB,EAAE;gBAFhC,IAAI,EAAE,6BAA6B,EACnD,OAAO,EAAE,MAAM,EACC,OAAO,GAAE,qBAAqB,EAAO;CAKxD;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,yBAAyB,CAAC;IACnC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,iCAAkC,SAAQ,mBAAmB;IAC5E,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAiC,SAAQ,mBAAmB;IAC3E,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,8BAA8B,GACtC,iCAAiC,GACjC,gCAAgC,CAAC;AAErC,MAAM,MAAM,wCAAwC,GAClD,IAAI,CAAC,iCAAiC,EAAE,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,+BAAgC,SAAQ,wBAAwB;IAC/E,YAAY,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAwBjF;AA6GD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,yBAAyB,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gCAAiC,SAAQ,8BAA8B;IACtF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sCAAsC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,yBAAyB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,yBAAyB,CAAC;CACpC;AA0HD,gFAAgF;AAChF,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,+BAA+B,CAAC,CA8C1C;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,wCAAwC,GAC9C,OAAO,CAAC,+BAA+B,CAAC,CA0B1C;AAED,+DAA+D;AAC/D,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CAkBlC;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAyBhC;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,gCAAgC,EACvC,IAAI,GAAE;IACJ,cAAc,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACpD,WAAW,CAAC,EAAE,OAAO,wBAAwB,CAAC;CAC1C,GACL,OAAO,CAAC,wBAAwB,CAAC,CAmBnC;AAED,qFAAqF;AACrF,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,4BAA4B,CAAC,CA6DvC"}
|
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-neutral application service for v3 Saved Workflows.
|
|
3
|
+
*
|
|
4
|
+
* The schema/store/materializer modules own persistence and execution
|
|
5
|
+
* contracts. This layer adds the user-context rules shared by future CLI,
|
|
6
|
+
* IM, and dashboard adapters: source-run ownership, chat/global visibility,
|
|
7
|
+
* explicit name ambiguity, owner-only revision updates, and published-only
|
|
8
|
+
* instantiation. It has no daemon/session-store dependency; hosts pass the
|
|
9
|
+
* already-authenticated actor + chat context in.
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { existsSync, promises as fs, readFileSync } from 'node:fs';
|
|
13
|
+
import { basename, join } from 'node:path';
|
|
14
|
+
import { withFileLock, withFileLockSync } from '../../utils/file-lock.js';
|
|
15
|
+
import { compileSavedWorkflowFromRun, materializeSavedWorkflowRun, } from './library-materialize.js';
|
|
16
|
+
import { SAVED_WORKFLOW_ID_RE, canonicalJsonStringify, normalizeSavedWorkflowLookupKey, validateSavedWorkflowRevisionPayload, } from './library-schema.js';
|
|
17
|
+
import { SavedWorkflowConflictError, SavedWorkflowNotFoundError, SavedWorkflowPermissionError, appendSavedWorkflowRevision, createSavedWorkflow, listSavedWorkflows, loadCurrentSavedWorkflow, readSavedWorkflowMetadata, savedWorkflowDir, workflowLibraryRoot, } from './library-store.js';
|
|
18
|
+
import { artifactRef, loadAuthorizedV3Run, makeLegacyV3RunEnvelope, publishRunEnvelopeOnce, readRunEnvelope, } from './run-envelope.js';
|
|
19
|
+
import { isValidRunId } from './ops-projection.js';
|
|
20
|
+
import { readJournal } from './journal.js';
|
|
21
|
+
import { materialize } from './state.js';
|
|
22
|
+
import { readGrillState } from './grill-state.js';
|
|
23
|
+
import { loadDag } from './dag.js';
|
|
24
|
+
import { validateSpec } from './spec.js';
|
|
25
|
+
import { parseFrozenBotSnapshots } from './bot-resolve.js';
|
|
26
|
+
export class SavedWorkflowServiceError extends Error {
|
|
27
|
+
code;
|
|
28
|
+
matches;
|
|
29
|
+
constructor(code, message, matches = []) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.code = code;
|
|
32
|
+
this.matches = matches;
|
|
33
|
+
this.name = 'SavedWorkflowServiceError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stable identity for the default "save this completed run" action. Scope and
|
|
38
|
+
* display name are intentionally excluded: the first valid save wins, so a
|
|
39
|
+
* retried command/card callback can never fork duplicate definitions.
|
|
40
|
+
*/
|
|
41
|
+
export function savedWorkflowIdForSourceRun(loaded) {
|
|
42
|
+
const binding = loaded.envelope.chatBinding;
|
|
43
|
+
if (!binding?.ownerOpenId) {
|
|
44
|
+
throw new SavedWorkflowServiceError('source_not_owned', `Source run '${loaded.envelope.runId}' has no authenticated owner binding`);
|
|
45
|
+
}
|
|
46
|
+
const specSha256 = 'spec' in loaded.envelope.artifacts
|
|
47
|
+
? loaded.envelope.artifacts.spec?.sha256 ?? ''
|
|
48
|
+
: '';
|
|
49
|
+
const digest = createHash('sha256')
|
|
50
|
+
.update([
|
|
51
|
+
'v3-terminal-save:v1',
|
|
52
|
+
loaded.envelope.runId,
|
|
53
|
+
loaded.envelope.artifacts.dag.sha256,
|
|
54
|
+
specSha256,
|
|
55
|
+
binding.ownerOpenId,
|
|
56
|
+
binding.larkAppId,
|
|
57
|
+
binding.chatId,
|
|
58
|
+
].join('\0'))
|
|
59
|
+
.digest('hex')
|
|
60
|
+
.slice(0, 32);
|
|
61
|
+
return `wf_${digest}`;
|
|
62
|
+
}
|
|
63
|
+
function comparableRevisionDraft(payload) {
|
|
64
|
+
return {
|
|
65
|
+
...(payload.sourceRunId ? { sourceRunId: payload.sourceRunId } : {}),
|
|
66
|
+
inputs: payload.inputs,
|
|
67
|
+
contextRefs: payload.contextRefs,
|
|
68
|
+
specTemplate: payload.specTemplate,
|
|
69
|
+
specStatus: payload.specStatus,
|
|
70
|
+
dagTemplate: payload.dagTemplate,
|
|
71
|
+
safety: payload.safety,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function loadMatchingIdempotentSave(dataDir, workflowId, context, revision) {
|
|
75
|
+
const current = await loadCurrentSavedWorkflow(dataDir, workflowId, {
|
|
76
|
+
revision: 'latest',
|
|
77
|
+
requireActive: false,
|
|
78
|
+
});
|
|
79
|
+
if (!sameOwner(current.metadata.owner, context.actor)) {
|
|
80
|
+
throw new SavedWorkflowConflictError(`Idempotent saved workflow '${workflowId}' belongs to a different owner`);
|
|
81
|
+
}
|
|
82
|
+
if (current.metadata.status !== 'active' ||
|
|
83
|
+
current.metadata.publishedRevision !== current.revision.revisionId) {
|
|
84
|
+
throw new SavedWorkflowConflictError(`Idempotent saved workflow '${workflowId}' is no longer the active published result`);
|
|
85
|
+
}
|
|
86
|
+
if (canonicalJsonStringify(comparableRevisionDraft(current.revision.payload)) !==
|
|
87
|
+
canonicalJsonStringify(revision)) {
|
|
88
|
+
throw new SavedWorkflowConflictError(`Idempotent saved workflow '${workflowId}' does not match source run artifacts`);
|
|
89
|
+
}
|
|
90
|
+
return current;
|
|
91
|
+
}
|
|
92
|
+
async function createSavedWorkflowIdempotently(input) {
|
|
93
|
+
const root = workflowLibraryRoot(input.dataDir);
|
|
94
|
+
await fs.mkdir(root, { recursive: true, mode: 0o700 });
|
|
95
|
+
const lockTarget = join(root, `.terminal-save-${input.workflowId}`);
|
|
96
|
+
return withFileLock(lockTarget, async () => {
|
|
97
|
+
try {
|
|
98
|
+
const existing = await loadMatchingIdempotentSave(input.dataDir, input.workflowId, input.context, input.revision);
|
|
99
|
+
return { ...existing, created: false };
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
if (!(err instanceof SavedWorkflowNotFoundError))
|
|
103
|
+
throw err;
|
|
104
|
+
}
|
|
105
|
+
// A process may have died after creating the private directory but before
|
|
106
|
+
// metadata.json became the store's commit marker. The deterministic source
|
|
107
|
+
// lock makes this directory ours; remove only that uncommitted remnant.
|
|
108
|
+
const dir = savedWorkflowDir(input.dataDir, input.workflowId);
|
|
109
|
+
const metadataPath = join(dir, 'metadata.json');
|
|
110
|
+
if (existsSync(dir) && !existsSync(metadataPath)) {
|
|
111
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const written = await createSavedWorkflow(input.dataDir, {
|
|
115
|
+
workflowId: input.workflowId,
|
|
116
|
+
displayName: input.displayName,
|
|
117
|
+
aliases: input.aliases,
|
|
118
|
+
owner: input.owner,
|
|
119
|
+
scope: input.scope,
|
|
120
|
+
revision: input.revision,
|
|
121
|
+
publish: input.publish,
|
|
122
|
+
now: input.now,
|
|
123
|
+
});
|
|
124
|
+
return { ...written, created: true };
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
if (!(err instanceof SavedWorkflowConflictError))
|
|
128
|
+
throw err;
|
|
129
|
+
const existing = await loadMatchingIdempotentSave(input.dataDir, input.workflowId, input.context, input.revision);
|
|
130
|
+
return { ...existing, created: false };
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function terminalSourceStatus(runDir, runId) {
|
|
135
|
+
const events = readJournal(join(runDir, 'journal.ndjson'));
|
|
136
|
+
const starts = events.filter((event) => event.type === 'runStarted');
|
|
137
|
+
if (starts.length !== 1 || starts[0].runId !== runId) {
|
|
138
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' has no single matching runStarted identity`);
|
|
139
|
+
}
|
|
140
|
+
const status = materialize(events).runStatus;
|
|
141
|
+
if (status !== 'succeeded' && status !== 'failed' && status !== 'blocked') {
|
|
142
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' is not terminal (status=${status})`);
|
|
143
|
+
}
|
|
144
|
+
return status;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Strictly load a terminal source and opportunistically seal the narrow class
|
|
148
|
+
* of pre-run.json v3 runs whose ownership is still provable from their
|
|
149
|
+
* Gate-2 grill binding. Historical runs without ownerOpenId remain rejected:
|
|
150
|
+
* assigning them to whoever asks first in a shared chat would be an ownership
|
|
151
|
+
* escalation, not a migration.
|
|
152
|
+
*/
|
|
153
|
+
function loadOwnedTerminalRunForSave(runDir, context) {
|
|
154
|
+
const runId = basename(runDir);
|
|
155
|
+
if (!isValidRunId(runId)) {
|
|
156
|
+
throw new SavedWorkflowServiceError('invalid_context', `Invalid source runId ${JSON.stringify(runId)}`);
|
|
157
|
+
}
|
|
158
|
+
const sealIfNeeded = () => {
|
|
159
|
+
const initial = readRunEnvelope(runDir, runId);
|
|
160
|
+
if (initial.kind === 'ok')
|
|
161
|
+
return;
|
|
162
|
+
if (initial.kind === 'invalid') {
|
|
163
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' has an invalid run.json: ${initial.problems.join('; ')}`);
|
|
164
|
+
}
|
|
165
|
+
withFileLockSync(join(runDir, 'run.json'), () => {
|
|
166
|
+
const current = readRunEnvelope(runDir, runId);
|
|
167
|
+
if (current.kind === 'ok')
|
|
168
|
+
return;
|
|
169
|
+
if (current.kind === 'invalid') {
|
|
170
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' has an invalid run.json: ${current.problems.join('; ')}`);
|
|
171
|
+
}
|
|
172
|
+
const grill = readGrillState(runDir);
|
|
173
|
+
const binding = grill?.chatBinding;
|
|
174
|
+
if (!grill ||
|
|
175
|
+
grill.runId !== runId ||
|
|
176
|
+
grill.status !== 'dag_approved' ||
|
|
177
|
+
!binding ||
|
|
178
|
+
!binding.ownerOpenId) {
|
|
179
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' predates Saved Workflow sealing and its owner cannot be proven. ` +
|
|
180
|
+
'Re-run it on the current version, or migrate it explicitly as an administrator.');
|
|
181
|
+
}
|
|
182
|
+
if (binding.ownerOpenId !== context.actor.openId ||
|
|
183
|
+
binding.larkAppId !== context.actor.larkAppId ||
|
|
184
|
+
binding.chatId !== context.chatId) {
|
|
185
|
+
throw new SavedWorkflowServiceError('source_not_owned', `Source run '${runId}' belongs to a different actor`);
|
|
186
|
+
}
|
|
187
|
+
const dagPath = join(runDir, 'dag.json');
|
|
188
|
+
const specPath = join(runDir, 'spec.json');
|
|
189
|
+
const botPath = join(runDir, 'bots.snapshot.json');
|
|
190
|
+
if (![dagPath, specPath, botPath].every(existsSync)) {
|
|
191
|
+
throw new SavedWorkflowServiceError('invalid_context', `Run '${runId}' is missing canonical dag/spec/bot artifacts and cannot be sealed for saving`);
|
|
192
|
+
}
|
|
193
|
+
const dag = loadDag(dagPath);
|
|
194
|
+
if (dag.runId !== runId)
|
|
195
|
+
throw new Error(`legacy DAG runId mismatch: ${dag.runId}`);
|
|
196
|
+
const spec = validateSpec(JSON.parse(readFileSync(specPath, 'utf-8')));
|
|
197
|
+
if (spec.runId !== runId)
|
|
198
|
+
throw new Error(`legacy spec runId mismatch: ${spec.runId}`);
|
|
199
|
+
parseFrozenBotSnapshots(JSON.parse(readFileSync(botPath, 'utf-8')), dag);
|
|
200
|
+
terminalSourceStatus(runDir, runId);
|
|
201
|
+
publishRunEnvelopeOnce(runDir, makeLegacyV3RunEnvelope({
|
|
202
|
+
runId,
|
|
203
|
+
createdAt: grill.createdAt,
|
|
204
|
+
backfilledAt: new Date().toISOString(),
|
|
205
|
+
original: 'grill',
|
|
206
|
+
basis: 'runtime_started',
|
|
207
|
+
chatBinding: binding,
|
|
208
|
+
artifacts: {
|
|
209
|
+
dag: artifactRef(runDir, 'dag.json'),
|
|
210
|
+
spec: artifactRef(runDir, 'spec.json'),
|
|
211
|
+
botSnapshots: artifactRef(runDir, 'bots.snapshot.json'),
|
|
212
|
+
},
|
|
213
|
+
}));
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
sealIfNeeded();
|
|
217
|
+
const loaded = loadAuthorizedV3Run(runDir, {
|
|
218
|
+
allowedSources: ['ad_hoc', 'saved_definition', 'legacy_v3'],
|
|
219
|
+
});
|
|
220
|
+
assertSourceOwnedByCaller(loaded, context);
|
|
221
|
+
return { loaded, status: terminalSourceStatus(runDir, runId) };
|
|
222
|
+
}
|
|
223
|
+
/** Resolve `last` within the authenticated actor+chat scope, never globally. */
|
|
224
|
+
export async function resolveOwnedTerminalRunDir(input) {
|
|
225
|
+
const context = requireActorContext(input.context, { requireChat: true });
|
|
226
|
+
if (input.source !== 'last') {
|
|
227
|
+
if (!isValidRunId(input.source)) {
|
|
228
|
+
throw new SavedWorkflowServiceError('invalid_context', `Invalid source runId ${JSON.stringify(input.source)}`);
|
|
229
|
+
}
|
|
230
|
+
const runDir = join(input.baseDir, input.source);
|
|
231
|
+
try {
|
|
232
|
+
const stat = await fs.stat(runDir);
|
|
233
|
+
if (!stat.isDirectory())
|
|
234
|
+
throw notFound(input.source);
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
if (err.code === 'ENOENT')
|
|
238
|
+
throw notFound(input.source);
|
|
239
|
+
throw err;
|
|
240
|
+
}
|
|
241
|
+
loadOwnedTerminalRunForSave(runDir, context);
|
|
242
|
+
return runDir;
|
|
243
|
+
}
|
|
244
|
+
let names;
|
|
245
|
+
try {
|
|
246
|
+
names = await fs.readdir(input.baseDir);
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
if (err.code === 'ENOENT')
|
|
250
|
+
throw notFound('last run');
|
|
251
|
+
throw err;
|
|
252
|
+
}
|
|
253
|
+
const candidates = [];
|
|
254
|
+
for (const runId of names) {
|
|
255
|
+
if (!isValidRunId(runId))
|
|
256
|
+
continue;
|
|
257
|
+
const runDir = join(input.baseDir, runId);
|
|
258
|
+
try {
|
|
259
|
+
const stat = await fs.stat(runDir);
|
|
260
|
+
if (!stat.isDirectory())
|
|
261
|
+
continue;
|
|
262
|
+
const candidate = loadOwnedTerminalRunForSave(runDir, context);
|
|
263
|
+
candidates.push({ runDir, createdAt: candidate.loaded.envelope.createdAt, runId });
|
|
264
|
+
}
|
|
265
|
+
catch { /* malformed/incomplete candidate is not "last terminal" */ }
|
|
266
|
+
}
|
|
267
|
+
candidates.sort((a, b) => b.createdAt.localeCompare(a.createdAt) || b.runId.localeCompare(a.runId));
|
|
268
|
+
if (candidates.length === 0)
|
|
269
|
+
throw notFound('last run');
|
|
270
|
+
return candidates[0].runDir;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Save a terminal run exactly as executed.
|
|
274
|
+
*
|
|
275
|
+
* There is deliberately no literal-to-parameter inference here. Ad-hoc runs
|
|
276
|
+
* become zero-parameter definitions. When the source itself came from a saved
|
|
277
|
+
* definition, its already-explicit input/context declarations are preserved
|
|
278
|
+
* from the integrity-pinned definition snapshot.
|
|
279
|
+
*/
|
|
280
|
+
export async function saveTerminalRunAsWorkflow(input) {
|
|
281
|
+
const context = requireActorContext(input.context, { requireChat: true });
|
|
282
|
+
const { loaded } = loadOwnedTerminalRunForSave(input.runDir, context);
|
|
283
|
+
const compileOptions = exactCompileOptions(loaded, input.allowDraft === true, input.acknowledgeUnsafeLiterals === true);
|
|
284
|
+
const compiled = compileSavedWorkflowFromRun(input.runDir, compileOptions);
|
|
285
|
+
if (input.workflowId !== undefined) {
|
|
286
|
+
let metadata;
|
|
287
|
+
try {
|
|
288
|
+
metadata = await readSavedWorkflowMetadata(input.dataDir, input.workflowId);
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
if (err instanceof SavedWorkflowNotFoundError)
|
|
292
|
+
throw notFound(input.workflowId);
|
|
293
|
+
throw err;
|
|
294
|
+
}
|
|
295
|
+
assertMetadataVisibleInContext(metadata, context);
|
|
296
|
+
if (!sameOwner(metadata.owner, context.actor)) {
|
|
297
|
+
throw new SavedWorkflowPermissionError(metadata.workflowId);
|
|
298
|
+
}
|
|
299
|
+
const written = await appendSavedWorkflowRevision(input.dataDir, input.workflowId, {
|
|
300
|
+
actor: context.actor,
|
|
301
|
+
revision: compiled.revision,
|
|
302
|
+
publish: compiled.publish,
|
|
303
|
+
expectedLatestRevision: input.expectedLatestRevision,
|
|
304
|
+
now: input.now,
|
|
305
|
+
});
|
|
306
|
+
return { ...written, sourceStatus: compiled.sourceStatus, created: false };
|
|
307
|
+
}
|
|
308
|
+
const scope = input.scope === 'global'
|
|
309
|
+
? { kind: 'global' }
|
|
310
|
+
: { kind: 'chat', chatId: context.chatId };
|
|
311
|
+
const written = await createSavedWorkflow(input.dataDir, {
|
|
312
|
+
displayName: input.displayName ?? compiled.displayName,
|
|
313
|
+
aliases: input.aliases,
|
|
314
|
+
owner: context.actor,
|
|
315
|
+
scope,
|
|
316
|
+
revision: compiled.revision,
|
|
317
|
+
publish: compiled.publish,
|
|
318
|
+
now: input.now,
|
|
319
|
+
});
|
|
320
|
+
return { ...written, sourceStatus: compiled.sourceStatus, created: true };
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Card callbacks can be delivered or clicked more than once. This dedicated
|
|
324
|
+
* seam gives that surface stable source-run idempotency without changing the
|
|
325
|
+
* existing `/workflow save` command semantics (which may intentionally create
|
|
326
|
+
* another definition with a different name/scope).
|
|
327
|
+
*/
|
|
328
|
+
export async function saveTerminalRunAsWorkflowIdempotent(input) {
|
|
329
|
+
const context = requireActorContext(input.context, { requireChat: true });
|
|
330
|
+
const { loaded } = loadOwnedTerminalRunForSave(input.runDir, context);
|
|
331
|
+
const compileOptions = exactCompileOptions(loaded, false, input.acknowledgeUnsafeLiterals === true);
|
|
332
|
+
const compiled = compileSavedWorkflowFromRun(input.runDir, compileOptions);
|
|
333
|
+
const scope = input.scope === 'global'
|
|
334
|
+
? { kind: 'global' }
|
|
335
|
+
: { kind: 'chat', chatId: context.chatId };
|
|
336
|
+
const workflowId = savedWorkflowIdForSourceRun(loaded);
|
|
337
|
+
const written = await createSavedWorkflowIdempotently({
|
|
338
|
+
workflowId,
|
|
339
|
+
dataDir: input.dataDir,
|
|
340
|
+
displayName: input.displayName ?? compiled.displayName,
|
|
341
|
+
aliases: input.aliases,
|
|
342
|
+
owner: context.actor,
|
|
343
|
+
scope,
|
|
344
|
+
revision: compiled.revision,
|
|
345
|
+
publish: compiled.publish,
|
|
346
|
+
context,
|
|
347
|
+
now: input.now,
|
|
348
|
+
});
|
|
349
|
+
return { ...written, sourceStatus: compiled.sourceStatus, created: written.created };
|
|
350
|
+
}
|
|
351
|
+
/** List the current chat's workflows plus global workflows. */
|
|
352
|
+
export async function listVisibleSavedWorkflows(input) {
|
|
353
|
+
const context = requireActorContext(input.context);
|
|
354
|
+
const listed = await listSavedWorkflows(input.dataDir, {
|
|
355
|
+
chatId: context.chatId,
|
|
356
|
+
actor: context.actor,
|
|
357
|
+
includeArchived: input.includeArchived,
|
|
358
|
+
includeDrafts: input.includeDrafts,
|
|
359
|
+
});
|
|
360
|
+
// Archived definitions are management state, not a shared catalog surface.
|
|
361
|
+
// Even when explicitly requested, only their owner sees them.
|
|
362
|
+
return {
|
|
363
|
+
entries: listed.entries.filter((metadata) => metadata.status !== 'archived' || sameOwner(metadata.owner, context.actor)),
|
|
364
|
+
// A malformed directory has no trustworthy app owner. Exposing even its
|
|
365
|
+
// count would leak shared-dataDir state across bots, so user-facing list
|
|
366
|
+
// operations omit it. Store-level diagnostics remain available to ops.
|
|
367
|
+
invalid: [],
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Resolve a visible id/name/alias. Exact workflowId wins; names never silently
|
|
372
|
+
* prefer chat over global, so a collision is returned as an explicit error.
|
|
373
|
+
*/
|
|
374
|
+
export async function resolveVisibleSavedWorkflow(input) {
|
|
375
|
+
const ref = input.ref.trim();
|
|
376
|
+
if (!ref) {
|
|
377
|
+
throw new SavedWorkflowServiceError('invalid_context', 'Saved Workflow reference must not be empty');
|
|
378
|
+
}
|
|
379
|
+
const listed = await listVisibleSavedWorkflows(input);
|
|
380
|
+
if (SAVED_WORKFLOW_ID_RE.test(ref)) {
|
|
381
|
+
const exact = listed.entries.find((entry) => entry.workflowId === ref);
|
|
382
|
+
if (exact)
|
|
383
|
+
return exact;
|
|
384
|
+
throw notFound(ref);
|
|
385
|
+
}
|
|
386
|
+
const key = normalizeSavedWorkflowLookupKey(ref);
|
|
387
|
+
const matches = listed.entries.filter((metadata) => normalizeSavedWorkflowLookupKey(metadata.displayName) === key ||
|
|
388
|
+
metadata.aliases.some((alias) => normalizeSavedWorkflowLookupKey(alias) === key));
|
|
389
|
+
if (matches.length === 0)
|
|
390
|
+
throw notFound(ref);
|
|
391
|
+
if (matches.length > 1) {
|
|
392
|
+
throw new SavedWorkflowServiceError('ambiguous', `Saved Workflow reference ${JSON.stringify(ref)} is ambiguous; use a workflowId`, matches);
|
|
393
|
+
}
|
|
394
|
+
return matches[0];
|
|
395
|
+
}
|
|
396
|
+
/** Resolve and re-check visibility after the second metadata/revision read. */
|
|
397
|
+
export async function loadVisibleSavedWorkflow(input, deps = {}) {
|
|
398
|
+
const context = requireActorContext(input.context);
|
|
399
|
+
const resolveVisible = deps.resolveVisible ?? resolveVisibleSavedWorkflow;
|
|
400
|
+
const loadCurrent = deps.loadCurrent ?? loadCurrentSavedWorkflow;
|
|
401
|
+
const resolved = await resolveVisible({ ...input, context });
|
|
402
|
+
let current;
|
|
403
|
+
try {
|
|
404
|
+
current = await loadCurrent(input.dataDir, resolved.workflowId, {
|
|
405
|
+
revision: resolved.publishedRevision ? 'published' : 'latest',
|
|
406
|
+
requireActive: false,
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
catch (err) {
|
|
410
|
+
if (err instanceof SavedWorkflowNotFoundError)
|
|
411
|
+
throw notFound(resolved.workflowId);
|
|
412
|
+
throw err;
|
|
413
|
+
}
|
|
414
|
+
// Metadata is mutable. Re-check after loading the revision so a concurrent
|
|
415
|
+
// archive/scope/app change cannot disclose the second read through show.
|
|
416
|
+
assertMetadataVisibleInContext(current.metadata, context);
|
|
417
|
+
return current;
|
|
418
|
+
}
|
|
419
|
+
/** Resolve the active revision and atomically materialize a fresh authorized run. */
|
|
420
|
+
export async function instantiatePublishedSavedWorkflow(input) {
|
|
421
|
+
const context = requireActorContext(input.context, { requireChat: true });
|
|
422
|
+
const resolved = await resolveVisibleSavedWorkflow({
|
|
423
|
+
dataDir: input.dataDir,
|
|
424
|
+
ref: input.ref,
|
|
425
|
+
context,
|
|
426
|
+
includeDrafts: true,
|
|
427
|
+
});
|
|
428
|
+
if (resolved.status !== 'active' || !resolved.publishedRevision) {
|
|
429
|
+
throw new SavedWorkflowServiceError('not_published', `Saved Workflow '${resolved.workflowId}' has no published revision`);
|
|
430
|
+
}
|
|
431
|
+
let current;
|
|
432
|
+
try {
|
|
433
|
+
current = await loadCurrentSavedWorkflow(input.dataDir, resolved.workflowId, {
|
|
434
|
+
revision: 'published',
|
|
435
|
+
requireActive: true,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
catch (err) {
|
|
439
|
+
if (err instanceof SavedWorkflowNotFoundError)
|
|
440
|
+
throw notFound(resolved.workflowId);
|
|
441
|
+
if (err instanceof SavedWorkflowConflictError) {
|
|
442
|
+
throw new SavedWorkflowServiceError('not_published', `Saved Workflow '${resolved.workflowId}' no longer has an active published revision`);
|
|
443
|
+
}
|
|
444
|
+
throw err;
|
|
445
|
+
}
|
|
446
|
+
// Re-check after the second store read so an archive/scope race cannot make a
|
|
447
|
+
// definition executable after it ceased to be visible to this caller.
|
|
448
|
+
assertMetadataVisibleInContext(current.metadata, context);
|
|
449
|
+
if (current.metadata.status !== 'active' || !current.metadata.publishedRevision) {
|
|
450
|
+
throw new SavedWorkflowServiceError('not_published', `Saved Workflow '${current.metadata.workflowId}' has no published revision`);
|
|
451
|
+
}
|
|
452
|
+
return materializeSavedWorkflowRun({
|
|
453
|
+
metadata: current.metadata,
|
|
454
|
+
revision: current.revision,
|
|
455
|
+
rawParams: input.rawParams,
|
|
456
|
+
context: {
|
|
457
|
+
initiatorOpenId: context.actor.openId,
|
|
458
|
+
chatBinding: {
|
|
459
|
+
larkAppId: context.actor.larkAppId,
|
|
460
|
+
chatId: context.chatId,
|
|
461
|
+
...(context.chatType ? { chatType: context.chatType } : {}),
|
|
462
|
+
...(context.rootMessageId ? { rootMessageId: context.rootMessageId } : {}),
|
|
463
|
+
...(context.sessionId ? { sessionId: context.sessionId } : {}),
|
|
464
|
+
ownerOpenId: context.actor.openId,
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
bots: input.bots,
|
|
468
|
+
baseDir: input.baseDir,
|
|
469
|
+
runId: input.runId,
|
|
470
|
+
now: input.now,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
function requireActorContext(context, opts = {}) {
|
|
474
|
+
if (!context?.actor?.openId?.trim() || !context.actor.larkAppId?.trim()) {
|
|
475
|
+
throw new SavedWorkflowServiceError('invalid_context', 'Saved Workflow actor requires non-empty openId and larkAppId');
|
|
476
|
+
}
|
|
477
|
+
if (context.chatId !== undefined && !context.chatId.trim()) {
|
|
478
|
+
throw new SavedWorkflowServiceError('invalid_context', 'Saved Workflow chatId must not be empty');
|
|
479
|
+
}
|
|
480
|
+
if (opts.requireChat && !context.chatId) {
|
|
481
|
+
throw new SavedWorkflowServiceError('invalid_context', 'This Saved Workflow operation requires a chat context');
|
|
482
|
+
}
|
|
483
|
+
return context;
|
|
484
|
+
}
|
|
485
|
+
function sameOwner(a, b) {
|
|
486
|
+
return a.openId === b.openId && a.larkAppId === b.larkAppId;
|
|
487
|
+
}
|
|
488
|
+
function assertSourceOwnedByCaller(loaded, context) {
|
|
489
|
+
const binding = loaded.envelope.chatBinding;
|
|
490
|
+
if (!binding) {
|
|
491
|
+
throw new SavedWorkflowServiceError('source_not_owned', `Source run '${loaded.envelope.runId}' has no authenticated chat owner binding`);
|
|
492
|
+
}
|
|
493
|
+
if (binding.chatId !== context.chatId) {
|
|
494
|
+
throw new SavedWorkflowServiceError('scope_mismatch', `Source run '${loaded.envelope.runId}' belongs to a different chat`);
|
|
495
|
+
}
|
|
496
|
+
if (binding.larkAppId !== context.actor.larkAppId ||
|
|
497
|
+
!binding.ownerOpenId ||
|
|
498
|
+
binding.ownerOpenId !== context.actor.openId) {
|
|
499
|
+
throw new SavedWorkflowServiceError('source_not_owned', `Source run '${loaded.envelope.runId}' belongs to a different actor`);
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
function assertMetadataVisibleInContext(metadata, context) {
|
|
503
|
+
// Treat a cross-app lookup exactly like a missing workflow: callers must not
|
|
504
|
+
// learn whether another bot sharing dataDir owns this id/name.
|
|
505
|
+
if (metadata.owner.larkAppId !== context.actor.larkAppId)
|
|
506
|
+
throw notFound(metadata.workflowId);
|
|
507
|
+
if (metadata.status === 'archived')
|
|
508
|
+
throw notFound(metadata.workflowId);
|
|
509
|
+
if (metadata.scope.kind === 'chat' && metadata.scope.chatId !== context.chatId) {
|
|
510
|
+
throw new SavedWorkflowServiceError('scope_mismatch', `Saved Workflow '${metadata.workflowId}' belongs to a different chat`);
|
|
511
|
+
}
|
|
512
|
+
if (metadata.status === 'draft' && !sameOwner(metadata.owner, context.actor)) {
|
|
513
|
+
throw notFound(metadata.workflowId);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
function exactCompileOptions(loaded, allowDraft, acknowledgeUnsafeLiterals = false) {
|
|
517
|
+
const opts = { allowDraft, acknowledgeUnsafeLiterals };
|
|
518
|
+
if (loaded.envelope.source.kind !== 'saved_definition')
|
|
519
|
+
return opts;
|
|
520
|
+
const snapshot = loaded.definitionSnapshot;
|
|
521
|
+
if (!snapshot || typeof snapshot !== 'object' || Array.isArray(snapshot)) {
|
|
522
|
+
throw new Error('cannot save workflow: saved-definition source has no valid definition snapshot');
|
|
523
|
+
}
|
|
524
|
+
const record = snapshot;
|
|
525
|
+
const payload = validateSavedWorkflowRevisionPayload(record.definition);
|
|
526
|
+
const source = loaded.envelope.source;
|
|
527
|
+
if (record.workflowId !== source.workflowId ||
|
|
528
|
+
record.revisionId !== source.revisionId ||
|
|
529
|
+
record.humanVersion !== source.humanVersion ||
|
|
530
|
+
payload.workflowId !== source.workflowId ||
|
|
531
|
+
payload.humanVersion !== source.humanVersion) {
|
|
532
|
+
throw new Error('cannot save workflow: definition snapshot identity does not match run envelope');
|
|
533
|
+
}
|
|
534
|
+
opts.inputs = payload.inputs;
|
|
535
|
+
opts.contextRefs = payload.contextRefs;
|
|
536
|
+
opts.specStatus = payload.specStatus;
|
|
537
|
+
return opts;
|
|
538
|
+
}
|
|
539
|
+
function notFound(ref) {
|
|
540
|
+
return new SavedWorkflowServiceError('not_found', `Saved Workflow ${JSON.stringify(ref)} was not found in the current scope`);
|
|
541
|
+
}
|
|
542
|
+
//# sourceMappingURL=library-service.js.map
|