claude-mux 0.7.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/.beads/README.md +81 -0
- package/.beads/config.yaml +62 -0
- package/.beads/interactions.jsonl +0 -0
- package/.beads/issues.jsonl +5 -0
- package/.beads/metadata.json +4 -0
- package/.eslintrc.json +25 -0
- package/.gitattributes +3 -0
- package/.prettierrc +7 -0
- package/CLAUDE.md +123 -0
- package/LICENSE +21 -0
- package/PLAN-beads-integration.md +250 -0
- package/README.md +366 -0
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +147 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/serve.d.ts +8 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +59 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/setup.d.ts +4 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +12 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/tui.d.ts +9 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +234 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/uninstall.d.ts +4 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +12 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/components/Header.d.ts +7 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +14 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/HelpDialog.d.ts +6 -0
- package/dist/components/HelpDialog.d.ts.map +1 -0
- package/dist/components/HelpDialog.js +14 -0
- package/dist/components/HelpDialog.js.map +1 -0
- package/dist/components/SessionEntry.d.ts +17 -0
- package/dist/components/SessionEntry.d.ts.map +1 -0
- package/dist/components/SessionEntry.js +102 -0
- package/dist/components/SessionEntry.js.map +1 -0
- package/dist/components/SessionList.d.ts +14 -0
- package/dist/components/SessionList.d.ts.map +1 -0
- package/dist/components/SessionList.js +57 -0
- package/dist/components/SessionList.js.map +1 -0
- package/dist/components/StatusBar.d.ts +6 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar.js +7 -0
- package/dist/components/StatusBar.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +6 -0
- package/dist/components/index.js.map +1 -0
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +4 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +23 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sessions-json.d.ts +85 -0
- package/dist/db/sessions-json.d.ts.map +1 -0
- package/dist/db/sessions-json.js +242 -0
- package/dist/db/sessions-json.js.map +1 -0
- package/dist/db/sessions.d.ts +38 -0
- package/dist/db/sessions.d.ts.map +1 -0
- package/dist/db/sessions.js +87 -0
- package/dist/db/sessions.js.map +1 -0
- package/dist/hooks/claude-mux-hook.d.ts +15 -0
- package/dist/hooks/claude-mux-hook.d.ts.map +1 -0
- package/dist/hooks/claude-mux-hook.js +396 -0
- package/dist/hooks/claude-mux-hook.js.map +1 -0
- package/dist/hooks/claude-watch-hook.d.ts +15 -0
- package/dist/hooks/claude-watch-hook.d.ts.map +1 -0
- package/dist/hooks/claude-watch-hook.js +396 -0
- package/dist/hooks/claude-watch-hook.js.map +1 -0
- package/dist/server/custom-server.d.ts +13 -0
- package/dist/server/custom-server.d.ts.map +1 -0
- package/dist/server/custom-server.js +63 -0
- package/dist/server/custom-server.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1143 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/cors.d.ts +2 -0
- package/dist/server/middleware/cors.d.ts.map +1 -0
- package/dist/server/middleware/cors.js +11 -0
- package/dist/server/middleware/cors.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +3 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +78 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/stream.d.ts +3 -0
- package/dist/server/routes/stream.d.ts.map +1 -0
- package/dist/server/routes/stream.js +45 -0
- package/dist/server/routes/stream.js.map +1 -0
- package/dist/server/types.d.ts +28 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/watcher.d.ts +22 -0
- package/dist/server/watcher.d.ts.map +1 -0
- package/dist/server/watcher.js +119 -0
- package/dist/server/watcher.js.map +1 -0
- package/dist/server/websocket.d.ts +51 -0
- package/dist/server/websocket.d.ts.map +1 -0
- package/dist/server/websocket.js +156 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/server/ws-handlers.d.ts +174 -0
- package/dist/server/ws-handlers.d.ts.map +1 -0
- package/dist/server/ws-handlers.js +695 -0
- package/dist/server/ws-handlers.js.map +1 -0
- package/dist/setup/hooks.d.ts +44 -0
- package/dist/setup/hooks.d.ts.map +1 -0
- package/dist/setup/hooks.js +267 -0
- package/dist/setup/hooks.js.map +1 -0
- package/dist/setup/index.d.ts +3 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +3 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/wizard.d.ts +4 -0
- package/dist/setup/wizard.d.ts.map +1 -0
- package/dist/setup/wizard.js +72 -0
- package/dist/setup/wizard.js.map +1 -0
- package/dist/tmux/detect.d.ts +25 -0
- package/dist/tmux/detect.d.ts.map +1 -0
- package/dist/tmux/detect.js +71 -0
- package/dist/tmux/detect.js.map +1 -0
- package/dist/tmux/navigate.d.ts +13 -0
- package/dist/tmux/navigate.d.ts.map +1 -0
- package/dist/tmux/navigate.js +41 -0
- package/dist/tmux/navigate.js.map +1 -0
- package/dist/tmux/pane.d.ts +57 -0
- package/dist/tmux/pane.d.ts.map +1 -0
- package/dist/tmux/pane.js +156 -0
- package/dist/tmux/pane.js.map +1 -0
- package/dist/tmux/resize.d.ts +10 -0
- package/dist/tmux/resize.d.ts.map +1 -0
- package/dist/tmux/resize.js +25 -0
- package/dist/tmux/resize.js.map +1 -0
- package/dist/utils/paths.d.ts +7 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +9 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pid.d.ts +5 -0
- package/dist/utils/pid.d.ts.map +1 -0
- package/dist/utils/pid.js +14 -0
- package/dist/utils/pid.js.map +1 -0
- package/dist/utils/version.d.ts +6 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +6 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/web/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
- package/dist/web/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
- package/dist/web/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
- package/dist/web/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
- package/dist/web/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
- package/dist/web/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
- package/dist/web/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
- package/dist/web/client/_app/immutable/chunks/C9P-coqM.js +1 -0
- package/dist/web/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
- package/dist/web/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
- package/dist/web/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
- package/dist/web/client/_app/immutable/chunks/HKNo9LID.js +5 -0
- package/dist/web/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
- package/dist/web/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
- package/dist/web/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
- package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
- package/dist/web/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
- package/dist/web/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
- package/dist/web/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
- package/dist/web/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
- package/dist/web/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
- package/dist/web/client/_app/version.json +1 -0
- package/dist/web/client/robots.txt +3 -0
- package/dist/web/env.js +32 -0
- package/dist/web/handler.js +744 -0
- package/dist/web/index.js +49 -0
- package/dist/web/server/chunks/0-BHWsmCJv.js +23 -0
- package/dist/web/server/chunks/0-BHWsmCJv.js.map +1 -0
- package/dist/web/server/chunks/1-YRx6A8Tm.js +17 -0
- package/dist/web/server/chunks/1-YRx6A8Tm.js.map +1 -0
- package/dist/web/server/chunks/2-eC6JuGAo.js +22 -0
- package/dist/web/server/chunks/2-eC6JuGAo.js.map +1 -0
- package/dist/web/server/chunks/3-Bk-wV20p.js +32 -0
- package/dist/web/server/chunks/3-Bk-wV20p.js.map +1 -0
- package/dist/web/server/chunks/4-nteBgDrW.js +21 -0
- package/dist/web/server/chunks/4-nteBgDrW.js.map +1 -0
- package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js +35 -0
- package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js.map +1 -0
- package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js +453 -0
- package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-Be6iabRn.js +34 -0
- package/dist/web/server/chunks/_page.svelte-Be6iabRn.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js +576 -0
- package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js.map +1 -0
- package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js +2722 -0
- package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-3WAmKvn2.js +34 -0
- package/dist/web/server/chunks/_server.ts-3WAmKvn2.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BAWJCSFb.js +29 -0
- package/dist/web/server/chunks/_server.ts-BAWJCSFb.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BPpMOZCm.js +24 -0
- package/dist/web/server/chunks/_server.ts-BPpMOZCm.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BUKgRb6U.js +13 -0
- package/dist/web/server/chunks/_server.ts-BUKgRb6U.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BVHUS8fm.js +41 -0
- package/dist/web/server/chunks/_server.ts-BVHUS8fm.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-BrF3od0O.js +45 -0
- package/dist/web/server/chunks/_server.ts-BrF3od0O.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-C4oPmOJR.js +38 -0
- package/dist/web/server/chunks/_server.ts-C4oPmOJR.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CDAUUmG_.js +21 -0
- package/dist/web/server/chunks/_server.ts-CDAUUmG_.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CR0uWvpz.js +24 -0
- package/dist/web/server/chunks/_server.ts-CR0uWvpz.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-CSqdCNGi.js +21 -0
- package/dist/web/server/chunks/_server.ts-CSqdCNGi.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DI9fzUo9.js +52 -0
- package/dist/web/server/chunks/_server.ts-DI9fzUo9.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DNjJTClI.js +46 -0
- package/dist/web/server/chunks/_server.ts-DNjJTClI.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-DdbOAkOj.js +22 -0
- package/dist/web/server/chunks/_server.ts-DdbOAkOj.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-Df2isGQc.js +41 -0
- package/dist/web/server/chunks/_server.ts-Df2isGQc.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-Vpw25_-3.js +12 -0
- package/dist/web/server/chunks/_server.ts-Vpw25_-3.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-WldRpSRi.js +26 -0
- package/dist/web/server/chunks/_server.ts-WldRpSRi.js.map +1 -0
- package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js +2890 -0
- package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js.map +1 -0
- package/dist/web/server/chunks/auth-DrUf-v4J.js +51 -0
- package/dist/web/server/chunks/auth-DrUf-v4J.js.map +1 -0
- package/dist/web/server/chunks/button-D6xS9rHt.js +2335 -0
- package/dist/web/server/chunks/button-D6xS9rHt.js.map +1 -0
- package/dist/web/server/chunks/chunk-EKzHsMy_.js +42 -0
- package/dist/web/server/chunks/chunks-DmdqVYC7.js +58 -0
- package/dist/web/server/chunks/chunks-DmdqVYC7.js.map +1 -0
- package/dist/web/server/chunks/client-CUrSQijh.js +18 -0
- package/dist/web/server/chunks/client-CUrSQijh.js.map +1 -0
- package/dist/web/server/chunks/clsx-FzI4_gi0.js +332 -0
- package/dist/web/server/chunks/clsx-FzI4_gi0.js.map +1 -0
- package/dist/web/server/chunks/error.svelte-D-c-9pTE.js +27 -0
- package/dist/web/server/chunks/error.svelte-D-c-9pTE.js.map +1 -0
- package/dist/web/server/chunks/events-BDBlYddw.js +89 -0
- package/dist/web/server/chunks/events-BDBlYddw.js.map +1 -0
- package/dist/web/server/chunks/exports-CCurQ-Tl.js +131 -0
- package/dist/web/server/chunks/exports-CCurQ-Tl.js.map +1 -0
- package/dist/web/server/chunks/hooks.server-BK1bopsh.js +86 -0
- package/dist/web/server/chunks/hooks.server-BK1bopsh.js.map +1 -0
- package/dist/web/server/chunks/index2-BQnysSj-.js +2588 -0
- package/dist/web/server/chunks/index2-BQnysSj-.js.map +1 -0
- package/dist/web/server/chunks/internal-DLENj6YI.js +61 -0
- package/dist/web/server/chunks/internal-DLENj6YI.js.map +1 -0
- package/dist/web/server/chunks/pane-Dg3pKvsm.js +94 -0
- package/dist/web/server/chunks/pane-Dg3pKvsm.js.map +1 -0
- package/dist/web/server/chunks/sessions-json-DgfkCLO7.js +107 -0
- package/dist/web/server/chunks/sessions-json-DgfkCLO7.js.map +1 -0
- package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js +178 -0
- package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js.map +1 -0
- package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js +7 -0
- package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js.map +1 -0
- package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js +733 -0
- package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js.map +1 -0
- package/dist/web/server/index.js +4907 -0
- package/dist/web/server/index.js.map +1 -0
- package/dist/web/server/manifest.js +233 -0
- package/dist/web/server/manifest.js.map +1 -0
- package/docs/images/desktop-dashboard.png +0 -0
- package/docs/images/desktop-session.png +0 -0
- package/docs/images/mobile-dashboard.png +0 -0
- package/docs/images/mobile-session.png +0 -0
- package/docs/release-checklist.md +228 -0
- package/docs/removing-hooks.md +135 -0
- package/docs/state-transitions.md +109 -0
- package/package.json +71 -0
- package/src/app.tsx +188 -0
- package/src/cli.ts +83 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/serve.ts +75 -0
- package/src/commands/setup.ts +13 -0
- package/src/commands/tui.ts +255 -0
- package/src/commands/uninstall.ts +13 -0
- package/src/components/Header.tsx +32 -0
- package/src/components/HelpDialog.tsx +45 -0
- package/src/components/SessionEntry.tsx +202 -0
- package/src/components/SessionList.tsx +98 -0
- package/src/components/StatusBar.tsx +26 -0
- package/src/components/index.ts +5 -0
- package/src/db/index.ts +20 -0
- package/src/db/sessions-json.ts +314 -0
- package/src/hooks/claude-mux-hook.ts +498 -0
- package/src/server/watcher.ts +128 -0
- package/src/server/ws-handlers.ts +922 -0
- package/src/setup/hooks.ts +333 -0
- package/src/setup/index.ts +2 -0
- package/src/setup/wizard.ts +81 -0
- package/src/tmux/detect.ts +87 -0
- package/src/tmux/navigate.ts +42 -0
- package/src/tmux/pane.ts +167 -0
- package/src/tmux/resize.ts +28 -0
- package/src/utils/paths.ts +11 -0
- package/src/utils/pid.ts +12 -0
- package/src/utils/version.ts +5 -0
- package/tests/components/Header.test.tsx +42 -0
- package/tests/components/SessionEntry-extended.test.tsx +165 -0
- package/tests/components/SessionEntry.test.tsx +138 -0
- package/tests/components/SessionList.test.tsx +110 -0
- package/tests/components/StatusBar.test.tsx +31 -0
- package/tests/db/index.test.ts +78 -0
- package/tests/db/sessions.test.ts +230 -0
- package/tests/server/integration.test.ts +319 -0
- package/tests/server/sessions.test.ts +114 -0
- package/tests/setup/hooks-integration.test.ts +148 -0
- package/tests/setup/hooks.test.ts +123 -0
- package/tests/tmux/detect.test.ts +54 -0
- package/tests/tmux/navigate.test.ts +30 -0
- package/tests/utils/pid.test.ts +17 -0
- package/tsconfig.cli.json +9 -0
- package/tsconfig.json +22 -0
- package/vitest.config.ts +29 -0
- package/web/.svelte-kit/adapter-bun/.vite/manifest.json +408 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DldLgTc-.css +1 -0
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/adapter-bun/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
- package/web/.svelte-kit/adapter-bun/chunks/alert-dialog-description.js +2670 -0
- package/web/.svelte-kit/adapter-bun/chunks/auth.js +59 -0
- package/web/.svelte-kit/adapter-bun/chunks/button.js +82 -0
- package/web/.svelte-kit/adapter-bun/chunks/client.js +29 -0
- package/web/.svelte-kit/adapter-bun/chunks/context.js +133 -0
- package/web/.svelte-kit/adapter-bun/chunks/environment.js +34 -0
- package/web/.svelte-kit/adapter-bun/chunks/events.js +121 -0
- package/web/.svelte-kit/adapter-bun/chunks/exports.js +174 -0
- package/web/.svelte-kit/adapter-bun/chunks/false.js +4 -0
- package/web/.svelte-kit/adapter-bun/chunks/index.js +59 -0
- package/web/.svelte-kit/adapter-bun/chunks/index2.js +2828 -0
- package/web/.svelte-kit/adapter-bun/chunks/internal.js +920 -0
- package/web/.svelte-kit/adapter-bun/chunks/pane.js +82 -0
- package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +124 -0
- package/web/.svelte-kit/adapter-bun/chunks/sessions.svelte.js +229 -0
- package/web/.svelte-kit/adapter-bun/chunks/shared.js +542 -0
- package/web/.svelte-kit/adapter-bun/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/adapter-bun/chunks/utils.js +43 -0
- package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +782 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/login/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/beads/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/chrome/_server.ts.js +30 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/files/image/_server.ts.js +53 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_server.ts.js +49 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
- package/web/.svelte-kit/adapter-bun/entries/fallbacks/error.svelte.js +27 -0
- package/web/.svelte-kit/adapter-bun/entries/hooks.server.js +105 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +499 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/_page.svelte.js +3057 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.server.ts.js +15 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.svelte.js +37 -0
- package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +653 -0
- package/web/.svelte-kit/adapter-bun/index.js +3864 -0
- package/web/.svelte-kit/adapter-bun/internal.js +13 -0
- package/web/.svelte-kit/adapter-bun/manifest-full.js +167 -0
- package/web/.svelte-kit/adapter-bun/manifest.js +171 -0
- package/web/.svelte-kit/adapter-bun/nodes/0.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/1.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/2.js +8 -0
- package/web/.svelte-kit/adapter-bun/nodes/3.js +10 -0
- package/web/.svelte-kit/adapter-bun/nodes/4.js +8 -0
- package/web/.svelte-kit/adapter-bun/remote-entry.js +541 -0
- package/web/.svelte-kit/adapter-node/.vite/manifest.json +223 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +1 -0
- package/web/.svelte-kit/adapter-node/chunks/context.js +121 -0
- package/web/.svelte-kit/adapter-node/chunks/environment.js +34 -0
- package/web/.svelte-kit/adapter-node/chunks/exports.js +174 -0
- package/web/.svelte-kit/adapter-node/chunks/false.js +4 -0
- package/web/.svelte-kit/adapter-node/chunks/index.js +59 -0
- package/web/.svelte-kit/adapter-node/chunks/index2.js +2710 -0
- package/web/.svelte-kit/adapter-node/chunks/internal.js +1005 -0
- package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +109 -0
- package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +67 -0
- package/web/.svelte-kit/adapter-node/chunks/shared.js +542 -0
- package/web/.svelte-kit/adapter-node/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/adapter-node/chunks/utils.js +43 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +30 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +126 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +44 -0
- package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +12 -0
- package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +87 -0
- package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +76 -0
- package/web/.svelte-kit/adapter-node/index.js +3864 -0
- package/web/.svelte-kit/adapter-node/internal.js +13 -0
- package/web/.svelte-kit/adapter-node/manifest-full.js +103 -0
- package/web/.svelte-kit/adapter-node/manifest.js +107 -0
- package/web/.svelte-kit/adapter-node/nodes/0.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/1.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/2.js +8 -0
- package/web/.svelte-kit/adapter-node/nodes/3.js +8 -0
- package/web/.svelte-kit/adapter-node/remote-entry.js +541 -0
- package/web/.svelte-kit/ambient.d.ts +187 -0
- package/web/.svelte-kit/generated/client/app.js +33 -0
- package/web/.svelte-kit/generated/client/matchers.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/0.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/1.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/2.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/3.js +1 -0
- package/web/.svelte-kit/generated/client/nodes/4.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/app.js +33 -0
- package/web/.svelte-kit/generated/client-optimized/matchers.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
- package/web/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
- package/web/.svelte-kit/generated/root.js +3 -0
- package/web/.svelte-kit/generated/root.svelte +68 -0
- package/web/.svelte-kit/generated/server/internal.js +53 -0
- package/web/.svelte-kit/non-ambient.d.ts +73 -0
- package/web/.svelte-kit/output/client/.vite/manifest.json +203 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/C9P-coqM.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/HKNo9LID.js +5 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
- package/web/.svelte-kit/output/client/_app/version.json +1 -0
- package/web/.svelte-kit/output/client/robots.txt +3 -0
- package/web/.svelte-kit/output/server/.vite/manifest.json +408 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DldLgTc-.css +1 -0
- package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/output/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
- package/web/.svelte-kit/output/server/chunks/alert-dialog-description.js +2670 -0
- package/web/.svelte-kit/output/server/chunks/auth.js +59 -0
- package/web/.svelte-kit/output/server/chunks/button.js +82 -0
- package/web/.svelte-kit/output/server/chunks/client.js +29 -0
- package/web/.svelte-kit/output/server/chunks/context.js +133 -0
- package/web/.svelte-kit/output/server/chunks/environment.js +34 -0
- package/web/.svelte-kit/output/server/chunks/events.js +121 -0
- package/web/.svelte-kit/output/server/chunks/exports.js +174 -0
- package/web/.svelte-kit/output/server/chunks/false.js +4 -0
- package/web/.svelte-kit/output/server/chunks/index.js +59 -0
- package/web/.svelte-kit/output/server/chunks/index2.js +2828 -0
- package/web/.svelte-kit/output/server/chunks/internal.js +920 -0
- package/web/.svelte-kit/output/server/chunks/pane.js +82 -0
- package/web/.svelte-kit/output/server/chunks/sessions-json.js +124 -0
- package/web/.svelte-kit/output/server/chunks/sessions.svelte.js +229 -0
- package/web/.svelte-kit/output/server/chunks/shared.js +542 -0
- package/web/.svelte-kit/output/server/chunks/state.svelte.js +16 -0
- package/web/.svelte-kit/output/server/chunks/utils.js +43 -0
- package/web/.svelte-kit/output/server/chunks/ws-handlers.js +782 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/auth/login/_server.ts.js +22 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/beads/_server.ts.js +22 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/browse/_server.ts.js +50 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/chrome/_server.ts.js +30 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/files/image/_server.ts.js +53 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/health/_server.ts.js +7 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_server.ts.js +49 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
- package/web/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +27 -0
- package/web/.svelte-kit/output/server/entries/hooks.server.js +105 -0
- package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +499 -0
- package/web/.svelte-kit/output/server/entries/pages/_page.svelte.js +3057 -0
- package/web/.svelte-kit/output/server/entries/pages/login/_page.server.ts.js +15 -0
- package/web/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +37 -0
- package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +653 -0
- package/web/.svelte-kit/output/server/index.js +3864 -0
- package/web/.svelte-kit/output/server/internal.js +13 -0
- package/web/.svelte-kit/output/server/manifest-full.js +167 -0
- package/web/.svelte-kit/output/server/manifest.js +167 -0
- package/web/.svelte-kit/output/server/nodes/0.js +8 -0
- package/web/.svelte-kit/output/server/nodes/1.js +8 -0
- package/web/.svelte-kit/output/server/nodes/2.js +8 -0
- package/web/.svelte-kit/output/server/nodes/3.js +10 -0
- package/web/.svelte-kit/output/server/nodes/4.js +8 -0
- package/web/.svelte-kit/output/server/remote-entry.js +541 -0
- package/web/.svelte-kit/tsconfig.json +58 -0
- package/web/.svelte-kit/types/route_meta_data.json +55 -0
- package/web/.svelte-kit/types/src/routes/$types.d.ts +24 -0
- package/web/.svelte-kit/types/src/routes/api/auth/login/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/auth/logout/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/beads/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/browse/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/chrome/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/files/image/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/health/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/projects/new-session/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/kill/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/restart/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/screenshots/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/send/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[target]/output/$types.d.ts +11 -0
- package/web/.svelte-kit/types/src/routes/api/tmux/panes/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/login/$types.d.ts +25 -0
- package/web/.svelte-kit/types/src/routes/login/proxy+page.server.ts +19 -0
- package/web/.svelte-kit/types/src/routes/session/[target]/$types.d.ts +19 -0
- package/web/README.md +42 -0
- package/web/components.json +16 -0
- package/web/package.json +35 -0
- package/web/src/app.css +128 -0
- package/web/src/app.d.ts +13 -0
- package/web/src/app.html +11 -0
- package/web/src/hooks.server.ts +156 -0
- package/web/src/lib/assets/favicon.svg +1 -0
- package/web/src/lib/components/AllSessionsPanel.svelte +789 -0
- package/web/src/lib/components/BeadsPanel.svelte +146 -0
- package/web/src/lib/components/IssueItem.svelte +287 -0
- package/web/src/lib/components/ScreenshotsPanel.svelte +336 -0
- package/web/src/lib/components/SessionsSidebar.svelte +312 -0
- package/web/src/lib/components/TerminalRenderer.svelte +189 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +18 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +18 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +29 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +17 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +17 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte +7 -0
- package/web/src/lib/components/ui/alert-dialog/index.ts +37 -0
- package/web/src/lib/components/ui/badge/badge.svelte +50 -0
- package/web/src/lib/components/ui/badge/index.ts +2 -0
- package/web/src/lib/components/ui/button/button.svelte +86 -0
- package/web/src/lib/components/ui/button/index.ts +17 -0
- package/web/src/lib/components/ui/checkbox/checkbox.svelte +36 -0
- package/web/src/lib/components/ui/checkbox/index.ts +6 -0
- package/web/src/lib/components/ui/dialog/dialog-close.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog-content.svelte +45 -0
- package/web/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
- package/web/src/lib/components/ui/dialog/dialog-footer.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-overlay.svelte +20 -0
- package/web/src/lib/components/ui/dialog/dialog-portal.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
- package/web/src/lib/components/ui/dialog/dialog-trigger.svelte +7 -0
- package/web/src/lib/components/ui/dialog/dialog.svelte +7 -0
- package/web/src/lib/components/ui/dialog/index.ts +34 -0
- package/web/src/lib/components/ui/scroll-area/index.ts +10 -0
- package/web/src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
- package/web/src/lib/components/ui/scroll-area/scroll-area.svelte +43 -0
- package/web/src/lib/components/ui/textarea/index.ts +7 -0
- package/web/src/lib/components/ui/textarea/textarea.svelte +23 -0
- package/web/src/lib/index.ts +1 -0
- package/web/src/lib/server/auth.ts +90 -0
- package/web/src/lib/stores/beads.svelte.ts +163 -0
- package/web/src/lib/stores/input-injection.svelte.ts +39 -0
- package/web/src/lib/stores/preferences.svelte.ts +55 -0
- package/web/src/lib/stores/sessions.svelte.ts +108 -0
- package/web/src/lib/stores/terminal.svelte.ts +96 -0
- package/web/src/lib/stores/websocket-base.svelte.ts +209 -0
- package/web/src/lib/types/terminal.ts +31 -0
- package/web/src/lib/utils/terminal-parser.ts +239 -0
- package/web/src/lib/utils.ts +13 -0
- package/web/src/routes/+layout.svelte +450 -0
- package/web/src/routes/+page.svelte +19 -0
- package/web/src/routes/api/auth/login/+server.ts +34 -0
- package/web/src/routes/api/auth/logout/+server.ts +10 -0
- package/web/src/routes/api/beads/+server.ts +28 -0
- package/web/src/routes/api/browse/+server.ts +59 -0
- package/web/src/routes/api/chrome/+server.ts +35 -0
- package/web/src/routes/api/files/image/+server.ts +64 -0
- package/web/src/routes/api/health/+server.ts +6 -0
- package/web/src/routes/api/projects/new-session/+server.ts +50 -0
- package/web/src/routes/api/sessions/+server.ts +62 -0
- package/web/src/routes/api/sessions/[id]/+server.ts +19 -0
- package/web/src/routes/api/sessions/[id]/kill/+server.ts +46 -0
- package/web/src/routes/api/sessions/[id]/restart/+server.ts +59 -0
- package/web/src/routes/api/sessions/[id]/screenshots/+server.ts +32 -0
- package/web/src/routes/api/sessions/[id]/send/+server.ts +31 -0
- package/web/src/routes/api/sessions/[target]/output/+server.ts +13 -0
- package/web/src/routes/api/tmux/panes/+server.ts +32 -0
- package/web/src/routes/login/+page.server.ts +18 -0
- package/web/src/routes/login/+page.svelte +69 -0
- package/web/src/routes/session/[target]/+page.svelte +450 -0
- package/web/static/robots.txt +3 -0
- package/web/svelte.config.js +20 -0
- package/web/tsconfig.json +20 -0
- package/web/vite.config.ts +154 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
|
|
5
|
+
//#region .svelte-kit/adapter-bun/chunks/sessions-json.js
|
|
6
|
+
const DEFAULT_SESSIONS_DIR = join(join(homedir(), ".claude-watch"), "sessions");
|
|
7
|
+
const SCHEMA_VERSION = 1;
|
|
8
|
+
let sessionsDir = DEFAULT_SESSIONS_DIR;
|
|
9
|
+
function ensureSessionsDir() {
|
|
10
|
+
if (!existsSync(sessionsDir)) mkdirSync(sessionsDir, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
function getSessionPath(id) {
|
|
13
|
+
return join(sessionsDir, `${id}.json`);
|
|
14
|
+
}
|
|
15
|
+
function writeSessionFile(session) {
|
|
16
|
+
ensureSessionsDir();
|
|
17
|
+
const path = getSessionPath(session.id);
|
|
18
|
+
const tmpPath = path + ".tmp";
|
|
19
|
+
writeFileSync(tmpPath, JSON.stringify(session, null, 2));
|
|
20
|
+
renameSync(tmpPath, path);
|
|
21
|
+
}
|
|
22
|
+
function getSession(id) {
|
|
23
|
+
const path = getSessionPath(id);
|
|
24
|
+
try {
|
|
25
|
+
if (!existsSync(path)) return null;
|
|
26
|
+
const data = readFileSync(path, "utf-8");
|
|
27
|
+
return JSON.parse(data);
|
|
28
|
+
} catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function upsertSession(input) {
|
|
33
|
+
const existing = getSession(input.id);
|
|
34
|
+
writeSessionFile({
|
|
35
|
+
v: SCHEMA_VERSION,
|
|
36
|
+
id: input.id,
|
|
37
|
+
pid: input.pid,
|
|
38
|
+
cwd: input.cwd,
|
|
39
|
+
git_root: input.git_root ?? existing?.git_root ?? null,
|
|
40
|
+
beads_enabled: input.beads_enabled ?? existing?.beads_enabled ?? false,
|
|
41
|
+
tmux_target: input.tmux_target ?? existing?.tmux_target ?? null,
|
|
42
|
+
state: input.state ?? existing?.state ?? "busy",
|
|
43
|
+
current_action: input.current_action ?? existing?.current_action ?? null,
|
|
44
|
+
prompt_text: input.prompt_text ?? existing?.prompt_text ?? null,
|
|
45
|
+
last_update: Date.now()
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function updateSession(id, update) {
|
|
49
|
+
const session = getSession(id);
|
|
50
|
+
if (!session) return;
|
|
51
|
+
if (update.state !== void 0) session.state = update.state;
|
|
52
|
+
if (update.current_action !== void 0) session.current_action = update.current_action;
|
|
53
|
+
if (update.prompt_text !== void 0) session.prompt_text = update.prompt_text;
|
|
54
|
+
session.last_update = Date.now();
|
|
55
|
+
writeSessionFile(session);
|
|
56
|
+
}
|
|
57
|
+
function deleteSession(id) {
|
|
58
|
+
const path = getSessionPath(id);
|
|
59
|
+
try {
|
|
60
|
+
if (existsSync(path)) unlinkSync(path);
|
|
61
|
+
} catch {}
|
|
62
|
+
}
|
|
63
|
+
function removeScreenshot(id, screenshotPath) {
|
|
64
|
+
const session = getSession(id);
|
|
65
|
+
if (!session || !session.screenshots) return false;
|
|
66
|
+
const initialLength = session.screenshots.length;
|
|
67
|
+
session.screenshots = session.screenshots.filter((s) => s.path !== screenshotPath);
|
|
68
|
+
if (session.screenshots.length === initialLength) return false;
|
|
69
|
+
session.last_update = Date.now();
|
|
70
|
+
writeSessionFile(session);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
function getAllSessions() {
|
|
74
|
+
ensureSessionsDir();
|
|
75
|
+
const sessions = [];
|
|
76
|
+
try {
|
|
77
|
+
const files = readdirSync(sessionsDir);
|
|
78
|
+
for (const file of files) {
|
|
79
|
+
if (!file.endsWith(".json")) continue;
|
|
80
|
+
try {
|
|
81
|
+
const data = readFileSync(join(sessionsDir, file), "utf-8");
|
|
82
|
+
sessions.push(JSON.parse(data));
|
|
83
|
+
} catch {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
} catch {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
const priority = {
|
|
91
|
+
permission: 1,
|
|
92
|
+
waiting: 2,
|
|
93
|
+
idle: 3,
|
|
94
|
+
busy: 4
|
|
95
|
+
};
|
|
96
|
+
sessions.sort((a, b) => {
|
|
97
|
+
const pa = priority[a.state] ?? 5;
|
|
98
|
+
const pb = priority[b.state] ?? 5;
|
|
99
|
+
if (pa !== pb) return pa - pb;
|
|
100
|
+
return b.last_update - a.last_update;
|
|
101
|
+
});
|
|
102
|
+
return sessions;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
//#endregion
|
|
106
|
+
export { updateSession as a, removeScreenshot as i, getAllSessions as n, upsertSession as o, getSession as r, deleteSession as t };
|
|
107
|
+
//# sourceMappingURL=sessions-json-DgfkCLO7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-json-DgfkCLO7.js","names":[],"sources":["../../../../web/.svelte-kit/adapter-bun/chunks/sessions-json.js"],"sourcesContent":["import { readdirSync, readFileSync, existsSync, mkdirSync, writeFileSync, renameSync, unlinkSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nconst CLAUDE_WATCH_DIR = join(homedir(), \".claude-watch\");\nconst DEFAULT_SESSIONS_DIR = join(CLAUDE_WATCH_DIR, \"sessions\");\nconst SCHEMA_VERSION = 1;\nlet sessionsDir = DEFAULT_SESSIONS_DIR;\nfunction ensureSessionsDir() {\n if (!existsSync(sessionsDir)) {\n mkdirSync(sessionsDir, { recursive: true });\n }\n}\nfunction getSessionPath(id) {\n return join(sessionsDir, `${id}.json`);\n}\nfunction writeSessionFile(session) {\n ensureSessionsDir();\n const path = getSessionPath(session.id);\n const tmpPath = path + \".tmp\";\n writeFileSync(tmpPath, JSON.stringify(session, null, 2));\n renameSync(tmpPath, path);\n}\nfunction getSession(id) {\n const path = getSessionPath(id);\n try {\n if (!existsSync(path)) return null;\n const data = readFileSync(path, \"utf-8\");\n return JSON.parse(data);\n } catch {\n return null;\n }\n}\nfunction upsertSession(input) {\n const existing = getSession(input.id);\n const session = {\n v: SCHEMA_VERSION,\n id: input.id,\n pid: input.pid,\n cwd: input.cwd,\n git_root: input.git_root ?? existing?.git_root ?? null,\n beads_enabled: input.beads_enabled ?? existing?.beads_enabled ?? false,\n tmux_target: input.tmux_target ?? existing?.tmux_target ?? null,\n state: input.state ?? existing?.state ?? \"busy\",\n current_action: input.current_action ?? existing?.current_action ?? null,\n prompt_text: input.prompt_text ?? existing?.prompt_text ?? null,\n last_update: Date.now()\n };\n writeSessionFile(session);\n}\nfunction updateSession(id, update) {\n const session = getSession(id);\n if (!session) return;\n if (update.state !== void 0) {\n session.state = update.state;\n }\n if (update.current_action !== void 0) {\n session.current_action = update.current_action;\n }\n if (update.prompt_text !== void 0) {\n session.prompt_text = update.prompt_text;\n }\n session.last_update = Date.now();\n writeSessionFile(session);\n}\nfunction deleteSession(id) {\n const path = getSessionPath(id);\n try {\n if (existsSync(path)) {\n unlinkSync(path);\n }\n } catch {\n }\n}\nfunction removeScreenshot(id, screenshotPath) {\n const session = getSession(id);\n if (!session || !session.screenshots) return false;\n const initialLength = session.screenshots.length;\n session.screenshots = session.screenshots.filter((s) => s.path !== screenshotPath);\n if (session.screenshots.length === initialLength) {\n return false;\n }\n session.last_update = Date.now();\n writeSessionFile(session);\n return true;\n}\nfunction getAllSessions() {\n ensureSessionsDir();\n const sessions = [];\n try {\n const files = readdirSync(sessionsDir);\n for (const file of files) {\n if (!file.endsWith(\".json\")) continue;\n try {\n const data = readFileSync(join(sessionsDir, file), \"utf-8\");\n sessions.push(JSON.parse(data));\n } catch {\n continue;\n }\n }\n } catch {\n return [];\n }\n const priority = {\n permission: 1,\n waiting: 2,\n idle: 3,\n busy: 4\n };\n sessions.sort((a, b) => {\n const pa = priority[a.state] ?? 5;\n const pb = priority[b.state] ?? 5;\n if (pa !== pb) return pa - pb;\n return b.last_update - a.last_update;\n });\n return sessions;\n}\nexport {\n updateSession as a,\n getSession as b,\n deleteSession as d,\n getAllSessions as g,\n removeScreenshot as r,\n upsertSession as u\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { K as lifecycle_function_unavailable } from "./index2-BQnysSj-.js";
|
|
2
|
+
import { D as ssr_context, l as getContext } from "./clsx-FzI4_gi0.js";
|
|
3
|
+
|
|
4
|
+
//#region .svelte-kit/adapter-bun/chunks/sessions.svelte.js
|
|
5
|
+
function onDestroy(fn) {
|
|
6
|
+
/** @type {SSRContext} */
|
|
7
|
+
ssr_context.r.on_destroy(fn);
|
|
8
|
+
}
|
|
9
|
+
function mount() {
|
|
10
|
+
lifecycle_function_unavailable("mount");
|
|
11
|
+
}
|
|
12
|
+
function unmount() {
|
|
13
|
+
lifecycle_function_unavailable("unmount");
|
|
14
|
+
}
|
|
15
|
+
async function tick() {}
|
|
16
|
+
const getStores = () => {
|
|
17
|
+
const stores$1 = getContext("__svelte__");
|
|
18
|
+
return {
|
|
19
|
+
page: { subscribe: stores$1.page.subscribe },
|
|
20
|
+
navigating: { subscribe: stores$1.navigating.subscribe },
|
|
21
|
+
updated: stores$1.updated
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const page = { subscribe(fn) {
|
|
25
|
+
return getStores().page.subscribe(fn);
|
|
26
|
+
} };
|
|
27
|
+
const DEFAULT_CONFIG = {
|
|
28
|
+
pingInterval: 3e4,
|
|
29
|
+
pongTimeout: 1e4,
|
|
30
|
+
baseReconnectDelay: 1e3,
|
|
31
|
+
maxReconnectDelay: 3e4
|
|
32
|
+
};
|
|
33
|
+
var ReliableWebSocket = class {
|
|
34
|
+
connected = false;
|
|
35
|
+
ws = null;
|
|
36
|
+
pingTimer = null;
|
|
37
|
+
reconnectTimer = null;
|
|
38
|
+
lastPong = 0;
|
|
39
|
+
reconnectAttempts = 0;
|
|
40
|
+
visibilityHandler = null;
|
|
41
|
+
config;
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.config = {
|
|
44
|
+
...DEFAULT_CONFIG,
|
|
45
|
+
...config
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** Subclass can override to control reconnection (e.g., only reconnect if target is set) */
|
|
49
|
+
shouldReconnect() {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/** Subclass can override to run code on successful connection */
|
|
53
|
+
onConnected() {}
|
|
54
|
+
/** Subclass can override to run code on disconnection */
|
|
55
|
+
onDisconnected() {}
|
|
56
|
+
doConnect() {}
|
|
57
|
+
doDisconnect() {
|
|
58
|
+
if (this.reconnectTimer) {
|
|
59
|
+
clearTimeout(this.reconnectTimer);
|
|
60
|
+
this.reconnectTimer = null;
|
|
61
|
+
}
|
|
62
|
+
this.stopPingTimer();
|
|
63
|
+
this.removeVisibilityHandler();
|
|
64
|
+
this.connected = false;
|
|
65
|
+
this.reconnectAttempts = 0;
|
|
66
|
+
if (this.ws) {
|
|
67
|
+
this.ws.onopen = null;
|
|
68
|
+
this.ws.onclose = null;
|
|
69
|
+
this.ws.onerror = null;
|
|
70
|
+
this.ws.onmessage = null;
|
|
71
|
+
if (this.ws.readyState !== WebSocket.CLOSED) this.ws.close();
|
|
72
|
+
this.ws = null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Force reconnection (resets backoff) */
|
|
76
|
+
forceReconnect() {
|
|
77
|
+
this.reconnectAttempts = 0;
|
|
78
|
+
if (this.ws) {
|
|
79
|
+
this.ws.onclose = null;
|
|
80
|
+
this.ws.close();
|
|
81
|
+
this.ws = null;
|
|
82
|
+
}
|
|
83
|
+
this.stopPingTimer();
|
|
84
|
+
this.connected = false;
|
|
85
|
+
this.doConnect();
|
|
86
|
+
}
|
|
87
|
+
startPingTimer() {
|
|
88
|
+
this.stopPingTimer();
|
|
89
|
+
this.pingTimer = setInterval(() => {
|
|
90
|
+
if (this.ws?.readyState === WebSocket.OPEN) {
|
|
91
|
+
if (Date.now() - this.lastPong > this.config.pingInterval + this.config.pongTimeout) {
|
|
92
|
+
this.ws?.close();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.ws.send("ping");
|
|
96
|
+
}
|
|
97
|
+
}, this.config.pingInterval);
|
|
98
|
+
}
|
|
99
|
+
stopPingTimer() {
|
|
100
|
+
if (this.pingTimer) {
|
|
101
|
+
clearInterval(this.pingTimer);
|
|
102
|
+
this.pingTimer = null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
scheduleReconnect() {
|
|
106
|
+
if (this.reconnectTimer) return;
|
|
107
|
+
const delay = Math.min(this.config.baseReconnectDelay * Math.pow(2, this.reconnectAttempts) + Math.random() * 1e3, this.config.maxReconnectDelay);
|
|
108
|
+
this.reconnectAttempts++;
|
|
109
|
+
this.reconnectTimer = setTimeout(() => {
|
|
110
|
+
this.reconnectTimer = null;
|
|
111
|
+
this.doConnect();
|
|
112
|
+
}, delay);
|
|
113
|
+
}
|
|
114
|
+
setupVisibilityHandler() {
|
|
115
|
+
if (this.visibilityHandler) return;
|
|
116
|
+
this.visibilityHandler = () => {
|
|
117
|
+
if (document.visibilityState === "visible" && this.shouldReconnect()) if (!this.ws || this.ws.readyState !== WebSocket.OPEN) this.forceReconnect();
|
|
118
|
+
else this.ws.send("ping");
|
|
119
|
+
};
|
|
120
|
+
document.addEventListener("visibilitychange", this.visibilityHandler);
|
|
121
|
+
}
|
|
122
|
+
removeVisibilityHandler() {
|
|
123
|
+
if (this.visibilityHandler) {
|
|
124
|
+
document.removeEventListener("visibilitychange", this.visibilityHandler);
|
|
125
|
+
this.visibilityHandler = null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var SessionStore = class extends ReliableWebSocket {
|
|
130
|
+
sessions = [];
|
|
131
|
+
paused = false;
|
|
132
|
+
savedProjects = [];
|
|
133
|
+
getWsUrl() {
|
|
134
|
+
return `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}/api/sessions/stream`;
|
|
135
|
+
}
|
|
136
|
+
getLogPrefix() {
|
|
137
|
+
return "[sessions]";
|
|
138
|
+
}
|
|
139
|
+
handleMessage(event) {
|
|
140
|
+
if (this.paused) return;
|
|
141
|
+
const data = JSON.parse(event.data);
|
|
142
|
+
if (data.sessions) this.sessions = data.sessions;
|
|
143
|
+
}
|
|
144
|
+
connect() {
|
|
145
|
+
this.doConnect();
|
|
146
|
+
}
|
|
147
|
+
disconnect() {
|
|
148
|
+
this.doDisconnect();
|
|
149
|
+
}
|
|
150
|
+
togglePause() {
|
|
151
|
+
this.paused = !this.paused;
|
|
152
|
+
}
|
|
153
|
+
loadSavedProjects() {}
|
|
154
|
+
saveProject(cwd) {}
|
|
155
|
+
removeProject(cwd) {
|
|
156
|
+
this.savedProjects = this.savedProjects.filter((p) => p !== cwd);
|
|
157
|
+
localStorage.setItem("claude-mux-projects", JSON.stringify(this.savedProjects));
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
const sessionStore = new SessionStore();
|
|
161
|
+
function stateColor(state) {
|
|
162
|
+
switch (state) {
|
|
163
|
+
case "permission":
|
|
164
|
+
case "waiting": return "#e74c3c";
|
|
165
|
+
case "idle": return "#f39c12";
|
|
166
|
+
case "busy": return "#27ae60";
|
|
167
|
+
default: return "#666";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function getProjectColor(cwd) {
|
|
171
|
+
let hash = 0;
|
|
172
|
+
for (let i = 0; i < cwd.length; i++) hash = cwd.charCodeAt(i) + ((hash << 5) - hash);
|
|
173
|
+
return `hsl(${Math.abs(hash) % 360}, 60%, 40%)`;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//#endregion
|
|
177
|
+
export { page as a, tick as c, onDestroy as i, unmount as l, getProjectColor as n, sessionStore as o, mount as r, stateColor as s, ReliableWebSocket as t };
|
|
178
|
+
//# sourceMappingURL=sessions.svelte-Ds82MvkB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.svelte-Ds82MvkB.js","names":[],"sources":["../../../../web/.svelte-kit/adapter-bun/chunks/sessions.svelte.js"],"sourcesContent":["import { f as ssr_context, g as getContext } from \"./context.js\";\nimport { ae as lifecycle_function_unavailable } from \"./index2.js\";\nimport \"clsx\";\nimport \"@sveltejs/kit/internal\";\nimport \"./exports.js\";\nimport \"./utils.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"./state.svelte.js\";\nfunction onDestroy(fn) {\n /** @type {SSRContext} */\n ssr_context.r.on_destroy(fn);\n}\nfunction mount() {\n lifecycle_function_unavailable(\"mount\");\n}\nfunction unmount() {\n lifecycle_function_unavailable(\"unmount\");\n}\nasync function tick() {\n}\nconst getStores = () => {\n const stores$1 = getContext(\"__svelte__\");\n return {\n /** @type {typeof page} */\n page: {\n subscribe: stores$1.page.subscribe\n },\n /** @type {typeof navigating} */\n navigating: {\n subscribe: stores$1.navigating.subscribe\n },\n /** @type {typeof updated} */\n updated: stores$1.updated\n };\n};\nconst page = {\n subscribe(fn) {\n const store = getStores().page;\n return store.subscribe(fn);\n }\n};\nconst DEFAULT_CONFIG = {\n pingInterval: 3e4,\n pongTimeout: 1e4,\n baseReconnectDelay: 1e3,\n maxReconnectDelay: 3e4\n};\nclass ReliableWebSocket {\n connected = false;\n ws = null;\n pingTimer = null;\n reconnectTimer = null;\n lastPong = 0;\n reconnectAttempts = 0;\n visibilityHandler = null;\n config;\n constructor(config) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n /** Subclass can override to control reconnection (e.g., only reconnect if target is set) */\n shouldReconnect() {\n return true;\n }\n /** Subclass can override to run code on successful connection */\n onConnected() {\n }\n /** Subclass can override to run code on disconnection */\n onDisconnected() {\n }\n doConnect() {\n return;\n }\n doDisconnect() {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n this.stopPingTimer();\n this.removeVisibilityHandler();\n this.connected = false;\n this.reconnectAttempts = 0;\n if (this.ws) {\n this.ws.onopen = null;\n this.ws.onclose = null;\n this.ws.onerror = null;\n this.ws.onmessage = null;\n if (this.ws.readyState !== WebSocket.CLOSED) {\n this.ws.close();\n }\n this.ws = null;\n }\n }\n /** Force reconnection (resets backoff) */\n forceReconnect() {\n this.reconnectAttempts = 0;\n if (this.ws) {\n this.ws.onclose = null;\n this.ws.close();\n this.ws = null;\n }\n this.stopPingTimer();\n this.connected = false;\n this.doConnect();\n }\n startPingTimer() {\n this.stopPingTimer();\n this.pingTimer = setInterval(\n () => {\n if (this.ws?.readyState === WebSocket.OPEN) {\n if (Date.now() - this.lastPong > this.config.pingInterval + this.config.pongTimeout) {\n this.ws?.close();\n return;\n }\n this.ws.send(\"ping\");\n }\n },\n this.config.pingInterval\n );\n }\n stopPingTimer() {\n if (this.pingTimer) {\n clearInterval(this.pingTimer);\n this.pingTimer = null;\n }\n }\n scheduleReconnect() {\n if (this.reconnectTimer) return;\n const delay = Math.min(this.config.baseReconnectDelay * Math.pow(2, this.reconnectAttempts) + Math.random() * 1e3, this.config.maxReconnectDelay);\n this.reconnectAttempts++;\n this.reconnectTimer = setTimeout(\n () => {\n this.reconnectTimer = null;\n this.doConnect();\n },\n delay\n );\n }\n setupVisibilityHandler() {\n if (this.visibilityHandler) return;\n this.visibilityHandler = () => {\n if (document.visibilityState === \"visible\" && this.shouldReconnect()) {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n this.forceReconnect();\n } else {\n this.ws.send(\"ping\");\n }\n }\n };\n document.addEventListener(\"visibilitychange\", this.visibilityHandler);\n }\n removeVisibilityHandler() {\n if (this.visibilityHandler) {\n document.removeEventListener(\"visibilitychange\", this.visibilityHandler);\n this.visibilityHandler = null;\n }\n }\n}\nclass SessionStore extends ReliableWebSocket {\n sessions = [];\n paused = false;\n // Saved projects from localStorage\n savedProjects = [];\n getWsUrl() {\n const protocol = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n return `${protocol}//${window.location.host}/api/sessions/stream`;\n }\n getLogPrefix() {\n return \"[sessions]\";\n }\n handleMessage(event) {\n if (this.paused) return;\n const data = JSON.parse(event.data);\n if (data.sessions) {\n this.sessions = data.sessions;\n }\n }\n connect() {\n this.doConnect();\n }\n disconnect() {\n this.doDisconnect();\n }\n togglePause() {\n this.paused = !this.paused;\n }\n loadSavedProjects() {\n return;\n }\n saveProject(cwd) {\n return;\n }\n removeProject(cwd) {\n this.savedProjects = this.savedProjects.filter((p) => p !== cwd);\n localStorage.setItem(\"claude-mux-projects\", JSON.stringify(this.savedProjects));\n }\n}\nconst sessionStore = new SessionStore();\nfunction stateColor(state) {\n switch (state) {\n case \"permission\":\n case \"waiting\":\n return \"#e74c3c\";\n case \"idle\":\n return \"#f39c12\";\n case \"busy\":\n return \"#27ae60\";\n default:\n return \"#666\";\n }\n}\nfunction getProjectColor(cwd) {\n let hash = 0;\n for (let i = 0; i < cwd.length; i++) {\n hash = cwd.charCodeAt(i) + ((hash << 5) - hash);\n }\n const hue = Math.abs(hash) % 360;\n return `hsl(${hue}, 60%, 40%)`;\n}\nexport {\n ReliableWebSocket as R,\n stateColor as a,\n getProjectColor as g,\n mount as m,\n onDestroy as o,\n page as p,\n sessionStore as s,\n tick as t,\n unmount as u\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { _ as noop } from "./clsx-FzI4_gi0.js";
|
|
2
|
+
|
|
3
|
+
//#region .svelte-kit/adapter-bun/chunks/state.svelte.js
|
|
4
|
+
if (noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString())) new URL("https://example.com");
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
//# sourceMappingURL=state.svelte-xeAZvWZ6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.svelte-xeAZvWZ6.js","names":[],"sources":["../../../../web/.svelte-kit/adapter-bun/chunks/state.svelte.js"],"sourcesContent":["import \"clsx\";\nimport { n as noop } from \"./context.js\";\nimport \"@sveltejs/kit/internal/server\";\nconst is_legacy = noop.toString().includes(\"$$\") || /function \\w+\\(\\) \\{\\}/.test(noop.toString());\nif (is_legacy) {\n ({\n data: {},\n form: null,\n error: null,\n params: {},\n route: { id: null },\n state: {},\n status: -1,\n url: new URL(\"https://example.com\")\n });\n}\n"],"mappings":";;;AAIA,IADkB,KAAK,UAAU,CAAC,SAAS,KAAK,IAAI,wBAAwB,KAAK,KAAK,UAAU,CAAC,CAE/F,CAQO,IAAI,IAAI,sBAAsB"}
|