@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,391 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from "fs/promises";
|
|
2
|
+
import { extname, join } from "path";
|
|
3
|
+
/**
|
|
4
|
+
* Icon file patterns to search for, in priority order.
|
|
5
|
+
* Patterns starting with '*' are glob patterns (e.g., icon-*.png).
|
|
6
|
+
*/
|
|
7
|
+
export const ICON_PATTERNS = [
|
|
8
|
+
"favicon.ico",
|
|
9
|
+
"favicon.png",
|
|
10
|
+
"favicon.svg",
|
|
11
|
+
"favico.ico",
|
|
12
|
+
"favico.png",
|
|
13
|
+
"favico.svg",
|
|
14
|
+
"icon.png",
|
|
15
|
+
"icon.svg",
|
|
16
|
+
"app-icon.png",
|
|
17
|
+
"app-icon.svg",
|
|
18
|
+
"apple-touch-icon.png",
|
|
19
|
+
"icon-*.png",
|
|
20
|
+
"logo.png",
|
|
21
|
+
"logo.svg",
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Directories to search first (in priority order).
|
|
25
|
+
*/
|
|
26
|
+
export const PRIORITY_DIRS = ["public", "static", "assets", "images", "img"];
|
|
27
|
+
/**
|
|
28
|
+
* Monorepo package directory patterns to scan (e.g., packages/app, apps/web).
|
|
29
|
+
*/
|
|
30
|
+
export const MONOREPO_PACKAGE_DIRS = ["packages", "apps"];
|
|
31
|
+
/**
|
|
32
|
+
* Directories to ignore during search.
|
|
33
|
+
*/
|
|
34
|
+
export const IGNORED_DIRS = [
|
|
35
|
+
".git",
|
|
36
|
+
"node_modules",
|
|
37
|
+
"dist",
|
|
38
|
+
"build",
|
|
39
|
+
".next",
|
|
40
|
+
".nuxt",
|
|
41
|
+
".output",
|
|
42
|
+
"coverage",
|
|
43
|
+
".cache",
|
|
44
|
+
"vendor",
|
|
45
|
+
"src",
|
|
46
|
+
"lib",
|
|
47
|
+
"test",
|
|
48
|
+
"tests",
|
|
49
|
+
"__tests__",
|
|
50
|
+
];
|
|
51
|
+
const MAX_ICON_SIZE = 32 * 1024; // 32KB max
|
|
52
|
+
function getPngDimensions(buffer) {
|
|
53
|
+
// PNG header: 89 50 4E 47 0D 0A 1A 0A
|
|
54
|
+
if (buffer.length < 24)
|
|
55
|
+
return null;
|
|
56
|
+
if (buffer[0] !== 0x89 || buffer[1] !== 0x50 || buffer[2] !== 0x4e || buffer[3] !== 0x47) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
// Width and height are at bytes 16-19 and 20-23 (big endian)
|
|
60
|
+
const width = buffer.readUInt32BE(16);
|
|
61
|
+
const height = buffer.readUInt32BE(20);
|
|
62
|
+
return { width, height };
|
|
63
|
+
}
|
|
64
|
+
function getJpegDimensions(buffer) {
|
|
65
|
+
// JPEG starts with FF D8 FF
|
|
66
|
+
if (buffer.length < 4)
|
|
67
|
+
return null;
|
|
68
|
+
if (buffer[0] !== 0xff || buffer[1] !== 0xd8)
|
|
69
|
+
return null;
|
|
70
|
+
let offset = 2;
|
|
71
|
+
while (offset < buffer.length - 8) {
|
|
72
|
+
if (buffer[offset] !== 0xff) {
|
|
73
|
+
offset++;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const marker = buffer[offset + 1];
|
|
77
|
+
// SOF0-SOF2 markers contain dimensions
|
|
78
|
+
if (marker >= 0xc0 && marker <= 0xc2) {
|
|
79
|
+
const height = buffer.readUInt16BE(offset + 5);
|
|
80
|
+
const width = buffer.readUInt16BE(offset + 7);
|
|
81
|
+
return { width, height };
|
|
82
|
+
}
|
|
83
|
+
// Skip to next marker
|
|
84
|
+
const length = buffer.readUInt16BE(offset + 2);
|
|
85
|
+
offset += 2 + length;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
function getGifDimensions(buffer) {
|
|
90
|
+
// GIF header: GIF87a or GIF89a
|
|
91
|
+
if (buffer.length < 10)
|
|
92
|
+
return null;
|
|
93
|
+
if (buffer[0] !== 0x47 || buffer[1] !== 0x49 || buffer[2] !== 0x46)
|
|
94
|
+
return null;
|
|
95
|
+
// Width and height at bytes 6-7 and 8-9 (little endian)
|
|
96
|
+
const width = buffer.readUInt16LE(6);
|
|
97
|
+
const height = buffer.readUInt16LE(8);
|
|
98
|
+
return { width, height };
|
|
99
|
+
}
|
|
100
|
+
function getWebpDimensions(buffer) {
|
|
101
|
+
// WEBP: RIFF....WEBP
|
|
102
|
+
if (buffer.length < 30)
|
|
103
|
+
return null;
|
|
104
|
+
if (buffer.toString("ascii", 0, 4) !== "RIFF")
|
|
105
|
+
return null;
|
|
106
|
+
if (buffer.toString("ascii", 8, 12) !== "WEBP")
|
|
107
|
+
return null;
|
|
108
|
+
const chunkType = buffer.toString("ascii", 12, 16);
|
|
109
|
+
if (chunkType === "VP8 ") {
|
|
110
|
+
// Lossy format - dimensions at offset 26-27 and 28-29
|
|
111
|
+
const width = buffer.readUInt16LE(26) & 0x3fff;
|
|
112
|
+
const height = buffer.readUInt16LE(28) & 0x3fff;
|
|
113
|
+
return { width, height };
|
|
114
|
+
}
|
|
115
|
+
else if (chunkType === "VP8L") {
|
|
116
|
+
// Lossless format
|
|
117
|
+
const bits = buffer.readUInt32LE(21);
|
|
118
|
+
const width = (bits & 0x3fff) + 1;
|
|
119
|
+
const height = ((bits >> 14) & 0x3fff) + 1;
|
|
120
|
+
return { width, height };
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
function getImageDimensions(buffer, mimeType) {
|
|
125
|
+
switch (mimeType) {
|
|
126
|
+
case "image/png":
|
|
127
|
+
return getPngDimensions(buffer);
|
|
128
|
+
case "image/jpeg":
|
|
129
|
+
return getJpegDimensions(buffer);
|
|
130
|
+
case "image/gif":
|
|
131
|
+
return getGifDimensions(buffer);
|
|
132
|
+
case "image/webp":
|
|
133
|
+
return getWebpDimensions(buffer);
|
|
134
|
+
case "image/x-icon":
|
|
135
|
+
// ICO files are typically square, trust them
|
|
136
|
+
return { width: 1, height: 1 };
|
|
137
|
+
case "image/svg+xml":
|
|
138
|
+
// SVG can be any aspect ratio but icons are typically square, trust them
|
|
139
|
+
return { width: 1, height: 1 };
|
|
140
|
+
default:
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function isSquareImage(buffer, mimeType) {
|
|
145
|
+
const dimensions = getImageDimensions(buffer, mimeType);
|
|
146
|
+
if (!dimensions)
|
|
147
|
+
return false;
|
|
148
|
+
return dimensions.width === dimensions.height;
|
|
149
|
+
}
|
|
150
|
+
function getMimeType(filename) {
|
|
151
|
+
const ext = extname(filename).toLowerCase();
|
|
152
|
+
switch (ext) {
|
|
153
|
+
case ".ico":
|
|
154
|
+
return "image/x-icon";
|
|
155
|
+
case ".png":
|
|
156
|
+
return "image/png";
|
|
157
|
+
case ".svg":
|
|
158
|
+
return "image/svg+xml";
|
|
159
|
+
case ".jpg":
|
|
160
|
+
case ".jpeg":
|
|
161
|
+
return "image/jpeg";
|
|
162
|
+
case ".gif":
|
|
163
|
+
return "image/gif";
|
|
164
|
+
case ".webp":
|
|
165
|
+
return "image/webp";
|
|
166
|
+
default:
|
|
167
|
+
return "application/octet-stream";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function matchesPattern(filename, pattern) {
|
|
171
|
+
if (pattern.includes("*")) {
|
|
172
|
+
// Convert glob pattern to regex
|
|
173
|
+
const regexPattern = pattern
|
|
174
|
+
.replace(/\./g, "\\.")
|
|
175
|
+
.replace(/\*/g, ".*");
|
|
176
|
+
return new RegExp(`^${regexPattern}$`).test(filename);
|
|
177
|
+
}
|
|
178
|
+
return filename === pattern;
|
|
179
|
+
}
|
|
180
|
+
async function findIconInDir(dir, patterns) {
|
|
181
|
+
let entries;
|
|
182
|
+
try {
|
|
183
|
+
entries = await readdir(dir);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
// Check each pattern in order of priority
|
|
189
|
+
for (const pattern of patterns) {
|
|
190
|
+
for (const entry of entries) {
|
|
191
|
+
if (matchesPattern(entry, pattern)) {
|
|
192
|
+
const fullPath = join(dir, entry);
|
|
193
|
+
try {
|
|
194
|
+
const stats = await stat(fullPath);
|
|
195
|
+
if (stats.isFile()) {
|
|
196
|
+
return fullPath;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// File may have been deleted, continue
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
async function searchDirRecursively(dir, patterns, ignoredDirs, maxDepth, currentDepth = 0) {
|
|
208
|
+
if (currentDepth > maxDepth) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
// First check this directory for icons
|
|
212
|
+
const found = await findIconInDir(dir, patterns);
|
|
213
|
+
if (found) {
|
|
214
|
+
return found;
|
|
215
|
+
}
|
|
216
|
+
// Then recurse into subdirectories
|
|
217
|
+
let entries;
|
|
218
|
+
try {
|
|
219
|
+
entries = await readdir(dir);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
for (const entry of entries) {
|
|
225
|
+
if (ignoredDirs.has(entry)) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const fullPath = join(dir, entry);
|
|
229
|
+
try {
|
|
230
|
+
const stats = await stat(fullPath);
|
|
231
|
+
if (stats.isDirectory()) {
|
|
232
|
+
const result = await searchDirRecursively(fullPath, patterns, ignoredDirs, maxDepth, currentDepth + 1);
|
|
233
|
+
if (result) {
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Directory may be inaccessible, continue
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Find a project icon/favicon in the given directory.
|
|
246
|
+
* Searches priority directories first, then falls back to scanning the root.
|
|
247
|
+
*
|
|
248
|
+
* @param projectDir - The root directory of the project to search
|
|
249
|
+
* @param maxDepth - Maximum depth to search (default: 3)
|
|
250
|
+
* @returns The absolute path to the found icon, or null if not found
|
|
251
|
+
*/
|
|
252
|
+
export async function findProjectIcon(projectDir, maxDepth = 3) {
|
|
253
|
+
const ignoredDirsSet = new Set(IGNORED_DIRS);
|
|
254
|
+
// First search priority directories
|
|
255
|
+
for (const priorityDir of PRIORITY_DIRS) {
|
|
256
|
+
const priorityPath = join(projectDir, priorityDir);
|
|
257
|
+
try {
|
|
258
|
+
const stats = await stat(priorityPath);
|
|
259
|
+
if (stats.isDirectory()) {
|
|
260
|
+
const result = await searchDirRecursively(priorityPath, ICON_PATTERNS, ignoredDirsSet, maxDepth - 1);
|
|
261
|
+
if (result) {
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Directory doesn't exist, continue
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Then search monorepo package directories (packages/*, apps/*)
|
|
271
|
+
for (const monoDir of MONOREPO_PACKAGE_DIRS) {
|
|
272
|
+
const monoPath = join(projectDir, monoDir);
|
|
273
|
+
let packageEntries;
|
|
274
|
+
try {
|
|
275
|
+
packageEntries = await readdir(monoPath);
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
for (const packageName of packageEntries) {
|
|
281
|
+
const packagePath = join(monoPath, packageName);
|
|
282
|
+
try {
|
|
283
|
+
const packageStats = await stat(packagePath);
|
|
284
|
+
if (!packageStats.isDirectory())
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
// Search priority dirs within the package
|
|
291
|
+
for (const priorityDir of PRIORITY_DIRS) {
|
|
292
|
+
const priorityPath = join(packagePath, priorityDir);
|
|
293
|
+
try {
|
|
294
|
+
const priorityStats = await stat(priorityPath);
|
|
295
|
+
if (priorityStats.isDirectory()) {
|
|
296
|
+
const result = await searchDirRecursively(priorityPath, ICON_PATTERNS, ignoredDirsSet, maxDepth - 1);
|
|
297
|
+
if (result) {
|
|
298
|
+
return result;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// Directory doesn't exist, continue
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Search package root
|
|
307
|
+
const found = await findIconInDir(packagePath, ICON_PATTERNS);
|
|
308
|
+
if (found) {
|
|
309
|
+
return found;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// Then search root and any other non-priority directories
|
|
314
|
+
const found = await findDirRecursively(projectDir);
|
|
315
|
+
if (found) {
|
|
316
|
+
return found;
|
|
317
|
+
}
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
async function findDirRecursively(dir, maxDepth = 2, currentDepth = 0) {
|
|
321
|
+
const ignoredDirsSet = new Set(IGNORED_DIRS);
|
|
322
|
+
const priorityDirsSet = new Set(PRIORITY_DIRS);
|
|
323
|
+
if (currentDepth > maxDepth) {
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
// Check root for icons
|
|
327
|
+
const found = await findIconInDir(dir, ICON_PATTERNS);
|
|
328
|
+
if (found) {
|
|
329
|
+
return found;
|
|
330
|
+
}
|
|
331
|
+
// Don't recurse further from root - we already searched priority dirs
|
|
332
|
+
if (currentDepth > 0) {
|
|
333
|
+
let entries;
|
|
334
|
+
try {
|
|
335
|
+
entries = await readdir(dir);
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
return null;
|
|
339
|
+
}
|
|
340
|
+
for (const entry of entries) {
|
|
341
|
+
if (ignoredDirsSet.has(entry) || priorityDirsSet.has(entry)) {
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
const fullPath = join(dir, entry);
|
|
345
|
+
try {
|
|
346
|
+
const stats = await stat(fullPath);
|
|
347
|
+
if (stats.isDirectory()) {
|
|
348
|
+
const result = await findDirRecursively(fullPath, maxDepth, currentDepth + 1);
|
|
349
|
+
if (result) {
|
|
350
|
+
return result;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// Continue
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Find and read a project icon/favicon, returning it as base64.
|
|
363
|
+
* Only returns square icons smaller than MAX_ICON_SIZE (32KB).
|
|
364
|
+
*
|
|
365
|
+
* @param projectDir - The root directory of the project to search
|
|
366
|
+
* @returns The icon data with mime type, or null if not found
|
|
367
|
+
*/
|
|
368
|
+
export async function getProjectIcon(projectDir) {
|
|
369
|
+
const iconPath = await findProjectIcon(projectDir);
|
|
370
|
+
if (!iconPath) {
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const stats = await stat(iconPath);
|
|
375
|
+
if (stats.size > MAX_ICON_SIZE) {
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
const buffer = await readFile(iconPath);
|
|
379
|
+
const mimeType = getMimeType(iconPath);
|
|
380
|
+
// Only return square images
|
|
381
|
+
if (!isSquareImage(buffer, mimeType)) {
|
|
382
|
+
return null;
|
|
383
|
+
}
|
|
384
|
+
const data = buffer.toString("base64");
|
|
385
|
+
return { data, mimeType };
|
|
386
|
+
}
|
|
387
|
+
catch {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=project-icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-icon.js","sourceRoot":"","sources":["../../../src/utils/project-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa;IACb,aAAa;IACb,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,UAAU;IACV,cAAc;IACd,cAAc;IACd,sBAAsB;IACtB,YAAY;IACZ,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC;AAOF,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAO5C,SAAS,gBAAgB,CAAC,MAAc;IACtC,sCAAsC;IACtC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,4BAA4B;IAC5B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE1D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClC,uCAAuC;QACvC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,+BAA+B;IAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChF,wDAAwD;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,qBAAqB;IACrB,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAE5D,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,sDAAsD;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,kBAAkB;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,QAAgB;IAC1D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,cAAc;YACjB,6CAA6C;YAC7C,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACjC,KAAK,eAAe;YAClB,yEAAyE;YACzE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACjC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,QAAgB;IACrD,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,eAAe,CAAC;QACzB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,0BAA0B,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAe;IACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,gCAAgC;QAChC,MAAM,YAAY,GAAG,OAAO;aACzB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,KAAK,OAAO,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,QAAkB;IAElB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBACnB,OAAO,QAAQ,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,uCAAuC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,QAAkB,EAClB,WAAwB,EACxB,QAAgB,EAChB,eAAuB,CAAC;IAExB,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,YAAY,GAAG,CAAC,CACjB,CAAC;gBACF,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,WAAmB,CAAC;IAEpB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAE7C,oCAAoC;IACpC,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,GAAG,CAAC,CACb,CAAC;gBACF,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,cAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;oBAAE,SAAS;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,0CAA0C;YAC1C,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;gBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBACpD,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC/C,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;wBAChC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,GAAG,CAAC,CACb,CAAC;wBACF,IAAI,MAAM,EAAE,CAAC;4BACX,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;gBACtC,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC9D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,WAAmB,CAAC,EACpB,eAAuB,CAAC;IAExB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,QAAQ,EACR,QAAQ,EACR,YAAY,GAAG,CAAC,CACjB,CAAC;oBACF,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEvC,4BAA4B;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const JunctionWorktreeMetadataSchema: z.ZodUnion<[z.ZodObject<{
|
|
3
|
+
version: z.ZodLiteral<1>;
|
|
4
|
+
baseRefName: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
version: 1;
|
|
7
|
+
baseRefName: string;
|
|
8
|
+
}, {
|
|
9
|
+
version: 1;
|
|
10
|
+
baseRefName: string;
|
|
11
|
+
}>, z.ZodObject<{
|
|
12
|
+
version: z.ZodLiteral<2>;
|
|
13
|
+
baseRefName: z.ZodString;
|
|
14
|
+
runtime: z.ZodOptional<z.ZodObject<{
|
|
15
|
+
worktreePort: z.ZodNumber;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
worktreePort: number;
|
|
18
|
+
}, {
|
|
19
|
+
worktreePort: number;
|
|
20
|
+
}>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
version: 2;
|
|
23
|
+
baseRefName: string;
|
|
24
|
+
runtime?: {
|
|
25
|
+
worktreePort: number;
|
|
26
|
+
} | undefined;
|
|
27
|
+
}, {
|
|
28
|
+
version: 2;
|
|
29
|
+
baseRefName: string;
|
|
30
|
+
runtime?: {
|
|
31
|
+
worktreePort: number;
|
|
32
|
+
} | undefined;
|
|
33
|
+
}>]>;
|
|
34
|
+
export type JunctionWorktreeMetadata = z.infer<typeof JunctionWorktreeMetadataSchema>;
|
|
35
|
+
export declare function getJunctionWorktreeMetadataPath(worktreeRoot: string): string;
|
|
36
|
+
export declare function normalizeBaseRefName(input: string): string;
|
|
37
|
+
export declare function writeJunctionWorktreeMetadata(worktreeRoot: string, options: {
|
|
38
|
+
baseRefName: string;
|
|
39
|
+
}): void;
|
|
40
|
+
export declare function writeJunctionWorktreeRuntimeMetadata(worktreeRoot: string, options: {
|
|
41
|
+
worktreePort: number;
|
|
42
|
+
}): void;
|
|
43
|
+
export declare function readJunctionWorktreeMetadata(worktreeRoot: string): JunctionWorktreeMetadata | null;
|
|
44
|
+
export declare function requireJunctionWorktreeBaseRefName(worktreeRoot: string): string;
|
|
45
|
+
export declare function readJunctionWorktreeRuntimePort(worktreeRoot: string): number | null;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=worktree-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-metadata.d.ts","sourceRoot":"","sources":["../../../src/utils/worktree-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGlC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAwBtF,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/B,IAAI,CAgBN;AAED,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAChC,IAAI,CAoBN;AAED,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI,CAOlG;AAED,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASnF"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
2
|
+
import { isAbsolute, join, resolve } from "path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
const JunctionWorktreeMetadataV1Schema = z.object({
|
|
5
|
+
version: z.literal(1),
|
|
6
|
+
baseRefName: z.string().min(1),
|
|
7
|
+
});
|
|
8
|
+
const JunctionWorktreeMetadataV2Schema = z.object({
|
|
9
|
+
version: z.literal(2),
|
|
10
|
+
baseRefName: z.string().min(1),
|
|
11
|
+
runtime: z
|
|
12
|
+
.object({
|
|
13
|
+
worktreePort: z.number().int().positive(),
|
|
14
|
+
})
|
|
15
|
+
.optional(),
|
|
16
|
+
});
|
|
17
|
+
const JunctionWorktreeMetadataSchema = z.union([
|
|
18
|
+
JunctionWorktreeMetadataV1Schema,
|
|
19
|
+
JunctionWorktreeMetadataV2Schema,
|
|
20
|
+
]);
|
|
21
|
+
function getGitDirForWorktreeRoot(worktreeRoot) {
|
|
22
|
+
const gitPath = join(worktreeRoot, ".git");
|
|
23
|
+
if (!existsSync(gitPath)) {
|
|
24
|
+
throw new Error(`Not a git repository: ${worktreeRoot}`);
|
|
25
|
+
}
|
|
26
|
+
// In a worktree checkout, `.git` is a file containing `gitdir: <path>`.
|
|
27
|
+
// In a normal checkout, `.git` is a directory.
|
|
28
|
+
try {
|
|
29
|
+
const gitFileContent = readFileSync(gitPath, "utf8");
|
|
30
|
+
const match = gitFileContent.match(/gitdir:\s*(.+)/);
|
|
31
|
+
if (match?.[1]) {
|
|
32
|
+
const raw = match[1].trim();
|
|
33
|
+
return isAbsolute(raw) ? raw : resolve(worktreeRoot, raw);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// If `.git` is a directory, readFileSync will throw; fall through.
|
|
38
|
+
}
|
|
39
|
+
return gitPath;
|
|
40
|
+
}
|
|
41
|
+
export function getJunctionWorktreeMetadataPath(worktreeRoot) {
|
|
42
|
+
const gitDir = getGitDirForWorktreeRoot(worktreeRoot);
|
|
43
|
+
return join(gitDir, "junction", "worktree.json");
|
|
44
|
+
}
|
|
45
|
+
export function normalizeBaseRefName(input) {
|
|
46
|
+
const trimmed = input.trim();
|
|
47
|
+
if (!trimmed) {
|
|
48
|
+
throw new Error("Base branch is required");
|
|
49
|
+
}
|
|
50
|
+
if (trimmed.startsWith("origin/")) {
|
|
51
|
+
return trimmed.slice("origin/".length);
|
|
52
|
+
}
|
|
53
|
+
return trimmed;
|
|
54
|
+
}
|
|
55
|
+
export function writeJunctionWorktreeMetadata(worktreeRoot, options) {
|
|
56
|
+
const baseRefName = normalizeBaseRefName(options.baseRefName);
|
|
57
|
+
if (baseRefName === "HEAD") {
|
|
58
|
+
throw new Error("Base branch cannot be HEAD");
|
|
59
|
+
}
|
|
60
|
+
if (baseRefName.includes("..") || baseRefName.includes("@{")) {
|
|
61
|
+
throw new Error(`Invalid base branch: ${baseRefName}`);
|
|
62
|
+
}
|
|
63
|
+
if (!/^[0-9A-Za-z._/-]+$/.test(baseRefName)) {
|
|
64
|
+
throw new Error(`Invalid base branch: ${baseRefName}`);
|
|
65
|
+
}
|
|
66
|
+
const metadataPath = getJunctionWorktreeMetadataPath(worktreeRoot);
|
|
67
|
+
mkdirSync(join(getGitDirForWorktreeRoot(worktreeRoot), "junction"), { recursive: true });
|
|
68
|
+
const metadata = { version: 1, baseRefName };
|
|
69
|
+
writeFileSync(metadataPath, `${JSON.stringify(metadata, null, 2)}\n`, "utf8");
|
|
70
|
+
}
|
|
71
|
+
export function writeJunctionWorktreeRuntimeMetadata(worktreeRoot, options) {
|
|
72
|
+
if (!Number.isInteger(options.worktreePort) || options.worktreePort <= 0) {
|
|
73
|
+
throw new Error(`Invalid worktree runtime port: ${options.worktreePort}`);
|
|
74
|
+
}
|
|
75
|
+
const current = readJunctionWorktreeMetadata(worktreeRoot);
|
|
76
|
+
if (!current) {
|
|
77
|
+
throw new Error("Cannot persist worktree runtime metadata: missing base metadata");
|
|
78
|
+
}
|
|
79
|
+
const metadataPath = getJunctionWorktreeMetadataPath(worktreeRoot);
|
|
80
|
+
mkdirSync(join(getGitDirForWorktreeRoot(worktreeRoot), "junction"), { recursive: true });
|
|
81
|
+
const next = {
|
|
82
|
+
version: 2,
|
|
83
|
+
baseRefName: current.baseRefName,
|
|
84
|
+
runtime: {
|
|
85
|
+
worktreePort: options.worktreePort,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
writeFileSync(metadataPath, `${JSON.stringify(next, null, 2)}\n`, "utf8");
|
|
89
|
+
}
|
|
90
|
+
export function readJunctionWorktreeMetadata(worktreeRoot) {
|
|
91
|
+
const metadataPath = getJunctionWorktreeMetadataPath(worktreeRoot);
|
|
92
|
+
if (!existsSync(metadataPath)) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const parsed = JSON.parse(readFileSync(metadataPath, "utf8"));
|
|
96
|
+
return JunctionWorktreeMetadataSchema.parse(parsed);
|
|
97
|
+
}
|
|
98
|
+
export function requireJunctionWorktreeBaseRefName(worktreeRoot) {
|
|
99
|
+
const metadataPath = getJunctionWorktreeMetadataPath(worktreeRoot);
|
|
100
|
+
const metadata = readJunctionWorktreeMetadata(worktreeRoot);
|
|
101
|
+
if (!metadata) {
|
|
102
|
+
throw new Error(`Missing Junction worktree base metadata: ${metadataPath}`);
|
|
103
|
+
}
|
|
104
|
+
return metadata.baseRefName;
|
|
105
|
+
}
|
|
106
|
+
export function readJunctionWorktreeRuntimePort(worktreeRoot) {
|
|
107
|
+
const metadata = readJunctionWorktreeMetadata(worktreeRoot);
|
|
108
|
+
if (!metadata) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
if (metadata.version === 2 && metadata.runtime?.worktreePort) {
|
|
112
|
+
return metadata.runtime.worktreePort;
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=worktree-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-metadata.js","sourceRoot":"","sources":["../../../src/utils/worktree-metadata.ts"],"names":[],"mappings":"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"}
|