@adhdev/daemon-core 0.9.82-rc.45 → 0.9.82-rc.451
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +7 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +25 -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 +29 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +152 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +279 -2
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +9 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/mesh-config.d.ts +129 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +12 -1
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +57 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +66 -14
- package/dist/index.js +49753 -18414
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +49614 -18438
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +164 -0
- package/dist/mesh/coordinator-prompt.d.ts +89 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +174 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
- package/dist/mesh/mesh-event-classify.d.ts +5 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +69 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +29 -0
- package/dist/mesh/mesh-init.d.ts +128 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +115 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +189 -0
- package/dist/mesh/mesh-node-identity.d.ts +306 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +79 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +428 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +450 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +300 -5
- package/dist/mesh/preview-freshness.d.ts +18 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +20 -0
- package/dist/providers/chat-message-normalization.d.ts +32 -1
- package/dist/providers/cli-provider-instance.d.ts +254 -3
- package/dist/providers/contracts.d.ts +149 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +63 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +126 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +27 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +29 -0
- package/dist/providers/provider-instance.d.ts +23 -1
- package/dist/providers/provider-loader.d.ts +26 -4
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +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 +444 -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 +222 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +519 -13
- 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 +6 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +86 -55
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +26 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +5 -0
- package/package.json +7 -3
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +63 -12
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1246 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2488 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.ts +596 -27
- package/src/commands/handler.ts +841 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +680 -0
- package/src/commands/high-family/mesh-events.ts +89 -0
- package/src/commands/high-family/mesh-status.ts +822 -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 +107 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +274 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +238 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1253 -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.ts +2893 -3536
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +493 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +619 -23
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/repo-settings.ts +111 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +28 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +78 -15
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +767 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +198 -12
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +338 -0
- package/src/mesh/coordinator-prompt.ts +416 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +645 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +315 -0
- package/src/mesh/mesh-event-classify.ts +51 -0
- package/src/mesh/mesh-event-forwarding.ts +1897 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +656 -0
- package/src/mesh/mesh-events-stale.ts +389 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +33 -1035
- package/src/mesh/mesh-fast-forward.ts +843 -0
- package/src/mesh/mesh-host-ownership.ts +111 -0
- package/src/mesh/mesh-init.ts +350 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +841 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +449 -0
- package/src/mesh/mesh-node-identity.ts +1985 -0
- package/src/mesh/mesh-queue-assignment.ts +1924 -0
- package/src/mesh/mesh-reconcile-loop.ts +2018 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1673 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-review-inbox.ts +307 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +1853 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1254 -141
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +450 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +57 -5
- package/src/providers/chat-message-normalization.ts +92 -4
- package/src/providers/cli-provider-instance.ts +2177 -107
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +160 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +85 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +1043 -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 +373 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +260 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +19 -1
- package/src/providers/provider-loader.ts +668 -50
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +509 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +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 +1481 -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 +1174 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +262 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +758 -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 +6 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +124 -55
- package/src/status/builders.ts +26 -6
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +95 -26
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
package/src/index.ts
CHANGED
|
@@ -85,12 +85,32 @@ export type {
|
|
|
85
85
|
InputMediaType,
|
|
86
86
|
} from './shared-types.js';
|
|
87
87
|
|
|
88
|
+
export type {
|
|
89
|
+
InteractivePrompt,
|
|
90
|
+
InteractiveQuestion,
|
|
91
|
+
InteractiveOption,
|
|
92
|
+
InteractivePromptResponse,
|
|
93
|
+
InteractiveAnswer,
|
|
94
|
+
} from './providers/types/interactive-prompt.js';
|
|
95
|
+
export {
|
|
96
|
+
normalizeInteractivePrompt,
|
|
97
|
+
normalizeInteractivePromptResponse,
|
|
98
|
+
buildClaudeInteractiveToolResult,
|
|
99
|
+
interactivePromptFromClaudeAskUserQuestion,
|
|
100
|
+
detectClaudeAskUserQuestionPromptFromJson,
|
|
101
|
+
} from './providers/types/interactive-prompt.js';
|
|
102
|
+
|
|
88
103
|
// ── Repo Mesh Types (cross-package) ──
|
|
89
104
|
export type {
|
|
90
105
|
RepoMesh,
|
|
106
|
+
RepoMeshDaemonRole,
|
|
107
|
+
RepoMeshHostMetadata,
|
|
108
|
+
RepoMeshHostPairingMetadata,
|
|
109
|
+
RepoMeshHostStatus,
|
|
91
110
|
RepoMeshNode,
|
|
92
111
|
RepoMeshNodeHealth,
|
|
93
112
|
RepoMeshPolicy,
|
|
113
|
+
RepoMeshMagiSessionCleanupMode,
|
|
94
114
|
RepoMeshNodePolicy,
|
|
95
115
|
RepoMeshRelatedRepo,
|
|
96
116
|
RepoMeshNodeCapabilities,
|
|
@@ -103,6 +123,9 @@ export type {
|
|
|
103
123
|
LocalMeshNodeEntry,
|
|
104
124
|
RepoMeshStatus,
|
|
105
125
|
RepoMeshNodeStatus,
|
|
126
|
+
RepoMeshPeerConnectionStatus,
|
|
127
|
+
RepoMeshPeerConnectionState,
|
|
128
|
+
RepoMeshPeerConnectionTransport,
|
|
106
129
|
RepoMeshSessionStatus,
|
|
107
130
|
RepoMeshQueueTask,
|
|
108
131
|
RepoMeshQueueTaskStatus,
|
|
@@ -111,8 +134,31 @@ export type {
|
|
|
111
134
|
RepoMeshLedgerEntryStatus,
|
|
112
135
|
RepoMeshLedgerSummaryStatus,
|
|
113
136
|
RepoMeshLedgerStatus,
|
|
137
|
+
MeshAsyncJobLifecycle,
|
|
138
|
+
RepoMeshSchedulingStrategy,
|
|
139
|
+
RepoMeshSchedulingStatus,
|
|
140
|
+
RepoMeshNodeSchedulingStatus,
|
|
141
|
+
RepoMeshNodeProviderSchedulingStatus,
|
|
142
|
+
} from './repo-mesh-types.js';
|
|
143
|
+
export {
|
|
144
|
+
DEFAULT_MESH_POLICY,
|
|
145
|
+
resolveDelegatedWorkerAutoApprove,
|
|
146
|
+
resolveMagiSessionCleanupMode,
|
|
147
|
+
magiAutoLaunchedSessionCleanupDecision,
|
|
148
|
+
MESH_SCHEDULING_STRATEGIES,
|
|
149
|
+
DEFAULT_MESH_SCHEDULING_STRATEGY,
|
|
150
|
+
normalizeMeshSchedulingStrategy,
|
|
151
|
+
resolveNodeSchedulingPriority,
|
|
152
|
+
resolveProviderMaxParallel,
|
|
153
|
+
mergeAndNormalizePolicy,
|
|
154
|
+
normalizeAutoFastForwardPolicy,
|
|
155
|
+
resolveMaxParallelTasks,
|
|
156
|
+
MESH_MAX_PARALLEL_TASKS_MIN,
|
|
157
|
+
MESH_MAX_PARALLEL_TASKS_MAX,
|
|
158
|
+
MESH_CONVERGE_REFINE_TAG,
|
|
159
|
+
MESH_CONVERGE_FAST_FORWARD_TAG,
|
|
160
|
+
resolveAutoConvergeCodeChange,
|
|
114
161
|
} from './repo-mesh-types.js';
|
|
115
|
-
export { DEFAULT_MESH_POLICY } from './repo-mesh-types.js';
|
|
116
162
|
|
|
117
163
|
// ── Git Surface ──
|
|
118
164
|
export * from './git/index.js';
|
|
@@ -138,7 +184,7 @@ export type RecentSessionBucket = 'needs_attention' | 'working' | 'task_complete
|
|
|
138
184
|
export type { IDaemonCore, DaemonCoreOptions } from './daemon-core.js';
|
|
139
185
|
|
|
140
186
|
// ── Config ──
|
|
141
|
-
export { loadConfig, saveConfig, resetConfig, isSetupComplete, markSetupComplete, updateConfig } from './config/config.js';
|
|
187
|
+
export { loadConfig, saveConfig, resetConfig, isSetupComplete, markSetupComplete, updateConfig, getDaemonDataDir } from './config/config.js';
|
|
142
188
|
export { getWorkspaceState } from './config/workspaces.js';
|
|
143
189
|
export { appendRecentActivity, getRecentActivity } from './config/recent-activity.js';
|
|
144
190
|
export type { RecentActivityEntry } from './config/recent-activity.js';
|
|
@@ -149,24 +195,97 @@ export type { SavedProviderSessionEntry } from './config/saved-sessions.js';
|
|
|
149
195
|
export {
|
|
150
196
|
listMeshes, getMesh, getMeshByRepo, createMesh, updateMesh, deleteMesh,
|
|
151
197
|
addNode, removeNode, updateNode, normalizeRepoIdentity,
|
|
198
|
+
listMagiPanels, getMagiPanel, upsertMagiPanel, removeMagiPanel, normalizeMagiPanel,
|
|
199
|
+
listMagiKindPanels, getMagiKindPanel, setMagiKindPanel, removeMagiKindPanel, normalizeMagiSlots,
|
|
152
200
|
} from './config/mesh-config.js';
|
|
153
201
|
export type { CreateMeshOptions, UpdateMeshOptions, AddNodeOptions } from './config/mesh-config.js';
|
|
202
|
+
// MAGI panel / common-output / synthesis types (re-exported from the mesh-shared
|
|
203
|
+
// leaf so the mcp-server — which depends only on @adhdev/daemon-core — can consume
|
|
204
|
+
// them without taking a direct @adhdev/mesh-shared dependency).
|
|
205
|
+
export type {
|
|
206
|
+
MagiPanel, MagiPanelMember, MagiPanelMap, MagiMode, MagiTaskKind, MagiPanelDefaultKind,
|
|
207
|
+
MagiSlot, MagiKindPanelMap,
|
|
208
|
+
MagiClaim, MagiClaimStance, MagiAgentResponse,
|
|
209
|
+
MagiResponseSource, MagiReplicaGitRef, MagiGitSkew, MagiSynthesizedResponse,
|
|
210
|
+
MagiClusterCategory, MagiClusterMember, MagiClaimCluster, MagiSynthesis,
|
|
211
|
+
} from '@adhdev/mesh-shared';
|
|
212
|
+
// Value re-export: per-replica raw-answer truncation cap (used by the mcp-server
|
|
213
|
+
// collection path, which depends only on @adhdev/daemon-core).
|
|
214
|
+
export { MAGI_RAW_ANSWER_CAP } from '@adhdev/mesh-shared';
|
|
215
|
+
|
|
216
|
+
// ── Mesh shared daemon-id / node-id helpers (re-export so external tooling —
|
|
217
|
+
// e.g. the mcp-server, which depends only on @adhdev/daemon-core — can
|
|
218
|
+
// canonicalize daemon-id and node-id forms without taking a direct
|
|
219
|
+
// @adhdev/mesh-shared dependency). ──
|
|
220
|
+
export { expandDaemonIdForms, daemonIdsEquivalent, machineCoreFromDaemonId, canonicalDaemonId } from '@adhdev/mesh-shared';
|
|
221
|
+
export { normalizeMeshNodeId, meshNodeIdMatches } from '@adhdev/mesh-shared';
|
|
154
222
|
|
|
155
223
|
// ── Mesh Coordinator ──
|
|
156
224
|
export { buildCoordinatorSystemPrompt } from './mesh/coordinator-prompt.js';
|
|
225
|
+
export { upsertMeshMission, getMeshMissions, getMeshMission, summarizeMissionTasks, summarizeMeshMission, getActiveMeshMissionSummaries, getMeshStatusMissionSummaries, getMeshStatusMissionsCompact, listMeshMissionSummaries, buildMissionPromptSection, GOAL_PREVIEW_MAX, COMPACT_STATUS_GOAL_PREVIEW_MAX, MESH_MISSION_STATUSES } from './mesh/mesh-missions.js';
|
|
226
|
+
export type { MeshMissionRecord, MeshMissionStatus, MeshMissionSummary, MeshMissionSlimSummary, MeshMissionTaskAggregate, MeshStatusMissionsCompact, MeshStatusMissionsHistoryFold } from './mesh/mesh-missions.js';
|
|
227
|
+
export { computeMeshTaskStats, computeMeshMissionStats } from './mesh/mesh-task-stats.js';
|
|
228
|
+
export type { MeshTaskStats, MeshMissionStats } from './mesh/mesh-task-stats.js';
|
|
229
|
+
export { deriveMeshReviewInboxItems } from './mesh/mesh-review-inbox.js';
|
|
230
|
+
export type { MeshReviewInboxItem, MeshReviewInboxDerivation, MeshReviewInboxEvidence, MeshReviewInboxDiffSummary, MeshReviewInboxDiffFile, MeshReviewInboxReason, MeshReviewInboxConvergence } from './mesh/mesh-review-inbox.js';
|
|
157
231
|
export type { CoordinatorPromptContext } from './mesh/coordinator-prompt.js';
|
|
158
|
-
export {
|
|
159
|
-
export type {
|
|
232
|
+
export { loadMeshCoordinatorRegistry, registerMeshCoordinator, unregisterMeshCoordinator, getCoordinatorForSession, listCoordinatorsForWorkspace } from './mesh/coordinator-registry.js';
|
|
233
|
+
export type { CoordinatorRegistryEntry } from './mesh/coordinator-registry.js';
|
|
234
|
+
export {
|
|
235
|
+
MESH_REFINE_CONFIG_LOCATIONS,
|
|
236
|
+
MESH_REFINE_CONFIG_SCHEMA,
|
|
237
|
+
loadMeshRefineConfig,
|
|
238
|
+
resolveMeshRefineValidationPlan,
|
|
239
|
+
suggestMeshRefineConfig,
|
|
240
|
+
validateMeshRefineConfig,
|
|
241
|
+
} from './mesh/refine-config.js';
|
|
242
|
+
export {
|
|
243
|
+
MESH_WORKTREE_BOOTSTRAP_CONFIG_LOCATIONS,
|
|
244
|
+
MESH_WORKTREE_BOOTSTRAP_CONFIG_SCHEMA,
|
|
245
|
+
loadMeshWorktreeBootstrapConfig,
|
|
246
|
+
runMeshWorktreeBootstrap,
|
|
247
|
+
validateMeshWorktreeBootstrapConfig,
|
|
248
|
+
type RepoMeshWorktreeBootstrapConfig,
|
|
249
|
+
type WorktreeBootstrapState,
|
|
250
|
+
} from './mesh/worktree-bootstrap-config.js';
|
|
251
|
+
export type {
|
|
252
|
+
MeshRefineValidationCategory,
|
|
253
|
+
MeshRefineValidationCommandPlan,
|
|
254
|
+
MeshRefineValidationPlan,
|
|
255
|
+
RepoMeshRefineConfig,
|
|
256
|
+
RepoMeshRefineValidationCommandConfig,
|
|
257
|
+
} from './mesh/refine-config.js';
|
|
258
|
+
// Unified repo-settings loader: assembles the separate `.adhdev/*` config files
|
|
259
|
+
// (mesh.json coordinator/operatingNotes, refine, worktree-bootstrap, change-impact)
|
|
260
|
+
// into one object. Policy is machine-local and not part of repo settings.
|
|
261
|
+
export { loadRepoSettings } from './config/repo-settings.js';
|
|
262
|
+
export type { RepoSettings, LoadRepoSettingsOptions } from './config/repo-settings.js';
|
|
160
263
|
|
|
161
264
|
// ── Mesh Task Ledger ──
|
|
162
|
-
export { appendLedgerEntry, appendRemoteLedgerEntries, readLedgerEntries, readLedgerSlice, getLedgerSummary, getLedgerDir, getSessionRecoveryContext, MAX_LEDGER_SLICE_LIMIT } from './mesh/mesh-ledger.js';
|
|
163
|
-
export type { AppendRemoteLedgerResult, MeshLedgerEntry, MeshLedgerKind, MeshLedgerSlice, MeshLedgerSummary, ReadLedgerOptions, ReadLedgerSliceOptions, SessionRecoveryContext } from './mesh/mesh-ledger.js';
|
|
265
|
+
export { appendLedgerEntry, appendRemoteLedgerEntries, buildTaskCompletionEvidence, normalizeMeshWorkerResult, readLedgerEntries, readLedgerSlice, readLedgerSliceFromStore, getLedgerSummary, getLedgerDir, getSessionRecoveryContext, MAX_LEDGER_SLICE_LIMIT, tombstoneOperatingNote, readOperatingNotes, pruneOperatingNotes, isOperatingNoteTombstoned, OPERATING_NOTE_KIND, OPERATING_NOTE_TOMBSTONE_KIND, OPERATING_NOTE_DEDUPE_WINDOW, OPERATING_NOTE_KEEP_LATEST } from './mesh/mesh-ledger.js';
|
|
266
|
+
export type { AppendRemoteLedgerResult, MeshLedgerEntry, MeshLedgerKind, MeshLedgerSlice, MeshLedgerSummary, ReadLedgerOptions, ReadLedgerSliceOptions, SessionRecoveryContext, MeshTaskCompletionEvidence, MeshWorkerResultArtifact, MeshProcessArtifact, MeshValidationResultArtifact } from './mesh/mesh-ledger.js';
|
|
267
|
+
export { fastForwardMeshNode } from './mesh/mesh-fast-forward.js';
|
|
268
|
+
export type { MeshFastForwardNodeArgs, MeshFastForwardPlannedStep, MeshFastForwardResult } from './mesh/mesh-fast-forward.js';
|
|
164
269
|
export { buildMeshLedgerReconciliationEvidence, buildMeshLedgerReplicaEvidence } from './mesh/mesh-ledger-reconciliation.js';
|
|
165
|
-
export type { MeshLedgerReconciliationEvidence, MeshLedgerReplicaEvidence, MeshLedgerReplicaStatus } from './mesh/mesh-ledger-reconciliation.js';
|
|
270
|
+
export type { AnyLedgerSlice, MeshLedgerReconciliationEvidence, MeshLedgerReplicaEvidence, MeshLedgerReplicaStatus } from './mesh/mesh-ledger-reconciliation.js';
|
|
166
271
|
|
|
167
272
|
// ── Mesh Work Queue (GUPP) ──
|
|
168
|
-
export { enqueueTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats } from './mesh/mesh-work-queue.js';
|
|
169
|
-
export type { MeshWorkQueueEntry, MeshTaskStatus, MeshWorkQueueStats } from './mesh/mesh-work-queue.js';
|
|
273
|
+
export { enqueueTask, recordDirectDispatchTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats, getMeshQueueRevision, normalizeMeshTaskMode, validateMeshTaskModeRequest, isTaskReadonly, buildMeshNodeCapabilityTags, nodeSatisfiesRequiredTags, normalizeMeshCapabilityTags, resolveConvergeRequiredTags, insertDirectDispatch, getActiveDirectDispatches, updateDirectDispatchStatus, cleanupTerminalDirectDispatches, markStaleDirectDispatches, deleteDirectDispatchesByTaskId, recordMeshToolCall, assertNoDependencyCycle, hasPendingDependents, describeTaskDependencyState } from './mesh/mesh-work-queue.js';
|
|
274
|
+
export type { MeshWorkQueueEntry, MeshTaskStatus, MeshTaskMode, MeshWorkQueueStats, MeshQueueMutationOptions, MeshTaskModeValidationResult, DirectDispatchRecord, MeshToolCallRateResult } from './mesh/mesh-work-queue.js';
|
|
275
|
+
export { buildCompactStaleDirectWorkSummary, buildMeshActiveWork, buildMeshActiveWorkSummary, classifyStaleDirectForPrune, pruneStaleDirectDispatches, PRUNABLE_ORPHAN_STALE_REASONS } from './mesh/mesh-active-work.js';
|
|
276
|
+
export type { StaleDirectPruneClassification, StaleDirectPruneResult, PruneStaleDirectDispatchesOptions } from './mesh/mesh-active-work.js';
|
|
277
|
+
export type { MeshActiveWorkRecord, MeshActiveWorkStatus, MeshActiveWorkSummary, MeshActiveWorkSource, MeshStaleDirectWorkSummary } from './mesh/mesh-active-work.js';
|
|
278
|
+
export { buildMeshAsyncRefineJobs, summarizeMeshAsyncRefineJobs, STALE_TERMINAL_REFINE_WINDOW_MS, RECENT_TERMINAL_REFINE_CAP } from './mesh/mesh-refine-status.js';
|
|
279
|
+
export type { MeshAsyncRefineJobStatus, MeshAsyncRefineJobSummary, MeshAsyncRefineJobsSummary } from './mesh/mesh-refine-status.js';
|
|
280
|
+
export { buildMeshMagiActivity, summarizeMeshMagiActivity, getMeshMagiActivityByGroup, STALE_MAGI_WINDOW_MS, RECENT_MAGI_CAP, MAGI_NEEDS_VERIFICATION_PREVIEW_CAP } from './mesh/mesh-magi-status.js';
|
|
281
|
+
export type { MeshMagiActivityStatus, MeshMagiActivitySummary, MeshMagiActivitySummaryFold, MeshMagiNeedsVerificationItem } from './mesh/mesh-magi-status.js';
|
|
282
|
+
|
|
283
|
+
// ── Mesh Scheduling Runtime (observability projection) ──
|
|
284
|
+
export { buildMeshSchedulingRuntime } from './mesh/mesh-scheduling-runtime.js';
|
|
285
|
+
export type { MeshSchedulingRuntime, MeshNodeSchedulingRuntime, MeshNodeProviderSchedulingRuntime } from './mesh/mesh-scheduling-runtime.js';
|
|
286
|
+
|
|
287
|
+
// ── Mesh Host Ownership ──
|
|
288
|
+
export { buildMeshHostRequiredFailure, createDefaultMeshHostMetadata, isMeshHostOwner, normalizeMeshDaemonRole, requireMeshHostQueueOwner, resolveMeshHostStatus } from './mesh/mesh-host-ownership.js';
|
|
170
289
|
|
|
171
290
|
// ── Mesh Visualization ──
|
|
172
291
|
// buildMeshGraph and MeshGraph types moved to @adhdev/web-core to avoid
|
|
@@ -176,8 +295,17 @@ export type { MeshWorkQueueEntry, MeshTaskStatus, MeshWorkQueueStats } from './m
|
|
|
176
295
|
// export type { MeshGraph, MeshGraphNode, MeshGraphEdge, MeshGraphNodeType, MeshGraphEdgeType } from './mesh/mesh-visualization.js';
|
|
177
296
|
|
|
178
297
|
// ── Mesh Events ──
|
|
179
|
-
export { triggerMeshQueue, drainPendingMeshCoordinatorEvents, getPendingMeshCoordinatorEvents, clearPendingMeshCoordinatorEvents, queuePendingMeshCoordinatorEvent } from './mesh/mesh-events.js';
|
|
298
|
+
export { triggerMeshQueue, drainPendingMeshCoordinatorEvents, getPendingMeshCoordinatorEvents, clearPendingMeshCoordinatorEvents, queuePendingMeshCoordinatorEvent, reconcileDirectDispatchCompletionFromTranscript } from './mesh/mesh-events.js';
|
|
180
299
|
export type { PendingMeshCoordinatorEvent } from './mesh/mesh-events.js';
|
|
300
|
+
// The coordinator-side preview surfaced from a worker's completion/status event
|
|
301
|
+
// (finalSummary / workerResult.summary / lastMessagePreview). Same data the mobile
|
|
302
|
+
// inbox is fed; reused by mesh_read_chat's cache fallback when the live P2P read path
|
|
303
|
+
// is unavailable (saturated/unreachable peer).
|
|
304
|
+
export { resolveMeshSurfacedSessionPreview, readMeshCompletionSummary, isWeakCompletionEvidence } from './mesh/mesh-events-utils.js';
|
|
305
|
+
|
|
306
|
+
// ── Mesh Delivery Policy ──
|
|
307
|
+
export { resolveDeliveryDecision, createSessionDelivery, updateSessionDeliveryStatus, getActiveSessionDeliveries, markSessionDeliveriesTerminal, recordCompletionConflict, getRecentCompletionConflicts } from './mesh/mesh-delivery-policy.js';
|
|
308
|
+
export type { MeshSessionDeliveryStatus, MeshSessionDeliveryKind, MeshDeliveryDecision, MeshDeliveryPolicyResult, SessionDeliveryRecord } from './mesh/mesh-delivery-policy.js';
|
|
181
309
|
|
|
182
310
|
// ── Mesh P2P Relay Failure Classification ──
|
|
183
311
|
export {
|
|
@@ -222,7 +350,7 @@ export type { CdpInitializerConfig } from './cdp/initializer.js';
|
|
|
222
350
|
// ── Commands ──
|
|
223
351
|
export { DaemonCommandHandler } from './commands/handler.js';
|
|
224
352
|
export type { CommandResult, CommandContext } from './commands/handler.js';
|
|
225
|
-
export { DaemonCommandRouter } from './commands/router.js';
|
|
353
|
+
export { DaemonCommandRouter, readCachedInlineMeshActiveSessionDetails, resolveMeshNodeAttribution, buildMeshNodeDataFreshness, buildMeshNodeProbeFreshness, MESH_NODE_LIVE_TRUTH_MARKER } from './commands/router.js';
|
|
226
354
|
export type { CommandRouterDeps, CommandRouterResult } from './commands/router.js';
|
|
227
355
|
export {
|
|
228
356
|
maybeRunDaemonUpgradeHelperFromEnv,
|
|
@@ -242,7 +370,9 @@ export type {
|
|
|
242
370
|
// ── Status ──
|
|
243
371
|
export { DaemonStatusReporter } from './status/reporter.js';
|
|
244
372
|
export { buildSessionEntries, findCdpManager, hasCdpManager, isCdpConnected } from './status/builders.js';
|
|
245
|
-
export { buildStatusSnapshot, buildMachineInfo } from './status/snapshot.js';
|
|
373
|
+
export { buildStatusSnapshot, buildMachineInfo, getLastDisplayMessage } from './status/snapshot.js';
|
|
374
|
+
export { getDaemonBuildInfo } from './build-info.js';
|
|
375
|
+
export type { DaemonBuildInfo } from './build-info.js';
|
|
246
376
|
export { normalizeManagedStatus, isManagedStatusWorking, isManagedStatusWaiting, normalizeActiveChatData } from './status/normalize.js';
|
|
247
377
|
export type { ManagedStatus } from './status/normalize.js';
|
|
248
378
|
export type { StatusSnapshotOptions, StatusSnapshot } from './status/snapshot.js';
|
|
@@ -388,6 +518,13 @@ export type { CliAdapter } from './cli-adapter-types.js';
|
|
|
388
518
|
export { NodePtyTransportFactory } from './cli-adapters/pty-transport.js';
|
|
389
519
|
export type { PtyRuntimeTransport, PtyTransportFactory, PtySpawnOptions } from './cli-adapters/pty-transport.js';
|
|
390
520
|
export { SessionHostPtyTransportFactory } from './cli-adapters/session-host-transport.js';
|
|
521
|
+
export {
|
|
522
|
+
RawTerminalAttachment,
|
|
523
|
+
namedKeyToAnsi,
|
|
524
|
+
namedKeysToAnsi,
|
|
525
|
+
withRawTerminalAttachment,
|
|
526
|
+
} from './cli-adapters/raw-terminal-io.js';
|
|
527
|
+
export type { NamedKey, RawTerminalAttachmentOptions, RawTerminalSessionHostClient } from './cli-adapters/raw-terminal-io.js';
|
|
391
528
|
export type { HostedCliRuntimeDescriptor, CliTransportFactoryParams } from './commands/cli-manager.js';
|
|
392
529
|
export {
|
|
393
530
|
DEFAULT_SESSION_HOST_APP_NAME,
|
|
@@ -397,6 +534,8 @@ export {
|
|
|
397
534
|
} from './session-host/app-name.js';
|
|
398
535
|
export type { SessionHostAppNameResolution } from './session-host/app-name.js';
|
|
399
536
|
export { ensureSessionHostReady, listHostedCliRuntimes } from './session-host/runtime-support.js';
|
|
537
|
+
export { createManagedSessionHost } from './session-host/managed-host.js';
|
|
538
|
+
export type { ManagedSessionHost, ManagedSessionHostOptions } from './session-host/managed-host.js';
|
|
400
539
|
export {
|
|
401
540
|
getSessionHostRecoveryLabel,
|
|
402
541
|
getSessionHostSurfaceKind,
|
|
@@ -415,3 +554,50 @@ export type { ExtensionInfo as InstallerExtensionInfo } from './installer.js';
|
|
|
415
554
|
// ── Boot / Lifecycle ──
|
|
416
555
|
export { initDaemonComponents, startDaemonDevSupport, shutdownDaemonComponents } from './boot/daemon-lifecycle.js';
|
|
417
556
|
export type { DaemonInitConfig, DaemonComponents, DaemonDevSupportOptions } from './boot/daemon-lifecycle.js';
|
|
557
|
+
|
|
558
|
+
// ── Local IPC server (shared between cloud + standalone daemons) ──
|
|
559
|
+
export {
|
|
560
|
+
startLocalIpcServer,
|
|
561
|
+
buildIpcStatusHttpResponse,
|
|
562
|
+
type LocalIpcServerOptions,
|
|
563
|
+
type LocalIpcServerHandle,
|
|
564
|
+
type IpcCommandContext,
|
|
565
|
+
type IpcCommandResult,
|
|
566
|
+
type IpcStatusPayload,
|
|
567
|
+
} from './ipc/local-ipc-server.js';
|
|
568
|
+
|
|
569
|
+
// ── CLI Spec (adhdev:cli/spec@4) ──
|
|
570
|
+
export { createNativeHistoryDispatcher } from './providers/native-history/index.js';
|
|
571
|
+
export type { ReaderId } from './providers/native-history/index.js';
|
|
572
|
+
export {
|
|
573
|
+
readClaudeCliSession, readCodexCliSession,
|
|
574
|
+
readAntigravityCliSession, readHermesCliSession,
|
|
575
|
+
} from './providers/native-history/index.js';
|
|
576
|
+
export type {
|
|
577
|
+
ControlAction, Control,
|
|
578
|
+
NotificationRule, DelegateTrigger,
|
|
579
|
+
} from './providers/spec/types.js';
|
|
580
|
+
export type { TraceEntry } from './providers/spec/evaluator.js';
|
|
581
|
+
export { evaluateFsm } from './providers/spec/fsm-evaluator.js';
|
|
582
|
+
export type { FsmClock } from './providers/spec/fsm-evaluator.js';
|
|
583
|
+
export { validateFsmSpec } from './providers/spec/fsm-loader.js';
|
|
584
|
+
export { FsmDriver } from './providers/spec/fsm-driver.js';
|
|
585
|
+
export type { DashboardEvent, DashboardCommand, SpecDriverOpts, ISpecDriver } from './providers/spec/fsm-driver.js';
|
|
586
|
+
export { TerminalAdapter } from './providers/spec/adapter.js';
|
|
587
|
+
export type { TerminalAdapterOpts, TerminalAdapterHandlers } from './providers/spec/adapter.js';
|
|
588
|
+
|
|
589
|
+
// ── Provider SDK (v1) — selective re-exports for external tooling ──
|
|
590
|
+
// Tooling (registry publish, dashboard validators, the e2e harness) needs
|
|
591
|
+
// the manifest validator, the builder catalog, and the contract version.
|
|
592
|
+
// We don't re-export *everything* from the SDK to keep the public surface
|
|
593
|
+
// stable; consumers that need internal SDK types still import from the
|
|
594
|
+
// sdk/v1 subpath.
|
|
595
|
+
export {
|
|
596
|
+
validateCliProviderManifest,
|
|
597
|
+
formatManifestValidationIssues,
|
|
598
|
+
type ManifestValidationIssue,
|
|
599
|
+
type ManifestValidationResult,
|
|
600
|
+
V1_CONTRACT_VERSION,
|
|
601
|
+
V1_PRIMITIVE_CATALOG,
|
|
602
|
+
V1_ALL_PRIMITIVES,
|
|
603
|
+
} from './providers/sdk/v1/index.js';
|
package/src/installer.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface InstallResult {
|
|
|
31
31
|
/**
|
|
32
32
|
* Check if an extension is already installed
|
|
33
33
|
*/
|
|
34
|
-
export declare function isExtensionInstalled(ide: IDEInfo, marketplaceId: string): boolean
|
|
34
|
+
export declare function isExtensionInstalled(ide: IDEInfo, marketplaceId: string): Promise<boolean>;
|
|
35
35
|
/**
|
|
36
36
|
* Install a single extension
|
|
37
37
|
*/
|
package/src/installer.ts
CHANGED
|
@@ -122,20 +122,22 @@ export interface InstallResult {
|
|
|
122
122
|
/**
|
|
123
123
|
* Check if an extension is already installed
|
|
124
124
|
*/
|
|
125
|
-
|
|
125
|
+
import { promisify } from 'util';
|
|
126
|
+
const execAsync = promisify(exec);
|
|
127
|
+
|
|
128
|
+
export async function isExtensionInstalled(
|
|
126
129
|
ide: IDEInfo,
|
|
127
130
|
marketplaceId: string
|
|
128
|
-
): boolean {
|
|
131
|
+
): Promise<boolean> {
|
|
129
132
|
if (!ide.cliCommand) return false;
|
|
130
133
|
|
|
131
134
|
try {
|
|
132
|
-
const
|
|
135
|
+
const { stdout } = await execAsync(`"${ide.cliCommand}" --list-extensions`, {
|
|
133
136
|
encoding: 'utf-8',
|
|
134
137
|
timeout: 15000,
|
|
135
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
136
138
|
});
|
|
137
139
|
|
|
138
|
-
const installed =
|
|
140
|
+
const installed = stdout
|
|
139
141
|
.trim()
|
|
140
142
|
.split('\n')
|
|
141
143
|
.map((e) => e.trim().toLowerCase());
|
|
@@ -163,7 +165,7 @@ export async function installExtension(
|
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
// Check if already installed
|
|
166
|
-
const alreadyInstalled = isExtensionInstalled(ide, extension.marketplaceId);
|
|
168
|
+
const alreadyInstalled = await isExtensionInstalled(ide, extension.marketplaceId);
|
|
167
169
|
if (alreadyInstalled) {
|
|
168
170
|
return {
|
|
169
171
|
extensionId: extension.id,
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LocalIpcServer — generic HTTP + WebSocket IPC endpoint for daemon processes.
|
|
3
|
+
*
|
|
4
|
+
* Both daemon-cloud and daemon-standalone need a local IPC surface so
|
|
5
|
+
* external tools — the `adhdev mcp --mode ipc` MCP server and anything
|
|
6
|
+
* else that wants to issue commands without going through the cloud
|
|
7
|
+
* Worker — can connect over `ws://127.0.0.1:<port>/ipc`.
|
|
8
|
+
*
|
|
9
|
+
* Until now the implementation lived only in daemon-cloud. Standalone
|
|
10
|
+
* sessions therefore couldn't host MCP mesh tools — codex/claude config
|
|
11
|
+
* pointing at `--mode ipc` got `Cannot reach ipc daemon`. This module
|
|
12
|
+
* moves the transport into daemon-core so both daemons can mount it.
|
|
13
|
+
*
|
|
14
|
+
* The transport itself is daemon-agnostic. Cloud-specific behaviors
|
|
15
|
+
* (mesh relay, mandatory update gates) are injected via the caller's
|
|
16
|
+
* `handleCommand` hook; the IPC layer just frames/unframes JSON and
|
|
17
|
+
* routes messages.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { createServer, type IncomingMessage, type Server as HttpServer } from 'http';
|
|
21
|
+
import { WebSocketServer, WebSocket } from 'ws';
|
|
22
|
+
import { LOG } from '../logging/logger.js';
|
|
23
|
+
import { DAEMON_WS_PATH } from '../ipc-protocol.js';
|
|
24
|
+
|
|
25
|
+
/** Parameters passed to `handleCommand` for each incoming ext:command frame. */
|
|
26
|
+
export interface IpcCommandContext {
|
|
27
|
+
/** The raw `command` field from the message — caller decides routing. */
|
|
28
|
+
command: string;
|
|
29
|
+
/** Args provided by the client; may have been normalized by the caller. */
|
|
30
|
+
args: Record<string, unknown>;
|
|
31
|
+
/** Stable id correlating the request and the eventual ext:command_result. */
|
|
32
|
+
requestId: string;
|
|
33
|
+
/** The connected WebSocket — only needed if the caller wants to send extra events. */
|
|
34
|
+
ws: WebSocket;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Result reported back to the client. `result` is optional context for success. */
|
|
38
|
+
export interface IpcCommandResult {
|
|
39
|
+
success: boolean;
|
|
40
|
+
result?: unknown;
|
|
41
|
+
error?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Additional fields the caller wants merged into the response payload
|
|
44
|
+
* (e.g. the cloud daemon's mandatory-update-block fields). Reserved.
|
|
45
|
+
*/
|
|
46
|
+
extra?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Status payload returned from GET / on the IPC HTTP port. */
|
|
50
|
+
export interface IpcStatusPayload {
|
|
51
|
+
ok: true;
|
|
52
|
+
pid: number;
|
|
53
|
+
wsPath: string;
|
|
54
|
+
port: number;
|
|
55
|
+
/** Arbitrary daemon-specific summary. Cloud daemon includes mesh state, etc. */
|
|
56
|
+
status: Record<string, unknown> | null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface LocalIpcServerOptions {
|
|
60
|
+
/** TCP port to listen on. 19222 is the conventional default. */
|
|
61
|
+
port: number;
|
|
62
|
+
/** Build the GET / status payload. Called on every health probe. */
|
|
63
|
+
buildStatusPayload: () => Record<string, unknown> | null;
|
|
64
|
+
/** Build the welcome message sent to a freshly-connected client. */
|
|
65
|
+
buildWelcomePayload: () => Record<string, unknown>;
|
|
66
|
+
/** Handle a single ext:command frame. Caller decides routing and returns the result. */
|
|
67
|
+
handleCommand: (ctx: IpcCommandContext) => Promise<IpcCommandResult>;
|
|
68
|
+
/** Optional notification when a new client connects (lets daemon track them for broadcasts). */
|
|
69
|
+
onClientConnected?: (ws: WebSocket) => void;
|
|
70
|
+
/** Optional notification when a client disconnects. */
|
|
71
|
+
onClientDisconnected?: (ws: WebSocket) => void;
|
|
72
|
+
/** Optional logger label (defaults to "IPC"). */
|
|
73
|
+
logCategory?: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returned controller for stopping the server and broadcasting to clients.
|
|
78
|
+
* Stored by the daemon and torn down at shutdown.
|
|
79
|
+
*/
|
|
80
|
+
export interface LocalIpcServerHandle {
|
|
81
|
+
/** True once `listen()` succeeded. */
|
|
82
|
+
isListening(): boolean;
|
|
83
|
+
/** Push a message to every connected client. */
|
|
84
|
+
broadcast(type: string, payload: unknown): void;
|
|
85
|
+
/** Close all client sockets + the HTTP server. */
|
|
86
|
+
close(): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Build a JSON HTTP response describing the IPC endpoint. Exposed so caller
|
|
91
|
+
* code (and tests) can build the same shape without spinning a real server.
|
|
92
|
+
*/
|
|
93
|
+
export function buildIpcStatusHttpResponse(
|
|
94
|
+
method: string | undefined,
|
|
95
|
+
url: string | undefined,
|
|
96
|
+
payload: IpcStatusPayload,
|
|
97
|
+
): { statusCode: number; body: Record<string, unknown> } {
|
|
98
|
+
if (method && method.toUpperCase() !== 'GET') {
|
|
99
|
+
return { statusCode: 405, body: { ok: false, error: 'method not allowed' } };
|
|
100
|
+
}
|
|
101
|
+
// `/health` is the probe path used by the MCP IpcTransport ping —
|
|
102
|
+
// mirror cloud daemon behavior so `adhdev mcp --mode ipc` recognizes
|
|
103
|
+
// us as a live IPC host. `/` and `/status` return the same shape.
|
|
104
|
+
if (url && url !== '/' && url !== '/status' && url !== '/health') {
|
|
105
|
+
return { statusCode: 404, body: { ok: false, error: 'not found' } };
|
|
106
|
+
}
|
|
107
|
+
return { statusCode: 200, body: payload as unknown as Record<string, unknown> };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Start the local IPC server. Returns a handle the caller can use to broadcast
|
|
112
|
+
* events and tear down at shutdown.
|
|
113
|
+
*/
|
|
114
|
+
export async function startLocalIpcServer(opts: LocalIpcServerOptions): Promise<LocalIpcServerHandle> {
|
|
115
|
+
const logCategory = opts.logCategory || 'IPC';
|
|
116
|
+
const clients = new Set<WebSocket>();
|
|
117
|
+
let httpServer: HttpServer | null = null;
|
|
118
|
+
let wss: WebSocketServer | null = null;
|
|
119
|
+
let listening = false;
|
|
120
|
+
|
|
121
|
+
httpServer = createServer((req, res) => {
|
|
122
|
+
const payload: IpcStatusPayload = {
|
|
123
|
+
ok: true,
|
|
124
|
+
pid: process.pid,
|
|
125
|
+
wsPath: DAEMON_WS_PATH,
|
|
126
|
+
port: opts.port,
|
|
127
|
+
status: opts.buildStatusPayload(),
|
|
128
|
+
};
|
|
129
|
+
const response = buildIpcStatusHttpResponse(req.method, req.url, payload);
|
|
130
|
+
const body = JSON.stringify(response.body);
|
|
131
|
+
res.writeHead(response.statusCode, {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
'Content-Length': Buffer.byteLength(body),
|
|
134
|
+
'Connection': 'close',
|
|
135
|
+
});
|
|
136
|
+
res.end(body);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
wss = new WebSocketServer({ noServer: true });
|
|
140
|
+
wss.on('connection', (ws) => handleConnection(ws));
|
|
141
|
+
|
|
142
|
+
httpServer.on('upgrade', (req: IncomingMessage, socket, head) => {
|
|
143
|
+
const wsUrl = new URL(req.url || '/', `http://${req.headers.host || '127.0.0.1'}`);
|
|
144
|
+
if (wsUrl.pathname !== DAEMON_WS_PATH) {
|
|
145
|
+
socket.write('HTTP/1.1 404 Not Found\r\n\r\n');
|
|
146
|
+
socket.destroy();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
wss!.handleUpgrade(req, socket, head, (ws) => {
|
|
150
|
+
wss!.emit('connection', ws, req);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
function handleConnection(ws: WebSocket): void {
|
|
155
|
+
clients.add(ws);
|
|
156
|
+
sendWelcome(ws);
|
|
157
|
+
opts.onClientConnected?.(ws);
|
|
158
|
+
|
|
159
|
+
ws.on('message', (raw) => {
|
|
160
|
+
void handleMessage(ws, raw.toString());
|
|
161
|
+
});
|
|
162
|
+
ws.on('close', () => {
|
|
163
|
+
clients.delete(ws);
|
|
164
|
+
opts.onClientDisconnected?.(ws);
|
|
165
|
+
});
|
|
166
|
+
ws.on('error', () => {
|
|
167
|
+
clients.delete(ws);
|
|
168
|
+
opts.onClientDisconnected?.(ws);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function sendWelcome(ws: WebSocket): void {
|
|
173
|
+
try {
|
|
174
|
+
ws.send(JSON.stringify({
|
|
175
|
+
type: 'daemon:welcome',
|
|
176
|
+
payload: opts.buildWelcomePayload(),
|
|
177
|
+
}));
|
|
178
|
+
} catch (error: any) {
|
|
179
|
+
LOG.warn(logCategory, `Failed to send welcome: ${error?.message || error}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async function handleMessage(ws: WebSocket, raw: string): Promise<void> {
|
|
184
|
+
let msg: any;
|
|
185
|
+
try { msg = JSON.parse(raw); } catch { return; }
|
|
186
|
+
if (!msg || typeof msg !== 'object') return;
|
|
187
|
+
|
|
188
|
+
// Re-issue welcome on client request (used by reconnecting MCP servers).
|
|
189
|
+
if (msg.type === 'ext:register') {
|
|
190
|
+
sendWelcome(ws);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (msg.type !== 'ext:command') return;
|
|
194
|
+
|
|
195
|
+
const payload = msg.payload && typeof msg.payload === 'object' ? msg.payload : {};
|
|
196
|
+
const command = typeof payload.command === 'string' ? payload.command : '';
|
|
197
|
+
const args = payload.args && typeof payload.args === 'object'
|
|
198
|
+
? payload.args as Record<string, unknown>
|
|
199
|
+
: {};
|
|
200
|
+
const requestId = typeof payload.requestId === 'string'
|
|
201
|
+
? payload.requestId
|
|
202
|
+
: typeof payload.messageId === 'string'
|
|
203
|
+
? payload.messageId
|
|
204
|
+
: `ipc-${Date.now()}`;
|
|
205
|
+
|
|
206
|
+
if (!command) {
|
|
207
|
+
ws.send(JSON.stringify({
|
|
208
|
+
type: 'ext:command_result',
|
|
209
|
+
payload: { requestId, success: false, error: 'command required' },
|
|
210
|
+
}));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
const result = await opts.handleCommand({ command, args, requestId, ws });
|
|
216
|
+
ws.send(JSON.stringify({
|
|
217
|
+
type: 'ext:command_result',
|
|
218
|
+
payload: {
|
|
219
|
+
requestId,
|
|
220
|
+
success: result.success,
|
|
221
|
+
result: result.result,
|
|
222
|
+
error: result.error,
|
|
223
|
+
...(result.extra || {}),
|
|
224
|
+
},
|
|
225
|
+
}));
|
|
226
|
+
} catch (error: any) {
|
|
227
|
+
ws.send(JSON.stringify({
|
|
228
|
+
type: 'ext:command_result',
|
|
229
|
+
payload: {
|
|
230
|
+
requestId,
|
|
231
|
+
success: false,
|
|
232
|
+
error: error?.message || String(error),
|
|
233
|
+
},
|
|
234
|
+
}));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
await new Promise<void>((resolve, reject) => {
|
|
239
|
+
const onError = (error: Error) => {
|
|
240
|
+
httpServer?.off('listening', onListening);
|
|
241
|
+
reject(error);
|
|
242
|
+
};
|
|
243
|
+
const onListening = () => {
|
|
244
|
+
httpServer?.off('error', onError);
|
|
245
|
+
listening = true;
|
|
246
|
+
resolve();
|
|
247
|
+
};
|
|
248
|
+
httpServer!.once('error', onError);
|
|
249
|
+
httpServer!.once('listening', onListening);
|
|
250
|
+
httpServer!.listen(opts.port, '127.0.0.1');
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
LOG.info(logCategory, `Local IPC listening on ws://127.0.0.1:${opts.port}${DAEMON_WS_PATH}`);
|
|
254
|
+
|
|
255
|
+
return {
|
|
256
|
+
isListening: () => listening,
|
|
257
|
+
broadcast(type, payload) {
|
|
258
|
+
const message = JSON.stringify({ type, payload });
|
|
259
|
+
for (const client of clients) {
|
|
260
|
+
if (client.readyState !== WebSocket.OPEN) continue;
|
|
261
|
+
try { client.send(message); } catch { /* drop silently */ }
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
async close() {
|
|
265
|
+
for (const client of clients) {
|
|
266
|
+
try { client.close(); } catch { /* ignore */ }
|
|
267
|
+
}
|
|
268
|
+
clients.clear();
|
|
269
|
+
await new Promise<void>((resolve) => {
|
|
270
|
+
if (!httpServer) { resolve(); return; }
|
|
271
|
+
httpServer.close(() => resolve());
|
|
272
|
+
});
|
|
273
|
+
httpServer = null;
|
|
274
|
+
wss = null;
|
|
275
|
+
listening = false;
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
package/src/launch.d.ts
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
/** Kill IDE process (graceful → force) */
|
|
19
19
|
export declare function killIdeProcess(ideId: string): Promise<boolean>;
|
|
20
20
|
/** Check if IDE process is running */
|
|
21
|
-
export declare function isIdeRunning(ideId: string): boolean
|
|
21
|
+
export declare function isIdeRunning(ideId: string): Promise<boolean>;
|
|
22
22
|
export interface LaunchOptions {
|
|
23
23
|
ideId?: string;
|
|
24
24
|
workspace?: string;
|