@adhdev/daemon-core 0.9.82-rc.48 → 0.9.82-rc.481
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +220 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +23 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +51 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +64 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +48 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +152 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router-aggregate-status.d.ts +24 -0
- package/dist/commands/router-mesh-session-owner.d.ts +59 -0
- package/dist/commands/router-refine.d.ts +137 -0
- package/dist/commands/router-worktree-cleanup.d.ts +133 -0
- package/dist/commands/router.d.ts +204 -15
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +11 -0
- package/dist/config/config.d.ts +19 -0
- package/dist/config/mesh-config.d.ts +136 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/registry-resolver.d.ts +54 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/config/state-store.d.ts +30 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/cli-detector.d.ts +17 -0
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +26 -2
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +57 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +73 -17
- package/dist/index.js +52979 -18657
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +59496 -25355
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/debug-config.d.ts +16 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +230 -0
- package/dist/mesh/coordinator-prompt.d.ts +76 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +203 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-completion-synthesis.d.ts +4 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +104 -0
- package/dist/mesh/mesh-event-classify.d.ts +7 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +49 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +246 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +29 -0
- package/dist/mesh/mesh-init.d.ts +128 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +139 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +281 -0
- package/dist/mesh/mesh-node-identity.d.ts +310 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +158 -0
- package/dist/mesh/mesh-reconcile-acked-hold.d.ts +17 -0
- package/dist/mesh/mesh-reconcile-config.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-identity.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +80 -0
- package/dist/mesh/mesh-reconcile-v2-backstop.d.ts +16 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +428 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-remote-event-pull.d.ts +15 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +508 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +363 -5
- package/dist/mesh/preview-freshness.d.ts +28 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +46 -0
- package/dist/providers/chat-message-normalization.d.ts +58 -1
- package/dist/providers/cli-provider-effect-format.d.ts +30 -0
- package/dist/providers/cli-provider-history-dedup.d.ts +17 -0
- package/dist/providers/cli-provider-input-prompt.d.ts +12 -0
- package/dist/providers/cli-provider-instance-types.d.ts +45 -0
- package/dist/providers/cli-provider-instance.d.ts +406 -30
- package/dist/providers/cli-provider-status-helpers.d.ts +46 -0
- package/dist/providers/cli-provider-transcript-merge.d.ts +7 -0
- package/dist/providers/contracts.d.ts +149 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +79 -0
- package/dist/providers/native-history/antigravity-claim-registry.d.ts +39 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +44 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +29 -0
- package/dist/providers/provider-instance.d.ts +30 -1
- package/dist/providers/provider-loader.d.ts +42 -5
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +98 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +449 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +202 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +244 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +629 -12
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/session-host/managed-host.d.ts +64 -0
- package/dist/session-host/runtime-surface.d.ts +10 -16
- package/dist/sessions/registry.d.ts +26 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +98 -55
- package/dist/status/chat-tail-hot-sessions.d.ts +40 -0
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +26 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +5 -0
- package/package.json +11 -4
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +80 -14
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1282 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +954 -1144
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2767 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.d.ts +2 -0
- package/src/commands/cli-manager.ts +659 -27
- package/src/commands/handler.ts +845 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
- package/src/commands/high-family/mesh-events.ts +102 -0
- package/src/commands/high-family/mesh-status.ts +849 -0
- package/src/commands/high-family/types.ts +80 -0
- package/src/commands/low-family/coordinator-prompt.ts +72 -0
- package/src/commands/low-family/daemon-lifecycle.ts +120 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +282 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +241 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1287 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +153 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router-aggregate-status.ts +209 -0
- package/src/commands/router-mesh-session-owner.ts +114 -0
- package/src/commands/router-refine.ts +1711 -0
- package/src/commands/router-worktree-cleanup.ts +870 -0
- package/src/commands/router.ts +795 -4143
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +517 -24
- package/src/config/config.ts +30 -0
- package/src/config/mesh-config.ts +632 -23
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/registry-resolver.ts +100 -0
- package/src/config/repo-settings.ts +111 -0
- package/src/config/state-store.ts +55 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +94 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +112 -16
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +767 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +213 -13
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/debug-config.ts +25 -0
- package/src/logging/debug-trace.ts +7 -2
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +469 -0
- package/src/mesh/coordinator-prompt.ts +572 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +706 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-completion-synthesis.ts +416 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +284 -0
- package/src/mesh/mesh-event-classify.ts +78 -0
- package/src/mesh/mesh-event-forwarding.ts +2002 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +1494 -0
- package/src/mesh/mesh-events-stale.ts +452 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +43 -1035
- package/src/mesh/mesh-fast-forward.ts +856 -0
- package/src/mesh/mesh-host-ownership.ts +111 -0
- package/src/mesh/mesh-init.ts +350 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +898 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +695 -0
- package/src/mesh/mesh-node-identity.ts +2065 -0
- package/src/mesh/mesh-queue-assignment.ts +2263 -0
- package/src/mesh/mesh-reconcile-acked-hold.ts +230 -0
- package/src/mesh/mesh-reconcile-config.ts +66 -0
- package/src/mesh/mesh-reconcile-identity.ts +103 -0
- package/src/mesh/mesh-reconcile-loop.ts +1473 -0
- package/src/mesh/mesh-reconcile-v2-backstop.ts +62 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1686 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-remote-event-pull.ts +279 -0
- package/src/mesh/mesh-review-inbox.ts +308 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +2150 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1437 -147
- package/src/mesh/preview-freshness.ts +163 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +599 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +100 -6
- package/src/providers/chat-message-normalization.ts +126 -4
- package/src/providers/cli-provider-effect-format.ts +53 -0
- package/src/providers/cli-provider-history-dedup.ts +75 -0
- package/src/providers/cli-provider-input-prompt.ts +133 -0
- package/src/providers/cli-provider-instance-types.ts +131 -0
- package/src/providers/cli-provider-instance.ts +2709 -499
- package/src/providers/cli-provider-status-helpers.ts +123 -0
- package/src/providers/cli-provider-transcript-merge.ts +114 -0
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +160 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +105 -0
- package/src/providers/native-history/antigravity-claim-registry.ts +138 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +1275 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +617 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +312 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +24 -1
- package/src/providers/provider-loader.ts +700 -55
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +246 -0
- package/src/providers/spec/cli-adapter.ts +1064 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1528 -0
- package/src/providers/spec/fsm-evaluator.ts +290 -0
- package/src/providers/spec/fsm-loader.ts +128 -0
- package/src/providers/spec/fsm-types.ts +301 -0
- package/src/providers/spec/native-history-executor.ts +1241 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +284 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +868 -13
- package/src/runtime-defaults.ts +39 -0
- package/src/session-host/managed-host.ts +218 -0
- package/src/session-host/runtime-surface.ts +20 -80
- package/src/sessions/registry.ts +44 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +136 -55
- package/src/status/builders.ts +26 -6
- package/src/status/chat-tail-hot-sessions.ts +117 -2
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +95 -26
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
package/src/shared-types.ts
CHANGED
|
@@ -15,6 +15,15 @@ import type {
|
|
|
15
15
|
DetectedIde,
|
|
16
16
|
AgentEntry,
|
|
17
17
|
} from './types.js';
|
|
18
|
+
import type {
|
|
19
|
+
SessionAttachedClient as CoreSessionAttachedClient,
|
|
20
|
+
SessionWriteOwner as CoreSessionWriteOwner,
|
|
21
|
+
SessionHostRecord as CoreSessionHostRecord,
|
|
22
|
+
SessionHostLogEntry as CoreSessionHostLogEntry,
|
|
23
|
+
SessionHostRequestTrace as CoreSessionHostRequestTrace,
|
|
24
|
+
SessionHostRuntimeTransition as CoreSessionHostRuntimeTransition,
|
|
25
|
+
SessionHostDiagnostics as CoreSessionHostDiagnostics,
|
|
26
|
+
} from '@adhdev/session-host-core';
|
|
18
27
|
|
|
19
28
|
export type {
|
|
20
29
|
StatusResponse,
|
|
@@ -56,6 +65,7 @@ import type {
|
|
|
56
65
|
GitWorkspaceUpdate,
|
|
57
66
|
WorkspaceGitSubscriptionParams,
|
|
58
67
|
} from './git/git-types.js';
|
|
68
|
+
import type { InteractivePrompt } from './providers/types/interactive-prompt.js';
|
|
59
69
|
|
|
60
70
|
export type {
|
|
61
71
|
GitCommandName,
|
|
@@ -110,6 +120,14 @@ export interface ReadChatSyncResult {
|
|
|
110
120
|
status: string;
|
|
111
121
|
title?: string;
|
|
112
122
|
activeModal?: { message: string; buttons: string[] } | null;
|
|
123
|
+
activeInteractivePrompt?: InteractivePrompt | null;
|
|
124
|
+
/**
|
|
125
|
+
* Chat source provenance from ChatSourceMachine (A2). Carries the
|
|
126
|
+
* selected source, transition cause, lock state, and legacy
|
|
127
|
+
* fallbackReason — opaque to the daemon-core, consumed by web-core
|
|
128
|
+
* for the source debug badge and SourceTimeline (A3).
|
|
129
|
+
*/
|
|
130
|
+
messageSource?: Record<string, unknown>;
|
|
113
131
|
}
|
|
114
132
|
|
|
115
133
|
export interface ProviderSummaryItem {
|
|
@@ -125,70 +143,67 @@ export interface ProviderSummaryMetadata {
|
|
|
125
143
|
items: ProviderSummaryItem[];
|
|
126
144
|
}
|
|
127
145
|
|
|
128
|
-
|
|
129
|
-
|
|
146
|
+
/**
|
|
147
|
+
* Wire-subset session-host types.
|
|
148
|
+
*
|
|
149
|
+
* These are the shapes daemon-core / web-core see over the wire — a subset of the
|
|
150
|
+
* authoritative types owned by @adhdev/session-host-core (which additionally carry
|
|
151
|
+
* transport / category / launchCommand / buffer and stricter union typing on wire
|
|
152
|
+
* scalars). They are DERIVED from the SSOT via Pick/Omit so shared fields cannot
|
|
153
|
+
* drift; only the deliberate wire looseness (string-typed `type`/`lifecycle`,
|
|
154
|
+
* optional `meta`) is re-applied here.
|
|
155
|
+
*/
|
|
156
|
+
export type SessionHostAttachedClient = Omit<CoreSessionAttachedClient, 'type'> & {
|
|
157
|
+
/** Widened over the wire — the raw client-type string is not re-validated here. */
|
|
130
158
|
type: string;
|
|
131
|
-
|
|
132
|
-
attachedAt: number;
|
|
133
|
-
lastSeenAt: number;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export interface SessionHostWriteOwner {
|
|
137
|
-
clientId: string;
|
|
138
|
-
ownerType: 'agent' | 'user';
|
|
139
|
-
acquiredAt: number;
|
|
140
|
-
}
|
|
159
|
+
};
|
|
141
160
|
|
|
142
|
-
export
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
161
|
+
export type SessionHostWriteOwner = CoreSessionWriteOwner;
|
|
162
|
+
|
|
163
|
+
export type SessionHostRecord = Pick<
|
|
164
|
+
CoreSessionHostRecord,
|
|
165
|
+
| 'sessionId'
|
|
166
|
+
| 'runtimeKey'
|
|
167
|
+
| 'displayName'
|
|
168
|
+
| 'workspaceLabel'
|
|
169
|
+
| 'providerType'
|
|
170
|
+
| 'workspace'
|
|
171
|
+
| 'lifecycle'
|
|
172
|
+
| 'surfaceKind'
|
|
173
|
+
| 'osPid'
|
|
174
|
+
| 'lastActivityAt'
|
|
175
|
+
| 'createdAt'
|
|
176
|
+
| 'startedAt'
|
|
177
|
+
> & {
|
|
151
178
|
writeOwner: SessionHostWriteOwner | null;
|
|
152
179
|
attachedClients: SessionHostAttachedClient[];
|
|
153
|
-
|
|
154
|
-
lastActivityAt: number;
|
|
155
|
-
createdAt: number;
|
|
156
|
-
startedAt?: number;
|
|
180
|
+
/** Optional over the wire — omitted when the record carries no metadata. */
|
|
157
181
|
meta?: Record<string, unknown>;
|
|
158
|
-
}
|
|
182
|
+
};
|
|
159
183
|
|
|
160
|
-
export
|
|
161
|
-
timestamp: number;
|
|
162
|
-
level: 'debug' | 'info' | 'warn' | 'error';
|
|
163
|
-
message: string;
|
|
164
|
-
sessionId?: string;
|
|
165
|
-
}
|
|
184
|
+
export type SessionHostLogEntry = Omit<CoreSessionHostLogEntry, 'data'>;
|
|
166
185
|
|
|
167
|
-
export
|
|
168
|
-
|
|
169
|
-
requestId: string;
|
|
186
|
+
export type SessionHostRequestTrace = Omit<CoreSessionHostRequestTrace, 'type'> & {
|
|
187
|
+
/** Widened over the wire — the request-type union is not re-validated here. */
|
|
170
188
|
type: string;
|
|
171
|
-
|
|
172
|
-
clientId?: string;
|
|
173
|
-
success: boolean;
|
|
174
|
-
durationMs: number;
|
|
175
|
-
error?: string;
|
|
176
|
-
}
|
|
189
|
+
};
|
|
177
190
|
|
|
178
|
-
export
|
|
179
|
-
|
|
180
|
-
sessionId: string;
|
|
181
|
-
action: string;
|
|
191
|
+
export type SessionHostRuntimeTransition = Omit<CoreSessionHostRuntimeTransition, 'lifecycle'> & {
|
|
192
|
+
/** Widened over the wire — the lifecycle union is not re-validated here. */
|
|
182
193
|
lifecycle?: string;
|
|
183
|
-
|
|
184
|
-
success?: boolean;
|
|
185
|
-
error?: string;
|
|
186
|
-
}
|
|
194
|
+
};
|
|
187
195
|
|
|
188
|
-
export
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
196
|
+
export type SessionHostDiagnosticsSnapshot = Omit<
|
|
197
|
+
CoreSessionHostDiagnostics,
|
|
198
|
+
| 'supportedRequestTypes'
|
|
199
|
+
| 'sessions'
|
|
200
|
+
| 'liveRuntimes'
|
|
201
|
+
| 'recoverySnapshots'
|
|
202
|
+
| 'inactiveRecords'
|
|
203
|
+
| 'recentLogs'
|
|
204
|
+
| 'recentRequests'
|
|
205
|
+
| 'recentTransitions'
|
|
206
|
+
> & {
|
|
192
207
|
sessions?: SessionHostRecord[];
|
|
193
208
|
liveRuntimes?: SessionHostRecord[];
|
|
194
209
|
recoverySnapshots?: SessionHostRecord[];
|
|
@@ -196,7 +211,7 @@ export interface SessionHostDiagnosticsSnapshot {
|
|
|
196
211
|
recentLogs: SessionHostLogEntry[];
|
|
197
212
|
recentRequests: SessionHostRequestTrace[];
|
|
198
213
|
recentTransitions: SessionHostRuntimeTransition[];
|
|
199
|
-
}
|
|
214
|
+
};
|
|
200
215
|
|
|
201
216
|
export type TransportTopic = 'session.chat_tail' | 'session.runtime_output' | 'machine.runtime' | 'session_host.diagnostics' | 'session.modal' | 'daemon.metadata' | 'workspace.git';
|
|
202
217
|
|
|
@@ -283,6 +298,18 @@ export interface DaemonMetadataUpdate {
|
|
|
283
298
|
userName?: string;
|
|
284
299
|
seq: number;
|
|
285
300
|
timestamp: number;
|
|
301
|
+
/**
|
|
302
|
+
* Per-mesh state-change revision counters (meshId → monotonically increasing
|
|
303
|
+
* integer), bumped whenever the daemon's mesh graph/queue/mission state for that
|
|
304
|
+
* mesh changes (onMeshStateChange). Lets the dashboard replace its client-side
|
|
305
|
+
* mesh_status polling with an event-driven background refresh: when the revision
|
|
306
|
+
* for the mesh it is viewing advances, it re-fetches the aggregate mesh_status
|
|
307
|
+
* (SWR, keeping the current graph on screen). This is a lightweight nudge — the
|
|
308
|
+
* full aggregate snapshot is fetched on demand, not embedded here, so the
|
|
309
|
+
* daemon.metadata payload stays small. Optional/absent for daemons/builds that
|
|
310
|
+
* don't emit it (the client then keeps its polling fallback).
|
|
311
|
+
*/
|
|
312
|
+
meshStateRevisions?: Record<string, number>;
|
|
286
313
|
}
|
|
287
314
|
|
|
288
315
|
export interface TopicUpdateEnvelopeMap {
|
|
@@ -365,6 +392,7 @@ export interface SessionEntry {
|
|
|
365
392
|
runtimeRecoveryState?: string | null;
|
|
366
393
|
resume?: ProviderResumeCapability;
|
|
367
394
|
activeChat: SessionActiveChatData | null;
|
|
395
|
+
activeInteractivePrompt?: InteractivePrompt | null;
|
|
368
396
|
capabilities?: SessionCapability[];
|
|
369
397
|
/** Effective message input/media support for this session. Defaults fail-closed to text-only. */
|
|
370
398
|
messageInput?: MessageInputSupport;
|
|
@@ -389,6 +417,17 @@ export interface SessionEntry {
|
|
|
389
417
|
seenCompletionMarker?: string;
|
|
390
418
|
surfaceHidden?: boolean;
|
|
391
419
|
settings?: Record<string, any>;
|
|
420
|
+
/**
|
|
421
|
+
* True owning-daemon id for a session a coordinator synthesises into its own
|
|
422
|
+
* status snapshot (mesh delegated sessions). The dashboard attributes the session
|
|
423
|
+
* to this daemon instead of the snapshot daemon so the worker node — not the
|
|
424
|
+
* coordinator — is shown as its machine.
|
|
425
|
+
*/
|
|
426
|
+
ownerDaemonId?: string;
|
|
427
|
+
/** True owning-machine display name fallback when the owning daemon is not aggregated. */
|
|
428
|
+
ownerMachineName?: string;
|
|
429
|
+
/** Set when this session is acting as a mesh coordinator for the given mesh. */
|
|
430
|
+
coordinator?: { meshId: string; role: 'coordinator' };
|
|
392
431
|
meshQueueStats?: {
|
|
393
432
|
total?: number;
|
|
394
433
|
active?: number;
|
|
@@ -516,7 +555,39 @@ export interface AvailableProviderInfo {
|
|
|
516
555
|
lastVerification?: MachineProviderCheckResult;
|
|
517
556
|
/** Provider-declared Repo Mesh coordinator/MCP behavior. */
|
|
518
557
|
meshCoordinator?: ProviderMeshCoordinatorConfig;
|
|
519
|
-
|
|
558
|
+
/**
|
|
559
|
+
* Provider trust classification — derived from the on-disk layer the
|
|
560
|
+
* manifest came from and the shape of the manifest. Dashboards use
|
|
561
|
+
* this to render a trust badge and gate activation of
|
|
562
|
+
* `external-untrusted` providers behind a confirm modal.
|
|
563
|
+
*/
|
|
564
|
+
trust?: ProviderTrust;
|
|
565
|
+
/** Daemon-side human-readable description of the trust value. */
|
|
566
|
+
trustDescription?: string;
|
|
567
|
+
/** True when activation needs a user-side confirmation step. */
|
|
568
|
+
requiresConfirmation?: boolean;
|
|
569
|
+
/** Which on-disk layer the manifest lives in. */
|
|
570
|
+
sourceLayer?: 'user' | 'upstream' | 'external';
|
|
571
|
+
/** For external providers, the source-name namespace it came from. */
|
|
572
|
+
sourceName?: string | null;
|
|
573
|
+
/** Manifest-declared version, e.g. "1.2.1". */
|
|
574
|
+
providerVersion?: string;
|
|
575
|
+
/** Underlying executable name (CLI/binary providers). */
|
|
576
|
+
binary?: string;
|
|
577
|
+
/** Lifecycle label from the manifest: "Stable", "Beta", … */
|
|
578
|
+
status?: string;
|
|
579
|
+
/** One-line provider description from the manifest. */
|
|
580
|
+
details?: string;
|
|
581
|
+
/** Manifest-declared links: homepage, docs, repo, … */
|
|
582
|
+
links?: Record<string, string>;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export type ProviderTrust =
|
|
586
|
+
| 'user-custom'
|
|
587
|
+
| 'trusted'
|
|
588
|
+
| 'trusted-with-scripts'
|
|
589
|
+
| 'external-safe'
|
|
590
|
+
| 'external-untrusted';
|
|
520
591
|
|
|
521
592
|
export interface MachineProviderCheckResult {
|
|
522
593
|
ok: boolean;
|
|
@@ -582,6 +653,13 @@ export interface ProviderControlSchema {
|
|
|
582
653
|
order?: number;
|
|
583
654
|
/** Hide this control even if it would otherwise render */
|
|
584
655
|
hidden?: boolean;
|
|
656
|
+
/**
|
|
657
|
+
* FSM state ids in which this control should be visible. When omitted the
|
|
658
|
+
* control is always visible. Mirrors the daemon's click-time enforcement so
|
|
659
|
+
* the bar hides controls the daemon would silently drop. Uses raw FSM state
|
|
660
|
+
* ids (e.g. 'idle', 'busy'), not the derived dashboard status.
|
|
661
|
+
*/
|
|
662
|
+
visibleWhenState?: string[];
|
|
585
663
|
}
|
|
586
664
|
|
|
587
665
|
// ─── Common Sub-Types (used across StatusReportPayload, BaseDaemonData, etc.) ──
|
|
@@ -687,6 +765,9 @@ export type DaemonStatusEventName =
|
|
|
687
765
|
| 'agent:waiting_approval'
|
|
688
766
|
| 'agent:generating_completed'
|
|
689
767
|
| 'agent:stopped'
|
|
768
|
+
| 'monitor:no_progress'
|
|
769
|
+
// Legacy alias for 'monitor:no_progress' — kept so older daemons that still
|
|
770
|
+
// emit it remain type-compatible with consumers during rollout.
|
|
690
771
|
| 'monitor:long_generating';
|
|
691
772
|
|
|
692
773
|
/** Minimal daemon-originated event payload relayed through the server. */
|
package/src/status/builders.ts
CHANGED
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
type NormalizeActiveChatOptions,
|
|
26
26
|
} from './normalize.js';
|
|
27
27
|
import { getMeshQueueStats } from '../mesh/mesh-work-queue.js';
|
|
28
|
+
import { getCoordinatorForSession } from '../mesh/coordinator-registry.js';
|
|
28
29
|
import { normalizeProviderStateControlValues } from '../providers/provider-patch-state.js';
|
|
29
30
|
import { normalizeProviderSummaryMetadata } from '../providers/summary-metadata.js';
|
|
30
31
|
import {
|
|
@@ -164,7 +165,7 @@ const ACP_SESSION_CAPABILITIES: SessionCapability[] = [
|
|
|
164
165
|
'set_thought_level',
|
|
165
166
|
];
|
|
166
167
|
|
|
167
|
-
function
|
|
168
|
+
function buildWorkspaceSession(
|
|
168
169
|
state: IdeProviderState,
|
|
169
170
|
cdpManagers: Map<string, DaemonCdpManager>,
|
|
170
171
|
options: SessionEntryBuildOptions,
|
|
@@ -179,7 +180,10 @@ function buildIdeWorkspaceSession(
|
|
|
179
180
|
const git = getGitSummaryForWorkspace(workspace, options);
|
|
180
181
|
const title = activeChat?.title || state.name;
|
|
181
182
|
const meshCoordinatorFor = state.settings?.meshCoordinatorFor as string | undefined;
|
|
182
|
-
const
|
|
183
|
+
const registryEntry = state.instanceId ? getCoordinatorForSession(state.instanceId) : undefined;
|
|
184
|
+
const effectiveMeshId = meshCoordinatorFor || registryEntry?.meshId;
|
|
185
|
+
const coordinator = effectiveMeshId ? { meshId: effectiveMeshId, role: 'coordinator' as const } : undefined;
|
|
186
|
+
const meshQueueStats = effectiveMeshId ? getMeshQueueStats(effectiveMeshId) : undefined;
|
|
183
187
|
return {
|
|
184
188
|
id: state.instanceId || state.type,
|
|
185
189
|
parentId: null,
|
|
@@ -203,6 +207,7 @@ function buildIdeWorkspaceSession(
|
|
|
203
207
|
errorReason: state.errorReason,
|
|
204
208
|
lastUpdated: state.lastUpdated,
|
|
205
209
|
settings: state.settings,
|
|
210
|
+
...(coordinator && { coordinator }),
|
|
206
211
|
...(meshQueueStats && { meshQueueStats }),
|
|
207
212
|
};
|
|
208
213
|
}
|
|
@@ -221,7 +226,10 @@ function buildExtensionAgentSession(
|
|
|
221
226
|
const workspace = parent.workspace || null;
|
|
222
227
|
const git = getGitSummaryForWorkspace(workspace, options);
|
|
223
228
|
const meshCoordinatorFor = ext.settings?.meshCoordinatorFor as string | undefined;
|
|
224
|
-
const
|
|
229
|
+
const registryEntry = ext.instanceId ? getCoordinatorForSession(ext.instanceId) : undefined;
|
|
230
|
+
const effectiveMeshId = meshCoordinatorFor || registryEntry?.meshId;
|
|
231
|
+
const coordinator = effectiveMeshId ? { meshId: effectiveMeshId, role: 'coordinator' as const } : undefined;
|
|
232
|
+
const meshQueueStats = effectiveMeshId ? getMeshQueueStats(effectiveMeshId) : undefined;
|
|
225
233
|
return {
|
|
226
234
|
id: ext.instanceId || `${parent.instanceId}:${ext.type}`,
|
|
227
235
|
parentId: parent.instanceId || parent.type,
|
|
@@ -245,6 +253,7 @@ function buildExtensionAgentSession(
|
|
|
245
253
|
errorReason: ext.errorReason,
|
|
246
254
|
lastUpdated: ext.lastUpdated,
|
|
247
255
|
settings: ext.settings,
|
|
256
|
+
...(coordinator && { coordinator }),
|
|
248
257
|
...(meshQueueStats && { meshQueueStats }),
|
|
249
258
|
};
|
|
250
259
|
}
|
|
@@ -287,7 +296,10 @@ function buildCliSession(state: CliProviderState, options: SessionEntryBuildOpti
|
|
|
287
296
|
const workspace = state.workspace || null;
|
|
288
297
|
const git = getGitSummaryForWorkspace(workspace, options);
|
|
289
298
|
const meshCoordinatorFor = state.settings?.meshCoordinatorFor as string | undefined;
|
|
290
|
-
const
|
|
299
|
+
const registryEntry = state.instanceId ? getCoordinatorForSession(state.instanceId) : undefined;
|
|
300
|
+
const effectiveMeshId = meshCoordinatorFor || registryEntry?.meshId;
|
|
301
|
+
const coordinator = effectiveMeshId ? { meshId: effectiveMeshId, role: 'coordinator' as const } : undefined;
|
|
302
|
+
const meshQueueStats = effectiveMeshId ? getMeshQueueStats(effectiveMeshId) : undefined;
|
|
291
303
|
return {
|
|
292
304
|
id: state.instanceId,
|
|
293
305
|
parentId: null,
|
|
@@ -314,6 +326,7 @@ function buildCliSession(state: CliProviderState, options: SessionEntryBuildOpti
|
|
|
314
326
|
mode: state.mode,
|
|
315
327
|
resume: state.resume,
|
|
316
328
|
activeChat,
|
|
329
|
+
activeInteractivePrompt: state.activeInteractivePrompt ?? null,
|
|
317
330
|
...(summaryMetadata && { summaryMetadata }),
|
|
318
331
|
...(includeSessionMetadata && {
|
|
319
332
|
capabilities: state.mode === 'terminal' ? PTY_SESSION_CAPABILITIES : CLI_CHAT_SESSION_CAPABILITIES,
|
|
@@ -327,7 +340,9 @@ function buildCliSession(state: CliProviderState, options: SessionEntryBuildOpti
|
|
|
327
340
|
errorReason: state.errorReason,
|
|
328
341
|
lastUpdated: state.lastUpdated,
|
|
329
342
|
settings: state.settings,
|
|
343
|
+
...(coordinator && { coordinator }),
|
|
330
344
|
...(meshQueueStats && { meshQueueStats }),
|
|
345
|
+
...(state.settings?.spawnedSessionVisibility === 'hidden' && { surfaceHidden: true }),
|
|
331
346
|
};
|
|
332
347
|
}
|
|
333
348
|
|
|
@@ -341,7 +356,10 @@ function buildAcpSession(state: AcpProviderState, options: SessionEntryBuildOpti
|
|
|
341
356
|
const workspace = state.workspace || null;
|
|
342
357
|
const git = getGitSummaryForWorkspace(workspace, options);
|
|
343
358
|
const meshCoordinatorFor = state.settings?.meshCoordinatorFor as string | undefined;
|
|
344
|
-
const
|
|
359
|
+
const registryEntry = state.instanceId ? getCoordinatorForSession(state.instanceId) : undefined;
|
|
360
|
+
const effectiveMeshId = meshCoordinatorFor || registryEntry?.meshId;
|
|
361
|
+
const coordinator = effectiveMeshId ? { meshId: effectiveMeshId, role: 'coordinator' as const } : undefined;
|
|
362
|
+
const meshQueueStats = effectiveMeshId ? getMeshQueueStats(effectiveMeshId) : undefined;
|
|
345
363
|
return {
|
|
346
364
|
id: state.instanceId,
|
|
347
365
|
parentId: null,
|
|
@@ -364,7 +382,9 @@ function buildAcpSession(state: AcpProviderState, options: SessionEntryBuildOpti
|
|
|
364
382
|
errorReason: state.errorReason,
|
|
365
383
|
lastUpdated: state.lastUpdated,
|
|
366
384
|
settings: state.settings,
|
|
385
|
+
...(coordinator && { coordinator }),
|
|
367
386
|
...(meshQueueStats && { meshQueueStats }),
|
|
387
|
+
...(state.settings?.spawnedSessionVisibility === 'hidden' && { surfaceHidden: true }),
|
|
368
388
|
};
|
|
369
389
|
}
|
|
370
390
|
|
|
@@ -380,7 +400,7 @@ export function buildSessionEntries(
|
|
|
380
400
|
const acpStates = allStates.filter((s): s is AcpProviderState => s.category === 'acp');
|
|
381
401
|
|
|
382
402
|
for (const state of ideStates) {
|
|
383
|
-
sessions.push(
|
|
403
|
+
sessions.push(buildWorkspaceSession(state, cdpManagers, options));
|
|
384
404
|
for (const ext of state.extensions as ExtensionProviderState[]) {
|
|
385
405
|
if (!shouldIncludeExtensionSession(ext)) continue;
|
|
386
406
|
sessions.push(buildExtensionAgentSession(state, ext, options));
|
|
@@ -60,8 +60,35 @@ export function classifyHotChatSessionsForSubscriptionFlush(
|
|
|
60
60
|
recentMessageGraceMs?: number;
|
|
61
61
|
activeStatuses?: ReadonlySet<string>;
|
|
62
62
|
activeSessionIds?: ReadonlySet<string>;
|
|
63
|
+
/**
|
|
64
|
+
* Per-session `lastMessageAt` of the most recent completion tail that has
|
|
65
|
+
* already been flushed to subscribers. A completed-but-unseen session is
|
|
66
|
+
* kept hot for delivery REGARDLESS of the 8s recency timer, but only until
|
|
67
|
+
* its current tail has been delivered once — bounding the guaranteed
|
|
68
|
+
* delivery so a slow-finalizing turn is not re-pushed every tick forever.
|
|
69
|
+
* A newer `lastMessageAt` (fresh turn) re-arms delivery.
|
|
70
|
+
*/
|
|
71
|
+
deliveredCompletionTailAt?: ReadonlyMap<string, number>;
|
|
72
|
+
/**
|
|
73
|
+
* (D8) PER-SUBSCRIPTION ACK gate — the authoritative guaranteed-delivery
|
|
74
|
+
* signal. Session ids for which at least one currently-subscribed ws has
|
|
75
|
+
* NOT yet been sent the session's finalized tail (its per-ws
|
|
76
|
+
* `lastDeliveredSignature` is empty / does not match the session's current
|
|
77
|
+
* tail). The daemon computes this from its live ws-subscription map; the
|
|
78
|
+
* classifier keeps every such session hot-for-delivery INDEPENDENT of the
|
|
79
|
+
* seen/unread badge, so a session whose unread badge cleared (or a fresh
|
|
80
|
+
* browser that re-subscribed after the single completion flush already
|
|
81
|
+
* fired) still gets its assistant-final tail delivered. Bounded because a
|
|
82
|
+
* subscriber's `lastDeliveredSignature` converges to the current tail the
|
|
83
|
+
* moment it is actually sent, dropping the session out of this set. When
|
|
84
|
+
* provided, this set is the guaranteed-delivery driver and the
|
|
85
|
+
* `deliveredCompletionTailAt` recency-watermark path is bypassed for these
|
|
86
|
+
* sessions (it stays only as the legacy opt-in for callers that don't pass
|
|
87
|
+
* a per-subscription set).
|
|
88
|
+
*/
|
|
89
|
+
underDeliveredSessionIds?: ReadonlySet<string>;
|
|
63
90
|
} = {},
|
|
64
|
-
): { active: Set<string>; finalizing: Set<string> } {
|
|
91
|
+
): { active: Set<string>; finalizing: Set<string>; guaranteedDelivery: Set<string> } {
|
|
65
92
|
const now = options.now ?? Date.now();
|
|
66
93
|
const recentMessageGraceMs = Math.max(
|
|
67
94
|
0,
|
|
@@ -71,8 +98,19 @@ export function classifyHotChatSessionsForSubscriptionFlush(
|
|
|
71
98
|
);
|
|
72
99
|
const activeStatuses = options.activeStatuses ?? DEFAULT_ACTIVE_CHAT_POLL_STATUSES;
|
|
73
100
|
const activeSessionIds = options.activeSessionIds ?? new Set<string>();
|
|
101
|
+
// The guaranteed-delivery path is opt-in: only callers that provide a
|
|
102
|
+
// delivered-watermark map (so they can BOUND re-pushes) participate. Callers
|
|
103
|
+
// without it keep the original recency-window-only behavior and never enter
|
|
104
|
+
// the completed-but-unseen keep-hot branch (which would otherwise thrash by
|
|
105
|
+
// re-pushing every tick with no delivered record to stop it).
|
|
106
|
+
const deliveredCompletionTailAt = options.deliveredCompletionTailAt ?? null;
|
|
107
|
+
const underDeliveredSessionIds = options.underDeliveredSessionIds ?? null;
|
|
74
108
|
const active = new Set<string>();
|
|
75
109
|
const excluded = new Set<string>();
|
|
110
|
+
// Sessions kept hot purely because they finalized late (outside the 8s
|
|
111
|
+
// window) and have not been delivered yet. The caller records these so the
|
|
112
|
+
// next classification knows their tail is now delivered.
|
|
113
|
+
const guaranteedDelivery = new Set<string>();
|
|
76
114
|
|
|
77
115
|
for (const session of sessions) {
|
|
78
116
|
const sessionId = typeof session?.id === 'string' ? session.id : '';
|
|
@@ -104,6 +142,49 @@ export function classifyHotChatSessionsForSubscriptionFlush(
|
|
|
104
142
|
|
|
105
143
|
if (activeStatuses.has(status) || shouldKeepRecentTailHot) {
|
|
106
144
|
active.add(sessionId);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// (D8) PER-SUBSCRIPTION ACK-BASED guaranteed delivery — the authoritative
|
|
149
|
+
// path. If ANY currently-subscribed ws for this session still lacks the
|
|
150
|
+
// finalized tail (empty / mismatched per-ws lastDeliveredSignature), keep
|
|
151
|
+
// the session hot-for-delivery REGARDLESS of the seen/unread badge. This is
|
|
152
|
+
// the fix for the agy coordinator stranded user-only: the single completion
|
|
153
|
+
// flush was marked "delivered" on FLUSH-FIRE (not browser-APPLIED), and
|
|
154
|
+
// re-delivery was gated on completedUnseen — so once the unread badge
|
|
155
|
+
// cleared, a subscriber that never actually applied the assistant tail (D6
|
|
156
|
+
// shrink-defer drop, or a fresh browser that re-subscribed after the flush
|
|
157
|
+
// instant) was permanently dropped and stayed user-only forever. Gating on
|
|
158
|
+
// "does a live subscriber still lack the tail" instead of the badge makes it
|
|
159
|
+
// re-arm for exactly those subscribers, and it self-bounds: the moment a
|
|
160
|
+
// subscriber is actually sent the tail its signature matches and it leaves
|
|
161
|
+
// this set (a same-tail re-flush is a cheap no-op via prepareSessionChatTailUpdate).
|
|
162
|
+
if (underDeliveredSessionIds && underDeliveredSessionIds.has(sessionId)) {
|
|
163
|
+
active.add(sessionId);
|
|
164
|
+
guaranteedDelivery.add(sessionId);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Legacy recency-watermark guaranteed-delivery path (opt-in via
|
|
169
|
+
// deliveredCompletionTailAt): a completed-but-unseen session whose native
|
|
170
|
+
// tail finalized AFTER the 8s window (common for multi-turn MAGI
|
|
171
|
+
// coordinators — the native-history tail lags the last PTY echo). Kept for
|
|
172
|
+
// callers that do not supply a per-subscription ACK set. When the
|
|
173
|
+
// per-subscription set is provided it is authoritative and this path is not
|
|
174
|
+
// consulted (the `continue` above already handled under-delivered sessions;
|
|
175
|
+
// a session NOT in the set is genuinely delivered, so it must not be revived
|
|
176
|
+
// here on the stale badge alone).
|
|
177
|
+
const completedUnseen = unread || inboxBucket === 'task_complete';
|
|
178
|
+
if (!underDeliveredSessionIds && deliveredCompletionTailAt && completedUnseen) {
|
|
179
|
+
const delivered = deliveredCompletionTailAt.get(sessionId) ?? 0;
|
|
180
|
+
// Not yet delivered for this turn (no record, or a newer tail arrived
|
|
181
|
+
// since the last delivery). lastMessageAt===0 (unknown ts) still counts
|
|
182
|
+
// as undelivered so the tail is not silently dropped.
|
|
183
|
+
const alreadyDelivered = delivered > 0 && lastMessageAt > 0 && delivered >= lastMessageAt;
|
|
184
|
+
if (!alreadyDelivered) {
|
|
185
|
+
active.add(sessionId);
|
|
186
|
+
guaranteedDelivery.add(sessionId);
|
|
187
|
+
}
|
|
107
188
|
}
|
|
108
189
|
}
|
|
109
190
|
|
|
@@ -111,5 +192,39 @@ export function classifyHotChatSessionsForSubscriptionFlush(
|
|
|
111
192
|
Array.from(previousHotSessionIds).filter((sessionId) => !active.has(sessionId) && !excluded.has(sessionId)),
|
|
112
193
|
);
|
|
113
194
|
|
|
114
|
-
return { active, finalizing };
|
|
195
|
+
return { active, finalizing, guaranteedDelivery };
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Detect sessions that just transitioned from an active/generating state into
|
|
200
|
+
* a settled/completed-but-unseen state, so their finalized completion tail can
|
|
201
|
+
* be flushed exactly once regardless of the recency window. Pure: the caller
|
|
202
|
+
* owns the `previousStatus` map and updates it from the returned `nextStatus`.
|
|
203
|
+
*/
|
|
204
|
+
export function detectNewlySettledCompletedSessions(
|
|
205
|
+
sessions: HotChatSessionLike[],
|
|
206
|
+
previousStatus: ReadonlyMap<string, string>,
|
|
207
|
+
options: { activeStatuses?: ReadonlySet<string> } = {},
|
|
208
|
+
): { settled: Set<string>; nextStatus: Map<string, string> } {
|
|
209
|
+
const activeStatuses = options.activeStatuses ?? DEFAULT_ACTIVE_CHAT_POLL_STATUSES;
|
|
210
|
+
const settled = new Set<string>();
|
|
211
|
+
const nextStatus = new Map<string, string>();
|
|
212
|
+
|
|
213
|
+
for (const session of sessions) {
|
|
214
|
+
const sessionId = typeof session?.id === 'string' ? session.id : '';
|
|
215
|
+
if (!sessionId) continue;
|
|
216
|
+
const status = String(session?.status || '').toLowerCase();
|
|
217
|
+
const prevStatus = previousStatus.get(sessionId);
|
|
218
|
+
nextStatus.set(sessionId, status);
|
|
219
|
+
|
|
220
|
+
const wasActive = prevStatus !== undefined && activeStatuses.has(prevStatus);
|
|
221
|
+
const isSettledNow = !activeStatuses.has(status);
|
|
222
|
+
const inboxBucket = String(session?.inboxBucket || '').toLowerCase();
|
|
223
|
+
const completedUnseen = session?.unread === true || inboxBucket === 'task_complete';
|
|
224
|
+
if (wasActive && isSettledNow && completedUnseen) {
|
|
225
|
+
settled.add(sessionId);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return { settled, nextStatus };
|
|
115
230
|
}
|
package/src/status/normalize.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type ManagedStatus =
|
|
|
5
5
|
| 'idle'
|
|
6
6
|
| 'generating'
|
|
7
7
|
| 'waiting_approval'
|
|
8
|
+
| 'waiting_choice'
|
|
8
9
|
| 'error'
|
|
9
10
|
| 'stopped'
|
|
10
11
|
| 'starting'
|
|
@@ -151,6 +152,7 @@ export function normalizeManagedStatus(
|
|
|
151
152
|
|
|
152
153
|
const normalized = String(status || 'idle').trim().toLowerCase();
|
|
153
154
|
if (normalized === 'waiting_approval') return 'waiting_approval';
|
|
155
|
+
if (normalized === 'waiting_choice') return 'waiting_choice';
|
|
154
156
|
if (WORKING_STATUSES.has(normalized)) return 'generating';
|
|
155
157
|
if (normalized === 'error') return 'error';
|
|
156
158
|
if (normalized === 'stopped') return 'stopped';
|
package/src/status/reporter.ts
CHANGED
|
@@ -51,6 +51,8 @@ export class DaemonStatusReporter {
|
|
|
51
51
|
private lastStatusSentAt = 0;
|
|
52
52
|
private statusPendingThrottle = false;
|
|
53
53
|
private lastP2PStatusHash = '';
|
|
54
|
+
private lastP2PStatusSentAt: number = 0;
|
|
55
|
+
private p2pDebounceTimer: ReturnType<typeof setTimeout> | null = null;
|
|
54
56
|
private lastServerStatusHash = '';
|
|
55
57
|
private lastStatusSummary = '';
|
|
56
58
|
|
|
@@ -118,7 +120,7 @@ export class DaemonStatusReporter {
|
|
|
118
120
|
case 'agent:waiting_approval':
|
|
119
121
|
case 'agent:generating_completed':
|
|
120
122
|
case 'agent:stopped':
|
|
121
|
-
case 'monitor:
|
|
123
|
+
case 'monitor:no_progress':
|
|
122
124
|
return value;
|
|
123
125
|
default:
|
|
124
126
|
return null;
|
|
@@ -317,6 +319,9 @@ export class DaemonStatusReporter {
|
|
|
317
319
|
cdpConnected: session.cdpConnected,
|
|
318
320
|
summaryMetadata: session.summaryMetadata,
|
|
319
321
|
settings: session.settings,
|
|
322
|
+
// Forward surfaceHidden so the server can gate push notifications for
|
|
323
|
+
// coordinator-hidden sessions (the WS path is the only one the server sees).
|
|
324
|
+
surfaceHidden: session.surfaceHidden,
|
|
320
325
|
})),
|
|
321
326
|
p2p: payload.p2p,
|
|
322
327
|
timestamp: now,
|
|
@@ -355,7 +360,20 @@ export class DaemonStatusReporter {
|
|
|
355
360
|
: { ...hashTarget, sessions };
|
|
356
361
|
const h = this.simpleHash(JSON.stringify(hashPayload));
|
|
357
362
|
if (h !== this.lastP2PStatusHash) {
|
|
363
|
+
const now = Date.now();
|
|
364
|
+
// Rate limit: max 1 per 500ms
|
|
365
|
+
if (this.lastP2PStatusSentAt && now - this.lastP2PStatusSentAt < 500) {
|
|
366
|
+
if (!this.p2pDebounceTimer) {
|
|
367
|
+
this.p2pDebounceTimer = setTimeout(() => {
|
|
368
|
+
this.p2pDebounceTimer = null;
|
|
369
|
+
this.sendUnifiedStatusReport({ reason: 'p2p_debounce' });
|
|
370
|
+
}, 500);
|
|
371
|
+
}
|
|
372
|
+
return false; // Dropped for now, but will trigger later
|
|
373
|
+
}
|
|
374
|
+
|
|
358
375
|
this.lastP2PStatusHash = h;
|
|
376
|
+
this.lastP2PStatusSentAt = now;
|
|
359
377
|
this.deps.p2p?.sendStatus(payload);
|
|
360
378
|
return true;
|
|
361
379
|
}
|