@adhdev/daemon-core 0.9.82-rc.48 → 0.9.82-rc.481
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +220 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +23 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +51 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +64 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +48 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +152 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router-aggregate-status.d.ts +24 -0
- package/dist/commands/router-mesh-session-owner.d.ts +59 -0
- package/dist/commands/router-refine.d.ts +137 -0
- package/dist/commands/router-worktree-cleanup.d.ts +133 -0
- package/dist/commands/router.d.ts +204 -15
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +11 -0
- package/dist/config/config.d.ts +19 -0
- package/dist/config/mesh-config.d.ts +136 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/registry-resolver.d.ts +54 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/config/state-store.d.ts +30 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/cli-detector.d.ts +17 -0
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +26 -2
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +57 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +73 -17
- package/dist/index.js +52979 -18657
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +59496 -25355
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/debug-config.d.ts +16 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +230 -0
- package/dist/mesh/coordinator-prompt.d.ts +76 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +203 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-completion-synthesis.d.ts +4 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +104 -0
- package/dist/mesh/mesh-event-classify.d.ts +7 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +49 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +246 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +29 -0
- package/dist/mesh/mesh-init.d.ts +128 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +139 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +281 -0
- package/dist/mesh/mesh-node-identity.d.ts +310 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +158 -0
- package/dist/mesh/mesh-reconcile-acked-hold.d.ts +17 -0
- package/dist/mesh/mesh-reconcile-config.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-identity.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +80 -0
- package/dist/mesh/mesh-reconcile-v2-backstop.d.ts +16 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +428 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-remote-event-pull.d.ts +15 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +508 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +363 -5
- package/dist/mesh/preview-freshness.d.ts +28 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +46 -0
- package/dist/providers/chat-message-normalization.d.ts +58 -1
- package/dist/providers/cli-provider-effect-format.d.ts +30 -0
- package/dist/providers/cli-provider-history-dedup.d.ts +17 -0
- package/dist/providers/cli-provider-input-prompt.d.ts +12 -0
- package/dist/providers/cli-provider-instance-types.d.ts +45 -0
- package/dist/providers/cli-provider-instance.d.ts +406 -30
- package/dist/providers/cli-provider-status-helpers.d.ts +46 -0
- package/dist/providers/cli-provider-transcript-merge.d.ts +7 -0
- package/dist/providers/contracts.d.ts +149 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +79 -0
- package/dist/providers/native-history/antigravity-claim-registry.d.ts +39 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +44 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +29 -0
- package/dist/providers/provider-instance.d.ts +30 -1
- package/dist/providers/provider-loader.d.ts +42 -5
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +98 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +449 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +202 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +244 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +629 -12
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/session-host/managed-host.d.ts +64 -0
- package/dist/session-host/runtime-surface.d.ts +10 -16
- package/dist/sessions/registry.d.ts +26 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +98 -55
- package/dist/status/chat-tail-hot-sessions.d.ts +40 -0
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +26 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +5 -0
- package/package.json +11 -4
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +80 -14
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1282 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +954 -1144
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2767 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.d.ts +2 -0
- package/src/commands/cli-manager.ts +659 -27
- package/src/commands/handler.ts +845 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
- package/src/commands/high-family/mesh-events.ts +102 -0
- package/src/commands/high-family/mesh-status.ts +849 -0
- package/src/commands/high-family/types.ts +80 -0
- package/src/commands/low-family/coordinator-prompt.ts +72 -0
- package/src/commands/low-family/daemon-lifecycle.ts +120 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +282 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +241 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1287 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +153 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router-aggregate-status.ts +209 -0
- package/src/commands/router-mesh-session-owner.ts +114 -0
- package/src/commands/router-refine.ts +1711 -0
- package/src/commands/router-worktree-cleanup.ts +870 -0
- package/src/commands/router.ts +795 -4143
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +517 -24
- package/src/config/config.ts +30 -0
- package/src/config/mesh-config.ts +632 -23
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/registry-resolver.ts +100 -0
- package/src/config/repo-settings.ts +111 -0
- package/src/config/state-store.ts +55 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +94 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +112 -16
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +767 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +213 -13
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/debug-config.ts +25 -0
- package/src/logging/debug-trace.ts +7 -2
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +469 -0
- package/src/mesh/coordinator-prompt.ts +572 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +706 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-completion-synthesis.ts +416 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +284 -0
- package/src/mesh/mesh-event-classify.ts +78 -0
- package/src/mesh/mesh-event-forwarding.ts +2002 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +1494 -0
- package/src/mesh/mesh-events-stale.ts +452 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +43 -1035
- package/src/mesh/mesh-fast-forward.ts +856 -0
- package/src/mesh/mesh-host-ownership.ts +111 -0
- package/src/mesh/mesh-init.ts +350 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +898 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +695 -0
- package/src/mesh/mesh-node-identity.ts +2065 -0
- package/src/mesh/mesh-queue-assignment.ts +2263 -0
- package/src/mesh/mesh-reconcile-acked-hold.ts +230 -0
- package/src/mesh/mesh-reconcile-config.ts +66 -0
- package/src/mesh/mesh-reconcile-identity.ts +103 -0
- package/src/mesh/mesh-reconcile-loop.ts +1473 -0
- package/src/mesh/mesh-reconcile-v2-backstop.ts +62 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1686 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-remote-event-pull.ts +279 -0
- package/src/mesh/mesh-review-inbox.ts +308 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +2150 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1437 -147
- package/src/mesh/preview-freshness.ts +163 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +599 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +100 -6
- package/src/providers/chat-message-normalization.ts +126 -4
- package/src/providers/cli-provider-effect-format.ts +53 -0
- package/src/providers/cli-provider-history-dedup.ts +75 -0
- package/src/providers/cli-provider-input-prompt.ts +133 -0
- package/src/providers/cli-provider-instance-types.ts +131 -0
- package/src/providers/cli-provider-instance.ts +2709 -499
- package/src/providers/cli-provider-status-helpers.ts +123 -0
- package/src/providers/cli-provider-transcript-merge.ts +114 -0
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +160 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +105 -0
- package/src/providers/native-history/antigravity-claim-registry.ts +138 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +1275 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +617 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +312 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +24 -1
- package/src/providers/provider-loader.ts +700 -55
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +246 -0
- package/src/providers/spec/cli-adapter.ts +1064 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1528 -0
- package/src/providers/spec/fsm-evaluator.ts +290 -0
- package/src/providers/spec/fsm-loader.ts +128 -0
- package/src/providers/spec/fsm-types.ts +301 -0
- package/src/providers/spec/native-history-executor.ts +1241 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +284 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +868 -13
- package/src/runtime-defaults.ts +39 -0
- package/src/session-host/managed-host.ts +218 -0
- package/src/session-host/runtime-surface.ts +20 -80
- package/src/sessions/registry.ts +44 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +136 -55
- package/src/status/builders.ts +26 -6
- package/src/status/chat-tail-hot-sessions.ts +117 -2
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +95 -26
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo-shared declarative mesh config — `.adhdev/mesh.json`
|
|
3
|
+
*
|
|
4
|
+
* A repo-committed, machine-independent file carrying ONLY the repo-shared
|
|
5
|
+
* coordinator-prompt config and operating notes:
|
|
6
|
+
*
|
|
7
|
+
* - coordinator — systemPromptOverride (local wins, else repo) and
|
|
8
|
+
* systemPromptAppend (repo append + local append BOTH
|
|
9
|
+
* stack, repo first).
|
|
10
|
+
* - operatingNotes — repo-declared baseline notes merged with the runtime
|
|
11
|
+
* ledger notes; on duplicate text the ledger note wins.
|
|
12
|
+
* - limits — advisory-only (`maxNoteChars`, `maxNotes`,
|
|
13
|
+
* `coordinator.maxPromptChars`); recorded, never enforced in v1.
|
|
14
|
+
*
|
|
15
|
+
* POLICY IS NOT HERE. RepoMeshPolicy (the 15 scheduling/approval fields) is
|
|
16
|
+
* MACHINE-LOCAL only — it lives in meshes.json and is never sourced from, merged
|
|
17
|
+
* with, or overlaid by a repo file. There is no `policy` zone and no
|
|
18
|
+
* `policy.scheduling` overlay in mesh.json; the scheduler reads the stored
|
|
19
|
+
* machine-local policy directly. The repo file shapes the coordinator prompt and
|
|
20
|
+
* operating notes, nothing else.
|
|
21
|
+
*
|
|
22
|
+
* The coordinator/operatingNotes merge is **in-memory only**: the on-disk
|
|
23
|
+
* machine-local `meshes.json` is never mutated by this module.
|
|
24
|
+
*
|
|
25
|
+
* FILE SEPARATION: refine / worktree-bootstrap / change-impact configs live in
|
|
26
|
+
* their OWN `.adhdev/*` files with their own loaders — they are NOT inlined into
|
|
27
|
+
* mesh.json. `loadRepoSettings` (config/repo-settings.ts) assembles all of them
|
|
28
|
+
* into one object for consumers.
|
|
29
|
+
*
|
|
30
|
+
* SECURITY: declarative only. JSON/YAML is parsed; arbitrary JS (.js) is NOT
|
|
31
|
+
* supported, so loading a config can never execute code.
|
|
32
|
+
*/
|
|
33
|
+
import type { RepoMeshCoordinatorConfig, LocalMeshEntry } from '../repo-mesh-types.js';
|
|
34
|
+
import type { CoordinatorOperatingNote } from '../mesh/coordinator-prompt.js';
|
|
35
|
+
export interface RepoMeshDeclarativeCoordinatorConfig {
|
|
36
|
+
/** Full mesh-level system prompt override. Same semantics as
|
|
37
|
+
* RepoMeshCoordinatorConfig.systemPromptOverride; LOCAL-WINS. */
|
|
38
|
+
systemPromptOverride?: string;
|
|
39
|
+
/** Mesh-level append stacked after the base prompt. Both the repo append
|
|
40
|
+
* and the machine-local append apply; the repo append comes first. */
|
|
41
|
+
systemPromptAppend?: string;
|
|
42
|
+
/** Advisory only in v1 — recorded but never enforced. */
|
|
43
|
+
maxPromptChars?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface RepoMeshDeclarativeLimits {
|
|
46
|
+
/** Advisory only in v1 — recorded but never enforced. */
|
|
47
|
+
maxNoteChars?: number;
|
|
48
|
+
/** Advisory only in v1 — recorded but never enforced. */
|
|
49
|
+
maxNotes?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parsed + normalized `.adhdev/mesh.json` shape. Every field is optional except
|
|
53
|
+
* version so a repo can declare only the zone(s) it cares about. Policy is NOT a
|
|
54
|
+
* zone here — it is machine-local (meshes.json) only.
|
|
55
|
+
*/
|
|
56
|
+
export interface RepoMeshDeclarativeConfig {
|
|
57
|
+
version: 1;
|
|
58
|
+
coordinator?: RepoMeshDeclarativeCoordinatorConfig;
|
|
59
|
+
operatingNotes?: CoordinatorOperatingNote[];
|
|
60
|
+
limits?: RepoMeshDeclarativeLimits;
|
|
61
|
+
}
|
|
62
|
+
export interface RepoMeshJsonConfigLoadResult {
|
|
63
|
+
config?: RepoMeshDeclarativeConfig;
|
|
64
|
+
/** Relative location matched, or 'unavailable'/'invalid' marker. */
|
|
65
|
+
source: string;
|
|
66
|
+
sourceType: 'repo_file' | 'unavailable' | 'invalid';
|
|
67
|
+
/** Absolute path of the matched file, when one was read. */
|
|
68
|
+
path?: string;
|
|
69
|
+
error?: string;
|
|
70
|
+
}
|
|
71
|
+
export declare const MESH_JSON_CONFIG_LOCATIONS: string[];
|
|
72
|
+
export declare const MESH_JSON_CONFIG_SCHEMA: {
|
|
73
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
74
|
+
readonly title: "ADHDev Repo Mesh Declarative Config";
|
|
75
|
+
readonly type: "object";
|
|
76
|
+
readonly additionalProperties: false;
|
|
77
|
+
readonly required: readonly ["version"];
|
|
78
|
+
readonly properties: {
|
|
79
|
+
readonly version: {
|
|
80
|
+
readonly const: 1;
|
|
81
|
+
};
|
|
82
|
+
readonly coordinator: {
|
|
83
|
+
readonly type: "object";
|
|
84
|
+
readonly additionalProperties: false;
|
|
85
|
+
readonly properties: {
|
|
86
|
+
readonly systemPromptOverride: {
|
|
87
|
+
readonly type: "string";
|
|
88
|
+
};
|
|
89
|
+
readonly systemPromptAppend: {
|
|
90
|
+
readonly type: "string";
|
|
91
|
+
};
|
|
92
|
+
readonly maxPromptChars: {
|
|
93
|
+
readonly type: "number";
|
|
94
|
+
readonly minimum: 1;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
readonly operatingNotes: {
|
|
99
|
+
readonly type: "array";
|
|
100
|
+
readonly maxItems: 200;
|
|
101
|
+
readonly items: {
|
|
102
|
+
readonly type: "object";
|
|
103
|
+
readonly additionalProperties: false;
|
|
104
|
+
readonly required: readonly ["text"];
|
|
105
|
+
readonly properties: {
|
|
106
|
+
readonly text: {
|
|
107
|
+
readonly type: "string";
|
|
108
|
+
readonly minLength: 1;
|
|
109
|
+
};
|
|
110
|
+
readonly category: {
|
|
111
|
+
readonly enum: readonly ["provider_quirk", "pattern_to_avoid", "recovery_lesson"];
|
|
112
|
+
};
|
|
113
|
+
readonly createdAt: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
};
|
|
116
|
+
readonly sourceCoordinator: {
|
|
117
|
+
readonly type: "string";
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
readonly limits: {
|
|
123
|
+
readonly type: "object";
|
|
124
|
+
readonly additionalProperties: false;
|
|
125
|
+
readonly properties: {
|
|
126
|
+
readonly maxNoteChars: {
|
|
127
|
+
readonly type: "number";
|
|
128
|
+
readonly minimum: 1;
|
|
129
|
+
};
|
|
130
|
+
readonly maxNotes: {
|
|
131
|
+
readonly type: "number";
|
|
132
|
+
readonly minimum: 1;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Validate + normalize a parsed `.adhdev/mesh.json` object into a typed
|
|
140
|
+
* RepoMeshDeclarativeConfig. Returns the config plus any non-fatal warnings;
|
|
141
|
+
* `valid` is false only when the document is structurally unusable (not an
|
|
142
|
+
* object / wrong version). Unknown top-level keys are tolerated (dropped) so a
|
|
143
|
+
* newer repo file authored against a future schema still loads its known zones.
|
|
144
|
+
*/
|
|
145
|
+
export declare function normalizeRepoMeshDeclarativeConfig(parsed: unknown): {
|
|
146
|
+
valid: boolean;
|
|
147
|
+
config?: RepoMeshDeclarativeConfig;
|
|
148
|
+
errors: string[];
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Load the repo-shared declarative mesh config for a coordinator workspace.
|
|
152
|
+
*
|
|
153
|
+
* Resolution: the coordinator node workspace is checked first; if it carries no
|
|
154
|
+
* `.adhdev/mesh.json`, the calling process cwd is tried as a fallback (per the
|
|
155
|
+
* design: "workspace path = coordinator node workspace's .adhdev/mesh.json,
|
|
156
|
+
* else calling cwd"). The first existing file across both bases (and the
|
|
157
|
+
* json/yaml/yml variants) wins.
|
|
158
|
+
*
|
|
159
|
+
* Read/parse errors never throw — they resolve to a sourceType:'invalid'
|
|
160
|
+
* result so a broken repo file degrades to "no repo base" instead of blocking
|
|
161
|
+
* coordinator launch.
|
|
162
|
+
*/
|
|
163
|
+
export declare function loadRepoMeshJsonConfig(workspace?: string): RepoMeshJsonConfigLoadResult;
|
|
164
|
+
/**
|
|
165
|
+
* Effective coordinator config. systemPromptOverride: local wins, else repo.
|
|
166
|
+
* systemPromptAppend: repo append + local append BOTH stack (repo first). Other
|
|
167
|
+
* coordinator fields (providerType, preferredNodeId, …) are carried from the
|
|
168
|
+
* machine-local config unchanged.
|
|
169
|
+
*/
|
|
170
|
+
export declare function mergeEffectiveCoordinatorConfig(repoCoord: RepoMeshDeclarativeCoordinatorConfig | undefined, localCoord: RepoMeshCoordinatorConfig | undefined): RepoMeshCoordinatorConfig;
|
|
171
|
+
/**
|
|
172
|
+
* Effective operating notes = repo-declared baseline ⊕ runtime ledger notes.
|
|
173
|
+
* Dedup by trimmed text with the LEDGER note winning (repo duplicates dropped),
|
|
174
|
+
* so a runtime note's freshest wording/category survives. Order: repo baseline
|
|
175
|
+
* first, then ledger notes. Returns undefined when nothing usable remains so the
|
|
176
|
+
* prompt's "## Operating Notes" section is omitted exactly as before.
|
|
177
|
+
*/
|
|
178
|
+
export declare function mergeEffectiveOperatingNotes(repoNotes: CoordinatorOperatingNote[] | undefined, ledgerNotes: CoordinatorOperatingNote[] | undefined): CoordinatorOperatingNote[] | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Produce an in-memory effective mesh by layering the repo declarative config
|
|
181
|
+
* UNDER the machine-local mesh entry — coordinator zone ONLY. Policy is
|
|
182
|
+
* machine-local and is left exactly as the stored mesh carries it (never sourced
|
|
183
|
+
* from the repo file). Returns a new object; the input mesh and on-disk
|
|
184
|
+
* meshes.json are never mutated. operatingNotes are merged separately at launch
|
|
185
|
+
* (they ride the prompt context, not the mesh).
|
|
186
|
+
*/
|
|
187
|
+
export declare function applyRepoMeshConfig<T extends Pick<LocalMeshEntry, 'coordinator'>>(mesh: T, repoConfig: RepoMeshDeclarativeConfig | null | undefined): T;
|
|
188
|
+
/**
|
|
189
|
+
* Build a `.adhdev/mesh.json` DRAFT from a machine-local mesh entry. This is a
|
|
190
|
+
* scaffold for the operator to review and commit — NOT an automatic migration.
|
|
191
|
+
* It captures the coordinator prompt override/append so a repo can adopt the
|
|
192
|
+
* current machine's prompt customization as the shared base. Policy is NOT
|
|
193
|
+
* exported — it is machine-local only and has no place in mesh.json. Operating
|
|
194
|
+
* notes are intentionally NOT exported either: those are runtime ledger lessons,
|
|
195
|
+
* and a repo should declare baseline notes deliberately.
|
|
196
|
+
*/
|
|
197
|
+
export declare function buildMeshJsonConfigScaffold(mesh: Pick<LocalMeshEntry, 'coordinator'>): RepoMeshDeclarativeConfig;
|
|
198
|
+
/** Serialize a scaffold to the canonical 2-space JSON draft text. */
|
|
199
|
+
export declare function serializeMeshJsonConfigScaffold(config: RepoMeshDeclarativeConfig): string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry / provider-distribution URL resolver.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for the ADHDev provider *registry* base URL and the
|
|
5
|
+
* provider *tarball* (GitHub) URL. Self-hosters can repoint both away from the
|
|
6
|
+
* vendor defaults so the daemon never phones home to `api.adhf.dev` /
|
|
7
|
+
* `github.com/vilmire/adhdev-providers`.
|
|
8
|
+
*
|
|
9
|
+
* Resolution priority (highest first):
|
|
10
|
+
* 1. Explicit config field — `config.registryUrl` / `config.providerTarballUrl`
|
|
11
|
+
* 2. Environment variable — `ADHDEV_REGISTRY_URL` / `ADHDEV_PROVIDER_TARBALL_URL`
|
|
12
|
+
* 3. Vendor default — existing URLs (unchanged for default users)
|
|
13
|
+
*
|
|
14
|
+
* Default users get byte-identical behavior: the vendor defaults equal the
|
|
15
|
+
* literals these functions replaced.
|
|
16
|
+
*/
|
|
17
|
+
/** Vendor default registry base URL (no trailing slash). */
|
|
18
|
+
export declare const DEFAULT_REGISTRY_BASE_URL = "https://api.adhf.dev/api/v1/registry";
|
|
19
|
+
/** Vendor default provider tarball URL (GitHub main branch archive). */
|
|
20
|
+
export declare const DEFAULT_PROVIDER_TARBALL_URL = "https://github.com/vilmire/adhdev-providers/archive/refs/heads/main.tar.gz";
|
|
21
|
+
/** Env var that overrides the registry base URL. */
|
|
22
|
+
export declare const REGISTRY_URL_ENV_VAR = "ADHDEV_REGISTRY_URL";
|
|
23
|
+
/** Env var that overrides the provider tarball URL. */
|
|
24
|
+
export declare const PROVIDER_TARBALL_URL_ENV_VAR = "ADHDEV_PROVIDER_TARBALL_URL";
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the provider registry base URL.
|
|
27
|
+
*
|
|
28
|
+
* @param configuredUrl explicit config value (config.registryUrl); highest priority.
|
|
29
|
+
* @param env process env source (defaults to process.env; injectable for tests).
|
|
30
|
+
* @returns the resolved base URL with any trailing slash stripped, so callers
|
|
31
|
+
* can safely append `/providers`, `/providers/<type>`, etc.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveRegistryBaseUrl(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): string;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the provider tarball (archive) URL.
|
|
36
|
+
*
|
|
37
|
+
* @param configuredUrl explicit config value (config.providerTarballUrl); highest priority.
|
|
38
|
+
* @param env process env source (defaults to process.env; injectable for tests).
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveProviderTarballUrl(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): string;
|
|
41
|
+
/** Parsed tarball request target for callers that issue raw hostname/path requests. */
|
|
42
|
+
export interface TarballRequestTarget {
|
|
43
|
+
/** Full resolved tarball URL. */
|
|
44
|
+
url: string;
|
|
45
|
+
/** Hostname component (e.g. `github.com`). */
|
|
46
|
+
hostname: string;
|
|
47
|
+
/** Path component including any query string (e.g. `/vilmire/...tar.gz`). */
|
|
48
|
+
path: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve the provider tarball URL and split it into `{ url, hostname, path }`
|
|
52
|
+
* for callers that build raw `https.request` options (e.g. HEAD ETag probes).
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveProviderTarballTarget(configuredUrl?: string | null, env?: NodeJS.ProcessEnv): TarballRequestTarget;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo Settings — one unified loader over the repo-committed `.adhdev/*` config
|
|
3
|
+
* files (the "single source" assembly point).
|
|
4
|
+
*
|
|
5
|
+
* DESIGN (option B — file separation preserved): the repo keeps its declarative
|
|
6
|
+
* config in SEPARATE files, each with its own dedicated loader:
|
|
7
|
+
*
|
|
8
|
+
* .adhdev/mesh.json → loadRepoMeshJsonConfig (coordinator + operatingNotes)
|
|
9
|
+
* .adhdev/refine.json → loadMeshRefineConfig (Refinery validation)
|
|
10
|
+
* .adhdev/worktree_bootstrap.json → loadMeshWorktreeBootstrapConfig
|
|
11
|
+
* .adhdev/change-impact.json → loadChangeImpactConfig
|
|
12
|
+
*
|
|
13
|
+
* Nothing is inlined into mesh.json. `loadRepoSettings` simply CALLS each
|
|
14
|
+
* dedicated loader and assembles the results into one `RepoSettings` object so a
|
|
15
|
+
* consumer can read every repo-shared setting through a single call instead of
|
|
16
|
+
* threading four loaders. The per-file loaders remain the source of truth (and
|
|
17
|
+
* stay independently usable); this is a convenience aggregator, not a new schema.
|
|
18
|
+
*
|
|
19
|
+
* IMPORTANT — policy is NOT here. RepoMeshPolicy (the 15 scheduling/approval
|
|
20
|
+
* fields) is MACHINE-LOCAL only: it lives in meshes.json and is never sourced
|
|
21
|
+
* from or merged with a repo file. mesh.json carries only coordinator prompt
|
|
22
|
+
* config + operating notes (+ advisory limits).
|
|
23
|
+
*
|
|
24
|
+
* The refine/worktree-bootstrap loaders also honor a machine-local INLINE seam
|
|
25
|
+
* (mesh.refineConfig / mesh.policy.worktreeBootstrap, etc.) — that seam is for
|
|
26
|
+
* machine-local config and is unchanged here; mesh.json gains no such zone.
|
|
27
|
+
*/
|
|
28
|
+
import { type RepoMeshDeclarativeCoordinatorConfig, type RepoMeshDeclarativeLimits, type RepoMeshJsonConfigLoadResult } from './mesh-json-config.js';
|
|
29
|
+
import { type MeshRefineConfigLoadResult } from '../mesh/refine-config.js';
|
|
30
|
+
import { type WorktreeBootstrapConfigLoadResult } from '../mesh/worktree-bootstrap-config.js';
|
|
31
|
+
import { type ChangeImpactConfigLoadResult } from '../git/change-impact-config.js';
|
|
32
|
+
import type { CoordinatorOperatingNote } from '../mesh/coordinator-prompt.js';
|
|
33
|
+
export interface LoadRepoSettingsOptions {
|
|
34
|
+
/** Workspace path whose `.adhdev/*` files are resolved (mesh.json / refine / bootstrap). */
|
|
35
|
+
workspace: string;
|
|
36
|
+
/**
|
|
37
|
+
* Machine-local mesh entry, consulted ONLY for the INLINE seam of the
|
|
38
|
+
* refine / worktree-bootstrap loaders (mesh.refineConfig etc.). Optional —
|
|
39
|
+
* omit it and only the repo files are considered. NEVER used to source policy.
|
|
40
|
+
*/
|
|
41
|
+
mesh?: any;
|
|
42
|
+
/**
|
|
43
|
+
* Repo root for change-impact resolution. Defaults to `workspace` when omitted
|
|
44
|
+
* (change-impact compares the daemon build commit against the workspace HEAD).
|
|
45
|
+
*/
|
|
46
|
+
repoRoot?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The assembled repo-shared settings. Each sub-config carries its own load
|
|
50
|
+
* result (source / sourceType / error) so a consumer can tell "absent" from
|
|
51
|
+
* "invalid" per file. `coordinator` / `operatingNotes` / `limits` are lifted out
|
|
52
|
+
* of the mesh.json load result for convenience; `meshJson` keeps the full result
|
|
53
|
+
* (e.g. for the `sourceType === 'invalid'` warning on coordinator launch).
|
|
54
|
+
*/
|
|
55
|
+
export interface RepoSettings {
|
|
56
|
+
/** Repo-shared coordinator prompt config (override/append) from `.adhdev/mesh.json`. */
|
|
57
|
+
coordinator?: RepoMeshDeclarativeCoordinatorConfig;
|
|
58
|
+
/** Repo-declared baseline operating notes from `.adhdev/mesh.json`. */
|
|
59
|
+
operatingNotes?: CoordinatorOperatingNote[];
|
|
60
|
+
/** Advisory-only limits from `.adhdev/mesh.json` (recorded, not enforced in v1). */
|
|
61
|
+
limits?: RepoMeshDeclarativeLimits;
|
|
62
|
+
/** Full `.adhdev/mesh.json` declarative load result (coordinator/operatingNotes source). */
|
|
63
|
+
meshJson: RepoMeshJsonConfigLoadResult;
|
|
64
|
+
/** `.adhdev/refine.json` Refinery validation config load result. */
|
|
65
|
+
refine: MeshRefineConfigLoadResult;
|
|
66
|
+
/** `.adhdev/worktree_bootstrap.json` bootstrap config load result. */
|
|
67
|
+
worktreeBootstrap: WorktreeBootstrapConfigLoadResult;
|
|
68
|
+
/** `.adhdev/change-impact.json` change-impact config load result. */
|
|
69
|
+
changeImpact: ChangeImpactConfigLoadResult;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Load every repo-committed `.adhdev/*` setting for a workspace and assemble them
|
|
73
|
+
* into one object. Each dedicated loader degrades to an `unavailable`/`invalid`
|
|
74
|
+
* load result rather than throwing, so this never throws on a missing or broken
|
|
75
|
+
* file — a consumer inspects the per-sub-config `sourceType`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function loadRepoSettings(opts: LoadRepoSettingsOptions): RepoSettings;
|
|
@@ -21,6 +21,17 @@ export interface DaemonState {
|
|
|
21
21
|
sessionNotificationDismissals: Record<string, string>;
|
|
22
22
|
/** Current notification unread override ids keyed by stable session target */
|
|
23
23
|
sessionNotificationUnreadOverrides: Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolved provider-native conversation id for a live session, keyed by the
|
|
26
|
+
* ADHDev/mesh session id. Persisted so it survives a daemon restart: a
|
|
27
|
+
* provider whose on-disk store is keyed by an internally-generated id it
|
|
28
|
+
* never exposes on the CLI (antigravity — no --session-id) can then exact-bind
|
|
29
|
+
* its conversation .db after restart instead of re-running the mtime/recency
|
|
30
|
+
* heuristic, which drops the store once idle and collapses read_chat to the
|
|
31
|
+
* PTY parse (user echo only, assistant tail lost). Mirrors the in-memory read
|
|
32
|
+
* pin (chat-commands-read lastBoundProviderSessionIdByMeshSession).
|
|
33
|
+
*/
|
|
34
|
+
sessionProviderSessionPins: Record<string, string>;
|
|
24
35
|
}
|
|
25
36
|
/**
|
|
26
37
|
* Load runtime state from disk
|
|
@@ -34,3 +45,22 @@ export declare function saveState(state: DaemonState): void;
|
|
|
34
45
|
* Reset runtime state
|
|
35
46
|
*/
|
|
36
47
|
export declare function resetState(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Load the full persisted session→provider-conversation pin map (sessionId →
|
|
50
|
+
* provider-native conversation id). Survives daemon restart. Empty object when
|
|
51
|
+
* none recorded or the state file is unreadable.
|
|
52
|
+
*/
|
|
53
|
+
export declare function loadPersistedProviderSessionPins(): Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Persist one session→provider-conversation pin. Load-mutate-save against the
|
|
56
|
+
* on-disk state so it survives a daemon restart; a no-op when the value already
|
|
57
|
+
* matches (avoids rewriting state.json on every read). Never clears a pin with an
|
|
58
|
+
* empty value.
|
|
59
|
+
*/
|
|
60
|
+
export declare function recordPersistedProviderSessionPin(sessionId: string, providerSessionId: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Test-only: drop all persisted session→provider-conversation pins from disk.
|
|
63
|
+
* Used by tests that assert a clean "no pin" state so a sibling test's write to
|
|
64
|
+
* the shared per-process ADHDEV_CONFIG_DIR does not leak in.
|
|
65
|
+
*/
|
|
66
|
+
export declare function clearPersistedProviderSessionPins(): void;
|
|
@@ -103,8 +103,6 @@ export declare class DevServer implements DevServerContext {
|
|
|
103
103
|
getLatestScriptVersionDir(scriptsDir: string): string | null;
|
|
104
104
|
private resolveAutoImplWritableProviderDir;
|
|
105
105
|
private handleAutoImplement;
|
|
106
|
-
private buildAutoImplPrompt;
|
|
107
|
-
private buildCliAutoImplPrompt;
|
|
108
106
|
private handleAutoImplSSE;
|
|
109
107
|
private handleAutoImplCancel;
|
|
110
108
|
sendAutoImplSSE(msg: {
|
|
@@ -29,3 +29,20 @@ export declare function detectCLIs(providerLoader?: ProviderLoader, options?: {
|
|
|
29
29
|
export declare function detectCLI(cliId: string, providerLoader?: ProviderLoader, options?: {
|
|
30
30
|
includeVersion?: boolean;
|
|
31
31
|
}): Promise<CLIInfo | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Fold a detected CLIInfo[] into the `{ providerId: version }` map surfaced as a
|
|
34
|
+
* node's providerVersions (see RepoMeshNodeCapabilities.providerVersions). Only
|
|
35
|
+
* installed providers that produced a parseable version string are included, so a
|
|
36
|
+
* missing entry means "not installed or version unknown" — never a fabricated value.
|
|
37
|
+
* Pure/deterministic: the same detection input always yields the same map, which is
|
|
38
|
+
* what the git_status envelope carries and the mesh_status skew check compares.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildProviderVersions(detected: CLIInfo[]): Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* Return the current cached provider-versions map for this daemon, triggering a
|
|
43
|
+
* lazy background refresh when the snapshot is stale/cold. Never blocks: returns
|
|
44
|
+
* whatever is currently cached (an empty object before the first refresh lands).
|
|
45
|
+
* This is the source the git_status envelope reads to self-report a node's
|
|
46
|
+
* provider versions to the mesh coordinator.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getCachedProviderVersions(providerLoader?: ProviderLoader): Record<string, string>;
|
|
@@ -32,4 +32,17 @@ export interface IDEDefinition {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
export declare function registerIDEDefinition(def: IDEDefinition): void;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve an IDE version on demand (NOT at boot).
|
|
37
|
+
*
|
|
38
|
+
* Order of preference, all spawn-free where possible:
|
|
39
|
+
* 1. win32: read the bundled product.json/package.json next to the exe.
|
|
40
|
+
* 2. Otherwise spawn `<cli> --version` — but ONLY when the binary is not a
|
|
41
|
+
* known GUI executable (the #4 guard), so we never boot an IDE window.
|
|
42
|
+
*
|
|
43
|
+
* `win32ProcessNames` is provider.json `processNames.win32` (type → exe names),
|
|
44
|
+
* used to recognise GUI executables. Callers that have a ProviderLoader can
|
|
45
|
+
* pass `providerLoader.getWinProcessNames()`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getIdeVersion(cliCommand: string, win32ProcessNames?: Record<string, string[]>): Promise<string | null>;
|
|
35
48
|
export declare function detectIDEs(providerLoader?: ProviderLoader): Promise<IDEInfo[]>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADHDev — Windows IDE version detection (execution-free)
|
|
3
|
+
*
|
|
4
|
+
* On Windows the resolved "CLI" for a VS Code fork (Cursor, Antigravity, …)
|
|
5
|
+
* frequently resolves to the GUI Electron executable itself, because the
|
|
6
|
+
* case-insensitive filesystem matches `...\cursor\cursor.exe` against the
|
|
7
|
+
* real `Cursor.exe`. Running `<that exe> --version` boots the GUI instead of
|
|
8
|
+
* printing a version (Electron ignores the unknown flag and opens a window).
|
|
9
|
+
*
|
|
10
|
+
* To learn the version WITHOUT spawning anything, we read the bundled
|
|
11
|
+
* `product.json` / `package.json` that ship next to the executable. VS Code
|
|
12
|
+
* forks embed their version there. This is a pure filesystem read.
|
|
13
|
+
*
|
|
14
|
+
* It also exposes a guard so any remaining `--version` exec path can refuse to
|
|
15
|
+
* spawn a binary that is a known GUI executable for an IDE provider.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Read an IDE version from disk (no process spawn).
|
|
19
|
+
*
|
|
20
|
+
* @param exePath Absolute path to the GUI executable (or any path inside the
|
|
21
|
+
* IDE install dir — we read the manifest relative to its directory).
|
|
22
|
+
* @returns The version string, or null if it could not be determined.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readWin32IdeVersionFromDisk(exePath: string): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* True when `binPath` resolves to a known GUI executable for some IDE.
|
|
27
|
+
*
|
|
28
|
+
* Used as a safety net: any code path about to run `<bin> --version` must skip
|
|
29
|
+
* the spawn when the binary is actually the GUI Electron exe, since that would
|
|
30
|
+
* launch the IDE window. Comparison is case-insensitive on the basename
|
|
31
|
+
* (Windows filesystem semantics) against every provider's `processNames.win32`.
|
|
32
|
+
*
|
|
33
|
+
* @param binPath Resolved binary path that would be exec'd.
|
|
34
|
+
* @param win32ProcessNames Map of provider type → list of GUI exe names
|
|
35
|
+
* (from provider.json `processNames.win32`, e.g. `["Cursor.exe"]`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function isKnownWin32GuiExe(binPath: string | null | undefined, win32ProcessNames: Record<string, string[]>): boolean;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Change Impact" — config-driven classification of which git changes between the
|
|
3
|
+
* live daemon's build commit and the workspace HEAD actually require a daemon
|
|
4
|
+
* rebuild/restart (vs. a web-only redeploy, vs. nothing).
|
|
5
|
+
*
|
|
6
|
+
* The daemon-core git surface only knows the FACTS (which files / packages changed
|
|
7
|
+
* between buildCommit..HEAD). The POLICY — which packages are daemon-runtime, which
|
|
8
|
+
* are web-only, which root files are non-runtime, and what command to recommend —
|
|
9
|
+
* is declarative config injected from outside. This keeps git-status.ts repo-agnostic
|
|
10
|
+
* while preserving ADHDev's exact built-in behavior when no config is present.
|
|
11
|
+
*
|
|
12
|
+
* SECURITY: config is declarative only. JSON/YAML are parsed; arbitrary JS config
|
|
13
|
+
* (.js) is intentionally NOT supported, so loading a config can never execute code.
|
|
14
|
+
*/
|
|
15
|
+
/** A change-impact classification bucket. */
|
|
16
|
+
export type ChangeImpactKind = 'daemon' | 'web' | 'none';
|
|
17
|
+
/**
|
|
18
|
+
* Recommended action for a given impact classification. `recommendedAction` is the
|
|
19
|
+
* stable classification key (always one of daemon|web|none, NOT config-overridable);
|
|
20
|
+
* config customizes only the human-facing `recommendedCommand` recipe.
|
|
21
|
+
*/
|
|
22
|
+
export interface ChangeImpactTarget {
|
|
23
|
+
/** Human-facing command/recipe to act on the impact (e.g. deploy + restart). */
|
|
24
|
+
recommendedCommand: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ChangeImpactConfig {
|
|
27
|
+
/**
|
|
28
|
+
* Package names (the `<name>` in `packages/<name>/`) whose change means the
|
|
29
|
+
* daemon runtime is stale and must be rebuilt/redeployed + restarted. When
|
|
30
|
+
* provided, this REPLACES the built-in daemon-runtime set.
|
|
31
|
+
*/
|
|
32
|
+
daemonRuntimePackages?: string[];
|
|
33
|
+
/**
|
|
34
|
+
* Package names that are web-only — a change to one does not require a daemon
|
|
35
|
+
* restart, only a web redeploy. When provided, this REPLACES the built-in
|
|
36
|
+
* web-only set.
|
|
37
|
+
*/
|
|
38
|
+
webOnlyPackages?: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Glob patterns for root-level (non-package) files that demonstrably cannot
|
|
41
|
+
* change what the daemon runtime executes (markers, docs, license text). These
|
|
42
|
+
* are added on top of the built-in non-runtime root-file detection.
|
|
43
|
+
*/
|
|
44
|
+
nonRuntimeRootFilePatterns?: string[];
|
|
45
|
+
/** Recommended action/command per impact classification. Missing keys fall back to built-in defaults. */
|
|
46
|
+
impactTargets?: Partial<Record<ChangeImpactKind, ChangeImpactTarget>>;
|
|
47
|
+
}
|
|
48
|
+
export interface ChangeImpactConfigLoadResult {
|
|
49
|
+
config?: ChangeImpactConfig;
|
|
50
|
+
source: string;
|
|
51
|
+
sourceType: 'repo_file' | 'unavailable' | 'invalid';
|
|
52
|
+
path?: string;
|
|
53
|
+
error?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Stable identity of the config SOURCE, used as part of a cache key so a config
|
|
56
|
+
* edit invalidates any cached impact evaluation. Combines the resolved path and
|
|
57
|
+
* its mtime (or the path for the unavailable/invalid case).
|
|
58
|
+
*/
|
|
59
|
+
sourceKey: string;
|
|
60
|
+
}
|
|
61
|
+
export declare const CHANGE_IMPACT_CONFIG_LOCATIONS: string[];
|
|
62
|
+
export declare const CHANGE_IMPACT_CONFIG_SCHEMA: {
|
|
63
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
64
|
+
readonly title: "ADHDev Change Impact Config";
|
|
65
|
+
readonly type: "object";
|
|
66
|
+
readonly additionalProperties: false;
|
|
67
|
+
readonly properties: {
|
|
68
|
+
readonly daemonRuntimePackages: {
|
|
69
|
+
readonly type: "array";
|
|
70
|
+
readonly items: {
|
|
71
|
+
readonly type: "string";
|
|
72
|
+
readonly minLength: 1;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
readonly webOnlyPackages: {
|
|
76
|
+
readonly type: "array";
|
|
77
|
+
readonly items: {
|
|
78
|
+
readonly type: "string";
|
|
79
|
+
readonly minLength: 1;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
readonly nonRuntimeRootFilePatterns: {
|
|
83
|
+
readonly type: "array";
|
|
84
|
+
readonly items: {
|
|
85
|
+
readonly type: "string";
|
|
86
|
+
readonly minLength: 1;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
readonly impactTargets: {
|
|
90
|
+
readonly type: "object";
|
|
91
|
+
readonly additionalProperties: false;
|
|
92
|
+
readonly properties: {
|
|
93
|
+
readonly daemon: {
|
|
94
|
+
readonly $ref: "#/$defs/target";
|
|
95
|
+
};
|
|
96
|
+
readonly web: {
|
|
97
|
+
readonly $ref: "#/$defs/target";
|
|
98
|
+
};
|
|
99
|
+
readonly none: {
|
|
100
|
+
readonly $ref: "#/$defs/target";
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
readonly $defs: {
|
|
106
|
+
readonly target: {
|
|
107
|
+
readonly type: "object";
|
|
108
|
+
readonly additionalProperties: false;
|
|
109
|
+
readonly required: readonly ["recommendedCommand"];
|
|
110
|
+
readonly properties: {
|
|
111
|
+
readonly recommendedCommand: {
|
|
112
|
+
readonly type: "string";
|
|
113
|
+
readonly minLength: 1;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
export declare function validateChangeImpactConfig(raw: unknown, source?: string): {
|
|
120
|
+
valid: boolean;
|
|
121
|
+
errors: string[];
|
|
122
|
+
config?: ChangeImpactConfig;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Locate and load the Change Impact config for a repo root. Declarative only —
|
|
126
|
+
* never executes config. Returns a sourceKey suitable for cache invalidation:
|
|
127
|
+
* config path + mtime, or the sentinel for the missing/invalid case.
|
|
128
|
+
*/
|
|
129
|
+
export declare function loadChangeImpactConfig(repoRoot: string): ChangeImpactConfigLoadResult;
|
|
130
|
+
/**
|
|
131
|
+
* Translate a config glob pattern into a RegExp matched against a forward-slash
|
|
132
|
+
* file path. Supports `**` (any path segments), `*` (any chars except `/`), and
|
|
133
|
+
* `?` (single non-slash char). No brace/character-class expansion — declarative,
|
|
134
|
+
* minimal, predictable. All other characters are matched literally.
|
|
135
|
+
*/
|
|
136
|
+
export declare function globToRegExp(pattern: string): RegExp;
|
|
137
|
+
export interface ChangeImpactConfigSuggestion {
|
|
138
|
+
/** A non-executable, declarative config draft a human can save verbatim. */
|
|
139
|
+
suggestedConfig: ChangeImpactConfig;
|
|
140
|
+
/** Per-field human-facing rationale for the proposed classification. */
|
|
141
|
+
notes: string[];
|
|
142
|
+
/** Package directories discovered under `packages/` (and `oss/packages/`). */
|
|
143
|
+
discoveredPackages: {
|
|
144
|
+
daemon: string[];
|
|
145
|
+
web: string[];
|
|
146
|
+
unclassified: string[];
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Inspect a repo's package layout and propose a reasonable, declarative Change
|
|
151
|
+
* Impact config draft. This is heuristic scaffold ONLY — it never executes
|
|
152
|
+
* anything and the draft must be reviewed/saved by a human before it takes
|
|
153
|
+
* effect. The heuristic mirrors ADHDev's own conventions:
|
|
154
|
+
* - `web-*` / `*-web` packages → web-only (web redeploy, no daemon restart)
|
|
155
|
+
* - everything else under packages/ → daemon-runtime (rebuild + restart)
|
|
156
|
+
* - docs/license/marker root files → non-runtime
|
|
157
|
+
* Callers are expected to prune the draft to their actual runtime topology.
|
|
158
|
+
*/
|
|
159
|
+
export declare function suggestChangeImpactConfig(repoRoot: string): ChangeImpactConfigSuggestion;
|