@adhdev/daemon-core 0.9.82-rc.43 → 0.9.82-rc.430
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 +100 -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 +49391 -19228
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48574 -18570
- 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 +9 -0
- package/dist/mesh/mesh-init.d.ts +86 -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 +290 -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 +221 -3
- package/dist/providers/contracts.d.ts +139 -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 +501 -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 +544 -26
- 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 +710 -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 +1066 -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 +2711 -3254
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +483 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +495 -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 +194 -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 +381 -33
- 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 +1888 -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 +73 -0
- package/src/mesh/mesh-init.ts +260 -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 +1918 -0
- package/src/mesh/mesh-reconcile-loop.ts +1780 -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 +1243 -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 +1933 -104
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +150 -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 +339 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +230 -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 +504 -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 +1128 -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 +740 -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,174 @@
|
|
|
1
|
+
import type { MeshLedgerEntry } from './mesh-ledger.js';
|
|
2
|
+
import type { MeshWorkQueueEntry, DirectDispatchRecord } from './mesh-work-queue.js';
|
|
3
|
+
export type MeshActiveWorkSource = 'queue' | 'direct';
|
|
4
|
+
export type MeshActiveWorkStatus = 'pending' | 'assigned' | 'generating' | 'idle' | 'failed' | 'awaiting_approval';
|
|
5
|
+
export interface MeshActiveWorkRecord {
|
|
6
|
+
taskId: string;
|
|
7
|
+
source: MeshActiveWorkSource;
|
|
8
|
+
status: MeshActiveWorkStatus;
|
|
9
|
+
nodeId?: string;
|
|
10
|
+
sessionId?: string;
|
|
11
|
+
providerType?: string;
|
|
12
|
+
taskTitle: string;
|
|
13
|
+
taskSummary: string;
|
|
14
|
+
message?: string;
|
|
15
|
+
taskMode?: string;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
dispatchedAt?: string;
|
|
19
|
+
elapsedMs: number;
|
|
20
|
+
terminal?: boolean;
|
|
21
|
+
terminalKind?: string;
|
|
22
|
+
terminalAt?: string;
|
|
23
|
+
staleReason?: string;
|
|
24
|
+
/**
|
|
25
|
+
* When true, the session targeted by this direct dispatch still exists in the live mesh
|
|
26
|
+
* but did not transition to generating — the dispatch was not acknowledged by the provider.
|
|
27
|
+
* Distinct from historical/orphaned stale entries where the node/session is gone.
|
|
28
|
+
*/
|
|
29
|
+
staleDispatchUnacknowledged?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface MeshActiveWorkSummary {
|
|
32
|
+
totalActiveCount: number;
|
|
33
|
+
queueActiveCount: number;
|
|
34
|
+
directActiveCount: number;
|
|
35
|
+
awaitingApprovalCount: number;
|
|
36
|
+
generatingCount: number;
|
|
37
|
+
failedCount: number;
|
|
38
|
+
idleCount: number;
|
|
39
|
+
sourceCounts: Record<MeshActiveWorkSource, number>;
|
|
40
|
+
statusCounts: Record<MeshActiveWorkStatus, number>;
|
|
41
|
+
staleDirectCount: number;
|
|
42
|
+
/**
|
|
43
|
+
* Count of stale direct entries where the target session still exists in the live mesh
|
|
44
|
+
* but never transitioned to generating — these are fresh dispatch failures, not historical orphans.
|
|
45
|
+
* Requires immediate recovery: launch a fresh session and retry the task.
|
|
46
|
+
*/
|
|
47
|
+
staleDirectUnacknowledgedCount?: number;
|
|
48
|
+
/**
|
|
49
|
+
* When staleDirectCount > 0, this note clarifies what kind of stale records exist.
|
|
50
|
+
* Fresh unacknowledged dispatches carry an actionable recovery note; orphaned historical
|
|
51
|
+
* entries carry the "historical evidence only" note. Both may coexist.
|
|
52
|
+
*/
|
|
53
|
+
staleDirectNote?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface MeshStaleDirectWorkSummary {
|
|
56
|
+
count: number;
|
|
57
|
+
sampleLimit: number;
|
|
58
|
+
sample: Array<Pick<MeshActiveWorkRecord, 'taskId' | 'status' | 'nodeId' | 'sessionId' | 'taskTitle' | 'createdAt' | 'staleReason'>>;
|
|
59
|
+
reasonCounts: Record<string, number>;
|
|
60
|
+
detailHint: string;
|
|
61
|
+
note?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface BuildMeshActiveWorkOptions {
|
|
64
|
+
meshId: string;
|
|
65
|
+
queue?: MeshWorkQueueEntry[];
|
|
66
|
+
ledgerEntries?: MeshLedgerEntry[];
|
|
67
|
+
/**
|
|
68
|
+
* Active direct dispatches from MeshRuntimeStore. When provided, these are used instead of
|
|
69
|
+
* scanning ledger entries for direct dispatches — eliminates the O(n_ledger) scan.
|
|
70
|
+
* Falls back to ledger scanning when not provided.
|
|
71
|
+
*/
|
|
72
|
+
directDispatches?: DirectDispatchRecord[];
|
|
73
|
+
nodes?: any[];
|
|
74
|
+
now?: number;
|
|
75
|
+
/** Include terminal direct rows (idle/failed) for handoff/recent-work surfaces. Defaults false. */
|
|
76
|
+
includeTerminalDirect?: boolean;
|
|
77
|
+
}
|
|
78
|
+
export declare function buildMeshActiveWorkSummary(activeWork: MeshActiveWorkRecord[]): MeshActiveWorkSummary;
|
|
79
|
+
export declare function buildMeshActiveWork(opts: BuildMeshActiveWorkOptions): {
|
|
80
|
+
activeWork: MeshActiveWorkRecord[];
|
|
81
|
+
staleDirectWork: MeshActiveWorkRecord[];
|
|
82
|
+
staleDirectWorkNote?: string;
|
|
83
|
+
terminalDirectWork: MeshActiveWorkRecord[];
|
|
84
|
+
summary: MeshActiveWorkSummary;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* staleReason strings (produced by sessionStatusFromNodes above) that indicate the original
|
|
88
|
+
* node/session is GONE from the live mesh — i.e. the staleDirect record is an orphaned ledger
|
|
89
|
+
* artifact, not active or recoverable work. These are the only reasons safe to prune from the
|
|
90
|
+
* active staleDirect surface. The "no provider acknowledgement" reason is deliberately excluded:
|
|
91
|
+
* those entries have a still-live node/session (staleDispatchUnacknowledged) and represent
|
|
92
|
+
* recoverable dispatch failures, never orphans.
|
|
93
|
+
*/
|
|
94
|
+
export declare const PRUNABLE_ORPHAN_STALE_REASONS: ReadonlySet<string>;
|
|
95
|
+
export type StaleDirectPruneClassification = 'prunable_orphan' | 'prunable_terminal' | 'preserve_unacknowledged' | 'preserve_active';
|
|
96
|
+
/**
|
|
97
|
+
* Classify a direct-work record for the staleDirect prune path. Pure function — the prune tool
|
|
98
|
+
* uses this so the safety rules (never touch active work or recoverable unacknowledged dispatches)
|
|
99
|
+
* live next to the staleReason producers and are independently testable.
|
|
100
|
+
*/
|
|
101
|
+
export declare function classifyStaleDirectForPrune(record: Pick<MeshActiveWorkRecord, 'staleReason' | 'staleDispatchUnacknowledged' | 'terminal'>, opts?: {
|
|
102
|
+
includeTerminal?: boolean;
|
|
103
|
+
}): StaleDirectPruneClassification;
|
|
104
|
+
/**
|
|
105
|
+
* Outcome of one staleDirect prune pass. Pure data — callers (the MCP tool, the
|
|
106
|
+
* daemon reconcile loop) format/log this however they need. The MCP tool wraps it in
|
|
107
|
+
* its JSON response; the reconcile loop logs prunedCount when > 0.
|
|
108
|
+
*/
|
|
109
|
+
export interface StaleDirectPruneResult {
|
|
110
|
+
mode: 'execute' | 'dry_run';
|
|
111
|
+
includeTerminal: boolean;
|
|
112
|
+
/** Total staleDirect (+terminal when included) candidates surfaced this pass. */
|
|
113
|
+
candidateCount: number;
|
|
114
|
+
/** Records classified prunable AND (when minAgeMs > 0) old enough to auto-prune. */
|
|
115
|
+
prunable: MeshActiveWorkRecord[];
|
|
116
|
+
prunedCount: number;
|
|
117
|
+
/** Prunable by classification but younger than the age gate — only populated when minAgeMs > 0. */
|
|
118
|
+
skippedTooYoung: MeshActiveWorkRecord[];
|
|
119
|
+
preservedUnacknowledged: MeshActiveWorkRecord[];
|
|
120
|
+
/** Prunable orphans/terminals with no store-backed row to delete (ledger-only audit). */
|
|
121
|
+
preservedLedgerOnly: MeshActiveWorkRecord[];
|
|
122
|
+
preservedNotOrphan: MeshActiveWorkRecord[];
|
|
123
|
+
}
|
|
124
|
+
export interface PruneStaleDirectDispatchesOptions {
|
|
125
|
+
meshId: string;
|
|
126
|
+
/** Active direct dispatches from MeshRuntimeStore (getActiveDirectDispatches). */
|
|
127
|
+
directDispatches: DirectDispatchRecord[];
|
|
128
|
+
/** Ledger tail used to attribute remote/terminal dispatches (readLedgerEntries). */
|
|
129
|
+
ledgerEntries?: MeshLedgerEntry[];
|
|
130
|
+
queue?: MeshWorkQueueEntry[];
|
|
131
|
+
/** Live mesh nodes (decorated with live session details) — drives orphan detection. */
|
|
132
|
+
nodes?: any[];
|
|
133
|
+
/** When true, actually delete + append the audit ledger entry. Default false (dry run). */
|
|
134
|
+
execute?: boolean;
|
|
135
|
+
/** Include terminal (idle/failed) direct rows as prune candidates. Default false. */
|
|
136
|
+
includeTerminal?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Minimum age (ms, measured from createdAt/dispatchedAt) before a prunable orphan is
|
|
139
|
+
* eligible. 0 (default) prunes immediately regardless of age — the manual prune behavior.
|
|
140
|
+
* The daemon auto-prune passes a conservative threshold so a node/session that is only
|
|
141
|
+
* transiently invisible is never pruned on the spot.
|
|
142
|
+
*/
|
|
143
|
+
minAgeMs?: number;
|
|
144
|
+
/** Audit source string written into the direct_dispatch_pruned ledger payload. */
|
|
145
|
+
source?: string;
|
|
146
|
+
now?: number;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Shared staleDirect prune core. Single source of truth for the prune decision + the
|
|
150
|
+
* mutation (store-row delete + audit-ledger append) used by BOTH the manual MCP tool
|
|
151
|
+
* (mesh_prune_stale_direct, minAgeMs=0) and the daemon reconcile loop's auto-prune
|
|
152
|
+
* PHASE (minAgeMs > 0). Pure decision logic via buildMeshActiveWork + classifyStaleDirectForPrune;
|
|
153
|
+
* the only side effects (on execute) are deleteDirectDispatchesByTaskId and a single
|
|
154
|
+
* direct_dispatch_pruned ledger entry — never touching the append-only audit history of the
|
|
155
|
+
* pruned dispatches themselves.
|
|
156
|
+
*
|
|
157
|
+
* Safety rules (identical for manual + auto):
|
|
158
|
+
* - Only records classified as staleDirectWork against the CURRENT live mesh are eligible.
|
|
159
|
+
* - Of those, only orphans (node/session gone) — and terminals when includeTerminal — are prunable.
|
|
160
|
+
* Fresh unacknowledged dispatch failures (node/session still live) are always preserved.
|
|
161
|
+
* - Only store-backed rows (taskId present in MeshRuntimeStore) are deleted; ledger-only remote
|
|
162
|
+
* entries are preserved.
|
|
163
|
+
* - When minAgeMs > 0, a prunable orphan younger than the gate is held back (skippedTooYoung).
|
|
164
|
+
* This applies ONLY to the auto path; the manual path passes minAgeMs=0 (immediate).
|
|
165
|
+
*
|
|
166
|
+
* Idempotent: a deleted row no longer appears in getActiveDirectDispatches, so a second pass
|
|
167
|
+
* over the same orphan finds nothing to prune.
|
|
168
|
+
*/
|
|
169
|
+
export declare function pruneStaleDirectDispatches(opts: PruneStaleDirectDispatchesOptions): StaleDirectPruneResult;
|
|
170
|
+
export declare function buildCompactStaleDirectWorkSummary(staleDirectWork: MeshActiveWorkRecord[], opts?: {
|
|
171
|
+
sampleLimit?: number;
|
|
172
|
+
detailHint?: string;
|
|
173
|
+
note?: string;
|
|
174
|
+
}): MeshStaleDirectWorkSummary;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CLONE_BOOTSTRAP_GRACE_MS: number;
|
|
2
|
+
/** Record that a worktree node id was just cloned, opening its transient grace window. */
|
|
3
|
+
export declare function noteRecentlyClonedNode(nodeId: string | undefined | null, nowMs?: number): void;
|
|
4
|
+
/** True when nodeId was cloned within the grace window (and the entry has not expired). */
|
|
5
|
+
export declare function isWithinCloneBootstrapGrace(nodeId: string | undefined | null, nowMs?: number): boolean;
|
|
6
|
+
/** Drop a node's grace entry (e.g. once it has fully resolved into the mesh view). */
|
|
7
|
+
export declare function clearCloneBootstrapGrace(nodeId: string | undefined | null): void;
|
|
8
|
+
export declare function __resetCloneBootstrapGraceForTests(): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hermes / MCP coordinator config helpers
|
|
3
|
+
*
|
|
4
|
+
* Extracted from commands/router.ts (behavior-preserving move). Contains the
|
|
5
|
+
* MCP-server config parse/serialize helpers and the Hermes coordinator base
|
|
6
|
+
* config loading / temp-override stripping / credential-copy helpers.
|
|
7
|
+
*
|
|
8
|
+
* router.ts re-exports every public symbol from here so existing import paths
|
|
9
|
+
* keep working.
|
|
10
|
+
*/
|
|
11
|
+
import type { MeshCoordinatorConfigFormat } from './mesh-refine-gates.js';
|
|
12
|
+
export declare function getMcpServersKey(format: MeshCoordinatorConfigFormat): 'mcpServers' | 'mcp_servers';
|
|
13
|
+
export declare function parseMeshCoordinatorMcpConfig(text: string, format: MeshCoordinatorConfigFormat): Record<string, any>;
|
|
14
|
+
export declare function serializeMeshCoordinatorMcpConfig(config: Record<string, any>, format: MeshCoordinatorConfigFormat): string;
|
|
15
|
+
export declare function loadHermesCoordinatorBaseConfig(targetConfigPath: string): {
|
|
16
|
+
config: Record<string, any>;
|
|
17
|
+
sourceHome: string;
|
|
18
|
+
sourceConfigPath: string;
|
|
19
|
+
};
|
|
20
|
+
export declare function stripHermesCoordinatorTempModelProviderOverrides(config: Record<string, any>): Record<string, any>;
|
|
21
|
+
export declare function copyHermesCoordinatorCredentialFiles(sourceHome: string, targetHome: string): void;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Possible delivery statuses for a session delivery record.
|
|
3
|
+
*/
|
|
4
|
+
export type MeshSessionDeliveryStatus = 'queued' | 'delivering' | 'delivered' | 'acked' | 'completed' | 'failed' | 'expired' | 'cancelled';
|
|
5
|
+
/**
|
|
6
|
+
* Kind of delivery — controls priority and policy handling.
|
|
7
|
+
*/
|
|
8
|
+
export type MeshSessionDeliveryKind = 'task' | 'followup' | 'approval' | 'recovery' | 'system_notice';
|
|
9
|
+
/**
|
|
10
|
+
* A session delivery decision — what to do when a task arrives for a session.
|
|
11
|
+
*/
|
|
12
|
+
export type MeshDeliveryDecision = 'immediate' | 'queued' | 'rejected';
|
|
13
|
+
export interface MeshDeliveryPolicyResult {
|
|
14
|
+
decision: MeshDeliveryDecision;
|
|
15
|
+
reason: string;
|
|
16
|
+
/** When decision='queued', estimated deliver-after ISO timestamp if known. */
|
|
17
|
+
deliverAfter?: string;
|
|
18
|
+
/** Human-readable explanation for coordinator/operator. */
|
|
19
|
+
message: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Determine whether to deliver immediately, queue, or reject based on session status.
|
|
23
|
+
*
|
|
24
|
+
* This is a pure function — it does not write to any store.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveDeliveryDecision(sessionStatus: string | undefined, opts?: {
|
|
27
|
+
kind?: MeshSessionDeliveryKind;
|
|
28
|
+
/** When true, busy session immediate injection is allowed (provider-specific capability). */
|
|
29
|
+
allowBusyInjection?: boolean;
|
|
30
|
+
}): MeshDeliveryPolicyResult;
|
|
31
|
+
export interface SessionDeliveryRecord {
|
|
32
|
+
id: string;
|
|
33
|
+
meshId: string;
|
|
34
|
+
nodeId?: string;
|
|
35
|
+
sessionId?: string;
|
|
36
|
+
providerType?: string;
|
|
37
|
+
taskId?: string;
|
|
38
|
+
kind: MeshSessionDeliveryKind;
|
|
39
|
+
priority: number;
|
|
40
|
+
message: string;
|
|
41
|
+
status: MeshSessionDeliveryStatus;
|
|
42
|
+
deliverAfter?: string;
|
|
43
|
+
expiresAt?: string;
|
|
44
|
+
attemptCount: number;
|
|
45
|
+
sourceCoordinatorSessionId?: string;
|
|
46
|
+
sourceCoordinatorDaemonId?: string;
|
|
47
|
+
lastError?: string;
|
|
48
|
+
createdAt: string;
|
|
49
|
+
updatedAt: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a delivery record in the store.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createSessionDelivery(opts: {
|
|
55
|
+
meshId: string;
|
|
56
|
+
nodeId?: string;
|
|
57
|
+
sessionId?: string;
|
|
58
|
+
providerType?: string;
|
|
59
|
+
taskId?: string;
|
|
60
|
+
kind: MeshSessionDeliveryKind;
|
|
61
|
+
message: string;
|
|
62
|
+
status: MeshSessionDeliveryStatus;
|
|
63
|
+
priority?: number;
|
|
64
|
+
deliverAfter?: string;
|
|
65
|
+
expiresAt?: string;
|
|
66
|
+
sourceCoordinatorSessionId?: string;
|
|
67
|
+
sourceCoordinatorDaemonId?: string;
|
|
68
|
+
}): SessionDeliveryRecord;
|
|
69
|
+
/**
|
|
70
|
+
* Update the status of a delivery record.
|
|
71
|
+
*/
|
|
72
|
+
export declare function updateSessionDeliveryStatus(id: string, status: MeshSessionDeliveryStatus, opts?: {
|
|
73
|
+
lastError?: string;
|
|
74
|
+
incrementAttempt?: boolean;
|
|
75
|
+
}): void;
|
|
76
|
+
/**
|
|
77
|
+
* Get active (non-terminal) deliveries for a mesh, optionally filtered by session.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getActiveSessionDeliveries(meshId: string, sessionId?: string): {
|
|
80
|
+
id: string;
|
|
81
|
+
meshId: string;
|
|
82
|
+
nodeId: string | null;
|
|
83
|
+
sessionId: string | null;
|
|
84
|
+
providerType: string | null;
|
|
85
|
+
taskId: string | null;
|
|
86
|
+
kind: string;
|
|
87
|
+
priority: number;
|
|
88
|
+
message: string;
|
|
89
|
+
status: string;
|
|
90
|
+
deliverAfter: string | null;
|
|
91
|
+
expiresAt: string | null;
|
|
92
|
+
attemptCount: number;
|
|
93
|
+
sourceCoordinatorSessionId: string | null;
|
|
94
|
+
sourceCoordinatorDaemonId: string | null;
|
|
95
|
+
lastError: string | null;
|
|
96
|
+
createdAt: string;
|
|
97
|
+
updatedAt: string;
|
|
98
|
+
}[];
|
|
99
|
+
/**
|
|
100
|
+
* Record a completion conflict diagnostic when a duplicate event points to
|
|
101
|
+
* different task/session than the already-seen event with the same fingerprint.
|
|
102
|
+
*/
|
|
103
|
+
export declare function recordCompletionConflict(opts: {
|
|
104
|
+
meshId: string;
|
|
105
|
+
fingerprint: string;
|
|
106
|
+
conflictingTaskId?: string;
|
|
107
|
+
conflictingSessionId?: string;
|
|
108
|
+
originalTaskId?: string;
|
|
109
|
+
originalSessionId?: string;
|
|
110
|
+
event: string;
|
|
111
|
+
}): void;
|
|
112
|
+
/**
|
|
113
|
+
* Get recent completion conflicts for diagnostic inspection.
|
|
114
|
+
*/
|
|
115
|
+
export declare function getRecentCompletionConflicts(meshId: string, limitMs?: number): {
|
|
116
|
+
id: string;
|
|
117
|
+
meshId: string;
|
|
118
|
+
fingerprint: string;
|
|
119
|
+
conflictingTaskId: string | null;
|
|
120
|
+
conflictingSessionId: string | null;
|
|
121
|
+
originalTaskId: string | null;
|
|
122
|
+
originalSessionId: string | null;
|
|
123
|
+
event: string;
|
|
124
|
+
createdAt: string;
|
|
125
|
+
}[];
|
|
126
|
+
export declare function __clearSessionDeliveriesForTests(meshId: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Mark all active (queued/delivering/delivered/acked) deliveries for a session as completed or failed.
|
|
129
|
+
* Called when a task's terminal status is confirmed so delivery records stay in sync.
|
|
130
|
+
*/
|
|
131
|
+
export declare function markSessionDeliveriesTerminal(meshId: string, sessionId: string, terminalStatus: 'completed' | 'failed'): void;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MeshLedgerKind } from './mesh-ledger.js';
|
|
2
|
+
export declare const EVENT_TO_LEDGER_KIND: Record<string, MeshLedgerKind>;
|
|
3
|
+
export declare function isMeshCoordinatorEvent(eventName: unknown): eventName is string;
|
|
4
|
+
export declare const MESH_FORCE_INJECT_EVENTS: ReadonlySet<string>;
|
|
5
|
+
export declare function shouldForceInjectMeshEvent(eventName: unknown): boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
|
|
2
|
+
export declare function recoverMeshIdByCoordinatorAndNode(coordinatorDaemonId: string, nodeId: string): string;
|
|
3
|
+
export declare function resolveForwardEventMeshId(components: DaemonComponents, payload: Record<string, unknown>): string;
|
|
4
|
+
export declare function __resetMeshWorkspaceCacheForTests(): void;
|
|
5
|
+
export declare function buildRelayMetadataEvent(payload: Record<string, unknown>): Record<string, unknown>;
|
|
6
|
+
export declare function handleMeshForwardEvent(components: DaemonComponents, payload: Record<string, unknown>): {
|
|
7
|
+
[extra: string]: unknown;
|
|
8
|
+
success: true;
|
|
9
|
+
forwarded: 0;
|
|
10
|
+
suppressed: true;
|
|
11
|
+
} | {
|
|
12
|
+
success: boolean;
|
|
13
|
+
forwarded: number;
|
|
14
|
+
error?: undefined;
|
|
15
|
+
} | {
|
|
16
|
+
success: boolean;
|
|
17
|
+
error: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* NOTIF-HELD-DRAIN (Fix 2): event-driven coordinator drain. The reconcile loop delivers a
|
|
21
|
+
* worker's queued completion to an IDLE local coordinator only on its periodic poll. When a
|
|
22
|
+
* coordinator is sitting idle awaiting exactly that completion, waiting up to a full poll
|
|
23
|
+
* interval is the avoidable delivery latency the RCA flags — and combined with the (now-fixed)
|
|
24
|
+
* modal-park false-positive it stretched into the multi-minute notification stall. So the
|
|
25
|
+
* MOMENT a worker delegate event is persisted for a mesh, attempt the same idle-coordinator
|
|
26
|
+
* drain immediately, mirroring the event-driven worker-claim path (agent:ready /
|
|
27
|
+
* agent:generating_completed → triggerMeshQueue).
|
|
28
|
+
*
|
|
29
|
+
* Safety:
|
|
30
|
+
* - drainPendingMeshCoordinatorEvents marks rows drained=1 atomically, so this races the
|
|
31
|
+
* reconcile poll and the coordinator's own idle auto-flush harmlessly — exactly one consumes
|
|
32
|
+
* each row.
|
|
33
|
+
* - Only IDLE, non-modal-parked coordinators are delivery targets (never a generating /
|
|
34
|
+
* consent-modal PTY).
|
|
35
|
+
* - Strict session routing is honoured: an event naming an originating coordinator session is
|
|
36
|
+
* delivered only to that live idle session; anything not currently deliverable here
|
|
37
|
+
* (wrong/absent session, or a message-less lifecycle event) is RE-QUEUED — never dropped —
|
|
38
|
+
* so the reconcile loop's strict hold/expire path remains the single authority for it.
|
|
39
|
+
*/
|
|
40
|
+
export declare function flushPendingForMeshIdleCoordinators(components: DaemonComponents, meshId: string): void;
|
|
41
|
+
export declare function setupMeshEventForwarding(components: DaemonComponents): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface MeshEventTraceCtx {
|
|
2
|
+
/** Primary correlation anchor — the mesh task id (meshActiveTaskId / metadataEvent.taskId). */
|
|
3
|
+
taskId?: unknown;
|
|
4
|
+
/** Optional per-event id when the producer assigns one. */
|
|
5
|
+
eventId?: unknown;
|
|
6
|
+
/** Worker session id — the fallback anchor when no task is attached. */
|
|
7
|
+
sessionId?: unknown;
|
|
8
|
+
nodeId?: unknown;
|
|
9
|
+
meshId?: unknown;
|
|
10
|
+
event?: unknown;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Stable, greppable correlation key. `task=` and `sess=` are ALWAYS rendered (as `-`
|
|
14
|
+
* when absent) so the key shape is uniform across stages and a single grep alternation
|
|
15
|
+
* (`task=<id>\|sess=<id>`) follows the event end-to-end.
|
|
16
|
+
*/
|
|
17
|
+
export declare function meshEventTraceKey(ctx: MeshEventTraceCtx): string;
|
|
18
|
+
/** Lifecycle progress (INFO). One line per stage the event clears. */
|
|
19
|
+
export declare function traceMeshEventStage(stage: string, ctx: MeshEventTraceCtx, detail?: string): void;
|
|
20
|
+
/** Event did not advance — rejected / held / skipped / deduped (WARN). */
|
|
21
|
+
export declare function traceMeshEventDrop(reason: string, ctx: MeshEventTraceCtx, detail?: string): void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { isMeshCoordinatorEvent, MESH_FORCE_INJECT_EVENTS, shouldForceInjectMeshEvent, } from './mesh-event-classify.js';
|
|
2
|
+
export { __orderEligibleNodesForTests, __resolveSchedulingStrategyForTests, __resetIdleAutoFastForwardForTests, activeReadonlyAssignedCount, activeWriteAssignedCount, isSessionActivelyGenerating, triggerMeshQueue, tryAssignQueueTask, } from './mesh-queue-assignment.js';
|
|
3
|
+
export type { MeshQueueTriggerResult } from './mesh-queue-assignment.js';
|
|
4
|
+
export { __resetMeshWorkspaceCacheForTests, buildRelayMetadataEvent, handleMeshForwardEvent, resolveForwardEventMeshId, setupMeshEventForwarding, } from './mesh-event-forwarding.js';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export interface PendingMeshCoordinatorEvent {
|
|
2
|
+
event: string;
|
|
3
|
+
meshId: string;
|
|
4
|
+
nodeLabel: string;
|
|
5
|
+
nodeId?: string;
|
|
6
|
+
workspace?: string;
|
|
7
|
+
metadataEvent: Record<string, unknown>;
|
|
8
|
+
coordinatorMessage?: string;
|
|
9
|
+
queuedAt: number;
|
|
10
|
+
/**
|
|
11
|
+
* When set, this event is intended for a specific coordinator daemon.
|
|
12
|
+
* Coordinators on other daemons should ignore it during drain.
|
|
13
|
+
* Absent on legacy events — treated as broadcast to any coordinator.
|
|
14
|
+
*/
|
|
15
|
+
targetCoordinatorDaemonId?: string;
|
|
16
|
+
/**
|
|
17
|
+
* When set, this event is intended for a specific coordinator SESSION on the
|
|
18
|
+
* target daemon (the session that originally dispatched the work). PHASE 2 inject
|
|
19
|
+
* strict-matches the live coordinator by this session id so a sibling coordinator
|
|
20
|
+
* session on the same daemon does not receive another coordinator's completion.
|
|
21
|
+
* Absent on legacy / version-skewed events → daemon-level broadcast (no regression).
|
|
22
|
+
* Rides inside the event payload, so it survives the SQLite payload round-trip and
|
|
23
|
+
* the JSONL file without a dedicated column; it is NOT a drain-scoping key.
|
|
24
|
+
*/
|
|
25
|
+
targetCoordinatorSessionId?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function readRefineJobId(event: {
|
|
28
|
+
metadataEvent?: Record<string, unknown>;
|
|
29
|
+
} | Record<string, unknown>): string;
|
|
30
|
+
export declare function buildPendingEventFingerprint(event: PendingMeshCoordinatorEvent): string;
|
|
31
|
+
export declare function hasPendingCoordinatorEventDuplicate(event: PendingMeshCoordinatorEvent): boolean;
|
|
32
|
+
export declare function queuePendingMeshCoordinatorEvent(event: PendingMeshCoordinatorEvent): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Drain and return pending coordinator events for meshId, removing the drained
|
|
35
|
+
* ones from both the SQLite inbox and the JSONL legacy file.
|
|
36
|
+
*
|
|
37
|
+
* When `opts.onlyEvents` is supplied, ONLY events whose name is in that set are
|
|
38
|
+
* drained; every other event stays queued (undrained in SQLite, rewritten back to
|
|
39
|
+
* the JSONL file). The reconcile loop uses this to force-drain terminal/force-inject
|
|
40
|
+
* events into a *generating* coordinator while leaving non-force progress events for
|
|
41
|
+
* the coordinator's next idle transition. The atomic SQLite drained=1 marking and the
|
|
42
|
+
* atomic JSONL rename keep force-drain and a concurrent full drain from double-consuming.
|
|
43
|
+
*/
|
|
44
|
+
export declare function drainPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>, opts?: {
|
|
45
|
+
onlyEvents?: ReadonlySet<string>;
|
|
46
|
+
}): PendingMeshCoordinatorEvent[];
|
|
47
|
+
/**
|
|
48
|
+
* FALSE-BLOCKER-CLONE-QUEUE: retract any still-UNDELIVERED `mesh:dispatch_blocked`
|
|
49
|
+
* actionable-skip event for a task whose blocker has since resolved (the task was
|
|
50
|
+
* claimed, or its skip transitioned to a self-resolving transient reason). Without
|
|
51
|
+
* this, a `target_node_id_unmatched` blocker paged during the brief clone/bootstrap
|
|
52
|
+
* propagation window would linger in the coordinator's pending queue and surface as a
|
|
53
|
+
* false "actionable blocker — will NOT clear on its own" even after the task dispatched.
|
|
54
|
+
*
|
|
55
|
+
* Only removes events that have NOT yet been drained/delivered to the coordinator — an
|
|
56
|
+
* already-delivered message cannot be unsent, but de-dup re-arm (caller side) plus this
|
|
57
|
+
* retraction guarantee no NEW stale blocker accumulates. Best-effort across both the
|
|
58
|
+
* SQLite inbox and the JSONL legacy files (scoped + shared). Returns rows removed.
|
|
59
|
+
*/
|
|
60
|
+
export declare function retractPendingDispatchBlockedEvent(meshId: string | undefined, taskId: string | undefined, coordinatorDaemonId?: string): number;
|
|
61
|
+
/** Peek at pending coordinator events without draining (non-destructive). */
|
|
62
|
+
export declare function getPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string | ReadonlyArray<string>): readonly PendingMeshCoordinatorEvent[];
|
|
63
|
+
/**
|
|
64
|
+
* Test helper: purge all pending-event state for a mesh — SQLite rows
|
|
65
|
+
* (including drained fingerprint history) and JSONL files.
|
|
66
|
+
*/
|
|
67
|
+
export declare function __clearMeshPendingEventsForTests(meshId: string): void;
|
|
68
|
+
/** Explicitly clear all pending coordinator events for a mesh (and coordinator if scoped). */
|
|
69
|
+
export declare function clearPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): void;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { MeshLedgerKind } from './mesh-ledger.js';
|
|
2
|
+
export declare function findRecentTerminalLedgerEvidence(args: {
|
|
3
|
+
meshId: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
nodeId?: string;
|
|
6
|
+
}): {
|
|
7
|
+
id: string;
|
|
8
|
+
kind: MeshLedgerKind;
|
|
9
|
+
payload: Record<string, unknown>;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function hasDispatchAfterTerminal(meshId: string, sessionId: string, terminalId: string): boolean;
|
|
13
|
+
export declare function hasUnterminalDirectDispatchLedgerEntry(meshId: string, sessionId: string): boolean;
|
|
14
|
+
export declare function findTerminalLedgerEvidenceForTask(args: {
|
|
15
|
+
meshId: string;
|
|
16
|
+
taskId?: string;
|
|
17
|
+
sessionId?: string;
|
|
18
|
+
nodeId?: string;
|
|
19
|
+
tail?: number;
|
|
20
|
+
}): {
|
|
21
|
+
id: string;
|
|
22
|
+
kind: Extract<MeshLedgerKind, 'task_completed' | 'task_failed' | 'task_stalled'>;
|
|
23
|
+
payload: Record<string, unknown>;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
} | null;
|
|
26
|
+
export declare function reconcileDirectDispatchCompletionFromTranscript(args: {
|
|
27
|
+
meshId: string;
|
|
28
|
+
nodeId?: string;
|
|
29
|
+
sessionId: string;
|
|
30
|
+
providerType?: string;
|
|
31
|
+
providerSessionId?: string;
|
|
32
|
+
taskId: string;
|
|
33
|
+
finalSummary: string;
|
|
34
|
+
transcriptMessageAt?: string;
|
|
35
|
+
completedAt?: string;
|
|
36
|
+
targetCoordinatorDaemonId?: string;
|
|
37
|
+
/**
|
|
38
|
+
* NOTIF-DROP-SYNTH-NO-MESSAGE: the originating coordinator SESSION that dispatched this
|
|
39
|
+
* task (the `coordinatorSessionId` stamped onto the task_dispatched ledger payload at
|
|
40
|
+
* dispatch). Stamped onto the synthesized completion's targetCoordinatorSessionId so PHASE 2
|
|
41
|
+
* STRICT routing matches the exact coordinator session — instead of relying on the
|
|
42
|
+
* daemon-keyed fallback. When the caller does not pass it, it is recovered from the dispatch
|
|
43
|
+
* ledger entry below; absent on legacy rows → daemon-level routing (unchanged).
|
|
44
|
+
*/
|
|
45
|
+
targetCoordinatorSessionId?: string;
|
|
46
|
+
source?: string;
|
|
47
|
+
}): {
|
|
48
|
+
reconciled: boolean;
|
|
49
|
+
kind?: MeshLedgerKind;
|
|
50
|
+
alreadyTerminal?: boolean;
|
|
51
|
+
workerResult?: unknown;
|
|
52
|
+
ledgerEntryId?: string;
|
|
53
|
+
reason?: string;
|
|
54
|
+
};
|
|
55
|
+
export declare function buildNoProgressCompletionReconciliation(args: {
|
|
56
|
+
meshId: string;
|
|
57
|
+
nodeId?: string;
|
|
58
|
+
nodeLabel: string;
|
|
59
|
+
metadataEvent: Record<string, unknown>;
|
|
60
|
+
sourceInstanceId?: string;
|
|
61
|
+
}): Record<string, unknown> | null;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { SessionRecoveryContext } from './mesh-ledger.js';
|
|
2
|
+
export declare function readNonEmptyString(value: unknown): string;
|
|
3
|
+
export declare function readRecord(value: unknown): Record<string, unknown> | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* The relay-safety metadata a worker session must carry so that its completion /
|
|
6
|
+
* generating events route back to the coordinator proactively (without waiting for
|
|
7
|
+
* a mesh_read_chat reconcile). meshCoordinatorDaemonId is the routing anchor the
|
|
8
|
+
* core forwarder (injectMeshSystemMessage) keys on to pick a remote coordinator
|
|
9
|
+
* target; meshNodeFor/meshNodeId identify the worker, and launchedByCoordinator is
|
|
10
|
+
* the delegation proof. See resolveWorkerDelegateRouting().
|
|
11
|
+
*/
|
|
12
|
+
export interface MeshWorkerRelayStamp {
|
|
13
|
+
meshNodeFor?: string;
|
|
14
|
+
meshNodeId?: string;
|
|
15
|
+
meshCoordinatorDaemonId?: string;
|
|
16
|
+
meshCoordinatorSessionId?: string;
|
|
17
|
+
launchedByCoordinator?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the relay-safety stamp from a dispatch's meshContext, only including fields
|
|
21
|
+
* the session does not already carry. Returns undefined when there is nothing new to
|
|
22
|
+
* stamp, so callers can skip a no-op updateSettings() write.
|
|
23
|
+
*
|
|
24
|
+
* This closes the remote-session relay gap: a worker session reached by a dispatch
|
|
25
|
+
* that carries coordinatorDaemonId (mesh_send_task / queue assignment over P2P) gets
|
|
26
|
+
* the coordinator anchor persisted onto its settings at dispatch time, even if it was
|
|
27
|
+
* not launched via mesh_launch_session. Without the stamp the forwarder cannot resolve
|
|
28
|
+
* a remote coordinator and the completion event sits in the pending queue until a
|
|
29
|
+
* read_chat-triggered reconcile drains it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildMeshWorkerRelayStamp(currentSettings: Record<string, unknown> | undefined, meshContext: {
|
|
32
|
+
meshId?: unknown;
|
|
33
|
+
nodeId?: unknown;
|
|
34
|
+
coordinatorDaemonId?: unknown;
|
|
35
|
+
coordinatorSessionId?: unknown;
|
|
36
|
+
} | undefined): MeshWorkerRelayStamp | undefined;
|
|
37
|
+
export declare function resolveEventSessionId(event: Record<string, unknown>, fallback?: unknown): string;
|
|
38
|
+
export declare function readRefineJobId(event: {
|
|
39
|
+
metadataEvent?: Record<string, unknown>;
|
|
40
|
+
} | Record<string, unknown>): string;
|
|
41
|
+
export declare function readWorkerResultMetadata(event: Record<string, unknown>): Record<string, unknown> | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The worker's final assistant text carried on a completion event — read from
|
|
44
|
+
* `finalSummary` (and the `workerResult.summary` / `result.summary` fallbacks some
|
|
45
|
+
* paths use). Returns '' when the event carries no assistant text (lifecycle events
|
|
46
|
+
* without a summary). Shared by the coordinator chat surface (buildMeshSystemMessage)
|
|
47
|
+
* and the held-event ledger audit record so both read the summary the same way.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readMeshCompletionSummary(metadataEvent: Record<string, unknown>): string;
|
|
50
|
+
export declare function resolveMeshSurfacedSessionPreview(metadataEvent: Record<string, unknown>): {
|
|
51
|
+
preview: string;
|
|
52
|
+
role: 'assistant';
|
|
53
|
+
receivedAt: number;
|
|
54
|
+
} | undefined;
|
|
55
|
+
export declare function isMissingFinalAssistantDiagnostic(record: Record<string, unknown> | undefined): boolean;
|
|
56
|
+
export declare function isFalseIdleCompletion(record: Record<string, unknown>): boolean;
|
|
57
|
+
export declare function isWeakCompletionEvidence(record: Record<string, unknown> | undefined): boolean;
|
|
58
|
+
export declare function isWeakCompletionMetadata(metadataEvent: Record<string, unknown>): boolean;
|
|
59
|
+
export declare function buildMeshSystemMessage(args: {
|
|
60
|
+
event: string;
|
|
61
|
+
nodeLabel: string;
|
|
62
|
+
metadataEvent: Record<string, unknown>;
|
|
63
|
+
recoveryContext?: SessionRecoveryContext | null;
|
|
64
|
+
/**
|
|
65
|
+
* BOOTSTRAP-MSG: true when a queued task targeting this freshly-bootstrapped
|
|
66
|
+
* worktree node is pending/assigned and will be (or has just been) auto-claimed
|
|
67
|
+
* by the post-bootstrap queue re-fire. When set, the worktree_bootstrap_complete
|
|
68
|
+
* message drops the misleading "use mesh_launch_session" advice (which would
|
|
69
|
+
* spawn a DUPLICATE session alongside the auto-claimed one) and tells the
|
|
70
|
+
* coordinator the queue will handle it. Absent/false → no targeted task → keep
|
|
71
|
+
* the manual-launch advice. The caller computes this from the work queue; the
|
|
72
|
+
* builder stays pure so both branches are unit-testable via this flag.
|
|
73
|
+
*/
|
|
74
|
+
worktreeHasQueuedTask?: boolean;
|
|
75
|
+
}): string;
|