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,218 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { WorkspaceConflictError, WorkspaceNotFoundError, } from "../application/workspace/errors.js";
|
|
3
|
+
import { createSessionCommands } from "../application/workspace/session-commands.js";
|
|
4
|
+
import { createSessionQueries } from "../application/workspace/session-queries.js";
|
|
5
|
+
import { buildHeadlessReplaySnapshot } from "../pty/headless-replay-snapshot.js";
|
|
6
|
+
const DEFAULT_SCROLLBACK_SNAPSHOT_COLS = 80;
|
|
7
|
+
const DEFAULT_SCROLLBACK_SNAPSHOT_ROWS = 24;
|
|
8
|
+
const DEFAULT_SCROLLBACK_SNAPSHOT_MAX_BYTES = 256 * 1024;
|
|
9
|
+
const MAX_SCROLLBACK_SNAPSHOT_BYTES = 4 * 1024 * 1024;
|
|
10
|
+
const DEFAULT_SCROLLBACK_SNAPSHOT_LINES = 10_000;
|
|
11
|
+
const MAX_SCROLLBACK_SNAPSHOT_LINES = 160_000;
|
|
12
|
+
function readPositiveIntegerQuery(value, fallback) {
|
|
13
|
+
const parsed = Number(value);
|
|
14
|
+
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : fallback;
|
|
15
|
+
}
|
|
16
|
+
function scrollbackLinesForMaxBytes(maxBytes) {
|
|
17
|
+
const multiplier = Math.max(1, Math.ceil(maxBytes / DEFAULT_SCROLLBACK_SNAPSHOT_MAX_BYTES));
|
|
18
|
+
return Math.min(DEFAULT_SCROLLBACK_SNAPSHOT_LINES * multiplier, MAX_SCROLLBACK_SNAPSHOT_LINES);
|
|
19
|
+
}
|
|
20
|
+
export function createSessionRoutes(ptyManager, eventBus, store, terminalTraceRecorder) {
|
|
21
|
+
const routes = new Hono();
|
|
22
|
+
const sessionCommands = createSessionCommands({
|
|
23
|
+
appStateStore: store,
|
|
24
|
+
eventBus,
|
|
25
|
+
ptyManager,
|
|
26
|
+
});
|
|
27
|
+
const sessionQueries = createSessionQueries({ ptyManager });
|
|
28
|
+
routes.get("/", (c) => {
|
|
29
|
+
const projectId = c.req.query("projectId");
|
|
30
|
+
return c.json({ sessions: sessionQueries.listSessions(projectId) });
|
|
31
|
+
});
|
|
32
|
+
routes.post("/", async (c) => {
|
|
33
|
+
const body = await c.req
|
|
34
|
+
.json()
|
|
35
|
+
.catch(() => ({}));
|
|
36
|
+
if (!body.projectId) {
|
|
37
|
+
return c.json({ error: "projectId is required" }, 400);
|
|
38
|
+
}
|
|
39
|
+
const createStart = performance.now();
|
|
40
|
+
terminalTraceRecorder?.record("session-create-request", {
|
|
41
|
+
projectId: body.projectId,
|
|
42
|
+
commandType: body.command?.type ?? "shell",
|
|
43
|
+
hasCwd: typeof body.cwd === "string",
|
|
44
|
+
hasTitle: typeof body.title === "string",
|
|
45
|
+
hasBootstrapInput: typeof body.bootstrapInput === "string",
|
|
46
|
+
});
|
|
47
|
+
try {
|
|
48
|
+
const session = await sessionCommands.createSession({
|
|
49
|
+
projectId: body.projectId,
|
|
50
|
+
...(body.command !== undefined && { command: body.command }),
|
|
51
|
+
...(body.cwd !== undefined && { cwd: body.cwd }),
|
|
52
|
+
...(body.title !== undefined && { title: body.title }),
|
|
53
|
+
...(typeof body.bootstrapInput === "string" && {
|
|
54
|
+
bootstrapInput: body.bootstrapInput,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
terminalTraceRecorder?.record("session-create-complete", {
|
|
58
|
+
projectId: session.projectId,
|
|
59
|
+
commandType: session.command.type,
|
|
60
|
+
state: session.state,
|
|
61
|
+
pid: session.pid ?? null,
|
|
62
|
+
generation: session.generation,
|
|
63
|
+
durationMs: Math.round((performance.now() - createStart) * 10) / 10,
|
|
64
|
+
}, { sessionId: session.id });
|
|
65
|
+
return c.json(session, 201);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
69
|
+
terminalTraceRecorder?.record("session-create-failed", {
|
|
70
|
+
projectId: body.projectId,
|
|
71
|
+
reason: "project-not-found",
|
|
72
|
+
durationMs: Math.round((performance.now() - createStart) * 10) / 10,
|
|
73
|
+
});
|
|
74
|
+
return c.json({ error: "Project not found" }, 404);
|
|
75
|
+
}
|
|
76
|
+
terminalTraceRecorder?.record("session-create-failed", {
|
|
77
|
+
projectId: body.projectId,
|
|
78
|
+
reason: error instanceof Error ? error.name : "unknown",
|
|
79
|
+
durationMs: Math.round((performance.now() - createStart) * 10) / 10,
|
|
80
|
+
});
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
routes.get("/:id/cwd", async (c) => {
|
|
85
|
+
const id = c.req.param("id");
|
|
86
|
+
try {
|
|
87
|
+
return c.json(await sessionQueries.getSessionCwd(id));
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
91
|
+
return c.json({ error: "Not found" }, 404);
|
|
92
|
+
}
|
|
93
|
+
if (error instanceof WorkspaceConflictError) {
|
|
94
|
+
return c.json({ error: error.message }, 409);
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
routes.get("/:id/scrollback-snapshot", async (c) => {
|
|
100
|
+
const id = c.req.param("id");
|
|
101
|
+
if (!ptyManager.get(id)) {
|
|
102
|
+
return c.json({ error: "Not found" }, 404);
|
|
103
|
+
}
|
|
104
|
+
const scrollback = ptyManager.getScrollback(id);
|
|
105
|
+
if (!scrollback) {
|
|
106
|
+
return c.json({
|
|
107
|
+
text: "",
|
|
108
|
+
rawBytes: 0,
|
|
109
|
+
replayBytes: 0,
|
|
110
|
+
maxBytes: 0,
|
|
111
|
+
hasMore: false,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const cols = readPositiveIntegerQuery(c.req.query("cols"), DEFAULT_SCROLLBACK_SNAPSHOT_COLS);
|
|
115
|
+
const rows = readPositiveIntegerQuery(c.req.query("rows"), DEFAULT_SCROLLBACK_SNAPSHOT_ROWS);
|
|
116
|
+
const maxBytes = Math.min(readPositiveIntegerQuery(c.req.query("maxBytes"), DEFAULT_SCROLLBACK_SNAPSHOT_MAX_BYTES), MAX_SCROLLBACK_SNAPSHOT_BYTES);
|
|
117
|
+
const scrollbackLines = scrollbackLinesForMaxBytes(maxBytes);
|
|
118
|
+
const snapshot = await buildHeadlessReplaySnapshot(scrollback, {
|
|
119
|
+
cols,
|
|
120
|
+
rows,
|
|
121
|
+
scrollbackLines,
|
|
122
|
+
maxBytes,
|
|
123
|
+
});
|
|
124
|
+
const hitLineCap = snapshot.bufferLines >= scrollbackLines + rows;
|
|
125
|
+
return c.json({
|
|
126
|
+
text: snapshot.text,
|
|
127
|
+
rawBytes: snapshot.rawBytes,
|
|
128
|
+
replayBytes: snapshot.snapshotBytes,
|
|
129
|
+
maxBytes,
|
|
130
|
+
hasMore: snapshot.snapshotBytes >= maxBytes || hitLineCap,
|
|
131
|
+
bufferLines: snapshot.bufferLines,
|
|
132
|
+
emittedLines: snapshot.emittedLines,
|
|
133
|
+
scrollbackLines,
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
routes.post("/:id/pin", async (c) => {
|
|
137
|
+
const id = c.req.param("id");
|
|
138
|
+
const body = await c.req
|
|
139
|
+
.json()
|
|
140
|
+
.catch(() => ({}));
|
|
141
|
+
if (typeof body.pinned !== "boolean") {
|
|
142
|
+
return c.json({ error: "pinned must be a boolean" }, 400);
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const session = await sessionCommands.setSessionPinned(id, body.pinned);
|
|
146
|
+
return c.json(session);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
150
|
+
return c.json({ error: "Not found" }, 404);
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
routes.post("/:id/title", async (c) => {
|
|
156
|
+
const id = c.req.param("id");
|
|
157
|
+
const body = await c.req
|
|
158
|
+
.json()
|
|
159
|
+
.catch(() => ({}));
|
|
160
|
+
if (typeof body.title !== "string") {
|
|
161
|
+
return c.json({ error: "title must be a string" }, 400);
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const session = await sessionCommands.setSessionTitle(id, body.title);
|
|
165
|
+
return c.json(session);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
169
|
+
return c.json({ error: "Not found" }, 404);
|
|
170
|
+
}
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
routes.post("/:id/restart", async (c) => {
|
|
175
|
+
const id = c.req.param("id");
|
|
176
|
+
try {
|
|
177
|
+
const restarted = await sessionCommands.restartSession(id);
|
|
178
|
+
return c.json(restarted);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
182
|
+
return c.json({ error: "Not found" }, 404);
|
|
183
|
+
}
|
|
184
|
+
if (error instanceof WorkspaceConflictError) {
|
|
185
|
+
return c.json({ error: error.message }, 409);
|
|
186
|
+
}
|
|
187
|
+
return c.json({ error: error instanceof Error ? error.message : "Restart failed" }, 500);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
routes.delete("/:id", async (c) => {
|
|
191
|
+
const id = c.req.param("id");
|
|
192
|
+
const deleteStart = performance.now();
|
|
193
|
+
terminalTraceRecorder?.record("session-delete-request", {}, { sessionId: id });
|
|
194
|
+
try {
|
|
195
|
+
await sessionCommands.deleteSession(id);
|
|
196
|
+
terminalTraceRecorder?.record("session-delete-complete", {
|
|
197
|
+
durationMs: Math.round((performance.now() - deleteStart) * 10) / 10,
|
|
198
|
+
}, { sessionId: id });
|
|
199
|
+
return c.json({ ok: true });
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
if (error instanceof WorkspaceNotFoundError) {
|
|
203
|
+
terminalTraceRecorder?.record("session-delete-failed", {
|
|
204
|
+
reason: "not-found",
|
|
205
|
+
durationMs: Math.round((performance.now() - deleteStart) * 10) / 10,
|
|
206
|
+
}, { sessionId: id });
|
|
207
|
+
return c.json({ error: "Not found" }, 404);
|
|
208
|
+
}
|
|
209
|
+
terminalTraceRecorder?.record("session-delete-failed", {
|
|
210
|
+
reason: error instanceof Error ? error.name : "unknown",
|
|
211
|
+
durationMs: Math.round((performance.now() - deleteStart) * 10) / 10,
|
|
212
|
+
}, { sessionId: id });
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
return routes;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
export interface CaffeinateControllerOptions {
|
|
3
|
+
platform?: NodeJS.Platform;
|
|
4
|
+
spawner?: (command: string, args: string[]) => ChildProcess;
|
|
5
|
+
parentPid?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Keeps a `caffeinate -i` child alive while the server is configured to
|
|
9
|
+
* prevent idle sleep AND at least one WS client is attached. No-op on
|
|
10
|
+
* non-darwin hosts -- callers may construct unconditionally.
|
|
11
|
+
*
|
|
12
|
+
* Uses `caffeinate -w <parent-pid>` so the child self-terminates when the
|
|
13
|
+
* parent process dies ungracefully (SIGKILL / crash). Without this binding
|
|
14
|
+
* an orphaned caffeinate would keep the Mac awake indefinitely until the
|
|
15
|
+
* user manually killed it.
|
|
16
|
+
*/
|
|
17
|
+
export declare class CaffeinateController {
|
|
18
|
+
private readonly platform;
|
|
19
|
+
private readonly spawner;
|
|
20
|
+
private readonly parentPid;
|
|
21
|
+
private proc;
|
|
22
|
+
private enabled;
|
|
23
|
+
private clientCount;
|
|
24
|
+
constructor(opts?: CaffeinateControllerOptions);
|
|
25
|
+
setEnabled(enabled: boolean): void;
|
|
26
|
+
setClientCount(count: number): void;
|
|
27
|
+
isRunning(): boolean;
|
|
28
|
+
shutdown(): void;
|
|
29
|
+
private reconcile;
|
|
30
|
+
private startProc;
|
|
31
|
+
private killProc;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=caffeinate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate.d.ts","sourceRoot":"","sources":["../../src/service/caffeinate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAE9D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,YAAY,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAK;gBAEZ,IAAI,GAAE,2BAAgC;IAQlD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMlC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnC,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
/**
|
|
3
|
+
* Keeps a `caffeinate -i` child alive while the server is configured to
|
|
4
|
+
* prevent idle sleep AND at least one WS client is attached. No-op on
|
|
5
|
+
* non-darwin hosts -- callers may construct unconditionally.
|
|
6
|
+
*
|
|
7
|
+
* Uses `caffeinate -w <parent-pid>` so the child self-terminates when the
|
|
8
|
+
* parent process dies ungracefully (SIGKILL / crash). Without this binding
|
|
9
|
+
* an orphaned caffeinate would keep the Mac awake indefinitely until the
|
|
10
|
+
* user manually killed it.
|
|
11
|
+
*/
|
|
12
|
+
export class CaffeinateController {
|
|
13
|
+
platform;
|
|
14
|
+
spawner;
|
|
15
|
+
parentPid;
|
|
16
|
+
proc = null;
|
|
17
|
+
enabled = false;
|
|
18
|
+
clientCount = 0;
|
|
19
|
+
constructor(opts = {}) {
|
|
20
|
+
this.platform = opts.platform ?? process.platform;
|
|
21
|
+
this.spawner =
|
|
22
|
+
opts.spawner ??
|
|
23
|
+
((command, args) => spawn(command, args, { stdio: "ignore" }));
|
|
24
|
+
this.parentPid = opts.parentPid ?? process.pid;
|
|
25
|
+
}
|
|
26
|
+
setEnabled(enabled) {
|
|
27
|
+
if (this.enabled === enabled)
|
|
28
|
+
return;
|
|
29
|
+
this.enabled = enabled;
|
|
30
|
+
this.reconcile();
|
|
31
|
+
}
|
|
32
|
+
setClientCount(count) {
|
|
33
|
+
if (this.clientCount === count)
|
|
34
|
+
return;
|
|
35
|
+
this.clientCount = count;
|
|
36
|
+
this.reconcile();
|
|
37
|
+
}
|
|
38
|
+
isRunning() {
|
|
39
|
+
return this.proc !== null;
|
|
40
|
+
}
|
|
41
|
+
shutdown() {
|
|
42
|
+
this.killProc();
|
|
43
|
+
}
|
|
44
|
+
reconcile() {
|
|
45
|
+
const shouldRun = this.platform === "darwin" && this.enabled && this.clientCount > 0;
|
|
46
|
+
if (shouldRun && this.proc === null) {
|
|
47
|
+
this.startProc();
|
|
48
|
+
}
|
|
49
|
+
else if (!shouldRun && this.proc !== null) {
|
|
50
|
+
this.killProc();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
startProc() {
|
|
54
|
+
const proc = this.spawner("caffeinate", [
|
|
55
|
+
"-i",
|
|
56
|
+
"-w",
|
|
57
|
+
String(this.parentPid),
|
|
58
|
+
]);
|
|
59
|
+
this.proc = proc;
|
|
60
|
+
proc.on("exit", () => {
|
|
61
|
+
if (this.proc === proc)
|
|
62
|
+
this.proc = null;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
killProc() {
|
|
66
|
+
if (this.proc !== null) {
|
|
67
|
+
this.proc.kill();
|
|
68
|
+
this.proc = null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=caffeinate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate.js","sourceRoot":"","sources":["../../src/service/caffeinate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAQ9D;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IACd,QAAQ,CAAkB;IAC1B,OAAO,CAAoD;IAC3D,SAAS,CAAS;IAC3B,IAAI,GAAwB,IAAI,CAAC;IACjC,OAAO,GAAG,KAAK,CAAC;IAChB,WAAW,GAAG,CAAC,CAAC;IAExB,YAAY,OAAoC,EAAE;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,OAAO;gBACZ,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK;YAAE,OAAO;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IAC5B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,SAAS;QACf,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrE,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,SAAS;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACtC,IAAI;YACJ,IAAI;YACJ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { type AppState, type Project, type Session } from "@parasor/shared";
|
|
2
|
+
export interface AppStateStoreOpts {
|
|
3
|
+
/** Directory containing state.json. Defaults to ~/.config/parasor */
|
|
4
|
+
dir?: string;
|
|
5
|
+
/** Debounce delay in ms. Defaults to 300 */
|
|
6
|
+
debounceMs?: number;
|
|
7
|
+
/**
|
|
8
|
+
* -- invoked when a debounced write fails
|
|
9
|
+
* (delegate persist reject / writeFileSync throw). Mutator callers
|
|
10
|
+
* are sync `void`-returning, so without this hook a transient
|
|
11
|
+
* IPC NACK or disk EIO would silently swallow project / projectStates
|
|
12
|
+
* / serviceConfig changes. Default = `console.error`. Pass `null` to
|
|
13
|
+
* silence (tests) but DO NOT silence in production: the operator
|
|
14
|
+
* needs the signal to know state.json is stale.
|
|
15
|
+
*/
|
|
16
|
+
onPersistError?: ((err: unknown) => void) | null;
|
|
17
|
+
}
|
|
18
|
+
export interface AppStatePersistenceDelegate {
|
|
19
|
+
/**
|
|
20
|
+
* Persist the *server-owned* domains. The delegate is responsible for
|
|
21
|
+
* resolving when persistence has actually committed (e.g. IPC ACK).
|
|
22
|
+
* Throws/rejects -> caller logs and (for `flush()`) propagates so the
|
|
23
|
+
* shutdown path can decide to skip the daemon-graceful marker.
|
|
24
|
+
*/
|
|
25
|
+
persist(state: AppState): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export type ProjectsMutateView = Pick<AppState, "projects" | "projectStates">;
|
|
28
|
+
export type ProjectStatesMutateView = Pick<AppState, "projectStates"> & Readonly<{
|
|
29
|
+
projects: ReadonlyArray<Readonly<Project>>;
|
|
30
|
+
sessions: ReadonlyArray<Readonly<Session>>;
|
|
31
|
+
}>;
|
|
32
|
+
export type ServiceConfigMutateView = Pick<AppState, "serviceConfig">;
|
|
33
|
+
export type PaneCommandsMutateView = Pick<AppState, "paneCommands">;
|
|
34
|
+
export type IdeCommandsMutateView = Pick<AppState, "ideCommands">;
|
|
35
|
+
export type SessionsMutateView = Pick<AppState, "sessions" | "sessionRecords"> & Readonly<{
|
|
36
|
+
projects: ReadonlyArray<Readonly<Project>>;
|
|
37
|
+
}>;
|
|
38
|
+
export declare class AppStateReadOnlyError extends Error {
|
|
39
|
+
constructor();
|
|
40
|
+
}
|
|
41
|
+
export declare class AppStateStore {
|
|
42
|
+
private state;
|
|
43
|
+
private readonly dir;
|
|
44
|
+
private readonly filePath;
|
|
45
|
+
private readonly tmpPath;
|
|
46
|
+
private readonly debounceMs;
|
|
47
|
+
private timer;
|
|
48
|
+
private destroyed;
|
|
49
|
+
/**
|
|
50
|
+
* Daemon-mode mirror guard.
|
|
51
|
+
* When true, only the **session domain** (`sessions`, `sessionRecords`)
|
|
52
|
+
* is read-only -- the daemon owns those writes. Project / projectStates
|
|
53
|
+
* / serviceConfig stay writable in both modes (the daemon never touches
|
|
54
|
+
* them; their only writer is the server). The daemon-IPC reconciler
|
|
55
|
+
* applies session-domain broadcasts via `internalMutate()` to bypass
|
|
56
|
+
* this guard. Default false (in-process mode owns all writes).
|
|
57
|
+
*/
|
|
58
|
+
private sessionsReadOnly;
|
|
59
|
+
/**
|
|
60
|
+
* daemon state ownership -- when set, write() routes the in-memory state through the
|
|
61
|
+
* delegate instead of writing state.json directly. The remote-mode
|
|
62
|
+
* server installs an IPC delegate so the daemon (sole file writer)
|
|
63
|
+
* persists the server-owned domains. Mirror updates (internalMutate)
|
|
64
|
+
* skip the delegate because they reflect domain the writer already
|
|
65
|
+
* persisted.
|
|
66
|
+
*/
|
|
67
|
+
private persistenceDelegate;
|
|
68
|
+
/**
|
|
69
|
+
* Tracks the most recent debounced-write promise. `flush()` awaits
|
|
70
|
+
* it BEFORE issuing its own write so a shutdown-time flush surfaces
|
|
71
|
+
* any in-flight failure (codex MED daemon state ownership/round 2). The promise resolves
|
|
72
|
+
* whether the underlying write succeeded or rejected -- failures are
|
|
73
|
+
* routed through `onPersistError` and then silenced here so awaiting
|
|
74
|
+
* never throws on a shutdown path.
|
|
75
|
+
*/
|
|
76
|
+
private lastWrite;
|
|
77
|
+
private readonly onPersistError;
|
|
78
|
+
constructor(opts?: AppStateStoreOpts);
|
|
79
|
+
/**
|
|
80
|
+
* Directory containing `state.json`. Used by the mode-marker subsystem
|
|
81
|
+
* so the cross-mode mutex collides on the
|
|
82
|
+
* same directory the store persists into, regardless of overrides.
|
|
83
|
+
*/
|
|
84
|
+
getDir(): string;
|
|
85
|
+
private load;
|
|
86
|
+
get(): Readonly<AppState>;
|
|
87
|
+
/**
|
|
88
|
+
* Server-owned domain: project records (`projects` array). Always
|
|
89
|
+
* writable, even in remote daemon mode -- the daemon never touches
|
|
90
|
+
* project records, so the server is unconditionally authoritative.
|
|
91
|
+
*
|
|
92
|
+
* The callback may also touch `projectStates` since both fields move
|
|
93
|
+
* together (project create/delete must keep the per-project state map
|
|
94
|
+
* in lock-step). Use `mutateProjectStates` for pure projectStates
|
|
95
|
+
* writes (panes, layout, focus) without project-record changes.
|
|
96
|
+
*/
|
|
97
|
+
mutateProjects(fn: (state: ProjectsMutateView) => void): void;
|
|
98
|
+
/**
|
|
99
|
+
* Server-owned domain: per-project UI state (`projectStates`). Always
|
|
100
|
+
* writable. Pane layout, focus, file-tree state, etc. -- none of which
|
|
101
|
+
* the daemon knows about. `projects` and `sessions` are exposed
|
|
102
|
+
* read-only so reconciliation logic can compute orphan sets without
|
|
103
|
+
* being able to write into either domain.
|
|
104
|
+
*/
|
|
105
|
+
mutateProjectStates(fn: (state: ProjectStatesMutateView) => void): void;
|
|
106
|
+
/**
|
|
107
|
+
* Server-owned domain: `serviceConfig`. Always writable. Daemon does
|
|
108
|
+
* not consume serviceConfig; only the server reads it.
|
|
109
|
+
*/
|
|
110
|
+
mutateServiceConfig(fn: (state: ServiceConfigMutateView) => void): void;
|
|
111
|
+
/**
|
|
112
|
+
* Server-owned domain: terminal launcher commands. Always writable; the
|
|
113
|
+
* daemon only owns PTY sessions/sessionRecords.
|
|
114
|
+
*/
|
|
115
|
+
mutatePaneCommands(fn: (state: PaneCommandsMutateView) => void): void;
|
|
116
|
+
mutateIdeCommands(fn: (state: IdeCommandsMutateView) => void): void;
|
|
117
|
+
/**
|
|
118
|
+
* Daemon-owned domain: `sessions` + `sessionRecords`. In remote mode
|
|
119
|
+
* the server is a mirror -- server-side writes throw to surface the
|
|
120
|
+
* ownership violation. The daemon-IPC reconciler uses `internalMutate`
|
|
121
|
+
* to apply broadcasts without tripping this guard. `projects` is
|
|
122
|
+
* exposed read-only for project-membership filters used during
|
|
123
|
+
* startup reconciliation.
|
|
124
|
+
*/
|
|
125
|
+
mutateSessions(fn: (state: SessionsMutateView) => void): void;
|
|
126
|
+
/**
|
|
127
|
+
* Bypass the session-domain guard. Reserved for the daemon-IPC
|
|
128
|
+
* reconciler on the server side: SESSION_UPDATE / SESSION_LIST
|
|
129
|
+
* broadcasts apply here without tripping `mutateSessions`. In
|
|
130
|
+
* delegate mode the mutation is mirror-only -- the daemon already
|
|
131
|
+
* persisted these domains before broadcasting, so the server
|
|
132
|
+
* skips the IPC round-trip. Without a delegate (in-process / daemon
|
|
133
|
+
* itself), the call schedules a normal file flush so the local
|
|
134
|
+
* state.json stays coherent for UI reload.
|
|
135
|
+
*/
|
|
136
|
+
internalMutate(fn: (state: AppState) => void): void;
|
|
137
|
+
/**
|
|
138
|
+
* Toggle the session-domain guard (narrowed by daemon state ownership). Idempotent.
|
|
139
|
+
* Called once at factory-time after the PtyHost mode is decided
|
|
140
|
+
* (in-process -> false, remote -> true) -- runtime flipping is not
|
|
141
|
+
* supported (by design).
|
|
142
|
+
*/
|
|
143
|
+
setSessionsReadOnly(readOnly: boolean): void;
|
|
144
|
+
isSessionsReadOnly(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* daemon state ownership -- install/uninstall the IPC persistence delegate. In remote
|
|
147
|
+
* mode the server installs the delegate after RemotePtyHost.connect
|
|
148
|
+
* succeeds. Idempotent; pass null to fall back to direct file writes
|
|
149
|
+
* (e.g. when host factory recreates an in-process host). Setting the
|
|
150
|
+
* delegate does not flush -- callers do that explicitly if the next
|
|
151
|
+
* snapshot needs to land on disk before further work.
|
|
152
|
+
*/
|
|
153
|
+
setPersistenceDelegate(delegate: AppStatePersistenceDelegate | null): void;
|
|
154
|
+
/**
|
|
155
|
+
* Force a flush *now* and await the underlying persistence (file
|
|
156
|
+
* write or IPC ACK). Used by shutdown paths that must observe IO
|
|
157
|
+
* errors before deciding whether to write the daemon-graceful
|
|
158
|
+
* marker. Synchronous in spirit (cancels the debounce timer); the
|
|
159
|
+
* Promise reflects the persist step.
|
|
160
|
+
*/
|
|
161
|
+
flush(): Promise<void>;
|
|
162
|
+
/** Cancel pending timer and ignore future mutate calls (for test teardown). */
|
|
163
|
+
destroy(): void;
|
|
164
|
+
private scheduleFlush;
|
|
165
|
+
private write;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=app-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../src/state/app-state.ts"],"names":[],"mappings":"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"}
|