@adhdev/daemon-core 0.9.82-rc.43 → 0.9.82-rc.430
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/boot/daemon-lifecycle.d.ts +9 -0
- package/dist/boot/process-hardening.d.ts +50 -0
- package/dist/build-info.d.ts +37 -0
- package/dist/chat/source-machine.d.ts +166 -0
- package/dist/chat/source-resolver.d.ts +104 -0
- package/dist/chat/subscription-updates.d.ts +1 -0
- package/dist/cli-adapter-types.d.ts +68 -2
- package/dist/cli-adapters/cli-script-runner.d.ts +117 -0
- package/dist/cli-adapters/cli-state-engine.d.ts +200 -0
- package/dist/cli-adapters/provider-cli-adapter.d.ts +126 -64
- package/dist/cli-adapters/provider-cli-parse.d.ts +5 -0
- package/dist/cli-adapters/provider-cli-runtime.d.ts +34 -0
- package/dist/cli-adapters/provider-cli-shared.d.ts +74 -0
- package/dist/cli-adapters/pty-write-chunking.d.ts +34 -0
- package/dist/cli-adapters/raw-terminal-io.d.ts +37 -0
- package/dist/cli-adapters/resolve-executable.d.ts +69 -0
- package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +6 -3
- package/dist/cli-adapters/terminal-backends/types.d.ts +10 -2
- package/dist/cli-adapters/terminal-screen.d.ts +4 -11
- package/dist/commands/chat-commands-debug-bundle.d.ts +14 -0
- package/dist/commands/chat-commands-read.d.ts +7 -0
- package/dist/commands/chat-commands-scope.d.ts +39 -0
- package/dist/commands/chat-commands-shared.d.ts +33 -0
- package/dist/commands/chat-commands-write.d.ts +14 -0
- package/dist/commands/chat-commands.d.ts +10 -23
- package/dist/commands/cli-manager.d.ts +15 -1
- package/dist/commands/handler.d.ts +125 -0
- package/dist/commands/high-family/index.d.ts +3 -0
- package/dist/commands/high-family/mesh-coordinator-launch.d.ts +2 -0
- package/dist/commands/high-family/mesh-events.d.ts +2 -0
- package/dist/commands/high-family/mesh-status.d.ts +2 -0
- package/dist/commands/high-family/types.d.ts +60 -0
- package/dist/commands/low-family/coordinator-prompt.d.ts +9 -0
- package/dist/commands/low-family/daemon-lifecycle.d.ts +2 -0
- package/dist/commands/low-family/diagnostics.d.ts +2 -0
- package/dist/commands/low-family/index.d.ts +3 -0
- package/dist/commands/low-family/mesh-ledger.d.ts +10 -0
- package/dist/commands/low-family/mesh-node-logs.d.ts +2 -0
- package/dist/commands/low-family/notification.d.ts +2 -0
- package/dist/commands/low-family/refine-config.d.ts +2 -0
- package/dist/commands/low-family/session-host.d.ts +2 -0
- package/dist/commands/low-family/spec-providerdev.d.ts +11 -0
- package/dist/commands/low-family/status-meta.d.ts +2 -0
- package/dist/commands/low-family/types.d.ts +33 -0
- package/dist/commands/med-family/cli-agent.d.ts +2 -0
- package/dist/commands/med-family/fast-forward.d.ts +2 -0
- package/dist/commands/med-family/ide.d.ts +10 -0
- package/dist/commands/med-family/index.d.ts +3 -0
- package/dist/commands/med-family/mesh-crud.d.ts +29 -0
- package/dist/commands/med-family/mesh-host-pairing.d.ts +2 -0
- package/dist/commands/med-family/mesh-queue.d.ts +2 -0
- package/dist/commands/med-family/mesh-restart.d.ts +2 -0
- package/dist/commands/med-family/types.d.ts +142 -0
- package/dist/commands/mesh-coordinator.d.ts +85 -1
- package/dist/commands/router.d.ts +276 -2
- package/dist/commands/upgrade-helper.d.ts +41 -1
- package/dist/config/chat-history.d.ts +9 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/mesh-config.d.ts +100 -1
- package/dist/config/mesh-json-config.d.ts +199 -0
- package/dist/config/repo-settings.d.ts +77 -0
- package/dist/daemon/dev-server.d.ts +0 -2
- package/dist/detection/ide-detector.d.ts +13 -0
- package/dist/detection/win32-ide-version.d.ts +37 -0
- package/dist/git/change-impact-config.d.ts +159 -0
- package/dist/git/git-commands.d.ts +11 -1
- package/dist/git/git-diff.d.ts +6 -0
- package/dist/git/git-executor.d.ts +11 -0
- package/dist/git/git-status.d.ts +57 -0
- package/dist/git/git-types.d.ts +2 -50
- package/dist/git/git-worktree.d.ts +71 -1
- package/dist/git/index.d.ts +3 -1
- package/dist/index.d.ts +64 -14
- package/dist/index.js +49391 -19228
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48574 -18570
- package/dist/index.mjs.map +1 -1
- package/dist/installer.d.ts +1 -4
- package/dist/ipc/local-ipc-server.d.ts +91 -0
- package/dist/launch.d.ts +1 -1
- package/dist/logging/async-batch-writer.d.ts +10 -0
- package/dist/logging/log-redactor.d.ts +24 -0
- package/dist/logging/log-tail-reader.d.ts +81 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/mesh/contracts.d.ts +164 -0
- package/dist/mesh/coordinator-prompt.d.ts +89 -0
- package/dist/mesh/coordinator-registry.d.ts +59 -0
- package/dist/mesh/mesh-active-work.d.ts +174 -0
- package/dist/mesh/mesh-clone-grace.d.ts +8 -0
- package/dist/mesh/mesh-coordinator-config.d.ts +21 -0
- package/dist/mesh/mesh-delivery-policy.d.ts +131 -0
- package/dist/mesh/mesh-event-classify.d.ts +5 -0
- package/dist/mesh/mesh-event-forwarding.d.ts +41 -0
- package/dist/mesh/mesh-event-trace.d.ts +21 -0
- package/dist/mesh/mesh-events-coordinator.d.ts +4 -0
- package/dist/mesh/mesh-events-pending.d.ts +69 -0
- package/dist/mesh/mesh-events-stale.d.ts +61 -0
- package/dist/mesh/mesh-events-utils.d.ts +75 -0
- package/dist/mesh/mesh-events.d.ts +6 -49
- package/dist/mesh/mesh-fast-forward.d.ts +81 -0
- package/dist/mesh/mesh-host-ownership.d.ts +9 -0
- package/dist/mesh/mesh-init.d.ts +86 -0
- package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -4
- package/dist/mesh/mesh-ledger.d.ts +77 -1
- package/dist/mesh/mesh-magi-status.d.ts +63 -0
- package/dist/mesh/mesh-missions.d.ts +189 -0
- package/dist/mesh/mesh-node-identity.d.ts +289 -0
- package/dist/mesh/mesh-queue-assignment.d.ts +113 -0
- package/dist/mesh/mesh-reconcile-loop.d.ts +65 -0
- package/dist/mesh/mesh-refine-batch.d.ts +68 -0
- package/dist/mesh/mesh-refine-gates.d.ts +428 -0
- package/dist/mesh/mesh-refine-status.d.ts +62 -0
- package/dist/mesh/mesh-review-inbox.d.ts +90 -0
- package/dist/mesh/mesh-routing.d.ts +70 -0
- package/dist/mesh/mesh-runtime-store.d.ts +450 -0
- package/dist/mesh/mesh-scheduling-runtime.d.ts +78 -0
- package/dist/mesh/mesh-task-inflight.d.ts +46 -0
- package/dist/mesh/mesh-task-stats.d.ts +49 -0
- package/dist/mesh/mesh-unresolved-forward-outbox.d.ts +30 -0
- package/dist/mesh/mesh-warmup-deadline.d.ts +68 -0
- package/dist/mesh/mesh-work-queue.d.ts +290 -5
- package/dist/mesh/preview-freshness.d.ts +18 -0
- package/dist/mesh/refine-config.d.ts +216 -0
- package/dist/mesh/worktree-bootstrap-config.d.ts +145 -0
- package/dist/providers/acp-provider-instance.d.ts +5 -0
- package/dist/providers/approval-utils.d.ts +20 -0
- package/dist/providers/chat-message-normalization.d.ts +31 -1
- package/dist/providers/cli-provider-instance.d.ts +221 -3
- package/dist/providers/contracts.d.ts +139 -6
- package/dist/providers/external-sources.d.ts +71 -0
- package/dist/providers/manual-attendance.d.ts +63 -0
- package/dist/providers/native-history/antigravity-cli-transcript.d.ts +100 -0
- package/dist/providers/native-history/claude-cli-transcript.d.ts +70 -0
- package/dist/providers/native-history/codex-cli-transcript.d.ts +73 -0
- package/dist/providers/native-history/constants.d.ts +12 -0
- package/dist/providers/native-history/dispatcher.d.ts +27 -0
- package/dist/providers/native-history/hermes-cli-transcript.d.ts +30 -0
- package/dist/providers/native-history/index.d.ts +13 -0
- package/dist/providers/provider-instance-manager.d.ts +29 -0
- package/dist/providers/provider-instance.d.ts +23 -1
- package/dist/providers/provider-loader.d.ts +26 -4
- package/dist/providers/provider-trust.d.ts +31 -0
- package/dist/providers/read-chat-contract.d.ts +29 -0
- package/dist/providers/sdk/v1/builders/acp/detect-status.d.ts +68 -0
- package/dist/providers/sdk/v1/builders/cli/detect-status.d.ts +86 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval-squash.d.ts +59 -0
- package/dist/providers/sdk/v1/builders/cli/parse-approval.d.ts +65 -0
- package/dist/providers/sdk/v1/builders/cli/parse-session.d.ts +91 -0
- package/dist/providers/sdk/v1/builders/cli/visible-region.d.ts +42 -0
- package/dist/providers/sdk/v1/fixture-tooling/format.d.ts +126 -0
- package/dist/providers/sdk/v1/fixture-tooling/index.d.ts +8 -0
- package/dist/providers/sdk/v1/fixture-tooling/replay.d.ts +38 -0
- package/dist/providers/sdk/v1/index.d.ts +30 -0
- package/dist/providers/sdk/v1/sandbox/README-design.d.ts +193 -0
- package/dist/providers/sdk/v1/sandbox/require-whitelist.d.ts +74 -0
- package/dist/providers/sdk/v1/sandbox/script-runner.d.ts +98 -0
- package/dist/providers/sdk/v1/types/cli/index.d.ts +277 -0
- package/dist/providers/sdk/v1/types/common/index.d.ts +203 -0
- package/dist/providers/sdk/v1/validators/index.d.ts +5 -0
- package/dist/providers/sdk/v1/validators/manifest.d.ts +40 -0
- package/dist/providers/sdk/v1/validators/taint.d.ts +52 -0
- package/dist/providers/spec/adapter.d.ts +91 -0
- package/dist/providers/spec/cli-adapter.d.ts +223 -0
- package/dist/providers/spec/evaluator.d.ts +45 -0
- package/dist/providers/spec/fsm-driver.d.ts +422 -0
- package/dist/providers/spec/fsm-evaluator.d.ts +76 -0
- package/dist/providers/spec/fsm-loader.d.ts +14 -0
- package/dist/providers/spec/fsm-types.d.ts +174 -0
- package/dist/providers/spec/native-history-executor.d.ts +41 -0
- package/dist/providers/spec/pre-launch-trust.d.ts +16 -0
- package/dist/providers/spec/route.d.ts +4 -0
- package/dist/providers/spec/types.d.ts +222 -0
- package/dist/providers/status-monitor.d.ts +7 -7
- package/dist/providers/transcript-v2.d.ts +176 -0
- package/dist/providers/types/interactive-prompt.d.ts +84 -0
- package/dist/providers/working-dir.d.ts +17 -0
- package/dist/repo-mesh-types.d.ts +501 -13
- package/dist/runtime-defaults.d.ts +2 -0
- package/dist/sessions/registry.d.ts +6 -0
- package/dist/shared-types-extra.d.ts +2 -4
- package/dist/shared-types.d.ts +59 -2
- package/dist/status/normalize.d.ts +1 -1
- package/dist/status/normalize.js +1 -0
- package/dist/status/normalize.js.map +1 -1
- package/dist/status/normalize.mjs +1 -0
- package/dist/status/normalize.mjs.map +1 -1
- package/dist/status/reporter.d.ts +2 -0
- package/dist/status/snapshot.d.ts +26 -0
- package/dist/system/hash.d.ts +8 -0
- package/dist/system/load-better-sqlite3.d.ts +21 -0
- package/dist/types.d.ts +5 -0
- package/package.json +7 -3
- package/src/agent-stream/poller.ts +2 -3
- package/src/agent-stream/provider-adapter.ts +1 -1
- package/src/boot/daemon-lifecycle.ts +63 -12
- package/src/boot/process-hardening.ts +89 -0
- package/src/build-info.ts +73 -0
- package/src/chat/source-machine.ts +534 -0
- package/src/chat/source-resolver.ts +0 -0
- package/src/chat/subscription-updates.ts +20 -1
- package/src/cli-adapter-types.d.ts +3 -1
- package/src/cli-adapter-types.ts +68 -2
- package/src/cli-adapters/cli-script-runner.ts +421 -0
- package/src/cli-adapters/cli-state-engine.ts +1246 -0
- package/src/cli-adapters/provider-cli-adapter.d.ts +1 -1
- package/src/cli-adapters/provider-cli-adapter.ts +914 -1144
- package/src/cli-adapters/provider-cli-parse.d.ts +2 -0
- package/src/cli-adapters/provider-cli-parse.ts +19 -0
- package/src/cli-adapters/provider-cli-runtime.ts +56 -7
- package/src/cli-adapters/provider-cli-shared.d.ts +4 -0
- package/src/cli-adapters/provider-cli-shared.ts +121 -11
- package/src/cli-adapters/pty-transport.ts +2 -1
- package/src/cli-adapters/pty-write-chunking.ts +106 -0
- package/src/cli-adapters/raw-terminal-io.ts +252 -0
- package/src/cli-adapters/resolve-executable.ts +204 -0
- package/src/cli-adapters/session-host-transport.ts +2 -1
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +63 -29
- package/src/cli-adapters/terminal-backends/types.ts +10 -3
- package/src/cli-adapters/terminal-screen.ts +16 -81
- package/src/commands/WINDOWS-UPGRADE-LOCK-FAILURE.md +198 -0
- package/src/commands/chat-commands-debug-bundle.ts +398 -0
- package/src/commands/chat-commands-read.ts +2327 -0
- package/src/commands/chat-commands-scope.ts +54 -0
- package/src/commands/chat-commands-shared.ts +114 -0
- package/src/commands/chat-commands-write.ts +891 -0
- package/src/commands/chat-commands.ts +19 -1841
- package/src/commands/cli-manager.ts +544 -26
- package/src/commands/handler.ts +841 -2
- package/src/commands/high-family/index.ts +28 -0
- package/src/commands/high-family/mesh-coordinator-launch.ts +678 -0
- package/src/commands/high-family/mesh-events.ts +80 -0
- package/src/commands/high-family/mesh-status.ts +710 -0
- package/src/commands/high-family/types.ts +76 -0
- package/src/commands/low-family/coordinator-prompt.ts +72 -0
- package/src/commands/low-family/daemon-lifecycle.ts +107 -0
- package/src/commands/low-family/diagnostics.ts +57 -0
- package/src/commands/low-family/index.ts +37 -0
- package/src/commands/low-family/mesh-ledger.ts +62 -0
- package/src/commands/low-family/mesh-node-logs.ts +87 -0
- package/src/commands/low-family/notification.ts +116 -0
- package/src/commands/low-family/refine-config.ts +106 -0
- package/src/commands/low-family/session-host.ts +274 -0
- package/src/commands/low-family/spec-providerdev.ts +217 -0
- package/src/commands/low-family/status-meta.ts +112 -0
- package/src/commands/low-family/types.ts +39 -0
- package/src/commands/med-family/cli-agent.ts +238 -0
- package/src/commands/med-family/fast-forward.ts +230 -0
- package/src/commands/med-family/ide.ts +163 -0
- package/src/commands/med-family/index.ts +37 -0
- package/src/commands/med-family/mesh-crud.ts +1066 -0
- package/src/commands/med-family/mesh-host-pairing.ts +234 -0
- package/src/commands/med-family/mesh-queue.ts +167 -0
- package/src/commands/med-family/mesh-restart.ts +92 -0
- package/src/commands/med-family/types.ts +143 -0
- package/src/commands/mesh-coordinator.ts +334 -124
- package/src/commands/router.ts +2711 -3254
- package/src/commands/stream-commands.ts +8 -0
- package/src/commands/upgrade-helper.ts +310 -45
- package/src/config/chat-history.ts +483 -24
- package/src/config/config.ts +12 -0
- package/src/config/mesh-config.ts +495 -22
- package/src/config/mesh-json-config.ts +376 -0
- package/src/config/recent-activity.ts +8 -2
- package/src/config/repo-settings.ts +111 -0
- package/src/daemon/dev-auto-implement.ts +3 -2
- package/src/daemon/dev-cli-debug.ts +10 -1
- package/src/daemon/dev-server.ts +0 -541
- package/src/detection/cli-detector.ts +28 -9
- package/src/detection/ide-detector.ts +55 -16
- package/src/detection/win32-ide-version.ts +106 -0
- package/src/git/change-impact-config.ts +354 -0
- package/src/git/git-commands.ts +59 -15
- package/src/git/git-diff.ts +81 -11
- package/src/git/git-executor.ts +12 -0
- package/src/git/git-status.ts +767 -48
- package/src/git/git-types.ts +14 -62
- package/src/git/git-worktree.ts +261 -4
- package/src/git/index.ts +17 -0
- package/src/index.ts +194 -12
- package/src/installer.d.ts +1 -1
- package/src/installer.ts +8 -6
- package/src/ipc/local-ipc-server.ts +278 -0
- package/src/launch.d.ts +1 -1
- package/src/launch.ts +37 -28
- package/src/logging/async-batch-writer.ts +55 -0
- package/src/logging/command-log.ts +7 -5
- package/src/logging/log-redactor.ts +100 -0
- package/src/logging/log-tail-reader.ts +341 -0
- package/src/logging/logger.ts +14 -7
- package/src/mesh/contracts.ts +338 -0
- package/src/mesh/coordinator-prompt.ts +381 -33
- package/src/mesh/coordinator-registry.ts +121 -0
- package/src/mesh/mesh-active-work.ts +645 -0
- package/src/mesh/mesh-clone-grace.ts +68 -0
- package/src/mesh/mesh-coordinator-config.ts +97 -0
- package/src/mesh/mesh-delivery-policy.ts +315 -0
- package/src/mesh/mesh-event-classify.ts +51 -0
- package/src/mesh/mesh-event-forwarding.ts +1888 -0
- package/src/mesh/mesh-event-trace.ts +67 -0
- package/src/mesh/mesh-events-coordinator.ts +32 -0
- package/src/mesh/mesh-events-pending.ts +656 -0
- package/src/mesh/mesh-events-stale.ts +389 -0
- package/src/mesh/mesh-events-utils.ts +443 -0
- package/src/mesh/mesh-events.ts +33 -1035
- package/src/mesh/mesh-fast-forward.ts +843 -0
- package/src/mesh/mesh-host-ownership.ts +73 -0
- package/src/mesh/mesh-init.ts +260 -0
- package/src/mesh/mesh-ledger-reconciliation.ts +12 -7
- package/src/mesh/mesh-ledger.ts +656 -102
- package/src/mesh/mesh-magi-status.ts +223 -0
- package/src/mesh/mesh-missions.ts +449 -0
- package/src/mesh/mesh-node-identity.ts +1887 -0
- package/src/mesh/mesh-queue-assignment.ts +1918 -0
- package/src/mesh/mesh-reconcile-loop.ts +1780 -0
- package/src/mesh/mesh-refine-batch.ts +205 -0
- package/src/mesh/mesh-refine-gates.ts +1673 -0
- package/src/mesh/mesh-refine-status.ts +231 -0
- package/src/mesh/mesh-review-inbox.ts +307 -0
- package/src/mesh/mesh-routing.ts +291 -0
- package/src/mesh/mesh-runtime-store.ts +1853 -0
- package/src/mesh/mesh-scheduling-runtime.ts +198 -0
- package/src/mesh/mesh-task-inflight.ts +70 -0
- package/src/mesh/mesh-task-stats.ts +161 -0
- package/src/mesh/mesh-unresolved-forward-outbox.ts +185 -0
- package/src/mesh/mesh-warmup-deadline.ts +152 -0
- package/src/mesh/mesh-work-queue.ts +1243 -141
- package/src/mesh/preview-freshness.ts +118 -0
- package/src/mesh/refine-config.ts +423 -0
- package/src/mesh/worktree-bootstrap-config.ts +450 -0
- package/src/providers/acp-provider-instance.ts +43 -10
- package/src/providers/approval-utils.d.ts +5 -0
- package/src/providers/approval-utils.ts +57 -5
- package/src/providers/chat-message-normalization.ts +92 -4
- package/src/providers/cli-provider-instance.ts +1933 -104
- package/src/providers/contracts.d.ts +55 -0
- package/src/providers/contracts.ts +150 -6
- package/src/providers/extension-provider-instance.ts +12 -7
- package/src/providers/external-sources.ts +218 -0
- package/src/providers/ide-provider-instance.ts +35 -12
- package/src/providers/manual-attendance.ts +85 -0
- package/src/providers/native-history/antigravity-cli-transcript.ts +643 -0
- package/src/providers/native-history/claude-cli-transcript.ts +396 -0
- package/src/providers/native-history/codex-cli-transcript.ts +479 -0
- package/src/providers/native-history/constants.ts +19 -0
- package/src/providers/native-history/dispatcher.ts +339 -0
- package/src/providers/native-history/hermes-cli-transcript.ts +230 -0
- package/src/providers/native-history/index.ts +30 -0
- package/src/providers/provider-instance-manager.ts +71 -0
- package/src/providers/provider-instance.ts +19 -1
- package/src/providers/provider-loader.ts +668 -50
- package/src/providers/provider-schema.ts +87 -14
- package/src/providers/provider-trust.ts +114 -0
- package/src/providers/read-chat-contract.ts +76 -16
- package/src/providers/sdk/README.md +49 -0
- package/src/providers/sdk/v1/builders/acp/detect-status.ts +144 -0
- package/src/providers/sdk/v1/builders/cli/detect-status.ts +313 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval-squash.ts +158 -0
- package/src/providers/sdk/v1/builders/cli/parse-approval.ts +250 -0
- package/src/providers/sdk/v1/builders/cli/parse-session.ts +276 -0
- package/src/providers/sdk/v1/builders/cli/visible-region.ts +143 -0
- package/src/providers/sdk/v1/fixture-tooling/format.ts +130 -0
- package/src/providers/sdk/v1/fixture-tooling/index.ts +22 -0
- package/src/providers/sdk/v1/fixture-tooling/replay.ts +352 -0
- package/src/providers/sdk/v1/index.ts +152 -0
- package/src/providers/sdk/v1/sandbox/README-design.ts +195 -0
- package/src/providers/sdk/v1/sandbox/require-whitelist.ts +472 -0
- package/src/providers/sdk/v1/sandbox/script-runner.ts +150 -0
- package/src/providers/sdk/v1/schemas/cli/provider.schema.json +504 -0
- package/src/providers/sdk/v1/schemas/primitives/acp-session-protocol-v1.json +131 -0
- package/src/providers/sdk/v1/schemas/primitives/native-history-codex-rollout-v1.json +66 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-approval-squash-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-assistant-block-v1.json +91 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-cue-ordering-v1.json +47 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-dispatch-order-v1.json +32 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-footer-chrome-v1.json +42 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-index-finder-v1.json +27 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-modal-v1.json +125 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-prompt-marker-v1.json +45 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-session-id-extraction-v1.json +46 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-settled-prompt-v1.json +71 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-spinner-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-transcript-pty-v1.json +83 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-visible-region-v1.json +57 -0
- package/src/providers/sdk/v1/schemas/primitives/tui-welcome-screen-v1.json +35 -0
- package/src/providers/sdk/v1/types/cli/index.ts +365 -0
- package/src/providers/sdk/v1/types/common/index.ts +229 -0
- package/src/providers/sdk/v1/validators/index.ts +19 -0
- package/src/providers/sdk/v1/validators/manifest.ts +110 -0
- package/src/providers/sdk/v1/validators/taint.ts +309 -0
- package/src/providers/spec/adapter.ts +235 -0
- package/src/providers/spec/cli-adapter.ts +1056 -0
- package/src/providers/spec/evaluator.ts +407 -0
- package/src/providers/spec/fsm-driver.ts +1410 -0
- package/src/providers/spec/fsm-evaluator.ts +272 -0
- package/src/providers/spec/fsm-loader.ts +120 -0
- package/src/providers/spec/fsm-types.ts +273 -0
- package/src/providers/spec/native-history-executor.ts +1128 -0
- package/src/providers/spec/pre-launch-trust.ts +104 -0
- package/src/providers/spec/route.ts +51 -0
- package/src/providers/spec/types.ts +262 -0
- package/src/providers/status-monitor.d.ts +7 -7
- package/src/providers/status-monitor.ts +37 -22
- package/src/providers/transcript-v2.ts +567 -0
- package/src/providers/types/interactive-prompt.ts +536 -0
- package/src/providers/version-archive.ts +64 -24
- package/src/providers/working-dir.ts +23 -0
- package/src/repo-mesh-types.ts +740 -14
- package/src/runtime-defaults.ts +39 -0
- package/src/sessions/registry.ts +6 -0
- package/src/shared-types-extra.ts +2 -4
- package/src/shared-types.d.ts +8 -0
- package/src/shared-types.ts +64 -1
- package/src/status/builders.ts +26 -6
- package/src/status/normalize.ts +2 -0
- package/src/status/reporter.ts +19 -1
- package/src/status/snapshot.ts +95 -26
- package/src/system/hash.ts +23 -0
- package/src/system/host-memory.ts +29 -12
- package/src/system/load-better-sqlite3.ts +68 -0
- package/src/types.ts +5 -0
- package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +0 -17
- package/dist/mesh/mesh-sync.d.ts +0 -53
- package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +0 -16
- package/src/cli-adapters/terminal-backends/xterm-backend.ts +0 -97
- package/src/mesh/mesh-sync.ts +0 -111
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* claude-cli-transcript — Daemon-side built-in native history adapter for claude-cli.
|
|
3
|
+
*
|
|
4
|
+
* Reads Claude Code JSONL transcript files directly without shelling out to a JS override.
|
|
5
|
+
* The transcript format is one JSON object per line, where each line has:
|
|
6
|
+
* - type: 'user' | 'assistant'
|
|
7
|
+
* - message: { content: string | ContentBlock[] }
|
|
8
|
+
* - timestamp: number (ms epoch) | string (ISO)
|
|
9
|
+
* - sessionId?: string
|
|
10
|
+
* - cwd?: string
|
|
11
|
+
*
|
|
12
|
+
* OSS code (AGPL-3.0). Must not import from packages/ (proprietary).
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as fs from 'fs';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
import * as os from 'os';
|
|
18
|
+
|
|
19
|
+
// ─── Types ─────────────────────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
export type NativeHistoryRole = 'user' | 'assistant' | 'system';
|
|
22
|
+
export type NativeHistoryKind = 'standard' | 'tool' | 'session_start';
|
|
23
|
+
|
|
24
|
+
export interface NativeHistoryMessage {
|
|
25
|
+
ts: string;
|
|
26
|
+
receivedAt: number;
|
|
27
|
+
role: NativeHistoryRole;
|
|
28
|
+
content: string;
|
|
29
|
+
kind: NativeHistoryKind;
|
|
30
|
+
senderName?: string;
|
|
31
|
+
agent: 'claude-cli';
|
|
32
|
+
historySessionId: string;
|
|
33
|
+
workspace?: string;
|
|
34
|
+
/** Stable per-message identity (v2 contract). */
|
|
35
|
+
providerUnitKey?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface NativeHistorySession {
|
|
39
|
+
messages: NativeHistoryMessage[];
|
|
40
|
+
providerSessionId: string;
|
|
41
|
+
source: 'provider-native';
|
|
42
|
+
sourcePath: string;
|
|
43
|
+
sourceMtimeMs: number;
|
|
44
|
+
nativeHistoryCoverage: 'full';
|
|
45
|
+
workspace?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface NativeHistorySessionMeta {
|
|
49
|
+
historySessionId: string;
|
|
50
|
+
sessionId: string;
|
|
51
|
+
sourcePath: string;
|
|
52
|
+
sourceMtimeMs: number;
|
|
53
|
+
messageCount: number;
|
|
54
|
+
firstMessageAt: number;
|
|
55
|
+
lastMessageAt: number;
|
|
56
|
+
sessionTitle?: string;
|
|
57
|
+
preview?: string;
|
|
58
|
+
workspace?: string;
|
|
59
|
+
agent: 'claude-cli';
|
|
60
|
+
source: 'provider-native';
|
|
61
|
+
nativeHistoryCoverage: 'full';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ─── Internal helpers ───────────────────────────────────────────────────────
|
|
65
|
+
|
|
66
|
+
function extractTimestampValue(value: unknown): number {
|
|
67
|
+
if (typeof value === 'number' && Number.isFinite(value) && value > 0) return value;
|
|
68
|
+
if (typeof value === 'string') {
|
|
69
|
+
const numeric = Number(value);
|
|
70
|
+
if (Number.isFinite(numeric) && numeric > 0) return numeric;
|
|
71
|
+
const parsed = Date.parse(value);
|
|
72
|
+
if (Number.isFinite(parsed) && parsed > 0) return parsed;
|
|
73
|
+
}
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function statMtimeMs(filePath: string): number {
|
|
78
|
+
try { return fs.statSync(filePath).mtimeMs; } catch { return 0; }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function isSafeSessionId(sessionId: string): boolean {
|
|
82
|
+
return /^[A-Za-z0-9._:-]+$/.test(sessionId) && !sessionId.includes('..');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Expand assistant content array into flat text + kind.
|
|
87
|
+
* For array content, text blocks → 'standard', tool_use blocks → 'tool'.
|
|
88
|
+
*/
|
|
89
|
+
function extractAssistantContentParts(
|
|
90
|
+
content: unknown,
|
|
91
|
+
): Array<{ content: string; kind: NativeHistoryKind; senderName?: string }> {
|
|
92
|
+
if (typeof content === 'string') {
|
|
93
|
+
const trimmed = content.trim();
|
|
94
|
+
return trimmed ? [{ content: trimmed, kind: 'standard' }] : [];
|
|
95
|
+
}
|
|
96
|
+
if (!Array.isArray(content)) return [];
|
|
97
|
+
const parts: Array<{ content: string; kind: NativeHistoryKind; senderName?: string }> = [];
|
|
98
|
+
for (const block of content) {
|
|
99
|
+
if (!block || typeof block !== 'object') continue;
|
|
100
|
+
const type = String((block as Record<string, unknown>).type || '').trim();
|
|
101
|
+
if (type === 'text') {
|
|
102
|
+
const text = String((block as Record<string, unknown>).text || '').trim();
|
|
103
|
+
if (text) parts.push({ content: text, kind: 'standard' });
|
|
104
|
+
} else if (type === 'tool_use') {
|
|
105
|
+
const name = String((block as Record<string, unknown>).name || '').trim() || 'Tool';
|
|
106
|
+
const input = (block as Record<string, unknown>).input;
|
|
107
|
+
const command =
|
|
108
|
+
input && typeof input === 'object'
|
|
109
|
+
? String((input as Record<string, unknown>).command || '').trim()
|
|
110
|
+
: '';
|
|
111
|
+
parts.push({
|
|
112
|
+
content: command ? `${name}: ${command}` : name,
|
|
113
|
+
kind: 'tool',
|
|
114
|
+
senderName: 'Tool',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return parts;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Expand user content array into flat text + role parts.
|
|
123
|
+
* text blocks → role: 'user', tool_result blocks → role: 'assistant' kind: 'tool'.
|
|
124
|
+
*/
|
|
125
|
+
function extractUserContentParts(
|
|
126
|
+
content: unknown,
|
|
127
|
+
): Array<{ role: NativeHistoryRole; content: string; kind: NativeHistoryKind; senderName?: string }> {
|
|
128
|
+
if (typeof content === 'string') {
|
|
129
|
+
const trimmed = content.trim();
|
|
130
|
+
return trimmed ? [{ role: 'user', content: trimmed, kind: 'standard' }] : [];
|
|
131
|
+
}
|
|
132
|
+
if (!Array.isArray(content)) return [];
|
|
133
|
+
const parts: Array<{ role: NativeHistoryRole; content: string; kind: NativeHistoryKind; senderName?: string }> = [];
|
|
134
|
+
for (const block of content) {
|
|
135
|
+
if (!block || typeof block !== 'object') continue;
|
|
136
|
+
const type = String((block as Record<string, unknown>).type || '').trim();
|
|
137
|
+
if (type === 'text') {
|
|
138
|
+
const text = String((block as Record<string, unknown>).text || '').trim();
|
|
139
|
+
if (text) parts.push({ role: 'user', content: text, kind: 'standard' });
|
|
140
|
+
} else if (type === 'tool_result') {
|
|
141
|
+
const raw = (block as Record<string, unknown>).content;
|
|
142
|
+
let text = '';
|
|
143
|
+
if (typeof raw === 'string') {
|
|
144
|
+
text = raw.trim();
|
|
145
|
+
} else if (Array.isArray(raw)) {
|
|
146
|
+
text = (raw as unknown[])
|
|
147
|
+
.map((entry) => {
|
|
148
|
+
if (typeof entry === 'string') return entry.trim();
|
|
149
|
+
if (!entry || typeof entry !== 'object') return '';
|
|
150
|
+
const e = entry as Record<string, unknown>;
|
|
151
|
+
if (typeof e.text === 'string') return e.text.trim();
|
|
152
|
+
if (typeof e.content === 'string') return e.content.trim();
|
|
153
|
+
return '';
|
|
154
|
+
})
|
|
155
|
+
.filter(Boolean)
|
|
156
|
+
.join('\n');
|
|
157
|
+
}
|
|
158
|
+
if (text) parts.push({ role: 'assistant', content: text, kind: 'tool', senderName: 'Tool' });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return parts;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/** Claude projects root: ~/.claude/projects */
|
|
165
|
+
function claudeProjectsRoot(): string {
|
|
166
|
+
return path.join(os.homedir(), '.claude', 'projects');
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Locate the JSONL transcript for `sessionId`.
|
|
171
|
+
* Tries `~/.claude/projects/<workspaceDir>/<sessionId>.jsonl` first, then
|
|
172
|
+
* scans all project subdirectories as fallback.
|
|
173
|
+
*/
|
|
174
|
+
function resolveTranscriptPath(sessionId: string, workspace?: string): string | null {
|
|
175
|
+
const root = claudeProjectsRoot();
|
|
176
|
+
if (!fs.existsSync(root)) return null;
|
|
177
|
+
|
|
178
|
+
const normalizedWorkspace = typeof workspace === 'string' ? workspace.trim() : '';
|
|
179
|
+
if (normalizedWorkspace) {
|
|
180
|
+
const workspaceDir = normalizedWorkspace.replace(/[\\/]/g, '-');
|
|
181
|
+
const directPath = path.resolve(root, workspaceDir, `${sessionId}.jsonl`);
|
|
182
|
+
// Safety: must remain inside root
|
|
183
|
+
if (directPath.startsWith(root + path.sep) || directPath === root) {
|
|
184
|
+
if (fs.existsSync(directPath)) return directPath;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Scan all project subdirectories for a matching file
|
|
189
|
+
let entries: fs.Dirent[] = [];
|
|
190
|
+
try { entries = fs.readdirSync(root, { withFileTypes: true }); } catch { return null; }
|
|
191
|
+
for (const entry of entries) {
|
|
192
|
+
if (!entry.isDirectory()) continue;
|
|
193
|
+
const candidate = path.join(root, entry.name, `${sessionId}.jsonl`);
|
|
194
|
+
if (fs.existsSync(candidate)) return candidate;
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Parse a single JSONL transcript file into NativeHistoryMessages.
|
|
201
|
+
* Malformed lines are silently skipped.
|
|
202
|
+
*/
|
|
203
|
+
function parseTranscriptFile(
|
|
204
|
+
filePath: string,
|
|
205
|
+
sessionId: string,
|
|
206
|
+
workspaceFallback?: string,
|
|
207
|
+
): NativeHistoryMessage[] {
|
|
208
|
+
let raw: string;
|
|
209
|
+
try { raw = fs.readFileSync(filePath, 'utf-8'); } catch { return []; }
|
|
210
|
+
|
|
211
|
+
const lines = raw.split('\n').filter(Boolean);
|
|
212
|
+
const records: NativeHistoryMessage[] = [];
|
|
213
|
+
let fallbackTs = Date.now();
|
|
214
|
+
let detectedWorkspace = typeof workspaceFallback === 'string' ? workspaceFallback.trim() : '';
|
|
215
|
+
|
|
216
|
+
for (const line of lines) {
|
|
217
|
+
let parsed: unknown = null;
|
|
218
|
+
try { parsed = JSON.parse(line); } catch { continue; }
|
|
219
|
+
if (!parsed || typeof parsed !== 'object') continue;
|
|
220
|
+
|
|
221
|
+
const record = parsed as Record<string, unknown>;
|
|
222
|
+
|
|
223
|
+
// Validate sessionId when present in line
|
|
224
|
+
const lineSessionId = String(record.sessionId || '').trim();
|
|
225
|
+
if (lineSessionId && lineSessionId !== sessionId) continue;
|
|
226
|
+
|
|
227
|
+
const receivedAt = extractTimestampValue(record.timestamp) || fallbackTs;
|
|
228
|
+
fallbackTs = receivedAt + 1;
|
|
229
|
+
|
|
230
|
+
// Capture workspace from first cwd encountered
|
|
231
|
+
const lineCwd = String(record.cwd || '').trim();
|
|
232
|
+
if (!detectedWorkspace && lineCwd) detectedWorkspace = lineCwd;
|
|
233
|
+
|
|
234
|
+
// Emit session_start system record once (first line that has cwd or any content)
|
|
235
|
+
if (records.length === 0 && detectedWorkspace) {
|
|
236
|
+
records.push({
|
|
237
|
+
ts: new Date(receivedAt).toISOString(),
|
|
238
|
+
receivedAt,
|
|
239
|
+
role: 'system',
|
|
240
|
+
content: detectedWorkspace,
|
|
241
|
+
kind: 'session_start',
|
|
242
|
+
agent: 'claude-cli',
|
|
243
|
+
historySessionId: sessionId,
|
|
244
|
+
workspace: detectedWorkspace,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const type = String(record.type || '').trim();
|
|
249
|
+
const message = record.message && typeof record.message === 'object'
|
|
250
|
+
? (record.message as Record<string, unknown>)
|
|
251
|
+
: null;
|
|
252
|
+
|
|
253
|
+
if (!message) continue;
|
|
254
|
+
|
|
255
|
+
if (type === 'user') {
|
|
256
|
+
for (const part of extractUserContentParts(message.content)) {
|
|
257
|
+
const msg: NativeHistoryMessage = {
|
|
258
|
+
ts: new Date(receivedAt).toISOString(),
|
|
259
|
+
receivedAt,
|
|
260
|
+
role: part.role,
|
|
261
|
+
content: part.content,
|
|
262
|
+
kind: part.kind,
|
|
263
|
+
agent: 'claude-cli',
|
|
264
|
+
historySessionId: sessionId,
|
|
265
|
+
};
|
|
266
|
+
if (part.senderName) msg.senderName = part.senderName;
|
|
267
|
+
if (detectedWorkspace) msg.workspace = detectedWorkspace;
|
|
268
|
+
records.push(msg);
|
|
269
|
+
}
|
|
270
|
+
} else if (type === 'assistant') {
|
|
271
|
+
for (const part of extractAssistantContentParts(message.content)) {
|
|
272
|
+
const msg: NativeHistoryMessage = {
|
|
273
|
+
ts: new Date(receivedAt).toISOString(),
|
|
274
|
+
receivedAt,
|
|
275
|
+
role: 'assistant',
|
|
276
|
+
content: part.content,
|
|
277
|
+
kind: part.kind,
|
|
278
|
+
agent: 'claude-cli',
|
|
279
|
+
historySessionId: sessionId,
|
|
280
|
+
};
|
|
281
|
+
if (part.senderName) msg.senderName = part.senderName;
|
|
282
|
+
if (detectedWorkspace) msg.workspace = detectedWorkspace;
|
|
283
|
+
records.push(msg);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return records;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Read a single Claude Code session by its transcript file path.
|
|
295
|
+
*
|
|
296
|
+
* `sessionPath` is the absolute path to a `<uuid>.jsonl` file.
|
|
297
|
+
* Returns `null` when the file is missing, empty, or yields no parseable messages.
|
|
298
|
+
*/
|
|
299
|
+
export function readSession(sessionPath: string): NativeHistorySession | null {
|
|
300
|
+
if (!sessionPath || !path.isAbsolute(sessionPath)) return null;
|
|
301
|
+
|
|
302
|
+
const basename = path.basename(sessionPath, '.jsonl');
|
|
303
|
+
if (!isSafeSessionId(basename)) return null;
|
|
304
|
+
if (!fs.existsSync(sessionPath)) return null;
|
|
305
|
+
|
|
306
|
+
const sourceMtimeMs = statMtimeMs(sessionPath);
|
|
307
|
+
const messages = parseTranscriptFile(sessionPath, basename);
|
|
308
|
+
if (messages.length === 0) return null;
|
|
309
|
+
|
|
310
|
+
const firstSystem = messages.find((m) => m.kind === 'session_start');
|
|
311
|
+
const workspace = firstSystem?.workspace || firstSystem?.content || undefined;
|
|
312
|
+
|
|
313
|
+
return {
|
|
314
|
+
messages,
|
|
315
|
+
providerSessionId: basename,
|
|
316
|
+
source: 'provider-native',
|
|
317
|
+
sourcePath: sessionPath,
|
|
318
|
+
sourceMtimeMs,
|
|
319
|
+
nativeHistoryCoverage: 'full',
|
|
320
|
+
workspace,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* List all Claude Code sessions under the given glob-style watchPath base dir.
|
|
326
|
+
*
|
|
327
|
+
* `watchPath` is the pattern from provider.v1.json (`~/.claude/projects/**\/*.jsonl`).
|
|
328
|
+
* This implementation expands the home directory and scans `~/.claude/projects/`
|
|
329
|
+
* recursively, collecting all `.jsonl` files.
|
|
330
|
+
*
|
|
331
|
+
* Returns summary metadata for each session (no full message reads on this hot path;
|
|
332
|
+
* each file is opened only for lightweight scanning).
|
|
333
|
+
*/
|
|
334
|
+
export async function listSessions(watchPath: string): Promise<NativeHistorySessionMeta[]> {
|
|
335
|
+
// Resolve base dir from watchPath: strip leading `~/` then resolve globs.
|
|
336
|
+
// We always scan the canonical root regardless of glob pattern content.
|
|
337
|
+
const expandedBase = watchPath.startsWith('~/')
|
|
338
|
+
? path.join(os.homedir(), watchPath.slice(2).split('/**')[0].split('/*')[0])
|
|
339
|
+
: watchPath.split('/**')[0].split('/*')[0];
|
|
340
|
+
|
|
341
|
+
// Fall back to the canonical ~/.claude/projects root
|
|
342
|
+
const root = fs.existsSync(expandedBase) ? expandedBase : claudeProjectsRoot();
|
|
343
|
+
if (!fs.existsSync(root)) return [];
|
|
344
|
+
|
|
345
|
+
const results: NativeHistorySessionMeta[] = [];
|
|
346
|
+
|
|
347
|
+
// Recursive directory scan
|
|
348
|
+
const stack: string[] = [root];
|
|
349
|
+
while (stack.length > 0) {
|
|
350
|
+
const current = stack.pop()!;
|
|
351
|
+
let entries: fs.Dirent[] = [];
|
|
352
|
+
try { entries = fs.readdirSync(current, { withFileTypes: true }); } catch { continue; }
|
|
353
|
+
|
|
354
|
+
for (const entry of entries) {
|
|
355
|
+
const entryPath = path.join(current, entry.name);
|
|
356
|
+
if (entry.isDirectory()) {
|
|
357
|
+
stack.push(entryPath);
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
if (!entry.isFile() || !entry.name.endsWith('.jsonl')) continue;
|
|
361
|
+
|
|
362
|
+
const sessionId = path.basename(entryPath, '.jsonl');
|
|
363
|
+
if (!isSafeSessionId(sessionId)) continue;
|
|
364
|
+
|
|
365
|
+
const sourceMtimeMs = statMtimeMs(entryPath);
|
|
366
|
+
const messages = parseTranscriptFile(entryPath, sessionId);
|
|
367
|
+
const visible = messages.filter((m) => m.kind !== 'session_start');
|
|
368
|
+
if (visible.length === 0) continue;
|
|
369
|
+
|
|
370
|
+
const firstSystem = messages.find((m) => m.kind === 'session_start');
|
|
371
|
+
const workspace = firstSystem?.workspace || firstSystem?.content || undefined;
|
|
372
|
+
const firstMsg = visible[0];
|
|
373
|
+
const lastMsg = visible[visible.length - 1];
|
|
374
|
+
|
|
375
|
+
results.push({
|
|
376
|
+
historySessionId: sessionId,
|
|
377
|
+
sessionId,
|
|
378
|
+
sourcePath: entryPath,
|
|
379
|
+
sourceMtimeMs,
|
|
380
|
+
messageCount: visible.length,
|
|
381
|
+
firstMessageAt: firstMsg.receivedAt || sourceMtimeMs,
|
|
382
|
+
lastMessageAt: lastMsg.receivedAt || sourceMtimeMs,
|
|
383
|
+
sessionTitle: lastMsg.content,
|
|
384
|
+
preview: lastMsg.content,
|
|
385
|
+
workspace,
|
|
386
|
+
agent: 'claude-cli',
|
|
387
|
+
source: 'provider-native',
|
|
388
|
+
nativeHistoryCoverage: 'full',
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// Sort by most recently updated first
|
|
394
|
+
results.sort((a, b) => (b.lastMessageAt || 0) - (a.lastMessageAt || 0));
|
|
395
|
+
return results;
|
|
396
|
+
}
|