@junctionpanel/server 0.1.16
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 +10 -0
- package/LICENSE +671 -0
- package/README.md +118 -0
- package/agent-prompt.md +339 -0
- package/dist/scripts/daemon-runner.js +141 -0
- package/dist/scripts/daemon-runner.js.map +1 -0
- package/dist/scripts/dev-runner.js +17 -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 +122 -0
- package/dist/scripts/supervisor.js.map +1 -0
- package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts +8 -0
- package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts.map +1 -0
- package/dist/server/client/daemon-client-relay-e2ee-transport.js +161 -0
- package/dist/server/client/daemon-client-relay-e2ee-transport.js.map +1 -0
- package/dist/server/client/daemon-client-terminal-stream-manager.d.ts +43 -0
- package/dist/server/client/daemon-client-terminal-stream-manager.d.ts.map +1 -0
- package/dist/server/client/daemon-client-terminal-stream-manager.js +134 -0
- package/dist/server/client/daemon-client-terminal-stream-manager.js.map +1 -0
- package/dist/server/client/daemon-client-transport-types.d.ts +34 -0
- package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -0
- package/dist/server/client/daemon-client-transport-types.js +2 -0
- package/dist/server/client/daemon-client-transport-types.js.map +1 -0
- package/dist/server/client/daemon-client-transport-utils.d.ts +9 -0
- package/dist/server/client/daemon-client-transport-utils.d.ts.map +1 -0
- package/dist/server/client/daemon-client-transport-utils.js +121 -0
- package/dist/server/client/daemon-client-transport-utils.js.map +1 -0
- package/dist/server/client/daemon-client-transport.d.ts +5 -0
- package/dist/server/client/daemon-client-transport.d.ts.map +1 -0
- package/dist/server/client/daemon-client-transport.js +4 -0
- package/dist/server/client/daemon-client-transport.js.map +1 -0
- package/dist/server/client/daemon-client-websocket-transport.d.ts +7 -0
- package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -0
- package/dist/server/client/daemon-client-websocket-transport.js +64 -0
- package/dist/server/client/daemon-client-websocket-transport.js.map +1 -0
- package/dist/server/client/daemon-client.d.ts +443 -0
- package/dist/server/client/daemon-client.d.ts.map +1 -0
- package/dist/server/client/daemon-client.js +2223 -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 +36 -0
- package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -0
- package/dist/server/server/agent/agent-management-mcp.js +644 -0
- package/dist/server/server/agent/agent-management-mcp.js.map +1 -0
- package/dist/server/server/agent/agent-manager.d.ts +252 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
- package/dist/server/server/agent/agent-manager.js +1651 -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 +163 -0
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
- package/dist/server/server/agent/agent-projections.d.ts +17 -0
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
- package/dist/server/server/agent/agent-projections.js +270 -0
- package/dist/server/server/agent/agent-projections.js.map +1 -0
- package/dist/server/server/agent/agent-response-loop.d.ts +60 -0
- package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
- package/dist/server/server/agent/agent-response-loop.js +304 -0
- package/dist/server/server/agent/agent-response-loop.js.map +1 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts +377 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
- package/dist/server/server/agent/agent-sdk-types.js +12 -0
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
- package/dist/server/server/agent/agent-storage.d.ts +230 -0
- package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
- package/dist/server/server/agent/agent-storage.js +346 -0
- package/dist/server/server/agent/agent-storage.js.map +1 -0
- package/dist/server/server/agent/agent-title-limits.d.ts +3 -0
- package/dist/server/server/agent/agent-title-limits.d.ts.map +1 -0
- package/dist/server/server/agent/agent-title-limits.js +3 -0
- package/dist/server/server/agent/agent-title-limits.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts +19 -0
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
- package/dist/server/server/agent/mcp-server.js +742 -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 +15 -0
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
- package/dist/server/server/agent/provider-manifest.js +83 -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/model-catalog.d.ts +29 -0
- package/dist/server/server/agent/providers/claude/model-catalog.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/model-catalog.js +64 -0
- package/dist/server/server/agent/providers/claude/model-catalog.js.map +1 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +44 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +250 -0
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.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 +109 -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 +238 -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 +49 -0
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/claude-agent.js +3701 -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 +12 -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 +104 -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 +720 -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 +2660 -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 +487 -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 +39 -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 +151 -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 +874 -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 +1460 -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 +552 -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 +17 -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 +109 -0
- package/dist/server/server/agent/providers/tool-call-mapper-utils.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/timeline-append.d.ts +10 -0
- package/dist/server/server/agent/timeline-append.d.ts.map +1 -0
- package/dist/server/server/agent/timeline-append.js +27 -0
- package/dist/server/server/agent/timeline-append.js.map +1 -0
- package/dist/server/server/agent/timeline-projection.d.ts +39 -0
- package/dist/server/server/agent/timeline-projection.d.ts.map +1 -0
- package/dist/server/server/agent/timeline-projection.js +215 -0
- package/dist/server/server/agent/timeline-projection.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/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/agent-attention-policy.d.ts +20 -0
- package/dist/server/server/agent-attention-policy.d.ts.map +1 -0
- package/dist/server/server/agent-attention-policy.js +40 -0
- package/dist/server/server/agent-attention-policy.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 +422 -0
- package/dist/server/server/bootstrap.js.map +1 -0
- package/dist/server/server/client-message-id.d.ts +3 -0
- package/dist/server/server/client-message-id.d.ts.map +1 -0
- package/dist/server/server/client-message-id.js +12 -0
- package/dist/server/server/client-message-id.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 +58 -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/daemon-version.d.ts +5 -0
- package/dist/server/server/daemon-version.d.ts.map +1 -0
- package/dist/server/server/daemon-version.js +22 -0
- package/dist/server/server/daemon-version.js.map +1 -0
- package/dist/server/server/exports.d.ts +16 -0
- package/dist/server/server/exports.d.ts.map +1 -0
- package/dist/server/server/exports.js +16 -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 +226 -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 +141 -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/junction-home.d.ts +2 -0
- package/dist/server/server/junction-home.d.ts.map +1 -0
- package/dist/server/server/junction-home.js +19 -0
- package/dist/server/server/junction-home.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/package-version.d.ts +13 -0
- package/dist/server/server/package-version.d.ts.map +1 -0
- package/dist/server/server/package-version.js +47 -0
- package/dist/server/server/package-version.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 +270 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -0
- package/dist/server/server/persisted-config.js +152 -0
- package/dist/server/server/persisted-config.js.map +1 -0
- package/dist/server/server/persistence-hooks.d.ts +30 -0
- package/dist/server/server/persistence-hooks.d.ts.map +1 -0
- package/dist/server/server/persistence-hooks.js +68 -0
- package/dist/server/server/persistence-hooks.js.map +1 -0
- package/dist/server/server/pid-lock.d.ts +26 -0
- package/dist/server/server/pid-lock.d.ts.map +1 -0
- package/dist/server/server/pid-lock.js +280 -0
- package/dist/server/server/pid-lock.js.map +1 -0
- package/dist/server/server/relay-transport.d.ts +23 -0
- package/dist/server/server/relay-transport.d.ts.map +1 -0
- package/dist/server/server/relay-transport.js +457 -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 +280 -0
- package/dist/server/server/session.d.ts.map +1 -0
- package/dist/server/server/session.js +4395 -0
- package/dist/server/server/session.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 +145 -0
- package/dist/server/server/utils/syntax-highlighter.js.map +1 -0
- package/dist/server/server/websocket-server.d.ts +79 -0
- package/dist/server/server/websocket-server.d.ts.map +1 -0
- package/dist/server/server/websocket-server.js +742 -0
- package/dist/server/server/websocket-server.js.map +1 -0
- package/dist/server/server/worktree-bootstrap.d.ts +29 -0
- package/dist/server/server/worktree-bootstrap.d.ts.map +1 -0
- package/dist/server/server/worktree-bootstrap.js +454 -0
- package/dist/server/server/worktree-bootstrap.js.map +1 -0
- package/dist/server/shared/agent-attention-notification.d.ts +40 -0
- package/dist/server/shared/agent-attention-notification.d.ts.map +1 -0
- package/dist/server/shared/agent-attention-notification.js +130 -0
- package/dist/server/shared/agent-attention-notification.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/binary-mux.d.ts +31 -0
- package/dist/server/shared/binary-mux.d.ts.map +1 -0
- package/dist/server/shared/binary-mux.js +114 -0
- package/dist/server/shared/binary-mux.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 +27 -0
- package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
- package/dist/server/shared/daemon-endpoints.js +113 -0
- package/dist/server/shared/daemon-endpoints.js.map +1 -0
- package/dist/server/shared/messages.d.ts +36982 -0
- package/dist/server/shared/messages.d.ts.map +1 -0
- package/dist/server/shared/messages.js +1793 -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/terminal-key-input.d.ts +9 -0
- package/dist/server/shared/terminal-key-input.d.ts.map +1 -0
- package/dist/server/shared/terminal-key-input.js +132 -0
- package/dist/server/shared/terminal-key-input.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 +102 -0
- package/dist/server/shared/tool-call-display.js.map +1 -0
- package/dist/server/shared/tool-call-interpretation.d.ts +14 -0
- package/dist/server/shared/tool-call-interpretation.d.ts.map +1 -0
- package/dist/server/shared/tool-call-interpretation.js +76 -0
- package/dist/server/shared/tool-call-interpretation.js.map +1 -0
- package/dist/server/terminal/terminal-manager.d.ts +30 -0
- package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
- package/dist/server/terminal/terminal-manager.js +148 -0
- package/dist/server/terminal/terminal-manager.js.map +1 -0
- package/dist/server/terminal/terminal.d.ts +93 -0
- package/dist/server/terminal/terminal.d.ts.map +1 -0
- package/dist/server/terminal/terminal.js +386 -0
- package/dist/server/terminal/terminal.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +150 -0
- package/dist/server/utils/checkout-git.d.ts.map +1 -0
- package/dist/server/utils/checkout-git.js +1427 -0
- package/dist/server/utils/checkout-git.js.map +1 -0
- package/dist/server/utils/city-names.d.ts +17 -0
- package/dist/server/utils/city-names.d.ts.map +1 -0
- package/dist/server/utils/city-names.js +122 -0
- package/dist/server/utils/city-names.js.map +1 -0
- package/dist/server/utils/directory-suggestions.d.ts +31 -0
- package/dist/server/utils/directory-suggestions.d.ts.map +1 -0
- package/dist/server/utils/directory-suggestions.js +678 -0
- package/dist/server/utils/directory-suggestions.js.map +1 -0
- package/dist/server/utils/git-clone.d.ts +10 -0
- package/dist/server/utils/git-clone.d.ts.map +1 -0
- package/dist/server/utils/git-clone.js +45 -0
- package/dist/server/utils/git-clone.js.map +1 -0
- package/dist/server/utils/git-init.d.ts +9 -0
- package/dist/server/utils/git-init.d.ts.map +1 -0
- package/dist/server/utils/git-init.js +91 -0
- package/dist/server/utils/git-init.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 +47 -0
- package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
- package/dist/server/utils/worktree-metadata.js +116 -0
- package/dist/server/utils/worktree-metadata.js.map +1 -0
- package/dist/server/utils/worktree.d.ts +175 -0
- package/dist/server/utils/worktree.d.ts.map +1 -0
- package/dist/server/utils/worktree.js +858 -0
- package/dist/server/utils/worktree.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
export interface TerminalInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
workingDirectory: string;
|
|
4
|
+
currentCommand: string;
|
|
5
|
+
lastLines: string | null;
|
|
6
|
+
}
|
|
7
|
+
export interface CommandInfo {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
workingDirectory: string;
|
|
11
|
+
currentCommand: string;
|
|
12
|
+
isDead: boolean;
|
|
13
|
+
exitCode: number | null;
|
|
14
|
+
lastLines: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface CreateTerminalParams {
|
|
17
|
+
name: string;
|
|
18
|
+
workingDirectory: string;
|
|
19
|
+
initialCommand?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateTerminalResult extends TerminalInfo {
|
|
22
|
+
commandOutput: string | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Terminal manager for a specific tmux session
|
|
26
|
+
* Multiple instances can coexist with different session names
|
|
27
|
+
*/
|
|
28
|
+
export declare class TerminalManager {
|
|
29
|
+
private sessionName;
|
|
30
|
+
constructor(sessionName: string);
|
|
31
|
+
/**
|
|
32
|
+
* Initialize the tmux session
|
|
33
|
+
* Creates it if it doesn't exist
|
|
34
|
+
*/
|
|
35
|
+
initialize(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* List all terminals in the session
|
|
38
|
+
* Returns terminal info including name, active status, working directory, and current command
|
|
39
|
+
*/
|
|
40
|
+
listTerminals(): Promise<TerminalInfo[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new terminal (tmux window) with specified name and working directory
|
|
43
|
+
* Optionally execute an initial command
|
|
44
|
+
*/
|
|
45
|
+
createTerminal(params: CreateTerminalParams): Promise<CreateTerminalResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Capture output from a terminal by name
|
|
48
|
+
* Returns the last N lines of terminal content
|
|
49
|
+
* If maxWait is provided, waits for terminal activity to settle before capturing
|
|
50
|
+
*/
|
|
51
|
+
captureTerminal(terminalName: string, lines?: number, maxWait?: number): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Send text to a terminal by name, optionally press Enter, optionally return output
|
|
54
|
+
*/
|
|
55
|
+
sendText(terminalName: string, text: string, pressEnter?: boolean, return_output?: {
|
|
56
|
+
lines?: number;
|
|
57
|
+
waitForSettled?: boolean;
|
|
58
|
+
maxWait?: number;
|
|
59
|
+
}): Promise<string | null>;
|
|
60
|
+
/**
|
|
61
|
+
* Send special keys or key combinations to a terminal by name
|
|
62
|
+
* Useful for TUI navigation, control sequences, and interactive applications
|
|
63
|
+
*/
|
|
64
|
+
sendKeys(terminalName: string, keys: string, repeat?: number, return_output?: {
|
|
65
|
+
lines?: number;
|
|
66
|
+
waitForSettled?: boolean;
|
|
67
|
+
maxWait?: number;
|
|
68
|
+
}): Promise<string | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Rename a terminal by name
|
|
71
|
+
* Validates that the new name is unique
|
|
72
|
+
*/
|
|
73
|
+
renameTerminal(terminalName: string, newName: string): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Kill (close/destroy) a terminal by name
|
|
76
|
+
*/
|
|
77
|
+
killTerminal(terminalName: string): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Execute a command and return its output, exit code, and running status
|
|
80
|
+
* Commands are wrapped in bash -c to support all bash features
|
|
81
|
+
* Windows remain after command exits (remain-on-exit) for inspection
|
|
82
|
+
*/
|
|
83
|
+
executeCommand(command: string, workingDirectory: string, maxWait?: number): Promise<{
|
|
84
|
+
commandId: string;
|
|
85
|
+
output: string;
|
|
86
|
+
exitCode: number | null;
|
|
87
|
+
isDead: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* List all commands (windows), including those that have exited
|
|
91
|
+
* Shows both running and dead commands for inspection
|
|
92
|
+
*/
|
|
93
|
+
listCommands(): Promise<CommandInfo[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Capture output from a command by ID (window ID)
|
|
96
|
+
*/
|
|
97
|
+
captureCommand(commandId: string, lines?: number): Promise<{
|
|
98
|
+
output: string;
|
|
99
|
+
exitCode: number | null;
|
|
100
|
+
isDead: boolean;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Send text to a command by ID (window ID)
|
|
104
|
+
*/
|
|
105
|
+
sendTextToCommand(commandId: string, text: string, pressEnter?: boolean, return_output?: {
|
|
106
|
+
lines?: number;
|
|
107
|
+
waitForSettled?: boolean;
|
|
108
|
+
maxWait?: number;
|
|
109
|
+
}): Promise<string | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Send keys to a command by ID (window ID)
|
|
112
|
+
*/
|
|
113
|
+
sendKeysToCommand(commandId: string, keys: string, repeat?: number, return_output?: {
|
|
114
|
+
lines?: number;
|
|
115
|
+
waitForSettled?: boolean;
|
|
116
|
+
maxWait?: number;
|
|
117
|
+
}): Promise<string | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Kill a command by ID (window ID)
|
|
120
|
+
*/
|
|
121
|
+
killCommand(commandId: string): Promise<void>;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=terminal-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../../../src/server/terminal-mcp/terminal-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|