@bastani/atomic 0.9.9 → 0.9.10-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/README.md +2 -0
- package/dist/builtin/cursor/CHANGELOG.md +6 -0
- package/dist/builtin/cursor/package.json +3 -3
- package/dist/builtin/intercom/CHANGELOG.md +15 -0
- package/dist/builtin/intercom/README.md +12 -4
- package/dist/builtin/intercom/broker/broker.ts +96 -14
- package/dist/builtin/intercom/broker/client-message-validation.ts +39 -0
- package/dist/builtin/intercom/broker/client.ts +101 -92
- package/dist/builtin/intercom/broker/group-isolation.ts +28 -0
- package/dist/builtin/intercom/broker/send-handler.ts +62 -10
- package/dist/builtin/intercom/broker/send-signature.ts +3 -0
- package/dist/builtin/intercom/broker/supervisor-channel.ts +126 -0
- package/dist/builtin/intercom/closed-workflow-stage-message.ts +66 -0
- package/dist/builtin/intercom/config.ts +10 -0
- package/dist/builtin/intercom/contact-supervisor-tool.ts +14 -10
- package/dist/builtin/intercom/foreground-detach-handoff.ts +12 -2
- package/dist/builtin/intercom/group.ts +46 -0
- package/dist/builtin/intercom/inbound-message-admission.ts +79 -0
- package/dist/builtin/intercom/incoming-message-delivery.ts +49 -0
- package/dist/builtin/intercom/index-heavy.ts +148 -94
- package/dist/builtin/intercom/index.ts +66 -4
- package/dist/builtin/intercom/intercom-test-seams.ts +6 -0
- package/dist/builtin/intercom/intercom-tool.ts +71 -20
- package/dist/builtin/intercom/intercom-utils.ts +15 -2
- package/dist/builtin/intercom/late-stage-message-router.ts +148 -0
- package/dist/builtin/intercom/lifecycle.ts +10 -4
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/reconnect-backoff.ts +6 -0
- package/dist/builtin/intercom/reply-tracker.ts +8 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +2 -0
- package/dist/builtin/intercom/stable-delivery-retry.ts +32 -0
- package/dist/builtin/intercom/subagent-relay.ts +67 -14
- package/dist/builtin/intercom/supervisor-authorization-registry.ts +22 -0
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +144 -25
- package/dist/builtin/intercom/types.ts +18 -5
- package/dist/builtin/intercom/workflow-reply-tracker.ts +19 -0
- package/dist/builtin/intercom/workflow-stage-admission.ts +43 -0
- package/dist/builtin/intercom/workflow-stage-delivery-failure.ts +77 -0
- package/dist/builtin/mcp/CHANGELOG.md +11 -0
- package/dist/builtin/mcp/README.md +6 -2
- package/dist/builtin/mcp/config.ts +8 -8
- package/dist/builtin/mcp/direct-tool-executor.ts +7 -6
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/mcp/proxy-call.ts +5 -4
- package/dist/builtin/mcp/sampling-handler.ts +7 -2
- package/dist/builtin/mcp/tool-call-timeout.ts +101 -0
- package/dist/builtin/mcp/tool-result-renderer.ts +3 -2
- package/dist/builtin/mcp/types.ts +5 -0
- package/dist/builtin/mcp/ui-server.ts +3 -2
- package/dist/builtin/subagents/CHANGELOG.md +21 -0
- package/dist/builtin/subagents/README.md +6 -3
- package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
- package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
- package/dist/builtin/subagents/agents/debugger.md +1 -1
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/skills/subagent/SKILL.md +1 -1
- package/dist/builtin/subagents/src/extension/index.ts +37 -61
- package/dist/builtin/subagents/src/extension/notification-content.ts +80 -0
- package/dist/builtin/subagents/src/extension/schemas.ts +9 -0
- package/dist/builtin/subagents/src/extension/tool-description.ts +1 -0
- package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +23 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +4 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -0
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +75 -13
- package/dist/builtin/subagents/src/runs/background/async-status.ts +19 -0
- package/dist/builtin/subagents/src/runs/background/completion-notification.ts +4 -3
- package/dist/builtin/subagents/src/runs/background/notify.ts +76 -15
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +13 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +1 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +1 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +2 -1
- package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +4 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +13 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +19 -2
- package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +26 -0
- package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +19 -30
- package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +47 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +60 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +21 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +21 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +6 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +50 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +16 -0
- package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +75 -0
- package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +51 -0
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +69 -77
- package/dist/builtin/subagents/src/shared/types-config.ts +6 -0
- package/dist/builtin/subagents/src/slash/slash-commands.ts +3 -2
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +5 -3
- package/dist/builtin/subagents/src/tui/render-result.ts +5 -3
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +7 -4
- package/dist/builtin/web-access/CHANGELOG.md +11 -0
- package/dist/builtin/web-access/extract-frames.ts +14 -13
- package/dist/builtin/web-access/extract.ts +2 -2
- package/dist/builtin/web-access/gemini-api.ts +0 -3
- package/dist/builtin/web-access/gemini-web-config.ts +1 -3
- package/dist/builtin/web-access/gemini-web.ts +1 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/web-access/perplexity.ts +0 -3
- package/dist/builtin/web-access/result-renderers.ts +7 -5
- package/dist/builtin/web-access/subprocess.ts +100 -0
- package/dist/builtin/web-access/summary-review.ts +14 -3
- package/dist/builtin/web-access/video-extract.ts +12 -17
- package/dist/builtin/web-access/web-search-browser.ts +18 -10
- package/dist/builtin/web-access/web-search-summary.ts +9 -2
- package/dist/builtin/web-access/youtube-extract.ts +22 -25
- package/dist/builtin/workflows/CHANGELOG.md +77 -0
- package/dist/builtin/workflows/README.md +76 -38
- package/dist/builtin/workflows/ambient.d.ts +30 -0
- package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +15 -0
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +93 -0
- package/dist/builtin/workflows/builtin/adversarial-verification.d.ts +11 -0
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +24 -0
- package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +11 -0
- package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +110 -0
- package/dist/builtin/workflows/builtin/classify-and-act.d.ts +24 -0
- package/dist/builtin/workflows/builtin/classify-and-act.ts +35 -0
- package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +8 -2
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +11 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +96 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.d.ts +23 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +32 -0
- package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +15 -0
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +75 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.d.ts +11 -0
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +26 -0
- package/dist/builtin/workflows/builtin/goal-models.ts +72 -0
- package/dist/builtin/workflows/builtin/goal-runner.ts +2 -64
- package/dist/builtin/workflows/builtin/index.d.ts +44 -0
- package/dist/builtin/workflows/builtin/index.ts +6 -0
- package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +79 -0
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +189 -0
- package/dist/builtin/workflows/builtin/loop-until-done.d.ts +34 -0
- package/dist/builtin/workflows/builtin/loop-until-done.ts +31 -0
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +6 -1
- package/dist/builtin/workflows/builtin/pattern-artifact-root.ts +28 -0
- package/dist/builtin/workflows/builtin/ralph-models.ts +26 -5
- package/dist/builtin/workflows/builtin/ralph-runner.ts +1 -0
- package/dist/builtin/workflows/builtin/tournament-prompts.ts +79 -0
- package/dist/builtin/workflows/builtin/tournament-runner.ts +188 -0
- package/dist/builtin/workflows/builtin/tournament.d.ts +33 -0
- package/dist/builtin/workflows/builtin/tournament.ts +34 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/authoring.d.ts +2 -6
- package/dist/builtin/workflows/src/durable/backend.ts +163 -120
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +37 -64
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +4 -72
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +242 -195
- package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +207 -0
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +42 -42
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +155 -0
- package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +126 -0
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +105 -58
- package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +320 -0
- package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +161 -0
- package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +62 -0
- package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +2 -2
- package/dist/builtin/workflows/src/durable/durable-hash.ts +20 -0
- package/dist/builtin/workflows/src/durable/factory.ts +23 -83
- package/dist/builtin/workflows/src/durable/format-version.ts +4 -10
- package/dist/builtin/workflows/src/durable/index.ts +16 -20
- package/dist/builtin/workflows/src/durable/local-command.ts +63 -0
- package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +177 -0
- package/dist/builtin/workflows/src/durable/prompt-reservations.ts +36 -0
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +2 -200
- package/dist/builtin/workflows/src/durable/resume-eligibility.ts +42 -2
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +121 -118
- package/dist/builtin/workflows/src/durable/retention-policy.ts +42 -0
- package/dist/builtin/workflows/src/durable/run-timing.ts +98 -0
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +62 -14
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +15 -2
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +11 -7
- package/dist/builtin/workflows/src/durable/types.ts +25 -18
- package/dist/builtin/workflows/src/durable/ui-primitive.ts +117 -29
- package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +30 -0
- package/dist/builtin/workflows/src/engine/primitives/parallel.ts +20 -5
- package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -2
- package/dist/builtin/workflows/src/engine/primitives/ui.ts +6 -3
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +14 -22
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +14 -14
- package/dist/builtin/workflows/src/engine/run.ts +35 -37
- package/dist/builtin/workflows/src/engine/runtime.ts +3 -0
- package/dist/builtin/workflows/src/engine/workflow-activity.ts +9 -0
- package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +155 -0
- package/dist/builtin/workflows/src/extension/config-file-loader.ts +13 -0
- package/dist/builtin/workflows/src/extension/config-loader.ts +20 -0
- package/dist/builtin/workflows/src/extension/dispatcher.ts +56 -17
- package/dist/builtin/workflows/src/extension/extension-factory.ts +13 -10
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +37 -59
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +16 -18
- package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +83 -0
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +80 -41
- package/dist/builtin/workflows/src/extension/postmortem-deps.ts +73 -0
- package/dist/builtin/workflows/src/extension/public-types.ts +11 -51
- package/dist/builtin/workflows/src/extension/render-call.ts +3 -9
- package/dist/builtin/workflows/src/extension/render-result.ts +22 -7
- package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +78 -0
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +50 -29
- package/dist/builtin/workflows/src/extension/runtime.ts +70 -219
- package/dist/builtin/workflows/src/extension/ui-surface.ts +107 -3
- package/dist/builtin/workflows/src/extension/wiring.ts +76 -7
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +10 -5
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +27 -5
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +49 -19
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +8 -8
- package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +81 -0
- package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +55 -0
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +193 -145
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +9 -133
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +189 -0
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +78 -3
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +185 -89
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +92 -11
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +18 -24
- package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +63 -0
- package/dist/builtin/workflows/src/runs/background/quit.ts +139 -29
- package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +97 -0
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +111 -0
- package/dist/builtin/workflows/src/runs/background/runner.ts +46 -17
- package/dist/builtin/workflows/src/runs/background/startup-admission.ts +77 -0
- package/dist/builtin/workflows/src/runs/background/status.ts +133 -224
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +44 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +57 -256
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +7 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +12 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +39 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +75 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +44 -12
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +63 -12
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +30 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +3 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +0 -67
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +6 -0
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +0 -1
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +169 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +38 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +21 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +21 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +85 -84
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +195 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +12 -5
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +42 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +100 -8
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +51 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +19 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +28 -2
- package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +4 -6
- package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +89 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +29 -133
- package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +130 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-root.ts +84 -0
- package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +77 -63
- package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +4 -0
- package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +29 -22
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +26 -24
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
- package/dist/builtin/workflows/src/shared/intercom-group.ts +51 -0
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +6 -0
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +4 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +3 -0
- package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +13 -0
- package/dist/builtin/workflows/src/shared/returned-run-status.ts +2 -1
- package/dist/builtin/workflows/src/shared/session-transcript.ts +74 -0
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +1 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +8 -0
- package/dist/builtin/workflows/src/shared/timing.ts +4 -1
- package/dist/builtin/workflows/src/shared/types.ts +2 -6
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +2 -42
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +2 -2
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +7 -3
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +29 -67
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +15 -10
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +0 -2
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -9
- package/dist/builtin/workflows/src/tui/host-input-form.ts +62 -0
- package/dist/builtin/workflows/src/tui/mouse-input.ts +63 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +1 -0
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +67 -42
- package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +49 -0
- package/dist/builtin/workflows/src/tui/session-overlays.ts +3 -104
- package/dist/builtin/workflows/src/tui/session-picker.ts +3 -12
- package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +19 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +30 -10
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +19 -9
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +25 -38
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +1 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +7 -6
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +7 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +3 -1
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +19 -20
- package/dist/builtin/workflows/src/tui/switcher.ts +4 -4
- package/dist/builtin/workflows/src/tui/widget.ts +46 -33
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +26 -0
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +14 -2
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +26 -27
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +208 -69
- package/dist/bun/cli.js +3 -0
- package/dist/bun/cli.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +3 -0
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +19 -2
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +2 -2
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +5 -3
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.js +1 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +2 -4
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -2
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +6 -0
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +107 -36
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +18 -7
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts +3 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +1 -1
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts +16 -0
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -0
- package/dist/core/agent-session-post-tool-compaction.js +113 -0
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -0
- package/dist/core/agent-session-prompt.d.ts +12 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +22 -5
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +21 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +2 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +7 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +6 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +18 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/async/job-manager.d.ts +1 -0
- package/dist/core/async/job-manager.d.ts.map +1 -1
- package/dist/core/async/job-manager.js +29 -5
- package/dist/core/async/job-manager.js.map +1 -1
- package/dist/core/async/session-manager.d.ts +2 -4
- package/dist/core/async/session-manager.d.ts.map +1 -1
- package/dist/core/async/session-manager.js +5 -32
- package/dist/core/async/session-manager.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +2 -0
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.d.ts +20 -10
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +151 -92
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/callback-activity.d.ts +27 -0
- package/dist/core/callback-activity.d.ts.map +1 -0
- package/dist/core/callback-activity.js +44 -0
- package/dist/core/callback-activity.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +4 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +4 -3
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +10 -23
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +4 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +1 -1
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +3 -2
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +6 -6
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +12 -9
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts +1 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +1 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +101 -0
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -0
- package/dist/core/compaction/range-planner-diagnostics.js +116 -0
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -0
- package/dist/core/compaction/range-planner.d.ts +13 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +117 -68
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/truncated-range-recovery.d.ts +47 -0
- package/dist/core/compaction/truncated-range-recovery.d.ts.map +1 -0
- package/dist/core/compaction/truncated-range-recovery.js +112 -0
- package/dist/core/compaction/truncated-range-recovery.js.map +1 -0
- package/dist/core/extensions/api-types.d.ts +2 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +23 -1
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.js +2 -2
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +8 -1
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +9 -6
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +17 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +3 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +11 -10
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +2 -2
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +78 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/model-registry-auth.d.ts +2 -1
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-auth.js +25 -6
- package/dist/core/model-registry-auth.js.map +1 -1
- package/dist/core/model-registry-builtins.d.ts +3 -2
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js +12 -6
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-dynamic.d.ts +1 -0
- package/dist/core/model-registry-dynamic.d.ts.map +1 -1
- package/dist/core/model-registry-dynamic.js +53 -13
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-loader.d.ts +2 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-loader.js +2 -2
- package/dist/core/model-registry-loader.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +10 -3
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry-types.js.map +1 -1
- package/dist/core/model-registry.d.ts +15 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +214 -30
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/models-store.d.ts +25 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +73 -0
- package/dist/core/models-store.js.map +1 -0
- package/dist/core/oauth-compat.d.ts +17 -0
- package/dist/core/oauth-compat.d.ts.map +1 -0
- package/dist/core/oauth-compat.js +2 -0
- package/dist/core/oauth-compat.js.map +1 -0
- package/dist/core/oauth-provider-bridge.d.ts +40 -0
- package/dist/core/oauth-provider-bridge.d.ts.map +1 -0
- package/dist/core/oauth-provider-bridge.js +169 -0
- package/dist/core/oauth-provider-bridge.js.map +1 -0
- package/dist/core/output-guard.d.ts +2 -0
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +14 -0
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +138 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +8 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +1 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +1 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-history.d.ts +2 -2
- package/dist/core/session-manager-history.js +2 -2
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +65 -23
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +3 -2
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +9 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +2 -3
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/find.js +2 -2
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.js +2 -2
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.js +2 -2
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/todos-render.d.ts.map +1 -1
- package/dist/core/tools/todos-render.js +3 -2
- package/dist/core/tools/todos-render.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +3 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.js +2 -2
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +29 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -0
- package/dist/core/workflow-stage-admission.js +81 -0
- package/dist/core/workflow-stage-admission.js.map +1 -0
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/main-types.d.ts +13 -0
- package/dist/main-types.d.ts.map +1 -0
- package/dist/main-types.js +2 -0
- package/dist/main-types.js.map +1 -0
- package/dist/main.d.ts +2 -5
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +25 -17
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +17 -12
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts +7 -0
- package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.js +20 -0
- package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +5 -3
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +3 -4
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +4 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +4 -0
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +79 -8
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +4 -2
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +1 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +4 -1
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +3 -4
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form-mount.d.ts +14 -0
- package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-input-form-mount.js +79 -0
- package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -0
- package/dist/modes/interactive/components/host-input-form.d.ts +52 -0
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-input-form.js +278 -0
- package/dist/modes/interactive/components/host-input-form.js.map +1 -0
- package/dist/modes/interactive/components/host-session-picker.d.ts +46 -0
- package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -0
- package/dist/modes/interactive/components/host-session-picker.js +183 -0
- package/dist/modes/interactive/components/host-session-picker.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +2 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +12 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +3 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +8 -2
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +7 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +57 -10
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +15 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +35 -3
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +9 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +24 -10
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +7 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +3 -3
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +49 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +2 -0
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +14 -0
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts +13 -0
- package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-global-clear.js +11 -0
- package/dist/modes/interactive/interactive-global-clear.js.map +1 -0
- package/dist/modes/interactive/interactive-input-handling.js +17 -10
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +6 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +25 -2
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +4 -3
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +2 -2
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +4 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +14 -1
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -2
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +3 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +7 -4
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-queueing.js +2 -2
- package/dist/modes/interactive/interactive-queueing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +25 -4
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +3 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +5 -2
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +22 -9
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-terminal-title.d.ts +6 -0
- package/dist/modes/interactive/interactive-terminal-title.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-terminal-title.js +7 -0
- package/dist/modes/interactive/interactive-terminal-title.js.map +1 -0
- package/dist/modes/interactive-engine/activity-watchdog.d.ts +45 -0
- package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -0
- package/dist/modes/interactive-engine/activity-watchdog.js +74 -0
- package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts +14 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.js +56 -0
- package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -0
- package/dist/modes/interactive-engine/engine-args.d.ts +10 -0
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-args.js +55 -0
- package/dist/modes/interactive-engine/engine-args.js.map +1 -0
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts +7 -0
- package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-child-liveness.js +50 -0
- package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +47 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js +276 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts +13 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.js +49 -0
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -0
- package/dist/modes/interactive-engine/engine-monitor.d.ts +18 -0
- package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-monitor.js +63 -0
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -0
- package/dist/modes/interactive-engine/engine-render-service.d.ts +17 -0
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-render-service.js +150 -0
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -0
- package/dist/modes/interactive-engine/engine-session-picker.d.ts +22 -0
- package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-session-picker.js +106 -0
- package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +23 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js +126 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -0
- package/dist/modes/interactive-engine/input-form-host.d.ts +15 -0
- package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -0
- package/dist/modes/interactive-engine/input-form-host.js +44 -0
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +75 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.js +448 -0
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -0
- package/dist/modes/interactive-engine/protocol.d.ts +184 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -0
- package/dist/modes/interactive-engine/protocol.js +254 -0
- package/dist/modes/interactive-engine/protocol.js.map +1 -0
- package/dist/modes/interactive-engine/remote-command-catalog.d.ts +33 -0
- package/dist/modes/interactive-engine/remote-command-catalog.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-command-catalog.js +51 -0
- package/dist/modes/interactive-engine/remote-command-catalog.js.map +1 -0
- package/dist/modes/interactive-engine/remote-component.d.ts +16 -0
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-component.js +209 -0
- package/dist/modes/interactive-engine/remote-component.js.map +1 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.d.ts +25 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.js +43 -0
- package/dist/modes/interactive-engine/remote-frame-clamp.js.map +1 -0
- package/dist/modes/interactive-engine/remote-renderer.d.ts +59 -0
- package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-renderer.js +123 -0
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -0
- package/dist/modes/interactive-engine/session-picker-host.d.ts +25 -0
- package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -0
- package/dist/modes/interactive-engine/session-picker-host.js +75 -0
- package/dist/modes/interactive-engine/session-picker-host.js.map +1 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +43 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.js +109 -0
- package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -0
- package/dist/modes/rpc/bounded-writer.d.ts +27 -0
- package/dist/modes/rpc/bounded-writer.d.ts.map +1 -0
- package/dist/modes/rpc/bounded-writer.js +103 -0
- package/dist/modes/rpc/bounded-writer.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +15 -12
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +102 -28
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +83 -0
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-api.js +64 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -0
- package/dist/modes/rpc/rpc-client-process.d.ts +19 -0
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-process.js +79 -0
- package/dist/modes/rpc/rpc-client-process.js.map +1 -0
- package/dist/modes/rpc/rpc-client-waits.d.ts +8 -0
- package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-waits.js +33 -0
- package/dist/modes/rpc/rpc-client-waits.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +48 -124
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +295 -249
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +79 -3
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-event-buffer.d.ts +11 -0
- package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-event-buffer.js +30 -0
- package/dist/modes/rpc/rpc-event-buffer.js.map +1 -0
- package/dist/modes/rpc/rpc-extension-ui.d.ts +7 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +54 -32
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts +16 -0
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-input-scheduler.js +69 -0
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -0
- package/dist/modes/rpc/rpc-input.d.ts +2 -1
- package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input.js +4 -9
- package/dist/modes/rpc/rpc-input.js.map +1 -1
- package/dist/modes/rpc/rpc-keybindings-reload.d.ts +27 -0
- package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-keybindings-reload.js +69 -0
- package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +63 -8
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.d.ts +10 -0
- package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-output-buffer.js +70 -0
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -0
- package/dist/modes/rpc/rpc-session-binding.d.ts +16 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +16 -3
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +109 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli-parser.d.ts +2 -0
- package/dist/package-manager-cli-parser.d.ts.map +1 -1
- package/dist/package-manager-cli-parser.js +24 -5
- package/dist/package-manager-cli-parser.js.map +1 -1
- package/dist/package-manager-cli.d.ts +7 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +65 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +46 -0
- package/dist/utils/shell.js.map +1 -1
- package/docs/changelog.mdx +11 -0
- package/docs/compaction.md +53 -17
- package/docs/custom-provider.md +24 -5
- package/docs/development.md +9 -7
- package/docs/docs.json +1 -0
- package/docs/extensions.md +30 -16
- package/docs/intercom.md +489 -0
- package/docs/json.md +1 -1
- package/docs/keybindings.md +1 -1
- package/docs/packages.md +1 -0
- package/docs/quickstart.md +11 -5
- package/docs/rpc.md +9 -7
- package/docs/sdk.md +6 -0
- package/docs/session-format.md +7 -6
- package/docs/sessions.md +4 -2
- package/docs/settings.md +2 -2
- package/docs/subagents.md +7 -2
- package/docs/tui.md +61 -2
- package/docs/usage.md +6 -5
- package/docs/workflows.md +2572 -1379
- package/examples/extensions/handoff.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/summarize.ts +1 -1
- package/npm-shrinkwrap.json +225 -76
- package/package.json +7 -6
- package/dist/builtin/workflows/src/durable/file-backend.ts +0 -439
- package/dist/builtin/workflows/src/durable/file-lock.ts +0 -153
- package/dist/builtin/workflows/src/durable/file-state.ts +0 -104
- package/dist/builtin/workflows/src/extension/runtime-direct.ts +0 -96
- package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +0 -66
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-output.ts +0 -91
- package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +0 -282
- package/dist/builtin/workflows/src/shared/resumable-workflow-notices.ts +0 -43
- package/dist/builtin/workflows/src/tui/session-confirm.ts +0 -299
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow session picker — a centred overlay listing runs the user can
|
|
3
|
-
* connect to (open the orchestrator pane)
|
|
3
|
+
* connect to (open the orchestrator pane).
|
|
4
4
|
*
|
|
5
5
|
* Visual contract (DESIGN.md §5 Picker Rows + pi-subagents/src/tui/render-helpers.ts):
|
|
6
6
|
* - Rounded `╭─ Title ─╮` chrome in `border` colour with title in `accent`.
|
|
@@ -162,7 +162,6 @@ function renderHintsRow(width: number, theme: GraphTheme, state: SessionPickerSt
|
|
|
162
162
|
: [
|
|
163
163
|
hint(`${keyText("tui.select.up")}/${keyText("tui.select.down")}`, "Navigate"),
|
|
164
164
|
hint(keyText("tui.select.confirm"), "Connect"),
|
|
165
|
-
hint("x", "Kill"),
|
|
166
165
|
hint("a", state.includeAll ? "Active Only" : "All"),
|
|
167
166
|
hint("/", "Filter"),
|
|
168
167
|
hint(keyText("tui.select.cancel"), "Close"),
|
|
@@ -333,13 +332,11 @@ export function renderSessionPicker(opts: SessionPickerRenderOpts): string[] {
|
|
|
333
332
|
export type SessionPickerAction =
|
|
334
333
|
| { kind: "noop" }
|
|
335
334
|
| { kind: "close" }
|
|
336
|
-
| { kind: "connect"; runId: string }
|
|
337
|
-
| { kind: "kill"; runId: string };
|
|
335
|
+
| { kind: "connect"; runId: string };
|
|
338
336
|
|
|
339
337
|
/**
|
|
340
338
|
* Pure key handler — never mutates anything outside `state`. Returns an
|
|
341
|
-
* action describing what the host should do next (mount the GraphView
|
|
342
|
-
* fire the kill confirmation, etc.).
|
|
339
|
+
* action describing what the host should do next (for example, mount the GraphView).
|
|
343
340
|
*
|
|
344
341
|
* Filter-focused mode keeps printable characters routed to `state.query`;
|
|
345
342
|
* Enter exits the filter back to navigation mode.
|
|
@@ -401,12 +398,6 @@ export function handleSessionPickerInput(
|
|
|
401
398
|
if (!row) return { kind: "noop" };
|
|
402
399
|
return { kind: "connect", runId: row.run.id };
|
|
403
400
|
}
|
|
404
|
-
// `x` = kill. Avoids collision with vim's `k` = up.
|
|
405
|
-
if (matchesKey(data, "x") || matchesKey(data, Key.shift("x"))) {
|
|
406
|
-
const row = rows[state.selectedIndex];
|
|
407
|
-
if (!row || row.run.endedAt !== undefined) return { kind: "noop" };
|
|
408
|
-
return { kind: "kill", runId: row.run.id };
|
|
409
|
-
}
|
|
410
401
|
|
|
411
402
|
return { kind: "noop" };
|
|
412
403
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function draftKey(runId: string, stageId: string): string {
|
|
2
|
+
return `${runId}\u0000${stageId}`;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/** Live-only composer drafts retained while a workflow overlay remains mounted. */
|
|
6
|
+
export class StageChatComposerDrafts {
|
|
7
|
+
private readonly drafts = new Map<string, string>();
|
|
8
|
+
|
|
9
|
+
get(runId: string, stageId: string): string | undefined {
|
|
10
|
+
return this.drafts.get(draftKey(runId, stageId));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
capture(runId: string | null, stageId: string | null, draft: string | undefined): void {
|
|
14
|
+
if (runId === null || stageId === null || draft === undefined) return;
|
|
15
|
+
const key = draftKey(runId, stageId);
|
|
16
|
+
if (draft.length > 0) this.drafts.set(key, draft);
|
|
17
|
+
else this.drafts.delete(key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -13,6 +13,21 @@ import {
|
|
|
13
13
|
import type { StageChatViewContext } from "./stage-chat-view-types.js";
|
|
14
14
|
import { hexToAnsi, RESET } from "./color-utils.js";
|
|
15
15
|
|
|
16
|
+
function postMortemUnavailableMessage(reason: StageChatViewContext["postMortemUnavailableReason"]): string | undefined {
|
|
17
|
+
switch (reason) {
|
|
18
|
+
case "no_adapter":
|
|
19
|
+
return "Post-mortem chat is unavailable because no agent session adapter is configured.";
|
|
20
|
+
case "not_terminal":
|
|
21
|
+
return "Post-mortem chat is available only after the stage completes.";
|
|
22
|
+
case "no_session":
|
|
23
|
+
return "No retained agent session is available for this stage.";
|
|
24
|
+
case "invalid_session":
|
|
25
|
+
return "The retained session is missing, unreadable, or invalid. Check that the session file still exists and is readable.";
|
|
26
|
+
case undefined:
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
16
31
|
export function renderReadOnlyArchiveBody(
|
|
17
32
|
ctx: StageChatViewContext,
|
|
18
33
|
width: number,
|
|
@@ -24,28 +39,33 @@ export function renderReadOnlyArchiveBody(
|
|
|
24
39
|
}
|
|
25
40
|
|
|
26
41
|
const t = ctx.theme;
|
|
27
|
-
const
|
|
28
|
-
const transcriptBudget = Math.max(1, budget - calloutRows);
|
|
29
|
-
const lines = ctx.chatHost.renderBody(width, transcriptBudget);
|
|
42
|
+
const unavailableMessage = postMortemUnavailableMessage(ctx.postMortemUnavailableReason);
|
|
30
43
|
const callout: string[] = [];
|
|
31
44
|
callout.push(blankLine(width));
|
|
32
45
|
callout.push(
|
|
33
46
|
...bannerLines(
|
|
34
47
|
ctx,
|
|
35
48
|
width,
|
|
36
|
-
"info",
|
|
37
|
-
"◌",
|
|
38
|
-
"READ-ONLY SESSION",
|
|
39
|
-
|
|
49
|
+
unavailableMessage === undefined ? "info" : "warning",
|
|
50
|
+
unavailableMessage === undefined ? "◌" : "!",
|
|
51
|
+
unavailableMessage === undefined ? "READ-ONLY SESSION" : "SESSION UNAVAILABLE",
|
|
52
|
+
unavailableMessage === undefined
|
|
53
|
+
? stage?.sessionFile ? "archived transcript" : "no live chat session"
|
|
54
|
+
: "post-mortem chat cannot be reopened",
|
|
40
55
|
),
|
|
41
56
|
);
|
|
42
57
|
callout.push(
|
|
43
58
|
...new Text(
|
|
44
|
-
paint(
|
|
59
|
+
paint(
|
|
60
|
+
unavailableMessage ?? "This node is no longer attached to a live chat session.",
|
|
61
|
+
t.textMuted,
|
|
62
|
+
),
|
|
45
63
|
2,
|
|
46
64
|
0,
|
|
47
65
|
).render(width),
|
|
48
66
|
);
|
|
67
|
+
const transcriptBudget = Math.max(0, budget - callout.length);
|
|
68
|
+
const lines = transcriptBudget > 0 ? ctx.chatHost.renderBody(width, transcriptBudget) : [];
|
|
49
69
|
lines.push(...callout);
|
|
50
70
|
while (lines.length < budget) lines.push(blankLine(width));
|
|
51
71
|
if (lines.length > budget) lines.length = budget;
|
|
@@ -156,7 +176,7 @@ export function renderPausedBody(
|
|
|
156
176
|
const callout: string[] = [];
|
|
157
177
|
callout.push(blankLine(width));
|
|
158
178
|
callout.push(
|
|
159
|
-
...bannerLines(ctx, width, "warning", "❚❚", "PAUSED", "enter resumes · ctrl+
|
|
179
|
+
...bannerLines(ctx, width, "warning", "❚❚", "PAUSED", "enter resumes · ctrl+x return to graph"),
|
|
160
180
|
);
|
|
161
181
|
callout.push(
|
|
162
182
|
...new Text(
|
|
@@ -198,7 +218,7 @@ export function renderBlockedBody(
|
|
|
198
218
|
);
|
|
199
219
|
lines.push(
|
|
200
220
|
...new Text(
|
|
201
|
-
paint("ctrl+
|
|
221
|
+
paint("ctrl+x", t.accent, { bold: true }) + paint(" return to graph", t.textMuted),
|
|
202
222
|
2,
|
|
203
223
|
0,
|
|
204
224
|
).render(width),
|
|
@@ -102,11 +102,20 @@ export function embedOrchestratorReturnHintInWidget(
|
|
|
102
102
|
}
|
|
103
103
|
const lines = [...widgetLines];
|
|
104
104
|
const targetIndex = widgetHintTargetLineIndex(lines);
|
|
105
|
+
const targetLine = lines[targetIndex] ?? "";
|
|
106
|
+
const trailingBorder = trailingWidgetBorderChar(targetLine);
|
|
107
|
+
const plainPrefix = stripAnsi(targetLine)
|
|
108
|
+
.slice(0, trailingBorder.length > 0 ? -trailingBorder.length : undefined)
|
|
109
|
+
.trimEnd();
|
|
105
110
|
lines[targetIndex] = mergeOrchestratorReturnHintIntoLine(
|
|
106
111
|
ctx,
|
|
107
|
-
|
|
112
|
+
targetLine,
|
|
108
113
|
width,
|
|
109
|
-
{
|
|
114
|
+
{
|
|
115
|
+
preserveTrailingBorder: true,
|
|
116
|
+
rightMargin: 2,
|
|
117
|
+
minimumPrefixWidth: visibleWidth(plainPrefix) + 1,
|
|
118
|
+
},
|
|
110
119
|
);
|
|
111
120
|
return lines;
|
|
112
121
|
}
|
|
@@ -123,18 +132,18 @@ function mergeOrchestratorReturnHintIntoLine(
|
|
|
123
132
|
): string {
|
|
124
133
|
const copyModeState = ctx.mouseScrollCaptureEnabled ? "off" : "on";
|
|
125
134
|
const fullHint = {
|
|
126
|
-
plain: `ctrl+
|
|
135
|
+
plain: `ctrl+x return to graph · ${STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL} copy mode ${copyModeState}`,
|
|
127
136
|
styled:
|
|
128
|
-
paint("ctrl+
|
|
129
|
-
paint(" graph · ", ctx.theme.textMuted) +
|
|
137
|
+
paint("ctrl+x", ctx.theme.text, { bold: true }) +
|
|
138
|
+
paint(" return to graph · ", ctx.theme.textMuted) +
|
|
130
139
|
paint(STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL, ctx.theme.text, { bold: true }) +
|
|
131
140
|
paint(` copy mode ${copyModeState}`, ctx.theme.textMuted),
|
|
132
141
|
};
|
|
133
142
|
const compactHint = {
|
|
134
|
-
plain: `ctrl+
|
|
143
|
+
plain: `ctrl+x graph · ${STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL} ${copyModeState}`,
|
|
135
144
|
styled:
|
|
136
|
-
paint("ctrl+
|
|
137
|
-
paint(" · ", ctx.theme.textMuted) +
|
|
145
|
+
paint("ctrl+x", ctx.theme.text, { bold: true }) +
|
|
146
|
+
paint(" graph · ", ctx.theme.textMuted) +
|
|
138
147
|
paint(STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL, ctx.theme.text, { bold: true }) +
|
|
139
148
|
paint(` ${copyModeState}`, ctx.theme.textMuted),
|
|
140
149
|
};
|
|
@@ -159,7 +168,8 @@ function mergeOrchestratorReturnHintIntoLine(
|
|
|
159
168
|
Math.max(0, width - suffixWidth - hintWidth),
|
|
160
169
|
);
|
|
161
170
|
const hintStart = Math.max(0, width - suffixWidth - rightMargin - hintWidth);
|
|
162
|
-
const
|
|
171
|
+
const prefixWidth = Math.max(0, hintStart - 1);
|
|
172
|
+
const prefix = truncateToWidth(line, prefixWidth, "", true);
|
|
163
173
|
const gap = Math.max(0, hintStart - visibleWidth(prefix));
|
|
164
174
|
return (
|
|
165
175
|
prefix +
|
|
@@ -4,6 +4,10 @@ import {
|
|
|
4
4
|
isPromptEscapeInput,
|
|
5
5
|
} from "./prompt-card.js";
|
|
6
6
|
import { APP_ACTION, isKeybindingsLike, matchesAction } from "./keybindings-adapter.js";
|
|
7
|
+
import {
|
|
8
|
+
parseTerminalMouseInput,
|
|
9
|
+
terminalMouseWheelDirection,
|
|
10
|
+
} from "./mouse-input.js";
|
|
7
11
|
import {
|
|
8
12
|
setComponentFocused,
|
|
9
13
|
setEditorFocused,
|
|
@@ -30,12 +34,21 @@ export function handleStageChatInput(
|
|
|
30
34
|
ctx: StageChatViewContext,
|
|
31
35
|
data: string,
|
|
32
36
|
): boolean {
|
|
37
|
+
if (matchesKey(data, Key.ctrl("x"))) {
|
|
38
|
+
if (ctx.mountedCustomUi) releaseMountedCustomUi(ctx);
|
|
39
|
+
else {
|
|
40
|
+
const stage = currentStage(ctx);
|
|
41
|
+
syncPromptState(ctx, stage?.pendingPrompt);
|
|
42
|
+
recordCurrentPromptDraft(ctx);
|
|
43
|
+
}
|
|
44
|
+
ctx.onDetach();
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
33
47
|
if (matchesKey(data, Key.ctrl("t"))) {
|
|
34
48
|
ctx.mouseScrollCaptureEnabled = !ctx.mouseScrollCaptureEnabled;
|
|
35
49
|
ctx.requestRender?.();
|
|
36
50
|
return true;
|
|
37
51
|
}
|
|
38
|
-
if (handleToolsExpandInput(ctx, data)) return true;
|
|
39
52
|
if (ctx.mountedCustomUi) {
|
|
40
53
|
return handleMountedCustomUiInput(ctx, data);
|
|
41
54
|
}
|
|
@@ -43,17 +56,13 @@ export function handleStageChatInput(
|
|
|
43
56
|
syncPromptState(ctx, stage?.pendingPrompt);
|
|
44
57
|
const readOnlyArchive = isReadOnlyArchive(ctx, stage);
|
|
45
58
|
const readOnlyPromptArchive = readOnlyArchive && stage?.promptFootprint !== undefined;
|
|
46
|
-
|
|
47
|
-
if (!ctx.promptState && ctx.chatHost.hasInputText()) return ctx.chatHost.handleInput(data);
|
|
48
|
-
recordCurrentPromptDraft(ctx);
|
|
49
|
-
ctx.onDetach();
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
59
|
+
|
|
52
60
|
if (ctx.promptState) {
|
|
53
61
|
if (handlePromptScrollInput(ctx, data, ctx.promptEditor === null)) return true;
|
|
54
62
|
handlePromptInput(ctx, data);
|
|
55
63
|
return true;
|
|
56
64
|
}
|
|
65
|
+
if (handleToolsExpandInput(ctx, data)) return true;
|
|
57
66
|
if (readOnlyPromptArchive && handlePromptScrollInput(ctx, data, true)) {
|
|
58
67
|
return true;
|
|
59
68
|
}
|
|
@@ -108,14 +117,7 @@ function handleMountedCustomUiInput(
|
|
|
108
117
|
ctx.requestRender?.();
|
|
109
118
|
return true;
|
|
110
119
|
}
|
|
111
|
-
|
|
112
|
-
// Detach stops *viewing* the stage; it does not cancel a pending human-input
|
|
113
|
-
// request. Release the local display only — the request stays pending and
|
|
114
|
-
// is re-displayed when the user re-attaches.
|
|
115
|
-
releaseMountedCustomUi(ctx);
|
|
116
|
-
ctx.onDetach();
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
120
|
+
|
|
119
121
|
if (matchesKey(data, Key.ctrl("c"))) {
|
|
120
122
|
// Close hides the overlay; the background run — and its pending human-input
|
|
121
123
|
// request — keep living. Release the local display only.
|
|
@@ -184,12 +186,18 @@ function handlePromptScrollInput(
|
|
|
184
186
|
data: string,
|
|
185
187
|
includeKeyboard = true,
|
|
186
188
|
): boolean {
|
|
187
|
-
const
|
|
189
|
+
const mouse = parseTerminalMouseInput(data);
|
|
190
|
+
const wheelDirection = mouse ? terminalMouseWheelDirection(mouse) : null;
|
|
191
|
+
const wheelDeltaRows = wheelDirection === "up"
|
|
192
|
+
? -PROMPT_SCROLL_STEP_ROWS
|
|
193
|
+
: wheelDirection === "down"
|
|
194
|
+
? PROMPT_SCROLL_STEP_ROWS
|
|
195
|
+
: 0;
|
|
188
196
|
if (wheelDeltaRows !== 0) {
|
|
189
197
|
scrollPromptBy(ctx, wheelDeltaRows);
|
|
190
198
|
return true;
|
|
191
199
|
}
|
|
192
|
-
if (
|
|
200
|
+
if (mouse) return true;
|
|
193
201
|
if (!includeKeyboard) return false;
|
|
194
202
|
if (matchesKey(data, "pageUp")) {
|
|
195
203
|
scrollPromptBy(ctx, -promptPageSize(ctx));
|
|
@@ -219,24 +227,3 @@ function scrollPromptBy(ctx: StageChatViewContext, deltaRows: number): void {
|
|
|
219
227
|
);
|
|
220
228
|
ctx.requestRender?.();
|
|
221
229
|
}
|
|
222
|
-
|
|
223
|
-
function mouseWheelDeltaRows(data: string): number {
|
|
224
|
-
const sgr = data.match(/^\x1b\[<(\d+);\d+;\d+M$/);
|
|
225
|
-
if (sgr) return wheelDeltaForButtonCode(Number.parseInt(sgr[1]!, 10));
|
|
226
|
-
if (data.startsWith("\x1b[M") && data.length >= 6) {
|
|
227
|
-
return wheelDeltaForButtonCode(data.charCodeAt(3) - 32);
|
|
228
|
-
}
|
|
229
|
-
return 0;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
function wheelDeltaForButtonCode(code: number): number {
|
|
233
|
-
if ((code & 64) === 0) return 0;
|
|
234
|
-
const direction = code & 3;
|
|
235
|
-
if (direction === 0) return -PROMPT_SCROLL_STEP_ROWS;
|
|
236
|
-
if (direction === 1) return PROMPT_SCROLL_STEP_ROWS;
|
|
237
|
-
return 0;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function isMouseSequence(data: string): boolean {
|
|
241
|
-
return /^\x1b\[<\d+;\d+;\d+[mM]$/.test(data) || data.startsWith("\x1b[M");
|
|
242
|
-
}
|
|
@@ -146,7 +146,7 @@ export function renderHintsForPrompt(
|
|
|
146
146
|
return `${paint("enter", theme.textMuted, { bold: true })} Submit · ${paint("ctrl+c", theme.textMuted, { bold: true })} Skip`;
|
|
147
147
|
}
|
|
148
148
|
if (kind === "custom") {
|
|
149
|
-
return `${paint("ctrl+
|
|
149
|
+
return `${paint("ctrl+x", theme.textMuted, { bold: true })} Return to graph · ${paint("ctrl+c", theme.textMuted, { bold: true })} Close`;
|
|
150
150
|
}
|
|
151
151
|
return `${paint("enter", theme.textMuted, { bold: true })} Select · ${paint("ctrl+c", theme.textMuted, { bold: true })} Skip`;
|
|
152
152
|
}
|
|
@@ -45,6 +45,7 @@ export function initializeStageChatView(
|
|
|
45
45
|
ctx.stageId = opts.stageId;
|
|
46
46
|
ctx.workflowName = opts.workflowName;
|
|
47
47
|
ctx.handle = opts.handle;
|
|
48
|
+
ctx.postMortemUnavailableReason = opts.postMortemUnavailableReason;
|
|
48
49
|
ctx.onDetach = opts.onDetach;
|
|
49
50
|
ctx.onClose = opts.onClose;
|
|
50
51
|
ctx.requestRender = opts.requestRender;
|
|
@@ -77,6 +78,9 @@ export function initializeStageChatView(
|
|
|
77
78
|
ctx._unregisterStageUiHost = null;
|
|
78
79
|
installFocusHold(ctx);
|
|
79
80
|
ctx.chatHost = createChatHost(ctx, opts);
|
|
81
|
+
if (opts.initialComposerDraft !== undefined) {
|
|
82
|
+
ctx.chatHost.setInputText(opts.initialComposerDraft);
|
|
83
|
+
}
|
|
80
84
|
ctx._unregisterStageUiHost = ctx.stageUiBroker.registerHost(ctx.runId, ctx.stageId, {
|
|
81
85
|
showCustomUi: (request) => {
|
|
82
86
|
void showCustomUi(ctx, request);
|
|
@@ -107,11 +111,8 @@ export function initializeStageChatView(
|
|
|
107
111
|
function installFocusHold(ctx: StageChatViewContext): void {
|
|
108
112
|
if (!ctx.requestFocus) return;
|
|
109
113
|
ctx.focusHoldTimer = setInterval(() => {
|
|
110
|
-
//
|
|
111
|
-
// a
|
|
112
|
-
// answerable even mid-turn, and an idle composer should keep focus. During
|
|
113
|
-
// a pure streaming continuation (no custom UI mounted) we leave focus alone
|
|
114
|
-
// so we never reclaim it out from under the agent's live output.
|
|
114
|
+
// Keep interactive custom UI and idle composer focus without reclaiming it
|
|
115
|
+
// from a streaming continuation.
|
|
115
116
|
if (ctx.mountedCustomUi !== null || !isStreaming(ctx)) ctx.requestFocus?.();
|
|
116
117
|
}, 150);
|
|
117
118
|
}
|
|
@@ -458,7 +459,7 @@ async function handleSlashCommand(ctx: StageChatViewContext, text: string): Prom
|
|
|
458
459
|
if (!handle) return false;
|
|
459
460
|
await handle.ensureAttached();
|
|
460
461
|
if (!handle.agentSession) return false;
|
|
461
|
-
await handle.agentSession.compact();
|
|
462
|
+
try { await handle.agentSession.compact(); } catch { /* compaction_end owns cancellation/failure UI. */ }
|
|
462
463
|
return true;
|
|
463
464
|
}
|
|
464
465
|
case "/quit":
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
} from "@bastani/atomic";
|
|
7
7
|
import type { EditorComponent, EditorTheme, TUI } from "@earendil-works/pi-tui";
|
|
8
8
|
import type { StageControlHandle } from "../runs/foreground/stage-control-registry.js";
|
|
9
|
+
import type { PostMortemUnavailableReason } from "../runs/foreground/postmortem-stage-chat.js";
|
|
9
10
|
import type { Store } from "../shared/store.js";
|
|
10
11
|
import type {
|
|
11
12
|
MountedStageCustomUi,
|
|
@@ -32,12 +33,16 @@ export interface StageChatViewOpts {
|
|
|
32
33
|
stageId: string;
|
|
33
34
|
/** The workflow display name, used in the title chrome `<workflow> / <stage>`. */
|
|
34
35
|
workflowName: string;
|
|
36
|
+
/** Unsent composer draft restored when reattaching to this stage. */
|
|
37
|
+
initialComposerDraft?: string;
|
|
35
38
|
/**
|
|
36
39
|
* Live stage-control handle when available. When absent the chat is
|
|
37
40
|
* inspect-only (settled stage with no live handle).
|
|
38
41
|
*/
|
|
39
42
|
handle?: StageControlHandle;
|
|
40
|
-
/**
|
|
43
|
+
/** Why a retained terminal stage could not be reopened for follow-up chat. */
|
|
44
|
+
postMortemUnavailableReason?: PostMortemUnavailableReason;
|
|
45
|
+
/** Called when the user presses Ctrl+X (back to graph). */
|
|
41
46
|
onDetach: (reason?: StageChatDetachReason, metadata?: StageChatDetachMetadata) => void;
|
|
42
47
|
/** Called when the user presses Escape (close the whole popup). */
|
|
43
48
|
onClose: () => void;
|
|
@@ -127,6 +132,7 @@ export interface StageChatViewContext {
|
|
|
127
132
|
stageId: string;
|
|
128
133
|
workflowName: string;
|
|
129
134
|
handle: StageControlHandle | undefined;
|
|
135
|
+
postMortemUnavailableReason: PostMortemUnavailableReason | undefined;
|
|
130
136
|
onDetach: (reason?: StageChatDetachReason, metadata?: StageChatDetachMetadata) => void;
|
|
131
137
|
onClose: () => void;
|
|
132
138
|
requestRender: (() => void) | undefined;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Idle stage (empty transcript, not streaming, not settled): Enter prompts.
|
|
12
12
|
* - Running live stages: Enter steers, Ctrl+F queues a follow-up, Escape uses
|
|
13
13
|
* the host chat interrupt path.
|
|
14
|
-
* - Paused stages: Enter resumes with composer text; Ctrl+
|
|
14
|
+
* - Paused stages: Enter resumes with composer text; Ctrl+X returns to graph.
|
|
15
15
|
* - Blocked and read-only archive stages absorb mutation keystrokes.
|
|
16
16
|
* - Workflow notices and prompt/custom UI panels keep workflow-specific chrome.
|
|
17
17
|
*
|
|
@@ -74,6 +74,7 @@ export class StageChatView implements Component, Focusable {
|
|
|
74
74
|
private stageId!: StageChatViewContext["stageId"];
|
|
75
75
|
private workflowName!: StageChatViewContext["workflowName"];
|
|
76
76
|
private handle!: StageChatViewContext["handle"];
|
|
77
|
+
private postMortemUnavailableReason!: StageChatViewContext["postMortemUnavailableReason"];
|
|
77
78
|
private onDetach!: StageChatViewContext["onDetach"];
|
|
78
79
|
private onClose!: StageChatViewContext["onClose"];
|
|
79
80
|
private requestRender!: StageChatViewContext["requestRender"];
|
|
@@ -208,6 +209,7 @@ export class StageChatView implements Component, Focusable {
|
|
|
208
209
|
void this.stageId;
|
|
209
210
|
void this.workflowName;
|
|
210
211
|
void this.handle;
|
|
212
|
+
void this.postMortemUnavailableReason;
|
|
211
213
|
void this.onDetach;
|
|
212
214
|
void this.onClose;
|
|
213
215
|
void this.requestRender;
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
* workflow store using a single long-lived component that is updated in
|
|
4
4
|
* place (issue #1109).
|
|
5
5
|
*
|
|
6
|
-
* Placement note (belowEditor, not aboveEditor):
|
|
7
|
-
*
|
|
8
|
-
* scrollback whenever a changed line is above the viewport fold. An
|
|
6
|
+
* Placement note (belowEditor, not aboveEditor): pi-tui full-clears the
|
|
7
|
+
* screen + scrollback whenever a changed line is above the viewport fold. An
|
|
9
8
|
* aboveEditor widget gets pushed above the fold once the bottom region grows
|
|
10
|
-
* tall, so each
|
|
9
|
+
* tall, so each repaint cleared the whole screen (the resize flicker in
|
|
11
10
|
* #1109). belowEditor keeps the widget among the last rendered lines (always
|
|
12
|
-
* within the bottom viewport), so
|
|
13
|
-
*
|
|
11
|
+
* within the bottom viewport), so a repaint is a clean differential redraw.
|
|
12
|
+
* See the `setWidget` call site for the full rationale.
|
|
14
13
|
*
|
|
15
14
|
* Pattern:
|
|
16
15
|
* 1. The widget mounts once (`ui.setWidget(WIDGET_KEY, factory)`) on the
|
|
@@ -21,23 +20,19 @@
|
|
|
21
20
|
* container, and redraws — so re-issuing `setWidget` on each store
|
|
22
21
|
* mutation or clock tick produces a visible flicker. We therefore call
|
|
23
22
|
* it only on real mount/unmount transitions.
|
|
24
|
-
* 2.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* visually stale — including after `up-arrow` history recall and other
|
|
32
|
-
* editor events that force a host re-render without a `setWidget` call.
|
|
23
|
+
* 2. Semantic store mutations, visible elapsed-clock ticks, and the one-shot
|
|
24
|
+
* recent-ended expiry call `ui.requestRender()` only. Pi re-invokes the
|
|
25
|
+
* *same* mounted component's `render(width)` with no dispose/remount, so
|
|
26
|
+
* elapsed labels advance continuously without lifecycle flicker.
|
|
27
|
+
* 3. The long-lived component reads the *latest* store snapshot and captured
|
|
28
|
+
* clock through live getters at render time, so it is never visually
|
|
29
|
+
* stale — including after `up-arrow` history recall and other host renders.
|
|
33
30
|
* 4. The mount / unmount / update / none decision is extracted into the
|
|
34
31
|
* pure, unit-testable `decideWidgetAction`, keeping this module a thin
|
|
35
32
|
* orchestration layer over a pure policy (SRP).
|
|
36
|
-
* 5.
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* one-shot refresh timer while the widget is visible, matching other
|
|
40
|
-
* live Atomic widgets without reintroducing a high-frequency spinner.
|
|
33
|
+
* 5. Running workflows schedule the next exact elapsed-second boundary.
|
|
34
|
+
* Paused workflows stay timer-free, and terminal cards use only the
|
|
35
|
+
* one-shot recent-ended expiry (`nextWidgetRefreshDelayMs`).
|
|
41
36
|
*/
|
|
42
37
|
|
|
43
38
|
import {
|
|
@@ -124,6 +119,10 @@ export function installStoreWidget(
|
|
|
124
119
|
render: (snap, { theme, width, now }) =>
|
|
125
120
|
buildThemedWidgetLines(snap, theme as PiTheme | undefined, width, now),
|
|
126
121
|
getNextRefreshDelayMs: (snap, now) => nextWidgetRefreshDelayMs(snap, now),
|
|
122
|
+
// #1856: a store mutation that leaves the rendered card byte-identical
|
|
123
|
+
// must not broadcast a host-wide render (each one becomes terminal
|
|
124
|
+
// writes that fight native main-chat scrollback).
|
|
125
|
+
requestRenderOnStateNoop: false,
|
|
127
126
|
isStaleError: isStale,
|
|
128
127
|
});
|
|
129
128
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Visual contract (DESIGN.md §5 Picker Rows):
|
|
5
5
|
* - Rounded box, `borderActive` border, `backgroundPanel` interior.
|
|
6
6
|
* - Header row: leading "stages" caption (dim) + right-aligned key·label
|
|
7
|
-
* hint (`↑↓ select · ↵
|
|
7
|
+
* hint (`↑↓ select · ↵ open stage chat · esc close`) in dim.
|
|
8
8
|
* - Default row: `paddingLeft: 1`, `paddingRight: 2`, icon + name, status
|
|
9
9
|
* glyph coloured.
|
|
10
10
|
* - Selected row: accent pill (blue bg + surface0 fg + bold). Focus is
|
|
@@ -36,8 +36,8 @@ export function filterStages(
|
|
|
36
36
|
return stages.filter((s) => s.name.toLowerCase().includes(q));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
const HINT = "↑↓ select · ↵
|
|
40
|
-
const COMPACT_HINT = "↵
|
|
39
|
+
const HINT = "↑↓ select · ↵ open stage chat · esc close";
|
|
40
|
+
const COMPACT_HINT = "↵ stage chat · esc close";
|
|
41
41
|
|
|
42
42
|
/** Pad a visible string (ANSI-safe) to exactly `width` cells. */
|
|
43
43
|
function padVisible(s: string, width: number): string {
|
|
@@ -94,7 +94,7 @@ export function renderSwitcher(
|
|
|
94
94
|
// Top border
|
|
95
95
|
lines.push(`${border}╭${"─".repeat(innerWidth)}╮${RESET}`);
|
|
96
96
|
|
|
97
|
-
// Header row: " STAGES query … ↑↓ select · ↵
|
|
97
|
+
// Header row: " STAGES query … ↑↓ select · ↵ open stage chat · esc close "
|
|
98
98
|
const leftLabelText = " STAGES";
|
|
99
99
|
const hint = innerWidth >= 44 ? HINT : COMPACT_HINT;
|
|
100
100
|
const queryBudget = Math.max(
|