parasor 0.1.0
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 +21 -0
- package/README.md +208 -0
- package/THIRD-PARTY-NOTICES.md +138 -0
- package/bin/parasor.mjs +3 -0
- package/node_modules/@parasor/shared/dist/client.d.ts +8 -0
- package/node_modules/@parasor/shared/dist/client.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/client.js +2 -0
- package/node_modules/@parasor/shared/dist/client.js.map +1 -0
- package/node_modules/@parasor/shared/dist/drops.d.ts +24 -0
- package/node_modules/@parasor/shared/dist/drops.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/drops.js +2 -0
- package/node_modules/@parasor/shared/dist/drops.js.map +1 -0
- package/node_modules/@parasor/shared/dist/file-uploads.d.ts +56 -0
- package/node_modules/@parasor/shared/dist/file-uploads.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/file-uploads.js +13 -0
- package/node_modules/@parasor/shared/dist/file-uploads.js.map +1 -0
- package/node_modules/@parasor/shared/dist/ide-commands.d.ts +8 -0
- package/node_modules/@parasor/shared/dist/ide-commands.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/ide-commands.js +59 -0
- package/node_modules/@parasor/shared/dist/ide-commands.js.map +1 -0
- package/node_modules/@parasor/shared/dist/pane-commands.d.ts +7 -0
- package/node_modules/@parasor/shared/dist/pane-commands.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/pane-commands.js +47 -0
- package/node_modules/@parasor/shared/dist/pane-commands.js.map +1 -0
- package/node_modules/@parasor/shared/dist/pane-model.d.ts +63 -0
- package/node_modules/@parasor/shared/dist/pane-model.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/pane-model.js +89 -0
- package/node_modules/@parasor/shared/dist/pane-model.js.map +1 -0
- package/node_modules/@parasor/shared/dist/panes.d.ts +33 -0
- package/node_modules/@parasor/shared/dist/panes.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/panes.js +2 -0
- package/node_modules/@parasor/shared/dist/panes.js.map +1 -0
- package/node_modules/@parasor/shared/dist/runtime.d.ts +180 -0
- package/node_modules/@parasor/shared/dist/runtime.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/runtime.js +2 -0
- package/node_modules/@parasor/shared/dist/runtime.js.map +1 -0
- package/node_modules/@parasor/shared/dist/state.d.ts +192 -0
- package/node_modules/@parasor/shared/dist/state.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/state.js +10 -0
- package/node_modules/@parasor/shared/dist/state.js.map +1 -0
- package/node_modules/@parasor/shared/dist/terminal.d.ts +191 -0
- package/node_modules/@parasor/shared/dist/terminal.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/terminal.js +174 -0
- package/node_modules/@parasor/shared/dist/terminal.js.map +1 -0
- package/node_modules/@parasor/shared/dist/types.d.ts +13 -0
- package/node_modules/@parasor/shared/dist/types.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/types.js +13 -0
- package/node_modules/@parasor/shared/dist/types.js.map +1 -0
- package/node_modules/@parasor/shared/dist/worktree-local-files.d.ts +14 -0
- package/node_modules/@parasor/shared/dist/worktree-local-files.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/worktree-local-files.js +41 -0
- package/node_modules/@parasor/shared/dist/worktree-local-files.js.map +1 -0
- package/node_modules/@parasor/shared/dist/ws-events.d.ts +152 -0
- package/node_modules/@parasor/shared/dist/ws-events.d.ts.map +1 -0
- package/node_modules/@parasor/shared/dist/ws-events.js +2 -0
- package/node_modules/@parasor/shared/dist/ws-events.js.map +1 -0
- package/node_modules/@parasor/shared/package.json +13 -0
- package/package.json +61 -0
- package/server/agent-detector/agent-state-store.d.ts +23 -0
- package/server/agent-detector/agent-state-store.d.ts.map +1 -0
- package/server/agent-detector/agent-state-store.js +110 -0
- package/server/agent-detector/agent-state-store.js.map +1 -0
- package/server/agent-detector/detector.d.ts +80 -0
- package/server/agent-detector/detector.d.ts.map +1 -0
- package/server/agent-detector/detector.js +219 -0
- package/server/agent-detector/detector.js.map +1 -0
- package/server/agent-detector/event-map.d.ts +25 -0
- package/server/agent-detector/event-map.d.ts.map +1 -0
- package/server/agent-detector/event-map.js +136 -0
- package/server/agent-detector/event-map.js.map +1 -0
- package/server/agent-detector/manual-agent-tracker.d.ts +19 -0
- package/server/agent-detector/manual-agent-tracker.d.ts.map +1 -0
- package/server/agent-detector/manual-agent-tracker.js +123 -0
- package/server/agent-detector/manual-agent-tracker.js.map +1 -0
- package/server/agent-detector/output-eligibility.d.ts +3 -0
- package/server/agent-detector/output-eligibility.d.ts.map +1 -0
- package/server/agent-detector/output-eligibility.js +39 -0
- package/server/agent-detector/output-eligibility.js.map +1 -0
- package/server/application/files/errors.d.ts +28 -0
- package/server/application/files/errors.d.ts.map +1 -0
- package/server/application/files/errors.js +55 -0
- package/server/application/files/errors.js.map +1 -0
- package/server/application/files/local-filesystem.d.ts +36 -0
- package/server/application/files/local-filesystem.d.ts.map +1 -0
- package/server/application/files/local-filesystem.js +171 -0
- package/server/application/files/local-filesystem.js.map +1 -0
- package/server/application/files/project-file-queries.d.ts +16 -0
- package/server/application/files/project-file-queries.d.ts.map +1 -0
- package/server/application/files/project-file-queries.js +126 -0
- package/server/application/files/project-file-queries.js.map +1 -0
- package/server/application/integrations/errors.d.ts +16 -0
- package/server/application/integrations/errors.d.ts.map +1 -0
- package/server/application/integrations/errors.js +31 -0
- package/server/application/integrations/errors.js.map +1 -0
- package/server/application/integrations/hook-notify.d.ts +32 -0
- package/server/application/integrations/hook-notify.d.ts.map +1 -0
- package/server/application/integrations/hook-notify.js +118 -0
- package/server/application/integrations/hook-notify.js.map +1 -0
- package/server/application/integrations/open-url.d.ts +11 -0
- package/server/application/integrations/open-url.d.ts.map +1 -0
- package/server/application/integrations/open-url.js +23 -0
- package/server/application/integrations/open-url.js.map +1 -0
- package/server/application/ports.d.ts +11 -0
- package/server/application/ports.d.ts.map +1 -0
- package/server/application/ports.js +2 -0
- package/server/application/ports.js.map +1 -0
- package/server/application/workspace/errors.d.ts +21 -0
- package/server/application/workspace/errors.d.ts.map +1 -0
- package/server/application/workspace/errors.js +21 -0
- package/server/application/workspace/errors.js.map +1 -0
- package/server/application/workspace/pane-commands.d.ts +47 -0
- package/server/application/workspace/pane-commands.d.ts.map +1 -0
- package/server/application/workspace/pane-commands.js +193 -0
- package/server/application/workspace/pane-commands.js.map +1 -0
- package/server/application/workspace/project-commands.d.ts +34 -0
- package/server/application/workspace/project-commands.d.ts.map +1 -0
- package/server/application/workspace/project-commands.js +81 -0
- package/server/application/workspace/project-commands.js.map +1 -0
- package/server/application/workspace/project-queries.d.ts +21 -0
- package/server/application/workspace/project-queries.d.ts.map +1 -0
- package/server/application/workspace/project-queries.js +216 -0
- package/server/application/workspace/project-queries.js.map +1 -0
- package/server/application/workspace/session-commands.d.ts +24 -0
- package/server/application/workspace/session-commands.d.ts.map +1 -0
- package/server/application/workspace/session-commands.js +123 -0
- package/server/application/workspace/session-commands.js.map +1 -0
- package/server/application/workspace/session-queries.d.ts +14 -0
- package/server/application/workspace/session-queries.d.ts.map +1 -0
- package/server/application/workspace/session-queries.js +47 -0
- package/server/application/workspace/session-queries.js.map +1 -0
- package/server/application/workspace/worktree-commands.d.ts +98 -0
- package/server/application/workspace/worktree-commands.d.ts.map +1 -0
- package/server/application/workspace/worktree-commands.js +323 -0
- package/server/application/workspace/worktree-commands.js.map +1 -0
- package/server/application/workspace/worktree-local-files.d.ts +11 -0
- package/server/application/workspace/worktree-local-files.d.ts.map +1 -0
- package/server/application/workspace/worktree-local-files.js +223 -0
- package/server/application/workspace/worktree-local-files.js.map +1 -0
- package/server/application/workspace/worktree-reconcile.d.ts +21 -0
- package/server/application/workspace/worktree-reconcile.d.ts.map +1 -0
- package/server/application/workspace/worktree-reconcile.js +49 -0
- package/server/application/workspace/worktree-reconcile.js.map +1 -0
- package/server/auth/origin.d.ts +17 -0
- package/server/auth/origin.d.ts.map +1 -0
- package/server/auth/origin.js +93 -0
- package/server/auth/origin.js.map +1 -0
- package/server/auth/pairing-token.d.ts +28 -0
- package/server/auth/pairing-token.d.ts.map +1 -0
- package/server/auth/pairing-token.js +46 -0
- package/server/auth/pairing-token.js.map +1 -0
- package/server/auth/token-exchange.d.ts +11 -0
- package/server/auth/token-exchange.d.ts.map +1 -0
- package/server/auth/token-exchange.js +27 -0
- package/server/auth/token-exchange.js.map +1 -0
- package/server/auth/token.d.ts +18 -0
- package/server/auth/token.d.ts.map +1 -0
- package/server/auth/token.js +115 -0
- package/server/auth/token.js.map +1 -0
- package/server/bootstrap/create-app-server.d.ts +49 -0
- package/server/bootstrap/create-app-server.d.ts.map +1 -0
- package/server/bootstrap/create-app-server.js +154 -0
- package/server/bootstrap/create-app-server.js.map +1 -0
- package/server/bootstrap/project-runtime.d.ts +29 -0
- package/server/bootstrap/project-runtime.d.ts.map +1 -0
- package/server/bootstrap/project-runtime.js +253 -0
- package/server/bootstrap/project-runtime.js.map +1 -0
- package/server/bootstrap/pty-env.d.ts +3 -0
- package/server/bootstrap/pty-env.d.ts.map +1 -0
- package/server/bootstrap/pty-env.js +15 -0
- package/server/bootstrap/pty-env.js.map +1 -0
- package/server/bootstrap/reconcile-state.d.ts +16 -0
- package/server/bootstrap/reconcile-state.d.ts.map +1 -0
- package/server/bootstrap/reconcile-state.js +73 -0
- package/server/bootstrap/reconcile-state.js.map +1 -0
- package/server/bootstrap/runtime-loops.d.ts +51 -0
- package/server/bootstrap/runtime-loops.d.ts.map +1 -0
- package/server/bootstrap/runtime-loops.js +189 -0
- package/server/bootstrap/runtime-loops.js.map +1 -0
- package/server/bootstrap/runtime-port.d.ts +4 -0
- package/server/bootstrap/runtime-port.d.ts.map +1 -0
- package/server/bootstrap/runtime-port.js +52 -0
- package/server/bootstrap/runtime-port.js.map +1 -0
- package/server/bootstrap/safety-gate.d.ts +22 -0
- package/server/bootstrap/safety-gate.d.ts.map +1 -0
- package/server/bootstrap/safety-gate.js +43 -0
- package/server/bootstrap/safety-gate.js.map +1 -0
- package/server/bootstrap/shutdown-marker.d.ts +35 -0
- package/server/bootstrap/shutdown-marker.d.ts.map +1 -0
- package/server/bootstrap/shutdown-marker.js +100 -0
- package/server/bootstrap/shutdown-marker.js.map +1 -0
- package/server/bootstrap/shutdown-runtime.d.ts +62 -0
- package/server/bootstrap/shutdown-runtime.d.ts.map +1 -0
- package/server/bootstrap/shutdown-runtime.js +66 -0
- package/server/bootstrap/shutdown-runtime.js.map +1 -0
- package/server/bootstrap/startup-banner.d.ts +34 -0
- package/server/bootstrap/startup-banner.d.ts.map +1 -0
- package/server/bootstrap/startup-banner.js +114 -0
- package/server/bootstrap/startup-banner.js.map +1 -0
- package/server/bootstrap/wire-runtime.d.ts +42 -0
- package/server/bootstrap/wire-runtime.d.ts.map +1 -0
- package/server/bootstrap/wire-runtime.js +205 -0
- package/server/bootstrap/wire-runtime.js.map +1 -0
- package/server/cli/help.d.ts +3 -0
- package/server/cli/help.d.ts.map +1 -0
- package/server/cli/help.js +39 -0
- package/server/cli/help.js.map +1 -0
- package/server/cli/hook-client.d.ts +12 -0
- package/server/cli/hook-client.d.ts.map +1 -0
- package/server/cli/hook-client.js +81 -0
- package/server/cli/hook-client.js.map +1 -0
- package/server/cli/hook.d.ts +3 -0
- package/server/cli/hook.d.ts.map +1 -0
- package/server/cli/hook.js +152 -0
- package/server/cli/hook.js.map +1 -0
- package/server/cli/main.d.ts +2 -0
- package/server/cli/main.d.ts.map +1 -0
- package/server/cli/main.js +133 -0
- package/server/cli/main.js.map +1 -0
- package/server/cli/notify.d.ts +19 -0
- package/server/cli/notify.d.ts.map +1 -0
- package/server/cli/notify.js +77 -0
- package/server/cli/notify.js.map +1 -0
- package/server/cli/open.d.ts +2 -0
- package/server/cli/open.d.ts.map +1 -0
- package/server/cli/open.js +47 -0
- package/server/cli/open.js.map +1 -0
- package/server/cli/probe-daemon-version.d.ts +46 -0
- package/server/cli/probe-daemon-version.d.ts.map +1 -0
- package/server/cli/probe-daemon-version.js +167 -0
- package/server/cli/probe-daemon-version.js.map +1 -0
- package/server/cli/pty-host.d.ts +36 -0
- package/server/cli/pty-host.d.ts.map +1 -0
- package/server/cli/pty-host.js +390 -0
- package/server/cli/pty-host.js.map +1 -0
- package/server/cli/qr.d.ts +2 -0
- package/server/cli/qr.d.ts.map +1 -0
- package/server/cli/qr.js +70 -0
- package/server/cli/qr.js.map +1 -0
- package/server/cli/restart-confirm.d.ts +33 -0
- package/server/cli/restart-confirm.d.ts.map +1 -0
- package/server/cli/restart-confirm.js +107 -0
- package/server/cli/restart-confirm.js.map +1 -0
- package/server/cli/restart.d.ts +17 -0
- package/server/cli/restart.d.ts.map +1 -0
- package/server/cli/restart.js +145 -0
- package/server/cli/restart.js.map +1 -0
- package/server/cli/service-darwin.d.ts +70 -0
- package/server/cli/service-darwin.d.ts.map +1 -0
- package/server/cli/service-darwin.js +562 -0
- package/server/cli/service-darwin.js.map +1 -0
- package/server/cli/service-linux.d.ts +81 -0
- package/server/cli/service-linux.d.ts.map +1 -0
- package/server/cli/service-linux.js +412 -0
- package/server/cli/service-linux.js.map +1 -0
- package/server/cli/service.d.ts +33 -0
- package/server/cli/service.d.ts.map +1 -0
- package/server/cli/service.js +133 -0
- package/server/cli/service.js.map +1 -0
- package/server/cli/shim-installer.d.ts +35 -0
- package/server/cli/shim-installer.d.ts.map +1 -0
- package/server/cli/shim-installer.js +662 -0
- package/server/cli/shim-installer.js.map +1 -0
- package/server/cli/shim-open.d.ts +2 -0
- package/server/cli/shim-open.d.ts.map +1 -0
- package/server/cli/shim-open.js +128 -0
- package/server/cli/shim-open.js.map +1 -0
- package/server/cli/shutdown-deps.d.ts +41 -0
- package/server/cli/shutdown-deps.d.ts.map +1 -0
- package/server/cli/shutdown-deps.js +158 -0
- package/server/cli/shutdown-deps.js.map +1 -0
- package/server/cli/stop.d.ts +11 -0
- package/server/cli/stop.d.ts.map +1 -0
- package/server/cli/stop.js +123 -0
- package/server/cli/stop.js.map +1 -0
- package/server/cli/unknown-command.d.ts +8 -0
- package/server/cli/unknown-command.d.ts.map +1 -0
- package/server/cli/unknown-command.js +14 -0
- package/server/cli/unknown-command.js.map +1 -0
- package/server/debug/agent-status-recorder.d.ts +57 -0
- package/server/debug/agent-status-recorder.d.ts.map +1 -0
- package/server/debug/agent-status-recorder.js +209 -0
- package/server/debug/agent-status-recorder.js.map +1 -0
- package/server/debug/terminal-trace-recorder.d.ts +41 -0
- package/server/debug/terminal-trace-recorder.d.ts.map +1 -0
- package/server/debug/terminal-trace-recorder.js +112 -0
- package/server/debug/terminal-trace-recorder.js.map +1 -0
- package/server/fonts/catalog.d.ts +35 -0
- package/server/fonts/catalog.d.ts.map +1 -0
- package/server/fonts/catalog.js +76 -0
- package/server/fonts/catalog.js.map +1 -0
- package/server/fonts/installer.d.ts +45 -0
- package/server/fonts/installer.d.ts.map +1 -0
- package/server/fonts/installer.js +201 -0
- package/server/fonts/installer.js.map +1 -0
- package/server/fonts/routes.d.ts +4 -0
- package/server/fonts/routes.d.ts.map +1 -0
- package/server/fonts/routes.js +91 -0
- package/server/fonts/routes.js.map +1 -0
- package/server/fs/drops.d.ts +50 -0
- package/server/fs/drops.d.ts.map +1 -0
- package/server/fs/drops.js +137 -0
- package/server/fs/drops.js.map +1 -0
- package/server/fs/file-uploads.d.ts +57 -0
- package/server/fs/file-uploads.d.ts.map +1 -0
- package/server/fs/file-uploads.js +214 -0
- package/server/fs/file-uploads.js.map +1 -0
- package/server/fs/file-watcher.d.ts +22 -0
- package/server/fs/file-watcher.d.ts.map +1 -0
- package/server/fs/file-watcher.js +105 -0
- package/server/fs/file-watcher.js.map +1 -0
- package/server/fs/git-watcher.d.ts +76 -0
- package/server/fs/git-watcher.d.ts.map +1 -0
- package/server/fs/git-watcher.js +356 -0
- package/server/fs/git-watcher.js.map +1 -0
- package/server/fs/media.d.ts +35 -0
- package/server/fs/media.d.ts.map +1 -0
- package/server/fs/media.js +271 -0
- package/server/fs/media.js.map +1 -0
- package/server/fs/service.d.ts +97 -0
- package/server/fs/service.d.ts.map +1 -0
- package/server/fs/service.js +306 -0
- package/server/fs/service.js.map +1 -0
- package/server/fs/upload-staging.d.ts +76 -0
- package/server/fs/upload-staging.d.ts.map +1 -0
- package/server/fs/upload-staging.js +283 -0
- package/server/fs/upload-staging.js.map +1 -0
- package/server/fs/watcher-lifecycle.d.ts +24 -0
- package/server/fs/watcher-lifecycle.d.ts.map +1 -0
- package/server/fs/watcher-lifecycle.js +105 -0
- package/server/fs/watcher-lifecycle.js.map +1 -0
- package/server/index.d.ts +17 -0
- package/server/index.d.ts.map +1 -0
- package/server/index.js +510 -0
- package/server/index.js.map +1 -0
- package/server/ipc/socket-server.d.ts +28 -0
- package/server/ipc/socket-server.d.ts.map +1 -0
- package/server/ipc/socket-server.js +206 -0
- package/server/ipc/socket-server.js.map +1 -0
- package/server/lib/git-exec.d.ts +38 -0
- package/server/lib/git-exec.d.ts.map +1 -0
- package/server/lib/git-exec.js +96 -0
- package/server/lib/git-exec.js.map +1 -0
- package/server/lib/open-in-ide.d.ts +22 -0
- package/server/lib/open-in-ide.d.ts.map +1 -0
- package/server/lib/open-in-ide.js +90 -0
- package/server/lib/open-in-ide.js.map +1 -0
- package/server/lib/open-in-os.d.ts +20 -0
- package/server/lib/open-in-os.d.ts.map +1 -0
- package/server/lib/open-in-os.js +51 -0
- package/server/lib/open-in-os.js.map +1 -0
- package/server/lib/path.d.ts +2 -0
- package/server/lib/path.d.ts.map +1 -0
- package/server/lib/path.js +10 -0
- package/server/lib/path.js.map +1 -0
- package/server/lib/promise-mutex.d.ts +7 -0
- package/server/lib/promise-mutex.d.ts.map +1 -0
- package/server/lib/promise-mutex.js +26 -0
- package/server/lib/promise-mutex.js.map +1 -0
- package/server/lib/sd-notify.d.ts +8 -0
- package/server/lib/sd-notify.d.ts.map +1 -0
- package/server/lib/sd-notify.js +27 -0
- package/server/lib/sd-notify.js.map +1 -0
- package/server/net/local-machine.d.ts +7 -0
- package/server/net/local-machine.d.ts.map +1 -0
- package/server/net/local-machine.js +79 -0
- package/server/net/local-machine.js.map +1 -0
- package/server/net/reachable-host.d.ts +12 -0
- package/server/net/reachable-host.d.ts.map +1 -0
- package/server/net/reachable-host.js +25 -0
- package/server/net/reachable-host.js.map +1 -0
- package/server/network/endpoints.d.ts +14 -0
- package/server/network/endpoints.d.ts.map +1 -0
- package/server/network/endpoints.js +104 -0
- package/server/network/endpoints.js.map +1 -0
- package/server/network/qr.d.ts +16 -0
- package/server/network/qr.d.ts.map +1 -0
- package/server/network/qr.js +89 -0
- package/server/network/qr.js.map +1 -0
- package/server/port-forwarder/forwarder.d.ts +47 -0
- package/server/port-forwarder/forwarder.d.ts.map +1 -0
- package/server/port-forwarder/forwarder.js +159 -0
- package/server/port-forwarder/forwarder.js.map +1 -0
- package/server/port-scanner/scanner.d.ts +24 -0
- package/server/port-scanner/scanner.d.ts.map +1 -0
- package/server/port-scanner/scanner.js +193 -0
- package/server/port-scanner/scanner.js.map +1 -0
- package/server/pty/connection-lifecycle.d.ts +50 -0
- package/server/pty/connection-lifecycle.d.ts.map +1 -0
- package/server/pty/connection-lifecycle.js +113 -0
- package/server/pty/connection-lifecycle.js.map +1 -0
- package/server/pty/daemon-connect.d.ts +52 -0
- package/server/pty/daemon-connect.d.ts.map +1 -0
- package/server/pty/daemon-connect.js +62 -0
- package/server/pty/daemon-connect.js.map +1 -0
- package/server/pty/handshake-timeout-race.d.ts +22 -0
- package/server/pty/handshake-timeout-race.d.ts.map +1 -0
- package/server/pty/handshake-timeout-race.js +23 -0
- package/server/pty/handshake-timeout-race.js.map +1 -0
- package/server/pty/headless-replay-snapshot.d.ts +28 -0
- package/server/pty/headless-replay-snapshot.d.ts.map +1 -0
- package/server/pty/headless-replay-snapshot.js +285 -0
- package/server/pty/headless-replay-snapshot.js.map +1 -0
- package/server/pty/headless-terminal-state-cache.d.ts +31 -0
- package/server/pty/headless-terminal-state-cache.d.ts.map +1 -0
- package/server/pty/headless-terminal-state-cache.js +119 -0
- package/server/pty/headless-terminal-state-cache.js.map +1 -0
- package/server/pty/hello-ack-validator.d.ts +15 -0
- package/server/pty/hello-ack-validator.d.ts.map +1 -0
- package/server/pty/hello-ack-validator.js +30 -0
- package/server/pty/hello-ack-validator.js.map +1 -0
- package/server/pty/host-daemon/bootstrap.d.ts +100 -0
- package/server/pty/host-daemon/bootstrap.d.ts.map +1 -0
- package/server/pty/host-daemon/bootstrap.js +611 -0
- package/server/pty/host-daemon/bootstrap.js.map +1 -0
- package/server/pty/host-daemon/daemon.d.ts +111 -0
- package/server/pty/host-daemon/daemon.d.ts.map +1 -0
- package/server/pty/host-daemon/daemon.js +648 -0
- package/server/pty/host-daemon/daemon.js.map +1 -0
- package/server/pty/host-daemon/entry.d.ts +3 -0
- package/server/pty/host-daemon/entry.d.ts.map +1 -0
- package/server/pty/host-daemon/entry.js +72 -0
- package/server/pty/host-daemon/entry.js.map +1 -0
- package/server/pty/host-daemon/lockfile.d.ts +12 -0
- package/server/pty/host-daemon/lockfile.d.ts.map +1 -0
- package/server/pty/host-daemon/lockfile.js +120 -0
- package/server/pty/host-daemon/lockfile.js.map +1 -0
- package/server/pty/host-daemon/mode-marker.d.ts +77 -0
- package/server/pty/host-daemon/mode-marker.d.ts.map +1 -0
- package/server/pty/host-daemon/mode-marker.js +228 -0
- package/server/pty/host-daemon/mode-marker.js.map +1 -0
- package/server/pty/host-daemon/orphan-cleanup.d.ts +42 -0
- package/server/pty/host-daemon/orphan-cleanup.d.ts.map +1 -0
- package/server/pty/host-daemon/orphan-cleanup.js +84 -0
- package/server/pty/host-daemon/orphan-cleanup.js.map +1 -0
- package/server/pty/host-daemon/paths.d.ts +10 -0
- package/server/pty/host-daemon/paths.d.ts.map +1 -0
- package/server/pty/host-daemon/paths.js +56 -0
- package/server/pty/host-daemon/paths.js.map +1 -0
- package/server/pty/host-daemon/server-connection.d.ts +44 -0
- package/server/pty/host-daemon/server-connection.d.ts.map +1 -0
- package/server/pty/host-daemon/server-connection.js +100 -0
- package/server/pty/host-daemon/server-connection.js.map +1 -0
- package/server/pty/host-daemon/service-detection.d.ts +24 -0
- package/server/pty/host-daemon/service-detection.d.ts.map +1 -0
- package/server/pty/host-daemon/service-detection.js +16 -0
- package/server/pty/host-daemon/service-detection.js.map +1 -0
- package/server/pty/host-daemon/socket-ready.d.ts +22 -0
- package/server/pty/host-daemon/socket-ready.d.ts.map +1 -0
- package/server/pty/host-daemon/socket-ready.js +33 -0
- package/server/pty/host-daemon/socket-ready.js.map +1 -0
- package/server/pty/host-daemon/spawn-daemon.d.ts +45 -0
- package/server/pty/host-daemon/spawn-daemon.d.ts.map +1 -0
- package/server/pty/host-daemon/spawn-daemon.js +155 -0
- package/server/pty/host-daemon/spawn-daemon.js.map +1 -0
- package/server/pty/host-daemon/terminate-daemon.d.ts +16 -0
- package/server/pty/host-daemon/terminate-daemon.d.ts.map +1 -0
- package/server/pty/host-daemon/terminate-daemon.js +128 -0
- package/server/pty/host-daemon/terminate-daemon.js.map +1 -0
- package/server/pty/host-protocol/frames.d.ts +110 -0
- package/server/pty/host-protocol/frames.d.ts.map +1 -0
- package/server/pty/host-protocol/frames.js +255 -0
- package/server/pty/host-protocol/frames.js.map +1 -0
- package/server/pty/host-protocol/messages.d.ts +140 -0
- package/server/pty/host-protocol/messages.d.ts.map +1 -0
- package/server/pty/host-protocol/messages.js +117 -0
- package/server/pty/host-protocol/messages.js.map +1 -0
- package/server/pty/host.d.ts +273 -0
- package/server/pty/host.d.ts.map +1 -0
- package/server/pty/host.js +184 -0
- package/server/pty/host.js.map +1 -0
- package/server/pty/in-process-host.d.ts +224 -0
- package/server/pty/in-process-host.d.ts.map +1 -0
- package/server/pty/in-process-host.js +1183 -0
- package/server/pty/in-process-host.js.map +1 -0
- package/server/pty/osc7-lifecycle.d.ts +8 -0
- package/server/pty/osc7-lifecycle.d.ts.map +1 -0
- package/server/pty/osc7-lifecycle.js +22 -0
- package/server/pty/osc7-lifecycle.js.map +1 -0
- package/server/pty/osc7-parser.d.ts +23 -0
- package/server/pty/osc7-parser.d.ts.map +1 -0
- package/server/pty/osc7-parser.js +91 -0
- package/server/pty/osc7-parser.js.map +1 -0
- package/server/pty/remote-host.d.ts +188 -0
- package/server/pty/remote-host.d.ts.map +1 -0
- package/server/pty/remote-host.js +810 -0
- package/server/pty/remote-host.js.map +1 -0
- package/server/pty/request-correlator.d.ts +59 -0
- package/server/pty/request-correlator.d.ts.map +1 -0
- package/server/pty/request-correlator.js +75 -0
- package/server/pty/request-correlator.js.map +1 -0
- package/server/pty/scrollback-log.d.ts +130 -0
- package/server/pty/scrollback-log.d.ts.map +1 -0
- package/server/pty/scrollback-log.js +344 -0
- package/server/pty/scrollback-log.js.map +1 -0
- package/server/pty/scrollback-sanitize.d.ts +2 -0
- package/server/pty/scrollback-sanitize.d.ts.map +1 -0
- package/server/pty/scrollback-sanitize.js +54 -0
- package/server/pty/scrollback-sanitize.js.map +1 -0
- package/server/pty/session-mirror.d.ts +67 -0
- package/server/pty/session-mirror.d.ts.map +1 -0
- package/server/pty/session-mirror.js +112 -0
- package/server/pty/session-mirror.js.map +1 -0
- package/server/pty/session-policy.d.ts +85 -0
- package/server/pty/session-policy.d.ts.map +1 -0
- package/server/pty/session-policy.js +186 -0
- package/server/pty/session-policy.js.map +1 -0
- package/server/pty/version-mismatch-recovery.d.ts +71 -0
- package/server/pty/version-mismatch-recovery.d.ts.map +1 -0
- package/server/pty/version-mismatch-recovery.js +63 -0
- package/server/pty/version-mismatch-recovery.js.map +1 -0
- package/server/routes/debug-agent-status.d.ts +5 -0
- package/server/routes/debug-agent-status.d.ts.map +1 -0
- package/server/routes/debug-agent-status.js +22 -0
- package/server/routes/debug-agent-status.js.map +1 -0
- package/server/routes/debug-diagnostics.d.ts +8 -0
- package/server/routes/debug-diagnostics.d.ts.map +1 -0
- package/server/routes/debug-diagnostics.js +34 -0
- package/server/routes/debug-diagnostics.js.map +1 -0
- package/server/routes/debug-terminal-trace.d.ts +16 -0
- package/server/routes/debug-terminal-trace.d.ts.map +1 -0
- package/server/routes/debug-terminal-trace.js +545 -0
- package/server/routes/debug-terminal-trace.js.map +1 -0
- package/server/routes/drops.d.ts +13 -0
- package/server/routes/drops.d.ts.map +1 -0
- package/server/routes/drops.js +126 -0
- package/server/routes/drops.js.map +1 -0
- package/server/routes/file-uploads.d.ts +9 -0
- package/server/routes/file-uploads.d.ts.map +1 -0
- package/server/routes/file-uploads.js +119 -0
- package/server/routes/file-uploads.js.map +1 -0
- package/server/routes/files.d.ts +9 -0
- package/server/routes/files.d.ts.map +1 -0
- package/server/routes/files.js +441 -0
- package/server/routes/files.js.map +1 -0
- package/server/routes/filesystem.d.ts +6 -0
- package/server/routes/filesystem.d.ts.map +1 -0
- package/server/routes/filesystem.js +76 -0
- package/server/routes/filesystem.js.map +1 -0
- package/server/routes/git.d.ts +38 -0
- package/server/routes/git.d.ts.map +1 -0
- package/server/routes/git.js +585 -0
- package/server/routes/git.js.map +1 -0
- package/server/routes/healthz.d.ts +8 -0
- package/server/routes/healthz.d.ts.map +1 -0
- package/server/routes/healthz.js +24 -0
- package/server/routes/healthz.js.map +1 -0
- package/server/routes/hook.d.ts +14 -0
- package/server/routes/hook.d.ts.map +1 -0
- package/server/routes/hook.js +86 -0
- package/server/routes/hook.js.map +1 -0
- package/server/routes/ide-commands.d.ts +9 -0
- package/server/routes/ide-commands.d.ts.map +1 -0
- package/server/routes/ide-commands.js +23 -0
- package/server/routes/ide-commands.js.map +1 -0
- package/server/routes/lib/resolve-worktree.d.ts +30 -0
- package/server/routes/lib/resolve-worktree.d.ts.map +1 -0
- package/server/routes/lib/resolve-worktree.js +35 -0
- package/server/routes/lib/resolve-worktree.js.map +1 -0
- package/server/routes/open.d.ts +4 -0
- package/server/routes/open.d.ts.map +1 -0
- package/server/routes/open.js +21 -0
- package/server/routes/open.js.map +1 -0
- package/server/routes/pane-commands.d.ts +9 -0
- package/server/routes/pane-commands.d.ts.map +1 -0
- package/server/routes/pane-commands.js +23 -0
- package/server/routes/pane-commands.js.map +1 -0
- package/server/routes/projects.d.ts +15 -0
- package/server/routes/projects.d.ts.map +1 -0
- package/server/routes/projects.js +363 -0
- package/server/routes/projects.js.map +1 -0
- package/server/routes/server-notices.d.ts +4 -0
- package/server/routes/server-notices.d.ts.map +1 -0
- package/server/routes/server-notices.js +29 -0
- package/server/routes/server-notices.js.map +1 -0
- package/server/routes/service-config.d.ts +11 -0
- package/server/routes/service-config.d.ts.map +1 -0
- package/server/routes/service-config.js +64 -0
- package/server/routes/service-config.js.map +1 -0
- package/server/routes/sessions.d.ts +7 -0
- package/server/routes/sessions.d.ts.map +1 -0
- package/server/routes/sessions.js +218 -0
- package/server/routes/sessions.js.map +1 -0
- package/server/service/caffeinate.d.ts +33 -0
- package/server/service/caffeinate.d.ts.map +1 -0
- package/server/service/caffeinate.js +72 -0
- package/server/service/caffeinate.js.map +1 -0
- package/server/state/app-state.d.ts +167 -0
- package/server/state/app-state.d.ts.map +1 -0
- package/server/state/app-state.js +335 -0
- package/server/state/app-state.js.map +1 -0
- package/server/state/project-manager.d.ts +30 -0
- package/server/state/project-manager.d.ts.map +1 -0
- package/server/state/project-manager.js +128 -0
- package/server/state/project-manager.js.map +1 -0
- package/server/state/server-notices.d.ts +12 -0
- package/server/state/server-notices.d.ts.map +1 -0
- package/server/state/server-notices.js +32 -0
- package/server/state/server-notices.js.map +1 -0
- package/server/state/worktree-cache.d.ts +25 -0
- package/server/state/worktree-cache.d.ts.map +1 -0
- package/server/state/worktree-cache.js +53 -0
- package/server/state/worktree-cache.js.map +1 -0
- package/server/ws/events.d.ts +45 -0
- package/server/ws/events.d.ts.map +1 -0
- package/server/ws/events.js +134 -0
- package/server/ws/events.js.map +1 -0
- package/server/ws/keepalive.d.ts +27 -0
- package/server/ws/keepalive.d.ts.map +1 -0
- package/server/ws/keepalive.js +63 -0
- package/server/ws/keepalive.js.map +1 -0
- package/server/ws/terminal-attach.d.ts +13 -0
- package/server/ws/terminal-attach.d.ts.map +1 -0
- package/server/ws/terminal-attach.js +233 -0
- package/server/ws/terminal-attach.js.map +1 -0
- package/server/ws/terminal-flow.d.ts +17 -0
- package/server/ws/terminal-flow.d.ts.map +1 -0
- package/server/ws/terminal-flow.js +64 -0
- package/server/ws/terminal-flow.js.map +1 -0
- package/server/ws/terminal.d.ts +69 -0
- package/server/ws/terminal.d.ts.map +1 -0
- package/server/ws/terminal.js +311 -0
- package/server/ws/terminal.js.map +1 -0
- package/web/assets/EditorPane-CzzT3iYY.js +123 -0
- package/web/assets/SymbolsNerdFontMono-Regular-CwEZqMeU.woff2 +0 -0
- package/web/assets/TerminalPane-CjbYzePr.js +68 -0
- package/web/assets/TerminalPane-DkTCHfhq.css +1 -0
- package/web/assets/file-icons-JBi09j0r.js +6 -0
- package/web/assets/index-CTTkRpnn.css +2 -0
- package/web/assets/index-CmhewzMp.js +34 -0
- package/web/assets/session-resume-7f-tB-ZU.js +2 -0
- package/web/assets/terminal-trace-PuuFRybC.js +2803 -0
- package/web/assets/useVirtualKeyboard-DgJb9u9d.js +1 -0
- package/web/index.html +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-linux.d.ts","sourceRoot":"","sources":["../../src/cli/service-linux.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAoBD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAiChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,KAAK,IAAI,CAAC;QAC9D,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACpD,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,IAAI,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;KACpC,CAAC;IACF,KAAK,CAAC,EAAE,CACN,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,KACX;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CA6YzE"}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync as realExistsSync, mkdirSync as realMkdirSync, readFileSync as realReadFileSync, rmSync as realRmSync, writeFileSync as realWriteFileSync, } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { resolveDaemonPaths } from "../pty/host-daemon/paths.js";
|
|
6
|
+
import { waitForDaemonSocket } from "../pty/host-daemon/socket-ready.js";
|
|
7
|
+
export const SERVER_UNIT = "parasor.service";
|
|
8
|
+
export const DAEMON_UNIT = "parasor-pty-host.service";
|
|
9
|
+
function escapeSystemdEnvValue(v) {
|
|
10
|
+
/*
|
|
11
|
+
* systemd Environment= values are double-quoted strings. Backslash and
|
|
12
|
+
* double-quote must be escaped; newlines are illegal inside quoted
|
|
13
|
+
* values and must be rejected (not silently stripped -- the unit would
|
|
14
|
+
* fail to load with a confusing "Failed to parse environment line"
|
|
15
|
+
* error). PATH/HOME never contain these in practice, but harden the
|
|
16
|
+
* code path so a stray characters in custom env do not produce a
|
|
17
|
+
* malformed unit file.
|
|
18
|
+
*/
|
|
19
|
+
if (v.includes("\n") || v.includes("\r")) {
|
|
20
|
+
throw new Error(`service install: environment value contains a newline (rejected by systemd): ${JSON.stringify(v)}`);
|
|
21
|
+
}
|
|
22
|
+
return v.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
23
|
+
}
|
|
24
|
+
export function renderUnit(p) {
|
|
25
|
+
const envLines = Object.entries(p.env)
|
|
26
|
+
.map(([k, v]) => `Environment="${k}=${escapeSystemdEnvValue(v)}"`)
|
|
27
|
+
.join("\n");
|
|
28
|
+
const after = p.after ?? "network.target";
|
|
29
|
+
const notifyBlock = p.notify === false ? "Type=simple" : "Type=notify\nWatchdogSec=30";
|
|
30
|
+
const restart = p.restartOnAlways
|
|
31
|
+
? "Restart=always\nRestartSec=2"
|
|
32
|
+
: "Restart=on-failure\nRestartSec=3";
|
|
33
|
+
const killMode = p.killModeMixed ? "KillMode=mixed\nTimeoutStopSec=10\n" : "";
|
|
34
|
+
const startLimitBlock = p.unlimitedStartRate
|
|
35
|
+
? "\nStartLimitIntervalSec=0\nStartLimitBurst=0"
|
|
36
|
+
: "";
|
|
37
|
+
const preventBlock = p.restartPreventExitStatus && p.restartPreventExitStatus.length > 0
|
|
38
|
+
? `RestartPreventExitStatus=${p.restartPreventExitStatus.join(" ")}\n`
|
|
39
|
+
: "";
|
|
40
|
+
return `[Unit]
|
|
41
|
+
Description=${p.description}
|
|
42
|
+
After=${after}${startLimitBlock}
|
|
43
|
+
|
|
44
|
+
[Service]
|
|
45
|
+
${notifyBlock}
|
|
46
|
+
ExecStart=${p.node} ${p.bin}
|
|
47
|
+
${restart}
|
|
48
|
+
${preventBlock}${killMode}StandardOutput=append:${p.stdoutLog}
|
|
49
|
+
StandardError=append:${p.stderrLog}
|
|
50
|
+
${envLines}
|
|
51
|
+
|
|
52
|
+
[Install]
|
|
53
|
+
WantedBy=default.target
|
|
54
|
+
`;
|
|
55
|
+
}
|
|
56
|
+
export function createLinuxAdapter(deps) {
|
|
57
|
+
const home = deps.home ?? homedir();
|
|
58
|
+
const configDir = deps.configDir ?? join(home, ".config", "parasor");
|
|
59
|
+
const execPath = deps.execPath ?? process.execPath;
|
|
60
|
+
const fs = deps.fs ?? {
|
|
61
|
+
mkdirSync: (p, o) => realMkdirSync(p, { recursive: true, ...o }),
|
|
62
|
+
writeFileSync: realWriteFileSync,
|
|
63
|
+
readFileSync: (p) => realReadFileSync(p, "utf8"),
|
|
64
|
+
rmSync: (p, o) => realRmSync(p, { force: true, ...o }),
|
|
65
|
+
existsSync: realExistsSync,
|
|
66
|
+
};
|
|
67
|
+
const spawn = deps.spawn ??
|
|
68
|
+
((cmd, args) => {
|
|
69
|
+
const r = spawnSync(cmd, args, { encoding: "utf8" });
|
|
70
|
+
return {
|
|
71
|
+
status: r.status,
|
|
72
|
+
stdout: r.stdout ?? "",
|
|
73
|
+
stderr: r.stderr ?? "",
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
const log = deps.log ?? ((m) => console.log(m));
|
|
77
|
+
const daemonPaths = resolveDaemonPaths();
|
|
78
|
+
// R1/R2 -- default to the real poll when no spawn mock is
|
|
79
|
+
// injected (production path). Tests inject both `spawn` and `waitFn`; the
|
|
80
|
+
// `deps.spawn` gate ensures existing tests that supply a mock spawn but omit
|
|
81
|
+
// `waitFn` get a no-op instead of a live 5 s poll against a non-existent socket.
|
|
82
|
+
const waitFn = deps.waitFn ??
|
|
83
|
+
(deps.spawn
|
|
84
|
+
? (_socketPath) => Promise.resolve()
|
|
85
|
+
: waitForDaemonSocket);
|
|
86
|
+
const unitDir = join(home, ".config", "systemd", "user");
|
|
87
|
+
const serverUnitPath = join(unitDir, SERVER_UNIT);
|
|
88
|
+
const daemonUnitPath = join(unitDir, DAEMON_UNIT);
|
|
89
|
+
const serverStdoutLog = join(configDir, "service.log");
|
|
90
|
+
const serverStderrLog = join(configDir, "service.err.log");
|
|
91
|
+
const daemonStdoutLog = join(configDir, "pty-host.out.log");
|
|
92
|
+
const daemonStderrLog = join(configDir, "pty-host.err.log");
|
|
93
|
+
function basePathEnv() {
|
|
94
|
+
return ["/usr/local/bin", "/usr/bin", "/bin", process.env.PATH ?? ""]
|
|
95
|
+
.filter(Boolean)
|
|
96
|
+
.join(":");
|
|
97
|
+
}
|
|
98
|
+
function buildServerUnitBody() {
|
|
99
|
+
/*
|
|
100
|
+
* Service install is the canonical
|
|
101
|
+
* supervisor path, so the server unit is wired for daemon mode by
|
|
102
|
+
* default. PARASOR_PTY_DAEMON=1 makes the server connect to the
|
|
103
|
+
* daemon socket instead of running PTYs in-process;
|
|
104
|
+
* PARASOR_PTY_AUTOSTART=0 stops it from forking a competing daemon
|
|
105
|
+
* because systemd already owns one (parasor-pty-host.service).
|
|
106
|
+
*/
|
|
107
|
+
const env = {
|
|
108
|
+
HOME: home,
|
|
109
|
+
PATH: basePathEnv(),
|
|
110
|
+
PARASOR_PTY_DAEMON: "1",
|
|
111
|
+
PARASOR_PTY_AUTOSTART: "0",
|
|
112
|
+
};
|
|
113
|
+
return renderUnit({
|
|
114
|
+
description: "parasor terminal multiplexer",
|
|
115
|
+
node: execPath,
|
|
116
|
+
bin: deps.binPath,
|
|
117
|
+
stdoutLog: serverStdoutLog,
|
|
118
|
+
stderrLog: serverStderrLog,
|
|
119
|
+
env,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function writeServerUnit() {
|
|
123
|
+
fs.mkdirSync(unitDir, { recursive: true });
|
|
124
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
125
|
+
fs.writeFileSync(serverUnitPath, buildServerUnitBody());
|
|
126
|
+
}
|
|
127
|
+
function buildDaemonUnitBody() {
|
|
128
|
+
const env = {
|
|
129
|
+
HOME: home,
|
|
130
|
+
PATH: basePathEnv(),
|
|
131
|
+
};
|
|
132
|
+
return renderUnit({
|
|
133
|
+
description: "parasor PTY host daemon",
|
|
134
|
+
node: execPath,
|
|
135
|
+
bin: deps.daemonEntryPath,
|
|
136
|
+
stdoutLog: daemonStdoutLog,
|
|
137
|
+
stderrLog: daemonStderrLog,
|
|
138
|
+
env,
|
|
139
|
+
after: "default.target",
|
|
140
|
+
notify: false,
|
|
141
|
+
restartOnAlways: true,
|
|
142
|
+
killModeMixed: true,
|
|
143
|
+
unlimitedStartRate: true,
|
|
144
|
+
restartPreventExitStatus: [2],
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function writeDaemonUnit() {
|
|
148
|
+
fs.mkdirSync(unitDir, { recursive: true });
|
|
149
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
150
|
+
fs.writeFileSync(daemonUnitPath, buildDaemonUnitBody());
|
|
151
|
+
}
|
|
152
|
+
function daemonReload() {
|
|
153
|
+
spawn("systemctl", ["--user", "daemon-reload"]);
|
|
154
|
+
}
|
|
155
|
+
function enableNow(unit) {
|
|
156
|
+
return spawn("systemctl", ["--user", "enable", "--now", unit]);
|
|
157
|
+
}
|
|
158
|
+
function disableNow(unit) {
|
|
159
|
+
return spawn("systemctl", ["--user", "disable", "--now", unit]);
|
|
160
|
+
}
|
|
161
|
+
function restartUnit(unit) {
|
|
162
|
+
return spawn("systemctl", ["--user", "restart", unit]);
|
|
163
|
+
}
|
|
164
|
+
function snapshotIfExists(path) {
|
|
165
|
+
if (!fs.existsSync(path))
|
|
166
|
+
return null;
|
|
167
|
+
try {
|
|
168
|
+
return fs.readFileSync(path);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// If we cannot snapshot, treat the prior content as unrecoverable.
|
|
172
|
+
// The install path will still proceed; rollback simply degrades to
|
|
173
|
+
// "remove the unit we wrote" instead of "restore prior contents".
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function restoreSnapshot(path, content) {
|
|
178
|
+
if (content === null) {
|
|
179
|
+
fs.rmSync(path, { force: true });
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
fs.writeFileSync(path, content);
|
|
183
|
+
}
|
|
184
|
+
async function install() {
|
|
185
|
+
/*
|
|
186
|
+
* Order matters: bring the daemon up first so its socket is available
|
|
187
|
+
* when the server starts. If the server starts first, it will try to
|
|
188
|
+
* connect to a non-existent daemon socket and (per host.ts) error out
|
|
189
|
+
* because PARASOR_PTY_AUTOSTART=0 prevents fallback spawning.
|
|
190
|
+
*
|
|
191
|
+
* Idempotent re-install: write the unit file, daemon-reload to pick up
|
|
192
|
+
* the new contents, enable --now (no-op if already enabled), then
|
|
193
|
+
* restart explicitly. systemd does not auto-restart units when their
|
|
194
|
+
* unit file changes -- without the explicit restart, the new env
|
|
195
|
+
* variables would only take effect after a manual restart or reboot.
|
|
196
|
+
*
|
|
197
|
+
* Backup-and-restore: snapshot prior unit contents before overwrite so
|
|
198
|
+
* that a failed reinstall can revert the file (and reload systemd) to
|
|
199
|
+
* the user's last working state instead of leaving a corrupted unit
|
|
200
|
+
* on disk and a dead daemon. Without this, a botched reinstall
|
|
201
|
+
* (typo'd env value, broken binary path) destroys the user's working
|
|
202
|
+
* supervisor with no automatic recovery.
|
|
203
|
+
*/
|
|
204
|
+
/*
|
|
205
|
+
* Idempotent re-install: when the rendered unit is byte-identical to
|
|
206
|
+
* what is already on disk, skip daemon-reload + restart. systemd's
|
|
207
|
+
* `restart` would kill the running daemon and re-launch it -- that
|
|
208
|
+
* tears down every PTY child it owns. By skipping when nothing
|
|
209
|
+
* changed, an `npm` style update that re-runs `parasor service
|
|
210
|
+
* install` preserves the long-lived daemon and its sessions.
|
|
211
|
+
* `enable --now` is still called so a previously disabled or dead
|
|
212
|
+
* daemon does come up; it is a no-op when the unit is already
|
|
213
|
+
* enabled and active.
|
|
214
|
+
*/
|
|
215
|
+
const priorDaemonUnit = snapshotIfExists(daemonUnitPath);
|
|
216
|
+
const daemonExisted = priorDaemonUnit !== null;
|
|
217
|
+
const newDaemonUnit = buildDaemonUnitBody();
|
|
218
|
+
const daemonUnchanged = daemonExisted && priorDaemonUnit === newDaemonUnit;
|
|
219
|
+
if (!daemonUnchanged) {
|
|
220
|
+
writeDaemonUnit();
|
|
221
|
+
daemonReload();
|
|
222
|
+
}
|
|
223
|
+
const der = enableNow(DAEMON_UNIT);
|
|
224
|
+
if (der.status !== 0) {
|
|
225
|
+
// Roll back to prior contents (or remove if there were none) so the
|
|
226
|
+
// user's previous working daemon is not destroyed by a failed
|
|
227
|
+
// reinstall. daemonReload picks up the restored file.
|
|
228
|
+
if (!daemonUnchanged) {
|
|
229
|
+
restoreSnapshot(daemonUnitPath, priorDaemonUnit);
|
|
230
|
+
daemonReload();
|
|
231
|
+
}
|
|
232
|
+
throw new Error(`systemctl enable (pty-host) failed (${der.status}): ${der.stderr || der.stdout}` +
|
|
233
|
+
(daemonExisted ? " (rolled back to prior daemon unit)" : ""));
|
|
234
|
+
}
|
|
235
|
+
if (daemonExisted && !daemonUnchanged) {
|
|
236
|
+
const rr = restartUnit(DAEMON_UNIT);
|
|
237
|
+
if (rr.status !== 0) {
|
|
238
|
+
// Restore prior unit + reload + restart to return to the user's
|
|
239
|
+
// last working state. Best-effort: if even the restart of the
|
|
240
|
+
// restored unit fails, we surface both failures.
|
|
241
|
+
restoreSnapshot(daemonUnitPath, priorDaemonUnit);
|
|
242
|
+
daemonReload();
|
|
243
|
+
const recover = restartUnit(DAEMON_UNIT);
|
|
244
|
+
const recoverNote = recover.status === 0
|
|
245
|
+
? "rolled back to prior daemon unit"
|
|
246
|
+
: `rollback restart also failed (${recover.status}): ${recover.stderr || recover.stdout}`;
|
|
247
|
+
throw new Error(`systemctl restart (pty-host) failed (${rr.status}): ${rr.stderr || rr.stdout} (${recoverNote})`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (daemonUnchanged) {
|
|
251
|
+
log(`unchanged: ${daemonUnitPath} (skipped reload)`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
log(`installed: ${daemonUnitPath}`);
|
|
255
|
+
}
|
|
256
|
+
log(`daemon logs: ${daemonStdoutLog}`);
|
|
257
|
+
// R1 -- wait for the daemon socket to become ready
|
|
258
|
+
// before enabling the server unit. The server requires the daemon socket
|
|
259
|
+
// immediately (PARASOR_PTY_AUTOSTART=0, so no fallback spawn).
|
|
260
|
+
await waitFn(daemonPaths.socketPath);
|
|
261
|
+
const priorServerUnit = snapshotIfExists(serverUnitPath);
|
|
262
|
+
const serverExisted = priorServerUnit !== null;
|
|
263
|
+
const newServerUnit = buildServerUnitBody();
|
|
264
|
+
const serverUnchanged = serverExisted && priorServerUnit === newServerUnit;
|
|
265
|
+
if (!serverUnchanged) {
|
|
266
|
+
writeServerUnit();
|
|
267
|
+
daemonReload();
|
|
268
|
+
}
|
|
269
|
+
const sr = enableNow(SERVER_UNIT);
|
|
270
|
+
if (sr.status !== 0) {
|
|
271
|
+
// Server bootstrap failed -- roll back the server unit to its prior
|
|
272
|
+
// contents (or remove). The daemon stays as it was at function
|
|
273
|
+
// entry: if it pre-existed and we successfully reinstalled, it
|
|
274
|
+
// remains installed; if it was freshly installed in this call, we
|
|
275
|
+
// also roll it back to "not installed" so the user is not left with
|
|
276
|
+
// a half-installed pair they did not have before.
|
|
277
|
+
restoreSnapshot(serverUnitPath, priorServerUnit);
|
|
278
|
+
if (!daemonExisted) {
|
|
279
|
+
disableNow(DAEMON_UNIT);
|
|
280
|
+
fs.rmSync(daemonUnitPath, { force: true });
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
restoreSnapshot(daemonUnitPath, priorDaemonUnit);
|
|
284
|
+
}
|
|
285
|
+
daemonReload();
|
|
286
|
+
throw new Error(`systemctl enable (server) failed (${sr.status}): ${sr.stderr || sr.stdout}. ` +
|
|
287
|
+
(daemonExisted
|
|
288
|
+
? "Rolled back server unit; daemon left in prior state."
|
|
289
|
+
: "Rolled back daemon unit; nothing remains installed."));
|
|
290
|
+
}
|
|
291
|
+
if (serverExisted && !serverUnchanged) {
|
|
292
|
+
const rr = restartUnit(SERVER_UNIT);
|
|
293
|
+
if (rr.status !== 0) {
|
|
294
|
+
restoreSnapshot(serverUnitPath, priorServerUnit);
|
|
295
|
+
daemonReload();
|
|
296
|
+
const recover = restartUnit(SERVER_UNIT);
|
|
297
|
+
const recoverNote = recover.status === 0
|
|
298
|
+
? "rolled back to prior server unit"
|
|
299
|
+
: `rollback restart also failed (${recover.status}): ${recover.stderr || recover.stdout}`;
|
|
300
|
+
throw new Error(`systemctl restart (server) failed (${rr.status}): ${rr.stderr || rr.stdout} (${recoverNote})`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (serverUnchanged) {
|
|
304
|
+
log(`unchanged: ${serverUnitPath} (skipped reload)`);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
log(`installed: ${serverUnitPath}`);
|
|
308
|
+
}
|
|
309
|
+
log(`server logs: ${serverStdoutLog}`);
|
|
310
|
+
}
|
|
311
|
+
async function uninstall() {
|
|
312
|
+
let removed = false;
|
|
313
|
+
const warnings = [];
|
|
314
|
+
// Remove server first so it cannot reconnect to a daemon we are
|
|
315
|
+
// about to kill (which would surface as a UI "PTY host disconnected"
|
|
316
|
+
// banner during uninstall).
|
|
317
|
+
if (fs.existsSync(serverUnitPath)) {
|
|
318
|
+
const dr = disableNow(SERVER_UNIT);
|
|
319
|
+
if (dr.status !== 0) {
|
|
320
|
+
// Surface the failure but continue: the unit file removal below
|
|
321
|
+
// is the user-visible "uninstall" action. A leftover enabled
|
|
322
|
+
// symlink will be cleaned by daemon-reload + the missing unit.
|
|
323
|
+
const detail = (dr.stderr || dr.stdout).trim();
|
|
324
|
+
warnings.push(`systemctl disable (server) returned ${dr.status}${detail ? `: ${detail}` : ""}`);
|
|
325
|
+
}
|
|
326
|
+
fs.rmSync(serverUnitPath, { force: true });
|
|
327
|
+
log(`uninstalled: ${serverUnitPath}`);
|
|
328
|
+
removed = true;
|
|
329
|
+
}
|
|
330
|
+
if (fs.existsSync(daemonUnitPath)) {
|
|
331
|
+
const dr = disableNow(DAEMON_UNIT);
|
|
332
|
+
if (dr.status !== 0) {
|
|
333
|
+
const detail = (dr.stderr || dr.stdout).trim();
|
|
334
|
+
warnings.push(`systemctl disable (pty-host) returned ${dr.status}${detail ? `: ${detail}` : ""}`);
|
|
335
|
+
}
|
|
336
|
+
fs.rmSync(daemonUnitPath, { force: true });
|
|
337
|
+
log(`uninstalled: ${daemonUnitPath}`);
|
|
338
|
+
removed = true;
|
|
339
|
+
}
|
|
340
|
+
if (removed)
|
|
341
|
+
daemonReload();
|
|
342
|
+
else
|
|
343
|
+
log("not installed; nothing to do");
|
|
344
|
+
for (const w of warnings)
|
|
345
|
+
log(`warning: ${w}`);
|
|
346
|
+
}
|
|
347
|
+
function reportUnit(label, unitPath, unit) {
|
|
348
|
+
const installed = fs.existsSync(unitPath);
|
|
349
|
+
if (!installed) {
|
|
350
|
+
log(`${label}: not installed`);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const active = spawn("systemctl", ["--user", "is-active", unit]);
|
|
354
|
+
const enabled = spawn("systemctl", ["--user", "is-enabled", unit]);
|
|
355
|
+
log(`${label}: installed`);
|
|
356
|
+
log(` active: ${active.stdout.trim()}`);
|
|
357
|
+
log(` enabled: ${enabled.stdout.trim()}`);
|
|
358
|
+
log(` unit: ${unitPath}`);
|
|
359
|
+
}
|
|
360
|
+
async function status() {
|
|
361
|
+
reportUnit("pty-host", daemonUnitPath, DAEMON_UNIT);
|
|
362
|
+
log(`daemon logs: ${daemonStdoutLog}`);
|
|
363
|
+
reportUnit("server", serverUnitPath, SERVER_UNIT);
|
|
364
|
+
log(`server logs: ${serverStdoutLog}`);
|
|
365
|
+
}
|
|
366
|
+
async function restart(opts) {
|
|
367
|
+
let kicked = false;
|
|
368
|
+
// Daemon kick is opt-in . says PTY lifetime
|
|
369
|
+
// is decoupled from server lifetime so live sessions survive a
|
|
370
|
+
// server restart. Restarting the daemon terminates every PTY, so
|
|
371
|
+
// it is reserved for `--all` (binary upgrade scenarios where the
|
|
372
|
+
// daemon code itself changed). Order: daemon first when both --
|
|
373
|
+
// if the server kicks before the daemon is back up and
|
|
374
|
+
// PARASOR_PTY_AUTOSTART=0 (it is), the server fails to connect
|
|
375
|
+
// and crash-loops until systemd brings the daemon back.
|
|
376
|
+
if (opts.all && fs.existsSync(daemonUnitPath)) {
|
|
377
|
+
const r = restartUnit(DAEMON_UNIT);
|
|
378
|
+
if (r.status !== 0) {
|
|
379
|
+
throw new Error(`systemctl restart (pty-host) failed (${r.status}): ${r.stderr || r.stdout}`);
|
|
380
|
+
}
|
|
381
|
+
log(`restarted: ${DAEMON_UNIT}`);
|
|
382
|
+
kicked = true;
|
|
383
|
+
// R2 -- wait for the daemon socket to become ready
|
|
384
|
+
// before restarting the server. Without this the server connects before
|
|
385
|
+
// the daemon socket is bound and crash-loops with ECONNREFUSED.
|
|
386
|
+
await waitFn(daemonPaths.socketPath);
|
|
387
|
+
}
|
|
388
|
+
if (fs.existsSync(serverUnitPath)) {
|
|
389
|
+
const r = restartUnit(SERVER_UNIT);
|
|
390
|
+
if (r.status !== 0) {
|
|
391
|
+
throw new Error(`systemctl restart (server) failed (${r.status}): ${r.stderr || r.stdout}`);
|
|
392
|
+
}
|
|
393
|
+
log(`restarted: ${SERVER_UNIT}`);
|
|
394
|
+
kicked = true;
|
|
395
|
+
}
|
|
396
|
+
if (!kicked)
|
|
397
|
+
log("nothing installed; nothing to restart");
|
|
398
|
+
}
|
|
399
|
+
async function logs(opts) {
|
|
400
|
+
const cmd = opts.follow
|
|
401
|
+
? ["tail", "-f", serverStdoutLog]
|
|
402
|
+
: ["cat", serverStdoutLog];
|
|
403
|
+
const [command, ...args] = cmd;
|
|
404
|
+
const r = spawn(command, args);
|
|
405
|
+
if (r.stdout)
|
|
406
|
+
process.stdout.write(r.stdout);
|
|
407
|
+
if (r.stderr)
|
|
408
|
+
process.stderr.write(r.stderr);
|
|
409
|
+
}
|
|
410
|
+
return { install, uninstall, status, restart, logs };
|
|
411
|
+
}
|
|
412
|
+
//# sourceMappingURL=service-linux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-linux.js","sourceRoot":"","sources":["../../src/cli/service-linux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface ServiceAdapter {
|
|
2
|
+
install(): Promise<void>;
|
|
3
|
+
uninstall(): Promise<void>;
|
|
4
|
+
status(): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Restart installed units. Default scope is the server unit only --
|
|
7
|
+
* the PTY host daemon owns running sessions
|
|
8
|
+
* and kicking it terminates every PTY, defeating the daemon-mode
|
|
9
|
+
* promise. Pass `all: true` for binary-upgrade scenarios where the
|
|
10
|
+
* daemon code itself changed.
|
|
11
|
+
*/
|
|
12
|
+
restart(opts: {
|
|
13
|
+
all: boolean;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
logs(opts: {
|
|
16
|
+
follow: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export interface CliServiceOptions {
|
|
20
|
+
platform: NodeJS.Platform | string;
|
|
21
|
+
adapter: ServiceAdapter;
|
|
22
|
+
/** restart confirmation -- version-mismatch probe + confirmation. Injected for tests. */
|
|
23
|
+
confirmRestart?: (opts: {
|
|
24
|
+
autoYes: boolean;
|
|
25
|
+
}) => Promise<{
|
|
26
|
+
proceed: boolean;
|
|
27
|
+
reason: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export declare function cliService(args: string[], opts?: CliServiceOptions): Promise<void>;
|
|
31
|
+
export declare function resolveBinPath(): string;
|
|
32
|
+
export declare function resolveDaemonEntryPath(): string;
|
|
33
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AA0BD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAmDf;AASD,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAUD,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { existsSync, realpathSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { confirmRestartIfMismatch, extractAutoYesFlag, } from "./restart-confirm.js";
|
|
5
|
+
const HELP = `Usage: parasor service <subcommand>
|
|
6
|
+
|
|
7
|
+
Manage parasor as a long-running service (LaunchAgent on macOS,
|
|
8
|
+
systemd user unit on Linux). Install always
|
|
9
|
+
provisions both the server unit and the PTY host daemon unit so the OS
|
|
10
|
+
supervisor restarts each independently and PTY sessions survive server
|
|
11
|
+
crashes.
|
|
12
|
+
|
|
13
|
+
Subcommands:
|
|
14
|
+
install Register parasor + parasor-pty-host at login + on crash
|
|
15
|
+
uninstall Stop and unregister whichever units are present
|
|
16
|
+
status Show installed / running / pid for each unit
|
|
17
|
+
restart [--all] [--yes|-y]
|
|
18
|
+
Restart the server unit. By default the PTY host daemon
|
|
19
|
+
is left running so live sessions survive -- pass --all to
|
|
20
|
+
also kick the daemon (binary upgrade scenarios). When the
|
|
21
|
+
new server binary speaks a PROTOCOL_VERSION incompatible
|
|
22
|
+
with the running daemon, the boot-side recovery path will
|
|
23
|
+
SIGKILL the daemon and every active PTY; this command
|
|
24
|
+
prompts for acknowledgement first. Pass --yes / -y to
|
|
25
|
+
skip the prompt (required in non-interactive contexts).
|
|
26
|
+
logs [-f] Print or follow the server log file
|
|
27
|
+
--help Show this message`;
|
|
28
|
+
export async function cliService(args, opts) {
|
|
29
|
+
const sub = args[0];
|
|
30
|
+
if (!sub || sub === "--help" || sub === "-h") {
|
|
31
|
+
console.log(HELP);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const flags = args.slice(1);
|
|
35
|
+
const resolved = opts ?? (await resolveDefaults());
|
|
36
|
+
if (resolved.platform !== "darwin" && resolved.platform !== "linux") {
|
|
37
|
+
throw new Error("parasor service: unsupported platform -- service management is " +
|
|
38
|
+
"available on macOS and Linux only.");
|
|
39
|
+
}
|
|
40
|
+
switch (sub) {
|
|
41
|
+
case "install":
|
|
42
|
+
await resolved.adapter.install();
|
|
43
|
+
return;
|
|
44
|
+
case "uninstall":
|
|
45
|
+
await resolved.adapter.uninstall();
|
|
46
|
+
return;
|
|
47
|
+
case "status":
|
|
48
|
+
await resolved.adapter.status();
|
|
49
|
+
return;
|
|
50
|
+
case "restart": {
|
|
51
|
+
const { autoYes, rest } = extractAutoYesFlag(flags);
|
|
52
|
+
const all = rest.includes("--all");
|
|
53
|
+
const confirm = resolved.confirmRestart ?? confirmRestartIfMismatch;
|
|
54
|
+
const confirmation = await confirm({ autoYes });
|
|
55
|
+
if (!confirmation.proceed) {
|
|
56
|
+
process.stderr.write(`parasor service: restart aborted -- ${confirmation.reason}.\n`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
await resolved.adapter.restart({ all });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
case "logs":
|
|
63
|
+
await resolved.adapter.logs({ follow: flags.includes("-f") });
|
|
64
|
+
return;
|
|
65
|
+
default:
|
|
66
|
+
throw new Error(`parasor service: unknown subcommand '${sub}'. Run 'parasor service --help' for usage.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/*
|
|
70
|
+
* Resolve the absolute, symlink-free path to the parasor executable that
|
|
71
|
+
* invoked us. LaunchAgent/systemd units must reference the stable on-disk
|
|
72
|
+
* path rather than the Homebrew/npm-global symlink in PATH, because the
|
|
73
|
+
* symlink may be overwritten during an npm update while the service is
|
|
74
|
+
* registered.
|
|
75
|
+
*/
|
|
76
|
+
export function resolveBinPath() {
|
|
77
|
+
const arg = process.argv[1];
|
|
78
|
+
if (!arg)
|
|
79
|
+
throw new Error("process.argv[1] is unset");
|
|
80
|
+
return realpathSync(arg);
|
|
81
|
+
}
|
|
82
|
+
/*
|
|
83
|
+
* Resolve the daemon entry script path. Mirrors pty-host.ts
|
|
84
|
+
* defaultEntryPath: dist/server/cli/service.js -> ../pty/host-daemon/entry.js.
|
|
85
|
+
* Falls back to the .ts source for dev trees without `pnpm build`.
|
|
86
|
+
* Throws if neither exists -- that means the install would write a unit
|
|
87
|
+
* pointing at a non-existent file, which fails silently at supervisor
|
|
88
|
+
* boot and is hard to diagnose. Fail fast at install time instead.
|
|
89
|
+
*/
|
|
90
|
+
export function resolveDaemonEntryPath() {
|
|
91
|
+
const here = fileURLToPath(import.meta.url);
|
|
92
|
+
const compiled = join(here, "..", "..", "pty", "host-daemon", "entry.js");
|
|
93
|
+
if (existsSync(compiled))
|
|
94
|
+
return compiled;
|
|
95
|
+
const tsFallback = `${compiled.slice(0, -3)}.ts`;
|
|
96
|
+
if (existsSync(tsFallback))
|
|
97
|
+
return tsFallback;
|
|
98
|
+
throw new Error(`parasor service: could not locate the PTY host daemon entry script. ` +
|
|
99
|
+
`Looked at: ${compiled} (compiled), ${tsFallback} (dev fallback). ` +
|
|
100
|
+
`This is a build packaging bug -- run \`pnpm build\` or reinstall the package.`);
|
|
101
|
+
}
|
|
102
|
+
async function resolveDefaults() {
|
|
103
|
+
const platform = process.platform;
|
|
104
|
+
const binPath = resolveBinPath();
|
|
105
|
+
const daemonEntryPath = resolveDaemonEntryPath();
|
|
106
|
+
if (platform === "darwin") {
|
|
107
|
+
const { createDarwinAdapter } = await import("./service-darwin.js");
|
|
108
|
+
return {
|
|
109
|
+
platform,
|
|
110
|
+
adapter: createDarwinAdapter({ binPath, daemonEntryPath }),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (platform === "linux") {
|
|
114
|
+
const { createLinuxAdapter } = await import("./service-linux.js");
|
|
115
|
+
return {
|
|
116
|
+
platform,
|
|
117
|
+
adapter: createLinuxAdapter({ binPath, daemonEntryPath }),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
platform,
|
|
122
|
+
// unreachable: cliService will throw before touching the adapter
|
|
123
|
+
adapter: noopAdapter,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const noopAdapter = {
|
|
127
|
+
install: async () => { },
|
|
128
|
+
uninstall: async () => { },
|
|
129
|
+
status: async () => { },
|
|
130
|
+
restart: async (_opts) => { },
|
|
131
|
+
logs: async () => { },
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface ShimPaths {
|
|
2
|
+
binDir: string;
|
|
3
|
+
bashRcPath: string;
|
|
4
|
+
realOpen: string | null;
|
|
5
|
+
realXdgOpen: string | null;
|
|
6
|
+
zshDotdir: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function installShims(configDir: string): ShimPaths;
|
|
9
|
+
export declare function buildCodexEventBridge(): string;
|
|
10
|
+
export declare function buildCodexNotifyBridge(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Build the posix-shell source of the Claude Code hook bridge. Reads a
|
|
13
|
+
* Claude Code hook payload on stdin, extracts the event name (plus a
|
|
14
|
+
* payload-driven discriminator for PreToolUse/Notification), and POSTs
|
|
15
|
+
* the normalized {sessionId, agent, event} triple to the loopback
|
|
16
|
+
* /hook/notify endpoint. Always exits 0 so a hook failure never breaks
|
|
17
|
+
* the agent. Returns inline so the script content can be unit-tested.
|
|
18
|
+
*
|
|
19
|
+
* Why this is a separate file and not inlined into the wrapper's hooks
|
|
20
|
+
* JSON: hook commands are a single argv[0], not a shell snippet, and
|
|
21
|
+
* embedding multi-line shell into JSON is illegible. Keeping it in its
|
|
22
|
+
* own file under the shim binDir also lets users inspect what they're
|
|
23
|
+
* running.
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildClaudeHookBridge(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Build the bash source of the claude wrapper. Inline so it can read the
|
|
28
|
+
* shim binDir at install time and avoid self-reference loops.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildClaudeWrapper(binDir: string, hookScriptPath: string): string;
|
|
31
|
+
export declare function buildCodexWrapper(binDir: string, eventScriptPath: string, notifyScriptPath: string): string;
|
|
32
|
+
export declare function buildParasorZshEnv(binDir: string): string;
|
|
33
|
+
export declare function buildParasorZshRc(binDir: string): string;
|
|
34
|
+
export declare function buildParasorBashRc(binDir: string): string;
|
|
35
|
+
//# sourceMappingURL=shim-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shim-installer.d.ts","sourceRoot":"","sources":["../../src/cli/shim-installer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAiFzD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAqC9C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAkD/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA0F9C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,MAAM,CAqIR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CA0MR;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzD"}
|