@adhdev/daemon-core 0.9.82-rc.49 → 0.9.82-rc.490
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +220 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +137 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +23 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +71 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +64 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +48 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +152 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router-aggregate-status.d.ts +24 -0
- package/dist/commands/router-mesh-session-owner.d.ts +59 -0
- package/dist/commands/router-refine.d.ts +151 -0
- package/dist/commands/router-worktree-cleanup.d.ts +133 -0
- package/dist/commands/router.d.ts +203 -15
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +11 -0
- package/dist/config/config.d.ts +19 -0
- package/dist/config/mesh-config.d.ts +65 -0
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/registry-resolver.d.ts +54 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/config/state-store.d.ts +30 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/cli-detector.d.ts +17 -0
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +26 -2
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +80 -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 +70 -17
- package/dist/index.js +53532 -19073
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +53283 -18989
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/debug-config.d.ts +16 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +256 -0
- package/dist/mesh/coordinator-prompt.d.ts +76 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +203 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-completion-synthesis.d.ts +4 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +104 -0
- package/dist/mesh/mesh-event-classify.d.ts +7 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +58 -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 +258 -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 +21 -1
- package/dist/mesh/mesh-init.d.ts +128 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +139 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +281 -0
- package/dist/mesh/mesh-node-identity.d.ts +310 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +162 -0
- package/dist/mesh/mesh-reconcile-acked-hold.d.ts +17 -0
- package/dist/mesh/mesh-reconcile-config.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-identity.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +84 -0
- package/dist/mesh/mesh-reconcile-v2-backstop.d.ts +16 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +457 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-remote-event-pull.d.ts +15 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +567 -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 +34 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +392 -1
- package/dist/mesh/preview-freshness.d.ts +28 -0
- package/dist/mesh/refine-config.d.ts +97 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +46 -0
- package/dist/providers/chat-message-normalization.d.ts +58 -1
- package/dist/providers/cli-provider-effect-format.d.ts +30 -0
- package/dist/providers/cli-provider-history-dedup.d.ts +17 -0
- package/dist/providers/cli-provider-input-prompt.d.ts +12 -0
- package/dist/providers/cli-provider-instance-types.d.ts +45 -0
- package/dist/providers/cli-provider-instance.d.ts +426 -30
- package/dist/providers/cli-provider-status-helpers.d.ts +46 -0
- package/dist/providers/cli-provider-transcript-merge.d.ts +7 -0
- package/dist/providers/contracts.d.ts +196 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +79 -0
- package/dist/providers/native-history/antigravity-claim-registry.d.ts +39 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +44 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +30 -0
- package/dist/providers/provider-instance.d.ts +31 -1
- package/dist/providers/provider-loader.d.ts +42 -5
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +98 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +449 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +202 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +244 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +616 -12
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/session-host/managed-host.d.ts +64 -0
- package/dist/session-host/runtime-surface.d.ts +10 -16
- package/dist/sessions/registry.d.ts +26 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +110 -55
- package/dist/status/chat-tail-hot-sessions.d.ts +40 -0
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +27 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +20 -6
- package/package.json +11 -4
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +80 -14
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1282 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +1048 -1143
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2788 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.d.ts +2 -0
- package/src/commands/cli-manager.ts +724 -27
- package/src/commands/handler.ts +865 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +696 -0
- package/src/commands/high-family/mesh-events.ts +102 -0
- package/src/commands/high-family/mesh-status.ts +857 -0
- package/src/commands/high-family/types.ts +80 -0
- package/src/commands/low-family/coordinator-prompt.ts +125 -0
- package/src/commands/low-family/daemon-lifecycle.ts +120 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +282 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +270 -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 +1268 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +153 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router-aggregate-status.ts +209 -0
- package/src/commands/router-mesh-session-owner.ts +114 -0
- package/src/commands/router-refine.ts +1794 -0
- package/src/commands/router-worktree-cleanup.ts +870 -0
- package/src/commands/router.ts +567 -4149
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +517 -24
- package/src/config/config.ts +30 -0
- package/src/config/mesh-config.ts +300 -24
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/registry-resolver.ts +100 -0
- package/src/config/repo-settings.ts +111 -0
- package/src/config/state-store.ts +55 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +94 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +112 -16
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +822 -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 +190 -13
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/debug-config.ts +25 -0
- package/src/logging/debug-trace.ts +7 -2
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +510 -0
- package/src/mesh/coordinator-prompt.ts +627 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +706 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-completion-synthesis.ts +416 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +284 -0
- package/src/mesh/mesh-event-classify.ts +78 -0
- package/src/mesh/mesh-event-forwarding.ts +2030 -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 +1548 -0
- package/src/mesh/mesh-events-stale.ts +452 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +43 -1035
- package/src/mesh/mesh-fast-forward.ts +856 -0
- package/src/mesh/mesh-host-ownership.ts +41 -3
- package/src/mesh/mesh-init.ts +350 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +897 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +695 -0
- package/src/mesh/mesh-node-identity.ts +2065 -0
- package/src/mesh/mesh-queue-assignment.ts +2498 -0
- package/src/mesh/mesh-reconcile-acked-hold.ts +230 -0
- package/src/mesh/mesh-reconcile-config.ts +66 -0
- package/src/mesh/mesh-reconcile-identity.ts +103 -0
- package/src/mesh/mesh-reconcile-loop.ts +1696 -0
- package/src/mesh/mesh-reconcile-v2-backstop.ts +62 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1792 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-remote-event-pull.ts +279 -0
- package/src/mesh/mesh-review-inbox.ts +308 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +2292 -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 +215 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1489 -145
- package/src/mesh/preview-freshness.ts +163 -0
- package/src/mesh/refine-config.ts +129 -12
- package/src/mesh/worktree-bootstrap-config.ts +599 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +100 -6
- package/src/providers/chat-message-normalization.ts +126 -4
- package/src/providers/cli-provider-effect-format.ts +53 -0
- package/src/providers/cli-provider-history-dedup.ts +75 -0
- package/src/providers/cli-provider-input-prompt.ts +133 -0
- package/src/providers/cli-provider-instance-types.ts +131 -0
- package/src/providers/cli-provider-instance.ts +2771 -499
- package/src/providers/cli-provider-status-helpers.ts +123 -0
- package/src/providers/cli-provider-transcript-merge.ts +114 -0
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +207 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +105 -0
- package/src/providers/native-history/antigravity-claim-registry.ts +138 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +1275 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +617 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +312 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +24 -1
- package/src/providers/provider-loader.ts +700 -55
- package/src/providers/provider-schema.ts +93 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +538 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +246 -0
- package/src/providers/spec/cli-adapter.ts +1064 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1528 -0
- package/src/providers/spec/fsm-evaluator.ts +290 -0
- package/src/providers/spec/fsm-loader.ts +128 -0
- package/src/providers/spec/fsm-types.ts +301 -0
- package/src/providers/spec/native-history-executor.ts +1241 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +284 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +861 -14
- package/src/runtime-defaults.ts +39 -0
- package/src/session-host/managed-host.ts +218 -0
- package/src/session-host/runtime-surface.ts +20 -80
- package/src/sessions/registry.ts +44 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +148 -55
- package/src/status/builders.ts +69 -6
- package/src/status/chat-tail-hot-sessions.ts +117 -2
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +100 -27
- 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 +26 -6
- 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,162 @@
|
|
|
1
|
+
import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
|
|
2
|
+
import type { RepoMeshSchedulingStrategy } from '../repo-mesh-types.js';
|
|
3
|
+
export declare function __resetIdleAutoFastForwardForTests(): void;
|
|
4
|
+
export declare function getMeshWithCache(components: DaemonComponents, meshId: string): any | undefined;
|
|
5
|
+
export declare function tryAssignQueueTask(components: DaemonComponents, meshId: string, nodeId: string, sessionId: string, providerType: string): boolean;
|
|
6
|
+
interface AwaitClaimBackoffState {
|
|
7
|
+
cycles: number;
|
|
8
|
+
nextAttemptAtMs: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function __resetAutoLaunchAwaitClaimBackoffForTests(): void;
|
|
11
|
+
export declare function __seedAutoLaunchAwaitClaimBackoffForTests(meshId: string, taskId: string, state: AwaitClaimBackoffState): void;
|
|
12
|
+
/** Active assignments that hold the one-active-per-node / global-parallel invariant
|
|
13
|
+
* (everything except read-only diagnoses, which run unbounded by the write cap). */
|
|
14
|
+
export declare function activeWriteAssignedCount(meshId: string): number;
|
|
15
|
+
/** Active read-only assignments, for the read-only safety cap. */
|
|
16
|
+
export declare function activeReadonlyAssignedCount(meshId: string): number;
|
|
17
|
+
/**
|
|
18
|
+
* Order eligible nodes for assignment per the mesh scheduling pipeline:
|
|
19
|
+
* PRIORITY (schedulingPriority desc) → TIE-BREAK (strategy).
|
|
20
|
+
*
|
|
21
|
+
* The caller has already applied the TAG hard-filter and is responsible for the
|
|
22
|
+
* MAX-ALLOC capacity gate (the per-node launch/claim checks). This function only
|
|
23
|
+
* decides the *preference order* among nodes that are otherwise eligible.
|
|
24
|
+
*
|
|
25
|
+
* - 'first_eligible' (default): returns the input order verbatim and does NOT touch
|
|
26
|
+
* the round-robin cursor — byte-for-byte the pre-feature behavior.
|
|
27
|
+
* - 'priority_only': schedulingPriority desc, then input order (load ignored).
|
|
28
|
+
* - 'least_loaded' (the user-facing 'spread' mode): schedulingPriority desc, then
|
|
29
|
+
* active load asc, then — among nodes still tied at (priority, load) — the input
|
|
30
|
+
* order is rotated by a per-mesh cursor that advances once per pass. The rotation
|
|
31
|
+
* tie-break is ALWAYS on for least_loaded so a single 'spread' mode subsumes the
|
|
32
|
+
* former separate 'round_robin' strategy (two equal-load nodes still alternate
|
|
33
|
+
* fairly across passes instead of the lower index always winning).
|
|
34
|
+
* - 'round_robin': retained as an escape-hatch alias; behaves identically to
|
|
35
|
+
* 'least_loaded' now that least_loaded carries the rotation.
|
|
36
|
+
*
|
|
37
|
+
* `nodes` carries the original config/array index so the tie-break can fall back to
|
|
38
|
+
* deterministic input order. `bumpCursor` advances the round-robin cursor exactly
|
|
39
|
+
* once per scheduling pass (consulted for both 'least_loaded' and 'round_robin').
|
|
40
|
+
*/
|
|
41
|
+
interface RankableNode {
|
|
42
|
+
nodeId: string;
|
|
43
|
+
node: any;
|
|
44
|
+
index: number;
|
|
45
|
+
}
|
|
46
|
+
/** Test-only: resolve a mesh's effective scheduling strategy through the full
|
|
47
|
+
* LOCAL-WINS path (`.adhdev/mesh.json` distribution → strategy, else stored policy).
|
|
48
|
+
* Exposed so the repo-file overlay wiring can be exercised by a direct call. */
|
|
49
|
+
export declare function __resolveSchedulingStrategyForTests(mesh: any): RepoMeshSchedulingStrategy;
|
|
50
|
+
/** Test-only: the pure node-ordering stage (PRIORITY → TIE-BREAK). Exposed so the
|
|
51
|
+
* scheduling pipeline can be unit-tested without standing up live CLI sessions. */
|
|
52
|
+
export declare function __orderEligibleNodesForTests(meshId: string, strategy: RepoMeshSchedulingStrategy, nodes: RankableNode[], opts?: {
|
|
53
|
+
bumpCursor?: boolean;
|
|
54
|
+
task?: {
|
|
55
|
+
difficulty?: string;
|
|
56
|
+
requiredTags?: string[];
|
|
57
|
+
};
|
|
58
|
+
}): RankableNode[];
|
|
59
|
+
/** One idle session eligible to claim a queued task, together with the resolved
|
|
60
|
+
* mesh node record it belongs to. Local candidates come from live CLI instances,
|
|
61
|
+
* remote candidates from the registered remote-idle-session store; the two arrive
|
|
62
|
+
* with their `nodeId` under different serialization forms. */
|
|
63
|
+
type IdleCandidate = {
|
|
64
|
+
nodeId: string;
|
|
65
|
+
sessionId: string;
|
|
66
|
+
providerType: string;
|
|
67
|
+
origin: 'local' | 'remote';
|
|
68
|
+
node: any;
|
|
69
|
+
};
|
|
70
|
+
/** Test-only: the pool-canonicalization + unique-node collapse stage. Exposed so
|
|
71
|
+
* the mixed-form dedup invariant can be unit-tested without a live daemon. */
|
|
72
|
+
export declare function __buildSchedulingPoolForTests(localCandidates: IdleCandidate[], remoteCandidates: IdleCandidate[]): {
|
|
73
|
+
pool: IdleCandidate[];
|
|
74
|
+
uniqueNodes: RankableNode[];
|
|
75
|
+
};
|
|
76
|
+
export declare function sessionHasActiveAssignment(meshId: string, sessionId: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* CANON-IDENTITY single-flight hardening (restart-safe, observation-based).
|
|
79
|
+
*
|
|
80
|
+
* The in-memory single-flight Set (mesh-task-inflight) is process-local and is LOST on a
|
|
81
|
+
* daemon restart — after a restart, a task still being generated by a live local worker is
|
|
82
|
+
* no longer marked in-flight, so requeueTask's Set check passes and would re-open the task
|
|
83
|
+
* for a duplicate second dispatch. This recovers the "still generating" signal from
|
|
84
|
+
* observable runtime state instead of the in-memory mark: a session is actively generating
|
|
85
|
+
* when its live local CLI instance reports an active (generating/streaming/…) status — the
|
|
86
|
+
* same predicate the dispatch active-work gate uses (sessionStateLooksActive).
|
|
87
|
+
*
|
|
88
|
+
* Local-only by design: it inspects THIS daemon's instanceManager. The primary cross-process
|
|
89
|
+
* fix (IpcTransport requeue delegating to the mesh-host daemon) keeps begin (dispatch) and
|
|
90
|
+
* check (requeue guard) co-located so the in-memory mark stays authoritative in the common
|
|
91
|
+
* path; this is the restart-safety net for sessions hosted on this daemon. A genuinely
|
|
92
|
+
* dead/stale session is not generating → returns false → the requeue proceeds as before.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isSessionActivelyGenerating(components: DaemonComponents, sessionId: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* RECLAIM-FALSEPOS tri-state busy verdict for a session id.
|
|
97
|
+
*
|
|
98
|
+
* The binary isSessionActivelyGenerating() folds "absence of a positive generating
|
|
99
|
+
* signal" into a definitive NEGATIVE (returns false when the instance is absent). But a
|
|
100
|
+
* REMOTE session (never in THIS daemon's instanceManager) — or a locally-present session
|
|
101
|
+
* looked up under a skewed id form — then looks "not generating" and can be reclaimed out
|
|
102
|
+
* from under a worker that is genuinely mid-turn. This resolves an explicit three-way
|
|
103
|
+
* verdict instead:
|
|
104
|
+
* - GENERATING — a locally-present instance reports an active/streaming state.
|
|
105
|
+
* - IDLE_CONFIRMED — a locally-present instance reports a non-active (idle/terminal)
|
|
106
|
+
* state. Positive local evidence the worker is not working.
|
|
107
|
+
* - UNKNOWN — no locally-present instance matches (remote / gone / id-skew) or
|
|
108
|
+
* the observation failed. NEVER treated as IDLE_CONFIRMED.
|
|
109
|
+
*
|
|
110
|
+
* The lookup scans getByCategory('cli') with sessionIdsEquivalent (the same equivalence
|
|
111
|
+
* matching nodeHasActiveMeshWork / liveSessionCountForNode use) rather than a raw
|
|
112
|
+
* instanceManager.getInstance(id) Map.get, so an id-form-skewed but present session is
|
|
113
|
+
* found (closing the same id-form-skew hole class e245c2f9's F1 fixed elsewhere).
|
|
114
|
+
*/
|
|
115
|
+
export type SessionBusyVerdict = 'GENERATING' | 'IDLE_CONFIRMED' | 'UNKNOWN';
|
|
116
|
+
export declare function resolveSessionBusyVerdict(components: DaemonComponents, sessionId: string): SessionBusyVerdict;
|
|
117
|
+
export interface MeshQueueTriggerResult {
|
|
118
|
+
success: true;
|
|
119
|
+
meshId: string;
|
|
120
|
+
pendingBefore: number;
|
|
121
|
+
assignedBefore: number;
|
|
122
|
+
pendingAfter: number;
|
|
123
|
+
assignedAfter: number;
|
|
124
|
+
claimed: boolean;
|
|
125
|
+
newlyAssignedTasks: Array<{
|
|
126
|
+
id: string;
|
|
127
|
+
nodeId?: string;
|
|
128
|
+
sessionId?: string;
|
|
129
|
+
}>;
|
|
130
|
+
localIdleSessionsChecked: number;
|
|
131
|
+
remoteIdleSessionsChecked: number;
|
|
132
|
+
skippedSessions: Array<{
|
|
133
|
+
nodeId?: string;
|
|
134
|
+
sessionId?: string;
|
|
135
|
+
reason: string;
|
|
136
|
+
status?: string;
|
|
137
|
+
}>;
|
|
138
|
+
autoLaunchStarted: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* True when a worker session is already on its way to claim a still-pending task —
|
|
141
|
+
* either launched this tick (autoLaunchStarted) or launched on a prior tick and still
|
|
142
|
+
* booting/awaiting-claim. Callers MUST treat this as "wait, do not launch another
|
|
143
|
+
* session": a second launch double-edits the worktree. Mutually informative with
|
|
144
|
+
* `noIdleMeshSessionAvailable`, which is suppressed whenever this is true.
|
|
145
|
+
*/
|
|
146
|
+
autoLaunchPending?: boolean;
|
|
147
|
+
noIdleMeshSessionAvailable?: boolean;
|
|
148
|
+
}
|
|
149
|
+
export declare function triggerMeshQueue(components: DaemonComponents, meshId: string): Promise<MeshQueueTriggerResult>;
|
|
150
|
+
export declare function maybeAutoFastForwardIdleNode(components: DaemonComponents, args: {
|
|
151
|
+
meshId: string;
|
|
152
|
+
nodeId: string;
|
|
153
|
+
sessionId?: string;
|
|
154
|
+
providerType?: string;
|
|
155
|
+
}): Promise<void>;
|
|
156
|
+
export declare function runIdleMaintenanceThenAssignQueue(components: DaemonComponents, args: {
|
|
157
|
+
meshId: string;
|
|
158
|
+
nodeId: string;
|
|
159
|
+
sessionId: string;
|
|
160
|
+
providerType: string;
|
|
161
|
+
}): void;
|
|
162
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const ACKED_DEATH_CONSECUTIVE_READ_FAILURES = 3;
|
|
2
|
+
export declare function resolveTunedReconcileMs(envName: string, def: number, min: number, max: number): number;
|
|
3
|
+
export declare function resolveAckedDeathDeadlineMs(): number;
|
|
4
|
+
export declare function resolveAckedTranscriptFastTrackGraceMs(): number;
|
|
5
|
+
export interface AckedHoldState {
|
|
6
|
+
liveConfirmedSinceAck: boolean;
|
|
7
|
+
consecutiveReadFailures: number;
|
|
8
|
+
transcriptIdleSinceMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const inFlightAckedHoldState: Map<string, AckedHoldState>;
|
|
11
|
+
export declare function inFlightSynthKey(meshId: string, taskId: string): string;
|
|
12
|
+
export declare function getHoldState(synthKey: string, meshId: string): AckedHoldState | undefined;
|
|
13
|
+
export declare function setHoldState(synthKey: string, meshId: string, state: AckedHoldState): void;
|
|
14
|
+
export declare function deleteHoldState(synthKey: string, meshId: string): void;
|
|
15
|
+
export declare function rehydrateAckedHoldsForMesh(meshId: string): void;
|
|
16
|
+
export declare function collectHeldSynthKeysForMesh(meshId: string): Set<string>;
|
|
17
|
+
export declare function __resetReconcileInFlightSynthDebounceForTests(): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const DEFAULT_RECONCILE_INTERVAL_MS = 4000;
|
|
2
|
+
export declare const DEFAULT_AUTO_PRUNE_MIN_AGE_MS: number;
|
|
3
|
+
export declare function resolveAutoPruneMinAgeMs(): number;
|
|
4
|
+
export declare const DEFAULT_PENDING_HELD_DRAIN_ESCALATE_MS = 12000;
|
|
5
|
+
export declare function resolvePendingHeldDrainEscalateMs(): number;
|
|
6
|
+
export declare function resolveReconcileIntervalMs(): number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
|
|
2
|
+
import type { LocalMeshEntry } from '../repo-mesh-types.js';
|
|
3
|
+
export declare function resolveCoordinatorDaemonIds(components: DaemonComponents): string[];
|
|
4
|
+
export declare function daemonHostsMesh(mesh: LocalMeshEntry, daemonIds: string[]): boolean;
|
|
5
|
+
export declare function daemonIdListIncludes(ids: readonly string[], id: string | undefined): boolean;
|
|
6
|
+
export declare function resolveCoordinatorSelfIds(mesh: LocalMeshEntry, drainDaemonIds: string[]): string[];
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
|
|
2
|
+
export { getMeshV2BackstopCounters, __resetMeshV2BackstopCountersForTests } from './mesh-reconcile-v2-backstop.js';
|
|
3
|
+
export { __resetReconcileInFlightSynthDebounceForTests } from './mesh-reconcile-acked-hold.js';
|
|
4
|
+
/**
|
|
5
|
+
* DRAIN-WITHOUT-INJECT guard. Classify, for a mesh on THIS daemon, whether a
|
|
6
|
+
* queue-drain caller (the MCP `get_pending_mesh_events` poll) may safely consume
|
|
7
|
+
* pending coordinator events — i.e. whether there is a surface that will actually
|
|
8
|
+
* deliver them.
|
|
9
|
+
*
|
|
10
|
+
* Root cause being guarded: `get_pending_mesh_events` marks rows drained=1
|
|
11
|
+
* atomically and unconditionally. When the live CLI coordinator for the mesh is
|
|
12
|
+
* GENERATING (or modal-parked), the reconcile loop correctly HOLDS its terminal
|
|
13
|
+
* events (drained=0) for the coordinator's next idle tick — but a concurrent MCP
|
|
14
|
+
* poll draining the SAME queue consumes those held rows into a tool result that
|
|
15
|
+
* the busy coordinator never surfaces as a turn, so the completion is lost
|
|
16
|
+
* forever (drained=1, never re-queued). The reconcile loop is the authoritative
|
|
17
|
+
* delivery path for a live CLI coordinator; the MCP poll must defer to it.
|
|
18
|
+
*
|
|
19
|
+
* Returns:
|
|
20
|
+
* - hasLiveCliCoordinator: a CLI session with meshCoordinatorFor === meshId
|
|
21
|
+
* exists on this daemon (the reconcile loop owns its delivery).
|
|
22
|
+
* - deliverableNow: there is an IDLE live CLI coordinator (reconcile would
|
|
23
|
+
* full-drain into it) — draining now is safe and equivalent.
|
|
24
|
+
* - holdForReconcile: a live CLI coordinator exists but is non-idle
|
|
25
|
+
* (generating / modal-parked). The MCP poll MUST NOT drain; the reconcile
|
|
26
|
+
* loop holds the events undrained and injects them on the next idle tick.
|
|
27
|
+
*
|
|
28
|
+
* A mesh with NO live CLI coordinator on this daemon is a pure stdio MCP / LLM
|
|
29
|
+
* coordinator: the MCP tool result IS the only surface, so the poll legitimately
|
|
30
|
+
* drains (holdForReconcile=false). No regression to that path.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveCoordinatorDrainDeliverability(components: Pick<DaemonComponents, 'instanceManager'>, meshId: string): {
|
|
33
|
+
hasLiveCliCoordinator: boolean;
|
|
34
|
+
deliverableNow: boolean;
|
|
35
|
+
holdForReconcile: boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* DRAIN-WITHOUT-INJECT guard for the `get_pending_mesh_events` daemon handler.
|
|
39
|
+
*
|
|
40
|
+
* Decides whether an incoming pending-events DRAIN must be held (return nothing,
|
|
41
|
+
* leave rows drained=0) because the only surface for those events is a LOCAL live
|
|
42
|
+
* CLI coordinator that is currently busy (generating / modal-parked) — in which
|
|
43
|
+
* case the reconcile loop owns delivery on the coordinator's next idle tick, and
|
|
44
|
+
* the poll draining them now would lose them.
|
|
45
|
+
*
|
|
46
|
+
* The hold applies ONLY when BOTH:
|
|
47
|
+
* 1) a live CLI coordinator for this mesh on THIS daemon is non-idle, AND
|
|
48
|
+
* 2) the drain is targeted at THIS daemon (the requested coordinatorDaemonId is
|
|
49
|
+
* empty/broadcast, or matches one of this daemon's id forms).
|
|
50
|
+
*
|
|
51
|
+
* A REMOTE coordinator pulling our worker's events passes its own (remote)
|
|
52
|
+
* coordinatorDaemonId — condition (2) is false — so the drain proceeds and the
|
|
53
|
+
* remote pull is never blocked by our local coordinator's busy state. A pure
|
|
54
|
+
* stdio MCP coordinator (no live CLI session) never satisfies (1), so its tool
|
|
55
|
+
* result remains the surface and the drain proceeds. No regression to either.
|
|
56
|
+
*
|
|
57
|
+
* SELF-COORDINATOR INBOX LEVEL-DRAIN (Defect 2): the hold above assumes the ONLY
|
|
58
|
+
* surface for a busy local coordinator's events is a future PTY inject on its idle
|
|
59
|
+
* edge, so it defers to the reconcile loop. But when the drain caller IS the local
|
|
60
|
+
* coordinator reading its OWN inbox (the `get_pending_mesh_events` call whose events
|
|
61
|
+
* are returned in the caller's tool RESULT — a data queue the self-coordinating LLM
|
|
62
|
+
* consumes directly), the events ARE surfaced losslessly the moment the tool returns,
|
|
63
|
+
* with NO PTY write. A busy self-coordinating LLM that calls a mesh tool mid-turn would
|
|
64
|
+
* otherwise get an empty inbox (held) and only see the completion on its NEXT busy→idle
|
|
65
|
+
* edge — the measured ~59s strand. `callerIsSelfCoordinatorInboxRead` marks that safe
|
|
66
|
+
* caller: the hold is relaxed for it (return the events), while every OTHER drain (a
|
|
67
|
+
* backfill relay, a broadcast poll, a DIFFERENT coordinator that genuinely needs its PTY)
|
|
68
|
+
* still defers to the reconcile loop. This relaxes delivery INTO the coordinator's own
|
|
69
|
+
* inbox only — it never changes how events are injected into a live PTY prompt.
|
|
70
|
+
*/
|
|
71
|
+
export declare function shouldHoldPendingDrainForBusyLocalCoordinator(components: Pick<DaemonComponents, 'instanceManager'> & {
|
|
72
|
+
statusInstanceId?: string;
|
|
73
|
+
}, meshId: string, requestedCoordinatorDaemonId?: string | null, callerIsSelfCoordinatorInboxRead?: boolean): boolean;
|
|
74
|
+
export declare function __resetReclaimUnknownStreakForTests(): void;
|
|
75
|
+
export declare function reconcileZombieAssignedTasks(components: DaemonComponents, mesh: {
|
|
76
|
+
id: string;
|
|
77
|
+
nodes?: unknown[];
|
|
78
|
+
}, selfIds: string[]): void;
|
|
79
|
+
export declare function runMeshReconcileTick(components: DaemonComponents): Promise<void>;
|
|
80
|
+
export declare function __resetUnresolvedForwardRejectionCountsForTests(): void;
|
|
81
|
+
interface ReconcileLoopHandle {
|
|
82
|
+
stop(): void;
|
|
83
|
+
}
|
|
84
|
+
export declare function setupMeshReconcileLoop(components: DaemonComponents): ReconcileLoopHandle;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare const meshV2BackstopCounters: {
|
|
2
|
+
/** PHASE-4 transcript synthesis actually reconciled a missing completion. */
|
|
3
|
+
phase4SynthesisFired: number;
|
|
4
|
+
/** Acked-hold transcript fast-track promoted a synth ahead of the death deadline. */
|
|
5
|
+
ackedHoldFastTrackFired: number;
|
|
6
|
+
/** Acked-hold death-deadline backstop released a held synth (the 8-min net). */
|
|
7
|
+
ackedHoldDeathDeadlineFired: number;
|
|
8
|
+
};
|
|
9
|
+
/** Test/observability accessor for the v2 last-resort backstop counters (snapshot). */
|
|
10
|
+
export declare function getMeshV2BackstopCounters(): Readonly<typeof meshV2BackstopCounters>;
|
|
11
|
+
/** Test helper: zero the backstop counters so a case starts from a clean slate. */
|
|
12
|
+
export declare function __resetMeshV2BackstopCountersForTests(): void;
|
|
13
|
+
/** Bump a backstop counter and, under enforce, WARN that a last-resort net fired —
|
|
14
|
+
* which under a healthy v2 contract should not happen (the real emit was lost). */
|
|
15
|
+
export declare function recordBackstopFire(kind: keyof typeof meshV2BackstopCounters, detail: string): void;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Change-area analysis for one worktree node, used to order sibling nodes for
|
|
3
|
+
* batch refinement so that nodes least likely to conflict merge first.
|
|
4
|
+
*
|
|
5
|
+
* The heuristic is deliberately git-only and side-effect-free: it inspects the
|
|
6
|
+
* commits the node's branch adds on top of the base (`base..branch`) and records
|
|
7
|
+
* - whether any submodule gitlink path is touched (high-conflict signal: the
|
|
8
|
+
* batch must rebase later siblings onto the advanced submodule main), and
|
|
9
|
+
* - the set of changed top-level paths (so siblings touching disjoint trees can
|
|
10
|
+
* be ordered ahead of ones that overlap).
|
|
11
|
+
*/
|
|
12
|
+
export interface MeshRefineBatchNodeChangeArea {
|
|
13
|
+
nodeId: string;
|
|
14
|
+
workspace: string;
|
|
15
|
+
branch: string;
|
|
16
|
+
/** Top-level path segments changed by the branch vs. base (e.g. 'oss', 'packages'). */
|
|
17
|
+
changedTopLevelPaths: string[];
|
|
18
|
+
/** Full changed file list (bounded) for overlap detection. */
|
|
19
|
+
changedFiles: string[];
|
|
20
|
+
/** Submodule gitlink paths touched by the branch (subset of changedTopLevelPaths). */
|
|
21
|
+
touchedSubmodulePaths: string[];
|
|
22
|
+
/** True when the branch touches at least one submodule gitlink. */
|
|
23
|
+
touchesSubmodule: boolean;
|
|
24
|
+
/** Number of commits the branch is ahead of base; 0 means nothing to merge. */
|
|
25
|
+
aheadCount: number;
|
|
26
|
+
/** Non-fatal analysis error (e.g. base/branch unresolved); ordering falls back to neutral. */
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface MeshRefineBatchOrderingResult {
|
|
30
|
+
/** Node IDs in the order they should be refined. */
|
|
31
|
+
order: string[];
|
|
32
|
+
/** Per-node change areas, keyed by node id, for plan transparency. */
|
|
33
|
+
changeAreas: Record<string, MeshRefineBatchNodeChangeArea>;
|
|
34
|
+
/** Human-readable explanation of why the order was chosen. */
|
|
35
|
+
rationale: string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Analyze one worktree node's change area against its merge base.
|
|
39
|
+
*
|
|
40
|
+
* @param baseRef ref that the node will merge into (e.g. 'origin/main' or a SHA)
|
|
41
|
+
* @param branchRef the node's branch tip
|
|
42
|
+
* @param diffCwd repo to run the diff in (the worktree itself is authoritative for
|
|
43
|
+
* `branch` resolution, but the diff `base..branch` is symmetric, so
|
|
44
|
+
* the worktree cwd works for both refs once base is a reachable SHA).
|
|
45
|
+
*/
|
|
46
|
+
export declare function analyzeMeshRefineNodeChangeArea(args: {
|
|
47
|
+
nodeId: string;
|
|
48
|
+
workspace: string;
|
|
49
|
+
branch: string;
|
|
50
|
+
baseRef: string;
|
|
51
|
+
branchRef: string;
|
|
52
|
+
diffCwd: string;
|
|
53
|
+
submodulePaths: Set<string>;
|
|
54
|
+
}): Promise<MeshRefineBatchNodeChangeArea>;
|
|
55
|
+
/**
|
|
56
|
+
* Order nodes for batch refinement to minimize cross-sibling conflicts.
|
|
57
|
+
*
|
|
58
|
+
* Heuristic (deterministic, stable):
|
|
59
|
+
* 1. Nodes that do NOT touch any submodule come first — they cannot advance the
|
|
60
|
+
* submodule main, so they never force a later submodule rebase.
|
|
61
|
+
* 2. Within each group, fewer touched top-level paths first (smaller blast radius).
|
|
62
|
+
* 3. Tie-break by node id for determinism.
|
|
63
|
+
*
|
|
64
|
+
* Submodule-touching siblings are intrinsically serial: each one that merges
|
|
65
|
+
* advances oss main, so the next must rebase. Ordering them last keeps the
|
|
66
|
+
* non-submodule merges (which never need a submodule rebase) clean and up front.
|
|
67
|
+
*/
|
|
68
|
+
export declare function orderMeshRefineBatchNodes(changeAreas: MeshRefineBatchNodeChangeArea[]): MeshRefineBatchOrderingResult;
|