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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 akibe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# parasor
|
|
2
|
+
|
|
3
|
+
> AI-first coding workspace for continuing your desktop development flow from
|
|
4
|
+
> anywhere.
|
|
5
|
+
|
|
6
|
+
parasor runs on your development machine and brings the same AI-driven coding
|
|
7
|
+
workflow to your desk, phone, or another trusted device. Use a browser to work
|
|
8
|
+
with your agents, terminals, Git state, files, and localhost dev servers
|
|
9
|
+
without changing the project environment on the host machine.
|
|
10
|
+
|
|
11
|
+
## Highlights
|
|
12
|
+
|
|
13
|
+
- **Multi-agent parallel panes** - split the workspace into terminal, file
|
|
14
|
+
tree, editor, diff, and browser views while several agents run at once.
|
|
15
|
+
- **Desk-to-mobile workflow** - startup QR seeds the session cookie, mobile
|
|
16
|
+
controls cover common terminal keys, and clipboard/file upload works in the
|
|
17
|
+
on-page terminal.
|
|
18
|
+
- **Persistent PTYs** - the user-scope service installs a PTY host daemon so
|
|
19
|
+
scrollback and sessions survive server restarts.
|
|
20
|
+
- **Project-scoped file ops** - browse files, edit in CodeMirror, open diffs,
|
|
21
|
+
drag files into terminals, and paste images into an upload directory.
|
|
22
|
+
- **Agent-aware shims** - Claude Code and Codex wrappers add runtime integration
|
|
23
|
+
hooks without editing user agent configuration files.
|
|
24
|
+
- **Network port center** - detected localhost dev servers can be opened from
|
|
25
|
+
mobile through parasor-managed reachable URLs when needed.
|
|
26
|
+
- **Token auth + Origin allowlist** - high-entropy URL token and browser
|
|
27
|
+
Origin checks are enabled by default.
|
|
28
|
+
- **macOS / Linux primary** - user-scope install and service management, no
|
|
29
|
+
sudo required. WSL is expected to work for foreground use, with service mode
|
|
30
|
+
depending on systemd-enabled WSL. Native Windows is not currently supported.
|
|
31
|
+
|
|
32
|
+
## Quick Start
|
|
33
|
+
|
|
34
|
+
Node.js 22+:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pnpm dlx parasor
|
|
38
|
+
# or: npm exec -y parasor
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
parasor listens on every IPv4 interface (`0.0.0.0`) at port `7681` by default,
|
|
42
|
+
matching common local-dev tools such as ttyd, gotty, Vite `--host`, and Next.js
|
|
43
|
+
dev. The startup banner prints reachable access URLs for loopback, LAN, and
|
|
44
|
+
Tailscale endpoints, followed by a QR code for phone access.
|
|
45
|
+
|
|
46
|
+
Token auth and WebSocket Origin checks are the primary defense. Use
|
|
47
|
+
`--host 127.0.0.1` or `HOST=127.0.0.1` for loopback-only access.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
parasor --help # user-facing subcommands
|
|
51
|
+
parasor --help-all # also list advanced/internal bridges
|
|
52
|
+
parasor qr # re-render QR + access URLs over the IPC socket
|
|
53
|
+
parasor qr --iface=en0 # prefer a specific network interface
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The auth token is persisted at `~/.config/parasor/token` (user-scope, plain
|
|
57
|
+
text) if you need to assemble the URL by hand.
|
|
58
|
+
|
|
59
|
+
## Background Service
|
|
60
|
+
|
|
61
|
+
Keep parasor up after login. On macOS, the LaunchAgent also starts at user
|
|
62
|
+
login after reboot. On Linux, the systemd user unit starts with the user
|
|
63
|
+
session; start-before-login behavior depends on whether lingering is enabled
|
|
64
|
+
for that account.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
parasor service install # LaunchAgent on macOS, systemd user unit on Linux
|
|
68
|
+
parasor service status # installed / running / pid / uptime
|
|
69
|
+
parasor service restart # restart the service
|
|
70
|
+
parasor service logs -f # tail the service log
|
|
71
|
+
parasor service uninstall # stop + unregister
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The service is user-scope only and does not require sudo. The supervisor
|
|
75
|
+
restarts the server if it crashes, and the PTY host daemon keeps PTY sessions
|
|
76
|
+
available across server restarts. The server also exposes a loopback-only
|
|
77
|
+
`GET /healthz` probe for watchdogs.
|
|
78
|
+
|
|
79
|
+
## Agent PATH Shims
|
|
80
|
+
|
|
81
|
+
On startup, parasor installs user-scope shims under `~/.config/parasor` (or
|
|
82
|
+
`$PARASOR_CONFIG_DIR` when set) and prepends them only to PTYs spawned by
|
|
83
|
+
parasor. There is no `postinstall` hook, no sudo path, and no write to global
|
|
84
|
+
shell startup files.
|
|
85
|
+
|
|
86
|
+
Files written by the shim installer:
|
|
87
|
+
|
|
88
|
+
| Path | Purpose |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `~/.config/parasor/bin/claude` | Wrapper for Claude Code |
|
|
91
|
+
| `~/.config/parasor/bin/codex` | Wrapper for Codex |
|
|
92
|
+
| `~/.config/parasor/bin/open` | macOS `open` shim, only when a real `open` is found |
|
|
93
|
+
| `~/.config/parasor/bin/xdg-open` | Linux `xdg-open` shim, only when a real `xdg-open` is found |
|
|
94
|
+
| `~/.config/parasor/shell/zsh/.zshenv` and `.zshrc` | zsh overlay that sources normal zsh files, then reasserts the parasor shim path |
|
|
95
|
+
| `~/.config/parasor/shell/bash/.bashrc` | bash overlay that sources normal `.bashrc`, then reasserts the parasor shim path |
|
|
96
|
+
|
|
97
|
+
The Claude wrapper runs the real `claude` binary after injecting runtime hooks
|
|
98
|
+
for the current invocation. The hooks call back to the local parasor server so
|
|
99
|
+
the UI can show agent running, waiting, and completed states. When file drops
|
|
100
|
+
are available, the wrapper also adds the session upload directory through
|
|
101
|
+
Claude's CLI flags. It does not edit `~/.claude/settings.json`.
|
|
102
|
+
|
|
103
|
+
The Codex wrapper runs the real `codex` binary with a per-process notification
|
|
104
|
+
setting, records the Codex TUI session log, and mirrors task and approval
|
|
105
|
+
events back to parasor. It does not edit `~/.codex` config or change
|
|
106
|
+
`CODEX_HOME`.
|
|
107
|
+
|
|
108
|
+
The `open` and `xdg-open` shims route explicit terminal URL opens through
|
|
109
|
+
parasor's browser deep-link path when the command is run inside a parasor PTY.
|
|
110
|
+
Outside a live parasor session, the wrappers resolve and exec the real
|
|
111
|
+
binaries.
|
|
112
|
+
|
|
113
|
+
## Remote Access
|
|
114
|
+
|
|
115
|
+
parasor itself does not ship a tunnel. The expected mobile flow is: parasor
|
|
116
|
+
runs on your dev machine, and the phone reaches it over a trusted network.
|
|
117
|
+
|
|
118
|
+
- **Same LAN.** Default bind already covers it. Scan the QR from a phone on the
|
|
119
|
+
same Wi-Fi.
|
|
120
|
+
- **Tailscale.** With Tailscale running on both ends, the Tailnet IP and
|
|
121
|
+
MagicDNS hostname are reachable on the default bind.
|
|
122
|
+
- **Cloudflare Tunnel + Access, or equivalent identity-aware proxy.** Use this
|
|
123
|
+
when you need a stable public URL with SSO or device posture enforced before
|
|
124
|
+
any request reaches parasor.
|
|
125
|
+
- **SSH port-forward.** Run `parasor --host 127.0.0.1` on the remote side and
|
|
126
|
+
connect with `ssh -L 7681:127.0.0.1:7681 user@host`.
|
|
127
|
+
|
|
128
|
+
Direct exposure on a public IP, such as binding `0.0.0.0` on a VPS without an
|
|
129
|
+
overlay or identity-aware proxy in front, is out of scope. See
|
|
130
|
+
[SECURITY.md](./SECURITY.md) for the threat model.
|
|
131
|
+
|
|
132
|
+
`PARASOR_AUTH=none` refuses to start on a non-loopback bind.
|
|
133
|
+
`PARASOR_ALLOWED_ORIGINS` adds extra browser origins for custom hostnames and
|
|
134
|
+
reverse proxies.
|
|
135
|
+
|
|
136
|
+
## Opening Localhost Dev Servers From Mobile
|
|
137
|
+
|
|
138
|
+
When a terminal prints a loopback URL such as `http://localhost:5173`, opening
|
|
139
|
+
that URL on a phone would normally target the phone's own localhost. parasor
|
|
140
|
+
rewrites terminal and port-center open actions for detected loopback ports to a
|
|
141
|
+
reachable address on the parasor host, using a per-port TCP forwarder when the
|
|
142
|
+
dev server is bound to loopback only.
|
|
143
|
+
|
|
144
|
+
This is different from opening the app's port directly over Tailscale or LAN:
|
|
145
|
+
`http://<dev-machine-tailnet-name>:5173` only works if that app is listening on
|
|
146
|
+
a non-loopback interface. For Vite, that usually means `vite --host 0.0.0.0`
|
|
147
|
+
or `server.host = "0.0.0.0"`.
|
|
148
|
+
|
|
149
|
+
Security note: most dev servers do not have parasor's token auth. Use direct
|
|
150
|
+
`--host 0.0.0.0` dev-server exposure only on a trusted LAN or Tailnet. If you
|
|
151
|
+
only need to open the app from parasor, leaving the dev server loopback-bound
|
|
152
|
+
and using parasor's generated forwarder URL keeps exposure aligned with
|
|
153
|
+
parasor's own network surface.
|
|
154
|
+
|
|
155
|
+
## Configuration
|
|
156
|
+
|
|
157
|
+
| Variable | Default | Purpose |
|
|
158
|
+
|---|---|---|
|
|
159
|
+
| `PORT` | `7681` | HTTP listen port |
|
|
160
|
+
| `HOST` | `0.0.0.0` | Bind address; set `127.0.0.1` for loopback-only |
|
|
161
|
+
| `PARASOR_AUTH` | `token` | `token` or `none`; `none` is allowed only on loopback binds |
|
|
162
|
+
| `PARASOR_CONFIG_DIR` | `~/.config/parasor` | Persistent state directory |
|
|
163
|
+
| `PARASOR_ALLOWED_ORIGINS` | empty | Extra browser origins for WebSocket allowlist |
|
|
164
|
+
|
|
165
|
+
## Development
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
pnpm install
|
|
169
|
+
pnpm dev # backend on :7682, Vite on :7683
|
|
170
|
+
pnpm test # all workspaces
|
|
171
|
+
pnpm typecheck # TypeScript checks across packages
|
|
172
|
+
pnpm lint # Biome + layer boundary checks
|
|
173
|
+
pnpm lint:fix # apply Biome fixes
|
|
174
|
+
pnpm build # TypeScript + Vite build
|
|
175
|
+
pnpm package # assemble publishable dist/
|
|
176
|
+
pnpm clean # remove build outputs
|
|
177
|
+
pnpm clean:dev # stop dev leftovers and clear dev lockfiles
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
For local CLI install after source changes:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
pnpm install:local
|
|
184
|
+
pnpm uninstall:local
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Dev mode isolates itself from a running production parasor: backend port
|
|
188
|
+
defaults to `7682`, the Vite dev server defaults to `7683`, and
|
|
189
|
+
`PARASOR_CONFIG_DIR` defaults to `/tmp/parasor-dev`.
|
|
190
|
+
|
|
191
|
+
Requires Node.js 22+ and pnpm. macOS and Linux are primary. WSL is expected to
|
|
192
|
+
work for foreground use, but service mode requires systemd-enabled WSL. Native
|
|
193
|
+
Windows is not currently supported.
|
|
194
|
+
|
|
195
|
+
## Status
|
|
196
|
+
|
|
197
|
+
Pre-1.0. Configuration shape and CLI surface may change before `1.0.0`.
|
|
198
|
+
|
|
199
|
+
## License
|
|
200
|
+
|
|
201
|
+
MIT - see [LICENSE](./LICENSE).
|
|
202
|
+
|
|
203
|
+
## Acknowledgements
|
|
204
|
+
|
|
205
|
+
Built with [Hono](https://hono.dev), [node-pty](https://github.com/microsoft/node-pty),
|
|
206
|
+
[xterm.js](https://xtermjs.org), [React](https://react.dev),
|
|
207
|
+
[Vite](https://vitejs.dev), [Tailwind CSS](https://tailwindcss.com), and
|
|
208
|
+
[CodeMirror](https://codemirror.net).
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Third-Party Notices
|
|
2
|
+
|
|
3
|
+
This product bundles the following third-party assets or copied code snippets.
|
|
4
|
+
Each is used under the terms of its respective license as described below.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Symbols Nerd Font
|
|
9
|
+
|
|
10
|
+
- **File**: `packages/web/src/assets/fonts/SymbolsNerdFontMono-Regular.woff2`
|
|
11
|
+
- **Version**: Nerd Fonts v3.2.1 (`patched-fonts/NerdFontsSymbolsOnly`)
|
|
12
|
+
- **Source**: <https://github.com/ryanoasis/nerd-fonts>
|
|
13
|
+
- **License**: MIT License -- Copyright (c) 2014 Ryan L McIntyre
|
|
14
|
+
- **License file**: `packages/web/src/assets/fonts/LICENSE-SymbolsNerdFont.txt`
|
|
15
|
+
|
|
16
|
+
Symbols Nerd Font is a compilation of glyph sets from multiple upstream icon
|
|
17
|
+
font projects. The glyphs included are aggregated and redistributed by the
|
|
18
|
+
Nerd Fonts project under the MIT license. Notable upstream sources include:
|
|
19
|
+
|
|
20
|
+
| Source | Original license |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| [Powerline Symbols](https://github.com/powerline/powerline) | MIT |
|
|
23
|
+
| [Font Awesome](https://github.com/FortAwesome/Font-Awesome) | OFL-1.1 / MIT |
|
|
24
|
+
| [Devicons](https://github.com/vorillaz/devicons) | MIT |
|
|
25
|
+
| [Octicons](https://github.com/primer/octicons) | MIT |
|
|
26
|
+
| [Codicons](https://github.com/microsoft/vscode-codicons) | CC-BY-4.0 |
|
|
27
|
+
| [Font Logos](https://github.com/Lukas-W/font-logos) | MIT |
|
|
28
|
+
| [Material Design Icons](https://github.com/Templarian/MaterialDesign) | Apache-2.0 |
|
|
29
|
+
| [Weather Icons](https://github.com/erikflowers/weather-icons) | OFL-1.1 |
|
|
30
|
+
| [Pomicons](https://github.com/gabrielelana/pomicons) | MIT |
|
|
31
|
+
| [Seti-UI + Custom](https://github.com/jesseweed/seti-ui) | MIT |
|
|
32
|
+
| [IEC Power Symbols](https://unicodepowersymbol.com/) | OFL-1.1 |
|
|
33
|
+
|
|
34
|
+
All upstream licenses permit redistribution as part of a bundled application
|
|
35
|
+
when the applicable copyright notices and license terms are preserved. The
|
|
36
|
+
MIT license text that governs the `NerdFontsSymbolsOnly` package is included
|
|
37
|
+
in full alongside the font file.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Vendored color themes
|
|
42
|
+
|
|
43
|
+
- **Files**:
|
|
44
|
+
- `packages/web/src/vendor/themes/tokyo-night.json`
|
|
45
|
+
- `packages/web/src/vendor/themes/solarized-light.json`
|
|
46
|
+
- `packages/web/src/vendor/themes/monokai.json`
|
|
47
|
+
- **Sources**:
|
|
48
|
+
- Tokyo Night: <https://github.com/tokyo-night/tokyo-night-vscode-theme>
|
|
49
|
+
- Microsoft VS Code built-in themes: <https://github.com/microsoft/vscode>
|
|
50
|
+
- **License**: MIT
|
|
51
|
+
- **License file**: `packages/web/src/vendor/themes/LICENSE`
|
|
52
|
+
|
|
53
|
+
The vendored theme JSON files are distributed under the MIT License. The
|
|
54
|
+
aggregated upstream notices are kept in
|
|
55
|
+
`packages/web/src/vendor/themes/LICENSE`.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Symbols (FileTree icons)
|
|
60
|
+
|
|
61
|
+
- **Package**: `@react-symbols/icons`
|
|
62
|
+
- **Source**: <https://github.com/pheralb/react-symbols>
|
|
63
|
+
- **License**: MIT -- Copyright (c) pheralb
|
|
64
|
+
- **Origin**: React port of the [Symbols VSCode icon theme](https://marketplace.visualstudio.com/items?itemName=miguelsolorio.symbols) by Miguel Solorio (MIT). Used for file-type and folder icons in the FileTree pane.
|
|
65
|
+
|
|
66
|
+
The package ships individually-importable React SVG components, so parasor
|
|
67
|
+
only bundles the subset of icons it actually references in
|
|
68
|
+
`packages/web/src/lib/file-icons.tsx`.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Lucide icons
|
|
73
|
+
|
|
74
|
+
- **Source**: <https://github.com/lucide-icons/lucide>
|
|
75
|
+
- **License**: ISC -- Copyright (c) 2026 Lucide Icons and Contributors
|
|
76
|
+
- **Origin files**:
|
|
77
|
+
- `packages/web/src/components/primitives/PaGlyph.tsx`
|
|
78
|
+
- `packages/web/src/components/mobile/MobileKeyBar.tsx`
|
|
79
|
+
|
|
80
|
+
The icon paths in the listed files are adapted from individual Lucide SVG
|
|
81
|
+
files. Lucide is a community-maintained fork of Feather Icons; some glyphs
|
|
82
|
+
trace back to Feather (MIT, Copyright (c) 2013-present Cole Bemis). Both
|
|
83
|
+
upstream licenses permit redistribution with the copyright notices preserved.
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
ISC License
|
|
87
|
+
|
|
88
|
+
Copyright (c) 2026 Lucide Icons and Contributors
|
|
89
|
+
|
|
90
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
91
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
92
|
+
copyright notice and this permission notice appear in all copies.
|
|
93
|
+
|
|
94
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
95
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
96
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
97
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
98
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
99
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
100
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Glyphs in `PaGlyph.tsx` derived from icons originally introduced by Feather
|
|
104
|
+
also fall under the Feather MIT terms:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
The MIT License (MIT)
|
|
108
|
+
|
|
109
|
+
Copyright (c) 2013-present Cole Bemis
|
|
110
|
+
|
|
111
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
112
|
+
copy of this software and associated documentation files (the "Software"),
|
|
113
|
+
to deal in the Software without restriction, including without limitation
|
|
114
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
115
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
|
116
|
+
Software is furnished to do so, subject to the following conditions:
|
|
117
|
+
|
|
118
|
+
The above copyright notice and this permission notice shall be included
|
|
119
|
+
in all copies or substantial portions of the Software.
|
|
120
|
+
|
|
121
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
122
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
123
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
124
|
+
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
125
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
126
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
127
|
+
DEALINGS IN THE SOFTWARE.
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Runtime-downloaded font presets
|
|
133
|
+
|
|
134
|
+
The settings UI can download optional monospace font presets from upstream
|
|
135
|
+
GitHub Releases at user request. Those preset font files are not bundled in
|
|
136
|
+
the parasor source tree or npm package; parasor only stores a whitelist of
|
|
137
|
+
approved release asset URLs and extracts one Regular TTF into the user's local
|
|
138
|
+
font cache after the user starts the download.
|
package/bin/parasor.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Success payload returned by `POST /api/projects/:id/drops?sessionId=...`.
|
|
3
|
+
* Absolute paths are server-resolved under the per-session staging dir
|
|
4
|
+
* (`<PARASOR_UPLOAD_DIR>/<sessionId>-<ms>/`), which lives outside the
|
|
5
|
+
* project tree (upload staging isolation). The 3-layer GC owns lifetime: L1 on PTY
|
|
6
|
+
* exit, L2 at server boot, L3 every 60 minutes.
|
|
7
|
+
*/
|
|
8
|
+
export interface DropResponse {
|
|
9
|
+
paths: string[];
|
|
10
|
+
}
|
|
11
|
+
export type DropRejectReason = "path-traversal" | "control-char" | "too-long" | "empty" | "reserved";
|
|
12
|
+
export interface DropErrorTooLarge {
|
|
13
|
+
error: "too-large";
|
|
14
|
+
limit: number;
|
|
15
|
+
}
|
|
16
|
+
export interface DropErrorInvalidFilename {
|
|
17
|
+
error: "invalid-filename";
|
|
18
|
+
reason: DropRejectReason;
|
|
19
|
+
}
|
|
20
|
+
export interface DropErrorIo {
|
|
21
|
+
error: "io-error";
|
|
22
|
+
}
|
|
23
|
+
export type DropErrorResponse = DropErrorTooLarge | DropErrorInvalidFilename | DropErrorIo;
|
|
24
|
+
//# sourceMappingURL=drops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drops.d.ts","sourceRoot":"","sources":["../src/drops.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,cAAc,GACd,UAAU,GACV,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,wBAAwB,GACxB,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drops.js","sourceRoot":"","sources":["../src/drops.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-tree upload protocol (file-tree upload).
|
|
3
|
+
*
|
|
4
|
+
* Distinct from `/drops` (terminal pane) which lands files under
|
|
5
|
+
* `.parasor/drops/<timestamp>_<name>` for shell paste. This endpoint
|
|
6
|
+
* writes directly into the user's project tree at a target subdirectory.
|
|
7
|
+
*
|
|
8
|
+
* Conflict semantics are decided per request via `disposition`. The
|
|
9
|
+
* client surfaces a "Replace / Keep both / Skip" modal once per batch
|
|
10
|
+
* and applies the chosen mode to every file in the request.
|
|
11
|
+
*/
|
|
12
|
+
export type FileUploadDisposition = "replace" | "keep-both" | "skip";
|
|
13
|
+
export interface FileUploadResultEntry {
|
|
14
|
+
/** Filename as supplied by the client. */
|
|
15
|
+
originalName: string;
|
|
16
|
+
/** What ended up happening on disk. */
|
|
17
|
+
status: "written" | "renamed" | "skipped";
|
|
18
|
+
/** Final basename written (only when `status !== "skipped"`). */
|
|
19
|
+
finalName?: string;
|
|
20
|
+
/** Server-resolved absolute path (only when `status !== "skipped"`). */
|
|
21
|
+
finalPath?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface FileUploadResponse {
|
|
24
|
+
files: FileUploadResultEntry[];
|
|
25
|
+
}
|
|
26
|
+
export type FileUploadRejectReason = "path-traversal" | "control-char" | "too-long" | "empty" | "reserved";
|
|
27
|
+
export interface FileUploadErrorTooLarge {
|
|
28
|
+
error: "too-large";
|
|
29
|
+
limit: number;
|
|
30
|
+
}
|
|
31
|
+
export interface FileUploadErrorInvalidFilename {
|
|
32
|
+
error: "invalid-filename";
|
|
33
|
+
reason: FileUploadRejectReason;
|
|
34
|
+
}
|
|
35
|
+
export interface FileUploadErrorInvalidTarget {
|
|
36
|
+
error: "invalid-target";
|
|
37
|
+
/**
|
|
38
|
+
* `path-traversal` -- `targetDir` resolves outside the project root.
|
|
39
|
+
* `not-a-dir` -- `targetDir` exists but is a file (or symlink to one).
|
|
40
|
+
* `missing` -- `targetDir` does not exist on disk.
|
|
41
|
+
*/
|
|
42
|
+
reason: "path-traversal" | "not-a-dir" | "missing";
|
|
43
|
+
}
|
|
44
|
+
export interface FileUploadErrorReadOnly {
|
|
45
|
+
error: "read-only";
|
|
46
|
+
}
|
|
47
|
+
export interface FileUploadErrorIo {
|
|
48
|
+
error: "io-error";
|
|
49
|
+
}
|
|
50
|
+
export interface FileUploadErrorConflict {
|
|
51
|
+
error: "conflict";
|
|
52
|
+
/** Existing filenames that prevented the write under `disposition: "skip"`. */
|
|
53
|
+
conflicts: string[];
|
|
54
|
+
}
|
|
55
|
+
export type FileUploadErrorResponse = FileUploadErrorTooLarge | FileUploadErrorInvalidFilename | FileUploadErrorInvalidTarget | FileUploadErrorReadOnly | FileUploadErrorIo | FileUploadErrorConflict;
|
|
56
|
+
//# sourceMappingURL=file-uploads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-uploads.d.ts","sourceRoot":"","sources":["../src/file-uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAC9B,gBAAgB,GAChB,cAAc,GACd,UAAU,GACV,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;;OAIG;IACH,MAAM,EAAE,gBAAgB,GAAG,WAAW,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAC/B,uBAAuB,GACvB,8BAA8B,GAC9B,4BAA4B,GAC5B,uBAAuB,GACvB,iBAAiB,GACjB,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-tree upload protocol (file-tree upload).
|
|
3
|
+
*
|
|
4
|
+
* Distinct from `/drops` (terminal pane) which lands files under
|
|
5
|
+
* `.parasor/drops/<timestamp>_<name>` for shell paste. This endpoint
|
|
6
|
+
* writes directly into the user's project tree at a target subdirectory.
|
|
7
|
+
*
|
|
8
|
+
* Conflict semantics are decided per request via `disposition`. The
|
|
9
|
+
* client surfaces a "Replace / Keep both / Skip" modal once per batch
|
|
10
|
+
* and applies the chosen mode to every file in the request.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=file-uploads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-uploads.js","sourceRoot":"","sources":["../src/file-uploads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-commands.d.ts","sourceRoot":"","sources":["../src/ide-commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAUD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAiDvE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const MAX_COMMANDS = 50;
|
|
2
|
+
const MAX_ID_LENGTH = 128;
|
|
3
|
+
const MAX_LABEL_LENGTH = 200;
|
|
4
|
+
const MAX_COMMAND_LENGTH = 1000;
|
|
5
|
+
const MAX_ARGS = 50;
|
|
6
|
+
const MAX_ARG_LENGTH = 1000;
|
|
7
|
+
const RESERVED_IDS = new Set(["cursor", "vscode"]);
|
|
8
|
+
export function normalizeIdeCommands(value) {
|
|
9
|
+
if (!Array.isArray(value))
|
|
10
|
+
return [];
|
|
11
|
+
const out = [];
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
for (const item of value) {
|
|
14
|
+
if (!isPlainObject(item))
|
|
15
|
+
continue;
|
|
16
|
+
const id = item.id;
|
|
17
|
+
const label = item.label;
|
|
18
|
+
const command = item.command;
|
|
19
|
+
const args = item.args;
|
|
20
|
+
if (typeof id !== "string" ||
|
|
21
|
+
typeof label !== "string" ||
|
|
22
|
+
typeof command !== "string" ||
|
|
23
|
+
!Array.isArray(args) ||
|
|
24
|
+
id.length > MAX_ID_LENGTH) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const normalizedId = id.trim();
|
|
28
|
+
const normalizedLabel = label.trim();
|
|
29
|
+
const normalizedCommand = command.trim();
|
|
30
|
+
const normalizedArgs = args
|
|
31
|
+
.filter((arg) => typeof arg === "string")
|
|
32
|
+
.map((arg) => arg.trim())
|
|
33
|
+
.filter((arg) => arg.length > 0 && arg.length <= MAX_ARG_LENGTH)
|
|
34
|
+
.slice(0, MAX_ARGS);
|
|
35
|
+
if (!normalizedId ||
|
|
36
|
+
RESERVED_IDS.has(normalizedId) ||
|
|
37
|
+
seen.has(normalizedId) ||
|
|
38
|
+
!normalizedLabel ||
|
|
39
|
+
normalizedLabel.length > MAX_LABEL_LENGTH ||
|
|
40
|
+
!normalizedCommand ||
|
|
41
|
+
normalizedCommand.length > MAX_COMMAND_LENGTH) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
seen.add(normalizedId);
|
|
45
|
+
out.push({
|
|
46
|
+
id: normalizedId,
|
|
47
|
+
label: normalizedLabel,
|
|
48
|
+
command: normalizedCommand,
|
|
49
|
+
args: normalizedArgs,
|
|
50
|
+
});
|
|
51
|
+
if (out.length >= MAX_COMMANDS)
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
function isPlainObject(value) {
|
|
57
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ide-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-commands.js","sourceRoot":"","sources":["../src/ide-commands.ts"],"names":[],"mappings":"AAOA,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IACE,OAAO,EAAE,KAAK,QAAQ;YACtB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,EAAE,CAAC,MAAM,GAAG,aAAa,EACzB,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI;aACxB,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;aACvD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,cAAc,CAAC;aAC/D,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtB,IACE,CAAC,YAAY;YACb,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACtB,CAAC,eAAe;YAChB,eAAe,CAAC,MAAM,GAAG,gBAAgB;YACzC,CAAC,iBAAiB;YAClB,iBAAiB,CAAC,MAAM,GAAG,kBAAkB,EAC7C,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,YAAY;YAAE,MAAM;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pane-commands.d.ts","sourceRoot":"","sources":["../src/pane-commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAwCzE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const MAX_COMMANDS = 100;
|
|
2
|
+
const MAX_ID_LENGTH = 128;
|
|
3
|
+
const MAX_LABEL_LENGTH = 200;
|
|
4
|
+
const MAX_INITIAL_INPUT_LENGTH = 4000;
|
|
5
|
+
export function normalizePaneCommands(value) {
|
|
6
|
+
if (!Array.isArray(value))
|
|
7
|
+
return [];
|
|
8
|
+
const out = [];
|
|
9
|
+
const seen = new Set();
|
|
10
|
+
for (const item of value) {
|
|
11
|
+
if (!isPlainObject(item))
|
|
12
|
+
continue;
|
|
13
|
+
const id = item.id;
|
|
14
|
+
const label = item.label;
|
|
15
|
+
const initialInput = item.initialInput;
|
|
16
|
+
if (typeof id !== "string" ||
|
|
17
|
+
typeof label !== "string" ||
|
|
18
|
+
typeof initialInput !== "string" ||
|
|
19
|
+
id.length > MAX_ID_LENGTH ||
|
|
20
|
+
initialInput.length > MAX_INITIAL_INPUT_LENGTH) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const normalizedLabel = label.trim();
|
|
24
|
+
const normalizedInput = initialInput.trim();
|
|
25
|
+
if (!id ||
|
|
26
|
+
id.startsWith("builtin:") ||
|
|
27
|
+
seen.has(id) ||
|
|
28
|
+
!normalizedLabel ||
|
|
29
|
+
normalizedLabel.length > MAX_LABEL_LENGTH ||
|
|
30
|
+
!normalizedInput) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
seen.add(id);
|
|
34
|
+
out.push({
|
|
35
|
+
id,
|
|
36
|
+
label: normalizedLabel,
|
|
37
|
+
initialInput: normalizedInput,
|
|
38
|
+
});
|
|
39
|
+
if (out.length >= MAX_COMMANDS)
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
function isPlainObject(value) {
|
|
45
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=pane-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pane-commands.js","sourceRoot":"","sources":["../src/pane-commands.ts"],"names":[],"mappings":"AAMA,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IACE,OAAO,EAAE,KAAK,QAAQ;YACtB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,YAAY,KAAK,QAAQ;YAChC,EAAE,CAAC,MAAM,GAAG,aAAa;YACzB,YAAY,CAAC,MAAM,GAAG,wBAAwB,EAC9C,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,IACE,CAAC,EAAE;YACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACZ,CAAC,eAAe;YAChB,eAAe,CAAC,MAAM,GAAG,gBAAgB;YACzC,CAAC,eAAe,EAChB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC;YACP,EAAE;YACF,KAAK,EAAE,eAAe;YACtB,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,YAAY;YAAE,MAAM;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|