@adhdev/daemon-core 0.9.82-rc.49 → 0.9.82-rc.490
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +220 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +137 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +23 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +71 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +64 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +48 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +152 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router-aggregate-status.d.ts +24 -0
- package/dist/commands/router-mesh-session-owner.d.ts +59 -0
- package/dist/commands/router-refine.d.ts +151 -0
- package/dist/commands/router-worktree-cleanup.d.ts +133 -0
- package/dist/commands/router.d.ts +203 -15
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +11 -0
- package/dist/config/config.d.ts +19 -0
- package/dist/config/mesh-config.d.ts +65 -0
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/registry-resolver.d.ts +54 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/config/state-store.d.ts +30 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/cli-detector.d.ts +17 -0
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +26 -2
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +80 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +70 -17
- package/dist/index.js +53532 -19073
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +53283 -18989
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/debug-config.d.ts +16 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +256 -0
- package/dist/mesh/coordinator-prompt.d.ts +76 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +203 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-completion-synthesis.d.ts +4 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +104 -0
- package/dist/mesh/mesh-event-classify.d.ts +7 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +58 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +258 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +21 -1
- package/dist/mesh/mesh-init.d.ts +128 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +139 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +281 -0
- package/dist/mesh/mesh-node-identity.d.ts +310 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +162 -0
- package/dist/mesh/mesh-reconcile-acked-hold.d.ts +17 -0
- package/dist/mesh/mesh-reconcile-config.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-identity.d.ts +6 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +84 -0
- package/dist/mesh/mesh-reconcile-v2-backstop.d.ts +16 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +457 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-remote-event-pull.d.ts +15 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +567 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +34 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +392 -1
- package/dist/mesh/preview-freshness.d.ts +28 -0
- package/dist/mesh/refine-config.d.ts +97 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +219 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +46 -0
- package/dist/providers/chat-message-normalization.d.ts +58 -1
- package/dist/providers/cli-provider-effect-format.d.ts +30 -0
- package/dist/providers/cli-provider-history-dedup.d.ts +17 -0
- package/dist/providers/cli-provider-input-prompt.d.ts +12 -0
- package/dist/providers/cli-provider-instance-types.d.ts +45 -0
- package/dist/providers/cli-provider-instance.d.ts +426 -30
- package/dist/providers/cli-provider-status-helpers.d.ts +46 -0
- package/dist/providers/cli-provider-transcript-merge.d.ts +7 -0
- package/dist/providers/contracts.d.ts +196 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +79 -0
- package/dist/providers/native-history/antigravity-claim-registry.d.ts +39 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +137 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +44 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +30 -0
- package/dist/providers/provider-instance.d.ts +31 -1
- package/dist/providers/provider-loader.d.ts +42 -5
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +98 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +449 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +93 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +202 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +244 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +616 -12
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/session-host/managed-host.d.ts +64 -0
- package/dist/session-host/runtime-surface.d.ts +10 -16
- package/dist/sessions/registry.d.ts +26 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +110 -55
- package/dist/status/chat-tail-hot-sessions.d.ts +40 -0
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +27 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +20 -6
- package/package.json +11 -4
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +80 -14
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1282 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +1048 -1143
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2788 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.d.ts +2 -0
- package/src/commands/cli-manager.ts +724 -27
- package/src/commands/handler.ts +865 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +696 -0
- package/src/commands/high-family/mesh-events.ts +102 -0
- package/src/commands/high-family/mesh-status.ts +857 -0
- package/src/commands/high-family/types.ts +80 -0
- package/src/commands/low-family/coordinator-prompt.ts +125 -0
- package/src/commands/low-family/daemon-lifecycle.ts +120 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +282 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +270 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1268 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +153 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router-aggregate-status.ts +209 -0
- package/src/commands/router-mesh-session-owner.ts +114 -0
- package/src/commands/router-refine.ts +1794 -0
- package/src/commands/router-worktree-cleanup.ts +870 -0
- package/src/commands/router.ts +567 -4149
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +517 -24
- package/src/config/config.ts +30 -0
- package/src/config/mesh-config.ts +300 -24
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/registry-resolver.ts +100 -0
- package/src/config/repo-settings.ts +111 -0
- package/src/config/state-store.ts +55 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +94 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +112 -16
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +822 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +190 -13
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/debug-config.ts +25 -0
- package/src/logging/debug-trace.ts +7 -2
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +510 -0
- package/src/mesh/coordinator-prompt.ts +627 -34
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +706 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-completion-synthesis.ts +416 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +284 -0
- package/src/mesh/mesh-event-classify.ts +78 -0
- package/src/mesh/mesh-event-forwarding.ts +2030 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +1548 -0
- package/src/mesh/mesh-events-stale.ts +452 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +43 -1035
- package/src/mesh/mesh-fast-forward.ts +856 -0
- package/src/mesh/mesh-host-ownership.ts +41 -3
- package/src/mesh/mesh-init.ts +350 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +897 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +695 -0
- package/src/mesh/mesh-node-identity.ts +2065 -0
- package/src/mesh/mesh-queue-assignment.ts +2498 -0
- package/src/mesh/mesh-reconcile-acked-hold.ts +230 -0
- package/src/mesh/mesh-reconcile-config.ts +66 -0
- package/src/mesh/mesh-reconcile-identity.ts +103 -0
- package/src/mesh/mesh-reconcile-loop.ts +1696 -0
- package/src/mesh/mesh-reconcile-v2-backstop.ts +62 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1792 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-remote-event-pull.ts +279 -0
- package/src/mesh/mesh-review-inbox.ts +308 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +2292 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +215 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1489 -145
- package/src/mesh/preview-freshness.ts +163 -0
- package/src/mesh/refine-config.ts +129 -12
- package/src/mesh/worktree-bootstrap-config.ts +599 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +100 -6
- package/src/providers/chat-message-normalization.ts +126 -4
- package/src/providers/cli-provider-effect-format.ts +53 -0
- package/src/providers/cli-provider-history-dedup.ts +75 -0
- package/src/providers/cli-provider-input-prompt.ts +133 -0
- package/src/providers/cli-provider-instance-types.ts +131 -0
- package/src/providers/cli-provider-instance.ts +2771 -499
- package/src/providers/cli-provider-status-helpers.ts +123 -0
- package/src/providers/cli-provider-transcript-merge.ts +114 -0
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +207 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +105 -0
- package/src/providers/native-history/antigravity-claim-registry.ts +138 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +1275 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +617 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +312 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +24 -1
- package/src/providers/provider-loader.ts +700 -55
- package/src/providers/provider-schema.ts +93 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +261 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +538 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +246 -0
- package/src/providers/spec/cli-adapter.ts +1064 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1528 -0
- package/src/providers/spec/fsm-evaluator.ts +290 -0
- package/src/providers/spec/fsm-loader.ts +128 -0
- package/src/providers/spec/fsm-types.ts +301 -0
- package/src/providers/spec/native-history-executor.ts +1241 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +284 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +861 -14
- package/src/runtime-defaults.ts +39 -0
- package/src/session-host/managed-host.ts +218 -0
- package/src/session-host/runtime-surface.ts +20 -80
- package/src/sessions/registry.ts +44 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +148 -55
- package/src/status/builders.ts +69 -6
- package/src/status/chat-tail-hot-sessions.ts +117 -2
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +100 -27
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +26 -6
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M3: Mission persistence (minimal form).
|
|
3
|
+
*
|
|
4
|
+
* A mission is a persistent record of a multi-task goal so the plan lives in
|
|
5
|
+
* the system rather than in the coordinator LLM's context. Coordinator
|
|
6
|
+
* sessions can die or compact; a new coordinator reads the mission back at
|
|
7
|
+
* launch and continues.
|
|
8
|
+
*
|
|
9
|
+
* Explicit non-goals (see docs/mesh-product-plan-v2.md Phase M3): this is not
|
|
10
|
+
* a workflow engine and there is no automatic takeover daemon. Progress is
|
|
11
|
+
* never stored — it is derived from queue task statuses (mission_id) at
|
|
12
|
+
* query time.
|
|
13
|
+
*/
|
|
14
|
+
import { type MeshMissionStats } from './mesh-task-stats.js';
|
|
15
|
+
export type MeshMissionStatus = 'active' | 'paused' | 'completed' | 'abandoned';
|
|
16
|
+
export declare const MESH_MISSION_STATUSES: MeshMissionStatus[];
|
|
17
|
+
/**
|
|
18
|
+
* Provenance of a mission. `magi` marks an inline mission auto-created by a
|
|
19
|
+
* mesh_magi_review fan-out (one per cross-verification run). `coordinator` (the
|
|
20
|
+
* default semantic for an unstamped/legacy mission) marks a coordinator- or
|
|
21
|
+
* user-authored mission. Used to bound the accumulation of completed MAGI missions
|
|
22
|
+
* out of the default mesh_mission_list surface — see listMeshMissionSummaries.
|
|
23
|
+
*/
|
|
24
|
+
export type MeshMissionSource = 'magi' | 'coordinator';
|
|
25
|
+
export interface MeshMissionRecord {
|
|
26
|
+
id: string;
|
|
27
|
+
meshId: string;
|
|
28
|
+
title: string;
|
|
29
|
+
goal: string;
|
|
30
|
+
status: MeshMissionStatus;
|
|
31
|
+
/**
|
|
32
|
+
* Optional provenance tag. Absent on missions created before this field existed
|
|
33
|
+
* and on coordinator/user missions that don't bother stamping it — both are
|
|
34
|
+
* treated as coordinator missions (never auto-hidden). Only explicit `magi`
|
|
35
|
+
* missions are bounded out of the default list once completed.
|
|
36
|
+
*/
|
|
37
|
+
source?: MeshMissionSource;
|
|
38
|
+
/**
|
|
39
|
+
* G3: idempotency marker for the mission_close_candidate nudge. ISO timestamp of
|
|
40
|
+
* the last emit; absent/undefined when the mission has not (or no longer) been in a
|
|
41
|
+
* fully-terminal state. Owned by maybeEmitMissionCloseCandidate — never set by a
|
|
42
|
+
* regular upsert. See summarizeMissionTasks / maybeEmitMissionCloseCandidate.
|
|
43
|
+
*/
|
|
44
|
+
closeCandidateEmittedAt?: string;
|
|
45
|
+
createdAt: string;
|
|
46
|
+
updatedAt: string;
|
|
47
|
+
}
|
|
48
|
+
export interface MeshMissionTaskAggregate {
|
|
49
|
+
total: number;
|
|
50
|
+
pending: number;
|
|
51
|
+
assigned: number;
|
|
52
|
+
completed: number;
|
|
53
|
+
failed: number;
|
|
54
|
+
cancelled: number;
|
|
55
|
+
/** Pending tasks held back by a dependency failure (blockedReason set). */
|
|
56
|
+
blocked: number;
|
|
57
|
+
/** Latest updatedAt across the mission's tasks, or null with no tasks. */
|
|
58
|
+
lastActivityAt: string | null;
|
|
59
|
+
}
|
|
60
|
+
export interface MeshMissionSummary extends MeshMissionRecord {
|
|
61
|
+
tasks: MeshMissionTaskAggregate;
|
|
62
|
+
/**
|
|
63
|
+
* Operational rollup (durations / attempts) derived from the ledger via
|
|
64
|
+
* computeMeshMissionStats. Optional: only populated by surfaces that opt in
|
|
65
|
+
* (e.g. mesh_status), since the rollup scans a bounded ledger tail per
|
|
66
|
+
* mission. Absent on the lightweight task-aggregate-only summaries.
|
|
67
|
+
*/
|
|
68
|
+
stats?: MeshMissionStats;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Slim mission summary for the mesh_status compact (default) surface. Drops the
|
|
72
|
+
* full `goal` text — which can be hundreds of chars per mission and is repeated
|
|
73
|
+
* for every mission on every status call — keeping only a short preview plus a
|
|
74
|
+
* `goalTruncated` flag when the original was longer. The stored goal is never
|
|
75
|
+
* mutated; this is an output-only projection. Coordinators that need the full
|
|
76
|
+
* goal call mesh_status with verbose=true, or read the mission directly via
|
|
77
|
+
* mesh_mission_upsert / getMeshMission.
|
|
78
|
+
*/
|
|
79
|
+
export interface MeshMissionSlimSummary extends Omit<MeshMissionSummary, 'goal'> {
|
|
80
|
+
/** Short preview of the goal (≤ GOAL_PREVIEW_MAX chars), '' when goal empty. */
|
|
81
|
+
goalPreview: string;
|
|
82
|
+
/** True when the stored goal was longer than the preview (full text elided). */
|
|
83
|
+
goalTruncated: boolean;
|
|
84
|
+
}
|
|
85
|
+
/** Max chars of goal text retained in the slim (compact) mission summary. */
|
|
86
|
+
export declare const GOAL_PREVIEW_MAX = 120;
|
|
87
|
+
/**
|
|
88
|
+
* Shorter goal preview used by the mesh_status compact (LLM coordinator) surface.
|
|
89
|
+
* The coordinator only needs to recognize a mission, not read its full goal, and
|
|
90
|
+
* mesh_status repeats every live mission on every poll — so the status preview is
|
|
91
|
+
* tighter than the dashboard / mesh_mission_list preview (GOAL_PREVIEW_MAX).
|
|
92
|
+
*/
|
|
93
|
+
export declare const COMPACT_STATUS_GOAL_PREVIEW_MAX = 80;
|
|
94
|
+
/**
|
|
95
|
+
* mesh_mission_list default fold sizes. Without an explicit `statuses` filter the
|
|
96
|
+
* tool returns non-terminal (active/paused) missions in full detail but folds the
|
|
97
|
+
* completed/abandoned history into counts + a capped newest-first id list — a mesh
|
|
98
|
+
* can accumulate hundreds of terminal missions and returning them all (each with a
|
|
99
|
+
* ledger-scanned stats rollup) blew past the tool payload / token budget and spilled
|
|
100
|
+
* to a file. When an explicit `statuses` filter IS given, the matching missions are
|
|
101
|
+
* returned in detail but still bounded by MESH_MISSION_LIST_STATUS_LIMIT so a
|
|
102
|
+
* status:["completed"] call on a huge history stays bounded (overflow → truncated).
|
|
103
|
+
*/
|
|
104
|
+
export declare const MESH_MISSION_LIST_HISTORY_ID_LIMIT = 30;
|
|
105
|
+
export declare const MESH_MISSION_LIST_STATUS_LIMIT = 50;
|
|
106
|
+
export declare function upsertMeshMission(meshId: string, input: {
|
|
107
|
+
id?: string;
|
|
108
|
+
title: string;
|
|
109
|
+
goal?: string;
|
|
110
|
+
status?: string;
|
|
111
|
+
source?: MeshMissionSource;
|
|
112
|
+
}): MeshMissionRecord;
|
|
113
|
+
export declare function getMeshMissions(meshId: string, statuses?: MeshMissionStatus[]): MeshMissionRecord[];
|
|
114
|
+
export declare function getMeshMission(meshId: string, missionId: string): MeshMissionRecord | null;
|
|
115
|
+
/** Aggregate task statuses for a mission at query time (no stored progress). */
|
|
116
|
+
export declare function summarizeMissionTasks(meshId: string, missionId: string): MeshMissionTaskAggregate;
|
|
117
|
+
export declare function summarizeMeshMission(meshId: string, mission: MeshMissionRecord): MeshMissionSummary;
|
|
118
|
+
/**
|
|
119
|
+
* G3 — all-tasks-terminal detection: true when a mission has at least one task and
|
|
120
|
+
* every task has reached a terminal status (no pending, no assigned). This is the
|
|
121
|
+
* derived signal (never a stored flag) that a mission has no more work in flight and
|
|
122
|
+
* is a candidate for the coordinator to close. A mission with zero tasks is NOT a
|
|
123
|
+
* candidate — an empty mission is a freshly-created plan, not a finished one.
|
|
124
|
+
*/
|
|
125
|
+
export declare function isMissionAllTasksTerminal(aggregate: MeshMissionTaskAggregate): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* G3 (step ①) — emit a `mission_close_candidate` coordinator nudge the first time an
|
|
128
|
+
* ACTIVE mission's tasks all become terminal, and reset the idempotency marker when a
|
|
129
|
+
* mission leaves the terminal state. Call this after any task-status mutation that can
|
|
130
|
+
* change a mission's aggregate (completion / failure / cancel / dependency-failure /
|
|
131
|
+
* new task). Fire-and-forget and fully best-effort — a throw here must never break the
|
|
132
|
+
* task mutation that triggered it.
|
|
133
|
+
*
|
|
134
|
+
* Design invariants (docs/MESH_PROMPT_ARCH_REVIEW_2026-07.md §9-1 G3):
|
|
135
|
+
* - NEVER transitions the mission status. This only publishes a "consider closing"
|
|
136
|
+
* hint; the coordinator/human decides via mesh_mission_upsert.
|
|
137
|
+
* - Idempotent per all-terminal EDGE. The mission's close_candidate_emitted_at marker
|
|
138
|
+
* guarantees exactly one emit per terminal transition; while the mission stays
|
|
139
|
+
* all-terminal, subsequent calls no-op (no per-tick spam). When the mission returns
|
|
140
|
+
* to non-terminal (a new/re-opened task), the marker is cleared so a later
|
|
141
|
+
* re-completion nudges again.
|
|
142
|
+
* - Only ACTIVE missions nudge. A paused/completed/abandoned mission is never a
|
|
143
|
+
* close candidate (already decided, or intentionally on hold).
|
|
144
|
+
*
|
|
145
|
+
* Returns true iff an event was emitted on this call.
|
|
146
|
+
*/
|
|
147
|
+
export declare function maybeEmitMissionCloseCandidate(meshId: string, missionId: string): boolean;
|
|
148
|
+
/** Active mission summaries for mesh_status / coordinator prompt injection. */
|
|
149
|
+
export declare function getActiveMeshMissionSummaries(meshId: string): MeshMissionSummary[];
|
|
150
|
+
/**
|
|
151
|
+
* Mission summaries for the mesh_status dashboard surface: every active/paused
|
|
152
|
+
* mission plus a capped, newest-first slice of completed/abandoned history so
|
|
153
|
+
* the dashboard can render a collapsible "history" section without unbounded
|
|
154
|
+
* payload growth. Returned newest-first within each group (active/paused first,
|
|
155
|
+
* then history), so the frontend can split on `status` directly.
|
|
156
|
+
*
|
|
157
|
+
* Compact mode (the default) elides each mission's full `goal` text — which is
|
|
158
|
+
* repeated verbatim on every status poll and dominates the payload when a mesh
|
|
159
|
+
* has many missions — returning only a short `goalPreview` + `goalTruncated`
|
|
160
|
+
* flag. Pass `verbose: true` to get the full `goal` text per mission. The stored
|
|
161
|
+
* goal is untouched in both modes; this is an output-only projection.
|
|
162
|
+
*/
|
|
163
|
+
export declare function getMeshStatusMissionSummaries(meshId: string, options?: {
|
|
164
|
+
historyLimit?: number;
|
|
165
|
+
verbose?: boolean;
|
|
166
|
+
withStats?: boolean;
|
|
167
|
+
}): MeshMissionSummary[] | MeshMissionSlimSummary[];
|
|
168
|
+
/** Folded completed/abandoned history for the mesh_status compact surface. */
|
|
169
|
+
export interface MeshStatusMissionsHistoryFold {
|
|
170
|
+
/** Total completed + abandoned missions. */
|
|
171
|
+
count: number;
|
|
172
|
+
/** Count by lifecycle status (e.g. { completed, abandoned }). */
|
|
173
|
+
byStatus: Record<string, number>;
|
|
174
|
+
/** Newest-first id list (capped) so each folded mission stays addressable. */
|
|
175
|
+
missionIds: string[];
|
|
176
|
+
note: string;
|
|
177
|
+
}
|
|
178
|
+
/** Compact mesh_status mission projection: live detail + folded history. */
|
|
179
|
+
export interface MeshStatusMissionsCompact {
|
|
180
|
+
/**
|
|
181
|
+
* Active + paused missions, goal-elided to COMPACT_STATUS_GOAL_PREVIEW_MAX and
|
|
182
|
+
* WITHOUT the operational `stats` rollup — the `tasks` aggregate already carries
|
|
183
|
+
* progress, and stats (durations/retries) is a verbose/dashboard concern.
|
|
184
|
+
*/
|
|
185
|
+
live: MeshMissionSlimSummary[];
|
|
186
|
+
/** Completed + abandoned missions folded to counts + ids; null when none. */
|
|
187
|
+
historyFold: MeshStatusMissionsHistoryFold | null;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Mission projection for the mesh_status COMPACT (LLM coordinator) surface.
|
|
191
|
+
*
|
|
192
|
+
* Unlike getMeshStatusMissionSummaries (which emits every live mission plus a
|
|
193
|
+
* capped slice of full-detail history, each carrying a stats rollup), this keeps
|
|
194
|
+
* per-mission detail ONLY for live (active/paused) missions and folds the whole
|
|
195
|
+
* completed/abandoned history into a counts + id-list summary. Combined with the
|
|
196
|
+
* tighter goal preview and dropped stats, this is what keeps the compact
|
|
197
|
+
* mesh_status payload bounded as a mesh accumulates missions — the missions
|
|
198
|
+
* section previously dominated the payload (full goalPreview + tasks + stats per
|
|
199
|
+
* mission, for every live mission and up to 10 history missions, on every poll).
|
|
200
|
+
*
|
|
201
|
+
* The stored missions are untouched; this is an output-only projection. Full
|
|
202
|
+
* mission detail (goal text + stats + history) stays available via
|
|
203
|
+
* mesh_status verbose=true or mesh_mission_list.
|
|
204
|
+
*/
|
|
205
|
+
export declare function getMeshStatusMissionsCompact(meshId: string, options?: {
|
|
206
|
+
previewMax?: number;
|
|
207
|
+
historyIdLimit?: number;
|
|
208
|
+
}): MeshStatusMissionsCompact;
|
|
209
|
+
/**
|
|
210
|
+
* Read-only mission listing for the mesh_mission_list tool. Returns summaries
|
|
211
|
+
* (record + live task aggregate) for missions matching `statuses` — or every
|
|
212
|
+
* mission when `statuses` is omitted/empty — newest-first by updatedAt. Unlike
|
|
213
|
+
* getMeshStatusMissionSummaries this does NOT cap or group by lifecycle, so a
|
|
214
|
+
* coordinator can deliberately surface paused/abandoned/completed missions that
|
|
215
|
+
* the live status view would hide or truncate.
|
|
216
|
+
*
|
|
217
|
+
* MAGI bounding: by default this EXCLUDES completed MAGI missions (source==='magi'
|
|
218
|
+
* && status==='completed') — a mesh_magi_review fan-out auto-creates one inline
|
|
219
|
+
* mission per run and auto-closes it on collection, so without this they accumulate
|
|
220
|
+
* unbounded and drown out coordinator missions in the list. In-progress MAGI missions
|
|
221
|
+
* (active/paused) are still shown so a running cross-verification stays visible. Pass
|
|
222
|
+
* `includeMagi: true` to return every mission including completed MAGI ones. A mission
|
|
223
|
+
* with no `source` (legacy / coordinator) is never affected.
|
|
224
|
+
*
|
|
225
|
+
* Compact (the default) elides each goal to a capped preview + goalTruncated
|
|
226
|
+
* flag; verbose returns the full goal text. The stored goal is never mutated.
|
|
227
|
+
*/
|
|
228
|
+
export declare function listMeshMissionSummaries(meshId: string, options?: {
|
|
229
|
+
statuses?: MeshMissionStatus[];
|
|
230
|
+
verbose?: boolean;
|
|
231
|
+
includeMagi?: boolean;
|
|
232
|
+
}): MeshMissionSummary[] | MeshMissionSlimSummary[];
|
|
233
|
+
/** Shaped mesh_mission_list result: bounded detail list + optional folded history. */
|
|
234
|
+
export interface MeshMissionListResult {
|
|
235
|
+
/** Detailed (slim or verbose) mission summaries — bounded, newest-first. */
|
|
236
|
+
missions: MeshMissionSummary[] | MeshMissionSlimSummary[];
|
|
237
|
+
/**
|
|
238
|
+
* Completed/abandoned missions folded to counts + ids. Present (default path)
|
|
239
|
+
* when no explicit status filter is given and terminal missions exist. Null when
|
|
240
|
+
* an explicit status filter is active (those missions go into `missions`).
|
|
241
|
+
*/
|
|
242
|
+
historyFold: MeshStatusMissionsHistoryFold | null;
|
|
243
|
+
/** True when an explicit status filter matched more than `limit` missions. */
|
|
244
|
+
truncated: boolean;
|
|
245
|
+
/** Total missions matching the query BEFORE the detail-list cap was applied. */
|
|
246
|
+
matched: number;
|
|
247
|
+
/** Newest-first ids of missions dropped by the detail-list cap (truncated path). */
|
|
248
|
+
overflowIds?: string[];
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* mesh_mission_list projection: payload-bounded regardless of mesh mission count.
|
|
252
|
+
*
|
|
253
|
+
* Default (no explicit `statuses`): non-terminal missions (active/paused) return in
|
|
254
|
+
* detail; completed/abandoned missions are folded to counts + a capped id list
|
|
255
|
+
* (historyFold), NOT emitted one-by-one. This is what keeps the tool from returning
|
|
256
|
+
* hundreds of terminal missions (each with a ledger stats rollup) and overflowing the
|
|
257
|
+
* token budget.
|
|
258
|
+
*
|
|
259
|
+
* Explicit `statuses` (e.g. ["completed"]): the coordinator asked to see those
|
|
260
|
+
* missions, so they ARE returned in detail — but still bounded by `limit` (default
|
|
261
|
+
* MESH_MISSION_LIST_STATUS_LIMIT). Overflow beyond `limit` is reported via
|
|
262
|
+
* truncated:true + overflowIds rather than silently dropped.
|
|
263
|
+
*
|
|
264
|
+
* MAGI + verbose semantics match listMeshMissionSummaries. `withStats` opts each
|
|
265
|
+
* detailed mission into the ledger-scanned stats rollup (off by default — the tasks
|
|
266
|
+
* aggregate is enough for a list view).
|
|
267
|
+
*/
|
|
268
|
+
export declare function listMeshMissionsForTool(meshId: string, options?: {
|
|
269
|
+
statuses?: MeshMissionStatus[];
|
|
270
|
+
verbose?: boolean;
|
|
271
|
+
includeMagi?: boolean;
|
|
272
|
+
withStats?: boolean;
|
|
273
|
+
limit?: number;
|
|
274
|
+
historyIdLimit?: number;
|
|
275
|
+
}): MeshMissionListResult;
|
|
276
|
+
/**
|
|
277
|
+
* M3-3: render active missions as a prompt section for {{mission}}.
|
|
278
|
+
* Empty string when no active mission — the prompt stays byte-identical to
|
|
279
|
+
* the pre-M3 output in that case (regression guarantee).
|
|
280
|
+
*/
|
|
281
|
+
export declare function buildMissionPromptSection(meshId: string): string;
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mesh node-identity & git-freshness helpers
|
|
3
|
+
*
|
|
4
|
+
* Extracted from commands/router.ts (behavior-preserving move). Contains:
|
|
5
|
+
* - daemon-id / machine-id / hostname normalization + canonicalization
|
|
6
|
+
* - inline-mesh node identity reconciliation and transient-state handling
|
|
7
|
+
* - git-status normalization, branch-convergence, and freshness/staleness derivation
|
|
8
|
+
* - the direct git-probe cache and remote git-status probe machinery
|
|
9
|
+
*
|
|
10
|
+
* router.ts re-exports every public symbol from here so existing import paths
|
|
11
|
+
* (e.g. `from '.../commands/router.js'`) keep working.
|
|
12
|
+
*/
|
|
13
|
+
import type { ProviderLoader } from '../providers/provider-loader.js';
|
|
14
|
+
import { awaitWithWarmupDeadline } from '../mesh/mesh-warmup-deadline.js';
|
|
15
|
+
export declare function readProviderPriorityFromPolicy(policy: unknown): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Normalize a providerRoles array (RepoMeshNodePolicy.providerRoles) from raw
|
|
18
|
+
* tool args. Each entry binds a providerType to an optional `maxParallel` cap.
|
|
19
|
+
* Entries without a usable providerType are dropped; the last entry wins on
|
|
20
|
+
* duplicate providerType. Returns [] when no valid entries — callers then omit
|
|
21
|
+
* the field entirely (full backward compat). Routing is governed by required_tags;
|
|
22
|
+
* any legacy `role` field on the input is ignored.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeProviderRoles(value: unknown): Array<{
|
|
25
|
+
providerType: string;
|
|
26
|
+
maxParallel?: number;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function readObjectRecord(value: unknown): Record<string, any>;
|
|
29
|
+
export declare function readStringValue(...values: unknown[]): string | undefined;
|
|
30
|
+
export declare function readBooleanValue(...values: unknown[]): boolean | undefined;
|
|
31
|
+
export declare function summarizeRepoMeshStatusDebug(status: any): Record<string, unknown>;
|
|
32
|
+
export declare function logRepoMeshStatusDebug(event: string, fields: Record<string, unknown>): void;
|
|
33
|
+
export declare function buildMeshNodeDisplayLabel(node: Record<string, unknown>, nodeId: string, providerPriority: string[]): string;
|
|
34
|
+
export declare function readMeshNodeMachineId(node: Record<string, unknown>): string | undefined;
|
|
35
|
+
export declare function readMeshNodeDaemonId(node: Record<string, unknown>): string | undefined;
|
|
36
|
+
export declare function readMeshNodeHostname(node: Record<string, unknown>): string | undefined;
|
|
37
|
+
export declare function buildMeshNodeMachineIdentity(node: Record<string, unknown>, opts: {
|
|
38
|
+
localMachineId?: string;
|
|
39
|
+
localDaemonId?: string;
|
|
40
|
+
coordinatorHostname?: string;
|
|
41
|
+
isSelfNode?: boolean;
|
|
42
|
+
}): Record<string, unknown>;
|
|
43
|
+
export declare function buildInlineMeshTransitGitStatus(node: any): Record<string, unknown> | undefined;
|
|
44
|
+
export declare function shouldRefreshStalePendingAggregate(snapshot: any, options?: {
|
|
45
|
+
requireDirectPeerTruth?: boolean;
|
|
46
|
+
}): boolean;
|
|
47
|
+
export declare function buildLivePeerGitConnection(connection: Record<string, unknown>, timestamp?: string): Record<string, unknown>;
|
|
48
|
+
export declare function recordInlineMeshDirectGitTruth(node: any, git: Record<string, unknown>, source: 'selected_coordinator_local_git' | 'selected_coordinator_mesh_p2p_git'): {
|
|
49
|
+
reporterPlatform: string | null;
|
|
50
|
+
reporterArch: string | null;
|
|
51
|
+
reporterMachineNickname: string | null;
|
|
52
|
+
reporterProviderVersions: Record<string, string> | null;
|
|
53
|
+
reporterDaemonBuildVersion: string | null;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Persist the live self-reported platform/arch onto the local meshes.json node
|
|
57
|
+
* record so capability-tag os=/arch= self-heals across coordinator restarts.
|
|
58
|
+
*
|
|
59
|
+
* The in-memory stamp done by recordInlineMeshDirectGitTruth lives on the
|
|
60
|
+
* mesh_status assembly object and is discarded after the response; only a
|
|
61
|
+
* `local_config` mesh has a backing meshes.json node to write through to. Inline
|
|
62
|
+
* cache/bootstrap meshes have no local node to update, so we no-op for them.
|
|
63
|
+
* Fire-and-forget (same pattern as the worktreeBootstrap writer) — a persistence
|
|
64
|
+
* failure must never block the status response.
|
|
65
|
+
*/
|
|
66
|
+
export declare function persistNodeReporterPlatform(meshSource: 'inline_cache' | 'inline_bootstrap' | 'local_config', mesh: any, nodeId: string | undefined, reporter: {
|
|
67
|
+
reporterPlatform: string | null;
|
|
68
|
+
reporterArch: string | null;
|
|
69
|
+
reporterMachineNickname?: string | null;
|
|
70
|
+
reporterProviderVersions?: Record<string, string> | null;
|
|
71
|
+
reporterDaemonBuildVersion?: string | null;
|
|
72
|
+
}): void;
|
|
73
|
+
export declare function inlineMeshCarriesTransientNodeTruth(inlineMesh: any): boolean;
|
|
74
|
+
export declare function readInlineMeshNodeId(node: any): string;
|
|
75
|
+
export declare function isDeadLocalWorktreeNode(node: any): boolean;
|
|
76
|
+
export declare function foldMeshNodeIdentityToCanonical(node: any): any;
|
|
77
|
+
export declare function normalizeInlineMeshNodeIdentity(inlineMesh: any): any;
|
|
78
|
+
export declare function sanitizeInlineMesh(inlineMesh: any): any;
|
|
79
|
+
export declare function reconcileInlineMeshCache(cached: any, incoming: any): any;
|
|
80
|
+
export declare function deriveMeshNodeHealthFromGit(git: Record<string, unknown> | null | undefined): 'online' | 'dirty' | 'degraded';
|
|
81
|
+
export declare function applyInlineMeshBranchConvergence(mesh: any, node: any, status: Record<string, unknown>): void;
|
|
82
|
+
export declare function summarizeInlineMeshBranchConvergence(nodes: Array<Record<string, unknown>>): Record<string, unknown>;
|
|
83
|
+
export declare function readCachedInlineMeshActiveSessions(node: any): string[];
|
|
84
|
+
/**
|
|
85
|
+
* Wider session-ownership scan used ONLY by resolveRemoteMeshSessionOwnerDaemonId: collect
|
|
86
|
+
* EVERY session id a mesh node currently hosts. readCachedInlineMeshActiveSessions above only
|
|
87
|
+
* surfaces the node's single primary session (cachedStatus.activeSession) — other consumers
|
|
88
|
+
* depend on that one-session semantics, so it is left untouched. A worker hosting more than one
|
|
89
|
+
* session exposes its non-primary sessions only through the plural live-session arrays the
|
|
90
|
+
* coordinator carries: status.activeSessions / activeSessionDetails (built from live records on
|
|
91
|
+
* the aggregate snapshot, see get_mesh_status), or a worker's merged session report. A
|
|
92
|
+
* controlbar/modal command (invoke_provider_script / resolve_action / set_mode / …) targeting a
|
|
93
|
+
* non-primary remote session resolves its owner daemon only when those plural shapes are scanned
|
|
94
|
+
* too. Mirrors sessionStatusFromNodes' shape tolerance (mesh-active-work.ts): plural arrays of
|
|
95
|
+
* string ids OR objects keyed by id/sessionId/session_id/runtimeSessionId/instanceId, on both
|
|
96
|
+
* camelCase and snake_case, at the node root and under cachedStatus / lastProbe.
|
|
97
|
+
*/
|
|
98
|
+
export declare function collectMeshNodeHostedSessionIds(node: any): Set<string>;
|
|
99
|
+
/**
|
|
100
|
+
* Resolve the owning-node attribution for a mesh node record so a coordinator can
|
|
101
|
+
* stamp the TRUE owner onto a synthetic session entry instead of letting the
|
|
102
|
+
* dashboard fall back to the coordinator's own daemonId. Returns whichever of the
|
|
103
|
+
* owning node's `daemonId` / display machine name could be read from the node's
|
|
104
|
+
* (possibly multi-serialization-path) shape; both may be undefined for a node that
|
|
105
|
+
* never carried machine identity.
|
|
106
|
+
*/
|
|
107
|
+
export declare function resolveMeshNodeAttribution(node: unknown): {
|
|
108
|
+
daemonId?: string;
|
|
109
|
+
machineName?: string;
|
|
110
|
+
};
|
|
111
|
+
export declare function readCachedInlineMeshActiveSessionDetails(node: any): Array<Record<string, unknown>>;
|
|
112
|
+
/**
|
|
113
|
+
* Transient per-node marker the mesh_status render loop stamps onto a node
|
|
114
|
+
* `status` at the two sites that obtain git truth from a FRESH probe this call
|
|
115
|
+
* (a successful local `getGitRepoStatus`, or a successful P2P `git_status`
|
|
116
|
+
* round-trip). finalizeMeshNodeStatus consumes and deletes it. Held/standing
|
|
117
|
+
* truth (node.lastGit / cachedStatus / inline transit) is deliberately NOT
|
|
118
|
+
* stamped — its absence is exactly how the freshness marker tells "live" apart
|
|
119
|
+
* from "cached". Internal only; never serialized in the response.
|
|
120
|
+
*/
|
|
121
|
+
export declare const MESH_NODE_LIVE_TRUTH_MARKER = "__liveTruthProbed";
|
|
122
|
+
/**
|
|
123
|
+
* Build the additive per-node `dataFreshness` marker. This NEVER mutates any
|
|
124
|
+
* existing field — it only adds an explicit, machine-readable answer to the
|
|
125
|
+
* question the legacy fields blurred: is this node's data live (just probed),
|
|
126
|
+
* cached (held truth, maybe old), or absent because the peer was unreachable?
|
|
127
|
+
*
|
|
128
|
+
* The crucial separation: an UNREACHABLE peer (P2P probe failed / not connected)
|
|
129
|
+
* is no longer indistinguishable from an idle/EMPTY node. Both used to render as
|
|
130
|
+
* `health:'unknown'` with no sessions; now `dataFreshness.dataSource` and
|
|
131
|
+
* `reachable` tell them apart so a coordinator never reads a dead peer as "online
|
|
132
|
+
* but doing nothing".
|
|
133
|
+
*/
|
|
134
|
+
export declare function buildMeshNodeDataFreshness(args: {
|
|
135
|
+
status: Record<string, unknown>;
|
|
136
|
+
node?: any;
|
|
137
|
+
isSelfNode: boolean;
|
|
138
|
+
daemonId?: string;
|
|
139
|
+
/** True when this node was stamped with a fresh live git probe this call. */
|
|
140
|
+
liveTruthProbed: boolean;
|
|
141
|
+
/** True when direct-peer-truth accounting classified this node unavailable. */
|
|
142
|
+
directTruthUnavailable?: boolean;
|
|
143
|
+
now?: () => number;
|
|
144
|
+
}): Record<string, unknown>;
|
|
145
|
+
/**
|
|
146
|
+
* Canonical live-probe → freshness adapter. The coordinator-facing mesh_status
|
|
147
|
+
* (mcp-server `meshStatus`) builds each node entry from a SINGLE fresh git_status
|
|
148
|
+
* probe that either returns (live truth) or throws (peer unreachable). It used to
|
|
149
|
+
* hand-reconstruct the freshness INPUT inline — a synthetic `{ git, connection }`
|
|
150
|
+
* status plus the directTruthUnavailable/liveTruthProbed wiring — which is exactly
|
|
151
|
+
* how a field added to `buildMeshNodeDataFreshness`'s input contract ends up "wired
|
|
152
|
+
* on the daemon surface, null on the coordinator surface" (the rc.371
|
|
153
|
+
* null-everywhere regression). Routing every live-probe surface through this one
|
|
154
|
+
* adapter keeps the marker derivation canonical: there is a SINGLE place that turns
|
|
155
|
+
* a probe outcome into freshness args, so the two mesh_status surfaces cannot drift.
|
|
156
|
+
*
|
|
157
|
+
* `liveTruthProbed` true → the probe returned (live/self truth); false → it threw,
|
|
158
|
+
* so a configured peer is unreachable while an unconfigured node (no daemonId) falls
|
|
159
|
+
* through to the classifier's `unconfigured` branch.
|
|
160
|
+
*/
|
|
161
|
+
export declare function buildMeshNodeProbeFreshness(args: {
|
|
162
|
+
/** The git snapshot this probe stamped on the node entry (entry.git). */
|
|
163
|
+
git: unknown;
|
|
164
|
+
/** True when the fresh git_status probe RETURNED (live truth); false when it threw. */
|
|
165
|
+
liveTruthProbed: boolean;
|
|
166
|
+
isSelfNode: boolean;
|
|
167
|
+
/** The node's resolved daemonId; absent → unconfigured node. */
|
|
168
|
+
daemonId?: string;
|
|
169
|
+
/** The mesh node record, for held-git fallback when the probe did not return live. */
|
|
170
|
+
node?: any;
|
|
171
|
+
now?: () => number;
|
|
172
|
+
}): Record<string, unknown>;
|
|
173
|
+
export declare function finalizeMeshNodeStatus(args: {
|
|
174
|
+
status: Record<string, unknown>;
|
|
175
|
+
node: any;
|
|
176
|
+
daemonId?: string;
|
|
177
|
+
isSelfNode: boolean;
|
|
178
|
+
/** True when direct-peer-truth accounting classified this node unavailable. */
|
|
179
|
+
directTruthUnavailable?: boolean;
|
|
180
|
+
}): void;
|
|
181
|
+
export declare const MESH_DIRECT_PROBE_TIMEOUT_MS: number;
|
|
182
|
+
export declare const MESH_DIRECT_PROBE_RETRY_TIMEOUT_MS: number;
|
|
183
|
+
export declare const MESH_DIRECT_PROBE_CONNECT_TIMEOUT_MS: number;
|
|
184
|
+
export declare const MESH_DIRECT_PROBE_REUSE_MS: number;
|
|
185
|
+
/**
|
|
186
|
+
* De-duplicates and rate-limits per-peer git_status probes so a single mesh
|
|
187
|
+
* refresh — or a burst of refreshes from the dashboard auto-retry loop — cannot
|
|
188
|
+
* launch a storm of concurrent/back-to-back `refreshUpstream:true` commands to
|
|
189
|
+
* the same slow peer.
|
|
190
|
+
*
|
|
191
|
+
* Two gates, both keyed by `daemonId::workspace`:
|
|
192
|
+
* - In-flight dedup: a second probe for a key with a probe already running
|
|
193
|
+
* shares (awaits) the in-flight promise instead of issuing a second command.
|
|
194
|
+
* - Recently-probed reuse: a successful probe younger than `reuseMs` is reused
|
|
195
|
+
* verbatim instead of issuing a fresh probe. Failures are NOT cached (so a
|
|
196
|
+
* transient timeout doesn't pin a peer to "no truth" for the whole window).
|
|
197
|
+
*
|
|
198
|
+
* Lives on the router instance so the gate spans separate mesh_status calls,
|
|
199
|
+
* which is exactly where the refresh storm happens.
|
|
200
|
+
*/
|
|
201
|
+
export declare class MeshGitProbeCache {
|
|
202
|
+
private readonly reuseMs;
|
|
203
|
+
private readonly now;
|
|
204
|
+
private inflight;
|
|
205
|
+
private recent;
|
|
206
|
+
constructor(reuseMs: number, now?: () => number);
|
|
207
|
+
private key;
|
|
208
|
+
/**
|
|
209
|
+
* Local (same-machine) git_status dedup. The bootstrap direct-truth hydrate
|
|
210
|
+
* and the per-node render loop both call getGitRepoStatus(refreshUpstream:true)
|
|
211
|
+
* for the same local workspace within one mesh_status call. Each such probe
|
|
212
|
+
* fans out ~13-15 git subprocesses, and because the two passes are separated by
|
|
213
|
+
* the render/hydrate work of every OTHER node they routinely straddle the
|
|
214
|
+
* getGitRepoStatus 1.5s TTL, so the second pass re-shells the whole ~14-process
|
|
215
|
+
* collection. Routing both through this cache (namespaced under a reserved
|
|
216
|
+
* daemon id so it never collides with a remote-peer key) collapses them to one
|
|
217
|
+
* collection per workspace per request, and reuses it across the reuse window
|
|
218
|
+
* so the dashboard auto-retry loop can't restart a fresh local probe seconds
|
|
219
|
+
* apart either.
|
|
220
|
+
*/
|
|
221
|
+
private static readonly LOCAL_PROBE_DAEMON_ID;
|
|
222
|
+
probeLocal(workspace: string, probe: () => Promise<Record<string, unknown> | null>): Promise<Record<string, unknown> | null>;
|
|
223
|
+
/**
|
|
224
|
+
* Run `probe` for this peer, but reuse a fresh recent result or an in-flight
|
|
225
|
+
* probe for the same key when one is available. `probe` is only invoked when
|
|
226
|
+
* neither gate is satisfied.
|
|
227
|
+
*/
|
|
228
|
+
probe(daemonId: string, workspace: string, probe: () => Promise<Record<string, unknown> | null>): Promise<Record<string, unknown> | null>;
|
|
229
|
+
}
|
|
230
|
+
export { awaitWithWarmupDeadline };
|
|
231
|
+
/**
|
|
232
|
+
* Probe a remote peer's git_status with a bounded retry budget, but only while
|
|
233
|
+
* the peer is reported `connected`. A single slow (often TURN-relayed) peer can
|
|
234
|
+
* exceed one probe window; retrying — with the connection re-checked before each
|
|
235
|
+
* attempt so we abandon a peer that dropped — recovers it without blocking the
|
|
236
|
+
* mesh forever. Shared by the bootstrap hydrate path and the per-node render
|
|
237
|
+
* path so both treat a connected-but-slow peer identically.
|
|
238
|
+
*
|
|
239
|
+
* Returns the git status on success, or null if every attempt failed/timed out
|
|
240
|
+
* (caller decides how to classify). `getConnection` is consulted before each
|
|
241
|
+
* attempt; a non-`connected` state short-circuits the retry loop (the very first
|
|
242
|
+
* attempt always runs so a missing connection getter still gets one try).
|
|
243
|
+
*/
|
|
244
|
+
export declare function probeRemoteMeshGitStatusWithRetry(args: {
|
|
245
|
+
dispatchMeshCommand?: (daemonId: string, cmd: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
246
|
+
daemonId: string;
|
|
247
|
+
workspace: string;
|
|
248
|
+
timeoutMs: number;
|
|
249
|
+
/** Per-attempt timeout for retries (attempts > 0); defaults to timeoutMs. */
|
|
250
|
+
retryTimeoutMs?: number;
|
|
251
|
+
/** Cold-open warmup budget per attempt; defaults to MESH_DIRECT_PROBE_CONNECT_TIMEOUT_MS. */
|
|
252
|
+
connectTimeoutMs?: number;
|
|
253
|
+
getConnection?: (daemonId: string) => Record<string, unknown> | null;
|
|
254
|
+
onConnection?: (connection: Record<string, unknown>) => void;
|
|
255
|
+
}): Promise<Record<string, unknown> | null>;
|
|
256
|
+
export declare function hydrateInlineMeshDirectTruth(args: {
|
|
257
|
+
mesh: any;
|
|
258
|
+
meshSource: 'inline_cache' | 'inline_bootstrap' | 'local_config';
|
|
259
|
+
dispatchMeshCommand?: (daemonId: string, cmd: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
260
|
+
getMeshPeerConnectionStatus?: (daemonId: string) => Record<string, unknown> | null;
|
|
261
|
+
statusInstanceId?: string;
|
|
262
|
+
localMachineId?: string;
|
|
263
|
+
probeRemotePeers: boolean;
|
|
264
|
+
probeCache?: MeshGitProbeCache;
|
|
265
|
+
}): Promise<{
|
|
266
|
+
directEvidenceCount: number;
|
|
267
|
+
localConfirmedCount: number;
|
|
268
|
+
peerAttemptedCount: number;
|
|
269
|
+
peerConfirmedCount: number;
|
|
270
|
+
standingEvidenceCount: number;
|
|
271
|
+
unavailableNodeIds: string[];
|
|
272
|
+
deadNodeIds: string[];
|
|
273
|
+
}>;
|
|
274
|
+
export declare function summarizeMeshSessionRecord(record: any): Record<string, unknown>;
|
|
275
|
+
export declare function readLiveMeshNodeWorkspace(args: {
|
|
276
|
+
meshId: string;
|
|
277
|
+
nodeId: string;
|
|
278
|
+
liveSessionRecords: any[];
|
|
279
|
+
allowCoordinatorSession?: boolean;
|
|
280
|
+
}): string;
|
|
281
|
+
export declare function collectLiveMeshSessionRecords(args: {
|
|
282
|
+
meshId: string;
|
|
283
|
+
node: any;
|
|
284
|
+
nodeId: string;
|
|
285
|
+
liveSessionRecords: any[];
|
|
286
|
+
allowCoordinatorSession?: boolean;
|
|
287
|
+
}): any[];
|
|
288
|
+
export declare function buildHistoricalMeshSessions(args: {
|
|
289
|
+
meshId: string;
|
|
290
|
+
nodes: any[];
|
|
291
|
+
liveSessionRecords: any[];
|
|
292
|
+
}): {
|
|
293
|
+
count: number;
|
|
294
|
+
sessions: Record<string, unknown>[];
|
|
295
|
+
instruction: string;
|
|
296
|
+
} | undefined;
|
|
297
|
+
export declare function applyCachedInlineMeshNodeStatus(status: Record<string, unknown>, node: any, options?: {
|
|
298
|
+
skipGit?: boolean;
|
|
299
|
+
skipError?: boolean;
|
|
300
|
+
skipHealth?: boolean;
|
|
301
|
+
}): boolean;
|
|
302
|
+
export declare function resolveProviderTypeFromPriority(args: {
|
|
303
|
+
nodeId: string;
|
|
304
|
+
providerPriority: string[];
|
|
305
|
+
providerLoader: ProviderLoader;
|
|
306
|
+
onStatusChange?: () => void;
|
|
307
|
+
}): Promise<{
|
|
308
|
+
providerType?: string;
|
|
309
|
+
error?: string;
|
|
310
|
+
}>;
|