@bastani/atomic 0.9.16-alpha.2 → 0.9.16-alpha.3
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/CHANGELOG.md +7 -0
- package/dist/builtin/intercom/broker/spawn.ts +22 -2
- package/dist/builtin/intercom/index.bundle.mjs +61694 -0
- package/dist/builtin/intercom/package.json +3 -3
- package/dist/builtin/mcp/index.bundle.mjs +64901 -0
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/package.json +2 -2
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +85671 -0
- package/dist/builtin/web-access/index.bundle.mjs +67413 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/package.json +3 -3
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +76391 -96336
- package/dist/builtin/workflows/src/index.bundle.mjs +73244 -0
- package/dist/core/builtin-install-layout.d.ts +22 -0
- package/dist/core/builtin-install-layout.d.ts.map +1 -0
- package/dist/core/builtin-install-layout.js +23 -0
- package/dist/core/builtin-install-layout.js.map +1 -0
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +8 -32
- package/dist/core/builtin-packages.js.map +1 -1
- package/npm-shrinkwrap.json +32 -32
- package/package.json +3 -3
- package/dist/builtin/intercom/closed-workflow-stage-message.ts +0 -66
- package/dist/builtin/intercom/config.ts +0 -121
- package/dist/builtin/intercom/contact-supervisor-tool.ts +0 -328
- package/dist/builtin/intercom/foreground-detach-handoff.ts +0 -164
- package/dist/builtin/intercom/group.ts +0 -85
- package/dist/builtin/intercom/inbound-idle-queue.ts +0 -82
- package/dist/builtin/intercom/inbound-message-admission.ts +0 -79
- package/dist/builtin/intercom/incoming-message-delivery.ts +0 -49
- package/dist/builtin/intercom/index-heavy.ts +0 -539
- package/dist/builtin/intercom/index.ts +0 -503
- package/dist/builtin/intercom/intercom-test-seams.ts +0 -6
- package/dist/builtin/intercom/intercom-tool.ts +0 -602
- package/dist/builtin/intercom/intercom-utils.ts +0 -427
- package/dist/builtin/intercom/late-stage-message-router.ts +0 -148
- package/dist/builtin/intercom/lazy-heavy-proxy.ts +0 -108
- package/dist/builtin/intercom/lazy-subagent-ack.ts +0 -25
- package/dist/builtin/intercom/lazy-tool-execution.ts +0 -39
- package/dist/builtin/intercom/lifecycle-lease.ts +0 -51
- package/dist/builtin/intercom/lifecycle.ts +0 -144
- package/dist/builtin/intercom/overlay.ts +0 -96
- package/dist/builtin/intercom/parent-ask-handoff.ts +0 -72
- package/dist/builtin/intercom/reconnect-backoff.ts +0 -6
- package/dist/builtin/intercom/reply-routing.ts +0 -17
- package/dist/builtin/intercom/reply-tracker.ts +0 -110
- package/dist/builtin/intercom/reply-waiter.ts +0 -115
- package/dist/builtin/intercom/result-renderers.ts +0 -77
- package/dist/builtin/intercom/runtime-group.ts +0 -13
- package/dist/builtin/intercom/session-target.ts +0 -54
- package/dist/builtin/intercom/source-ownership.ts +0 -31
- package/dist/builtin/intercom/stable-delivery-retry.ts +0 -32
- package/dist/builtin/intercom/subagent-relay.ts +0 -290
- package/dist/builtin/intercom/supervisor-authorization-registry.ts +0 -22
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +0 -247
- package/dist/builtin/intercom/types.ts +0 -66
- package/dist/builtin/intercom/ui/compose.ts +0 -159
- package/dist/builtin/intercom/ui/inline-message.ts +0 -78
- package/dist/builtin/intercom/ui/session-list.ts +0 -195
- package/dist/builtin/intercom/workflow-reply-tracker.ts +0 -19
- package/dist/builtin/intercom/workflow-stage-admission.ts +0 -43
- package/dist/builtin/intercom/workflow-stage-delivery-failure.ts +0 -77
- package/dist/builtin/mcp/agent-dir.ts +0 -30
- package/dist/builtin/mcp/apps-cancellation.ts +0 -32
- package/dist/builtin/mcp/call-tool-result.ts +0 -9
- package/dist/builtin/mcp/caller-wait.ts +0 -50
- package/dist/builtin/mcp/cli.js +0 -191
- package/dist/builtin/mcp/command-registration.ts +0 -82
- package/dist/builtin/mcp/commands.ts +0 -424
- package/dist/builtin/mcp/config-write-utils.ts +0 -104
- package/dist/builtin/mcp/config.ts +0 -498
- package/dist/builtin/mcp/consent-manager.ts +0 -64
- package/dist/builtin/mcp/direct-tool-executor.ts +0 -280
- package/dist/builtin/mcp/direct-tools.ts +0 -216
- package/dist/builtin/mcp/errors.ts +0 -219
- package/dist/builtin/mcp/glimpse-ui.ts +0 -81
- package/dist/builtin/mcp/host-html-template.ts +0 -426
- package/dist/builtin/mcp/index.ts +0 -443
- package/dist/builtin/mcp/init.ts +0 -319
- package/dist/builtin/mcp/lifecycle.ts +0 -93
- package/dist/builtin/mcp/logger.ts +0 -169
- package/dist/builtin/mcp/mcp-auth-flow.ts +0 -372
- package/dist/builtin/mcp/mcp-auth.ts +0 -297
- package/dist/builtin/mcp/mcp-callback-server.ts +0 -306
- package/dist/builtin/mcp/mcp-oauth-provider.ts +0 -324
- package/dist/builtin/mcp/mcp-panel-renderer.ts +0 -243
- package/dist/builtin/mcp/mcp-panel-state.ts +0 -227
- package/dist/builtin/mcp/mcp-panel-types.ts +0 -86
- package/dist/builtin/mcp/mcp-panel.ts +0 -393
- package/dist/builtin/mcp/mcp-setup-panel.ts +0 -502
- package/dist/builtin/mcp/metadata-cache.ts +0 -201
- package/dist/builtin/mcp/metadata-hydration.ts +0 -52
- package/dist/builtin/mcp/npx-resolver.ts +0 -425
- package/dist/builtin/mcp/oauth-handler.ts +0 -60
- package/dist/builtin/mcp/onboarding-state.ts +0 -68
- package/dist/builtin/mcp/proxy-auth.ts +0 -61
- package/dist/builtin/mcp/proxy-call.ts +0 -447
- package/dist/builtin/mcp/proxy-connect.ts +0 -78
- package/dist/builtin/mcp/proxy-info-modes.ts +0 -409
- package/dist/builtin/mcp/proxy-modes.ts +0 -3
- package/dist/builtin/mcp/proxy-types.ts +0 -3
- package/dist/builtin/mcp/resource-tools.ts +0 -17
- package/dist/builtin/mcp/sampling-handler.ts +0 -273
- package/dist/builtin/mcp/server-manager.ts +0 -372
- package/dist/builtin/mcp/session-cleanup-barrier.ts +0 -43
- package/dist/builtin/mcp/startup-warmup.ts +0 -110
- package/dist/builtin/mcp/state-lease.ts +0 -12
- package/dist/builtin/mcp/state.ts +0 -41
- package/dist/builtin/mcp/tool-call-timeout.ts +0 -101
- package/dist/builtin/mcp/tool-metadata.ts +0 -152
- package/dist/builtin/mcp/tool-registrar.ts +0 -46
- package/dist/builtin/mcp/tool-result-renderer.ts +0 -66
- package/dist/builtin/mcp/types.ts +0 -445
- package/dist/builtin/mcp/ui-resource-handler.ts +0 -145
- package/dist/builtin/mcp/ui-server-http.ts +0 -81
- package/dist/builtin/mcp/ui-server.ts +0 -499
- package/dist/builtin/mcp/ui-session.ts +0 -378
- package/dist/builtin/mcp/ui-stream-types.ts +0 -89
- package/dist/builtin/mcp/utils.ts +0 -165
- package/dist/builtin/subagents/src/agents/agent-discovery.ts +0 -116
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +0 -216
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +0 -221
- package/dist/builtin/subagents/src/agents/agent-management.ts +0 -315
- package/dist/builtin/subagents/src/agents/agent-overrides.ts +0 -450
- package/dist/builtin/subagents/src/agents/agent-paths.ts +0 -69
- package/dist/builtin/subagents/src/agents/agent-scope.ts +0 -6
- package/dist/builtin/subagents/src/agents/agent-selection.ts +0 -23
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +0 -113
- package/dist/builtin/subagents/src/agents/agent-types.ts +0 -97
- package/dist/builtin/subagents/src/agents/agents.ts +0 -25
- package/dist/builtin/subagents/src/agents/frontmatter.ts +0 -74
- package/dist/builtin/subagents/src/agents/identity.ts +0 -37
- package/dist/builtin/subagents/src/agents/skills-paths.ts +0 -380
- package/dist/builtin/subagents/src/agents/skills.ts +0 -398
- package/dist/builtin/subagents/src/extension/api-lifecycle.ts +0 -64
- package/dist/builtin/subagents/src/extension/config.ts +0 -16
- package/dist/builtin/subagents/src/extension/control-notices.ts +0 -91
- package/dist/builtin/subagents/src/extension/index.ts +0 -420
- package/dist/builtin/subagents/src/extension/notification-content.ts +0 -85
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +0 -11
- package/dist/builtin/subagents/src/extension/schemas.ts +0 -208
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +0 -133
- package/dist/builtin/subagents/src/extension/tool-description.ts +0 -17
- package/dist/builtin/subagents/src/extension/tool-rendering.ts +0 -53
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +0 -376
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +0 -246
- package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +0 -30
- package/dist/builtin/subagents/src/runs/foreground/completion-notification.ts +0 -42
- package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +0 -26
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +0 -58
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +0 -19
- package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +0 -51
- package/dist/builtin/subagents/src/runs/foreground/execution-parent-ask-handoff.ts +0 -78
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +0 -1
- package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +0 -26
- package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +0 -61
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +0 -6
- package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +0 -512
- package/dist/builtin/subagents/src/runs/foreground/notify.ts +0 -355
- package/dist/builtin/subagents/src/runs/foreground/parent-ask-output.ts +0 -48
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-burst-display.ts +0 -46
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-burst.ts +0 -403
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +0 -223
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-cwd.ts +0 -6
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +0 -139
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-live-update.ts +0 -11
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +0 -268
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +0 -327
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parent-ask-projection.ts +0 -11
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +0 -12
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +0 -350
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +0 -246
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +0 -131
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +0 -102
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +0 -217
- package/dist/builtin/subagents/src/runs/inprocess/child-policy.ts +0 -27
- package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +0 -55
- package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +0 -72
- package/dist/builtin/subagents/src/runs/inprocess/index.ts +0 -27
- package/dist/builtin/subagents/src/runs/inprocess/prompt-behavior.ts +0 -168
- package/dist/builtin/subagents/src/runs/inprocess/runner.ts +0 -1280
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/temp-cleanup.ts +0 -69
- package/dist/builtin/subagents/src/runs/inprocess.ts +0 -1
- package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +0 -67
- package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +0 -182
- package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -391
- package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +0 -56
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -88
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +0 -70
- package/dist/builtin/subagents/src/runs/shared/progress-trend.ts +0 -69
- package/dist/builtin/subagents/src/runs/shared/run-history.ts +0 -64
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +0 -169
- package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +0 -234
- package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +0 -111
- package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +0 -67
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -552
- package/dist/builtin/subagents/src/shared/artifacts.ts +0 -240
- package/dist/builtin/subagents/src/shared/atomic-json.ts +0 -16
- package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +0 -330
- package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +0 -44
- package/dist/builtin/subagents/src/shared/fast-mode.ts +0 -87
- package/dist/builtin/subagents/src/shared/file-coalescer.ts +0 -40
- package/dist/builtin/subagents/src/shared/fork-context.ts +0 -79
- package/dist/builtin/subagents/src/shared/formatters.ts +0 -89
- package/dist/builtin/subagents/src/shared/jsonl-writer.ts +0 -83
- package/dist/builtin/subagents/src/shared/model-info.ts +0 -101
- package/dist/builtin/subagents/src/shared/model-resolution.ts +0 -78
- package/dist/builtin/subagents/src/shared/session-identity.ts +0 -10
- package/dist/builtin/subagents/src/shared/session-tokens.ts +0 -45
- package/dist/builtin/subagents/src/shared/settings.ts +0 -118
- package/dist/builtin/subagents/src/shared/status-format.ts +0 -50
- package/dist/builtin/subagents/src/shared/types-config.ts +0 -206
- package/dist/builtin/subagents/src/shared/types-depth.ts +0 -46
- package/dist/builtin/subagents/src/shared/types-foreground-state.ts +0 -48
- package/dist/builtin/subagents/src/shared/types-output.ts +0 -63
- package/dist/builtin/subagents/src/shared/types-results.ts +0 -259
- package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -115
- package/dist/builtin/subagents/src/shared/types.ts +0 -13
- package/dist/builtin/subagents/src/shared/utils.ts +0 -342
- package/dist/builtin/subagents/src/slash/bridge-settlement.ts +0 -87
- package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +0 -455
- package/dist/builtin/subagents/src/slash/slash-bridge.ts +0 -194
- package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -5
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +0 -259
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +0 -7
- package/dist/builtin/subagents/src/tui/render-helpers.ts +0 -90
- package/dist/builtin/subagents/src/tui/render-layout.ts +0 -157
- package/dist/builtin/subagents/src/tui/render-progress.ts +0 -89
- package/dist/builtin/subagents/src/tui/render-result-animation.ts +0 -47
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +0 -248
- package/dist/builtin/subagents/src/tui/render-result.ts +0 -438
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +0 -50
- package/dist/builtin/subagents/src/tui/render-status-progress.ts +0 -168
- package/dist/builtin/subagents/src/tui/render.ts +0 -23
- package/dist/builtin/web-access/activity.ts +0 -101
- package/dist/builtin/web-access/chrome-cookies.ts +0 -323
- package/dist/builtin/web-access/code-search.ts +0 -107
- package/dist/builtin/web-access/config-paths.ts +0 -11
- package/dist/builtin/web-access/content-tools.ts +0 -354
- package/dist/builtin/web-access/curator-page-assets/script-1.ts +0 -400
- package/dist/builtin/web-access/curator-page-assets/script-2.ts +0 -400
- package/dist/builtin/web-access/curator-page-assets/script-3.ts +0 -400
- package/dist/builtin/web-access/curator-page-assets/script-4.ts +0 -400
- package/dist/builtin/web-access/curator-page-assets/script-5.ts +0 -398
- package/dist/builtin/web-access/curator-page-assets/styles-1.ts +0 -394
- package/dist/builtin/web-access/curator-page-assets/styles-2.ts +0 -394
- package/dist/builtin/web-access/curator-page-assets/styles-3.ts +0 -393
- package/dist/builtin/web-access/curator-page.ts +0 -196
- package/dist/builtin/web-access/curator-server-helpers.ts +0 -115
- package/dist/builtin/web-access/curator-server.ts +0 -494
- package/dist/builtin/web-access/exa-mcp.ts +0 -218
- package/dist/builtin/web-access/exa.ts +0 -317
- package/dist/builtin/web-access/extract-frames.ts +0 -229
- package/dist/builtin/web-access/extract.ts +0 -500
- package/dist/builtin/web-access/flat-string.ts +0 -37
- package/dist/builtin/web-access/gemini-api.ts +0 -111
- package/dist/builtin/web-access/gemini-search.ts +0 -363
- package/dist/builtin/web-access/gemini-url-context.ts +0 -126
- package/dist/builtin/web-access/gemini-web-config.ts +0 -53
- package/dist/builtin/web-access/gemini-web.ts +0 -397
- package/dist/builtin/web-access/github-api.ts +0 -198
- package/dist/builtin/web-access/github-config.ts +0 -156
- package/dist/builtin/web-access/github-extract.ts +0 -487
- package/dist/builtin/web-access/index-heavy.ts +0 -164
- package/dist/builtin/web-access/index.ts +0 -401
- package/dist/builtin/web-access/lifecycle-lease.ts +0 -38
- package/dist/builtin/web-access/pdf-extract.ts +0 -192
- package/dist/builtin/web-access/perplexity.ts +0 -194
- package/dist/builtin/web-access/result-renderers.ts +0 -366
- package/dist/builtin/web-access/rsc-extract.ts +0 -338
- package/dist/builtin/web-access/storage.ts +0 -72
- package/dist/builtin/web-access/subprocess.ts +0 -102
- package/dist/builtin/web-access/summary-review.ts +0 -287
- package/dist/builtin/web-access/utils.ts +0 -44
- package/dist/builtin/web-access/video-extract.ts +0 -375
- package/dist/builtin/web-access/web-search-activity.ts +0 -102
- package/dist/builtin/web-access/web-search-browser.ts +0 -124
- package/dist/builtin/web-access/web-search-command.ts +0 -242
- package/dist/builtin/web-access/web-search-config.ts +0 -157
- package/dist/builtin/web-access/web-search-curator.ts +0 -214
- package/dist/builtin/web-access/web-search-features.ts +0 -181
- package/dist/builtin/web-access/web-search-formatting.ts +0 -117
- package/dist/builtin/web-access/web-search-return.ts +0 -143
- package/dist/builtin/web-access/web-search-summary.ts +0 -177
- package/dist/builtin/web-access/web-search-tool.ts +0 -286
- package/dist/builtin/web-access/web-search-types.ts +0 -50
- package/dist/builtin/web-access/web-search-workflow.ts +0 -10
- package/dist/builtin/web-access/youtube-extract.ts +0 -309
- package/dist/builtin/workflows/src/authoring/keep-context.ts +0 -46
- package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +0 -41
- package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +0 -180
- package/dist/builtin/workflows/src/authoring/workflow.ts +0 -206
- package/dist/builtin/workflows/src/durable/backend.ts +0 -598
- package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +0 -172
- package/dist/builtin/workflows/src/durable/boundary-topology.ts +0 -475
- package/dist/builtin/workflows/src/durable/child-invocation.ts +0 -14
- package/dist/builtin/workflows/src/durable/child-primitive.ts +0 -124
- package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +0 -385
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +0 -685
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +0 -157
- package/dist/builtin/workflows/src/durable/completed-subtree.ts +0 -50
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +0 -580
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +0 -681
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +0 -717
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +0 -516
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +0 -208
- package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +0 -166
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +0 -196
- package/dist/builtin/workflows/src/durable/dbos-process-owner.ts +0 -87
- package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +0 -377
- package/dist/builtin/workflows/src/durable/dbos-registration-diagnostics.ts +0 -113
- package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +0 -182
- package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +0 -67
- package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +0 -27
- package/dist/builtin/workflows/src/durable/durable-hash.ts +0 -18
- package/dist/builtin/workflows/src/durable/factory.ts +0 -93
- package/dist/builtin/workflows/src/durable/format-version.ts +0 -6
- package/dist/builtin/workflows/src/durable/index.ts +0 -82
- package/dist/builtin/workflows/src/durable/local-command.ts +0 -135
- package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +0 -184
- package/dist/builtin/workflows/src/durable/prompt-reservations.ts +0 -36
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +0 -20
- package/dist/builtin/workflows/src/durable/resume-eligibility.ts +0 -106
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +0 -344
- package/dist/builtin/workflows/src/durable/retention-policy.ts +0 -43
- package/dist/builtin/workflows/src/durable/run-timing.ts +0 -151
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +0 -308
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +0 -553
- package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +0 -247
- package/dist/builtin/workflows/src/durable/stage-topology.ts +0 -53
- package/dist/builtin/workflows/src/durable/targeted-inspection.ts +0 -110
- package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +0 -54
- package/dist/builtin/workflows/src/durable/tool-outcome.ts +0 -130
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +0 -861
- package/dist/builtin/workflows/src/durable/types.ts +0 -343
- package/dist/builtin/workflows/src/durable/ui-primitive.ts +0 -263
- package/dist/builtin/workflows/src/durable/workflow-child-result.ts +0 -63
- package/dist/builtin/workflows/src/durable/workflow-heartbeat-anchor.ts +0 -153
- package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +0 -31
- package/dist/builtin/workflows/src/engine/graph-inference.ts +0 -100
- package/dist/builtin/workflows/src/engine/options.ts +0 -44
- package/dist/builtin/workflows/src/engine/primitives/chain.ts +0 -34
- package/dist/builtin/workflows/src/engine/primitives/exit.ts +0 -2
- package/dist/builtin/workflows/src/engine/primitives/parallel.ts +0 -74
- package/dist/builtin/workflows/src/engine/primitives/task.ts +0 -127
- package/dist/builtin/workflows/src/engine/primitives/ui.ts +0 -54
- package/dist/builtin/workflows/src/engine/primitives/workflow.ts +0 -219
- package/dist/builtin/workflows/src/engine/replay.ts +0 -8
- package/dist/builtin/workflows/src/engine/run-budget.ts +0 -308
- package/dist/builtin/workflows/src/engine/run-durable-admission.ts +0 -50
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +0 -97
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +0 -65
- package/dist/builtin/workflows/src/engine/run-durable-topology.ts +0 -295
- package/dist/builtin/workflows/src/engine/run-returned-status.ts +0 -86
- package/dist/builtin/workflows/src/engine/run-terminal-event.ts +0 -39
- package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +0 -53
- package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +0 -99
- package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +0 -187
- package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +0 -164
- package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +0 -158
- package/dist/builtin/workflows/src/engine/run.ts +0 -841
- package/dist/builtin/workflows/src/engine/runtime.ts +0 -220
- package/dist/builtin/workflows/src/engine/workflow-activity.ts +0 -13
- package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +0 -92
- package/dist/builtin/workflows/src/extension/adopt-session-run-state.ts +0 -20
- package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +0 -168
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +0 -154
- package/dist/builtin/workflows/src/extension/companions.ts +0 -210
- package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +0 -167
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +0 -185
- package/dist/builtin/workflows/src/extension/config-loader.ts +0 -439
- package/dist/builtin/workflows/src/extension/discovery-loaders.ts +0 -112
- package/dist/builtin/workflows/src/extension/discovery.ts +0 -424
- package/dist/builtin/workflows/src/extension/dispatcher.ts +0 -273
- package/dist/builtin/workflows/src/extension/extension-factory.ts +0 -133
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +0 -174
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +0 -596
- package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +0 -367
- package/dist/builtin/workflows/src/extension/index.ts +0 -42
- package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +0 -83
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +0 -849
- package/dist/builtin/workflows/src/extension/mcp.ts +0 -121
- package/dist/builtin/workflows/src/extension/postmortem-deps.ts +0 -70
- package/dist/builtin/workflows/src/extension/public-types.ts +0 -234
- package/dist/builtin/workflows/src/extension/render-call.ts +0 -115
- package/dist/builtin/workflows/src/extension/render-component.ts +0 -12
- package/dist/builtin/workflows/src/extension/render-result.ts +0 -558
- package/dist/builtin/workflows/src/extension/renderers.ts +0 -89
- package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +0 -78
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +0 -174
- package/dist/builtin/workflows/src/extension/runtime.ts +0 -439
- package/dist/builtin/workflows/src/extension/status-writer.ts +0 -182
- package/dist/builtin/workflows/src/extension/ui-surface.ts +0 -387
- package/dist/builtin/workflows/src/extension/wiring.ts +0 -490
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +0 -129
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +0 -296
- package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +0 -114
- package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +0 -175
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +0 -270
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-delivery.ts +0 -241
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-notice.ts +0 -115
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-scheduler.ts +0 -962
- package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +0 -24
- package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +0 -162
- package/dist/builtin/workflows/src/extension/workflow-policy.ts +0 -13
- package/dist/builtin/workflows/src/extension/workflow-ports.ts +0 -45
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +0 -73
- package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +0 -66
- package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +0 -42
- package/dist/builtin/workflows/src/extension/workflow-request-abort.ts +0 -15
- package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +0 -96
- package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +0 -53
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +0 -562
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +0 -192
- package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +0 -252
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +0 -276
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +0 -210
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +0 -265
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +0 -547
- package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +0 -153
- package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +0 -145
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +0 -488
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +0 -188
- package/dist/builtin/workflows/src/index.ts +0 -8
- package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +0 -90
- package/dist/builtin/workflows/src/intercom/intercom-routing.ts +0 -131
- package/dist/builtin/workflows/src/intercom/result-intercom.ts +0 -271
- package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +0 -135
- package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +0 -63
- package/dist/builtin/workflows/src/runs/background/job-tracker.ts +0 -125
- package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +0 -71
- package/dist/builtin/workflows/src/runs/background/quit.ts +0 -417
- package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +0 -99
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +0 -126
- package/dist/builtin/workflows/src/runs/background/runner.ts +0 -185
- package/dist/builtin/workflows/src/runs/background/startup-admission.ts +0 -73
- package/dist/builtin/workflows/src/runs/background/status.ts +0 -511
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +0 -43
- package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +0 -441
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +0 -263
- package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +0 -79
- package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +0 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +0 -207
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +0 -321
- package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +0 -224
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +0 -403
- package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +0 -86
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +0 -491
- package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +0 -156
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +0 -379
- package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +0 -75
- package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +0 -144
- package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +0 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +0 -206
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +0 -434
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +0 -153
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +0 -225
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +0 -473
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +0 -156
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +0 -72
- package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +0 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +0 -226
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +0 -186
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +0 -25
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +0 -245
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +0 -466
- package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +0 -86
- package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +0 -95
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +0 -21
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +0 -330
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +0 -1472
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +0 -196
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +0 -177
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +0 -97
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +0 -278
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +0 -206
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +0 -41
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +0 -134
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -38
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +0 -66
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +0 -120
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +0 -211
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +0 -42
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +0 -22
- package/dist/builtin/workflows/src/runs/foreground/stage-session-heartbeat.ts +0 -88
- package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +0 -49
- package/dist/builtin/workflows/src/runs/shared/concurrency.ts +0 -76
- package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +0 -2
- package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +0 -325
- package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +0 -19
- package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +0 -2
- package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +0 -96
- package/dist/builtin/workflows/src/runs/shared/retry.ts +0 -44
- package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +0 -111
- package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +0 -23
- package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +0 -116
- package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +0 -172
- package/dist/builtin/workflows/src/runs/shared/worktree-generation.ts +0 -57
- package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +0 -107
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +0 -407
- package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +0 -137
- package/dist/builtin/workflows/src/runs/shared/worktree-root.ts +0 -84
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +0 -372
- package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +0 -102
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +0 -21
- package/dist/builtin/workflows/src/sdk-surface.ts +0 -70
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +0 -403
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +0 -489
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +0 -327
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +0 -437
- package/dist/builtin/workflows/src/shared/budget-meter.ts +0 -34
- package/dist/builtin/workflows/src/shared/budget.d.ts +0 -67
- package/dist/builtin/workflows/src/shared/budget.ts +0 -127
- package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +0 -434
- package/dist/builtin/workflows/src/shared/flat-string.ts +0 -33
- package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +0 -188
- package/dist/builtin/workflows/src/shared/intercom-group.ts +0 -58
- package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +0 -72
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +0 -613
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +0 -306
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +0 -303
- package/dist/builtin/workflows/src/shared/prompt-answer.ts +0 -130
- package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +0 -13
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +0 -161
- package/dist/builtin/workflows/src/shared/resume-continuation.ts +0 -2
- package/dist/builtin/workflows/src/shared/returned-run-status.ts +0 -164
- package/dist/builtin/workflows/src/shared/run-id.ts +0 -36
- package/dist/builtin/workflows/src/shared/run-indicator-status.ts +0 -75
- package/dist/builtin/workflows/src/shared/run-visibility.ts +0 -9
- package/dist/builtin/workflows/src/shared/schema-introspection.ts +0 -111
- package/dist/builtin/workflows/src/shared/serializable.ts +0 -118
- package/dist/builtin/workflows/src/shared/session-scoped-singleton.ts +0 -98
- package/dist/builtin/workflows/src/shared/session-transcript.ts +0 -79
- package/dist/builtin/workflows/src/shared/stage-prompt.ts +0 -338
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +0 -340
- package/dist/builtin/workflows/src/shared/store-factory.ts +0 -26
- package/dist/builtin/workflows/src/shared/store-internal.ts +0 -252
- package/dist/builtin/workflows/src/shared/store-observation.ts +0 -10
- package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +0 -215
- package/dist/builtin/workflows/src/shared/store-public-types.ts +0 -282
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +0 -305
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +0 -331
- package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +0 -60
- package/dist/builtin/workflows/src/shared/store-types.ts +0 -439
- package/dist/builtin/workflows/src/shared/store.ts +0 -15
- package/dist/builtin/workflows/src/shared/timing.ts +0 -71
- package/dist/builtin/workflows/src/shared/tool-payload-bounds.ts +0 -576
- package/dist/builtin/workflows/src/shared/types.ts +0 -523
- package/dist/builtin/workflows/src/shared/workflow-artifact-env.ts +0 -21
- package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +0 -259
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +0 -60
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +0 -111
- package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +0 -292
- package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +0 -74
- package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +0 -458
- package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +0 -303
- package/dist/builtin/workflows/src/shared/workflow-failures.ts +0 -13
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.d.ts +0 -21
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.ts +0 -25
- package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +0 -49
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +0 -319
- package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -477
- package/dist/builtin/workflows/src/tui/color-utils.ts +0 -55
- package/dist/builtin/workflows/src/tui/connectors.ts +0 -84
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +0 -334
- package/dist/builtin/workflows/src/tui/edge.ts +0 -25
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +0 -185
- package/dist/builtin/workflows/src/tui/graph-theme.ts +0 -292
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +0 -49
- package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +0 -157
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +0 -427
- package/dist/builtin/workflows/src/tui/graph-view-layout.ts +0 -297
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +0 -294
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +0 -361
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +0 -547
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +0 -79
- package/dist/builtin/workflows/src/tui/graph-view.ts +0 -25
- package/dist/builtin/workflows/src/tui/header.ts +0 -210
- package/dist/builtin/workflows/src/tui/host-input-form.ts +0 -64
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +0 -438
- package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +0 -120
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +0 -496
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +0 -317
- package/dist/builtin/workflows/src/tui/inline-form-store.ts +0 -90
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +0 -185
- package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +0 -147
- package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +0 -357
- package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +0 -312
- package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +0 -161
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +0 -20
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +0 -167
- package/dist/builtin/workflows/src/tui/layout.ts +0 -150
- package/dist/builtin/workflows/src/tui/mouse-input.ts +0 -61
- package/dist/builtin/workflows/src/tui/node-card.ts +0 -357
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -449
- package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +0 -39
- package/dist/builtin/workflows/src/tui/prompt-card-input.ts +0 -215
- package/dist/builtin/workflows/src/tui/prompt-card-render.ts +0 -584
- package/dist/builtin/workflows/src/tui/prompt-card-select.ts +0 -94
- package/dist/builtin/workflows/src/tui/prompt-card-state.ts +0 -61
- package/dist/builtin/workflows/src/tui/prompt-card-text.ts +0 -122
- package/dist/builtin/workflows/src/tui/prompt-card.ts +0 -12
- package/dist/builtin/workflows/src/tui/renderers.ts +0 -14
- package/dist/builtin/workflows/src/tui/run-detail.ts +0 -438
- package/dist/builtin/workflows/src/tui/run-identity-rows.ts +0 -97
- package/dist/builtin/workflows/src/tui/session-list.ts +0 -38
- package/dist/builtin/workflows/src/tui/session-overlays.ts +0 -161
- package/dist/builtin/workflows/src/tui/session-picker.ts +0 -482
- package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +0 -19
- package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +0 -81
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +0 -462
- package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +0 -115
- package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +0 -113
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +0 -219
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +0 -216
- package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +0 -65
- package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +0 -7
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +0 -149
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +0 -49
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +0 -575
- package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +0 -35
- package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +0 -226
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +0 -156
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +0 -309
- package/dist/builtin/workflows/src/tui/status-helpers.ts +0 -85
- package/dist/builtin/workflows/src/tui/status-list.ts +0 -447
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +0 -338
- package/dist/builtin/workflows/src/tui/submit-pane.ts +0 -148
- package/dist/builtin/workflows/src/tui/switcher.ts +0 -172
- package/dist/builtin/workflows/src/tui/text-helpers.ts +0 -208
- package/dist/builtin/workflows/src/tui/tool-detail.ts +0 -367
- package/dist/builtin/workflows/src/tui/widget.ts +0 -427
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +0 -21
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -77
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +0 -477
- package/dist/builtin/workflows/src/tui/workflow-list.ts +0 -189
- package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +0 -167
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +0 -334
- package/dist/builtin/workflows/src/tui/workflow-status.ts +0 -12
- package/dist/builtin/workflows/src/workflows/identity.ts +0 -39
- package/dist/builtin/workflows/src/workflows/registry.ts +0 -115
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
/** High-level MCP OAuth flow management using the SDK auth helpers. */
|
|
2
|
-
import { auth as runSdkAuth, UnauthorizedError } from "@modelcontextprotocol/sdk/client/auth.js"
|
|
3
|
-
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
|
|
4
|
-
import open from "open"
|
|
5
|
-
import { McpOAuthProvider, type McpOAuthConfig } from "./mcp-oauth-provider.js"
|
|
6
|
-
import {
|
|
7
|
-
cancelAllPendingCallbacks,
|
|
8
|
-
cancelPendingCallback,
|
|
9
|
-
ensureCallbackServer,
|
|
10
|
-
stopCallbackServer,
|
|
11
|
-
waitForCallback,
|
|
12
|
-
} from "./mcp-callback-server.js"
|
|
13
|
-
import {
|
|
14
|
-
clearAllCredentials,
|
|
15
|
-
clearClientInfo,
|
|
16
|
-
clearCodeVerifier,
|
|
17
|
-
clearOAuthState,
|
|
18
|
-
getAuthForUrl,
|
|
19
|
-
getOAuthState,
|
|
20
|
-
hasStoredTokens,
|
|
21
|
-
isTokenExpired,
|
|
22
|
-
updateOAuthState,
|
|
23
|
-
type StoredTokens,
|
|
24
|
-
} from "./mcp-auth.js"
|
|
25
|
-
import { McpSessionCleanupBarrier } from "./session-cleanup-barrier.js"
|
|
26
|
-
import type { ServerEntry } from "./types.ts"
|
|
27
|
-
|
|
28
|
-
export type AuthStatus = "authenticated" | "expired" | "not_authenticated"
|
|
29
|
-
|
|
30
|
-
interface PendingTransport {
|
|
31
|
-
readonly serverName: string
|
|
32
|
-
readonly transport: StreamableHTTPClientTransport
|
|
33
|
-
readonly oauthState?: string
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
interface PendingAuthentication {
|
|
37
|
-
readonly serverName: string
|
|
38
|
-
readonly controller: AbortController
|
|
39
|
-
readonly result: Promise<AuthStatus>
|
|
40
|
-
readonly producer: Promise<AuthStatus>
|
|
41
|
-
readonly resolve: (status: AuthStatus) => void
|
|
42
|
-
readonly reject: (error: Error) => void
|
|
43
|
-
oauthState?: string
|
|
44
|
-
transport?: PendingTransport
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const pendingTransports = new Map<string, PendingTransport>()
|
|
48
|
-
const pendingAuthentications = new Map<string, PendingAuthentication>()
|
|
49
|
-
const closingTransports = new WeakMap<StreamableHTTPClientTransport, Promise<void>>()
|
|
50
|
-
const oauthCleanupBarrier = new McpSessionCleanupBarrier()
|
|
51
|
-
|
|
52
|
-
/** Actionable cancellation surfaced to callers whose session no longer owns OAuth. */
|
|
53
|
-
export class OAuthSessionResetError extends Error {
|
|
54
|
-
readonly code = "MCP_OAUTH_SESSION_RESET"
|
|
55
|
-
|
|
56
|
-
constructor(serverName: string | undefined, reason: string) {
|
|
57
|
-
const target = serverName ? ` for "${serverName}"` : ""
|
|
58
|
-
const readableReason = reason.replaceAll("_", " ")
|
|
59
|
-
super(
|
|
60
|
-
`MCP OAuth authentication${target} was cancelled because the MCP session was reset (${readableReason}). Retry authentication in the active session.`,
|
|
61
|
-
)
|
|
62
|
-
this.name = "OAuthSessionResetError"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function generateState(): string {
|
|
67
|
-
return Array.from(crypto.getRandomValues(new Uint8Array(32)))
|
|
68
|
-
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
69
|
-
.join("")
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function extractOAuthConfig(definition: ServerEntry): McpOAuthConfig {
|
|
73
|
-
if (definition.oauth === false) return {}
|
|
74
|
-
return {
|
|
75
|
-
grantType: definition.oauth?.grantType,
|
|
76
|
-
clientId: definition.oauth?.clientId,
|
|
77
|
-
clientSecret: definition.oauth?.clientSecret,
|
|
78
|
-
scope: definition.oauth?.scope,
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function assertActive(owner?: PendingAuthentication): void {
|
|
83
|
-
owner?.controller.signal.throwIfAborted()
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function clearOwnedOAuthState(serverName: string, oauthState?: string): void {
|
|
87
|
-
if (oauthState && getOAuthState(serverName) === oauthState) clearOAuthState(serverName)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function closeTransport(transport: StreamableHTTPClientTransport): Promise<void> {
|
|
91
|
-
const existing = closingTransports.get(transport)
|
|
92
|
-
if (existing) return existing
|
|
93
|
-
const closing = transport.close().catch(() => undefined)
|
|
94
|
-
closingTransports.set(transport, closing)
|
|
95
|
-
return closing
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
async function retireTransport(serverName: string, pending: PendingTransport): Promise<void> {
|
|
99
|
-
if (pendingTransports.get(serverName) === pending) pendingTransports.delete(serverName)
|
|
100
|
-
await closeTransport(pending.transport)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
interface StartedAuth {
|
|
104
|
-
readonly authorizationUrl: string
|
|
105
|
-
readonly oauthState?: string
|
|
106
|
-
readonly pendingTransport?: PendingTransport
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
async function startAuthAttempt(
|
|
110
|
-
serverName: string,
|
|
111
|
-
serverUrl: string,
|
|
112
|
-
definition?: ServerEntry,
|
|
113
|
-
owner?: PendingAuthentication,
|
|
114
|
-
): Promise<StartedAuth> {
|
|
115
|
-
assertActive(owner)
|
|
116
|
-
const config = definition ? extractOAuthConfig(definition) : {}
|
|
117
|
-
const storedAuth = getAuthForUrl(serverName, serverUrl)
|
|
118
|
-
if (storedAuth?.clientInfo && !storedAuth.tokens && !config.clientId) {
|
|
119
|
-
clearClientInfo(serverName)
|
|
120
|
-
clearCodeVerifier(serverName)
|
|
121
|
-
clearOAuthState(serverName)
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const providerCallbacks = {
|
|
125
|
-
onRedirect: async (_url: URL): Promise<void> => {
|
|
126
|
-
throw new Error("Browser redirect is not used for client_credentials flow")
|
|
127
|
-
},
|
|
128
|
-
assertActive: (): void => assertActive(owner),
|
|
129
|
-
}
|
|
130
|
-
if (config.grantType === "client_credentials") {
|
|
131
|
-
const authProvider = new McpOAuthProvider(serverName, serverUrl, config, providerCallbacks)
|
|
132
|
-
const result = await runSdkAuth(authProvider, { serverUrl })
|
|
133
|
-
assertActive(owner)
|
|
134
|
-
if (result !== "AUTHORIZED") throw new UnauthorizedError("Failed to authorize")
|
|
135
|
-
return { authorizationUrl: "" }
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
await ensureCallbackServer({ strictPort: Boolean(config.clientId) })
|
|
139
|
-
assertActive(owner)
|
|
140
|
-
const oauthState = generateState()
|
|
141
|
-
if (owner) owner.oauthState = oauthState
|
|
142
|
-
updateOAuthState(serverName, oauthState, serverUrl)
|
|
143
|
-
|
|
144
|
-
let capturedUrl: URL | undefined
|
|
145
|
-
const authProvider = new McpOAuthProvider(serverName, serverUrl, config, {
|
|
146
|
-
onRedirect: async (url) => { capturedUrl = url },
|
|
147
|
-
assertActive: (): void => assertActive(owner),
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
try {
|
|
151
|
-
const result = await runSdkAuth(authProvider, { serverUrl })
|
|
152
|
-
assertActive(owner)
|
|
153
|
-
if (result === "AUTHORIZED") {
|
|
154
|
-
clearOwnedOAuthState(serverName, oauthState)
|
|
155
|
-
return { authorizationUrl: "", oauthState }
|
|
156
|
-
}
|
|
157
|
-
if (!capturedUrl) throw new UnauthorizedError("OAuth authorization URL was not provided")
|
|
158
|
-
const pendingTransport = {
|
|
159
|
-
serverName,
|
|
160
|
-
transport: new StreamableHTTPClientTransport(new URL(serverUrl), { authProvider }),
|
|
161
|
-
oauthState,
|
|
162
|
-
}
|
|
163
|
-
pendingTransports.set(serverName, pendingTransport)
|
|
164
|
-
if (owner) owner.transport = pendingTransport
|
|
165
|
-
return { authorizationUrl: capturedUrl.toString(), oauthState, pendingTransport }
|
|
166
|
-
} catch (error) {
|
|
167
|
-
clearOwnedOAuthState(serverName, oauthState)
|
|
168
|
-
if (owner?.transport) await retireTransport(serverName, owner.transport)
|
|
169
|
-
throw error
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/** Start OAuth and return the browser authorization URL when interaction is needed. */
|
|
174
|
-
export async function startAuth(
|
|
175
|
-
serverName: string,
|
|
176
|
-
serverUrl: string,
|
|
177
|
-
definition?: ServerEntry,
|
|
178
|
-
): Promise<{ authorizationUrl: string }> {
|
|
179
|
-
const { authorizationUrl } = await startAuthAttempt(serverName, serverUrl, definition)
|
|
180
|
-
return { authorizationUrl }
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
async function completePendingTransport(
|
|
184
|
-
serverName: string,
|
|
185
|
-
authorizationCode: string,
|
|
186
|
-
pending: PendingTransport,
|
|
187
|
-
): Promise<AuthStatus> {
|
|
188
|
-
try {
|
|
189
|
-
await pending.transport.finishAuth(authorizationCode)
|
|
190
|
-
return "authenticated"
|
|
191
|
-
} finally {
|
|
192
|
-
await retireTransport(serverName, pending)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/** Complete a separately started OAuth flow with its authorization code. */
|
|
197
|
-
export async function completeAuth(serverName: string, authorizationCode: string): Promise<AuthStatus> {
|
|
198
|
-
const pending = pendingTransports.get(serverName)
|
|
199
|
-
if (!pending) throw new Error(`No pending OAuth flow for server: ${serverName}`)
|
|
200
|
-
return completePendingTransport(serverName, authorizationCode, pending)
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
function asError(error: unknown): Error {
|
|
204
|
-
return error instanceof Error ? error : new Error(String(error))
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
async function performAuthentication(
|
|
208
|
-
owner: PendingAuthentication,
|
|
209
|
-
serverUrl: string,
|
|
210
|
-
definition?: ServerEntry,
|
|
211
|
-
): Promise<AuthStatus> {
|
|
212
|
-
const serverName = owner.serverName
|
|
213
|
-
const started = await startAuthAttempt(serverName, serverUrl, definition, owner)
|
|
214
|
-
assertActive(owner)
|
|
215
|
-
if (!started.authorizationUrl) return "authenticated"
|
|
216
|
-
if (!started.oauthState || !started.pendingTransport) {
|
|
217
|
-
throw new Error("OAuth state or transport not found - this should not happen")
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
const callbackPromise = waitForCallback(started.oauthState)
|
|
221
|
-
try {
|
|
222
|
-
console.log(`MCP Auth: Opening browser for ${serverName}`)
|
|
223
|
-
try {
|
|
224
|
-
await open(started.authorizationUrl)
|
|
225
|
-
assertActive(owner)
|
|
226
|
-
} catch (error) {
|
|
227
|
-
assertActive(owner)
|
|
228
|
-
throw new Error(
|
|
229
|
-
`Could not open browser. Please open this URL manually: ${started.authorizationUrl}`,
|
|
230
|
-
{ cause: error },
|
|
231
|
-
)
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const code = await callbackPromise
|
|
235
|
-
assertActive(owner)
|
|
236
|
-
const storedState = getOAuthState(serverName)
|
|
237
|
-
if (storedState !== started.oauthState) {
|
|
238
|
-
clearOwnedOAuthState(serverName, started.oauthState)
|
|
239
|
-
throw new Error("OAuth state mismatch - potential CSRF attack")
|
|
240
|
-
}
|
|
241
|
-
clearOwnedOAuthState(serverName, started.oauthState)
|
|
242
|
-
assertActive(owner)
|
|
243
|
-
return await completePendingTransport(serverName, code, started.pendingTransport)
|
|
244
|
-
} catch (error) {
|
|
245
|
-
const failure = owner.controller.signal.aborted
|
|
246
|
-
? asError(owner.controller.signal.reason)
|
|
247
|
-
: asError(error)
|
|
248
|
-
cancelPendingCallback(started.oauthState, failure)
|
|
249
|
-
clearOwnedOAuthState(serverName, started.oauthState)
|
|
250
|
-
await retireTransport(serverName, started.pendingTransport)
|
|
251
|
-
throw failure
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/** Authenticate once per server while allowing every caller to await the same producer. */
|
|
256
|
-
export function authenticate(
|
|
257
|
-
serverName: string,
|
|
258
|
-
serverUrl: string,
|
|
259
|
-
definition?: ServerEntry,
|
|
260
|
-
): Promise<AuthStatus> {
|
|
261
|
-
const inFlight = pendingAuthentications.get(serverName)
|
|
262
|
-
if (inFlight) return inFlight.result
|
|
263
|
-
|
|
264
|
-
let resolve!: (status: AuthStatus) => void
|
|
265
|
-
let reject!: (error: Error) => void
|
|
266
|
-
const result = new Promise<AuthStatus>((resolveResult, rejectResult) => {
|
|
267
|
-
resolve = resolveResult
|
|
268
|
-
reject = rejectResult
|
|
269
|
-
})
|
|
270
|
-
const controller = new AbortController()
|
|
271
|
-
const inheritedCleanup = oauthCleanupBarrier.wait()
|
|
272
|
-
let owner!: PendingAuthentication
|
|
273
|
-
const producer = inheritedCleanup.then(() => performAuthentication(owner, serverUrl, definition))
|
|
274
|
-
owner = { serverName, controller, result, producer, resolve, reject }
|
|
275
|
-
pendingAuthentications.set(serverName, owner)
|
|
276
|
-
const removeOwner = (): void => {
|
|
277
|
-
if (pendingAuthentications.get(serverName) === owner) pendingAuthentications.delete(serverName)
|
|
278
|
-
}
|
|
279
|
-
void result.then(removeOwner, removeOwner)
|
|
280
|
-
void producer.then(resolve, (error: unknown) => reject(asError(error)))
|
|
281
|
-
return result
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Retire every OAuth single-flight owner before a replacement session can start.
|
|
286
|
-
* Caller-visible promises reject immediately; non-abortable SDK work remains observed
|
|
287
|
-
* and is fenced from later credential/transport ownership by its aborted provider.
|
|
288
|
-
*/
|
|
289
|
-
export function resetOAuthLifecycle(reason = "session_reset"): Promise<void> {
|
|
290
|
-
const owners = Array.from(pendingAuthentications.values())
|
|
291
|
-
pendingAuthentications.clear()
|
|
292
|
-
const lifecycleError = new OAuthSessionResetError(undefined, reason)
|
|
293
|
-
for (const owner of owners) {
|
|
294
|
-
const ownerError = new OAuthSessionResetError(owner.serverName, reason)
|
|
295
|
-
owner.controller.abort(ownerError)
|
|
296
|
-
owner.reject(ownerError)
|
|
297
|
-
clearOwnedOAuthState(owner.serverName, owner.oauthState)
|
|
298
|
-
}
|
|
299
|
-
cancelAllPendingCallbacks(lifecycleError)
|
|
300
|
-
|
|
301
|
-
const transports = Array.from(new Set(pendingTransports.values()))
|
|
302
|
-
pendingTransports.clear()
|
|
303
|
-
for (const pending of transports) clearOwnedOAuthState(pending.serverName, pending.oauthState)
|
|
304
|
-
|
|
305
|
-
const callbackCleanup = stopCallbackServer(lifecycleError)
|
|
306
|
-
return oauthCleanupBarrier.retain([
|
|
307
|
-
callbackCleanup,
|
|
308
|
-
...owners.map((owner) => owner.producer),
|
|
309
|
-
...transports.map((pending) => closeTransport(pending.transport)),
|
|
310
|
-
])
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/** Get a valid access token, refreshing it when the stored token is expired. */
|
|
314
|
-
export async function getValidToken(
|
|
315
|
-
serverName: string,
|
|
316
|
-
serverUrl: string,
|
|
317
|
-
): Promise<StoredTokens | null> {
|
|
318
|
-
const entry = getAuthForUrl(serverName, serverUrl)
|
|
319
|
-
if (!entry?.tokens) return null
|
|
320
|
-
const expired = isTokenExpired(serverName)
|
|
321
|
-
if (expired === false) return entry.tokens
|
|
322
|
-
|
|
323
|
-
if (expired === true && entry.tokens.refreshToken) {
|
|
324
|
-
console.log(`MCP Auth: Token expired for ${serverName}, attempting refresh`)
|
|
325
|
-
try {
|
|
326
|
-
const authProvider = new McpOAuthProvider(serverName, serverUrl, {}, {
|
|
327
|
-
onRedirect: async () => {},
|
|
328
|
-
})
|
|
329
|
-
const clientInfo = await authProvider.clientInformation()
|
|
330
|
-
if (!clientInfo) {
|
|
331
|
-
console.log(`MCP Auth: No client info for refresh for ${serverName}`)
|
|
332
|
-
return null
|
|
333
|
-
}
|
|
334
|
-
const result = await runSdkAuth(authProvider, { serverUrl })
|
|
335
|
-
if (result !== "AUTHORIZED") return null
|
|
336
|
-
return getAuthForUrl(serverName, serverUrl)?.tokens ?? null
|
|
337
|
-
} catch (error) {
|
|
338
|
-
console.error(`MCP Auth: Token refresh failed for ${serverName}`, { error })
|
|
339
|
-
return null
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
return entry.tokens
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
export async function getAuthStatus(serverName: string): Promise<AuthStatus> {
|
|
346
|
-
if (!hasStoredTokens(serverName)) return "not_authenticated"
|
|
347
|
-
return isTokenExpired(serverName) ? "expired" : "authenticated"
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
export async function removeAuth(serverName: string): Promise<void> {
|
|
351
|
-
const oauthState = getOAuthState(serverName)
|
|
352
|
-
if (oauthState) cancelPendingCallback(oauthState)
|
|
353
|
-
const pending = pendingTransports.get(serverName)
|
|
354
|
-
if (pending) await retireTransport(serverName, pending)
|
|
355
|
-
clearAllCredentials(serverName)
|
|
356
|
-
clearOAuthState(serverName)
|
|
357
|
-
console.log(`MCP Auth: Removed credentials for ${serverName}`)
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
export function supportsOAuth(definition: ServerEntry): boolean {
|
|
361
|
-
if (!definition.url || definition.auth === false || definition.oauth === false) return false
|
|
362
|
-
return definition.auth === "oauth" || definition.auth === undefined
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
export async function initializeOAuth(): Promise<void> {
|
|
366
|
-
await ensureCallbackServer()
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/** Reset all OAuth ownership and stop callback acceptance for session teardown. */
|
|
370
|
-
export function shutdownOAuth(reason = "session_shutdown"): Promise<void> {
|
|
371
|
-
return resetOAuthLifecycle(reason)
|
|
372
|
-
}
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Auth Storage Module
|
|
3
|
-
*
|
|
4
|
-
* Handles secure storage of OAuth credentials, tokens, client information,
|
|
5
|
-
* and PKCE state for MCP servers. Maintains backward compatibility with
|
|
6
|
-
* per-server directory structure.
|
|
7
|
-
*
|
|
8
|
-
* Token storage location: $MCP_OAUTH_DIR/<server>/tokens.json when set,
|
|
9
|
-
* otherwise <Pi agent dir>/mcp-oauth/<server>/tokens.json
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { mkdirSync, readFileSync, writeFileSync, existsSync, rmSync } from 'fs';
|
|
13
|
-
import { join } from 'path';
|
|
14
|
-
import { getAgentPath } from './agent-dir.ts';
|
|
15
|
-
|
|
16
|
-
/** OAuth token storage format */
|
|
17
|
-
export interface StoredTokens {
|
|
18
|
-
accessToken: string;
|
|
19
|
-
refreshToken?: string;
|
|
20
|
-
expiresAt?: number; // Unix timestamp in seconds
|
|
21
|
-
scope?: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** OAuth client information from dynamic or static registration */
|
|
25
|
-
export interface StoredClientInfo {
|
|
26
|
-
clientId: string;
|
|
27
|
-
clientSecret?: string;
|
|
28
|
-
clientIdIssuedAt?: number;
|
|
29
|
-
clientSecretExpiresAt?: number;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Complete auth entry for a server */
|
|
33
|
-
export interface AuthEntry {
|
|
34
|
-
tokens?: StoredTokens;
|
|
35
|
-
clientInfo?: StoredClientInfo;
|
|
36
|
-
codeVerifier?: string;
|
|
37
|
-
oauthState?: string;
|
|
38
|
-
serverUrl?: string; // Track the URL these credentials are for
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Base directory for auth storage - can be overridden via env var for testing
|
|
42
|
-
function getAuthBaseDir(): string {
|
|
43
|
-
const override = process.env.MCP_OAUTH_DIR?.trim();
|
|
44
|
-
return override ? override : getAgentPath('mcp-oauth');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Get the server-specific directory path.
|
|
49
|
-
*/
|
|
50
|
-
function getServerDir(serverName: string): string {
|
|
51
|
-
return join(getAuthBaseDir(), serverName);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Get the tokens file path for a server.
|
|
56
|
-
*/
|
|
57
|
-
function getTokensFilePath(serverName: string): string {
|
|
58
|
-
return join(getServerDir(serverName), 'tokens.json');
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Ensure the server directory exists with secure permissions.
|
|
63
|
-
*/
|
|
64
|
-
function ensureServerDir(serverName: string): void {
|
|
65
|
-
const dir = getServerDir(serverName);
|
|
66
|
-
if (!existsSync(dir)) {
|
|
67
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Read the auth entry for a server from disk.
|
|
73
|
-
* Returns undefined if file doesn't exist.
|
|
74
|
-
*/
|
|
75
|
-
function readAuthEntry(serverName: string): AuthEntry | undefined {
|
|
76
|
-
try {
|
|
77
|
-
const filePath = getTokensFilePath(serverName);
|
|
78
|
-
if (!existsSync(filePath)) {
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
const data = readFileSync(filePath, 'utf-8');
|
|
82
|
-
return JSON.parse(data) as AuthEntry;
|
|
83
|
-
} catch (error) {
|
|
84
|
-
console.error(`Failed to read auth entry for ${serverName}:`, error);
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Write the auth entry for a server to disk with secure permissions.
|
|
91
|
-
*/
|
|
92
|
-
function writeAuthEntry(serverName: string, entry: AuthEntry): void {
|
|
93
|
-
ensureServerDir(serverName);
|
|
94
|
-
const filePath = getTokensFilePath(serverName);
|
|
95
|
-
writeFileSync(filePath, JSON.stringify(entry, null, 2), { mode: 0o600 });
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Get auth entry for a server.
|
|
100
|
-
*/
|
|
101
|
-
export function getAuthEntry(serverName: string): AuthEntry | undefined {
|
|
102
|
-
return readAuthEntry(serverName);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Get auth entry and validate it's for the correct URL.
|
|
107
|
-
* Returns undefined if URL has changed (credentials are invalid).
|
|
108
|
-
*/
|
|
109
|
-
export function getAuthForUrl(serverName: string, serverUrl: string): AuthEntry | undefined {
|
|
110
|
-
const entry = getAuthEntry(serverName);
|
|
111
|
-
if (!entry) return undefined;
|
|
112
|
-
|
|
113
|
-
// If no serverUrl is stored, this is from an old version - consider it invalid
|
|
114
|
-
if (!entry.serverUrl) return undefined;
|
|
115
|
-
|
|
116
|
-
// If URL has changed, credentials are invalid
|
|
117
|
-
if (entry.serverUrl !== serverUrl) return undefined;
|
|
118
|
-
|
|
119
|
-
return entry;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Save auth entry for a server.
|
|
124
|
-
*/
|
|
125
|
-
export function saveAuthEntry(serverName: string, entry: AuthEntry, serverUrl?: string): void {
|
|
126
|
-
// Always update serverUrl if provided
|
|
127
|
-
if (serverUrl) {
|
|
128
|
-
entry.serverUrl = serverUrl;
|
|
129
|
-
}
|
|
130
|
-
writeAuthEntry(serverName, entry);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Remove auth entry for a server.
|
|
135
|
-
* Also removes the server directory if empty.
|
|
136
|
-
*/
|
|
137
|
-
export function removeAuthEntry(serverName: string): void {
|
|
138
|
-
try {
|
|
139
|
-
const filePath = getTokensFilePath(serverName);
|
|
140
|
-
if (existsSync(filePath)) {
|
|
141
|
-
writeFileSync(filePath, '{}', { mode: 0o600 });
|
|
142
|
-
}
|
|
143
|
-
// Try to remove the directory
|
|
144
|
-
const dir = getServerDir(serverName);
|
|
145
|
-
if (existsSync(dir)) {
|
|
146
|
-
try {
|
|
147
|
-
rmSync(dir, { recursive: true });
|
|
148
|
-
} catch {
|
|
149
|
-
// Directory may not be empty, ignore
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
} catch (error) {
|
|
153
|
-
console.error(`Failed to remove auth entry for ${serverName}:`, error);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Update tokens for a server.
|
|
159
|
-
*/
|
|
160
|
-
export function updateTokens(
|
|
161
|
-
serverName: string,
|
|
162
|
-
tokens: StoredTokens,
|
|
163
|
-
serverUrl?: string
|
|
164
|
-
): void {
|
|
165
|
-
const entry = getAuthEntry(serverName) ?? {};
|
|
166
|
-
if (serverUrl && entry.serverUrl !== serverUrl) {
|
|
167
|
-
delete entry.clientInfo;
|
|
168
|
-
delete entry.codeVerifier;
|
|
169
|
-
delete entry.oauthState;
|
|
170
|
-
}
|
|
171
|
-
entry.tokens = tokens;
|
|
172
|
-
saveAuthEntry(serverName, entry, serverUrl);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Update client info for a server.
|
|
177
|
-
*/
|
|
178
|
-
export function updateClientInfo(
|
|
179
|
-
serverName: string,
|
|
180
|
-
clientInfo: StoredClientInfo,
|
|
181
|
-
serverUrl?: string
|
|
182
|
-
): void {
|
|
183
|
-
const entry = getAuthEntry(serverName) ?? {};
|
|
184
|
-
if (serverUrl && entry.serverUrl !== serverUrl) {
|
|
185
|
-
delete entry.tokens;
|
|
186
|
-
delete entry.codeVerifier;
|
|
187
|
-
delete entry.oauthState;
|
|
188
|
-
}
|
|
189
|
-
entry.clientInfo = clientInfo;
|
|
190
|
-
saveAuthEntry(serverName, entry, serverUrl);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Update code verifier for a server.
|
|
195
|
-
*/
|
|
196
|
-
export function updateCodeVerifier(serverName: string, codeVerifier: string, serverUrl?: string): void {
|
|
197
|
-
const entry = getAuthEntry(serverName) ?? {};
|
|
198
|
-
if (serverUrl && entry.serverUrl !== serverUrl) {
|
|
199
|
-
delete entry.tokens;
|
|
200
|
-
delete entry.clientInfo;
|
|
201
|
-
delete entry.oauthState;
|
|
202
|
-
}
|
|
203
|
-
entry.codeVerifier = codeVerifier;
|
|
204
|
-
saveAuthEntry(serverName, entry, serverUrl);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Clear code verifier for a server.
|
|
209
|
-
*/
|
|
210
|
-
export function clearCodeVerifier(serverName: string): void {
|
|
211
|
-
const entry = getAuthEntry(serverName);
|
|
212
|
-
if (entry) {
|
|
213
|
-
delete entry.codeVerifier;
|
|
214
|
-
saveAuthEntry(serverName, entry);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Update OAuth state for a server.
|
|
220
|
-
*/
|
|
221
|
-
export function updateOAuthState(serverName: string, state: string, serverUrl?: string): void {
|
|
222
|
-
const entry = getAuthEntry(serverName) ?? {};
|
|
223
|
-
if (serverUrl && entry.serverUrl !== serverUrl) {
|
|
224
|
-
delete entry.tokens;
|
|
225
|
-
delete entry.clientInfo;
|
|
226
|
-
delete entry.codeVerifier;
|
|
227
|
-
}
|
|
228
|
-
entry.oauthState = state;
|
|
229
|
-
saveAuthEntry(serverName, entry, serverUrl);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Get OAuth state for a server.
|
|
234
|
-
*/
|
|
235
|
-
export function getOAuthState(serverName: string): string | undefined {
|
|
236
|
-
const entry = getAuthEntry(serverName);
|
|
237
|
-
return entry?.oauthState;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Clear OAuth state for a server.
|
|
242
|
-
*/
|
|
243
|
-
export function clearOAuthState(serverName: string): void {
|
|
244
|
-
const entry = getAuthEntry(serverName);
|
|
245
|
-
if (entry) {
|
|
246
|
-
delete entry.oauthState;
|
|
247
|
-
saveAuthEntry(serverName, entry);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Check if stored tokens are expired.
|
|
253
|
-
* Returns null if no tokens exist, false if no expiry or not expired, true if expired.
|
|
254
|
-
*/
|
|
255
|
-
export function isTokenExpired(serverName: string): boolean | null {
|
|
256
|
-
const entry = getAuthEntry(serverName);
|
|
257
|
-
if (!entry?.tokens) return null;
|
|
258
|
-
if (!entry.tokens.expiresAt) return false;
|
|
259
|
-
return entry.tokens.expiresAt < Date.now() / 1000;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Check if a server has stored tokens.
|
|
264
|
-
*/
|
|
265
|
-
export function hasStoredTokens(serverName: string): boolean {
|
|
266
|
-
const entry = getAuthEntry(serverName);
|
|
267
|
-
return !!entry?.tokens;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Clear all credentials for a server.
|
|
272
|
-
*/
|
|
273
|
-
export function clearAllCredentials(serverName: string): void {
|
|
274
|
-
removeAuthEntry(serverName);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Clear only client info for a server.
|
|
279
|
-
*/
|
|
280
|
-
export function clearClientInfo(serverName: string): void {
|
|
281
|
-
const entry = getAuthEntry(serverName);
|
|
282
|
-
if (entry) {
|
|
283
|
-
delete entry.clientInfo;
|
|
284
|
-
saveAuthEntry(serverName, entry);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Clear only tokens for a server.
|
|
290
|
-
*/
|
|
291
|
-
export function clearTokens(serverName: string): void {
|
|
292
|
-
const entry = getAuthEntry(serverName);
|
|
293
|
-
if (entry) {
|
|
294
|
-
delete entry.tokens;
|
|
295
|
-
saveAuthEntry(serverName, entry);
|
|
296
|
-
}
|
|
297
|
-
}
|