@pocketcoder/host 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +53 -0
- package/README.md +1106 -0
- package/dist/__tests__/daemon-startup.test.d.ts +2 -0
- package/dist/__tests__/daemon-startup.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-startup.test.js +339 -0
- package/dist/__tests__/daemon-startup.test.js.map +1 -0
- package/dist/__tests__/env.test.d.ts +2 -0
- package/dist/__tests__/env.test.d.ts.map +1 -0
- package/dist/__tests__/env.test.js +44 -0
- package/dist/__tests__/env.test.js.map +1 -0
- package/dist/auth/__tests__/gateway-auth.test.d.ts +2 -0
- package/dist/auth/__tests__/gateway-auth.test.d.ts.map +1 -0
- package/dist/auth/__tests__/gateway-auth.test.js +208 -0
- package/dist/auth/__tests__/gateway-auth.test.js.map +1 -0
- package/dist/auth/__tests__/login-manager.test.d.ts +2 -0
- package/dist/auth/__tests__/login-manager.test.d.ts.map +1 -0
- package/dist/auth/__tests__/login-manager.test.js +160 -0
- package/dist/auth/__tests__/login-manager.test.js.map +1 -0
- package/dist/auth/__tests__/login.test.d.ts +2 -0
- package/dist/auth/__tests__/login.test.d.ts.map +1 -0
- package/dist/auth/__tests__/login.test.js +165 -0
- package/dist/auth/__tests__/login.test.js.map +1 -0
- package/dist/auth/__tests__/manual-flow.test.d.ts +2 -0
- package/dist/auth/__tests__/manual-flow.test.d.ts.map +1 -0
- package/dist/auth/__tests__/manual-flow.test.js +72 -0
- package/dist/auth/__tests__/manual-flow.test.js.map +1 -0
- package/dist/auth/__tests__/oauth-server.test.d.ts +2 -0
- package/dist/auth/__tests__/oauth-server.test.d.ts.map +1 -0
- package/dist/auth/__tests__/oauth-server.test.js +104 -0
- package/dist/auth/__tests__/oauth-server.test.js.map +1 -0
- package/dist/auth/__tests__/token-refresh.test.d.ts +2 -0
- package/dist/auth/__tests__/token-refresh.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-refresh.test.js +205 -0
- package/dist/auth/__tests__/token-refresh.test.js.map +1 -0
- package/dist/auth/__tests__/token-storage.test.d.ts +2 -0
- package/dist/auth/__tests__/token-storage.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-storage.test.js +145 -0
- package/dist/auth/__tests__/token-storage.test.js.map +1 -0
- package/dist/auth/gateway-auth.d.ts +38 -0
- package/dist/auth/gateway-auth.d.ts.map +1 -0
- package/dist/auth/gateway-auth.js +117 -0
- package/dist/auth/gateway-auth.js.map +1 -0
- package/dist/auth/login.d.ts +43 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +180 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/manual-flow.d.ts +16 -0
- package/dist/auth/manual-flow.d.ts.map +1 -0
- package/dist/auth/manual-flow.js +44 -0
- package/dist/auth/manual-flow.js.map +1 -0
- package/dist/auth/oauth-server.d.ts +22 -0
- package/dist/auth/oauth-server.d.ts.map +1 -0
- package/dist/auth/oauth-server.js +165 -0
- package/dist/auth/oauth-server.js.map +1 -0
- package/dist/auth/token-refresh.d.ts +36 -0
- package/dist/auth/token-refresh.d.ts.map +1 -0
- package/dist/auth/token-refresh.js +116 -0
- package/dist/auth/token-refresh.js.map +1 -0
- package/dist/auth/token-storage.d.ts +20 -0
- package/dist/auth/token-storage.d.ts.map +1 -0
- package/dist/auth/token-storage.js +71 -0
- package/dist/auth/token-storage.js.map +1 -0
- package/dist/auth/types.d.ts +12 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-auth.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-auth.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-auth.test.js +135 -0
- package/dist/cli/commands/__tests__/cli-auth.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-autostart.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-autostart.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-autostart.test.js +95 -0
- package/dist/cli/commands/__tests__/cli-autostart.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-daemon.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-daemon.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-daemon.test.js +144 -0
- package/dist/cli/commands/__tests__/cli-daemon.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-logs.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-logs.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-logs.test.js +85 -0
- package/dist/cli/commands/__tests__/cli-logs.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-machine.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-machine.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-machine.test.js +119 -0
- package/dist/cli/commands/__tests__/cli-machine.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-projects.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-projects.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-projects.test.js +246 -0
- package/dist/cli/commands/__tests__/cli-projects.test.js.map +1 -0
- package/dist/cli/commands/__tests__/cli-status.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/cli-status.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/cli-status.test.js +153 -0
- package/dist/cli/commands/__tests__/cli-status.test.js.map +1 -0
- package/dist/cli/commands/add.d.ts +7 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +37 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/autostart.d.ts +16 -0
- package/dist/cli/commands/autostart.d.ts.map +1 -0
- package/dist/cli/commands/autostart.js +47 -0
- package/dist/cli/commands/autostart.js.map +1 -0
- package/dist/cli/commands/login.d.ts +6 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +19 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +7 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +50 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +9 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +113 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/machine.d.ts +8 -0
- package/dist/cli/commands/machine.d.ts.map +1 -0
- package/dist/cli/commands/machine.js +78 -0
- package/dist/cli/commands/machine.js.map +1 -0
- package/dist/cli/commands/projects.d.ts +6 -0
- package/dist/cli/commands/projects.d.ts.map +1 -0
- package/dist/cli/commands/projects.js +28 -0
- package/dist/cli/commands/projects.js.map +1 -0
- package/dist/cli/commands/remove.d.ts +7 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/remove.js +31 -0
- package/dist/cli/commands/remove.js.map +1 -0
- package/dist/cli/commands/start.d.ts +14 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +67 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +68 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +6 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +39 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/notify-project-sync.d.ts +11 -0
- package/dist/cli/notify-project-sync.d.ts.map +1 -0
- package/dist/cli/notify-project-sync.js +45 -0
- package/dist/cli/notify-project-sync.js.map +1 -0
- package/dist/cli/notify-re-register.d.ts +7 -0
- package/dist/cli/notify-re-register.d.ts.map +1 -0
- package/dist/cli/notify-re-register.js +34 -0
- package/dist/cli/notify-re-register.js.map +1 -0
- package/dist/cli/program.d.ts +6 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +66 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/config/__tests__/index.test.d.ts +2 -0
- package/dist/config/__tests__/index.test.d.ts.map +1 -0
- package/dist/config/__tests__/index.test.js +146 -0
- package/dist/config/__tests__/index.test.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +77 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +26 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +54 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/control-plane/__tests__/server.test.d.ts +2 -0
- package/dist/control-plane/__tests__/server.test.d.ts.map +1 -0
- package/dist/control-plane/__tests__/server.test.js +64 -0
- package/dist/control-plane/__tests__/server.test.js.map +1 -0
- package/dist/control-plane/routes/__tests__/status.test.d.ts +2 -0
- package/dist/control-plane/routes/__tests__/status.test.d.ts.map +1 -0
- package/dist/control-plane/routes/__tests__/status.test.js +152 -0
- package/dist/control-plane/routes/__tests__/status.test.js.map +1 -0
- package/dist/control-plane/routes/__tests__/stop.test.d.ts +2 -0
- package/dist/control-plane/routes/__tests__/stop.test.d.ts.map +1 -0
- package/dist/control-plane/routes/__tests__/stop.test.js +92 -0
- package/dist/control-plane/routes/__tests__/stop.test.js.map +1 -0
- package/dist/control-plane/routes/health.d.ts +3 -0
- package/dist/control-plane/routes/health.d.ts.map +1 -0
- package/dist/control-plane/routes/health.js +14 -0
- package/dist/control-plane/routes/health.js.map +1 -0
- package/dist/control-plane/routes/machine-label.d.ts +8 -0
- package/dist/control-plane/routes/machine-label.d.ts.map +1 -0
- package/dist/control-plane/routes/machine-label.js +32 -0
- package/dist/control-plane/routes/machine-label.js.map +1 -0
- package/dist/control-plane/routes/project-sync.d.ts +12 -0
- package/dist/control-plane/routes/project-sync.d.ts.map +1 -0
- package/dist/control-plane/routes/project-sync.js +63 -0
- package/dist/control-plane/routes/project-sync.js.map +1 -0
- package/dist/control-plane/routes/re-register.d.ts +9 -0
- package/dist/control-plane/routes/re-register.d.ts.map +1 -0
- package/dist/control-plane/routes/re-register.js +56 -0
- package/dist/control-plane/routes/re-register.js.map +1 -0
- package/dist/control-plane/routes/status.d.ts +49 -0
- package/dist/control-plane/routes/status.d.ts.map +1 -0
- package/dist/control-plane/routes/status.js +55 -0
- package/dist/control-plane/routes/status.js.map +1 -0
- package/dist/control-plane/routes/stop.d.ts +7 -0
- package/dist/control-plane/routes/stop.d.ts.map +1 -0
- package/dist/control-plane/routes/stop.js +25 -0
- package/dist/control-plane/routes/stop.js.map +1 -0
- package/dist/control-plane/server.d.ts +10 -0
- package/dist/control-plane/server.d.ts.map +1 -0
- package/dist/control-plane/server.js +39 -0
- package/dist/control-plane/server.js.map +1 -0
- package/dist/daemon.d.ts +23 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +533 -0
- package/dist/daemon.js.map +1 -0
- package/dist/db/__tests__/cleanup.test.d.ts +2 -0
- package/dist/db/__tests__/cleanup.test.d.ts.map +1 -0
- package/dist/db/__tests__/cleanup.test.js +153 -0
- package/dist/db/__tests__/cleanup.test.js.map +1 -0
- package/dist/db/__tests__/database.test.d.ts +2 -0
- package/dist/db/__tests__/database.test.d.ts.map +1 -0
- package/dist/db/__tests__/database.test.js +93 -0
- package/dist/db/__tests__/database.test.js.map +1 -0
- package/dist/db/__tests__/migrator.test.d.ts +2 -0
- package/dist/db/__tests__/migrator.test.d.ts.map +1 -0
- package/dist/db/__tests__/migrator.test.js +146 -0
- package/dist/db/__tests__/migrator.test.js.map +1 -0
- package/dist/db/cleanup.d.ts +20 -0
- package/dist/db/cleanup.d.ts.map +1 -0
- package/dist/db/cleanup.js +67 -0
- package/dist/db/cleanup.js.map +1 -0
- package/dist/db/database.d.ts +18 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +41 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/migrations.d.ts +7 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +32 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/migrator.d.ts +26 -0
- package/dist/db/migrator.d.ts.map +1 -0
- package/dist/db/migrator.js +105 -0
- package/dist/db/migrator.js.map +1 -0
- package/dist/db/repositories/__tests__/command-runs.test.d.ts +2 -0
- package/dist/db/repositories/__tests__/command-runs.test.d.ts.map +1 -0
- package/dist/db/repositories/__tests__/command-runs.test.js +90 -0
- package/dist/db/repositories/__tests__/command-runs.test.js.map +1 -0
- package/dist/db/repositories/__tests__/fs-state.test.d.ts +2 -0
- package/dist/db/repositories/__tests__/fs-state.test.d.ts.map +1 -0
- package/dist/db/repositories/__tests__/fs-state.test.js +77 -0
- package/dist/db/repositories/__tests__/fs-state.test.js.map +1 -0
- package/dist/db/repositories/__tests__/projects.test.d.ts +2 -0
- package/dist/db/repositories/__tests__/projects.test.d.ts.map +1 -0
- package/dist/db/repositories/__tests__/projects.test.js +84 -0
- package/dist/db/repositories/__tests__/projects.test.js.map +1 -0
- package/dist/db/repositories/__tests__/terminal-sessions.test.d.ts +2 -0
- package/dist/db/repositories/__tests__/terminal-sessions.test.d.ts.map +1 -0
- package/dist/db/repositories/__tests__/terminal-sessions.test.js +93 -0
- package/dist/db/repositories/__tests__/terminal-sessions.test.js.map +1 -0
- package/dist/db/repositories/command-runs.d.ts +28 -0
- package/dist/db/repositories/command-runs.d.ts.map +1 -0
- package/dist/db/repositories/command-runs.js +42 -0
- package/dist/db/repositories/command-runs.js.map +1 -0
- package/dist/db/repositories/fs-state.d.ts +28 -0
- package/dist/db/repositories/fs-state.d.ts.map +1 -0
- package/dist/db/repositories/fs-state.js +48 -0
- package/dist/db/repositories/fs-state.js.map +1 -0
- package/dist/db/repositories/projects.d.ts +33 -0
- package/dist/db/repositories/projects.d.ts.map +1 -0
- package/dist/db/repositories/projects.js +50 -0
- package/dist/db/repositories/projects.js.map +1 -0
- package/dist/db/repositories/terminal-sessions.d.ts +28 -0
- package/dist/db/repositories/terminal-sessions.d.ts.map +1 -0
- package/dist/db/repositories/terminal-sessions.js +47 -0
- package/dist/db/repositories/terminal-sessions.js.map +1 -0
- package/dist/db/schema.d.ts +6 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +49 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/env.d.ts +15 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +23 -0
- package/dist/env.js.map +1 -0
- package/dist/errors/__tests__/index.test.d.ts +2 -0
- package/dist/errors/__tests__/index.test.d.ts.map +1 -0
- package/dist/errors/__tests__/index.test.js +105 -0
- package/dist/errors/__tests__/index.test.js.map +1 -0
- package/dist/errors/index.d.ts +36 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +54 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/gateway/__tests__/message-router.test.d.ts +2 -0
- package/dist/gateway/__tests__/message-router.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/message-router.test.js +225 -0
- package/dist/gateway/__tests__/message-router.test.js.map +1 -0
- package/dist/gateway/__tests__/reconnection.test.d.ts +2 -0
- package/dist/gateway/__tests__/reconnection.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/reconnection.test.js +244 -0
- package/dist/gateway/__tests__/reconnection.test.js.map +1 -0
- package/dist/gateway/__tests__/websocket-client.test.d.ts +2 -0
- package/dist/gateway/__tests__/websocket-client.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/websocket-client.test.js +249 -0
- package/dist/gateway/__tests__/websocket-client.test.js.map +1 -0
- package/dist/gateway/gateway-request.d.ts +17 -0
- package/dist/gateway/gateway-request.d.ts.map +1 -0
- package/dist/gateway/gateway-request.js +39 -0
- package/dist/gateway/gateway-request.js.map +1 -0
- package/dist/gateway/message-router.d.ts +31 -0
- package/dist/gateway/message-router.d.ts.map +1 -0
- package/dist/gateway/message-router.js +91 -0
- package/dist/gateway/message-router.js.map +1 -0
- package/dist/gateway/messages/__tests__/daemon-register.test.d.ts +2 -0
- package/dist/gateway/messages/__tests__/daemon-register.test.d.ts.map +1 -0
- package/dist/gateway/messages/__tests__/daemon-register.test.js +113 -0
- package/dist/gateway/messages/__tests__/daemon-register.test.js.map +1 -0
- package/dist/gateway/messages/__tests__/project-sync.test.d.ts +2 -0
- package/dist/gateway/messages/__tests__/project-sync.test.d.ts.map +1 -0
- package/dist/gateway/messages/__tests__/project-sync.test.js +92 -0
- package/dist/gateway/messages/__tests__/project-sync.test.js.map +1 -0
- package/dist/gateway/messages/daemon-register.d.ts +13 -0
- package/dist/gateway/messages/daemon-register.d.ts.map +1 -0
- package/dist/gateway/messages/daemon-register.js +39 -0
- package/dist/gateway/messages/daemon-register.js.map +1 -0
- package/dist/gateway/messages/project-sync.d.ts +16 -0
- package/dist/gateway/messages/project-sync.d.ts.map +1 -0
- package/dist/gateway/messages/project-sync.js +42 -0
- package/dist/gateway/messages/project-sync.js.map +1 -0
- package/dist/gateway/types.d.ts +41 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +5 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/gateway/websocket-client.d.ts +55 -0
- package/dist/gateway/websocket-client.d.ts.map +1 -0
- package/dist/gateway/websocket-client.js +185 -0
- package/dist/gateway/websocket-client.js.map +1 -0
- package/dist/handlers/__tests__/agent-cancel.test.d.ts +2 -0
- package/dist/handlers/__tests__/agent-cancel.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/agent-cancel.test.js +152 -0
- package/dist/handlers/__tests__/agent-cancel.test.js.map +1 -0
- package/dist/handlers/__tests__/agent-message.test.d.ts +2 -0
- package/dist/handlers/__tests__/agent-message.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/agent-message.test.js +270 -0
- package/dist/handlers/__tests__/agent-message.test.js.map +1 -0
- package/dist/handlers/__tests__/agent-session-new.test.d.ts +2 -0
- package/dist/handlers/__tests__/agent-session-new.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/agent-session-new.test.js +185 -0
- package/dist/handlers/__tests__/agent-session-new.test.js.map +1 -0
- package/dist/handlers/__tests__/agent-sessions-list.test.d.ts +2 -0
- package/dist/handlers/__tests__/agent-sessions-list.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/agent-sessions-list.test.js +171 -0
- package/dist/handlers/__tests__/agent-sessions-list.test.js.map +1 -0
- package/dist/handlers/__tests__/command-cancel.test.d.ts +2 -0
- package/dist/handlers/__tests__/command-cancel.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/command-cancel.test.js +121 -0
- package/dist/handlers/__tests__/command-cancel.test.js.map +1 -0
- package/dist/handlers/__tests__/command-exec.test.d.ts +2 -0
- package/dist/handlers/__tests__/command-exec.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/command-exec.test.js +155 -0
- package/dist/handlers/__tests__/command-exec.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-create.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-create.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-create.test.js +147 -0
- package/dist/handlers/__tests__/fs-create.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-delete.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-delete.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-delete.test.js +153 -0
- package/dist/handlers/__tests__/fs-delete.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-list.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-list.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-list.test.js +203 -0
- package/dist/handlers/__tests__/fs-list.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-read.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-read.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-read.test.js +178 -0
- package/dist/handlers/__tests__/fs-read.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-replace.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-replace.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-replace.test.js +201 -0
- package/dist/handlers/__tests__/fs-replace.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-search.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-search.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-search.test.js +195 -0
- package/dist/handlers/__tests__/fs-search.test.js.map +1 -0
- package/dist/handlers/__tests__/fs-write.test.d.ts +2 -0
- package/dist/handlers/__tests__/fs-write.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/fs-write.test.js +173 -0
- package/dist/handlers/__tests__/fs-write.test.js.map +1 -0
- package/dist/handlers/__tests__/git-branch-create.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-branch-create.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-branch-create.test.js +158 -0
- package/dist/handlers/__tests__/git-branch-create.test.js.map +1 -0
- package/dist/handlers/__tests__/git-branches.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-branches.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-branches.test.js +184 -0
- package/dist/handlers/__tests__/git-branches.test.js.map +1 -0
- package/dist/handlers/__tests__/git-checkout.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-checkout.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-checkout.test.js +126 -0
- package/dist/handlers/__tests__/git-checkout.test.js.map +1 -0
- package/dist/handlers/__tests__/git-commit.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-commit.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-commit.test.js +131 -0
- package/dist/handlers/__tests__/git-commit.test.js.map +1 -0
- package/dist/handlers/__tests__/git-diff.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-diff.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-diff.test.js +185 -0
- package/dist/handlers/__tests__/git-diff.test.js.map +1 -0
- package/dist/handlers/__tests__/git-discard.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-discard.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-discard.test.js +154 -0
- package/dist/handlers/__tests__/git-discard.test.js.map +1 -0
- package/dist/handlers/__tests__/git-file-base.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-file-base.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-file-base.test.js +148 -0
- package/dist/handlers/__tests__/git-file-base.test.js.map +1 -0
- package/dist/handlers/__tests__/git-pull.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-pull.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-pull.test.js +180 -0
- package/dist/handlers/__tests__/git-pull.test.js.map +1 -0
- package/dist/handlers/__tests__/git-push.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-push.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-push.test.js +177 -0
- package/dist/handlers/__tests__/git-push.test.js.map +1 -0
- package/dist/handlers/__tests__/git-stage.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-stage.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-stage.test.js +165 -0
- package/dist/handlers/__tests__/git-stage.test.js.map +1 -0
- package/dist/handlers/__tests__/git-status.test.d.ts +2 -0
- package/dist/handlers/__tests__/git-status.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/git-status.test.js +182 -0
- package/dist/handlers/__tests__/git-status.test.js.map +1 -0
- package/dist/handlers/__tests__/machines-list.test.d.ts +2 -0
- package/dist/handlers/__tests__/machines-list.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/machines-list.test.js +164 -0
- package/dist/handlers/__tests__/machines-list.test.js.map +1 -0
- package/dist/handlers/__tests__/project-create.test.d.ts +2 -0
- package/dist/handlers/__tests__/project-create.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/project-create.test.js +166 -0
- package/dist/handlers/__tests__/project-create.test.js.map +1 -0
- package/dist/handlers/__tests__/project-delete.test.d.ts +2 -0
- package/dist/handlers/__tests__/project-delete.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/project-delete.test.js +150 -0
- package/dist/handlers/__tests__/project-delete.test.js.map +1 -0
- package/dist/handlers/__tests__/projects-list.test.d.ts +2 -0
- package/dist/handlers/__tests__/projects-list.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/projects-list.test.js +145 -0
- package/dist/handlers/__tests__/projects-list.test.js.map +1 -0
- package/dist/handlers/__tests__/terminal-create.test.d.ts +2 -0
- package/dist/handlers/__tests__/terminal-create.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/terminal-create.test.js +156 -0
- package/dist/handlers/__tests__/terminal-create.test.js.map +1 -0
- package/dist/handlers/__tests__/terminal-kill.test.d.ts +2 -0
- package/dist/handlers/__tests__/terminal-kill.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/terminal-kill.test.js +125 -0
- package/dist/handlers/__tests__/terminal-kill.test.js.map +1 -0
- package/dist/handlers/__tests__/terminal-resize.test.d.ts +2 -0
- package/dist/handlers/__tests__/terminal-resize.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/terminal-resize.test.js +128 -0
- package/dist/handlers/__tests__/terminal-resize.test.js.map +1 -0
- package/dist/handlers/__tests__/terminal-stdin.test.d.ts +2 -0
- package/dist/handlers/__tests__/terminal-stdin.test.d.ts.map +1 -0
- package/dist/handlers/__tests__/terminal-stdin.test.js +128 -0
- package/dist/handlers/__tests__/terminal-stdin.test.js.map +1 -0
- package/dist/handlers/agent-cancel.d.ts +11 -0
- package/dist/handlers/agent-cancel.d.ts.map +1 -0
- package/dist/handlers/agent-cancel.js +67 -0
- package/dist/handlers/agent-cancel.js.map +1 -0
- package/dist/handlers/agent-message.d.ts +13 -0
- package/dist/handlers/agent-message.d.ts.map +1 -0
- package/dist/handlers/agent-message.js +119 -0
- package/dist/handlers/agent-message.js.map +1 -0
- package/dist/handlers/agent-prompt-response.d.ts +13 -0
- package/dist/handlers/agent-prompt-response.d.ts.map +1 -0
- package/dist/handlers/agent-prompt-response.js +26 -0
- package/dist/handlers/agent-prompt-response.js.map +1 -0
- package/dist/handlers/agent-session-new.d.ts +13 -0
- package/dist/handlers/agent-session-new.d.ts.map +1 -0
- package/dist/handlers/agent-session-new.js +106 -0
- package/dist/handlers/agent-session-new.js.map +1 -0
- package/dist/handlers/agent-sessions-list.d.ts +10 -0
- package/dist/handlers/agent-sessions-list.d.ts.map +1 -0
- package/dist/handlers/agent-sessions-list.js +78 -0
- package/dist/handlers/agent-sessions-list.js.map +1 -0
- package/dist/handlers/command-cancel.d.ts +9 -0
- package/dist/handlers/command-cancel.d.ts.map +1 -0
- package/dist/handlers/command-cancel.js +32 -0
- package/dist/handlers/command-cancel.js.map +1 -0
- package/dist/handlers/command-exec.d.ts +9 -0
- package/dist/handlers/command-exec.d.ts.map +1 -0
- package/dist/handlers/command-exec.js +74 -0
- package/dist/handlers/command-exec.js.map +1 -0
- package/dist/handlers/fs/__tests__/limits.test.d.ts +2 -0
- package/dist/handlers/fs/__tests__/limits.test.d.ts.map +1 -0
- package/dist/handlers/fs/__tests__/limits.test.js +154 -0
- package/dist/handlers/fs/__tests__/limits.test.js.map +1 -0
- package/dist/handlers/fs/limits.d.ts +41 -0
- package/dist/handlers/fs/limits.d.ts.map +1 -0
- package/dist/handlers/fs/limits.js +68 -0
- package/dist/handlers/fs/limits.js.map +1 -0
- package/dist/handlers/fs-create.d.ts +8 -0
- package/dist/handlers/fs-create.d.ts.map +1 -0
- package/dist/handlers/fs-create.js +98 -0
- package/dist/handlers/fs-create.js.map +1 -0
- package/dist/handlers/fs-delete.d.ts +8 -0
- package/dist/handlers/fs-delete.d.ts.map +1 -0
- package/dist/handlers/fs-delete.js +95 -0
- package/dist/handlers/fs-delete.js.map +1 -0
- package/dist/handlers/fs-list.d.ts +7 -0
- package/dist/handlers/fs-list.d.ts.map +1 -0
- package/dist/handlers/fs-list.js +70 -0
- package/dist/handlers/fs-list.js.map +1 -0
- package/dist/handlers/fs-read.d.ts +7 -0
- package/dist/handlers/fs-read.d.ts.map +1 -0
- package/dist/handlers/fs-read.js +98 -0
- package/dist/handlers/fs-read.js.map +1 -0
- package/dist/handlers/fs-replace.d.ts +8 -0
- package/dist/handlers/fs-replace.d.ts.map +1 -0
- package/dist/handlers/fs-replace.js +178 -0
- package/dist/handlers/fs-replace.js.map +1 -0
- package/dist/handlers/fs-search.d.ts +10 -0
- package/dist/handlers/fs-search.d.ts.map +1 -0
- package/dist/handlers/fs-search.js +302 -0
- package/dist/handlers/fs-search.js.map +1 -0
- package/dist/handlers/fs-write.d.ts +7 -0
- package/dist/handlers/fs-write.d.ts.map +1 -0
- package/dist/handlers/fs-write.js +74 -0
- package/dist/handlers/fs-write.js.map +1 -0
- package/dist/handlers/git/__tests__/credentials.test.d.ts +2 -0
- package/dist/handlers/git/__tests__/credentials.test.d.ts.map +1 -0
- package/dist/handlers/git/__tests__/credentials.test.js +145 -0
- package/dist/handlers/git/__tests__/credentials.test.js.map +1 -0
- package/dist/handlers/git/__tests__/error-parser.test.d.ts +2 -0
- package/dist/handlers/git/__tests__/error-parser.test.d.ts.map +1 -0
- package/dist/handlers/git/__tests__/error-parser.test.js +85 -0
- package/dist/handlers/git/__tests__/error-parser.test.js.map +1 -0
- package/dist/handlers/git/credentials.d.ts +55 -0
- package/dist/handlers/git/credentials.d.ts.map +1 -0
- package/dist/handlers/git/credentials.js +93 -0
- package/dist/handlers/git/credentials.js.map +1 -0
- package/dist/handlers/git/error-parser.d.ts +27 -0
- package/dist/handlers/git/error-parser.d.ts.map +1 -0
- package/dist/handlers/git/error-parser.js +98 -0
- package/dist/handlers/git/error-parser.js.map +1 -0
- package/dist/handlers/git-branch-create.d.ts +7 -0
- package/dist/handlers/git-branch-create.d.ts.map +1 -0
- package/dist/handlers/git-branch-create.js +60 -0
- package/dist/handlers/git-branch-create.js.map +1 -0
- package/dist/handlers/git-branches.d.ts +7 -0
- package/dist/handlers/git-branches.d.ts.map +1 -0
- package/dist/handlers/git-branches.js +60 -0
- package/dist/handlers/git-branches.js.map +1 -0
- package/dist/handlers/git-checkout.d.ts +7 -0
- package/dist/handlers/git-checkout.d.ts.map +1 -0
- package/dist/handlers/git-checkout.js +59 -0
- package/dist/handlers/git-checkout.js.map +1 -0
- package/dist/handlers/git-commit.d.ts +7 -0
- package/dist/handlers/git-commit.d.ts.map +1 -0
- package/dist/handlers/git-commit.js +59 -0
- package/dist/handlers/git-commit.js.map +1 -0
- package/dist/handlers/git-diff.d.ts +7 -0
- package/dist/handlers/git-diff.d.ts.map +1 -0
- package/dist/handlers/git-diff.js +56 -0
- package/dist/handlers/git-diff.js.map +1 -0
- package/dist/handlers/git-discard.d.ts +7 -0
- package/dist/handlers/git-discard.d.ts.map +1 -0
- package/dist/handlers/git-discard.js +56 -0
- package/dist/handlers/git-discard.js.map +1 -0
- package/dist/handlers/git-file-base.d.ts +7 -0
- package/dist/handlers/git-file-base.d.ts.map +1 -0
- package/dist/handlers/git-file-base.js +61 -0
- package/dist/handlers/git-file-base.js.map +1 -0
- package/dist/handlers/git-pull.d.ts +8 -0
- package/dist/handlers/git-pull.d.ts.map +1 -0
- package/dist/handlers/git-pull.js +69 -0
- package/dist/handlers/git-pull.js.map +1 -0
- package/dist/handlers/git-push.d.ts +7 -0
- package/dist/handlers/git-push.d.ts.map +1 -0
- package/dist/handlers/git-push.js +67 -0
- package/dist/handlers/git-push.js.map +1 -0
- package/dist/handlers/git-stage.d.ts +7 -0
- package/dist/handlers/git-stage.d.ts.map +1 -0
- package/dist/handlers/git-stage.js +56 -0
- package/dist/handlers/git-stage.js.map +1 -0
- package/dist/handlers/git-status.d.ts +7 -0
- package/dist/handlers/git-status.d.ts.map +1 -0
- package/dist/handlers/git-status.js +63 -0
- package/dist/handlers/git-status.js.map +1 -0
- package/dist/handlers/git-unstage.d.ts +7 -0
- package/dist/handlers/git-unstage.d.ts.map +1 -0
- package/dist/handlers/git-unstage.js +56 -0
- package/dist/handlers/git-unstage.js.map +1 -0
- package/dist/handlers/machines-list.d.ts +14 -0
- package/dist/handlers/machines-list.d.ts.map +1 -0
- package/dist/handlers/machines-list.js +53 -0
- package/dist/handlers/machines-list.js.map +1 -0
- package/dist/handlers/project-create.d.ts +18 -0
- package/dist/handlers/project-create.d.ts.map +1 -0
- package/dist/handlers/project-create.js +100 -0
- package/dist/handlers/project-create.js.map +1 -0
- package/dist/handlers/project-delete.d.ts +19 -0
- package/dist/handlers/project-delete.d.ts.map +1 -0
- package/dist/handlers/project-delete.js +89 -0
- package/dist/handlers/project-delete.js.map +1 -0
- package/dist/handlers/projects-list.d.ts +7 -0
- package/dist/handlers/projects-list.d.ts.map +1 -0
- package/dist/handlers/projects-list.js +42 -0
- package/dist/handlers/projects-list.js.map +1 -0
- package/dist/handlers/terminal-create.d.ts +8 -0
- package/dist/handlers/terminal-create.d.ts.map +1 -0
- package/dist/handlers/terminal-create.js +50 -0
- package/dist/handlers/terminal-create.js.map +1 -0
- package/dist/handlers/terminal-kill.d.ts +10 -0
- package/dist/handlers/terminal-kill.d.ts.map +1 -0
- package/dist/handlers/terminal-kill.js +32 -0
- package/dist/handlers/terminal-kill.js.map +1 -0
- package/dist/handlers/terminal-resize.d.ts +8 -0
- package/dist/handlers/terminal-resize.d.ts.map +1 -0
- package/dist/handlers/terminal-resize.js +29 -0
- package/dist/handlers/terminal-resize.js.map +1 -0
- package/dist/handlers/terminal-stdin.d.ts +8 -0
- package/dist/handlers/terminal-stdin.d.ts.map +1 -0
- package/dist/handlers/terminal-stdin.js +29 -0
- package/dist/handlers/terminal-stdin.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/opencode/__tests__/check-installed.test.d.ts +2 -0
- package/dist/opencode/__tests__/check-installed.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/check-installed.test.js +68 -0
- package/dist/opencode/__tests__/check-installed.test.js.map +1 -0
- package/dist/opencode/__tests__/detect.test.d.ts +2 -0
- package/dist/opencode/__tests__/detect.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/detect.test.js +147 -0
- package/dist/opencode/__tests__/detect.test.js.map +1 -0
- package/dist/opencode/__tests__/health-check.test.d.ts +2 -0
- package/dist/opencode/__tests__/health-check.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/health-check.test.js +143 -0
- package/dist/opencode/__tests__/health-check.test.js.map +1 -0
- package/dist/opencode/__tests__/permission-reply.test.d.ts +2 -0
- package/dist/opencode/__tests__/permission-reply.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/permission-reply.test.js +140 -0
- package/dist/opencode/__tests__/permission-reply.test.js.map +1 -0
- package/dist/opencode/__tests__/proxy.test.d.ts +2 -0
- package/dist/opencode/__tests__/proxy.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/proxy.test.js +179 -0
- package/dist/opencode/__tests__/proxy.test.js.map +1 -0
- package/dist/opencode/__tests__/session-filter.test.d.ts +2 -0
- package/dist/opencode/__tests__/session-filter.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/session-filter.test.js +117 -0
- package/dist/opencode/__tests__/session-filter.test.js.map +1 -0
- package/dist/opencode/__tests__/spawn.test.d.ts +2 -0
- package/dist/opencode/__tests__/spawn.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/spawn.test.js +167 -0
- package/dist/opencode/__tests__/spawn.test.js.map +1 -0
- package/dist/opencode/__tests__/sse.test.d.ts +2 -0
- package/dist/opencode/__tests__/sse.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/sse.test.js +245 -0
- package/dist/opencode/__tests__/sse.test.js.map +1 -0
- package/dist/opencode/__tests__/supervisor.test.d.ts +2 -0
- package/dist/opencode/__tests__/supervisor.test.d.ts.map +1 -0
- package/dist/opencode/__tests__/supervisor.test.js +206 -0
- package/dist/opencode/__tests__/supervisor.test.js.map +1 -0
- package/dist/opencode/check-installed.d.ts +12 -0
- package/dist/opencode/check-installed.d.ts.map +1 -0
- package/dist/opencode/check-installed.js +25 -0
- package/dist/opencode/check-installed.js.map +1 -0
- package/dist/opencode/detect.d.ts +16 -0
- package/dist/opencode/detect.d.ts.map +1 -0
- package/dist/opencode/detect.js +102 -0
- package/dist/opencode/detect.js.map +1 -0
- package/dist/opencode/health-check.d.ts +31 -0
- package/dist/opencode/health-check.d.ts.map +1 -0
- package/dist/opencode/health-check.js +97 -0
- package/dist/opencode/health-check.js.map +1 -0
- package/dist/opencode/permission-reply.d.ts +14 -0
- package/dist/opencode/permission-reply.d.ts.map +1 -0
- package/dist/opencode/permission-reply.js +70 -0
- package/dist/opencode/permission-reply.js.map +1 -0
- package/dist/opencode/proxy.d.ts +45 -0
- package/dist/opencode/proxy.d.ts.map +1 -0
- package/dist/opencode/proxy.js +99 -0
- package/dist/opencode/proxy.js.map +1 -0
- package/dist/opencode/session-filter.d.ts +26 -0
- package/dist/opencode/session-filter.d.ts.map +1 -0
- package/dist/opencode/session-filter.js +20 -0
- package/dist/opencode/session-filter.js.map +1 -0
- package/dist/opencode/spawn.d.ts +24 -0
- package/dist/opencode/spawn.d.ts.map +1 -0
- package/dist/opencode/spawn.js +143 -0
- package/dist/opencode/spawn.js.map +1 -0
- package/dist/opencode/sse.d.ts +42 -0
- package/dist/opencode/sse.d.ts.map +1 -0
- package/dist/opencode/sse.js +250 -0
- package/dist/opencode/sse.js.map +1 -0
- package/dist/opencode/supervisor.d.ts +43 -0
- package/dist/opencode/supervisor.d.ts.map +1 -0
- package/dist/opencode/supervisor.js +153 -0
- package/dist/opencode/supervisor.js.map +1 -0
- package/dist/services/__tests__/autostart.test.d.ts +2 -0
- package/dist/services/__tests__/autostart.test.d.ts.map +1 -0
- package/dist/services/__tests__/autostart.test.js +176 -0
- package/dist/services/__tests__/autostart.test.js.map +1 -0
- package/dist/services/__tests__/file-watcher.test.d.ts +2 -0
- package/dist/services/__tests__/file-watcher.test.d.ts.map +1 -0
- package/dist/services/__tests__/file-watcher.test.js +265 -0
- package/dist/services/__tests__/file-watcher.test.js.map +1 -0
- package/dist/services/__tests__/git-pty.test.d.ts +2 -0
- package/dist/services/__tests__/git-pty.test.d.ts.map +1 -0
- package/dist/services/__tests__/git-pty.test.js +137 -0
- package/dist/services/__tests__/git-pty.test.js.map +1 -0
- package/dist/services/__tests__/message-queue.test.d.ts +2 -0
- package/dist/services/__tests__/message-queue.test.d.ts.map +1 -0
- package/dist/services/__tests__/message-queue.test.js +203 -0
- package/dist/services/__tests__/message-queue.test.js.map +1 -0
- package/dist/services/__tests__/queue-overflow.test.d.ts +2 -0
- package/dist/services/__tests__/queue-overflow.test.d.ts.map +1 -0
- package/dist/services/__tests__/queue-overflow.test.js +115 -0
- package/dist/services/__tests__/queue-overflow.test.js.map +1 -0
- package/dist/services/__tests__/shutdown.test.d.ts +2 -0
- package/dist/services/__tests__/shutdown.test.d.ts.map +1 -0
- package/dist/services/__tests__/shutdown.test.js +181 -0
- package/dist/services/__tests__/shutdown.test.js.map +1 -0
- package/dist/services/__tests__/terminal-exit.test.d.ts +2 -0
- package/dist/services/__tests__/terminal-exit.test.d.ts.map +1 -0
- package/dist/services/__tests__/terminal-exit.test.js +150 -0
- package/dist/services/__tests__/terminal-exit.test.js.map +1 -0
- package/dist/services/__tests__/terminal-stdout.test.d.ts +2 -0
- package/dist/services/__tests__/terminal-stdout.test.d.ts.map +1 -0
- package/dist/services/__tests__/terminal-stdout.test.js +160 -0
- package/dist/services/__tests__/terminal-stdout.test.js.map +1 -0
- package/dist/services/autostart.d.ts +42 -0
- package/dist/services/autostart.d.ts.map +1 -0
- package/dist/services/autostart.js +198 -0
- package/dist/services/autostart.js.map +1 -0
- package/dist/services/capabilities.d.ts +18 -0
- package/dist/services/capabilities.d.ts.map +1 -0
- package/dist/services/capabilities.js +38 -0
- package/dist/services/capabilities.js.map +1 -0
- package/dist/services/command-runner.d.ts +46 -0
- package/dist/services/command-runner.d.ts.map +1 -0
- package/dist/services/command-runner.js +151 -0
- package/dist/services/command-runner.js.map +1 -0
- package/dist/services/file-watcher.d.ts +35 -0
- package/dist/services/file-watcher.d.ts.map +1 -0
- package/dist/services/file-watcher.js +133 -0
- package/dist/services/file-watcher.js.map +1 -0
- package/dist/services/filesystem.d.ts +68 -0
- package/dist/services/filesystem.d.ts.map +1 -0
- package/dist/services/filesystem.js +249 -0
- package/dist/services/filesystem.js.map +1 -0
- package/dist/services/git.d.ts +149 -0
- package/dist/services/git.d.ts.map +1 -0
- package/dist/services/git.js +589 -0
- package/dist/services/git.js.map +1 -0
- package/dist/services/message-queue.d.ts +58 -0
- package/dist/services/message-queue.d.ts.map +1 -0
- package/dist/services/message-queue.js +118 -0
- package/dist/services/message-queue.js.map +1 -0
- package/dist/services/shutdown.d.ts +40 -0
- package/dist/services/shutdown.d.ts.map +1 -0
- package/dist/services/shutdown.js +144 -0
- package/dist/services/shutdown.js.map +1 -0
- package/dist/services/terminal-manager.d.ts +43 -0
- package/dist/services/terminal-manager.d.ts.map +1 -0
- package/dist/services/terminal-manager.js +118 -0
- package/dist/services/terminal-manager.js.map +1 -0
- package/dist/utils/__tests__/config.test.d.ts +2 -0
- package/dist/utils/__tests__/config.test.d.ts.map +1 -0
- package/dist/utils/__tests__/config.test.js +67 -0
- package/dist/utils/__tests__/config.test.js.map +1 -0
- package/dist/utils/__tests__/diff.test.d.ts +2 -0
- package/dist/utils/__tests__/diff.test.d.ts.map +1 -0
- package/dist/utils/__tests__/diff.test.js +40 -0
- package/dist/utils/__tests__/diff.test.js.map +1 -0
- package/dist/utils/__tests__/filename-validation.test.d.ts +2 -0
- package/dist/utils/__tests__/filename-validation.test.d.ts.map +1 -0
- package/dist/utils/__tests__/filename-validation.test.js +114 -0
- package/dist/utils/__tests__/filename-validation.test.js.map +1 -0
- package/dist/utils/__tests__/logger.test.d.ts +2 -0
- package/dist/utils/__tests__/logger.test.d.ts.map +1 -0
- package/dist/utils/__tests__/logger.test.js +254 -0
- package/dist/utils/__tests__/logger.test.js.map +1 -0
- package/dist/utils/__tests__/machine-key.test.d.ts +2 -0
- package/dist/utils/__tests__/machine-key.test.d.ts.map +1 -0
- package/dist/utils/__tests__/machine-key.test.js +123 -0
- package/dist/utils/__tests__/machine-key.test.js.map +1 -0
- package/dist/utils/__tests__/path-sandbox.test.d.ts +2 -0
- package/dist/utils/__tests__/path-sandbox.test.d.ts.map +1 -0
- package/dist/utils/__tests__/path-sandbox.test.js +97 -0
- package/dist/utils/__tests__/path-sandbox.test.js.map +1 -0
- package/dist/utils/__tests__/paths.test.d.ts +2 -0
- package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
- package/dist/utils/__tests__/paths.test.js +87 -0
- package/dist/utils/__tests__/paths.test.js.map +1 -0
- package/dist/utils/__tests__/pid.test.d.ts +2 -0
- package/dist/utils/__tests__/pid.test.d.ts.map +1 -0
- package/dist/utils/__tests__/pid.test.js +79 -0
- package/dist/utils/__tests__/pid.test.js.map +1 -0
- package/dist/utils/__tests__/validate-project-path.test.d.ts +2 -0
- package/dist/utils/__tests__/validate-project-path.test.d.ts.map +1 -0
- package/dist/utils/__tests__/validate-project-path.test.js +178 -0
- package/dist/utils/__tests__/validate-project-path.test.js.map +1 -0
- package/dist/utils/config.d.ts +8 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +16 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/diff.d.ts +11 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +24 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/filename-validation.d.ts +10 -0
- package/dist/utils/filename-validation.d.ts.map +1 -0
- package/dist/utils/filename-validation.js +55 -0
- package/dist/utils/filename-validation.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +104 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/machine-info.d.ts +6 -0
- package/dist/utils/machine-info.d.ts.map +1 -0
- package/dist/utils/machine-info.js +38 -0
- package/dist/utils/machine-info.js.map +1 -0
- package/dist/utils/machine-key.d.ts +20 -0
- package/dist/utils/machine-key.d.ts.map +1 -0
- package/dist/utils/machine-key.js +66 -0
- package/dist/utils/machine-key.js.map +1 -0
- package/dist/utils/path-sandbox.d.ts +24 -0
- package/dist/utils/path-sandbox.d.ts.map +1 -0
- package/dist/utils/path-sandbox.js +69 -0
- package/dist/utils/path-sandbox.js.map +1 -0
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +52 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pid.d.ts +23 -0
- package/dist/utils/pid.d.ts.map +1 -0
- package/dist/utils/pid.js +57 -0
- package/dist/utils/pid.js.map +1 -0
- package/dist/utils/validate-project-path.d.ts +17 -0
- package/dist/utils/validate-project-path.d.ts.map +1 -0
- package/dist/utils/validate-project-path.js +109 -0
- package/dist/utils/validate-project-path.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/opencode/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic health check for the OpenCode server.
|
|
3
|
+
*
|
|
4
|
+
* Monitors OpenCode server health by polling GET /global/health every 30s.
|
|
5
|
+
* After 3 consecutive failures, triggers an auto-restart via the supervisor.
|
|
6
|
+
*/
|
|
7
|
+
export interface HealthStatus {
|
|
8
|
+
healthy: boolean;
|
|
9
|
+
lastHealthCheck: number | null;
|
|
10
|
+
consecutiveFailures: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Start the periodic health check loop.
|
|
14
|
+
*
|
|
15
|
+
* @param restartFn Called when health check determines a restart is needed
|
|
16
|
+
* (after MAX_CONSECUTIVE_FAILURES consecutive failures).
|
|
17
|
+
*/
|
|
18
|
+
export declare function startHealthCheck(restartFn: () => Promise<void>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Stop the periodic health check loop.
|
|
21
|
+
*/
|
|
22
|
+
export declare function stopHealthCheck(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get the current health status for reporting (e.g., /healthz endpoint).
|
|
25
|
+
*/
|
|
26
|
+
export declare function getHealthStatus(): HealthStatus;
|
|
27
|
+
/**
|
|
28
|
+
* Reset health check state (for testing).
|
|
29
|
+
*/
|
|
30
|
+
export declare function resetHealthCheck(): void;
|
|
31
|
+
//# sourceMappingURL=health-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../src/opencode/health-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAOD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAerE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAOtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAM9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic health check for the OpenCode server.
|
|
3
|
+
*
|
|
4
|
+
* Monitors OpenCode server health by polling GET /global/health every 30s.
|
|
5
|
+
* After 3 consecutive failures, triggers an auto-restart via the supervisor.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
import { proxyToOpenCode } from "./proxy.js";
|
|
9
|
+
const HEALTH_CHECK_INTERVAL_MS = 30_000;
|
|
10
|
+
const MAX_CONSECUTIVE_FAILURES = 3;
|
|
11
|
+
const HEALTH_REQUEST_TIMEOUT_MS = 5_000;
|
|
12
|
+
let intervalTimer = null;
|
|
13
|
+
let consecutiveFailures = 0;
|
|
14
|
+
let lastHealthCheck = null;
|
|
15
|
+
let onRestartNeeded = null;
|
|
16
|
+
/**
|
|
17
|
+
* Start the periodic health check loop.
|
|
18
|
+
*
|
|
19
|
+
* @param restartFn Called when health check determines a restart is needed
|
|
20
|
+
* (after MAX_CONSECUTIVE_FAILURES consecutive failures).
|
|
21
|
+
*/
|
|
22
|
+
export function startHealthCheck(restartFn) {
|
|
23
|
+
if (intervalTimer) {
|
|
24
|
+
return; // Already running
|
|
25
|
+
}
|
|
26
|
+
onRestartNeeded = restartFn;
|
|
27
|
+
consecutiveFailures = 0;
|
|
28
|
+
lastHealthCheck = null;
|
|
29
|
+
intervalTimer = setInterval(() => {
|
|
30
|
+
void checkHealth();
|
|
31
|
+
}, HEALTH_CHECK_INTERVAL_MS);
|
|
32
|
+
intervalTimer.unref();
|
|
33
|
+
logger.info("OpenCode health check started (every 30s)");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Stop the periodic health check loop.
|
|
37
|
+
*/
|
|
38
|
+
export function stopHealthCheck() {
|
|
39
|
+
if (intervalTimer) {
|
|
40
|
+
clearInterval(intervalTimer);
|
|
41
|
+
intervalTimer = null;
|
|
42
|
+
}
|
|
43
|
+
onRestartNeeded = null;
|
|
44
|
+
logger.info("OpenCode health check stopped");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the current health status for reporting (e.g., /healthz endpoint).
|
|
48
|
+
*/
|
|
49
|
+
export function getHealthStatus() {
|
|
50
|
+
return {
|
|
51
|
+
healthy: consecutiveFailures === 0 && lastHealthCheck !== null,
|
|
52
|
+
lastHealthCheck,
|
|
53
|
+
consecutiveFailures,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Reset health check state (for testing).
|
|
58
|
+
*/
|
|
59
|
+
export function resetHealthCheck() {
|
|
60
|
+
stopHealthCheck();
|
|
61
|
+
consecutiveFailures = 0;
|
|
62
|
+
lastHealthCheck = null;
|
|
63
|
+
onRestartNeeded = null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Perform a single health check against the OpenCode server.
|
|
67
|
+
*/
|
|
68
|
+
async function checkHealth() {
|
|
69
|
+
try {
|
|
70
|
+
const response = await proxyToOpenCode({ method: "GET", path: "/global/health" }, HEALTH_REQUEST_TIMEOUT_MS);
|
|
71
|
+
if (response.status >= 200 && response.status < 300) {
|
|
72
|
+
consecutiveFailures = 0;
|
|
73
|
+
lastHealthCheck = Date.now();
|
|
74
|
+
logger.debug("OpenCode health check passed");
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
handleFailure(`HTTP ${response.status}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
82
|
+
handleFailure(message);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Handle a health check failure. Triggers restart after MAX_CONSECUTIVE_FAILURES.
|
|
87
|
+
*/
|
|
88
|
+
function handleFailure(reason) {
|
|
89
|
+
consecutiveFailures++;
|
|
90
|
+
logger.warn(`OpenCode health check failed (${consecutiveFailures}/${MAX_CONSECUTIVE_FAILURES}): ${reason}`);
|
|
91
|
+
if (consecutiveFailures >= MAX_CONSECUTIVE_FAILURES && onRestartNeeded) {
|
|
92
|
+
logger.error(`OpenCode health check failed ${MAX_CONSECUTIVE_FAILURES} times consecutively, triggering restart`);
|
|
93
|
+
consecutiveFailures = 0;
|
|
94
|
+
void onRestartNeeded();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=health-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/opencode/health-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission reply handler for forwarding permission responses to OpenCode.
|
|
3
|
+
*
|
|
4
|
+
* Validates the reply value (once | always | reject) and proxies the request
|
|
5
|
+
* to OpenCode's POST /permission/:id/reply endpoint.
|
|
6
|
+
*/
|
|
7
|
+
import type { Message } from "@pocketcoder/shared";
|
|
8
|
+
/**
|
|
9
|
+
* Handle a permission_reply message from the client.
|
|
10
|
+
*
|
|
11
|
+
* Validates the reply value and forwards to OpenCode via the HTTP proxy.
|
|
12
|
+
*/
|
|
13
|
+
export declare function handlePermissionReply(message: Message, send: (response: Message) => void): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=permission-reply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-reply.d.ts","sourceRoot":"","sources":["../../src/opencode/permission-reply.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,OAAO,EAIR,MAAM,qBAAqB,CAAC;AAS7B;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Df"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission reply handler for forwarding permission responses to OpenCode.
|
|
3
|
+
*
|
|
4
|
+
* Validates the reply value (once | always | reject) and proxies the request
|
|
5
|
+
* to OpenCode's POST /permission/:id/reply endpoint.
|
|
6
|
+
*/
|
|
7
|
+
import { ErrorCode } from "@pocketcoder/shared/constants";
|
|
8
|
+
import { logger } from "../utils/logger.js";
|
|
9
|
+
import { createError } from "../errors/index.js";
|
|
10
|
+
import { proxyToOpenCode } from "./proxy.js";
|
|
11
|
+
const VALID_REPLIES = new Set(["once", "always", "reject"]);
|
|
12
|
+
/**
|
|
13
|
+
* Handle a permission_reply message from the client.
|
|
14
|
+
*
|
|
15
|
+
* Validates the reply value and forwards to OpenCode via the HTTP proxy.
|
|
16
|
+
*/
|
|
17
|
+
export async function handlePermissionReply(message, send) {
|
|
18
|
+
const msg = message;
|
|
19
|
+
const { requestId } = msg;
|
|
20
|
+
const { permissionId, reply } = msg.payload;
|
|
21
|
+
// Validate reply value
|
|
22
|
+
if (!VALID_REPLIES.has(reply)) {
|
|
23
|
+
send({
|
|
24
|
+
type: "permission_reply_response",
|
|
25
|
+
requestId,
|
|
26
|
+
error: createError(ErrorCode.INVALID_REQUEST, `Invalid reply value: ${String(reply)}. Must be one of: once, always, reject`),
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Validate permissionId
|
|
31
|
+
if (!permissionId || typeof permissionId !== "string") {
|
|
32
|
+
send({
|
|
33
|
+
type: "permission_reply_response",
|
|
34
|
+
requestId,
|
|
35
|
+
error: createError(ErrorCode.INVALID_REQUEST, "Missing or invalid permissionId"),
|
|
36
|
+
});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const response = await proxyToOpenCode({
|
|
41
|
+
method: "POST",
|
|
42
|
+
path: `/permission/${permissionId}/reply`,
|
|
43
|
+
body: JSON.stringify({ reply }),
|
|
44
|
+
});
|
|
45
|
+
logger.debug(`Permission reply for ${permissionId}: ${reply} → ${response.status}`);
|
|
46
|
+
send({
|
|
47
|
+
type: "permission_reply_response",
|
|
48
|
+
requestId,
|
|
49
|
+
payload: {
|
|
50
|
+
status: response.status,
|
|
51
|
+
body: response.body ? JSON.parse(response.body) : undefined,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
57
|
+
logger.error(`Permission reply failed for ${permissionId}: ${message}`);
|
|
58
|
+
const code = message === "OPENCODE_UNREACHABLE"
|
|
59
|
+
? ErrorCode.OPENCODE_UNREACHABLE
|
|
60
|
+
: message === "TIMEOUT"
|
|
61
|
+
? ErrorCode.TIMEOUT
|
|
62
|
+
: ErrorCode.UNKNOWN_ERROR;
|
|
63
|
+
send({
|
|
64
|
+
type: "permission_reply_response",
|
|
65
|
+
requestId,
|
|
66
|
+
error: createError(code, `Failed to forward permission reply: ${message}`),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=permission-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-reply.js","sourceRoot":"","sources":["../../src/opencode/permission-reply.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,aAAa,GAAsC,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAgB,EAChB,IAAiC;IAEjC,MAAM,GAAG,GAAG,OAAiC,CAAC;IAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;IAC1B,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5C,uBAAuB;IACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,EAAE,2BAA2B;YACjC,SAAS;YACT,KAAK,EAAE,WAAW,CAChB,SAAS,CAAC,eAAe,EACzB,wBAAwB,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAC9E;SACyB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,IAAI,EAAE,2BAA2B;YACjC,SAAS;YACT,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,iCAAiC,CAAC;SACtD,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;YACrC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe,YAAY,QAAQ;YACzC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,wBAAwB,YAAY,KAAK,KAAK,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpF,IAAI,CAAC;YACH,IAAI,EAAE,2BAA2B;YACjC,SAAS;YACT,OAAO,EAAE;gBACP,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5D;SACyB,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,+BAA+B,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;QAExE,MAAM,IAAI,GACR,OAAO,KAAK,sBAAsB;YAChC,CAAC,CAAC,SAAS,CAAC,oBAAoB;YAChC,CAAC,CAAC,OAAO,KAAK,SAAS;gBACrB,CAAC,CAAC,SAAS,CAAC,OAAO;gBACnB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;QAEhC,IAAI,CAAC;YACH,IAAI,EAAE,2BAA2B;YACjC,SAAS;YACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,uCAAuC,OAAO,EAAE,CAAC;SAChD,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP proxy for forwarding requests to the local OpenCode server.
|
|
3
|
+
*
|
|
4
|
+
* Proxies non-local routes (session, permission, provider, global/health)
|
|
5
|
+
* to the OpenCode server running at localhost:4096 with Basic auth.
|
|
6
|
+
*/
|
|
7
|
+
import type { OpenCodeAuth } from "./spawn.js";
|
|
8
|
+
export interface ProxyRequest {
|
|
9
|
+
method: string;
|
|
10
|
+
path: string;
|
|
11
|
+
headers?: Record<string, string>;
|
|
12
|
+
body?: string;
|
|
13
|
+
query?: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
export interface ProxyResponse {
|
|
16
|
+
status: number;
|
|
17
|
+
headers: Record<string, string>;
|
|
18
|
+
body?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Set the OpenCode auth credentials for proxying.
|
|
22
|
+
* Called after spawnOpenCode() completes successfully.
|
|
23
|
+
*/
|
|
24
|
+
export declare function setOpenCodeAuth(auth: OpenCodeAuth): void;
|
|
25
|
+
/**
|
|
26
|
+
* Clear the OpenCode auth credentials (e.g., on shutdown).
|
|
27
|
+
*/
|
|
28
|
+
export declare function clearOpenCodeAuth(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Get the current OpenCode auth credentials.
|
|
31
|
+
* Returns null if OpenCode is not running.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getOpenCodeAuth(): OpenCodeAuth | null;
|
|
34
|
+
/**
|
|
35
|
+
* Proxy an HTTP request to the OpenCode server.
|
|
36
|
+
*
|
|
37
|
+
* Adds the Basic auth header automatically. Forwards the request method,
|
|
38
|
+
* path, headers, body, and query parameters. Returns the response status,
|
|
39
|
+
* headers, and body.
|
|
40
|
+
*
|
|
41
|
+
* @throws Error with code OPENCODE_UNREACHABLE if OpenCode is not configured
|
|
42
|
+
* @throws Error with code TIMEOUT if the request times out
|
|
43
|
+
*/
|
|
44
|
+
export declare function proxyToOpenCode(request: ProxyRequest, timeoutMs?: number): Promise<ProxyResponse>;
|
|
45
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/opencode/proxy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAeD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,aAAa,CAAC,CAwDxB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP proxy for forwarding requests to the local OpenCode server.
|
|
3
|
+
*
|
|
4
|
+
* Proxies non-local routes (session, permission, provider, global/health)
|
|
5
|
+
* to the OpenCode server running at localhost:4096 with Basic auth.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from "../utils/logger.js";
|
|
8
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
9
|
+
let currentAuth = null;
|
|
10
|
+
/**
|
|
11
|
+
* Set the OpenCode auth credentials for proxying.
|
|
12
|
+
* Called after spawnOpenCode() completes successfully.
|
|
13
|
+
*/
|
|
14
|
+
export function setOpenCodeAuth(auth) {
|
|
15
|
+
currentAuth = auth;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Clear the OpenCode auth credentials (e.g., on shutdown).
|
|
19
|
+
*/
|
|
20
|
+
export function clearOpenCodeAuth() {
|
|
21
|
+
currentAuth = null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the current OpenCode auth credentials.
|
|
25
|
+
* Returns null if OpenCode is not running.
|
|
26
|
+
*/
|
|
27
|
+
export function getOpenCodeAuth() {
|
|
28
|
+
return currentAuth;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build a full URL from the base URL, path, and optional query parameters.
|
|
32
|
+
*/
|
|
33
|
+
function buildUrl(baseUrl, path, query) {
|
|
34
|
+
const url = new URL(path, baseUrl);
|
|
35
|
+
if (query) {
|
|
36
|
+
for (const [key, value] of Object.entries(query)) {
|
|
37
|
+
url.searchParams.set(key, value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return url.toString();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Proxy an HTTP request to the OpenCode server.
|
|
44
|
+
*
|
|
45
|
+
* Adds the Basic auth header automatically. Forwards the request method,
|
|
46
|
+
* path, headers, body, and query parameters. Returns the response status,
|
|
47
|
+
* headers, and body.
|
|
48
|
+
*
|
|
49
|
+
* @throws Error with code OPENCODE_UNREACHABLE if OpenCode is not configured
|
|
50
|
+
* @throws Error with code TIMEOUT if the request times out
|
|
51
|
+
*/
|
|
52
|
+
export async function proxyToOpenCode(request, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
53
|
+
if (!currentAuth) {
|
|
54
|
+
throw new Error("OPENCODE_UNREACHABLE");
|
|
55
|
+
}
|
|
56
|
+
const { method, path, headers, body, query } = request;
|
|
57
|
+
const url = buildUrl(currentAuth.baseUrl, path, query);
|
|
58
|
+
const fetchHeaders = {
|
|
59
|
+
Authorization: currentAuth.authHeader,
|
|
60
|
+
...headers,
|
|
61
|
+
};
|
|
62
|
+
// Set content-type for requests with a body if not already set
|
|
63
|
+
if (body && !fetchHeaders["Content-Type"] && !fetchHeaders["content-type"]) {
|
|
64
|
+
fetchHeaders["Content-Type"] = "application/json";
|
|
65
|
+
}
|
|
66
|
+
logger.debug(`Proxy ${method} ${path} → ${url}`);
|
|
67
|
+
try {
|
|
68
|
+
const response = await fetch(url, {
|
|
69
|
+
method,
|
|
70
|
+
headers: fetchHeaders,
|
|
71
|
+
body: method !== "GET" && method !== "HEAD" ? body : undefined,
|
|
72
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
73
|
+
});
|
|
74
|
+
// Collect response headers
|
|
75
|
+
const responseHeaders = {};
|
|
76
|
+
response.headers.forEach((value, key) => {
|
|
77
|
+
responseHeaders[key] = value;
|
|
78
|
+
});
|
|
79
|
+
// Read response body as text
|
|
80
|
+
const responseBody = await response.text();
|
|
81
|
+
logger.debug(`Proxy response: ${response.status} (${responseBody.length} bytes)`);
|
|
82
|
+
return {
|
|
83
|
+
status: response.status,
|
|
84
|
+
headers: responseHeaders,
|
|
85
|
+
body: responseBody || undefined,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (err instanceof DOMException && err.name === "TimeoutError") {
|
|
90
|
+
throw new Error("TIMEOUT");
|
|
91
|
+
}
|
|
92
|
+
if (err instanceof TypeError &&
|
|
93
|
+
(err.message.includes("fetch") || err.message.includes("ECONNREFUSED"))) {
|
|
94
|
+
throw new Error("OPENCODE_UNREACHABLE");
|
|
95
|
+
}
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/opencode/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters and sorts OpenCode sessions by registered project directories.
|
|
3
|
+
*
|
|
4
|
+
* Only sessions whose directory matches a registered project path are included.
|
|
5
|
+
* Results are sorted by most recent activity (updated or created time) descending.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Minimal OpenCode Session shape needed for filtering.
|
|
9
|
+
* Based on OpenCode Session type from the SDK.
|
|
10
|
+
*/
|
|
11
|
+
export interface OpenCodeSession {
|
|
12
|
+
id: string;
|
|
13
|
+
directory: string;
|
|
14
|
+
title: string;
|
|
15
|
+
time: {
|
|
16
|
+
created: number;
|
|
17
|
+
updated: number;
|
|
18
|
+
};
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Filter sessions to only those matching registered project paths,
|
|
23
|
+
* then sort by most recent activity (updated time, falling back to created time).
|
|
24
|
+
*/
|
|
25
|
+
export declare function filterAndSortSessions(sessions: OpenCodeSession[], projectPaths: Set<string>): OpenCodeSession[];
|
|
26
|
+
//# sourceMappingURL=session-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-filter.d.ts","sourceRoot":"","sources":["../../src/opencode/session-filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,eAAe,EAAE,EAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,eAAe,EAAE,CAQnB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters and sorts OpenCode sessions by registered project directories.
|
|
3
|
+
*
|
|
4
|
+
* Only sessions whose directory matches a registered project path are included.
|
|
5
|
+
* Results are sorted by most recent activity (updated or created time) descending.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Filter sessions to only those matching registered project paths,
|
|
9
|
+
* then sort by most recent activity (updated time, falling back to created time).
|
|
10
|
+
*/
|
|
11
|
+
export function filterAndSortSessions(sessions, projectPaths) {
|
|
12
|
+
return sessions
|
|
13
|
+
.filter((s) => projectPaths.has(s.directory))
|
|
14
|
+
.sort((a, b) => {
|
|
15
|
+
const aTime = a.time.updated || a.time.created;
|
|
16
|
+
const bTime = b.time.updated || b.time.created;
|
|
17
|
+
return bTime - aTime;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=session-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-filter.js","sourceRoot":"","sources":["../../src/opencode/session-filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA2B,EAC3B,YAAyB;IAEzB,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/C,OAAO,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
export interface OpenCodeAuth {
|
|
3
|
+
password: string;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
authHeader: string;
|
|
6
|
+
}
|
|
7
|
+
export interface OpenCodeProcess {
|
|
8
|
+
process: ChildProcess;
|
|
9
|
+
auth: OpenCodeAuth;
|
|
10
|
+
stop: () => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Spawn an OpenCode server process with retries and health check.
|
|
14
|
+
*
|
|
15
|
+
* - Generates a random password for HTTP Basic auth
|
|
16
|
+
* - Spawns `opencode serve --port <port>` with OPENCODE_SERVER_PASSWORD env
|
|
17
|
+
* - Waits for GET /global/health to return 200
|
|
18
|
+
* - Retries up to 3 times on failure
|
|
19
|
+
*
|
|
20
|
+
* @param port Port to bind to (default: config opencode.port or 4096)
|
|
21
|
+
* @returns OpenCodeProcess with the child process, auth info, and stop function
|
|
22
|
+
*/
|
|
23
|
+
export declare function spawnOpenCode(port?: number): Promise<OpenCodeProcess>;
|
|
24
|
+
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/opencode/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAY9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAmGD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAmD3E"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
const DEFAULT_PORT = 4096;
|
|
5
|
+
const HEALTH_TIMEOUT_MS = 30_000;
|
|
6
|
+
const HEALTH_POLL_INTERVAL_MS = 500;
|
|
7
|
+
const HEALTH_REQUEST_TIMEOUT_MS = 2_000;
|
|
8
|
+
const MAX_RETRIES = 3;
|
|
9
|
+
const SHUTDOWN_TIMEOUT_MS = 5_000;
|
|
10
|
+
/**
|
|
11
|
+
* Build the Basic auth header for OpenCode requests.
|
|
12
|
+
*/
|
|
13
|
+
function makeAuthHeader(password) {
|
|
14
|
+
return `Basic ${Buffer.from(`opencode:${password}`).toString("base64")}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wait for the OpenCode health endpoint to return 200 OK.
|
|
18
|
+
* Polls GET /global/health every 500ms, times out after 30s.
|
|
19
|
+
*/
|
|
20
|
+
async function waitForHealth(baseUrl, authHeader, timeoutMs) {
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
23
|
+
try {
|
|
24
|
+
const res = await fetch(`${baseUrl}/global/health`, {
|
|
25
|
+
headers: { Authorization: authHeader },
|
|
26
|
+
signal: AbortSignal.timeout(HEALTH_REQUEST_TIMEOUT_MS),
|
|
27
|
+
});
|
|
28
|
+
if (res.ok) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Not ready yet
|
|
34
|
+
}
|
|
35
|
+
await new Promise((r) => setTimeout(r, HEALTH_POLL_INTERVAL_MS));
|
|
36
|
+
}
|
|
37
|
+
throw new Error("OPENCODE_UNREACHABLE");
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Spawn an OpenCode server process with a single attempt.
|
|
41
|
+
* Returns the child process and auth info, or throws on failure.
|
|
42
|
+
*/
|
|
43
|
+
function spawnOnce(port, password) {
|
|
44
|
+
const child = spawn("opencode", ["serve", "--port", String(port)], {
|
|
45
|
+
env: {
|
|
46
|
+
...process.env,
|
|
47
|
+
OPENCODE_SERVER_PASSWORD: password,
|
|
48
|
+
},
|
|
49
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
50
|
+
});
|
|
51
|
+
let stderrOutput = "";
|
|
52
|
+
child.stderr?.on("data", (chunk) => {
|
|
53
|
+
stderrOutput += chunk.toString();
|
|
54
|
+
});
|
|
55
|
+
child.stdout?.on("data", (chunk) => {
|
|
56
|
+
logger.debug(`opencode stdout: ${chunk.toString().trimEnd()}`);
|
|
57
|
+
});
|
|
58
|
+
child.on("error", (err) => {
|
|
59
|
+
logger.error(`OpenCode process error: ${err.message}`);
|
|
60
|
+
});
|
|
61
|
+
child.on("exit", (code, signal) => {
|
|
62
|
+
if (code !== null && code !== 0) {
|
|
63
|
+
logger.warn(`OpenCode process exited with code ${code}: ${stderrOutput.trimEnd()}`);
|
|
64
|
+
}
|
|
65
|
+
else if (signal) {
|
|
66
|
+
logger.info(`OpenCode process killed with signal ${signal}`);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return child;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Gracefully stop an OpenCode child process.
|
|
73
|
+
* Sends SIGTERM first, then SIGKILL after timeout.
|
|
74
|
+
*/
|
|
75
|
+
function stopProcess(child) {
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
if (child.exitCode !== null || child.killed) {
|
|
78
|
+
resolve();
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const timeout = setTimeout(() => {
|
|
82
|
+
child.kill("SIGKILL");
|
|
83
|
+
resolve();
|
|
84
|
+
}, SHUTDOWN_TIMEOUT_MS);
|
|
85
|
+
child.on("exit", () => {
|
|
86
|
+
clearTimeout(timeout);
|
|
87
|
+
resolve();
|
|
88
|
+
});
|
|
89
|
+
child.kill("SIGTERM");
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Spawn an OpenCode server process with retries and health check.
|
|
94
|
+
*
|
|
95
|
+
* - Generates a random password for HTTP Basic auth
|
|
96
|
+
* - Spawns `opencode serve --port <port>` with OPENCODE_SERVER_PASSWORD env
|
|
97
|
+
* - Waits for GET /global/health to return 200
|
|
98
|
+
* - Retries up to 3 times on failure
|
|
99
|
+
*
|
|
100
|
+
* @param port Port to bind to (default: config opencode.port or 4096)
|
|
101
|
+
* @returns OpenCodeProcess with the child process, auth info, and stop function
|
|
102
|
+
*/
|
|
103
|
+
export async function spawnOpenCode(port) {
|
|
104
|
+
const resolvedPort = port ?? DEFAULT_PORT;
|
|
105
|
+
const password = randomUUID();
|
|
106
|
+
const baseUrl = `http://127.0.0.1:${resolvedPort}`;
|
|
107
|
+
const authHeader = makeAuthHeader(password);
|
|
108
|
+
let lastError;
|
|
109
|
+
for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
|
|
110
|
+
logger.info(`Spawning OpenCode server (attempt ${attempt}/${MAX_RETRIES}) on port ${resolvedPort}`);
|
|
111
|
+
const child = spawnOnce(resolvedPort, password);
|
|
112
|
+
try {
|
|
113
|
+
// Check if process died immediately
|
|
114
|
+
await new Promise((resolve, reject) => {
|
|
115
|
+
const earlyExitHandler = (code) => {
|
|
116
|
+
reject(new Error(`OpenCode process exited early with code ${code}`));
|
|
117
|
+
};
|
|
118
|
+
child.once("exit", earlyExitHandler);
|
|
119
|
+
// Give it a brief moment to see if it crashes immediately
|
|
120
|
+
setTimeout(() => {
|
|
121
|
+
child.removeListener("exit", earlyExitHandler);
|
|
122
|
+
resolve();
|
|
123
|
+
}, 200);
|
|
124
|
+
});
|
|
125
|
+
await waitForHealth(baseUrl, authHeader, HEALTH_TIMEOUT_MS);
|
|
126
|
+
logger.info(`OpenCode server ready on port ${resolvedPort}`);
|
|
127
|
+
const auth = { password, baseUrl, authHeader };
|
|
128
|
+
return {
|
|
129
|
+
process: child,
|
|
130
|
+
auth,
|
|
131
|
+
stop: () => stopProcess(child),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
136
|
+
logger.warn(`OpenCode spawn attempt ${attempt} failed: ${lastError.message}`);
|
|
137
|
+
// Kill the child if it's still running
|
|
138
|
+
await stopProcess(child);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
throw lastError ?? new Error("OPENCODE_UNREACHABLE");
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/opencode/spawn.ts"],"names":[],"mappings":"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"}
|