@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,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filename validation utilities.
|
|
3
|
+
* Rejects invalid characters and reserved names (Windows compatibility).
|
|
4
|
+
*/
|
|
5
|
+
import { ErrorCode } from "@pocketcoder/shared/constants";
|
|
6
|
+
import { AppError } from "../errors/index.js";
|
|
7
|
+
/** Characters forbidden in filenames across platforms. */
|
|
8
|
+
// eslint-disable-next-line no-control-regex
|
|
9
|
+
const INVALID_CHARS = /[<>:"|?*\x00-\x1f]/;
|
|
10
|
+
/** Windows reserved device names (case-insensitive). */
|
|
11
|
+
const RESERVED_NAMES = new Set([
|
|
12
|
+
"con",
|
|
13
|
+
"prn",
|
|
14
|
+
"aux",
|
|
15
|
+
"nul",
|
|
16
|
+
"com1",
|
|
17
|
+
"com2",
|
|
18
|
+
"com3",
|
|
19
|
+
"com4",
|
|
20
|
+
"com5",
|
|
21
|
+
"com6",
|
|
22
|
+
"com7",
|
|
23
|
+
"com8",
|
|
24
|
+
"com9",
|
|
25
|
+
"lpt1",
|
|
26
|
+
"lpt2",
|
|
27
|
+
"lpt3",
|
|
28
|
+
"lpt4",
|
|
29
|
+
"lpt5",
|
|
30
|
+
"lpt6",
|
|
31
|
+
"lpt7",
|
|
32
|
+
"lpt8",
|
|
33
|
+
"lpt9",
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Validates a filename (not a path — just the final component).
|
|
37
|
+
* Throws AppError with INVALID_FILENAME on failure.
|
|
38
|
+
*/
|
|
39
|
+
export function validateFilename(filename) {
|
|
40
|
+
if (!filename || filename.trim() === "") {
|
|
41
|
+
throw new AppError(ErrorCode.INVALID_FILENAME, "Filename cannot be empty");
|
|
42
|
+
}
|
|
43
|
+
if (filename === "." || filename === "..") {
|
|
44
|
+
throw new AppError(ErrorCode.INVALID_FILENAME, `"${filename}" is not a valid filename`);
|
|
45
|
+
}
|
|
46
|
+
if (INVALID_CHARS.test(filename)) {
|
|
47
|
+
throw new AppError(ErrorCode.INVALID_FILENAME, "Filename contains invalid characters");
|
|
48
|
+
}
|
|
49
|
+
// Check reserved names (with or without extension, e.g. "con" and "con.txt")
|
|
50
|
+
const nameWithoutExt = filename.split(".")[0].toLowerCase();
|
|
51
|
+
if (RESERVED_NAMES.has(nameWithoutExt)) {
|
|
52
|
+
throw new AppError(ErrorCode.INVALID_FILENAME, `"${filename}" is a reserved name`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=filename-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filename-validation.js","sourceRoot":"","sources":["../../src/utils/filename-validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,0DAA0D;AAC1D,4CAA4C;AAC5C,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,wDAAwD;AACxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,QAAQ,2BAA2B,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAAC;IACzF,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,QAAQ,sBAAsB,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pino from "pino";
|
|
2
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
3
|
+
/**
|
|
4
|
+
* Create a child logger with request context.
|
|
5
|
+
* Use this in request handlers to include requestId for tracing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createRequestLogger(requestId: string): typeof logger;
|
|
8
|
+
export declare const logger: {
|
|
9
|
+
debug(message: string): void;
|
|
10
|
+
info(message: string): void;
|
|
11
|
+
warn(message: string): void;
|
|
12
|
+
error(message: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Create a child logger with additional bound context.
|
|
15
|
+
*/
|
|
16
|
+
child(bindings: Record<string, unknown>): pino.Logger;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAGA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAwE3D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,MAAM,CASpE;AAED,eAAO,MAAM,MAAM;mBACF,MAAM,GAAG,IAAI;kBAId,MAAM,GAAG,IAAI;kBAIb,MAAM,GAAG,IAAI;mBAIZ,MAAM,GAAG,IAAI;IAI5B;;OAEG;oBACa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM;CAGtD,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import pino from "pino";
|
|
4
|
+
import { getLogDir } from "./paths.js";
|
|
5
|
+
const VALID_LEVELS = new Set(["debug", "info", "warn", "error", "fatal", "trace"]);
|
|
6
|
+
function resolveLevel() {
|
|
7
|
+
const env = process.env.LOG_LEVEL?.toLowerCase();
|
|
8
|
+
if (env && VALID_LEVELS.has(env)) {
|
|
9
|
+
// Map trace/fatal to closest supported level
|
|
10
|
+
if (env === "trace")
|
|
11
|
+
return "debug";
|
|
12
|
+
if (env === "fatal")
|
|
13
|
+
return "error";
|
|
14
|
+
return env;
|
|
15
|
+
}
|
|
16
|
+
return "info";
|
|
17
|
+
}
|
|
18
|
+
function buildTransports() {
|
|
19
|
+
const targets = [];
|
|
20
|
+
// File transport with daily rotation
|
|
21
|
+
const logDir = getLogDir();
|
|
22
|
+
try {
|
|
23
|
+
mkdirSync(logDir, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Best effort - directory may already exist
|
|
27
|
+
}
|
|
28
|
+
targets.push({
|
|
29
|
+
target: "pino-roll",
|
|
30
|
+
options: {
|
|
31
|
+
file: join(logDir, "daemon.log"),
|
|
32
|
+
frequency: "daily",
|
|
33
|
+
limit: { count: 7 },
|
|
34
|
+
mkdir: true,
|
|
35
|
+
},
|
|
36
|
+
level: "debug",
|
|
37
|
+
});
|
|
38
|
+
// Console transport: pretty in dev, JSON otherwise
|
|
39
|
+
const isDev = process.env.NODE_ENV !== "production";
|
|
40
|
+
if (isDev) {
|
|
41
|
+
targets.push({
|
|
42
|
+
target: "pino-pretty",
|
|
43
|
+
options: {
|
|
44
|
+
colorize: true,
|
|
45
|
+
translateTime: "SYS:yyyy-mm-dd HH:MM:ss.l",
|
|
46
|
+
ignore: "pid,hostname",
|
|
47
|
+
},
|
|
48
|
+
level: "debug",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
targets.push({
|
|
53
|
+
target: "pino/file",
|
|
54
|
+
options: { destination: 1 }, // stdout
|
|
55
|
+
level: "debug",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return { targets };
|
|
59
|
+
}
|
|
60
|
+
let pinoInstance;
|
|
61
|
+
function getInstance() {
|
|
62
|
+
if (!pinoInstance) {
|
|
63
|
+
pinoInstance = pino({
|
|
64
|
+
level: resolveLevel(),
|
|
65
|
+
transport: buildTransports(),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return pinoInstance;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a child logger with request context.
|
|
72
|
+
* Use this in request handlers to include requestId for tracing.
|
|
73
|
+
*/
|
|
74
|
+
export function createRequestLogger(requestId) {
|
|
75
|
+
const child = getInstance().child({ requestId });
|
|
76
|
+
return {
|
|
77
|
+
debug: (message) => child.debug(message),
|
|
78
|
+
info: (message) => child.info(message),
|
|
79
|
+
warn: (message) => child.warn(message),
|
|
80
|
+
error: (message) => child.error(message),
|
|
81
|
+
child: (bindings) => child.child(bindings),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export const logger = {
|
|
85
|
+
debug(message) {
|
|
86
|
+
getInstance().debug(message);
|
|
87
|
+
},
|
|
88
|
+
info(message) {
|
|
89
|
+
getInstance().info(message);
|
|
90
|
+
},
|
|
91
|
+
warn(message) {
|
|
92
|
+
getInstance().warn(message);
|
|
93
|
+
},
|
|
94
|
+
error(message) {
|
|
95
|
+
getInstance().error(message);
|
|
96
|
+
},
|
|
97
|
+
/**
|
|
98
|
+
* Create a child logger with additional bound context.
|
|
99
|
+
*/
|
|
100
|
+
child(bindings) {
|
|
101
|
+
return getInstance().child(bindings);
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3F,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACjD,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,6CAA6C;QAC7C,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACpC,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACpC,OAAO,GAAe,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,OAAO,GAAkC,EAAE,CAAC;IAElD,qCAAqC;IACrC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IAED,OAAO,CAAC,IAAI,CAAC;QACX,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;YAChC,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACnB,KAAK,EAAE,IAAI;SACZ;QACD,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,2BAA2B;gBAC1C,MAAM,EAAE,cAAc;aACvB;YACD,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS;YACtC,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,IAAI,YAAyB,CAAC;AAE9B,SAAS,WAAW;IAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAC;YAClB,KAAK,EAAE,YAAY,EAAE;YACrB,SAAS,EAAE,eAAe,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,OAAO;QACL,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAChD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9C,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9C,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAChD,KAAK,EAAE,CAAC,QAAiC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,OAAe;QACnB,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAiC;QACrC,OAAO,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-info.d.ts","sourceRoot":"","sources":["../../src/utils/machine-info.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2B3D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,eAAe,CAQ/E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { hostname, platform, release, userInfo } from "node:os";
|
|
2
|
+
/**
|
|
3
|
+
* Get a human-readable OS version string.
|
|
4
|
+
*/
|
|
5
|
+
function getOsVersion() {
|
|
6
|
+
const p = platform();
|
|
7
|
+
const r = release();
|
|
8
|
+
switch (p) {
|
|
9
|
+
case "darwin": {
|
|
10
|
+
// Darwin kernel versions map to macOS versions (e.g., 23.x → macOS 14)
|
|
11
|
+
const major = parseInt(r.split(".")[0], 10);
|
|
12
|
+
if (!isNaN(major) && major >= 20) {
|
|
13
|
+
const macMajor = major - 9; // Darwin 20 = macOS 11
|
|
14
|
+
return `macOS ${macMajor}`;
|
|
15
|
+
}
|
|
16
|
+
return `macOS (${r})`;
|
|
17
|
+
}
|
|
18
|
+
case "linux":
|
|
19
|
+
return `Linux ${r}`;
|
|
20
|
+
case "win32":
|
|
21
|
+
return `Windows ${r}`;
|
|
22
|
+
default:
|
|
23
|
+
return `${p} ${r}`;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Collect machine metadata for daemon registration.
|
|
28
|
+
*/
|
|
29
|
+
export function getMachineMetadata(label = null) {
|
|
30
|
+
return {
|
|
31
|
+
os: platform(),
|
|
32
|
+
osVersion: getOsVersion(),
|
|
33
|
+
hostname: hostname(),
|
|
34
|
+
username: userInfo().username,
|
|
35
|
+
label,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=machine-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-info.js","sourceRoot":"","sources":["../../src/utils/machine-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIhE;;GAEG;AACH,SAAS,YAAY;IACnB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,uEAAuE;YACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,uBAAuB;gBACnD,OAAO,SAAS,QAAQ,EAAE,CAAC;YAC7B,CAAC;YACD,OAAO,UAAU,CAAC,GAAG,CAAC;QACxB,CAAC;QACD,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,EAAE,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,EAAE,CAAC;QACxB;YACE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAuB,IAAI;IAC5D,OAAO;QACL,EAAE,EAAE,QAAQ,EAAkC;QAC9C,SAAS,EAAE,YAAY,EAAE;QACzB,QAAQ,EAAE,QAAQ,EAAE;QACpB,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ;QAC7B,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get or create a stable machine key for this host.
|
|
3
|
+
*
|
|
4
|
+
* On first run, generates a random 64-character hex string and stores it
|
|
5
|
+
* in the config directory. On subsequent runs, returns the stored key.
|
|
6
|
+
*
|
|
7
|
+
* The key is stored separately from auth.json so it persists even when
|
|
8
|
+
* tokens are cleared (logout/re-login).
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMachineKey(): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Delete the stored machine key file.
|
|
13
|
+
* Used during logout to force key regeneration on next login.
|
|
14
|
+
*/
|
|
15
|
+
export declare function deleteMachineKey(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Validate that a string is a valid machine key (32+ byte hex string = 64+ chars).
|
|
18
|
+
*/
|
|
19
|
+
export declare function isValidMachineKey(key: string): boolean;
|
|
20
|
+
//# sourceMappingURL=machine-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-key.d.ts","sourceRoot":"","sources":["../../src/utils/machine-key.ts"],"names":[],"mappings":"AAsBA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAsBrD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { readFile, writeFile, mkdir, unlink } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { getConfigDir } from "./paths.js";
|
|
5
|
+
const KEY_FILENAME = "machine-key";
|
|
6
|
+
/**
|
|
7
|
+
* Get the path to the machine key file.
|
|
8
|
+
*/
|
|
9
|
+
function getMachineKeyPath() {
|
|
10
|
+
return `${getConfigDir()}/${KEY_FILENAME}`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate a new 32-byte hex machine key.
|
|
14
|
+
*/
|
|
15
|
+
function generateKey() {
|
|
16
|
+
return randomBytes(32).toString("hex");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get or create a stable machine key for this host.
|
|
20
|
+
*
|
|
21
|
+
* On first run, generates a random 64-character hex string and stores it
|
|
22
|
+
* in the config directory. On subsequent runs, returns the stored key.
|
|
23
|
+
*
|
|
24
|
+
* The key is stored separately from auth.json so it persists even when
|
|
25
|
+
* tokens are cleared (logout/re-login).
|
|
26
|
+
*/
|
|
27
|
+
export async function getMachineKey() {
|
|
28
|
+
const keyPath = getMachineKeyPath();
|
|
29
|
+
// Try to read existing key
|
|
30
|
+
try {
|
|
31
|
+
const content = await readFile(keyPath, "utf-8");
|
|
32
|
+
const key = content.trim();
|
|
33
|
+
if (isValidMachineKey(key)) {
|
|
34
|
+
return key;
|
|
35
|
+
}
|
|
36
|
+
// Invalid key file — regenerate
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// File doesn't exist — generate new key
|
|
40
|
+
}
|
|
41
|
+
// Generate and persist new key
|
|
42
|
+
const key = generateKey();
|
|
43
|
+
await mkdir(dirname(keyPath), { recursive: true });
|
|
44
|
+
const mode = process.platform === "win32" ? undefined : 0o600;
|
|
45
|
+
await writeFile(keyPath, key + "\n", { mode });
|
|
46
|
+
return key;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Delete the stored machine key file.
|
|
50
|
+
* Used during logout to force key regeneration on next login.
|
|
51
|
+
*/
|
|
52
|
+
export async function deleteMachineKey() {
|
|
53
|
+
try {
|
|
54
|
+
await unlink(getMachineKeyPath());
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Ignore if file doesn't exist
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate that a string is a valid machine key (32+ byte hex string = 64+ chars).
|
|
62
|
+
*/
|
|
63
|
+
export function isValidMachineKey(key) {
|
|
64
|
+
return /^[0-9a-f]{64,}$/.test(key);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=machine-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-key.js","sourceRoot":"","sources":["../../src/utils/machine-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO,GAAG,YAAY,EAAE,IAAI,YAAY,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAClB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,2BAA2B;IAC3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,gCAAgC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IAED,+BAA+B;IAC/B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path sandboxing utilities for preventing directory traversal attacks.
|
|
3
|
+
* All filesystem operations must validate paths through these functions.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Validates that a resolved path stays within the project root.
|
|
7
|
+
* Resolves symlinks to prevent symlink-based escapes.
|
|
8
|
+
* Throws AppError with OUTSIDE_PROJECT_ROOT if path escapes.
|
|
9
|
+
*
|
|
10
|
+
* @param projectRoot - Absolute path to the project root directory
|
|
11
|
+
* @param relativePath - Relative path within the project
|
|
12
|
+
* @returns The resolved absolute path
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateProjectPath(projectRoot: string, relativePath: string): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Validates a path for writing (target may not exist yet).
|
|
17
|
+
* Checks the normalized path stays within the project root.
|
|
18
|
+
*
|
|
19
|
+
* @param projectRoot - Absolute path to the project root directory
|
|
20
|
+
* @param relativePath - Relative path within the project
|
|
21
|
+
* @returns The normalized absolute path
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateParentPath(projectRoot: string, relativePath: string): Promise<string>;
|
|
24
|
+
//# sourceMappingURL=path-sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-sandbox.d.ts","sourceRoot":"","sources":["../../src/utils/path-sandbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path sandboxing utilities for preventing directory traversal attacks.
|
|
3
|
+
* All filesystem operations must validate paths through these functions.
|
|
4
|
+
*/
|
|
5
|
+
import { realpath } from "node:fs/promises";
|
|
6
|
+
import { resolve } from "node:path";
|
|
7
|
+
import { ErrorCode } from "@pocketcoder/shared/constants";
|
|
8
|
+
import { AppError } from "../errors/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Validates that a resolved path stays within the project root.
|
|
11
|
+
* Resolves symlinks to prevent symlink-based escapes.
|
|
12
|
+
* Throws AppError with OUTSIDE_PROJECT_ROOT if path escapes.
|
|
13
|
+
*
|
|
14
|
+
* @param projectRoot - Absolute path to the project root directory
|
|
15
|
+
* @param relativePath - Relative path within the project
|
|
16
|
+
* @returns The resolved absolute path
|
|
17
|
+
*/
|
|
18
|
+
export async function validateProjectPath(projectRoot, relativePath) {
|
|
19
|
+
const resolvedRoot = await realpath(projectRoot);
|
|
20
|
+
// Reject absolute paths that don't start with the project root
|
|
21
|
+
if (relativePath.startsWith("/") || relativePath.startsWith("\\")) {
|
|
22
|
+
throw new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Absolute paths are not allowed");
|
|
23
|
+
}
|
|
24
|
+
const targetPath = resolve(resolvedRoot, relativePath);
|
|
25
|
+
let resolvedTarget;
|
|
26
|
+
try {
|
|
27
|
+
resolvedTarget = await realpath(targetPath);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
// If file doesn't exist, we can still check the normalized path
|
|
31
|
+
if (err &&
|
|
32
|
+
typeof err === "object" &&
|
|
33
|
+
"code" in err &&
|
|
34
|
+
err.code === "ENOENT") {
|
|
35
|
+
// Normalize to remove .. segments and check
|
|
36
|
+
const normalized = resolve(targetPath);
|
|
37
|
+
if (!normalized.startsWith(resolvedRoot + "/") && normalized !== resolvedRoot) {
|
|
38
|
+
throw new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Path escapes project directory");
|
|
39
|
+
}
|
|
40
|
+
return normalized;
|
|
41
|
+
}
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
if (!resolvedTarget.startsWith(resolvedRoot + "/") && resolvedTarget !== resolvedRoot) {
|
|
45
|
+
throw new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Path escapes project directory");
|
|
46
|
+
}
|
|
47
|
+
return resolvedTarget;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Validates a path for writing (target may not exist yet).
|
|
51
|
+
* Checks the normalized path stays within the project root.
|
|
52
|
+
*
|
|
53
|
+
* @param projectRoot - Absolute path to the project root directory
|
|
54
|
+
* @param relativePath - Relative path within the project
|
|
55
|
+
* @returns The normalized absolute path
|
|
56
|
+
*/
|
|
57
|
+
export async function validateParentPath(projectRoot, relativePath) {
|
|
58
|
+
const resolvedRoot = await realpath(projectRoot);
|
|
59
|
+
if (relativePath.startsWith("/") || relativePath.startsWith("\\")) {
|
|
60
|
+
throw new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Absolute paths are not allowed");
|
|
61
|
+
}
|
|
62
|
+
const targetPath = resolve(resolvedRoot, relativePath);
|
|
63
|
+
const normalized = resolve(targetPath);
|
|
64
|
+
if (!normalized.startsWith(resolvedRoot + "/") && normalized !== resolvedRoot) {
|
|
65
|
+
throw new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Path escapes project directory");
|
|
66
|
+
}
|
|
67
|
+
return normalized;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=path-sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-sandbox.js","sourceRoot":"","sources":["../../src/utils/path-sandbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEjD,+DAA+D;IAC/D,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,cAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,gEAAgE;QAChE,IACE,GAAG;YACH,OAAO,GAAG,KAAK,QAAQ;YACvB,MAAM,IAAI,GAAG;YACZ,GAAwB,CAAC,IAAI,KAAK,QAAQ,EAC3C,CAAC;YACD,4CAA4C;YAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;gBAC9E,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACtF,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAC9E,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the OS-specific config directory for PocketCoder.
|
|
3
|
+
*
|
|
4
|
+
* Can be overridden with POCKETCODER_CONFIG_DIR environment variable (for testing).
|
|
5
|
+
*
|
|
6
|
+
* macOS: ~/Library/Application Support/pocketcoder
|
|
7
|
+
* Linux: ~/.config/pocketcoder
|
|
8
|
+
* Windows: %APPDATA%/pocketcoder
|
|
9
|
+
*/
|
|
10
|
+
export declare function getConfigDir(): string;
|
|
11
|
+
/** Returns path to auth.json within the config directory. */
|
|
12
|
+
export declare function getAuthPath(): string;
|
|
13
|
+
/** Returns path to daemon.db within the config directory. */
|
|
14
|
+
export declare function getDbPath(): string;
|
|
15
|
+
/** Returns path to logs directory. */
|
|
16
|
+
export declare function getLogDir(): string;
|
|
17
|
+
/** Returns path to daemon.pid file. */
|
|
18
|
+
export declare function getPidPath(): string;
|
|
19
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAgBrC;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,sCAAsC;AACtC,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,uCAAuC;AACvC,wBAAgB,UAAU,IAAI,MAAM,CAMnC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { homedir, platform } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Returns the OS-specific config directory for PocketCoder.
|
|
5
|
+
*
|
|
6
|
+
* Can be overridden with POCKETCODER_CONFIG_DIR environment variable (for testing).
|
|
7
|
+
*
|
|
8
|
+
* macOS: ~/Library/Application Support/pocketcoder
|
|
9
|
+
* Linux: ~/.config/pocketcoder
|
|
10
|
+
* Windows: %APPDATA%/pocketcoder
|
|
11
|
+
*/
|
|
12
|
+
export function getConfigDir() {
|
|
13
|
+
// Allow override for testing
|
|
14
|
+
if (process.env.POCKETCODER_CONFIG_DIR) {
|
|
15
|
+
return process.env.POCKETCODER_CONFIG_DIR;
|
|
16
|
+
}
|
|
17
|
+
const os = platform();
|
|
18
|
+
switch (os) {
|
|
19
|
+
case "darwin":
|
|
20
|
+
return join(homedir(), "Library", "Application Support", "pocketcoder");
|
|
21
|
+
case "win32":
|
|
22
|
+
return join(process.env.APPDATA ?? join(homedir(), "AppData", "Roaming"), "pocketcoder");
|
|
23
|
+
default:
|
|
24
|
+
// Linux and other Unix-like systems
|
|
25
|
+
return join(process.env.XDG_CONFIG_HOME ?? join(homedir(), ".config"), "pocketcoder");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Returns path to auth.json within the config directory. */
|
|
29
|
+
export function getAuthPath() {
|
|
30
|
+
return join(getConfigDir(), "auth.json");
|
|
31
|
+
}
|
|
32
|
+
/** Returns path to daemon.db within the config directory. */
|
|
33
|
+
export function getDbPath() {
|
|
34
|
+
return join(getConfigDir(), "daemon.db");
|
|
35
|
+
}
|
|
36
|
+
/** Returns path to logs directory. */
|
|
37
|
+
export function getLogDir() {
|
|
38
|
+
// Use config dir if overridden (for testing), otherwise use ~/.pocketcoder/logs
|
|
39
|
+
if (process.env.POCKETCODER_CONFIG_DIR) {
|
|
40
|
+
return join(process.env.POCKETCODER_CONFIG_DIR, "logs");
|
|
41
|
+
}
|
|
42
|
+
return join(homedir(), ".pocketcoder", "logs");
|
|
43
|
+
}
|
|
44
|
+
/** Returns path to daemon.pid file. */
|
|
45
|
+
export function getPidPath() {
|
|
46
|
+
// Use config dir if overridden (for testing), otherwise use ~/.pocketcoder/
|
|
47
|
+
if (process.env.POCKETCODER_CONFIG_DIR) {
|
|
48
|
+
return join(process.env.POCKETCODER_CONFIG_DIR, "daemon.pid");
|
|
49
|
+
}
|
|
50
|
+
return join(homedir(), ".pocketcoder", "daemon.pid");
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY;IAC1B,6BAA6B;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;QAC1E,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;QAC3F;YACE,oCAAoC;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,SAAS;IACvB,gFAAgF;IAChF,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,UAAU;IACxB,4EAA4E;IAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write the current process PID to the PID file.
|
|
3
|
+
*/
|
|
4
|
+
export declare function writePidFile(): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Read the PID from the PID file.
|
|
7
|
+
* Returns null if the file does not exist or cannot be read.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readPidFile(): Promise<number | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Remove the PID file.
|
|
12
|
+
*/
|
|
13
|
+
export declare function removePidFile(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a process with the given PID is currently running.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isProcessRunning(pid: number): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if an existing daemon is already running.
|
|
20
|
+
* Reads the PID file and checks if that process is alive.
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkExistingDaemon(): Promise<boolean>;
|
|
23
|
+
//# sourceMappingURL=pid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pid.d.ts","sourceRoot":"","sources":["../../src/utils/pid.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ1D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAI5D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readFile, writeFile, unlink } from "node:fs/promises";
|
|
2
|
+
import { getPidPath } from "./paths.js";
|
|
3
|
+
/**
|
|
4
|
+
* Write the current process PID to the PID file.
|
|
5
|
+
*/
|
|
6
|
+
export async function writePidFile() {
|
|
7
|
+
await writeFile(getPidPath(), String(process.pid), { mode: 0o644 });
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read the PID from the PID file.
|
|
11
|
+
* Returns null if the file does not exist or cannot be read.
|
|
12
|
+
*/
|
|
13
|
+
export async function readPidFile() {
|
|
14
|
+
try {
|
|
15
|
+
const content = await readFile(getPidPath(), "utf-8");
|
|
16
|
+
const pid = parseInt(content.trim(), 10);
|
|
17
|
+
return Number.isNaN(pid) ? null : pid;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Remove the PID file.
|
|
25
|
+
*/
|
|
26
|
+
export async function removePidFile() {
|
|
27
|
+
try {
|
|
28
|
+
await unlink(getPidPath());
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Ignore if file doesn't exist
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if a process with the given PID is currently running.
|
|
36
|
+
*/
|
|
37
|
+
export function isProcessRunning(pid) {
|
|
38
|
+
try {
|
|
39
|
+
// Sending signal 0 checks for existence without killing
|
|
40
|
+
process.kill(pid, 0);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if an existing daemon is already running.
|
|
49
|
+
* Reads the PID file and checks if that process is alive.
|
|
50
|
+
*/
|
|
51
|
+
export async function checkExistingDaemon() {
|
|
52
|
+
const pid = await readPidFile();
|
|
53
|
+
if (pid === null)
|
|
54
|
+
return false;
|
|
55
|
+
return isProcessRunning(pid);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=pid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/utils/pid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,wDAAwD;QACxD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project path validation for registration.
|
|
3
|
+
* Ensures paths are valid, accessible directories outside system locations.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Validates a project path before registration.
|
|
7
|
+
* Normalizes, resolves symlinks, checks existence, verifies it's a directory,
|
|
8
|
+
* checks read permissions, and rejects system paths.
|
|
9
|
+
*
|
|
10
|
+
* @param pathArg - The path to validate (may be relative)
|
|
11
|
+
* @returns The resolved, normalized absolute path
|
|
12
|
+
* @throws AppError with PATH_NOT_FOUND if path doesn't exist
|
|
13
|
+
* @throws AppError with INVALID_REQUEST if path is not a directory or is a system path
|
|
14
|
+
* @throws AppError with PERMISSION_DENIED if path is not readable
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateProjectPath(pathArg: string): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=validate-project-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-project-path.d.ts","sourceRoot":"","sources":["../../src/utils/validate-project-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgEH;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsD1E"}
|