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,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the runtime mode from env. Daemon mode is the default so that a
|
|
3
|
+
* foreground `parasor` invocation gets the same session-survival
|
|
4
|
+
* properties as the canonical service install -- npm-style updates and
|
|
5
|
+
* server-process restarts can preserve PTY children when they live in a
|
|
6
|
+
* detached daemon. Set `PARASOR_PTY_DAEMON=0` to opt back into
|
|
7
|
+
* in-process mode (used by the dev script to keep PTYs scoped to the
|
|
8
|
+
* tsx-watch process and the legacy single-process layout).
|
|
9
|
+
*/
|
|
10
|
+
export function resolvePtyHostMode(env = process.env) {
|
|
11
|
+
return env.PARASOR_PTY_DAEMON === "0" ? "in-process" : "remote";
|
|
12
|
+
}
|
|
13
|
+
export async function createPtyHost(deps) {
|
|
14
|
+
const mode = deps.mode ?? resolvePtyHostMode();
|
|
15
|
+
if (mode === "remote") {
|
|
16
|
+
const [{ RemotePtyHost }, { resolveDaemonPaths }, { spawnDaemon }, { terminateDaemon }, { PROTOCOL_VERSION, parseVersionMismatch }, { isServiceManagedDaemonInstalled }, { connectToDaemonSocket, decideAutoSpawn, formatNoDaemonError }, { recoverFromVersionMismatch },] = await Promise.all([
|
|
17
|
+
import("./remote-host.js"),
|
|
18
|
+
import("./host-daemon/paths.js"),
|
|
19
|
+
import("./host-daemon/spawn-daemon.js"),
|
|
20
|
+
import("./host-daemon/terminate-daemon.js"),
|
|
21
|
+
import("./host-protocol/messages.js"),
|
|
22
|
+
import("./host-daemon/service-detection.js"),
|
|
23
|
+
import("./daemon-connect.js"),
|
|
24
|
+
import("./version-mismatch-recovery.js"),
|
|
25
|
+
]);
|
|
26
|
+
/*
|
|
27
|
+
* `net.Socket` references below resolve through the top-level
|
|
28
|
+
* `import type * as net from "node:net"` -- runtime `net.connect` is
|
|
29
|
+
* now owned by `daemon-connect.ts` so no runtime `node:net` import
|
|
30
|
+
* is needed here.
|
|
31
|
+
*/
|
|
32
|
+
const paths = resolveDaemonPaths();
|
|
33
|
+
/*
|
|
34
|
+
* -- first connect attempt; if it fails with
|
|
35
|
+
* a "no daemon" error and auto-spawn is enabled (default), fork
|
|
36
|
+
* the daemon and retry once. Auto-spawn opt-out lets ops who run
|
|
37
|
+
* launchd/systemd avoid double-supervision.
|
|
38
|
+
*/
|
|
39
|
+
let socket;
|
|
40
|
+
try {
|
|
41
|
+
socket = await connectToDaemonSocket(paths.socketPath);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
const serviceInstalled = isServiceManagedDaemonInstalled();
|
|
45
|
+
const { noDaemon, autoStart } = decideAutoSpawn({
|
|
46
|
+
code: err.code,
|
|
47
|
+
explicit: process.env.PARASOR_PTY_AUTOSTART,
|
|
48
|
+
serviceInstalled,
|
|
49
|
+
});
|
|
50
|
+
if (noDaemon && autoStart) {
|
|
51
|
+
try {
|
|
52
|
+
await spawnDaemon({ paths });
|
|
53
|
+
}
|
|
54
|
+
catch (spawnErr) {
|
|
55
|
+
throw new Error(`parasor-pty-host: cannot connect to ${paths.socketPath}: ${err.message}. ` +
|
|
56
|
+
`Auto-spawn also failed: ${spawnErr.message}`);
|
|
57
|
+
}
|
|
58
|
+
// review: the post-spawn retry can also fail (rare:
|
|
59
|
+
// daemon crashed between probe-ready and our reconnect). Wrap
|
|
60
|
+
// it in a try/catch so the caller sees the original "could not
|
|
61
|
+
// connect" context instead of a bare ECONNREFUSED.
|
|
62
|
+
try {
|
|
63
|
+
socket = await connectToDaemonSocket(paths.socketPath);
|
|
64
|
+
}
|
|
65
|
+
catch (retryErr) {
|
|
66
|
+
throw new Error(`parasor-pty-host: spawn succeeded but reconnect to ${paths.socketPath} failed: ` +
|
|
67
|
+
`${retryErr.message}. Check ${paths.logFile} for daemon-side errors.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new Error(formatNoDaemonError({
|
|
72
|
+
err: err,
|
|
73
|
+
socketPath: paths.socketPath,
|
|
74
|
+
noDaemon,
|
|
75
|
+
serviceInstalled,
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/*
|
|
80
|
+
* (narrowed by daemon state ownership) -- remote mode pivots
|
|
81
|
+
* the *session domain* (`sessions`, `sessionRecords`) into read-only
|
|
82
|
+
* mirror. Server-side `mutateSessions()` calls after this point
|
|
83
|
+
* throw; legitimate session updates flow through the daemon-IPC
|
|
84
|
+
* reconciler via `store.internalMutate()`. Project / projectStates
|
|
85
|
+
* / serviceConfig stay writable in both modes (the daemon never
|
|
86
|
+
* touches them). Set this BEFORE we construct RemotePtyHost so any
|
|
87
|
+
* reconcile call inside `connect()` uses the correct write path.
|
|
88
|
+
*/
|
|
89
|
+
deps.store.setSessionsReadOnly(true);
|
|
90
|
+
/*
|
|
91
|
+
* state persistence delegate -- install the IPC persistence delegate. Server-owned
|
|
92
|
+
* mutations (mutateProjects / mutateProjectStates / mutateServiceConfig)
|
|
93
|
+
* route their debounced flush through the live wire instead of
|
|
94
|
+
* writeFileSync, so the daemon (sole writer of state.json under
|
|
95
|
+
* daemon state ownership ) ends up with an authoritative snapshot. Without this,
|
|
96
|
+
* server and daemon would race to overwrite each other's view of
|
|
97
|
+
* the file (daemon's stale projects clobber freshly added ones on
|
|
98
|
+
* the next session-update flush).
|
|
99
|
+
*/
|
|
100
|
+
const wirePersistDelegate = (host) => {
|
|
101
|
+
deps.store.setPersistenceDelegate({
|
|
102
|
+
persist: (state) => host.persist(state),
|
|
103
|
+
});
|
|
104
|
+
return host;
|
|
105
|
+
};
|
|
106
|
+
// if RemotePtyHost.connect rejects (HELLO
|
|
107
|
+
// timeout, version mismatch, evicted), the connected socket would
|
|
108
|
+
// be leaked. Take ownership here and destroy() on rejection -- the
|
|
109
|
+
// happy path hands the socket to RemotePtyHost which manages it
|
|
110
|
+
// for the rest of its lifetime.
|
|
111
|
+
try {
|
|
112
|
+
return wirePersistDelegate(await RemotePtyHost.connect({
|
|
113
|
+
socket,
|
|
114
|
+
scrollbackLog: deps.scrollbackLog ?? null,
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
catch (connectErr) {
|
|
118
|
+
try {
|
|
119
|
+
socket.destroy();
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
/* socket may already be in error state */
|
|
123
|
+
}
|
|
124
|
+
const code = connectErr?.code;
|
|
125
|
+
/*
|
|
126
|
+
* translate the typed handshake-timeout
|
|
127
|
+
* into actionable operator guidance. A daemon that bound the
|
|
128
|
+
* socket but never replies looks identical to a healthy connect
|
|
129
|
+
* from the kernel's perspective; the user needs to know to
|
|
130
|
+
* inspect the daemon log rather than retry blindly.
|
|
131
|
+
*/
|
|
132
|
+
if (code === "handshake-timeout") {
|
|
133
|
+
throw new Error(`parasor-pty-host: ${connectErr.message}. ` +
|
|
134
|
+
`The daemon accepted the connection but did not reply. ` +
|
|
135
|
+
`Check ${paths.logFile} for daemon-side errors, ` +
|
|
136
|
+
`or run \`parasor pty-host doctor\` for a full diagnostic dump.`);
|
|
137
|
+
}
|
|
138
|
+
/*
|
|
139
|
+
* daemon protocol mismatch recovery -- when the running daemon's PROTOCOL_VERSION is
|
|
140
|
+
* incompatible with the freshly-installed server binary, the
|
|
141
|
+
* daemon NACKs HELLO with code "version-mismatch" before any
|
|
142
|
+
* application traffic. The old daemon's PTY children are
|
|
143
|
+
* already orphaned from this server's perspective (the new
|
|
144
|
+
* server cannot speak the old protocol), so terminating it and
|
|
145
|
+
* spawning a fresh daemon is the only recovery path: surfacing
|
|
146
|
+
* a stack trace and exiting would loop forever under launchd
|
|
147
|
+
* or systemd-user supervision. Active PTY sessions die -- that
|
|
148
|
+
* cost is paid once per protocol upgrade; the web banner
|
|
149
|
+
* (recorded via onDaemonAutoRestarted -> ServerNoticesStore)
|
|
150
|
+
* tells the user why their list is empty after reconnect.
|
|
151
|
+
*/
|
|
152
|
+
if (code === "version-mismatch") {
|
|
153
|
+
const host = await recoverFromVersionMismatch({
|
|
154
|
+
originalError: connectErr,
|
|
155
|
+
paths,
|
|
156
|
+
protocolVersion: PROTOCOL_VERSION,
|
|
157
|
+
scrollbackLog: deps.scrollbackLog ?? null,
|
|
158
|
+
onDaemonAutoRestarted: deps.onDaemonAutoRestarted,
|
|
159
|
+
}, {
|
|
160
|
+
terminateDaemon,
|
|
161
|
+
spawnDaemon,
|
|
162
|
+
connectSocket: connectToDaemonSocket,
|
|
163
|
+
connectHost: (opts) => RemotePtyHost.connect(opts),
|
|
164
|
+
parseVersionMismatch,
|
|
165
|
+
logStderr: (line) => {
|
|
166
|
+
process.stderr.write(line);
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
return wirePersistDelegate(host);
|
|
170
|
+
}
|
|
171
|
+
throw connectErr;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/*
|
|
175
|
+
* In-process: the server itself owns the session domain. Idempotent
|
|
176
|
+
* setSessionsReadOnly(false) keeps factory recreation (e.g. test
|
|
177
|
+
* re-spinup) deterministic instead of inheriting whatever the
|
|
178
|
+
* previous host left.
|
|
179
|
+
*/
|
|
180
|
+
deps.store.setSessionsReadOnly(false);
|
|
181
|
+
const { InProcessPtyHost } = await import("./in-process-host.js");
|
|
182
|
+
return new InProcessPtyHost(deps.store, deps.scrollbackLog ?? null, deps.daemonContext ?? null, deps.uploadsDir ?? null);
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/pty/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import type { Session, SessionEndReason } from "@parasor/shared";
|
|
2
|
+
import type { AppStateStore } from "../state/app-state.js";
|
|
3
|
+
import type { AttachClientCapabilities, AttachClientResult, AttachClientSink, CreateSessionInput, PtyHost } from "./host.js";
|
|
4
|
+
import type { ScrollbackLog } from "./scrollback-log.js";
|
|
5
|
+
export type { CreateSessionInput };
|
|
6
|
+
/**
|
|
7
|
+
* Identity of the process that owns AppState writes (
|
|
8
|
+
* ). Persisted into every `SessionRecord.daemonPid /
|
|
9
|
+
* daemonStartedAt`, then read back by `reconcileSessionRecords` on
|
|
10
|
+
* daemon startup to distinguish *this* generation's records from
|
|
11
|
+
* orphans inherited from a previous daemon process.
|
|
12
|
+
*
|
|
13
|
+
* Optional at construction: in-process tests that don't exercise
|
|
14
|
+
* orphan reconciliation can omit it, in which case `SessionRecord`
|
|
15
|
+
* persistence is skipped entirely (sessions are still tracked for the
|
|
16
|
+
* lifetime of the host, but `appState.sessionRecords` stays empty).
|
|
17
|
+
* Production callers -- both the daemon bootstrap and the in-process
|
|
18
|
+
* server entry -- always supply a context so the doctor CLI works in
|
|
19
|
+
* either mode.
|
|
20
|
+
*/
|
|
21
|
+
export interface InProcessPtyHostDaemonContext {
|
|
22
|
+
/** PID of the process owning AppStateStore writes. */
|
|
23
|
+
pid: number;
|
|
24
|
+
/** ISO8601 timestamp identifying the writer generation. */
|
|
25
|
+
startedAt: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class InProcessPtyHost implements PtyHost {
|
|
28
|
+
private readonly store;
|
|
29
|
+
/**
|
|
30
|
+
* Disk-backed scrollback log. When null (daemon-side host, contract
|
|
31
|
+
* tests), this host records no scrollback and every replay path
|
|
32
|
+
* returns empty. That is intentional: the daemon forwards OUTPUT to
|
|
33
|
+
* the client over IPC and the client-side `RemotePtyHost` owns its
|
|
34
|
+
* own `ScrollbackLog` -- keeping a redundant copy on the daemon side
|
|
35
|
+
* would just double the disk footprint. `getScrollback()` and the
|
|
36
|
+
* `initClient` legacy replay degrade to "no replay" in that mode.
|
|
37
|
+
*/
|
|
38
|
+
private readonly scrollbackLog;
|
|
39
|
+
private readonly daemonContext;
|
|
40
|
+
/**
|
|
41
|
+
* Canonical absolute path of `<rootDir>/uploads`. When supplied, every
|
|
42
|
+
* spawned PTY's env gets `PARASOR_UPLOAD_DIR=<uploadsDir>/<sessionId>`
|
|
43
|
+
* -- the per-session subdir, NOT the shared root -- so the Claude shim's
|
|
44
|
+
* `--add-dir` allowlists only that PTY's own drops (upload staging isolation codex
|
|
45
|
+
* Shared-root isolation review: the shared-root variant let session A read session
|
|
46
|
+
* B's uploads via `--add-dir`). Null in tests that don't exercise the
|
|
47
|
+
* upload pipeline.
|
|
48
|
+
*/
|
|
49
|
+
private readonly uploadsDir;
|
|
50
|
+
private sessions;
|
|
51
|
+
private globalDataListeners;
|
|
52
|
+
private inputListeners;
|
|
53
|
+
private ptyEnv;
|
|
54
|
+
private readonly inProcessLegacyReplayMaxBytes;
|
|
55
|
+
private readonly headlessReplayEnabled;
|
|
56
|
+
private readonly headlessReplayScrollbackLines;
|
|
57
|
+
private readonly headlessReplayMaxBytes;
|
|
58
|
+
private readonly headlessStateCache;
|
|
59
|
+
/**
|
|
60
|
+
* Attach fencing monotonic counter -- incremented per attach (initClient or
|
|
61
|
+
* attachClient), stamped on the resulting `AttachedClient` entry, and
|
|
62
|
+
* compared on `detachClient(..., expectedToken)`. Plain integer is fine
|
|
63
|
+
* because tokens are scoped to this host instance and the comparison
|
|
64
|
+
* is identity, not magnitude.
|
|
65
|
+
*/
|
|
66
|
+
private nextAttachToken;
|
|
67
|
+
private mintAttachToken;
|
|
68
|
+
onSessionExit: ((sessionId: string, generation: number, endReason: SessionEndReason) => void) | null;
|
|
69
|
+
constructor(store: AppStateStore,
|
|
70
|
+
/**
|
|
71
|
+
* Disk-backed scrollback log. When null (daemon-side host, contract
|
|
72
|
+
* tests), this host records no scrollback and every replay path
|
|
73
|
+
* returns empty. That is intentional: the daemon forwards OUTPUT to
|
|
74
|
+
* the client over IPC and the client-side `RemotePtyHost` owns its
|
|
75
|
+
* own `ScrollbackLog` -- keeping a redundant copy on the daemon side
|
|
76
|
+
* would just double the disk footprint. `getScrollback()` and the
|
|
77
|
+
* `initClient` legacy replay degrade to "no replay" in that mode.
|
|
78
|
+
*/
|
|
79
|
+
scrollbackLog?: ScrollbackLog | null, daemonContext?: InProcessPtyHostDaemonContext | null,
|
|
80
|
+
/**
|
|
81
|
+
* Canonical absolute path of `<rootDir>/uploads`. When supplied, every
|
|
82
|
+
* spawned PTY's env gets `PARASOR_UPLOAD_DIR=<uploadsDir>/<sessionId>`
|
|
83
|
+
* -- the per-session subdir, NOT the shared root -- so the Claude shim's
|
|
84
|
+
* `--add-dir` allowlists only that PTY's own drops (upload staging isolation codex
|
|
85
|
+
* Shared-root isolation review: the shared-root variant let session A read session
|
|
86
|
+
* B's uploads via `--add-dir`). Null in tests that don't exercise the
|
|
87
|
+
* upload pipeline.
|
|
88
|
+
*/
|
|
89
|
+
uploadsDir?: string | null);
|
|
90
|
+
/**
|
|
91
|
+
* Merge env vars into the per-PTY environment. Multiple calls accumulate
|
|
92
|
+
* (later calls override individual keys but preserve everything else),
|
|
93
|
+
* so the server can set the static shim PATH early during init and add
|
|
94
|
+
* the dynamic PARASOR_PORT later once probePort has resolved the actual
|
|
95
|
+
* listening port.
|
|
96
|
+
*/
|
|
97
|
+
setPtyEnv(env: Record<string, string>): void;
|
|
98
|
+
private buildSessionEnv;
|
|
99
|
+
/**
|
|
100
|
+
* Create a session stub. The PTY is NOT spawned here -- it is deferred
|
|
101
|
+
* until the first WebSocket attach provides real viewport dimensions.
|
|
102
|
+
* This is the whole point of the deferred-spawn model: spawning at the
|
|
103
|
+
* exact client dims eliminates the SIGWINCH-driven prompt redraw that
|
|
104
|
+
* otherwise walks zsh's prompt down one row on every new-session open.
|
|
105
|
+
*/
|
|
106
|
+
create(input: CreateSessionInput): Promise<Session>;
|
|
107
|
+
restart(id: string): Promise<Session>;
|
|
108
|
+
get(id: string): Session | undefined;
|
|
109
|
+
getScrollback(id: string): string | null;
|
|
110
|
+
list(): Session[];
|
|
111
|
+
getForegroundProcess(id: string): string | null;
|
|
112
|
+
setTitle(id: string, title: string, titleManual?: boolean): boolean;
|
|
113
|
+
setPinned(id: string, pinned: boolean): boolean;
|
|
114
|
+
listByProject(projectId: string): Session[];
|
|
115
|
+
onSessionInput(listener: (sessionId: string, data: string) => void): void;
|
|
116
|
+
write(id: string, data: string, generation?: number): void;
|
|
117
|
+
/**
|
|
118
|
+
* Resize the underlying PTY. The explicit resize caller is authoritative,
|
|
119
|
+
* but duplicate claims for the current PTY size must not issue another
|
|
120
|
+
* SIGWINCH.
|
|
121
|
+
*/
|
|
122
|
+
resize(id: string, cols: number, rows: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Force a SIGWINCH without changing dims so a TUI repaints from scratch.
|
|
125
|
+
* Used when a client surface returns to the foreground (iOS background
|
|
126
|
+
* tab freeze, mobile visibilitychange). node-pty's resize() is a no-op
|
|
127
|
+
* when new dims equal current ones, so we briefly bump rows and snap
|
|
128
|
+
* back -- INK collapses the two calls into a single repaint.
|
|
129
|
+
*/
|
|
130
|
+
refresh(id: string): void;
|
|
131
|
+
pauseOutput(id: string, clientId: string): void;
|
|
132
|
+
resumeOutput(id: string, clientId: string): void;
|
|
133
|
+
private shouldPauseOutput;
|
|
134
|
+
private applyOutputPauseState;
|
|
135
|
+
/**
|
|
136
|
+
* Attach a WebSocket client. Spawns the PTY on first call (using the
|
|
137
|
+
* client's viewport dims), replays scrollback to the fresh listener,
|
|
138
|
+
* and adds the listener to the broadcast set. A subsequent call with
|
|
139
|
+
* the same clientId replaces the existing listener in place (no
|
|
140
|
+
* duplicate broadcast).
|
|
141
|
+
*/
|
|
142
|
+
initClient(id: string, clientId: string, cols: number, rows: number, listener: (data: string) => void, callerToken?: number): Promise<{
|
|
143
|
+
ok: true;
|
|
144
|
+
attachToken: number;
|
|
145
|
+
} | {
|
|
146
|
+
ok: false;
|
|
147
|
+
}>;
|
|
148
|
+
/**
|
|
149
|
+
* capable attach.
|
|
150
|
+
*
|
|
151
|
+
* Held under `managed.mutex` for the entire negotiation so that any
|
|
152
|
+
* concurrent PTY broadcast queues behind us -- the live chunk listener
|
|
153
|
+
* is registered last, after we have already decided the replay strategy
|
|
154
|
+
* and snapshotted the chunk ring. This prevents init-ack / replay /
|
|
155
|
+
* live OUTPUT from interleaving on the wire.
|
|
156
|
+
*
|
|
157
|
+
* Falls back to JSON-path semantics when `capabilities.binary === false`
|
|
158
|
+
* (the WS handler will not call us in that case, but the contract
|
|
159
|
+
* stays well-defined).
|
|
160
|
+
*/
|
|
161
|
+
attachClient(id: string, clientId: string, cols: number, rows: number, capabilities: AttachClientCapabilities, sink: AttachClientSink): Promise<AttachClientResult>;
|
|
162
|
+
private buildFullReplay;
|
|
163
|
+
private updateHeadlessState;
|
|
164
|
+
detachClient(id: string, clientId: string, expectedToken?: number): void;
|
|
165
|
+
dispose(id: string): Promise<void>;
|
|
166
|
+
disposeAll(): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Graceful-shutdown variant: kill every live PTY and mark each session
|
|
169
|
+
* as graceful, but keep the session in state so it can be restored
|
|
170
|
+
* (with scrollback) on the next server start. Unlike dispose, does not
|
|
171
|
+
* remove sessions from the store. The optional `reason` lets the
|
|
172
|
+
* daemon shutdown path distinguish itself from the server shutdown
|
|
173
|
+
* path so the UI can pick the correct error/recovery branch -- a
|
|
174
|
+
* "daemon-graceful" exit means the PTY children themselves are gone
|
|
175
|
+
* (the daemon owned them), while a "server-graceful" exit in daemon
|
|
176
|
+
* mode would be unusual (server unit shutdown but the daemon's PTYs
|
|
177
|
+
* survive).
|
|
178
|
+
*/
|
|
179
|
+
shutdownAll(reason?: SessionEndReason): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Restore a session from persisted AppState. Sessions that were running
|
|
182
|
+
* or spawning at server/daemon exit time carry no `endReason` yet --
|
|
183
|
+
* fill it in based on whether the previous shutdown was graceful
|
|
184
|
+
* (marker present) or a crash (marker absent). The host context picks
|
|
185
|
+
* the correct prefix: `daemon-*` when this is the host instance owned
|
|
186
|
+
* by the `parasor-pty-host` daemon (PTY children belonged to the
|
|
187
|
+
* daemon), `server-*` otherwise. Sessions that already have
|
|
188
|
+
* `endReason` (either from an earlier process exit or from
|
|
189
|
+
* `shutdownAll`) keep it.
|
|
190
|
+
*/
|
|
191
|
+
loadPersistedSession(session: Session, wasGracefulShutdown: boolean): void;
|
|
192
|
+
onSessionData(callback: (sessionId: string, data: string, generation: number) => void): void;
|
|
193
|
+
/**
|
|
194
|
+
* Attempt a silent re-spawn, preserving the previous scrollback (so
|
|
195
|
+
* the user sees continuity) plus a visible separator line that says
|
|
196
|
+
* exactly when the restart happened. Caller must hold managed.mutex.
|
|
197
|
+
* Returns true if re-spawn was initiated; false if the session is not
|
|
198
|
+
* auto-resumable (caller should surface an error).
|
|
199
|
+
*/
|
|
200
|
+
private autoResumeIfSafe;
|
|
201
|
+
/**
|
|
202
|
+
* Spawn the underlying PTY process and wire up its handlers. Called
|
|
203
|
+
* from `initClient` (deferred spawn) and from the test-only eager path.
|
|
204
|
+
* Caller must hold managed.mutex.
|
|
205
|
+
*/
|
|
206
|
+
private spawnProcess;
|
|
207
|
+
private attachProcHandlers;
|
|
208
|
+
private persistSession;
|
|
209
|
+
/**
|
|
210
|
+
* Upsert a SessionRecord into AppState. Mirror of `persistSession` for
|
|
211
|
+
* the daemon-orphan-tracking side of the data model. Caller must hold
|
|
212
|
+
* managed.mutex (record updates are interleaved with session updates,
|
|
213
|
+
* single-record-per-session invariant guards against torn writes).
|
|
214
|
+
*/
|
|
215
|
+
private persistRecord;
|
|
216
|
+
/**
|
|
217
|
+
* Test-only eager spawn. Production code path is always deferred via
|
|
218
|
+
* `initClient`. This helper exists so unit tests that need a live PTY
|
|
219
|
+
* without a WebSocket can still drive the manager.
|
|
220
|
+
*/
|
|
221
|
+
testEagerSpawn(id: string, cols?: number, rows?: number): Promise<void>;
|
|
222
|
+
private resolveCommand;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=in-process-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-process-host.d.ts","sourceRoot":"","sources":["../../src/pty/in-process-host.ts"],"names":[],"mappings":"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"}
|