@getpaseo/server 0.1.2
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/.env.example +20 -0
- package/README.md +107 -0
- package/agent-prompt.md +339 -0
- package/dist/scripts/daemon-runner.js +32 -0
- package/dist/scripts/daemon-runner.js.map +1 -0
- package/dist/scripts/dev-runner.js +19 -0
- package/dist/scripts/dev-runner.js.map +1 -0
- package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
- package/dist/scripts/supervisor.js +95 -0
- package/dist/scripts/supervisor.js.map +1 -0
- package/dist/server/client/daemon-client.d.ts +383 -0
- package/dist/server/client/daemon-client.d.ts.map +1 -0
- package/dist/server/client/daemon-client.js +2443 -0
- package/dist/server/client/daemon-client.js.map +1 -0
- package/dist/server/server/agent/activity-curator.d.ts +8 -0
- package/dist/server/server/agent/activity-curator.d.ts.map +1 -0
- package/dist/server/server/agent/activity-curator.js +228 -0
- package/dist/server/server/agent/activity-curator.js.map +1 -0
- package/dist/server/server/agent/agent-management-mcp.d.ts +34 -0
- package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -0
- package/dist/server/server/agent/agent-management-mcp.js +619 -0
- package/dist/server/server/agent/agent-management-mcp.js.map +1 -0
- package/dist/server/server/agent/agent-manager.d.ts +182 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
- package/dist/server/server/agent/agent-manager.js +1066 -0
- package/dist/server/server/agent/agent-manager.js.map +1 -0
- package/dist/server/server/agent/agent-metadata-generator.d.ts +29 -0
- package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -0
- package/dist/server/server/agent/agent-metadata-generator.js +157 -0
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
- package/dist/server/server/agent/agent-projections.d.ts +12 -0
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
- package/dist/server/server/agent/agent-projections.js +238 -0
- package/dist/server/server/agent/agent-projections.js.map +1 -0
- package/dist/server/server/agent/agent-response-loop.d.ts +32 -0
- package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
- package/dist/server/server/agent/agent-response-loop.js +224 -0
- package/dist/server/server/agent/agent-response-loop.js.map +1 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts +360 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
- package/dist/server/server/agent/agent-sdk-types.js +2 -0
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
- package/dist/server/server/agent/agent-storage.d.ts +187 -0
- package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
- package/dist/server/server/agent/agent-storage.js +328 -0
- package/dist/server/server/agent/agent-storage.js.map +1 -0
- package/dist/server/server/agent/audio-utils.d.ts +3 -0
- package/dist/server/server/agent/audio-utils.d.ts.map +1 -0
- package/dist/server/server/agent/audio-utils.js +19 -0
- package/dist/server/server/agent/audio-utils.js.map +1 -0
- package/dist/server/server/agent/dictation-debug.d.ts +13 -0
- package/dist/server/server/agent/dictation-debug.d.ts.map +1 -0
- package/dist/server/server/agent/dictation-debug.js +50 -0
- package/dist/server/server/agent/dictation-debug.js.map +1 -0
- package/dist/server/server/agent/llm-openai.d.ts +7 -0
- package/dist/server/server/agent/llm-openai.d.ts.map +1 -0
- package/dist/server/server/agent/llm-openai.js +8 -0
- package/dist/server/server/agent/llm-openai.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts +26 -0
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
- package/dist/server/server/agent/mcp-server.js +762 -0
- package/dist/server/server/agent/mcp-server.js.map +1 -0
- package/dist/server/server/agent/model-resolver.d.ts +11 -0
- package/dist/server/server/agent/model-resolver.d.ts.map +1 -0
- package/dist/server/server/agent/model-resolver.js +21 -0
- package/dist/server/server/agent/model-resolver.js.map +1 -0
- package/dist/server/server/agent/orchestrator-instructions.d.ts +7 -0
- package/dist/server/server/agent/orchestrator-instructions.d.ts.map +1 -0
- package/dist/server/server/agent/orchestrator-instructions.js +51 -0
- package/dist/server/server/agent/orchestrator-instructions.js.map +1 -0
- package/dist/server/server/agent/orchestrator.d.ts +12 -0
- package/dist/server/server/agent/orchestrator.d.ts.map +1 -0
- package/dist/server/server/agent/orchestrator.js +12 -0
- package/dist/server/server/agent/orchestrator.js.map +1 -0
- package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
- package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -0
- package/dist/server/server/agent/pcm16-resampler.js +63 -0
- package/dist/server/server/agent/pcm16-resampler.js.map +1 -0
- package/dist/server/server/agent/provider-launch-config.d.ts +139 -0
- package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -0
- package/dist/server/server/agent/provider-launch-config.js +83 -0
- package/dist/server/server/agent/provider-launch-config.js.map +1 -0
- package/dist/server/server/agent/provider-manifest.d.ts +20 -0
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
- package/dist/server/server/agent/provider-manifest.js +97 -0
- package/dist/server/server/agent/provider-manifest.js.map +1 -0
- package/dist/server/server/agent/provider-registry.d.ts +18 -0
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -0
- package/dist/server/server/agent/provider-registry.js +45 -0
- package/dist/server/server/agent/provider-registry.js.map +1 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +42 -0
- package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.js +73 -0
- package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/claude-agent.d.ts +35 -0
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude-agent.js +2056 -0
- package/dist/server/server/agent/providers/claude-agent.js.map +1 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +13 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +67 -0
- package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +15 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js +640 -0
- package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +34 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.js +2476 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -0
- package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +9 -0
- package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex-rollout-timeline.js +486 -0
- package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +33 -0
- package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +75 -0
- package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +37 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.js +822 -0
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +1363 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.js +534 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +18 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.js +119 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -0
- package/dist/server/server/agent/recordings-debug.d.ts +3 -0
- package/dist/server/server/agent/recordings-debug.d.ts.map +1 -0
- package/dist/server/server/agent/recordings-debug.js +19 -0
- package/dist/server/server/agent/recordings-debug.js.map +1 -0
- package/dist/server/server/agent/stt-debug.d.ts +10 -0
- package/dist/server/server/agent/stt-debug.d.ts.map +1 -0
- package/dist/server/server/agent/stt-debug.js +33 -0
- package/dist/server/server/agent/stt-debug.js.map +1 -0
- package/dist/server/server/agent/stt-manager.d.ts +32 -0
- package/dist/server/server/agent/stt-manager.d.ts.map +1 -0
- package/dist/server/server/agent/stt-manager.js +231 -0
- package/dist/server/server/agent/stt-manager.js.map +1 -0
- package/dist/server/server/agent/system-prompt.d.ts +3 -0
- package/dist/server/server/agent/system-prompt.d.ts.map +1 -0
- package/dist/server/server/agent/system-prompt.js +19 -0
- package/dist/server/server/agent/system-prompt.js.map +1 -0
- package/dist/server/server/agent/tool-name-normalization.d.ts +7 -0
- package/dist/server/server/agent/tool-name-normalization.d.ts.map +1 -0
- package/dist/server/server/agent/tool-name-normalization.js +45 -0
- package/dist/server/server/agent/tool-name-normalization.js.map +1 -0
- package/dist/server/server/agent/tts-debug.d.ts +8 -0
- package/dist/server/server/agent/tts-debug.d.ts.map +1 -0
- package/dist/server/server/agent/tts-debug.js +24 -0
- package/dist/server/server/agent/tts-debug.js.map +1 -0
- package/dist/server/server/agent/tts-manager.d.ts +33 -0
- package/dist/server/server/agent/tts-manager.d.ts.map +1 -0
- package/dist/server/server/agent/tts-manager.js +261 -0
- package/dist/server/server/agent/tts-manager.js.map +1 -0
- package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
- package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -0
- package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
- package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -0
- package/dist/server/server/allowed-hosts.d.ts +13 -0
- package/dist/server/server/allowed-hosts.d.ts.map +1 -0
- package/dist/server/server/allowed-hosts.js +94 -0
- package/dist/server/server/allowed-hosts.js.map +1 -0
- package/dist/server/server/bootstrap.d.ts +49 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -0
- package/dist/server/server/bootstrap.js +483 -0
- package/dist/server/server/bootstrap.js.map +1 -0
- package/dist/server/server/config.d.ts +13 -0
- package/dist/server/server/config.d.ts.map +1 -0
- package/dist/server/server/config.js +84 -0
- package/dist/server/server/config.js.map +1 -0
- package/dist/server/server/connection-offer.d.ts +19 -0
- package/dist/server/server/connection-offer.d.ts.map +1 -0
- package/dist/server/server/connection-offer.js +60 -0
- package/dist/server/server/connection-offer.js.map +1 -0
- package/dist/server/server/daemon-keypair.d.ts +8 -0
- package/dist/server/server/daemon-keypair.d.ts.map +1 -0
- package/dist/server/server/daemon-keypair.js +40 -0
- package/dist/server/server/daemon-keypair.js.map +1 -0
- package/dist/server/server/dictation/dictation-stream-manager.d.ts +76 -0
- package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -0
- package/dist/server/server/dictation/dictation-stream-manager.js +481 -0
- package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -0
- package/dist/server/server/exports.d.ts +11 -0
- package/dist/server/server/exports.d.ts.map +1 -0
- package/dist/server/server/exports.js +11 -0
- package/dist/server/server/exports.js.map +1 -0
- package/dist/server/server/file-download/token-store.d.ts +25 -0
- package/dist/server/server/file-download/token-store.d.ts.map +1 -0
- package/dist/server/server/file-download/token-store.js +40 -0
- package/dist/server/server/file-download/token-store.js.map +1 -0
- package/dist/server/server/file-explorer/service.d.ts +41 -0
- package/dist/server/server/file-explorer/service.d.ts.map +1 -0
- package/dist/server/server/file-explorer/service.js +163 -0
- package/dist/server/server/file-explorer/service.js.map +1 -0
- package/dist/server/server/index.d.ts +2 -0
- package/dist/server/server/index.d.ts.map +1 -0
- package/dist/server/server/index.js +90 -0
- package/dist/server/server/index.js.map +1 -0
- package/dist/server/server/json-utils.d.ts +11 -0
- package/dist/server/server/json-utils.d.ts.map +1 -0
- package/dist/server/server/json-utils.js +45 -0
- package/dist/server/server/json-utils.js.map +1 -0
- package/dist/server/server/logger.d.ts +12 -0
- package/dist/server/server/logger.d.ts.map +1 -0
- package/dist/server/server/logger.js +29 -0
- package/dist/server/server/logger.js.map +1 -0
- package/dist/server/server/messages.d.ts +9 -0
- package/dist/server/server/messages.d.ts.map +1 -0
- package/dist/server/server/messages.js +29 -0
- package/dist/server/server/messages.js.map +1 -0
- package/dist/server/server/pairing-offer.d.ts +16 -0
- package/dist/server/server/pairing-offer.d.ts.map +1 -0
- package/dist/server/server/pairing-offer.js +45 -0
- package/dist/server/server/pairing-offer.js.map +1 -0
- package/dist/server/server/pairing-qr.d.ts +7 -0
- package/dist/server/server/pairing-qr.d.ts.map +1 -0
- package/dist/server/server/pairing-qr.js +45 -0
- package/dist/server/server/pairing-qr.js.map +1 -0
- package/dist/server/server/paseo-home.d.ts +2 -0
- package/dist/server/server/paseo-home.d.ts.map +1 -0
- package/dist/server/server/paseo-home.js +19 -0
- package/dist/server/server/paseo-home.js.map +1 -0
- package/dist/server/server/path-utils.d.ts +3 -0
- package/dist/server/server/path-utils.d.ts.map +1 -0
- package/dist/server/server/path-utils.js +20 -0
- package/dist/server/server/path-utils.js.map +1 -0
- package/dist/server/server/persisted-config.d.ts +500 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -0
- package/dist/server/server/persisted-config.js +212 -0
- package/dist/server/server/persisted-config.js.map +1 -0
- package/dist/server/server/persistence-hooks.d.ts +24 -0
- package/dist/server/server/persistence-hooks.d.ts.map +1 -0
- package/dist/server/server/persistence-hooks.js +60 -0
- package/dist/server/server/persistence-hooks.js.map +1 -0
- package/dist/server/server/pid-lock.d.ts +19 -0
- package/dist/server/server/pid-lock.d.ts.map +1 -0
- package/dist/server/server/pid-lock.js +115 -0
- package/dist/server/server/pid-lock.js.map +1 -0
- package/dist/server/server/push/push-service.d.ts +21 -0
- package/dist/server/server/push/push-service.d.ts.map +1 -0
- package/dist/server/server/push/push-service.js +68 -0
- package/dist/server/server/push/push-service.js.map +1 -0
- package/dist/server/server/push/token-store.d.ts +18 -0
- package/dist/server/server/push/token-store.d.ts.map +1 -0
- package/dist/server/server/push/token-store.js +70 -0
- package/dist/server/server/push/token-store.js.map +1 -0
- package/dist/server/server/relay-transport.d.ts +22 -0
- package/dist/server/server/relay-transport.d.ts.map +1 -0
- package/dist/server/server/relay-transport.js +374 -0
- package/dist/server/server/relay-transport.js.map +1 -0
- package/dist/server/server/server-id.d.ts +17 -0
- package/dist/server/server/server-id.d.ts.map +1 -0
- package/dist/server/server/server-id.js +63 -0
- package/dist/server/server/server-id.js.map +1 -0
- package/dist/server/server/session.d.ts +360 -0
- package/dist/server/server/session.d.ts.map +1 -0
- package/dist/server/server/session.js +4615 -0
- package/dist/server/server/session.js.map +1 -0
- package/dist/server/server/speech/audio.d.ts +10 -0
- package/dist/server/server/speech/audio.d.ts.map +1 -0
- package/dist/server/server/speech/audio.js +101 -0
- package/dist/server/server/speech/audio.js.map +1 -0
- package/dist/server/server/speech/providers/local/config.d.ts +26 -0
- package/dist/server/server/speech/providers/local/config.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/config.js +93 -0
- package/dist/server/server/speech/providers/local/config.js.map +1 -0
- package/dist/server/server/speech/providers/local/models.d.ts +12 -0
- package/dist/server/server/speech/providers/local/models.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/models.js +18 -0
- package/dist/server/server/speech/providers/local/models.js.map +1 -0
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts +24 -0
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +422 -0
- package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -0
- package/dist/server/server/speech/providers/local/runtime.d.ts +30 -0
- package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/runtime.js +254 -0
- package/dist/server/server/speech/providers/local/runtime.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +117 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +166 -0
- package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +17 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +151 -0
- package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +28 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +68 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts +37 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +79 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts +7 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +11 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +7 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +44 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +131 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +132 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts +23 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +112 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts +23 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +140 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +95 -0
- package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -0
- package/dist/server/server/speech/providers/openai/config.d.ts +22 -0
- package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -0
- package/dist/server/server/speech/providers/openai/config.js +94 -0
- package/dist/server/server/speech/providers/openai/config.js.map +1 -0
- package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +42 -0
- package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -0
- package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +165 -0
- package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -0
- package/dist/server/server/speech/providers/openai/runtime.d.ts +27 -0
- package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -0
- package/dist/server/server/speech/providers/openai/runtime.js +103 -0
- package/dist/server/server/speech/providers/openai/runtime.js.map +1 -0
- package/dist/server/server/speech/providers/openai/stt.d.ts +22 -0
- package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -0
- package/dist/server/server/speech/providers/openai/stt.js +208 -0
- package/dist/server/server/speech/providers/openai/stt.js.map +1 -0
- package/dist/server/server/speech/providers/openai/tts.d.ts +18 -0
- package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -0
- package/dist/server/server/speech/providers/openai/tts.js +46 -0
- package/dist/server/server/speech/providers/openai/tts.js.map +1 -0
- package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
- package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -0
- package/dist/server/server/speech/speech-config-resolver.js +64 -0
- package/dist/server/server/speech/speech-config-resolver.js.map +1 -0
- package/dist/server/server/speech/speech-provider.d.ts +59 -0
- package/dist/server/server/speech/speech-provider.d.ts.map +1 -0
- package/dist/server/server/speech/speech-provider.js +2 -0
- package/dist/server/server/speech/speech-provider.js.map +1 -0
- package/dist/server/server/speech/speech-runtime.d.ts +20 -0
- package/dist/server/server/speech/speech-runtime.d.ts.map +1 -0
- package/dist/server/server/speech/speech-runtime.js +119 -0
- package/dist/server/server/speech/speech-runtime.js.map +1 -0
- package/dist/server/server/speech/speech-types.d.ts +20 -0
- package/dist/server/server/speech/speech-types.d.ts.map +1 -0
- package/dist/server/server/speech/speech-types.js +7 -0
- package/dist/server/server/speech/speech-types.js.map +1 -0
- package/dist/server/server/terminal-mcp/index.d.ts +4 -0
- package/dist/server/server/terminal-mcp/index.d.ts.map +1 -0
- package/dist/server/server/terminal-mcp/index.js +3 -0
- package/dist/server/server/terminal-mcp/index.js.map +1 -0
- package/dist/server/server/terminal-mcp/server.d.ts +10 -0
- package/dist/server/server/terminal-mcp/server.d.ts.map +1 -0
- package/dist/server/server/terminal-mcp/server.js +217 -0
- package/dist/server/server/terminal-mcp/server.js.map +1 -0
- package/dist/server/server/terminal-mcp/terminal-manager.d.ts +123 -0
- package/dist/server/server/terminal-mcp/terminal-manager.d.ts.map +1 -0
- package/dist/server/server/terminal-mcp/terminal-manager.js +351 -0
- package/dist/server/server/terminal-mcp/terminal-manager.js.map +1 -0
- package/dist/server/server/terminal-mcp/tmux.d.ts +207 -0
- package/dist/server/server/terminal-mcp/tmux.d.ts.map +1 -0
- package/dist/server/server/terminal-mcp/tmux.js +924 -0
- package/dist/server/server/terminal-mcp/tmux.js.map +1 -0
- package/dist/server/server/types.d.ts +5 -0
- package/dist/server/server/types.d.ts.map +1 -0
- package/dist/server/server/types.js +3 -0
- package/dist/server/server/types.js.map +1 -0
- package/dist/server/server/utils/diff-highlighter.d.ts +52 -0
- package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -0
- package/dist/server/server/utils/diff-highlighter.js +244 -0
- package/dist/server/server/utils/diff-highlighter.js.map +1 -0
- package/dist/server/server/utils/syntax-highlighter.d.ts +10 -0
- package/dist/server/server/utils/syntax-highlighter.d.ts.map +1 -0
- package/dist/server/server/utils/syntax-highlighter.js +141 -0
- package/dist/server/server/utils/syntax-highlighter.js.map +1 -0
- package/dist/server/server/voice-config.d.ts +14 -0
- package/dist/server/server/voice-config.d.ts.map +1 -0
- package/dist/server/server/voice-config.js +51 -0
- package/dist/server/server/voice-config.js.map +1 -0
- package/dist/server/server/voice-mcp-bridge-command.d.ts +17 -0
- package/dist/server/server/voice-mcp-bridge-command.d.ts.map +1 -0
- package/dist/server/server/voice-mcp-bridge-command.js +31 -0
- package/dist/server/server/voice-mcp-bridge-command.js.map +1 -0
- package/dist/server/server/voice-mcp-bridge.d.ts +18 -0
- package/dist/server/server/voice-mcp-bridge.d.ts.map +1 -0
- package/dist/server/server/voice-mcp-bridge.js +109 -0
- package/dist/server/server/voice-mcp-bridge.js.map +1 -0
- package/dist/server/server/voice-permission-policy.d.ts +4 -0
- package/dist/server/server/voice-permission-policy.d.ts.map +1 -0
- package/dist/server/server/voice-permission-policy.js +13 -0
- package/dist/server/server/voice-permission-policy.js.map +1 -0
- package/dist/server/server/voice-types.d.ts +17 -0
- package/dist/server/server/voice-types.d.ts.map +1 -0
- package/dist/server/server/voice-types.js +2 -0
- package/dist/server/server/voice-types.js.map +1 -0
- package/dist/server/server/websocket-server.d.ts +80 -0
- package/dist/server/server/websocket-server.d.ts.map +1 -0
- package/dist/server/server/websocket-server.js +447 -0
- package/dist/server/server/websocket-server.js.map +1 -0
- package/dist/server/shared/agent-lifecycle.d.ts +3 -0
- package/dist/server/shared/agent-lifecycle.d.ts.map +1 -0
- package/dist/server/shared/agent-lifecycle.js +8 -0
- package/dist/server/shared/agent-lifecycle.js.map +1 -0
- package/dist/server/shared/connection-offer.d.ts +62 -0
- package/dist/server/shared/connection-offer.d.ts.map +1 -0
- package/dist/server/shared/connection-offer.js +17 -0
- package/dist/server/shared/connection-offer.js.map +1 -0
- package/dist/server/shared/daemon-endpoints.d.ts +19 -0
- package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
- package/dist/server/shared/daemon-endpoints.js +98 -0
- package/dist/server/shared/daemon-endpoints.js.map +1 -0
- package/dist/server/shared/messages.d.ts +36729 -0
- package/dist/server/shared/messages.d.ts.map +1 -0
- package/dist/server/shared/messages.js +1666 -0
- package/dist/server/shared/messages.js.map +1 -0
- package/dist/server/shared/path-utils.d.ts +2 -0
- package/dist/server/shared/path-utils.d.ts.map +1 -0
- package/dist/server/shared/path-utils.js +16 -0
- package/dist/server/shared/path-utils.js.map +1 -0
- package/dist/server/shared/tool-call-display.d.ts +11 -0
- package/dist/server/shared/tool-call-display.d.ts.map +1 -0
- package/dist/server/shared/tool-call-display.js +82 -0
- package/dist/server/shared/tool-call-display.js.map +1 -0
- package/dist/server/terminal/terminal-manager.d.ts +14 -0
- package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
- package/dist/server/terminal/terminal-manager.js +67 -0
- package/dist/server/terminal/terminal-manager.js.map +1 -0
- package/dist/server/terminal/terminal.d.ts +67 -0
- package/dist/server/terminal/terminal.d.ts.map +1 -0
- package/dist/server/terminal/terminal.js +190 -0
- package/dist/server/terminal/terminal.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +138 -0
- package/dist/server/utils/checkout-git.d.ts.map +1 -0
- package/dist/server/utils/checkout-git.js +1079 -0
- package/dist/server/utils/checkout-git.js.map +1 -0
- package/dist/server/utils/path.d.ts +5 -0
- package/dist/server/utils/path.d.ts.map +1 -0
- package/dist/server/utils/path.js +15 -0
- package/dist/server/utils/path.js.map +1 -0
- package/dist/server/utils/project-icon.d.ts +39 -0
- package/dist/server/utils/project-icon.d.ts.map +1 -0
- package/dist/server/utils/project-icon.js +391 -0
- package/dist/server/utils/project-icon.js.map +1 -0
- package/dist/server/utils/worktree-metadata.d.ts +21 -0
- package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
- package/dist/server/utils/worktree-metadata.js +74 -0
- package/dist/server/utils/worktree-metadata.js.map +1 -0
- package/dist/server/utils/worktree.d.ts +95 -0
- package/dist/server/utils/worktree.d.ts.map +1 -0
- package/dist/server/utils/worktree.js +568 -0
- package/dist/server/utils/worktree.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { findSessionByName, createSession, listWindows, createWindow, listPanes, findWindowByName, capturePaneContent, extractExitCodeMarkerFromOutput, sendText as tmuxSendText, sendKeys as tmuxSendKeys, renameWindow, killWindow, isWindowNameUnique, getCurrentWorkingDirectory, getCurrentCommand, getStoredWorkingDirectory, getStoredCommand, waitForPaneActivityToSettle, executeCommand as tmuxExecuteCommand, executeTmux, } from "./tmux.js";
|
|
2
|
+
/**
|
|
3
|
+
* Terminal manager for a specific tmux session
|
|
4
|
+
* Multiple instances can coexist with different session names
|
|
5
|
+
*/
|
|
6
|
+
export class TerminalManager {
|
|
7
|
+
constructor(sessionName) {
|
|
8
|
+
this.sessionName = sessionName;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Initialize the tmux session
|
|
12
|
+
* Creates it if it doesn't exist
|
|
13
|
+
*/
|
|
14
|
+
async initialize() {
|
|
15
|
+
const session = await findSessionByName(this.sessionName);
|
|
16
|
+
if (!session) {
|
|
17
|
+
await createSession(this.sessionName);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List all terminals in the session
|
|
22
|
+
* Returns terminal info including name, active status, working directory, and current command
|
|
23
|
+
*/
|
|
24
|
+
async listTerminals() {
|
|
25
|
+
const session = await findSessionByName(this.sessionName);
|
|
26
|
+
if (!session) {
|
|
27
|
+
throw new Error(`Session '${this.sessionName}' not found. Call initialize() first.`);
|
|
28
|
+
}
|
|
29
|
+
const windows = await listWindows(session.id);
|
|
30
|
+
const terminals = [];
|
|
31
|
+
for (const window of windows) {
|
|
32
|
+
// Get the first (and only) pane in this window
|
|
33
|
+
const paneId = `${window.id}.0`;
|
|
34
|
+
const workingDirectory = await getCurrentWorkingDirectory(paneId);
|
|
35
|
+
const currentCommand = await getCurrentCommand(paneId);
|
|
36
|
+
const lastLines = await capturePaneContent(paneId, 5, false);
|
|
37
|
+
terminals.push({
|
|
38
|
+
name: window.name,
|
|
39
|
+
workingDirectory,
|
|
40
|
+
currentCommand,
|
|
41
|
+
lastLines: lastLines || null,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return terminals;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a new terminal (tmux window) with specified name and working directory
|
|
48
|
+
* Optionally execute an initial command
|
|
49
|
+
*/
|
|
50
|
+
async createTerminal(params) {
|
|
51
|
+
const session = await findSessionByName(this.sessionName);
|
|
52
|
+
if (!session) {
|
|
53
|
+
throw new Error(`Session '${this.sessionName}' not found. Call initialize() first.`);
|
|
54
|
+
}
|
|
55
|
+
// Validate name uniqueness
|
|
56
|
+
const isUnique = await isWindowNameUnique(session.id, params.name);
|
|
57
|
+
if (!isUnique) {
|
|
58
|
+
throw new Error(`Terminal with name '${params.name}' already exists. Please choose a unique name.`);
|
|
59
|
+
}
|
|
60
|
+
// Create the window
|
|
61
|
+
const windowResult = await createWindow(session.id, params.name, {
|
|
62
|
+
workingDirectory: params.workingDirectory,
|
|
63
|
+
command: params.initialCommand ?? null,
|
|
64
|
+
});
|
|
65
|
+
if (!windowResult) {
|
|
66
|
+
throw new Error(`Failed to create terminal '${params.name}'`);
|
|
67
|
+
}
|
|
68
|
+
const paneId = windowResult.paneId;
|
|
69
|
+
// Get terminal info
|
|
70
|
+
const workingDirectory = await getCurrentWorkingDirectory(paneId);
|
|
71
|
+
const currentCommand = await getCurrentCommand(paneId);
|
|
72
|
+
return {
|
|
73
|
+
name: windowResult.name,
|
|
74
|
+
workingDirectory,
|
|
75
|
+
currentCommand,
|
|
76
|
+
commandOutput: windowResult.output || null,
|
|
77
|
+
lastLines: null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Capture output from a terminal by name
|
|
82
|
+
* Returns the last N lines of terminal content
|
|
83
|
+
* If maxWait is provided, waits for terminal activity to settle before capturing
|
|
84
|
+
*/
|
|
85
|
+
async captureTerminal(terminalName, lines = 200, maxWait) {
|
|
86
|
+
const session = await findSessionByName(this.sessionName);
|
|
87
|
+
if (!session) {
|
|
88
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
89
|
+
}
|
|
90
|
+
// Resolve terminal name to window
|
|
91
|
+
const window = await findWindowByName(session.id, terminalName);
|
|
92
|
+
if (!window) {
|
|
93
|
+
const windows = await listWindows(session.id);
|
|
94
|
+
const availableNames = windows.map((w) => w.name).join(", ");
|
|
95
|
+
throw new Error(`Terminal '${terminalName}' not found. Available terminals: ${availableNames}`);
|
|
96
|
+
}
|
|
97
|
+
// Get the first pane
|
|
98
|
+
const panes = await listPanes(window.id);
|
|
99
|
+
const pane = panes[0];
|
|
100
|
+
if (!pane) {
|
|
101
|
+
throw new Error(`No pane found for terminal ${terminalName}`);
|
|
102
|
+
}
|
|
103
|
+
// Wait for activity to settle if maxWait is provided
|
|
104
|
+
if (maxWait) {
|
|
105
|
+
return waitForPaneActivityToSettle(pane.id, maxWait, lines);
|
|
106
|
+
}
|
|
107
|
+
return capturePaneContent(pane.id, lines, false);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Send text to a terminal by name, optionally press Enter, optionally return output
|
|
111
|
+
*/
|
|
112
|
+
async sendText(terminalName, text, pressEnter = false, return_output) {
|
|
113
|
+
const session = await findSessionByName(this.sessionName);
|
|
114
|
+
if (!session) {
|
|
115
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
116
|
+
}
|
|
117
|
+
// Resolve terminal name to window
|
|
118
|
+
const window = await findWindowByName(session.id, terminalName);
|
|
119
|
+
if (!window) {
|
|
120
|
+
const windows = await listWindows(session.id);
|
|
121
|
+
const availableNames = windows.map((w) => w.name).join(", ");
|
|
122
|
+
throw new Error(`Terminal '${terminalName}' not found. Available terminals: ${availableNames}`);
|
|
123
|
+
}
|
|
124
|
+
// Get the first pane
|
|
125
|
+
const panes = await listPanes(window.id);
|
|
126
|
+
const pane = panes[0];
|
|
127
|
+
if (!pane) {
|
|
128
|
+
throw new Error(`No pane found for terminal ${terminalName}`);
|
|
129
|
+
}
|
|
130
|
+
return tmuxSendText({
|
|
131
|
+
paneId: pane.id,
|
|
132
|
+
text,
|
|
133
|
+
pressEnter,
|
|
134
|
+
return_output,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Send special keys or key combinations to a terminal by name
|
|
139
|
+
* Useful for TUI navigation, control sequences, and interactive applications
|
|
140
|
+
*/
|
|
141
|
+
async sendKeys(terminalName, keys, repeat = 1, return_output) {
|
|
142
|
+
const session = await findSessionByName(this.sessionName);
|
|
143
|
+
if (!session) {
|
|
144
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
145
|
+
}
|
|
146
|
+
// Resolve terminal name to window
|
|
147
|
+
const window = await findWindowByName(session.id, terminalName);
|
|
148
|
+
if (!window) {
|
|
149
|
+
const windows = await listWindows(session.id);
|
|
150
|
+
const availableNames = windows.map((w) => w.name).join(", ");
|
|
151
|
+
throw new Error(`Terminal '${terminalName}' not found. Available terminals: ${availableNames}`);
|
|
152
|
+
}
|
|
153
|
+
// Get the first pane
|
|
154
|
+
const panes = await listPanes(window.id);
|
|
155
|
+
const pane = panes[0];
|
|
156
|
+
if (!pane) {
|
|
157
|
+
throw new Error(`No pane found for terminal ${terminalName}`);
|
|
158
|
+
}
|
|
159
|
+
return tmuxSendKeys({
|
|
160
|
+
paneId: pane.id,
|
|
161
|
+
keys,
|
|
162
|
+
repeat,
|
|
163
|
+
return_output,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Rename a terminal by name
|
|
168
|
+
* Validates that the new name is unique
|
|
169
|
+
*/
|
|
170
|
+
async renameTerminal(terminalName, newName) {
|
|
171
|
+
const session = await findSessionByName(this.sessionName);
|
|
172
|
+
if (!session) {
|
|
173
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
174
|
+
}
|
|
175
|
+
// renameWindow handles uniqueness validation and name resolution internally
|
|
176
|
+
await renameWindow(session.id, terminalName, newName);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Kill (close/destroy) a terminal by name
|
|
180
|
+
*/
|
|
181
|
+
async killTerminal(terminalName) {
|
|
182
|
+
const session = await findSessionByName(this.sessionName);
|
|
183
|
+
if (!session) {
|
|
184
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
185
|
+
}
|
|
186
|
+
// Resolve terminal name to window
|
|
187
|
+
const window = await findWindowByName(session.id, terminalName);
|
|
188
|
+
if (!window) {
|
|
189
|
+
const windows = await listWindows(session.id);
|
|
190
|
+
const availableNames = windows.map((w) => w.name).join(", ");
|
|
191
|
+
throw new Error(`Terminal '${terminalName}' not found. Available terminals: ${availableNames}`);
|
|
192
|
+
}
|
|
193
|
+
await killWindow(window.id);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Execute a command and return its output, exit code, and running status
|
|
197
|
+
* Commands are wrapped in bash -c to support all bash features
|
|
198
|
+
* Windows remain after command exits (remain-on-exit) for inspection
|
|
199
|
+
*/
|
|
200
|
+
async executeCommand(command, workingDirectory, maxWait) {
|
|
201
|
+
const session = await findSessionByName(this.sessionName);
|
|
202
|
+
if (!session) {
|
|
203
|
+
throw new Error(`Session '${this.sessionName}' not found. Call initialize() first.`);
|
|
204
|
+
}
|
|
205
|
+
const result = await tmuxExecuteCommand({
|
|
206
|
+
sessionId: session.id,
|
|
207
|
+
command,
|
|
208
|
+
workingDirectory,
|
|
209
|
+
maxWait,
|
|
210
|
+
});
|
|
211
|
+
return {
|
|
212
|
+
commandId: result.windowId,
|
|
213
|
+
output: result.output,
|
|
214
|
+
exitCode: result.exitCode,
|
|
215
|
+
isDead: result.isDead,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* List all commands (windows), including those that have exited
|
|
220
|
+
* Shows both running and dead commands for inspection
|
|
221
|
+
*/
|
|
222
|
+
async listCommands() {
|
|
223
|
+
const session = await findSessionByName(this.sessionName);
|
|
224
|
+
if (!session) {
|
|
225
|
+
throw new Error(`Session '${this.sessionName}' not found. Call initialize() first.`);
|
|
226
|
+
}
|
|
227
|
+
const windows = await listWindows(session.id);
|
|
228
|
+
const commands = [];
|
|
229
|
+
for (const window of windows) {
|
|
230
|
+
const paneId = `${window.id}.0`;
|
|
231
|
+
// Check if pane is dead first
|
|
232
|
+
const deadStatus = await executeTmux([
|
|
233
|
+
"display-message",
|
|
234
|
+
"-p",
|
|
235
|
+
"-t",
|
|
236
|
+
paneId,
|
|
237
|
+
"#{pane_dead}",
|
|
238
|
+
]);
|
|
239
|
+
const isDead = deadStatus === "1";
|
|
240
|
+
// Use stored values for dead panes, current values for live ones
|
|
241
|
+
const workingDirectory = await getStoredWorkingDirectory(window.id, paneId);
|
|
242
|
+
const currentCommand = await getStoredCommand(window.id, paneId);
|
|
243
|
+
const rawLastLines = await capturePaneContent(paneId, 5, false);
|
|
244
|
+
const lastLinesExtracted = extractExitCodeMarkerFromOutput(rawLastLines);
|
|
245
|
+
const lastLines = lastLinesExtracted.output;
|
|
246
|
+
let exitCode = null;
|
|
247
|
+
if (isDead) {
|
|
248
|
+
const exitCodeStr = await executeTmux([
|
|
249
|
+
"display-message",
|
|
250
|
+
"-p",
|
|
251
|
+
"-t",
|
|
252
|
+
paneId,
|
|
253
|
+
"#{pane_dead_status}",
|
|
254
|
+
]);
|
|
255
|
+
const parsed = parseInt(exitCodeStr, 10);
|
|
256
|
+
exitCode = Number.isFinite(parsed) ? parsed : lastLinesExtracted.exitCode;
|
|
257
|
+
}
|
|
258
|
+
commands.push({
|
|
259
|
+
id: window.id,
|
|
260
|
+
name: window.name,
|
|
261
|
+
workingDirectory,
|
|
262
|
+
currentCommand,
|
|
263
|
+
isDead,
|
|
264
|
+
exitCode,
|
|
265
|
+
lastLines: lastLines || null,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
return commands;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Capture output from a command by ID (window ID)
|
|
272
|
+
*/
|
|
273
|
+
async captureCommand(commandId, lines = 200) {
|
|
274
|
+
const session = await findSessionByName(this.sessionName);
|
|
275
|
+
if (!session) {
|
|
276
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
277
|
+
}
|
|
278
|
+
const paneId = `${commandId}.0`;
|
|
279
|
+
const rawOutput = await capturePaneContent(paneId, lines, false);
|
|
280
|
+
const extracted = extractExitCodeMarkerFromOutput(rawOutput);
|
|
281
|
+
const output = extracted.output;
|
|
282
|
+
const deadStatus = await executeTmux([
|
|
283
|
+
"display-message",
|
|
284
|
+
"-p",
|
|
285
|
+
"-t",
|
|
286
|
+
paneId,
|
|
287
|
+
"#{pane_dead}",
|
|
288
|
+
]);
|
|
289
|
+
const isDead = deadStatus === "1";
|
|
290
|
+
let exitCode = null;
|
|
291
|
+
if (isDead) {
|
|
292
|
+
const exitCodeStr = await executeTmux([
|
|
293
|
+
"display-message",
|
|
294
|
+
"-p",
|
|
295
|
+
"-t",
|
|
296
|
+
paneId,
|
|
297
|
+
"#{pane_dead_status}",
|
|
298
|
+
]);
|
|
299
|
+
const parsed = parseInt(exitCodeStr, 10);
|
|
300
|
+
exitCode = Number.isFinite(parsed) ? parsed : extracted.exitCode;
|
|
301
|
+
}
|
|
302
|
+
return {
|
|
303
|
+
output,
|
|
304
|
+
exitCode,
|
|
305
|
+
isDead,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Send text to a command by ID (window ID)
|
|
310
|
+
*/
|
|
311
|
+
async sendTextToCommand(commandId, text, pressEnter = false, return_output) {
|
|
312
|
+
const session = await findSessionByName(this.sessionName);
|
|
313
|
+
if (!session) {
|
|
314
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
315
|
+
}
|
|
316
|
+
const paneId = `${commandId}.0`;
|
|
317
|
+
return tmuxSendText({
|
|
318
|
+
paneId,
|
|
319
|
+
text,
|
|
320
|
+
pressEnter,
|
|
321
|
+
return_output,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Send keys to a command by ID (window ID)
|
|
326
|
+
*/
|
|
327
|
+
async sendKeysToCommand(commandId, keys, repeat = 1, return_output) {
|
|
328
|
+
const session = await findSessionByName(this.sessionName);
|
|
329
|
+
if (!session) {
|
|
330
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
331
|
+
}
|
|
332
|
+
const paneId = `${commandId}.0`;
|
|
333
|
+
return tmuxSendKeys({
|
|
334
|
+
paneId,
|
|
335
|
+
keys,
|
|
336
|
+
repeat,
|
|
337
|
+
return_output,
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Kill a command by ID (window ID)
|
|
342
|
+
*/
|
|
343
|
+
async killCommand(commandId) {
|
|
344
|
+
const session = await findSessionByName(this.sessionName);
|
|
345
|
+
if (!session) {
|
|
346
|
+
throw new Error(`Session '${this.sessionName}' not found.`);
|
|
347
|
+
}
|
|
348
|
+
await killWindow(commandId);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=terminal-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../../../src/server/terminal-mcp/terminal-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
export interface TmuxSession {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
attached: boolean;
|
|
5
|
+
windows: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TmuxWindow {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
active: boolean;
|
|
11
|
+
sessionId: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TmuxPane {
|
|
14
|
+
id: string;
|
|
15
|
+
windowId: string;
|
|
16
|
+
active: boolean;
|
|
17
|
+
title: string;
|
|
18
|
+
}
|
|
19
|
+
interface CommandExecution {
|
|
20
|
+
id: string;
|
|
21
|
+
paneId: string;
|
|
22
|
+
command: string;
|
|
23
|
+
status: "pending" | "completed" | "error";
|
|
24
|
+
startTime: Date;
|
|
25
|
+
result?: string;
|
|
26
|
+
exitCode?: number;
|
|
27
|
+
rawMode?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export type ShellType = "bash" | "zsh" | "fish";
|
|
30
|
+
export declare function extractExitCodeMarkerFromOutput(output: string): {
|
|
31
|
+
exitCode: number | null;
|
|
32
|
+
output: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function setShellConfig(config: {
|
|
35
|
+
type: string;
|
|
36
|
+
}): void;
|
|
37
|
+
/**
|
|
38
|
+
* Execute a tmux command and return the result
|
|
39
|
+
* Uses execFile to avoid shell interpretation of special characters
|
|
40
|
+
*/
|
|
41
|
+
export declare function executeTmux(args: string[]): Promise<string>;
|
|
42
|
+
/**
|
|
43
|
+
* Check if tmux server is running
|
|
44
|
+
*/
|
|
45
|
+
export declare function isTmuxRunning(): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* List all tmux sessions
|
|
48
|
+
*/
|
|
49
|
+
export declare function listSessions(): Promise<TmuxSession[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Find a session by name
|
|
52
|
+
*/
|
|
53
|
+
export declare function findSessionByName(name: string): Promise<TmuxSession | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Find a window by name in a session
|
|
56
|
+
*/
|
|
57
|
+
export declare function findWindowByName(sessionId: string, name: string): Promise<TmuxWindow | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if a window name is unique in a session
|
|
60
|
+
*/
|
|
61
|
+
export declare function isWindowNameUnique(sessionId: string, name: string): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* List windows in a session
|
|
64
|
+
*/
|
|
65
|
+
export declare function listWindows(sessionId: string): Promise<TmuxWindow[]>;
|
|
66
|
+
/**
|
|
67
|
+
* List panes in a window
|
|
68
|
+
*/
|
|
69
|
+
export declare function listPanes(windowId: string): Promise<TmuxPane[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Capture content from a specific pane, by default the latest 200 lines.
|
|
72
|
+
*/
|
|
73
|
+
export declare function capturePaneContent(paneId: string, lines?: number, includeColors?: boolean): Promise<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Get the current working directory of a pane
|
|
76
|
+
*/
|
|
77
|
+
export declare function getCurrentWorkingDirectory(paneId: string): Promise<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Get stored working directory from window user option (for dead panes)
|
|
80
|
+
* Falls back to current working directory if not stored
|
|
81
|
+
*/
|
|
82
|
+
export declare function getStoredWorkingDirectory(windowId: string, paneId: string): Promise<string>;
|
|
83
|
+
/**
|
|
84
|
+
* Get the current command running in a pane (full command line with arguments)
|
|
85
|
+
* Gets the immediate child process of the shell, not the shell itself
|
|
86
|
+
*/
|
|
87
|
+
export declare function getCurrentCommand(paneId: string): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Get stored command from window user option (for dead panes)
|
|
90
|
+
* Falls back to current command if not stored
|
|
91
|
+
*/
|
|
92
|
+
export declare function getStoredCommand(windowId: string, paneId: string): Promise<string>;
|
|
93
|
+
/**
|
|
94
|
+
* Create a new tmux session with a default window named "default" in home directory
|
|
95
|
+
*/
|
|
96
|
+
export declare function createSession(name: string): Promise<TmuxSession | null>;
|
|
97
|
+
/**
|
|
98
|
+
* Expand tilde in path to home directory
|
|
99
|
+
*/
|
|
100
|
+
export declare function expandTilde(path: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* Create a new window in a session with optional working directory and initial command
|
|
103
|
+
*/
|
|
104
|
+
export declare function createWindow(sessionId: string, name: string, options?: {
|
|
105
|
+
workingDirectory?: string;
|
|
106
|
+
command?: string | null;
|
|
107
|
+
}): Promise<(TmuxWindow & {
|
|
108
|
+
paneId: string;
|
|
109
|
+
output?: string | null;
|
|
110
|
+
}) | null>;
|
|
111
|
+
/**
|
|
112
|
+
* Execute a command in a new window with remain-on-exit enabled
|
|
113
|
+
* This allows capturing output and exit code even after the command finishes
|
|
114
|
+
*
|
|
115
|
+
* @param sessionId - The tmux session ID
|
|
116
|
+
* @param command - The command to execute (will be wrapped in bash -c)
|
|
117
|
+
* @param workingDirectory - Directory to execute command in
|
|
118
|
+
* @param maxWait - Maximum milliseconds to wait for command completion or stability
|
|
119
|
+
* @returns Window ID, output, exit code (if finished), and whether process is still running
|
|
120
|
+
*/
|
|
121
|
+
export declare function executeCommand({ sessionId, command, workingDirectory, maxWait, }: {
|
|
122
|
+
sessionId: string;
|
|
123
|
+
command: string;
|
|
124
|
+
workingDirectory: string;
|
|
125
|
+
maxWait?: number;
|
|
126
|
+
}): Promise<{
|
|
127
|
+
windowId: string;
|
|
128
|
+
paneId: string;
|
|
129
|
+
output: string;
|
|
130
|
+
exitCode: number | null;
|
|
131
|
+
isDead: boolean;
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* Kill a tmux session by ID
|
|
135
|
+
*/
|
|
136
|
+
export declare function killSession(sessionId: string): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Kill a tmux window by ID
|
|
139
|
+
*/
|
|
140
|
+
export declare function killWindow(windowId: string): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Kill a tmux pane by ID
|
|
143
|
+
*/
|
|
144
|
+
export declare function killPane(paneId: string): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Rename a tmux window by name or ID
|
|
147
|
+
*/
|
|
148
|
+
export declare function renameWindow(sessionId: string, windowNameOrId: string, newName: string): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Split a tmux pane horizontally or vertically
|
|
151
|
+
*/
|
|
152
|
+
export declare function splitPane(targetPaneId: string, direction?: "horizontal" | "vertical", size?: number): Promise<TmuxPane | null>;
|
|
153
|
+
export declare function executeCommandLegacy(paneId: string, command: string, rawMode?: boolean, noEnter?: boolean): Promise<string>;
|
|
154
|
+
export declare function checkCommandStatus(commandId: string): Promise<CommandExecution | null>;
|
|
155
|
+
export declare function getCommand(commandId: string): CommandExecution | null;
|
|
156
|
+
export declare function getActiveCommandIds(): string[];
|
|
157
|
+
export declare function cleanupOldCommands(maxAgeMinutes?: number): void;
|
|
158
|
+
export type ListScope = "all" | "sessions" | "session" | "window" | "pane";
|
|
159
|
+
interface SessionWithWindows extends TmuxSession {
|
|
160
|
+
windowDetails?: WindowWithPanes[];
|
|
161
|
+
}
|
|
162
|
+
interface WindowWithPanes extends TmuxWindow {
|
|
163
|
+
paneDetails?: TmuxPane[];
|
|
164
|
+
}
|
|
165
|
+
export declare function list({ scope, target, }: {
|
|
166
|
+
scope: ListScope;
|
|
167
|
+
target?: string;
|
|
168
|
+
}): Promise<SessionWithWindows[] | TmuxSession[] | TmuxWindow[] | TmuxPane[] | TmuxSession | TmuxWindow | TmuxPane>;
|
|
169
|
+
export type KillScope = "session" | "window" | "pane";
|
|
170
|
+
export declare function kill({ scope, target, }: {
|
|
171
|
+
scope: KillScope;
|
|
172
|
+
target: string;
|
|
173
|
+
}): Promise<void>;
|
|
174
|
+
export interface ShellCommandResult {
|
|
175
|
+
command: string;
|
|
176
|
+
status: "completed" | "error";
|
|
177
|
+
exitCode: number;
|
|
178
|
+
output: string;
|
|
179
|
+
}
|
|
180
|
+
export declare function executeShellCommand({ paneId, command, timeout, }: {
|
|
181
|
+
paneId: string;
|
|
182
|
+
command: string;
|
|
183
|
+
timeout?: number;
|
|
184
|
+
}): Promise<ShellCommandResult>;
|
|
185
|
+
export declare function sendKeys({ paneId, keys, repeat, return_output, }: {
|
|
186
|
+
paneId: string;
|
|
187
|
+
keys: string;
|
|
188
|
+
repeat?: number;
|
|
189
|
+
return_output?: {
|
|
190
|
+
lines?: number;
|
|
191
|
+
waitForSettled?: boolean;
|
|
192
|
+
maxWait?: number;
|
|
193
|
+
};
|
|
194
|
+
}): Promise<string | null>;
|
|
195
|
+
export declare function waitForPaneActivityToSettle(paneId: string, maxWait: number, lines: number): Promise<string>;
|
|
196
|
+
export declare function sendText({ paneId, text, pressEnter, return_output, }: {
|
|
197
|
+
paneId: string;
|
|
198
|
+
text: string;
|
|
199
|
+
pressEnter?: boolean;
|
|
200
|
+
return_output?: {
|
|
201
|
+
lines?: number;
|
|
202
|
+
waitForSettled?: boolean;
|
|
203
|
+
maxWait?: number;
|
|
204
|
+
};
|
|
205
|
+
}): Promise<string | null>;
|
|
206
|
+
export {};
|
|
207
|
+
//# sourceMappingURL=tmux.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../../../src/server/terminal-mcp/tmux.ts"],"names":[],"mappings":"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"}
|