@getpaseo/server 0.1.69 → 0.1.71
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/server/client/daemon-client-runtime-metrics.js.map +1 -1
- package/dist/server/client/daemon-client-websocket-transport.js.map +1 -1
- package/dist/server/client/daemon-client.d.ts +57 -4
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +78 -3
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-manager.d.ts +25 -4
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +231 -26
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.d.ts +2 -0
- package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.js +16 -7
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
- package/dist/server/server/agent/agent-projections.d.ts +6 -2
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
- package/dist/server/server/agent/agent-projections.js +32 -0
- package/dist/server/server/agent/agent-projections.js.map +1 -1
- package/dist/server/server/agent/agent-prompt.d.ts +72 -0
- package/dist/server/server/agent/agent-prompt.d.ts.map +1 -0
- package/dist/server/server/agent/agent-prompt.js +169 -0
- package/dist/server/server/agent/agent-prompt.js.map +1 -0
- package/dist/server/server/agent/agent-response-loop.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +27 -2
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-stream-coalescer.d.ts +1 -1
- package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -1
- package/dist/server/server/agent/agent-timeline-store.js +1 -1
- package/dist/server/server/agent/agent-timeline-store.js.map +1 -1
- package/dist/server/server/agent/create-agent-mode.d.ts +16 -0
- package/dist/server/server/agent/create-agent-mode.d.ts.map +1 -0
- package/dist/server/server/agent/create-agent-mode.js +26 -0
- package/dist/server/server/agent/create-agent-mode.js.map +1 -0
- package/dist/server/server/agent/import-sessions.d.ts +33 -0
- package/dist/server/server/agent/import-sessions.d.ts.map +1 -0
- package/dist/server/server/agent/import-sessions.js +107 -0
- package/dist/server/server/agent/import-sessions.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts +1 -1
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-server.js +61 -14
- package/dist/server/server/agent/mcp-server.js.map +1 -1
- package/dist/server/server/agent/mcp-shared.d.ts +1 -43
- package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-shared.js +0 -138
- package/dist/server/server/agent/mcp-shared.js.map +1 -1
- package/dist/server/server/agent/pcm16-resampler.js.map +1 -1
- package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -1
- package/dist/server/server/agent/prompt-attachments.js +2 -0
- package/dist/server/server/agent/prompt-attachments.js.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/provider-manifest.d.ts +4 -1
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
- package/dist/server/server/agent/provider-manifest.js +11 -0
- package/dist/server/server/agent/provider-manifest.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts +7 -0
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +13 -3
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.d.ts +2 -1
- package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.js +35 -17
- package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/{claude-agent.d.ts → claude/agent.d.ts} +9 -6
- package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/{claude-agent.js → claude/agent.js} +185 -152
- package/dist/server/server/agent/providers/claude/agent.js.map +1 -0
- package/dist/server/server/agent/providers/claude/{claude-models.d.ts → models.d.ts} +1 -1
- package/dist/server/server/agent/providers/claude/models.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/{claude-models.js → models.js} +8 -1
- package/dist/server/server/agent/providers/claude/models.js.map +1 -0
- package/dist/server/server/agent/providers/claude/query.d.ts +14 -0
- package/dist/server/server/agent/providers/claude/query.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/query.js +84 -0
- package/dist/server/server/agent/providers/claude/query.js.map +1 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +19 -3
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +447 -93
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/diagnostic-utils.d.ts.map +1 -1
- package/dist/server/server/agent/providers/diagnostic-utils.js +4 -0
- package/dist/server/server/agent/providers/diagnostic-utils.js.map +1 -1
- package/dist/server/server/agent/providers/generic-acp-agent.d.ts +1 -1
- package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/generic-acp-agent.js +0 -3
- package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/mock-load-test-agent.js +6 -2
- package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.d.ts +3 -2
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +204 -31
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/provider-image-output.d.ts +20 -0
- package/dist/server/server/agent/providers/provider-image-output.d.ts.map +1 -0
- package/dist/server/server/agent/providers/provider-image-output.js +51 -0
- package/dist/server/server/agent/providers/provider-image-output.js.map +1 -0
- package/dist/server/server/agent/providers/provider-runner.d.ts +3 -3
- package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -1
- package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -7
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.js +12 -18
- package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -1
- package/dist/server/server/agent/stt-manager.d.ts +1 -0
- package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
- package/dist/server/server/agent/stt-manager.js +3 -0
- package/dist/server/server/agent/stt-manager.js.map +1 -1
- package/dist/server/server/agent/tool-name-normalization.js.map +1 -1
- package/dist/server/server/agent/tts-manager.js.map +1 -1
- package/dist/server/server/bootstrap.d.ts +1 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +3 -1
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/chat/chat-mentions.d.ts +24 -8
- package/dist/server/server/chat/chat-mentions.d.ts.map +1 -1
- package/dist/server/server/chat/chat-mentions.js +77 -35
- package/dist/server/server/chat/chat-mentions.js.map +1 -1
- package/dist/server/server/chat/chat-service.d.ts +4 -0
- package/dist/server/server/chat/chat-service.d.ts.map +1 -1
- package/dist/server/server/chat/chat-service.js +9 -0
- package/dist/server/server/chat/chat-service.js.map +1 -1
- package/dist/server/server/config.d.ts +1 -0
- package/dist/server/server/config.d.ts.map +1 -1
- package/dist/server/server/config.js +7 -1
- package/dist/server/server/config.js.map +1 -1
- package/dist/server/server/connection-offer.d.ts +1 -0
- package/dist/server/server/connection-offer.d.ts.map +1 -1
- package/dist/server/server/daemon-config-store.d.ts.map +1 -1
- package/dist/server/server/daemon-config-store.js +2 -6
- package/dist/server/server/daemon-config-store.js.map +1 -1
- package/dist/server/server/daemon-keypair.d.ts.map +1 -1
- package/dist/server/server/daemon-keypair.js +4 -2
- package/dist/server/server/daemon-keypair.js.map +1 -1
- package/dist/server/server/daemon-worker.js +3 -0
- package/dist/server/server/daemon-worker.js.map +1 -1
- package/dist/server/server/editor-targets.js.map +1 -1
- package/dist/server/server/exports.d.ts +1 -0
- package/dist/server/server/exports.d.ts.map +1 -1
- package/dist/server/server/exports.js +1 -0
- package/dist/server/server/exports.js.map +1 -1
- package/dist/server/server/json-utils.js.map +1 -1
- package/dist/server/server/logger.js.map +1 -1
- package/dist/server/server/loop/rpc-schemas.d.ts +68 -0
- package/dist/server/server/loop/rpc-schemas.d.ts.map +1 -1
- package/dist/server/server/loop/rpc-schemas.js +4 -0
- package/dist/server/server/loop/rpc-schemas.js.map +1 -1
- package/dist/server/server/loop-service.d.ts +8 -0
- package/dist/server/server/loop-service.d.ts.map +1 -1
- package/dist/server/server/loop-service.js +11 -2
- package/dist/server/server/loop-service.js.map +1 -1
- package/dist/server/server/package-version.d.ts +12 -0
- package/dist/server/server/package-version.d.ts.map +1 -1
- package/dist/server/server/package-version.js +13 -1
- package/dist/server/server/package-version.js.map +1 -1
- package/dist/server/server/pairing-offer.d.ts +1 -0
- package/dist/server/server/pairing-offer.d.ts.map +1 -1
- package/dist/server/server/pairing-offer.js +2 -1
- package/dist/server/server/pairing-offer.js.map +1 -1
- package/dist/server/server/pairing-qr.js +1 -1
- package/dist/server/server/pairing-qr.js.map +1 -1
- package/dist/server/server/paseo-env.d.ts +7 -3
- package/dist/server/server/paseo-env.d.ts.map +1 -1
- package/dist/server/server/paseo-env.js +16 -33
- package/dist/server/server/paseo-env.js.map +1 -1
- package/dist/server/server/paseo-home.js +2 -2
- package/dist/server/server/paseo-home.js.map +1 -1
- package/dist/server/server/persisted-config.d.ts +9 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +6 -4
- package/dist/server/server/persisted-config.js.map +1 -1
- package/dist/server/server/persistence-hooks.js.map +1 -1
- package/dist/server/server/pid-lock.d.ts +21 -4
- package/dist/server/server/pid-lock.d.ts.map +1 -1
- package/dist/server/server/pid-lock.js +30 -8
- package/dist/server/server/pid-lock.js.map +1 -1
- package/dist/server/server/private-files.d.ts +7 -0
- package/dist/server/server/private-files.d.ts.map +1 -0
- package/dist/server/server/private-files.js +42 -0
- package/dist/server/server/private-files.js.map +1 -0
- package/dist/server/server/push/token-store.d.ts.map +1 -1
- package/dist/server/server/push/token-store.js +4 -6
- package/dist/server/server/push/token-store.js.map +1 -1
- package/dist/server/server/relay-transport.d.ts +2 -1
- package/dist/server/server/relay-transport.d.ts.map +1 -1
- package/dist/server/server/relay-transport.js +8 -5
- package/dist/server/server/relay-transport.js.map +1 -1
- package/dist/server/server/schedule/rpc-schemas.d.ts +1136 -0
- package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -1
- package/dist/server/server/schedule/rpc-schemas.js +39 -0
- package/dist/server/server/schedule/rpc-schemas.js.map +1 -1
- package/dist/server/server/schedule/service.d.ts +4 -2
- package/dist/server/server/schedule/service.d.ts.map +1 -1
- package/dist/server/server/schedule/service.js +106 -16
- package/dist/server/server/schedule/service.js.map +1 -1
- package/dist/server/server/schedule/types.d.ts +16 -0
- package/dist/server/server/schedule/types.d.ts.map +1 -1
- package/dist/server/server/script-health-monitor.js.map +1 -1
- package/dist/server/server/server-id.d.ts.map +1 -1
- package/dist/server/server/server-id.js +8 -3
- package/dist/server/server/server-id.js.map +1 -1
- package/dist/server/server/session.d.ts +5 -4
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +318 -149
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/speech/audio.js.map +1 -1
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -1
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +52 -52
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +9 -3
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +12 -10
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +2 -2
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +1 -1
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -1
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -1
- package/dist/server/server/voice/voice-turn-controller.d.ts +16 -13
- package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -1
- package/dist/server/server/voice/voice-turn-controller.js +303 -71
- package/dist/server/server/voice/voice-turn-controller.js.map +1 -1
- package/dist/server/server/voice-config.js +1 -1
- package/dist/server/server/voice-config.js.map +1 -1
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/server/workspace-directory.d.ts.map +1 -1
- package/dist/server/server/workspace-directory.js +4 -2
- package/dist/server/server/workspace-directory.js.map +1 -1
- package/dist/server/server/workspace-git-metadata.d.ts.map +1 -1
- package/dist/server/server/workspace-git-metadata.js +12 -5
- package/dist/server/server/workspace-git-metadata.js.map +1 -1
- package/dist/server/server/workspace-git-service.d.ts +4 -1
- package/dist/server/server/workspace-git-service.d.ts.map +1 -1
- package/dist/server/server/workspace-git-service.js +50 -2
- package/dist/server/server/workspace-git-service.js.map +1 -1
- package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
- package/dist/server/server/workspace-registry-model.js +10 -3
- package/dist/server/server/workspace-registry-model.js.map +1 -1
- package/dist/server/server/worktree-branch-name-generator.d.ts +2 -0
- package/dist/server/server/worktree-branch-name-generator.d.ts.map +1 -1
- package/dist/server/server/worktree-branch-name-generator.js +18 -11
- package/dist/server/server/worktree-branch-name-generator.js.map +1 -1
- package/dist/server/server/worktree-session.js +1 -1
- package/dist/server/server/worktree-session.js.map +1 -1
- package/dist/server/services/github-service.d.ts +13 -0
- package/dist/server/services/github-service.d.ts.map +1 -1
- package/dist/server/services/github-service.js +21 -4
- package/dist/server/services/github-service.js.map +1 -1
- package/dist/server/shared/agent-labels.d.ts +2 -0
- package/dist/server/shared/agent-labels.d.ts.map +1 -0
- package/dist/server/shared/agent-labels.js +2 -0
- package/dist/server/shared/agent-labels.js.map +1 -0
- package/dist/server/shared/connection-offer.d.ts +10 -0
- package/dist/server/shared/connection-offer.d.ts.map +1 -1
- package/dist/server/shared/connection-offer.js +1 -0
- package/dist/server/shared/connection-offer.js.map +1 -1
- package/dist/server/shared/daemon-endpoints.d.ts +4 -0
- package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
- package/dist/server/shared/daemon-endpoints.js +6 -1
- package/dist/server/shared/daemon-endpoints.js.map +1 -1
- package/dist/server/shared/error-utils.d.ts +11 -0
- package/dist/server/shared/error-utils.d.ts.map +1 -0
- package/dist/server/shared/error-utils.js +27 -0
- package/dist/server/shared/error-utils.js.map +1 -0
- package/dist/server/shared/importable-providers.d.ts +7 -0
- package/dist/server/shared/importable-providers.d.ts.map +1 -0
- package/dist/server/shared/importable-providers.js +7 -0
- package/dist/server/shared/importable-providers.js.map +1 -0
- package/dist/server/shared/messages.d.ts +12753 -2085
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +61 -5
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/shared/tool-call-display.d.ts.map +1 -1
- package/dist/server/shared/tool-call-display.js +2 -0
- package/dist/server/shared/tool-call-display.js.map +1 -1
- package/dist/server/terminal/terminal-manager.d.ts +2 -1
- package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
- package/dist/server/terminal/terminal-manager.js +2 -1
- package/dist/server/terminal/terminal-manager.js.map +1 -1
- package/dist/server/terminal/terminal-output-coalescer.js.map +1 -1
- package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
- package/dist/server/terminal/terminal-session-controller.js +2 -0
- package/dist/server/terminal/terminal-session-controller.js.map +1 -1
- package/dist/server/terminal/terminal.d.ts +1 -1
- package/dist/server/terminal/terminal.d.ts.map +1 -1
- package/dist/server/terminal/terminal.js +53 -8
- package/dist/server/terminal/terminal.js.map +1 -1
- package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
- package/dist/server/utils/build-metadata-prompt.d.ts +14 -0
- package/dist/server/utils/build-metadata-prompt.d.ts.map +1 -0
- package/dist/server/utils/build-metadata-prompt.js +28 -0
- package/dist/server/utils/build-metadata-prompt.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +2 -1
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +67 -11
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/directory-suggestions.js.map +1 -1
- package/dist/server/utils/executable.d.ts +2 -1
- package/dist/server/utils/executable.d.ts.map +1 -1
- package/dist/server/utils/executable.js +50 -51
- package/dist/server/utils/executable.js.map +1 -1
- package/dist/server/utils/paseo-config-file.d.ts +1 -1
- package/dist/server/utils/paseo-config-file.d.ts.map +1 -1
- package/dist/server/utils/paseo-config-schema.d.ts +625 -0
- package/dist/server/utils/paseo-config-schema.d.ts.map +1 -1
- package/dist/server/utils/paseo-config-schema.js +17 -0
- package/dist/server/utils/paseo-config-schema.js.map +1 -1
- package/dist/server/utils/spawn.d.ts +2 -0
- package/dist/server/utils/spawn.d.ts.map +1 -1
- package/dist/server/utils/spawn.js +2 -1
- package/dist/server/utils/spawn.js.map +1 -1
- package/dist/server/utils/tree-kill.d.ts +18 -0
- package/dist/server/utils/tree-kill.d.ts.map +1 -0
- package/dist/server/utils/{process-tree.js → tree-kill.js} +14 -33
- package/dist/server/utils/tree-kill.js.map +1 -0
- package/dist/server/utils/worktree.js.map +1 -1
- package/dist/server/utils/wrap-user-instructions.d.ts +2 -0
- package/dist/server/utils/wrap-user-instructions.d.ts.map +1 -0
- package/dist/server/utils/wrap-user-instructions.js +13 -0
- package/dist/server/utils/wrap-user-instructions.js.map +1 -0
- package/dist/src/server/agent/provider-launch-config.js.map +1 -1
- package/dist/src/server/agent/provider-manifest.js +11 -0
- package/dist/src/server/agent/provider-manifest.js.map +1 -1
- package/dist/src/server/loop/rpc-schemas.js +4 -0
- package/dist/src/server/loop/rpc-schemas.js.map +1 -1
- package/dist/src/server/paseo-env.js +16 -33
- package/dist/src/server/paseo-env.js.map +1 -1
- package/dist/src/server/paseo-home.js +2 -2
- package/dist/src/server/paseo-home.js.map +1 -1
- package/dist/src/server/persisted-config.js +6 -4
- package/dist/src/server/persisted-config.js.map +1 -1
- package/dist/src/server/pid-lock.js +30 -8
- package/dist/src/server/pid-lock.js.map +1 -1
- package/dist/src/server/private-files.js +42 -0
- package/dist/src/server/private-files.js.map +1 -0
- package/dist/src/server/schedule/rpc-schemas.js +39 -0
- package/dist/src/server/schedule/rpc-schemas.js.map +1 -1
- package/dist/src/shared/messages.js +61 -5
- package/dist/src/shared/messages.js.map +1 -1
- package/dist/src/utils/executable.js +50 -51
- package/dist/src/utils/executable.js.map +1 -1
- package/dist/src/utils/paseo-config-schema.js +17 -0
- package/dist/src/utils/paseo-config-schema.js.map +1 -1
- package/dist/src/utils/spawn.js +2 -1
- package/dist/src/utils/spawn.js.map +1 -1
- package/package.json +5 -4
- package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +0 -1
- package/dist/server/server/agent/providers/claude/claude-models.js.map +0 -1
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +0 -1
- package/dist/server/server/agent/providers/claude-agent.js.map +0 -1
- package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts +0 -16
- package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts.map +0 -1
- package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js +0 -35
- package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js.map +0 -1
- package/dist/server/utils/process-tree.d.ts +0 -25
- package/dist/server/utils/process-tree.d.ts.map +0 -1
- package/dist/server/utils/process-tree.js.map +0 -1
|
@@ -3,20 +3,20 @@ import fs from "node:fs";
|
|
|
3
3
|
import { promises } from "node:fs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { createProviderEnv, createProviderEnvSpec, } from "
|
|
16
|
-
import { findExecutable, isCommandAvailable } from "
|
|
17
|
-
import { withTimeout } from "
|
|
18
|
-
import { execCommand
|
|
19
|
-
import { getOrchestratorModeInstructions } from "
|
|
6
|
+
import { mapClaudeCanceledToolCall, mapClaudeCompletedToolCall, mapClaudeFailedToolCall, mapClaudeRunningToolCall, } from "./tool-call-mapper.js";
|
|
7
|
+
import { mapTaskNotificationSystemRecordToToolCall, mapTaskNotificationUserContentToToolCall, } from "./task-notification-tool-call.js";
|
|
8
|
+
import { getClaudeModels, normalizeClaudeRuntimeModelId } from "./models.js";
|
|
9
|
+
import { parsePartialJsonObject } from "./partial-json.js";
|
|
10
|
+
import { ClaudeSidechainTracker } from "./sidechain-tracker.js";
|
|
11
|
+
import { formatDiagnosticStatus, formatProviderDiagnostic, formatProviderDiagnosticError, toDiagnosticErrorMessage, } from "../diagnostic-utils.js";
|
|
12
|
+
import { appendOrReplaceGrowingAssistantMessage, runProviderTurn } from "../provider-runner.js";
|
|
13
|
+
import { renderPromptAttachmentAsText } from "../../prompt-attachments.js";
|
|
14
|
+
import { claudeQuery } from "./query.js";
|
|
15
|
+
import { createProviderEnv, createProviderEnvSpec, } from "../../provider-launch-config.js";
|
|
16
|
+
import { findExecutable, isCommandAvailable } from "../../../../utils/executable.js";
|
|
17
|
+
import { withTimeout } from "../../../../utils/promise-timeout.js";
|
|
18
|
+
import { execCommand } from "../../../../utils/spawn.js";
|
|
19
|
+
import { getOrchestratorModeInstructions } from "../../orchestrator-instructions.js";
|
|
20
20
|
const fsPromises = promises;
|
|
21
21
|
const CLAUDE_SETTING_SOURCES = ["user", "project"];
|
|
22
22
|
function readNonEmptyString(value) {
|
|
@@ -61,6 +61,21 @@ export function normalizeClaudeAskUserQuestionUpdatedInput(updatedInput, fallbac
|
|
|
61
61
|
answers: normalizedAnswers,
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
+
function isObjectRecord(value) {
|
|
65
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
66
|
+
}
|
|
67
|
+
function toObjectRecord(value) {
|
|
68
|
+
return isObjectRecord(value) ? value : undefined;
|
|
69
|
+
}
|
|
70
|
+
function isUnknownArray(value) {
|
|
71
|
+
return Array.isArray(value);
|
|
72
|
+
}
|
|
73
|
+
function isImageMimeType(value) {
|
|
74
|
+
return (value === "image/jpeg" ||
|
|
75
|
+
value === "image/png" ||
|
|
76
|
+
value === "image/gif" ||
|
|
77
|
+
value === "image/webp");
|
|
78
|
+
}
|
|
64
79
|
const CLAUDE_CAPABILITIES = {
|
|
65
80
|
supportsStreaming: true,
|
|
66
81
|
supportsSessionPersistence: true,
|
|
@@ -134,60 +149,6 @@ function extractSessionIdRaw(msg) {
|
|
|
134
149
|
return msg.session.id;
|
|
135
150
|
return "";
|
|
136
151
|
}
|
|
137
|
-
function resolveClaudeSpawnCommand(spawnOptions, runtimeSettings) {
|
|
138
|
-
const commandConfig = runtimeSettings?.command;
|
|
139
|
-
if (!commandConfig || commandConfig.mode === "default") {
|
|
140
|
-
return {
|
|
141
|
-
command: spawnOptions.command,
|
|
142
|
-
args: [...spawnOptions.args],
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
if (commandConfig.mode === "append") {
|
|
146
|
-
return {
|
|
147
|
-
command: spawnOptions.command,
|
|
148
|
-
args: [...spawnOptions.args, ...(commandConfig.args ?? [])],
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
command: commandConfig.argv[0],
|
|
153
|
-
args: [...commandConfig.argv.slice(1), ...spawnOptions.args],
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
function applyRuntimeSettingsToClaudeOptions(options, runtimeSettings, launchEnv) {
|
|
157
|
-
return {
|
|
158
|
-
...options,
|
|
159
|
-
spawnClaudeCodeProcess: (spawnOptions) => {
|
|
160
|
-
const resolved = resolveClaudeSpawnCommand(spawnOptions, runtimeSettings);
|
|
161
|
-
// When the SDK passes a default JS runtime ("node"/"bun"), replace it with
|
|
162
|
-
// process.execPath — the actual node binary running the daemon. This avoids
|
|
163
|
-
// PATH lookup failures in the managed runtime bundle.
|
|
164
|
-
// When the SDK passes a native binary path (from pathToClaudeCodeExecutable)
|
|
165
|
-
// or the user overrides the command via runtime settings, use that directly.
|
|
166
|
-
const isDefaultRuntime = resolved.command === "node" || resolved.command === "bun";
|
|
167
|
-
const command = isDefaultRuntime ? process.execPath : resolved.command;
|
|
168
|
-
const child = spawnProcess(command, resolved.args, {
|
|
169
|
-
cwd: spawnOptions.cwd,
|
|
170
|
-
...createProviderEnvSpec({
|
|
171
|
-
baseEnv: spawnOptions.env,
|
|
172
|
-
runtimeSettings,
|
|
173
|
-
overlays: [launchEnv],
|
|
174
|
-
}),
|
|
175
|
-
signal: spawnOptions.signal,
|
|
176
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
177
|
-
// Bypass cmd.exe on Windows: the SDK passes --mcp-config with inline JSON
|
|
178
|
-
// containing double quotes, which cmd.exe mangles (strips quotes, breaks parsing).
|
|
179
|
-
// The command is always a resolved binary path, so shell routing is unnecessary.
|
|
180
|
-
shell: false,
|
|
181
|
-
});
|
|
182
|
-
if (typeof options.stderr === "function") {
|
|
183
|
-
child.stderr?.on("data", (chunk) => {
|
|
184
|
-
options.stderr?.(chunk.toString());
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
return child;
|
|
188
|
-
},
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
152
|
function isClaudeThinkingEffort(value) {
|
|
192
153
|
return (value === "low" ||
|
|
193
154
|
value === "medium" ||
|
|
@@ -210,11 +171,11 @@ function summarizeClaudeOptionsForLog(options) {
|
|
|
210
171
|
if (typeof systemPromptRaw === "string") {
|
|
211
172
|
return { mode: "string", preset: null };
|
|
212
173
|
}
|
|
213
|
-
const prompt = systemPromptRaw;
|
|
214
|
-
const promptType = typeof prompt
|
|
174
|
+
const prompt = toObjectRecord(systemPromptRaw);
|
|
175
|
+
const promptType = typeof prompt?.type === "string" ? prompt.type : "custom";
|
|
215
176
|
return {
|
|
216
177
|
mode: promptType === "preset" ? "preset" : "custom",
|
|
217
|
-
preset: typeof prompt
|
|
178
|
+
preset: typeof prompt?.preset === "string" && prompt.preset.length > 0 ? prompt.preset : null,
|
|
218
179
|
};
|
|
219
180
|
})();
|
|
220
181
|
const mcpServerNames = options.mcpServers ? Object.keys(options.mcpServers).sort() : [];
|
|
@@ -276,7 +237,11 @@ function normalizeForDeterministicString(value, seen) {
|
|
|
276
237
|
return "[circular]";
|
|
277
238
|
}
|
|
278
239
|
seen.add(objectValue);
|
|
279
|
-
const record = value;
|
|
240
|
+
const record = toObjectRecord(value);
|
|
241
|
+
if (!record) {
|
|
242
|
+
seen.delete(objectValue);
|
|
243
|
+
return "[invalid]";
|
|
244
|
+
}
|
|
280
245
|
const normalized = {};
|
|
281
246
|
for (const key of Object.keys(record).sort()) {
|
|
282
247
|
normalized[key] = normalizeForDeterministicString(record[key], seen);
|
|
@@ -284,7 +249,10 @@ function normalizeForDeterministicString(value, seen) {
|
|
|
284
249
|
seen.delete(objectValue);
|
|
285
250
|
return normalized;
|
|
286
251
|
}
|
|
287
|
-
|
|
252
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
253
|
+
return String(value);
|
|
254
|
+
}
|
|
255
|
+
return "[unsupported]";
|
|
288
256
|
}
|
|
289
257
|
function deterministicStringify(value) {
|
|
290
258
|
if (typeof value === "undefined") {
|
|
@@ -298,12 +266,13 @@ function deterministicStringify(value) {
|
|
|
298
266
|
return JSON.stringify(normalized);
|
|
299
267
|
}
|
|
300
268
|
catch {
|
|
301
|
-
|
|
302
|
-
return
|
|
269
|
+
if (typeof value === "string") {
|
|
270
|
+
return value;
|
|
303
271
|
}
|
|
304
|
-
|
|
305
|
-
return
|
|
272
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
273
|
+
return String(value);
|
|
306
274
|
}
|
|
275
|
+
return "[unserializable]";
|
|
307
276
|
}
|
|
308
277
|
}
|
|
309
278
|
function coerceToolResultContentToString(content) {
|
|
@@ -344,20 +313,21 @@ function collectClaudeTextContentParts(content) {
|
|
|
344
313
|
const normalized = normalizeClaudeTranscriptText(content);
|
|
345
314
|
return normalized ? [normalized] : [];
|
|
346
315
|
}
|
|
347
|
-
if (!
|
|
316
|
+
if (!isUnknownArray(content)) {
|
|
348
317
|
return [];
|
|
349
318
|
}
|
|
350
319
|
const parts = [];
|
|
351
320
|
for (const block of content) {
|
|
352
|
-
|
|
321
|
+
const blockRecord = toObjectRecord(block);
|
|
322
|
+
if (!blockRecord) {
|
|
353
323
|
continue;
|
|
354
324
|
}
|
|
355
|
-
const text = normalizeClaudeTranscriptText(
|
|
325
|
+
const text = normalizeClaudeTranscriptText(blockRecord.text);
|
|
356
326
|
if (text) {
|
|
357
327
|
parts.push(text);
|
|
358
328
|
continue;
|
|
359
329
|
}
|
|
360
|
-
const input = normalizeClaudeTranscriptText(
|
|
330
|
+
const input = normalizeClaudeTranscriptText(blockRecord.input);
|
|
361
331
|
if (input) {
|
|
362
332
|
parts.push(input);
|
|
363
333
|
}
|
|
@@ -537,6 +507,7 @@ function toClaudeSdkMcpConfig(config) {
|
|
|
537
507
|
headers: config.headers,
|
|
538
508
|
};
|
|
539
509
|
}
|
|
510
|
+
throw new Error("Unhandled MCP server config type");
|
|
540
511
|
}
|
|
541
512
|
function isClaudeContentChunk(value) {
|
|
542
513
|
return isMetadata(value) && typeof value.type === "string";
|
|
@@ -627,7 +598,7 @@ class TimelineAssembler {
|
|
|
627
598
|
return this.applyAbsoluteFragments(state, fragments);
|
|
628
599
|
}
|
|
629
600
|
consumeStreamEvent(message, runId, messageIdHint) {
|
|
630
|
-
const event = message.event;
|
|
601
|
+
const event = toObjectRecord(message.event) ?? {};
|
|
631
602
|
const eventType = readTrimmedString(event.type);
|
|
632
603
|
const streamEventMessageId = this.readMessageIdFromStreamEvent(event) ?? messageIdHint;
|
|
633
604
|
if (eventType === "message_start") {
|
|
@@ -810,19 +781,20 @@ class TimelineAssembler {
|
|
|
810
781
|
return fragments;
|
|
811
782
|
}
|
|
812
783
|
readMessageIdFromAssistantMessage(message) {
|
|
813
|
-
const candidate = message;
|
|
814
|
-
|
|
784
|
+
const candidate = toObjectRecord(message);
|
|
785
|
+
const messageContainer = toObjectRecord(candidate?.message);
|
|
786
|
+
return (readTrimmedString(candidate?.message_id) ?? readTrimmedString(messageContainer?.id) ?? null);
|
|
815
787
|
}
|
|
816
788
|
readMessageIdFromStreamEvent(event) {
|
|
817
|
-
const
|
|
818
|
-
return readTrimmedString(event.message_id) ?? readTrimmedString(
|
|
789
|
+
const messageContainer = toObjectRecord(event.message);
|
|
790
|
+
return readTrimmedString(event.message_id) ?? readTrimmedString(messageContainer?.id) ?? null;
|
|
819
791
|
}
|
|
820
792
|
}
|
|
821
793
|
function isSyntheticUserEntry(entry) {
|
|
822
|
-
|
|
794
|
+
const candidate = toObjectRecord(entry);
|
|
795
|
+
if (!candidate) {
|
|
823
796
|
return false;
|
|
824
797
|
}
|
|
825
|
-
const candidate = entry;
|
|
826
798
|
return candidate.isSynthetic === true || candidate.isMeta === true;
|
|
827
799
|
}
|
|
828
800
|
function firstTrimmedString(sources) {
|
|
@@ -835,11 +807,11 @@ function firstTrimmedString(sources) {
|
|
|
835
807
|
return null;
|
|
836
808
|
}
|
|
837
809
|
export function readEventIdentifiers(message) {
|
|
838
|
-
const root = message;
|
|
810
|
+
const root = toObjectRecord(message) ?? {};
|
|
839
811
|
const messageType = readTrimmedString(root.type);
|
|
840
|
-
const streamEvent = root.event;
|
|
841
|
-
const streamEventMessage = streamEvent?.message;
|
|
842
|
-
const messageContainer = root.message;
|
|
812
|
+
const streamEvent = toObjectRecord(root.event);
|
|
813
|
+
const streamEventMessage = toObjectRecord(streamEvent?.message);
|
|
814
|
+
const messageContainer = toObjectRecord(root.message);
|
|
843
815
|
const messageIdFromUuid = messageType === "user" ? root.uuid : undefined;
|
|
844
816
|
return {
|
|
845
817
|
taskId: firstTrimmedString([
|
|
@@ -873,7 +845,8 @@ export class ClaudeAgentClient {
|
|
|
873
845
|
this.defaults = options.defaults;
|
|
874
846
|
this.logger = options.logger.child({ module: "agent", provider: "claude" });
|
|
875
847
|
this.runtimeSettings = options.runtimeSettings;
|
|
876
|
-
this.queryFactory = options.queryFactory
|
|
848
|
+
this.queryFactory = options.queryFactory;
|
|
849
|
+
this.resolveBinary = options.resolveBinary ?? (() => resolveClaudeBinary(this.runtimeSettings));
|
|
877
850
|
}
|
|
878
851
|
async createSession(config, launchContext, options) {
|
|
879
852
|
const claudeConfig = this.assertConfig(config);
|
|
@@ -884,6 +857,7 @@ export class ClaudeAgentClient {
|
|
|
884
857
|
persistSession: options?.persistSession,
|
|
885
858
|
logger: this.logger,
|
|
886
859
|
queryFactory: this.queryFactory,
|
|
860
|
+
resolveBinary: this.resolveBinary,
|
|
887
861
|
});
|
|
888
862
|
}
|
|
889
863
|
async resumeSession(handle, overrides, launchContext) {
|
|
@@ -905,6 +879,7 @@ export class ClaudeAgentClient {
|
|
|
905
879
|
launchEnv: launchContext?.env,
|
|
906
880
|
logger: this.logger,
|
|
907
881
|
queryFactory: this.queryFactory,
|
|
882
|
+
resolveBinary: this.resolveBinary,
|
|
908
883
|
});
|
|
909
884
|
}
|
|
910
885
|
async listModels(_options) {
|
|
@@ -929,9 +904,7 @@ export class ClaudeAgentClient {
|
|
|
929
904
|
if (command?.mode === "replace") {
|
|
930
905
|
return await isCommandAvailable(command.argv[0]);
|
|
931
906
|
}
|
|
932
|
-
|
|
933
|
-
// via process.execPath. No external `claude` binary is required.
|
|
934
|
-
return true;
|
|
907
|
+
return await isCommandAvailable("claude");
|
|
935
908
|
}
|
|
936
909
|
async getDiagnostic() {
|
|
937
910
|
try {
|
|
@@ -980,6 +953,20 @@ export class ClaudeAgentClient {
|
|
|
980
953
|
return { ...config, provider: "claude" };
|
|
981
954
|
}
|
|
982
955
|
}
|
|
956
|
+
async function resolveClaudeBinary(runtimeSettings) {
|
|
957
|
+
const command = runtimeSettings?.command;
|
|
958
|
+
if (command?.mode === "replace") {
|
|
959
|
+
const foundOverride = await findExecutable(command.argv[0]);
|
|
960
|
+
if (foundOverride) {
|
|
961
|
+
return foundOverride;
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
const found = await findExecutable("claude");
|
|
965
|
+
if (found) {
|
|
966
|
+
return found;
|
|
967
|
+
}
|
|
968
|
+
throw new Error("Claude binary not found. Install Claude Code (https://github.com/anthropics/claude-code) and ensure it is available in your shell PATH.");
|
|
969
|
+
}
|
|
983
970
|
async function resolveClaudeVersion(runtimeSettings) {
|
|
984
971
|
const command = runtimeSettings?.command;
|
|
985
972
|
const envSpec = createProviderEnvSpec({ runtimeSettings });
|
|
@@ -1012,11 +999,11 @@ async function resolveClaudeAuth(runtimeSettings) {
|
|
|
1012
999
|
});
|
|
1013
1000
|
}
|
|
1014
1001
|
catch (error) {
|
|
1015
|
-
const err = error;
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
};
|
|
1002
|
+
const err = toObjectRecord(error);
|
|
1003
|
+
const stdout = typeof err?.stdout === "string" ? err.stdout : "";
|
|
1004
|
+
const stderr = typeof err?.stderr === "string" ? err.stderr : "";
|
|
1005
|
+
const fallbackMessage = typeof err?.message === "string" ? err.message : "";
|
|
1006
|
+
return { stdout, stderr: stderr || fallbackMessage };
|
|
1020
1007
|
}
|
|
1021
1008
|
};
|
|
1022
1009
|
try {
|
|
@@ -1042,15 +1029,17 @@ async function resolveClaudeAuth(runtimeSettings) {
|
|
|
1042
1029
|
}
|
|
1043
1030
|
}
|
|
1044
1031
|
function extractContextWindowSize(modelUsage) {
|
|
1045
|
-
|
|
1032
|
+
const usageRecord = toObjectRecord(modelUsage);
|
|
1033
|
+
if (!usageRecord) {
|
|
1046
1034
|
return undefined;
|
|
1047
1035
|
}
|
|
1048
1036
|
let maxContextWindow;
|
|
1049
|
-
for (const value of Object.values(
|
|
1050
|
-
|
|
1037
|
+
for (const value of Object.values(usageRecord)) {
|
|
1038
|
+
const valueRecord = toObjectRecord(value);
|
|
1039
|
+
if (!valueRecord) {
|
|
1051
1040
|
continue;
|
|
1052
1041
|
}
|
|
1053
|
-
const contextWindow =
|
|
1042
|
+
const contextWindow = valueRecord.contextWindow;
|
|
1054
1043
|
if (typeof contextWindow !== "number" ||
|
|
1055
1044
|
!Number.isFinite(contextWindow) ||
|
|
1056
1045
|
contextWindow <= 0) {
|
|
@@ -1077,8 +1066,8 @@ function readUsageFromTaskNotification(message) {
|
|
|
1077
1066
|
return readUsageTotalTokens(message.usage);
|
|
1078
1067
|
}
|
|
1079
1068
|
function readStreamRequestInputTokens(event) {
|
|
1080
|
-
const messageUsage = event.message?.usage;
|
|
1081
|
-
if (!messageUsage
|
|
1069
|
+
const messageUsage = toObjectRecord(toObjectRecord(event.message)?.usage);
|
|
1070
|
+
if (!messageUsage) {
|
|
1082
1071
|
return undefined;
|
|
1083
1072
|
}
|
|
1084
1073
|
const usage = messageUsage;
|
|
@@ -1099,7 +1088,7 @@ function readStreamRequestInputTokens(event) {
|
|
|
1099
1088
|
return inputTokens + cacheCreationInputTokens + cacheReadInputTokens;
|
|
1100
1089
|
}
|
|
1101
1090
|
function readStreamRequestOutputTokens(event) {
|
|
1102
|
-
const outputTokens = event.usage?.output_tokens;
|
|
1091
|
+
const outputTokens = toObjectRecord(event.usage)?.output_tokens;
|
|
1103
1092
|
if (typeof outputTokens !== "number" || !Number.isFinite(outputTokens) || outputTokens < 0) {
|
|
1104
1093
|
return undefined;
|
|
1105
1094
|
}
|
|
@@ -1217,7 +1206,8 @@ class ClaudeAgentSession {
|
|
|
1217
1206
|
this.runtimeSettings = options.runtimeSettings;
|
|
1218
1207
|
this.persistSession = options.persistSession;
|
|
1219
1208
|
this.logger = options.logger;
|
|
1220
|
-
this.queryFactory = options.queryFactory
|
|
1209
|
+
this.queryFactory = options.queryFactory;
|
|
1210
|
+
this.resolveBinary = options.resolveBinary;
|
|
1221
1211
|
const handle = options.handle;
|
|
1222
1212
|
if (handle) {
|
|
1223
1213
|
if (!handle.sessionId) {
|
|
@@ -1525,6 +1515,21 @@ class ClaudeAgentSession {
|
|
|
1525
1515
|
await this.awaitWithTimeout(this.query?.return?.(), "close query return");
|
|
1526
1516
|
this.query = null;
|
|
1527
1517
|
this.input = null;
|
|
1518
|
+
if (this.persistSession === false && this.claudeSessionId) {
|
|
1519
|
+
// Claude Code currently ignores --no-session-persistence outside --print mode
|
|
1520
|
+
// (see `claude --help`), so the SDK's persistSession=false is silently dropped
|
|
1521
|
+
// in stream-json mode. Sweep the transcript ourselves so ephemeral runs
|
|
1522
|
+
// (metadata generator, branch-name generator) don't show up as resumable.
|
|
1523
|
+
const historyPath = this.resolveHistoryPath(this.claudeSessionId);
|
|
1524
|
+
if (historyPath) {
|
|
1525
|
+
try {
|
|
1526
|
+
await promises.rm(historyPath, { force: true });
|
|
1527
|
+
}
|
|
1528
|
+
catch (error) {
|
|
1529
|
+
this.logger.warn({ err: error, historyPath, claudeSessionId: this.claudeSessionId }, "Failed to delete ephemeral Claude session transcript");
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1528
1533
|
this.logger.trace({ claudeSessionId: this.claudeSessionId, turnState: this.turnState }, "Claude session close: completed");
|
|
1529
1534
|
}
|
|
1530
1535
|
async listCommands() {
|
|
@@ -1745,7 +1750,11 @@ class ClaudeAgentSession {
|
|
|
1745
1750
|
const options = await this.buildOptions();
|
|
1746
1751
|
this.logger.debug({ options: summarizeClaudeOptionsForLog(options) }, "claude query");
|
|
1747
1752
|
this.input = input;
|
|
1748
|
-
this.query =
|
|
1753
|
+
this.query = claudeQuery({ prompt: input.iterable, options }, {
|
|
1754
|
+
runtimeSettings: this.runtimeSettings,
|
|
1755
|
+
launchEnv: this.launchEnv,
|
|
1756
|
+
queryFactory: this.queryFactory,
|
|
1757
|
+
});
|
|
1749
1758
|
// Do not kick off background control-plane queries here. Methods like
|
|
1750
1759
|
// supportedCommands()/setPermissionMode() may execute immediately after
|
|
1751
1760
|
// ensureQuery() (for listCommands()/setMode()), and sharing the same query
|
|
@@ -1772,12 +1781,7 @@ class ClaudeAgentSession {
|
|
|
1772
1781
|
? this.config.thinkingOptionId
|
|
1773
1782
|
: undefined;
|
|
1774
1783
|
if (thinkingOptionId && isClaudeThinkingEffort(thinkingOptionId)) {
|
|
1775
|
-
|
|
1776
|
-
// adds 'xhigh' which the binary accepts but the typings don't yet expose.
|
|
1777
|
-
return {
|
|
1778
|
-
thinking: { type: "adaptive" },
|
|
1779
|
-
effort: thinkingOptionId,
|
|
1780
|
-
};
|
|
1784
|
+
return { thinking: { type: "adaptive" }, effort: thinkingOptionId };
|
|
1781
1785
|
}
|
|
1782
1786
|
return { thinking: undefined, effort: undefined };
|
|
1783
1787
|
}
|
|
@@ -1803,7 +1807,7 @@ class ClaudeAgentSession {
|
|
|
1803
1807
|
this.launchEnv,
|
|
1804
1808
|
],
|
|
1805
1809
|
});
|
|
1806
|
-
const claudeBinary = await
|
|
1810
|
+
const claudeBinary = await this.resolveBinary();
|
|
1807
1811
|
this.logger.debug({
|
|
1808
1812
|
claudeBinary,
|
|
1809
1813
|
pathEnvKey: resolvePathEnvKey(),
|
|
@@ -1821,7 +1825,7 @@ class ClaudeAgentSession {
|
|
|
1821
1825
|
allowDangerouslySkipPermissions: true,
|
|
1822
1826
|
agents: this.defaults?.agents,
|
|
1823
1827
|
canUseTool: this.handlePermissionRequest,
|
|
1824
|
-
|
|
1828
|
+
pathToClaudeCodeExecutable: claudeBinary,
|
|
1825
1829
|
// Use Claude Code preset system prompt and load CLAUDE.md files
|
|
1826
1830
|
// Append provider-agnostic system prompt and orchestrator instructions for agents.
|
|
1827
1831
|
systemPrompt: {
|
|
@@ -1861,10 +1865,7 @@ class ClaudeAgentSession {
|
|
|
1861
1865
|
...this.runtimeSettings.disallowedTools,
|
|
1862
1866
|
];
|
|
1863
1867
|
}
|
|
1864
|
-
return
|
|
1865
|
-
}
|
|
1866
|
-
applyRuntimeSettings(options) {
|
|
1867
|
-
return applyRuntimeSettingsToClaudeOptions(options, this.runtimeSettings, this.launchEnv);
|
|
1868
|
+
return base;
|
|
1868
1869
|
}
|
|
1869
1870
|
normalizeMcpServers(servers) {
|
|
1870
1871
|
const result = {};
|
|
@@ -1881,14 +1882,16 @@ class ClaudeAgentSession {
|
|
|
1881
1882
|
content.push({ type: "text", text: chunk.text });
|
|
1882
1883
|
}
|
|
1883
1884
|
else if (chunk.type === "image") {
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1885
|
+
if (isImageMimeType(chunk.mimeType)) {
|
|
1886
|
+
content.push({
|
|
1887
|
+
type: "image",
|
|
1888
|
+
source: {
|
|
1889
|
+
type: "base64",
|
|
1890
|
+
media_type: chunk.mimeType,
|
|
1891
|
+
data: chunk.data,
|
|
1892
|
+
},
|
|
1893
|
+
});
|
|
1894
|
+
}
|
|
1892
1895
|
}
|
|
1893
1896
|
else {
|
|
1894
1897
|
content.push({ type: "text", text: renderPromptAttachmentAsText(chunk) });
|
|
@@ -2107,7 +2110,7 @@ class ClaudeAgentSession {
|
|
|
2107
2110
|
this.logger.trace({ err: error }, "Claude query pump exited unexpectedly");
|
|
2108
2111
|
});
|
|
2109
2112
|
this.queryPumpPromise = pump;
|
|
2110
|
-
pump.finally(() => {
|
|
2113
|
+
void pump.finally(() => {
|
|
2111
2114
|
if (this.queryPumpPromise === pump) {
|
|
2112
2115
|
this.queryPumpPromise = null;
|
|
2113
2116
|
}
|
|
@@ -2386,7 +2389,7 @@ class ClaudeAgentSession {
|
|
|
2386
2389
|
return;
|
|
2387
2390
|
}
|
|
2388
2391
|
if (message.subtype === "status") {
|
|
2389
|
-
const status = message
|
|
2392
|
+
const status = toObjectRecord(message)?.status;
|
|
2390
2393
|
if (status === "compacting") {
|
|
2391
2394
|
this.compacting = true;
|
|
2392
2395
|
events.push({
|
|
@@ -2412,6 +2415,16 @@ class ClaudeAgentSession {
|
|
|
2412
2415
|
return;
|
|
2413
2416
|
}
|
|
2414
2417
|
if (message.subtype === "task_notification") {
|
|
2418
|
+
// TODO: subagent timelines are best-effort. Subagent task_notifications
|
|
2419
|
+
// arrive without parent_tool_use_id but with tool_use_id pointing at the
|
|
2420
|
+
// parent's Task call, so they slip past the sidechain router and pollute
|
|
2421
|
+
// the parent timeline. Drop them here; eventually thread them into the
|
|
2422
|
+
// parent Task tool call's sub_agent log instead.
|
|
2423
|
+
const taskUseId = message.tool_use_id;
|
|
2424
|
+
const cachedTool = taskUseId ? this.toolUseCache.get(taskUseId) : undefined;
|
|
2425
|
+
if (cachedTool?.name === "Task") {
|
|
2426
|
+
return;
|
|
2427
|
+
}
|
|
2415
2428
|
const taskNotificationItem = mapTaskNotificationSystemRecordToToolCall(message);
|
|
2416
2429
|
if (taskNotificationItem) {
|
|
2417
2430
|
events.push({
|
|
@@ -2523,8 +2536,12 @@ class ClaudeAgentSession {
|
|
|
2523
2536
|
};
|
|
2524
2537
|
}
|
|
2525
2538
|
captureSessionIdFromMessage(message) {
|
|
2526
|
-
const
|
|
2527
|
-
const sessionId = extractSessionIdRaw(
|
|
2539
|
+
const msgRecord = toObjectRecord(message) ?? {};
|
|
2540
|
+
const sessionId = extractSessionIdRaw({
|
|
2541
|
+
session_id: msgRecord.session_id,
|
|
2542
|
+
sessionId: msgRecord.sessionId,
|
|
2543
|
+
session: isObjectRecord(msgRecord.session) ? { id: msgRecord.session.id } : null,
|
|
2544
|
+
}).trim();
|
|
2528
2545
|
if (!sessionId) {
|
|
2529
2546
|
return { threadStartedSessionId: null, notice: null };
|
|
2530
2547
|
}
|
|
@@ -2552,8 +2569,12 @@ class ClaudeAgentSession {
|
|
|
2552
2569
|
if (message.subtype !== "init") {
|
|
2553
2570
|
return { threadStartedSessionId: null, notice: null };
|
|
2554
2571
|
}
|
|
2555
|
-
const
|
|
2556
|
-
const newSessionId = extractSessionIdRaw(
|
|
2572
|
+
const msgRecord = toObjectRecord(message) ?? {};
|
|
2573
|
+
const newSessionId = extractSessionIdRaw({
|
|
2574
|
+
session_id: msgRecord.session_id,
|
|
2575
|
+
sessionId: msgRecord.sessionId,
|
|
2576
|
+
session: isObjectRecord(msgRecord.session) ? { id: msgRecord.session.id } : null,
|
|
2577
|
+
}).trim();
|
|
2557
2578
|
if (!newSessionId) {
|
|
2558
2579
|
return { threadStartedSessionId: null, notice: null };
|
|
2559
2580
|
}
|
|
@@ -2676,10 +2697,10 @@ class ClaudeAgentSession {
|
|
|
2676
2697
|
};
|
|
2677
2698
|
}
|
|
2678
2699
|
trackStreamEventUsage(event) {
|
|
2679
|
-
|
|
2700
|
+
const streamEvent = toObjectRecord(event);
|
|
2701
|
+
if (!streamEvent) {
|
|
2680
2702
|
return null;
|
|
2681
2703
|
}
|
|
2682
|
-
const streamEvent = event;
|
|
2683
2704
|
const eventType = readTrimmedString(streamEvent.type);
|
|
2684
2705
|
if (eventType === "message_start") {
|
|
2685
2706
|
const inputTokens = readStreamRequestInputTokens(streamEvent);
|
|
@@ -2793,7 +2814,12 @@ class ClaudeAgentSession {
|
|
|
2793
2814
|
}
|
|
2794
2815
|
let entry;
|
|
2795
2816
|
try {
|
|
2796
|
-
|
|
2817
|
+
const parsed = JSON.parse(trimmed);
|
|
2818
|
+
const record = toObjectRecord(parsed);
|
|
2819
|
+
if (!record) {
|
|
2820
|
+
return;
|
|
2821
|
+
}
|
|
2822
|
+
entry = record;
|
|
2797
2823
|
}
|
|
2798
2824
|
catch {
|
|
2799
2825
|
return;
|
|
@@ -3334,12 +3360,20 @@ function hasToolLikeBlock(block) {
|
|
|
3334
3360
|
return type.includes("tool");
|
|
3335
3361
|
}
|
|
3336
3362
|
function readCompactionMetadata(source) {
|
|
3337
|
-
const
|
|
3363
|
+
const sourceRecord = toObjectRecord(source);
|
|
3364
|
+
if (!sourceRecord) {
|
|
3365
|
+
return null;
|
|
3366
|
+
}
|
|
3367
|
+
const candidates = [
|
|
3368
|
+
sourceRecord.compact_metadata,
|
|
3369
|
+
sourceRecord.compactMetadata,
|
|
3370
|
+
sourceRecord.compactionMetadata,
|
|
3371
|
+
];
|
|
3338
3372
|
for (const candidate of candidates) {
|
|
3339
|
-
|
|
3373
|
+
const metadata = toObjectRecord(candidate);
|
|
3374
|
+
if (!metadata) {
|
|
3340
3375
|
continue;
|
|
3341
3376
|
}
|
|
3342
|
-
const metadata = candidate;
|
|
3343
3377
|
const trigger = typeof metadata.trigger === "string" ? metadata.trigger : undefined;
|
|
3344
3378
|
const preTokensRaw = metadata.preTokens ?? metadata.pre_tokens;
|
|
3345
3379
|
const preTokens = typeof preTokensRaw === "number" ? preTokensRaw : undefined;
|
|
@@ -3529,10 +3563,10 @@ function isFinishedAccumulator(acc) {
|
|
|
3529
3563
|
return Boolean(acc.sessionId && acc.cwd && acc.title);
|
|
3530
3564
|
}
|
|
3531
3565
|
function applyClaudeSessionEntryToAccumulator(entryRaw, acc) {
|
|
3532
|
-
|
|
3566
|
+
const entry = toObjectRecord(entryRaw);
|
|
3567
|
+
if (!entry) {
|
|
3533
3568
|
return;
|
|
3534
3569
|
}
|
|
3535
|
-
const entry = entryRaw;
|
|
3536
3570
|
if (entry.isSidechain) {
|
|
3537
3571
|
return;
|
|
3538
3572
|
}
|
|
@@ -3616,10 +3650,10 @@ async function parseClaudeSessionDescriptor(filePath, mtime) {
|
|
|
3616
3650
|
};
|
|
3617
3651
|
}
|
|
3618
3652
|
function extractClaudeUserText(messageRaw) {
|
|
3619
|
-
|
|
3653
|
+
const message = toObjectRecord(messageRaw);
|
|
3654
|
+
if (!message) {
|
|
3620
3655
|
return null;
|
|
3621
3656
|
}
|
|
3622
|
-
const message = messageRaw;
|
|
3623
3657
|
if (typeof message.content === "string") {
|
|
3624
3658
|
const normalized = message.content.trim();
|
|
3625
3659
|
return normalized && !isClaudeTranscriptNoiseText(normalized) ? normalized : null;
|
|
@@ -3628,12 +3662,11 @@ function extractClaudeUserText(messageRaw) {
|
|
|
3628
3662
|
const normalized = message.text.trim();
|
|
3629
3663
|
return normalized && !isClaudeTranscriptNoiseText(normalized) ? normalized : null;
|
|
3630
3664
|
}
|
|
3631
|
-
if (
|
|
3665
|
+
if (isUnknownArray(message.content)) {
|
|
3632
3666
|
for (const block of message.content) {
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
const normalized = block.text.trim();
|
|
3667
|
+
const blockRecord = toObjectRecord(block);
|
|
3668
|
+
if (blockRecord && typeof blockRecord.text === "string") {
|
|
3669
|
+
const normalized = blockRecord.text.trim();
|
|
3637
3670
|
if (normalized && !isClaudeTranscriptNoiseText(normalized)) {
|
|
3638
3671
|
return normalized;
|
|
3639
3672
|
}
|
|
@@ -3642,4 +3675,4 @@ function extractClaudeUserText(messageRaw) {
|
|
|
3642
3675
|
}
|
|
3643
3676
|
return null;
|
|
3644
3677
|
}
|
|
3645
|
-
//# sourceMappingURL=
|
|
3678
|
+
//# sourceMappingURL=agent.js.map
|