@adhdev/daemon-core 0.9.82-rc.44 → 0.9.82-rc.440
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 +200 -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 +7 -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 +15 -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 +60 -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 +29 -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 +142 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +276 -2
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +9 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/mesh-config.d.ts +120 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- 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 +11 -1
- 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 +64 -14
- package/dist/index.js +50679 -20122
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +47546 -17153
- 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/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 +164 -0
- package/dist/mesh/coordinator-prompt.d.ts +89 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +174 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
- package/dist/mesh/mesh-event-classify.d.ts +5 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +41 -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 +69 -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 +77 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +189 -0
- package/dist/mesh/mesh-node-identity.d.ts +289 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +65 -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-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +450 -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 +300 -5
- package/dist/mesh/preview-freshness.d.ts +18 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +20 -0
- package/dist/providers/chat-message-normalization.d.ts +31 -1
- package/dist/providers/cli-provider-instance.d.ts +252 -3
- package/dist/providers/contracts.d.ts +149 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +63 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -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 +27 -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 +23 -1
- package/dist/providers/provider-loader.d.ts +26 -4
- 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 +91 -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 +422 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +76 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +174 -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 +222 -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 +509 -13
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/sessions/registry.d.ts +6 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +59 -2
- 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 +7 -3
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +63 -12
- 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 +1246 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +914 -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/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2327 -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.ts +572 -27
- package/src/commands/handler.ts +841 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +678 -0
- package/src/commands/high-family/mesh-events.ts +80 -0
- package/src/commands/high-family/mesh-status.ts +714 -0
- package/src/commands/high-family/types.ts +76 -0
- package/src/commands/low-family/coordinator-prompt.ts +72 -0
- package/src/commands/low-family/daemon-lifecycle.ts +107 -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 +274 -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 +238 -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 +1242 -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 +143 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router.ts +2846 -3484
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +493 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +593 -22
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/repo-settings.ts +111 -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 +28 -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 +59 -15
- 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 +196 -12
- 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/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 +338 -0
- package/src/mesh/coordinator-prompt.ts +415 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +645 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +315 -0
- package/src/mesh/mesh-event-classify.ts +51 -0
- package/src/mesh/mesh-event-forwarding.ts +1897 -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 +656 -0
- package/src/mesh/mesh-events-stale.ts +389 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +33 -1035
- package/src/mesh/mesh-fast-forward.ts +843 -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 +656 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +449 -0
- package/src/mesh/mesh-node-identity.ts +1887 -0
- package/src/mesh/mesh-queue-assignment.ts +1924 -0
- package/src/mesh/mesh-reconcile-loop.ts +1997 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1673 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-review-inbox.ts +307 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +1853 -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 +1254 -141
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +450 -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 +57 -5
- package/src/providers/chat-message-normalization.ts +92 -4
- package/src/providers/cli-provider-instance.ts +2001 -106
- 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 +85 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +643 -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 +345 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +260 -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 +19 -1
- package/src/providers/provider-loader.ts +668 -50
- 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 +250 -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 +235 -0
- package/src/providers/spec/cli-adapter.ts +1056 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1410 -0
- package/src/providers/spec/fsm-evaluator.ts +272 -0
- package/src/providers/spec/fsm-loader.ts +120 -0
- package/src/providers/spec/fsm-types.ts +273 -0
- package/src/providers/spec/native-history-executor.ts +1143 -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 +262 -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 +748 -14
- package/src/runtime-defaults.ts +39 -0
- package/src/sessions/registry.ts +6 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +64 -1
- package/src/status/builders.ts +26 -6
- 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
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
|
|
2
|
+
import { getActiveDirectDispatches } from './mesh-work-queue.js';
|
|
3
|
+
import { hasUnterminalDirectDispatchLedgerEntry } from './mesh-events-stale.js';
|
|
4
|
+
import { appendLedgerEntry, readLedgerEntries } from './mesh-ledger.js';
|
|
5
|
+
import { LOG } from '../logging/logger.js';
|
|
6
|
+
import { readNonEmptyString } from './mesh-events-utils.js';
|
|
7
|
+
import { meshNodeIdMatches } from '@adhdev/mesh-shared';
|
|
8
|
+
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// R1: single-source coordinator routing resolution
|
|
11
|
+
//
|
|
12
|
+
// Worker→node→mesh→coordinator routing used to be reconstructed inline inside
|
|
13
|
+
// setupMeshEventForwarding by reading six settings "stamp" fields
|
|
14
|
+
// (meshNodeFor / meshNodeId / meshCoordinatorFor / meshCoordinatorDaemonId /
|
|
15
|
+
// meshCoordinatorNodeId / launchedByCoordinator) plus two ledger queries plus a
|
|
16
|
+
// workspace fallback, scattered across ~50 lines. Any missing stamp silently
|
|
17
|
+
// changed the routing decision (delegate dropped, mesh unresolved) — design
|
|
18
|
+
// vulnerability #2.
|
|
19
|
+
//
|
|
20
|
+
// resolveWorkerDelegateRouting() is the ONE place that interprets those inputs.
|
|
21
|
+
// The stamps are inputs *internal to this function*; no external branch reads
|
|
22
|
+
// them to make a routing decision. The forwarder consumes the typed result only.
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
export type WorkerDelegateRejectionReason =
|
|
26
|
+
| 'not_cli'
|
|
27
|
+
| 'no_workspace'
|
|
28
|
+
| 'no_worker_envelope'
|
|
29
|
+
| 'coordinator_not_dispatch_target'
|
|
30
|
+
| 'mesh_unresolved';
|
|
31
|
+
|
|
32
|
+
export interface WorkerDelegateRouting {
|
|
33
|
+
/** True when the source session is a mesh worker whose events must route to a coordinator. */
|
|
34
|
+
isDelegate: boolean;
|
|
35
|
+
/** Resolved mesh id (runtime stamp, direct-dispatch recovery, or workspace lookup). */
|
|
36
|
+
meshId: string;
|
|
37
|
+
/** Resolved node id within the mesh, or '' when it cannot be determined. */
|
|
38
|
+
nodeId: string;
|
|
39
|
+
/** Human-readable node label for the coordinator system message. */
|
|
40
|
+
nodeLabel: string;
|
|
41
|
+
/** Coordinator daemon anchor (prefixed id) when the worker carries one; '' otherwise. */
|
|
42
|
+
coordinatorDaemonId: string;
|
|
43
|
+
/** Source session workspace (best-effort; '' when the session/workspace is missing). */
|
|
44
|
+
workspace: string;
|
|
45
|
+
/** Source session id echoed back, so diagnostics can name the dropped event's origin. */
|
|
46
|
+
sessionId: string;
|
|
47
|
+
/** Why routing was rejected (isDelegate=false), for fail-loud diagnostics (R4). */
|
|
48
|
+
rejectionReason?: WorkerDelegateRejectionReason;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface ResolveDeps {
|
|
52
|
+
/** Resolve a mesh by id (local config + inline cache). */
|
|
53
|
+
getMeshById: (meshId: string) => any | undefined;
|
|
54
|
+
/** Resolve a mesh by workspace path (cached repo lookup). */
|
|
55
|
+
getMeshByWorkspace: (workspace: string) => any | undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function readSettings(state: any): Record<string, unknown> {
|
|
59
|
+
return state?.settings && typeof state.settings === 'object'
|
|
60
|
+
? state.settings as Record<string, unknown>
|
|
61
|
+
: {};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Resolve how a source CLI session's mesh events should route to a coordinator.
|
|
66
|
+
*
|
|
67
|
+
* This is the single authoritative interpretation of the worker envelope. It folds
|
|
68
|
+
* together every signal that previously lived in inline branches:
|
|
69
|
+
* - runtime stamps (meshNodeFor / meshNodeId)
|
|
70
|
+
* - the coordinator anchor (meshCoordinatorDaemonId) and launch marker (launchedByCoordinator,
|
|
71
|
+
* meshCoordinatorNodeId) — any one proves delegation even if the node/mesh stamp was dropped
|
|
72
|
+
* - direct-dispatch recovery: a coordinator session that is itself a dispatch target
|
|
73
|
+
* - workspace→mesh fallback when no runtime mesh id survived
|
|
74
|
+
*
|
|
75
|
+
* Returns isDelegate=false (with a rejectionReason) instead of throwing, so the caller
|
|
76
|
+
* can either ignore non-delegate events or surface a diagnostic.
|
|
77
|
+
*/
|
|
78
|
+
export function resolveWorkerDelegateRouting(
|
|
79
|
+
components: DaemonComponents,
|
|
80
|
+
instanceId: string,
|
|
81
|
+
deps: ResolveDeps,
|
|
82
|
+
): WorkerDelegateRouting {
|
|
83
|
+
const sessionId = readNonEmptyString(instanceId);
|
|
84
|
+
let workspace = '';
|
|
85
|
+
let coordinatorDaemonId = '';
|
|
86
|
+
// Runtime node-id stamp, surfaced even on rejection so the unresolved-mesh fallback
|
|
87
|
+
// forward can name the worker node for the coordinator.
|
|
88
|
+
let runtimeNodeId = '';
|
|
89
|
+
const reject = (rejectionReason: WorkerDelegateRejectionReason): WorkerDelegateRouting => ({
|
|
90
|
+
isDelegate: false,
|
|
91
|
+
meshId: '',
|
|
92
|
+
nodeId: runtimeNodeId,
|
|
93
|
+
nodeLabel: '',
|
|
94
|
+
coordinatorDaemonId,
|
|
95
|
+
workspace,
|
|
96
|
+
sessionId,
|
|
97
|
+
rejectionReason,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const sourceInstance = components.instanceManager.getInstance(instanceId);
|
|
101
|
+
if (!sourceInstance || sourceInstance.category !== 'cli') return reject('not_cli');
|
|
102
|
+
|
|
103
|
+
const state = sourceInstance.getState();
|
|
104
|
+
workspace = readNonEmptyString(state.workspace);
|
|
105
|
+
if (!workspace) return reject('no_workspace');
|
|
106
|
+
|
|
107
|
+
const settings = readSettings(state);
|
|
108
|
+
coordinatorDaemonId = readNonEmptyString(settings.meshCoordinatorDaemonId);
|
|
109
|
+
runtimeNodeId = readNonEmptyString(settings.meshNodeId);
|
|
110
|
+
|
|
111
|
+
// A coordinator session (meshCoordinatorFor set) is only treated as a worker delegate
|
|
112
|
+
// when it is itself the target of an active direct dispatch — otherwise its own events
|
|
113
|
+
// must not be routed back to a coordinator (it IS the coordinator).
|
|
114
|
+
const coordinatorMeshId = readNonEmptyString(settings.meshCoordinatorFor);
|
|
115
|
+
let meshIdFromDirectDispatch = '';
|
|
116
|
+
if (coordinatorMeshId) {
|
|
117
|
+
let hasActiveDispatch = false;
|
|
118
|
+
try {
|
|
119
|
+
hasActiveDispatch =
|
|
120
|
+
getActiveDirectDispatches(coordinatorMeshId).some(d => d.sessionId === instanceId)
|
|
121
|
+
|| hasUnterminalDirectDispatchLedgerEntry(coordinatorMeshId, instanceId);
|
|
122
|
+
} catch { /* best-effort */ }
|
|
123
|
+
if (!hasActiveDispatch) return reject('coordinator_not_dispatch_target');
|
|
124
|
+
meshIdFromDirectDispatch = coordinatorMeshId;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const meshIdFromRuntime = readNonEmptyString(settings.meshNodeFor) || meshIdFromDirectDispatch;
|
|
128
|
+
|
|
129
|
+
// Worker-envelope proof of delegation. A worker can arrive carrying only the routing
|
|
130
|
+
// anchor (meshCoordinatorDaemonId) without meshNodeFor — e.g. when the node/mesh stamp
|
|
131
|
+
// was dropped on a direct dispatch or relaunch. Treat any envelope marker as proof and
|
|
132
|
+
// recover the mesh id by workspace when the runtime id is absent.
|
|
133
|
+
const hasWorkerEnvelope = Boolean(
|
|
134
|
+
meshIdFromRuntime
|
|
135
|
+
|| settings.launchedByCoordinator
|
|
136
|
+
|| coordinatorDaemonId
|
|
137
|
+
|| readNonEmptyString(settings.meshCoordinatorNodeId),
|
|
138
|
+
);
|
|
139
|
+
if (!hasWorkerEnvelope) return reject('no_worker_envelope');
|
|
140
|
+
|
|
141
|
+
const mesh = meshIdFromRuntime ? deps.getMeshById(meshIdFromRuntime) : deps.getMeshByWorkspace(workspace);
|
|
142
|
+
const meshId = meshIdFromRuntime || readNonEmptyString(mesh?.id);
|
|
143
|
+
if (!meshId) return reject('mesh_unresolved');
|
|
144
|
+
|
|
145
|
+
// Node resolution authority: the runtime stamp (meshNodeId) is the worker's
|
|
146
|
+
// own identity, set when the coordinator dispatched/launched it. Trust it FIRST,
|
|
147
|
+
// matched against mesh.nodes with the 3-form normalizer (id / nodeId / node_id).
|
|
148
|
+
// Workspace lookup is only a fallback for workers that never carried a node stamp.
|
|
149
|
+
//
|
|
150
|
+
// This is the P1 fix: a worktree clone and its base node can share the same
|
|
151
|
+
// `workspace`, or a freshly-cloned node may not yet be in mesh.nodes — in either
|
|
152
|
+
// case `.find(n => n.workspace === workspace)` would match the BASE node (or
|
|
153
|
+
// undefined) and stamp the completion event with the wrong/absent nodeId, so the
|
|
154
|
+
// event fails post-hoc node matching and the coordinator never sees the completion.
|
|
155
|
+
// The stamped meshNodeId splits base vs worktree correctly even on shared workspace.
|
|
156
|
+
const stampedNode = runtimeNodeId
|
|
157
|
+
? mesh?.nodes?.find((n: any) => meshNodeIdMatches(n, runtimeNodeId))
|
|
158
|
+
: undefined;
|
|
159
|
+
const targetNode = stampedNode || mesh?.nodes?.find((n: any) => n.workspace === workspace);
|
|
160
|
+
const nodeId = runtimeNodeId || readNonEmptyString(targetNode?.id);
|
|
161
|
+
// Label off the resolved nodeId (which now prefers the stamp) so a node matched
|
|
162
|
+
// by its `nodeId`/`node_id` form — where `targetNode.id` may be absent — never
|
|
163
|
+
// renders as `Node 'undefined'`.
|
|
164
|
+
const nodeLabel = nodeId
|
|
165
|
+
? `Node '${nodeId}'`
|
|
166
|
+
: `Agent at ${workspace}`;
|
|
167
|
+
|
|
168
|
+
return {
|
|
169
|
+
isDelegate: true,
|
|
170
|
+
meshId,
|
|
171
|
+
nodeId,
|
|
172
|
+
nodeLabel,
|
|
173
|
+
coordinatorDaemonId,
|
|
174
|
+
workspace,
|
|
175
|
+
sessionId,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
// R4: fail-loud routing diagnostics
|
|
181
|
+
//
|
|
182
|
+
// A rejection is only worth surfacing when the session DID present a worker
|
|
183
|
+
// envelope but routing still couldn't complete (`mesh_unresolved`). Before R4
|
|
184
|
+
// that event was dropped silently — setupMeshEventForwarding returned, the
|
|
185
|
+
// completion never reached a coordinator and never landed in the pending queue,
|
|
186
|
+
// and there was no trace of why. The benign rejections (not_cli / no_workspace /
|
|
187
|
+
// no_worker_envelope / coordinator_not_dispatch_target) are ordinary non-delegate
|
|
188
|
+
// traffic and must NOT spam the ledger.
|
|
189
|
+
//
|
|
190
|
+
// The diagnostic is keyed under a single shared stream id so all unroutable drops
|
|
191
|
+
// across meshes are discoverable in one place (the dropped event has no resolvable
|
|
192
|
+
// mesh by definition). A short per-(session+event) dedup window keeps a chatty
|
|
193
|
+
// session from flooding the ledger.
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
|
|
196
|
+
/** Ledger stream that collects delivery_unroutable diagnostics (no real mesh id exists for them). */
|
|
197
|
+
export const UNROUTABLE_DIAGNOSTIC_STREAM = '__unroutable__';
|
|
198
|
+
|
|
199
|
+
const UNROUTABLE_DIAGNOSTIC_DEDUP_MS = 60 * 1000;
|
|
200
|
+
const recentUnroutableDiagnostics = new Map<string, number>();
|
|
201
|
+
|
|
202
|
+
export function __resetUnroutableDiagnosticsForTests(): void {
|
|
203
|
+
recentUnroutableDiagnostics.clear();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** True only for rejections that represent a silently-dropped delegate event worth a diagnostic. */
|
|
207
|
+
export function isUnroutableDelegateRejection(routing: WorkerDelegateRouting): boolean {
|
|
208
|
+
return !routing.isDelegate && routing.rejectionReason === 'mesh_unresolved';
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* R4: record that a worker event with a valid envelope could not be routed to a coordinator.
|
|
213
|
+
* Writes a `delivery_unroutable` ledger entry (deduped within a short window) so operators see
|
|
214
|
+
* WHY a completion never arrived instead of it vanishing. No-op for non-diagnostic rejections.
|
|
215
|
+
*/
|
|
216
|
+
export function recordUnroutableDelegateEvent(routing: WorkerDelegateRouting, eventName: string): boolean {
|
|
217
|
+
if (!isUnroutableDelegateRejection(routing)) return false;
|
|
218
|
+
|
|
219
|
+
const dedupKey = `${routing.sessionId}::${eventName}::${routing.workspace}`;
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
const last = recentUnroutableDiagnostics.get(dedupKey);
|
|
222
|
+
if (last !== undefined && now - last < UNROUTABLE_DIAGNOSTIC_DEDUP_MS) return false;
|
|
223
|
+
recentUnroutableDiagnostics.set(dedupKey, now);
|
|
224
|
+
// Opportunistic sweep so the map can't grow unbounded.
|
|
225
|
+
if (recentUnroutableDiagnostics.size > 256) {
|
|
226
|
+
for (const [key, ts] of recentUnroutableDiagnostics) {
|
|
227
|
+
if (now - ts >= UNROUTABLE_DIAGNOSTIC_DEDUP_MS) recentUnroutableDiagnostics.delete(key);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
try {
|
|
232
|
+
appendLedgerEntry(UNROUTABLE_DIAGNOSTIC_STREAM, {
|
|
233
|
+
kind: 'delivery_unroutable',
|
|
234
|
+
sessionId: routing.sessionId || undefined,
|
|
235
|
+
payload: {
|
|
236
|
+
event: eventName,
|
|
237
|
+
reason: routing.rejectionReason,
|
|
238
|
+
workspace: routing.workspace || undefined,
|
|
239
|
+
coordinatorDaemonId: routing.coordinatorDaemonId || undefined,
|
|
240
|
+
detail: 'Worker envelope was present but no mesh could be resolved; the event could not be routed to a coordinator.',
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
LOG.warn('MeshEvents', `delivery_unroutable: ${eventName} from session ${routing.sessionId || '(unknown)'} at ${routing.workspace || '(no workspace)'} — envelope present but mesh unresolved`);
|
|
244
|
+
return true;
|
|
245
|
+
} catch (e: any) {
|
|
246
|
+
LOG.warn('MeshEvents', `Failed to record delivery_unroutable diagnostic: ${e?.message || e}`);
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface UnroutableDeliveryDiagnostic {
|
|
252
|
+
timestamp: string;
|
|
253
|
+
event: string;
|
|
254
|
+
sessionId?: string;
|
|
255
|
+
workspace?: string;
|
|
256
|
+
coordinatorDaemonId?: string;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* R4 visibility: recent delivery_unroutable diagnostics, newest first. Surfaced in mesh_status
|
|
261
|
+
* so an operator/coordinator can see that completions were dropped (envelope present, mesh
|
|
262
|
+
* unresolved) rather than the drops being invisible in a ledger nobody reads. The diagnostics
|
|
263
|
+
* live in a single shared stream because an unroutable event has no resolvable mesh.
|
|
264
|
+
*/
|
|
265
|
+
export function getRecentUnroutableDeliveries(opts?: { sinceMs?: number; limit?: number }): UnroutableDeliveryDiagnostic[] {
|
|
266
|
+
const sinceMs = opts?.sinceMs ?? 60 * 60 * 1000; // last hour by default
|
|
267
|
+
const limit = opts?.limit ?? 20;
|
|
268
|
+
let entries: ReturnType<typeof readLedgerEntries>;
|
|
269
|
+
try {
|
|
270
|
+
entries = readLedgerEntries(UNROUTABLE_DIAGNOSTIC_STREAM, { kind: ['delivery_unroutable'], tail: 200 });
|
|
271
|
+
} catch {
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
const cutoff = Date.now() - sinceMs;
|
|
275
|
+
const out: UnroutableDeliveryDiagnostic[] = [];
|
|
276
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
277
|
+
const entry = entries[i];
|
|
278
|
+
const ts = new Date(entry.timestamp).getTime();
|
|
279
|
+
if (!Number.isNaN(ts) && ts < cutoff) continue;
|
|
280
|
+
const payload = entry.payload && typeof entry.payload === 'object' ? entry.payload as Record<string, unknown> : {};
|
|
281
|
+
out.push({
|
|
282
|
+
timestamp: entry.timestamp,
|
|
283
|
+
event: readNonEmptyString(payload.event),
|
|
284
|
+
sessionId: readNonEmptyString(entry.sessionId) || readNonEmptyString(payload.sessionId) || undefined,
|
|
285
|
+
workspace: readNonEmptyString(payload.workspace) || undefined,
|
|
286
|
+
coordinatorDaemonId: readNonEmptyString(payload.coordinatorDaemonId) || undefined,
|
|
287
|
+
});
|
|
288
|
+
if (out.length >= limit) break;
|
|
289
|
+
}
|
|
290
|
+
return out;
|
|
291
|
+
}
|