@jait/gateway 0.1.460 → 0.1.462
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/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/db/connection.js +3 -3
- package/dist/db/connection.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +64 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/schema.d.ts +35 -35
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +19 -19
- package/dist/db/schema.js.map +1 -1
- package/dist/index.js +67 -67
- package/dist/index.js.map +1 -1
- package/dist/memory/contracts.d.ts +1 -1
- package/dist/memory/contracts.d.ts.map +1 -1
- package/dist/memory/service.js +1 -1
- package/dist/memory/service.js.map +1 -1
- package/dist/plugins/contracts.d.ts +1 -1
- package/dist/plugins/contracts.d.ts.map +1 -1
- package/dist/plugins/manager.d.ts +2 -2
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +3 -3
- package/dist/plugins/manager.js.map +1 -1
- package/dist/providers/jait-provider.js +6 -6
- package/dist/providers/jait-provider.js.map +1 -1
- package/dist/providers/model-fetchers.d.ts +18 -0
- package/dist/providers/model-fetchers.d.ts.map +1 -0
- package/dist/providers/model-fetchers.js +136 -0
- package/dist/providers/model-fetchers.js.map +1 -0
- package/dist/providers/provider-auth.d.ts.map +1 -1
- package/dist/providers/provider-auth.js +11 -2
- package/dist/providers/provider-auth.js.map +1 -1
- package/dist/providers/registry.d.ts +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -2
- package/dist/providers/registry.js.map +1 -1
- package/dist/routes/architecture.js +10 -10
- package/dist/routes/architecture.js.map +1 -1
- package/dist/routes/auth.js +10 -10
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/chat.d.ts +2 -2
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +29 -29
- package/dist/routes/chat.js.map +1 -1
- package/dist/routes/environment.d.ts +2 -2
- package/dist/routes/environment.d.ts.map +1 -1
- package/dist/routes/environment.js +11 -11
- package/dist/routes/environment.js.map +1 -1
- package/dist/routes/filesystem.d.ts +1 -1
- package/dist/routes/filesystem.js +1 -1
- package/dist/routes/git.js +1 -1
- package/dist/routes/git.js.map +1 -1
- package/dist/routes/jobs.js +2 -2
- package/dist/routes/jobs.js.map +1 -1
- package/dist/routes/mcp-server.d.ts +1 -1
- package/dist/routes/mcp-server.d.ts.map +1 -1
- package/dist/routes/mcp-server.js +13 -13
- package/dist/routes/mcp-server.js.map +1 -1
- package/dist/routes/preview.js +1 -1
- package/dist/routes/preview.js.map +1 -1
- package/dist/routes/project.d.ts +16 -0
- package/dist/routes/project.d.ts.map +1 -0
- package/dist/routes/{workspace.js → project.js} +100 -100
- package/dist/routes/project.js.map +1 -0
- package/dist/routes/projects.d.ts +15 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/{workspaces.js → projects.js} +98 -98
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +1 -96
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/reminders.d.ts +2 -2
- package/dist/routes/reminders.d.ts.map +1 -1
- package/dist/routes/reminders.js +17 -17
- package/dist/routes/reminders.js.map +1 -1
- package/dist/routes/repo-proposals.js +1 -1
- package/dist/routes/repo-proposals.js.map +1 -1
- package/dist/routes/repositories.d.ts +2 -2
- package/dist/routes/repositories.d.ts.map +1 -1
- package/dist/routes/repositories.js +6 -6
- package/dist/routes/repositories.js.map +1 -1
- package/dist/routes/sessions.d.ts +2 -2
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +20 -20
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/terminals.js +7 -7
- package/dist/routes/terminals.js.map +1 -1
- package/dist/routes/threads.js +2 -2
- package/dist/routes/threads.js.map +1 -1
- package/dist/scheduler/hooks.d.ts +1 -1
- package/dist/scheduler/hooks.d.ts.map +1 -1
- package/dist/scheduler/hooks.js +5 -5
- package/dist/scheduler/hooks.js.map +1 -1
- package/dist/scheduler/service.d.ts +3 -3
- package/dist/scheduler/service.d.ts.map +1 -1
- package/dist/scheduler/service.js +8 -8
- package/dist/scheduler/service.js.map +1 -1
- package/dist/security/path-guard.d.ts +6 -6
- package/dist/security/path-guard.d.ts.map +1 -1
- package/dist/security/path-guard.js +8 -8
- package/dist/security/path-guard.js.map +1 -1
- package/dist/security/sandbox-manager.d.ts +5 -5
- package/dist/security/sandbox-manager.d.ts.map +1 -1
- package/dist/security/sandbox-manager.js +14 -14
- package/dist/security/sandbox-manager.js.map +1 -1
- package/dist/security/tool-permissions.d.ts +1 -1
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-profiles.js +12 -12
- package/dist/security/tool-profiles.js.map +1 -1
- package/dist/server.d.ts +4 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -16
- package/dist/server.js.map +1 -1
- package/dist/services/architecture-diagrams.d.ts +3 -3
- package/dist/services/architecture-diagrams.d.ts.map +1 -1
- package/dist/services/architecture-diagrams.js +19 -19
- package/dist/services/architecture-diagrams.js.map +1 -1
- package/dist/services/git.d.ts +1 -1
- package/dist/services/git.d.ts.map +1 -1
- package/dist/services/git.js +3 -3
- package/dist/services/git.js.map +1 -1
- package/dist/services/live-view-manager.d.ts +1 -1
- package/dist/services/live-view-manager.d.ts.map +1 -1
- package/dist/services/live-view-manager.js +2 -2
- package/dist/services/live-view-manager.js.map +1 -1
- package/dist/services/preview-runner.d.ts +5 -5
- package/dist/services/preview-runner.d.ts.map +1 -1
- package/dist/services/preview-runner.js +19 -19
- package/dist/services/preview-runner.js.map +1 -1
- package/dist/services/preview.d.ts +2 -2
- package/dist/services/preview.d.ts.map +1 -1
- package/dist/services/preview.js +8 -8
- package/dist/services/preview.js.map +1 -1
- package/dist/services/project-repositories.d.ts +35 -0
- package/dist/services/project-repositories.d.ts.map +1 -0
- package/dist/services/{workspace-repositories.js → project-repositories.js} +34 -34
- package/dist/services/project-repositories.js.map +1 -0
- package/dist/services/project-state.d.ts +8 -0
- package/dist/services/project-state.d.ts.map +1 -0
- package/dist/services/{workspace-state.js → project-state.js} +25 -25
- package/dist/services/project-state.js.map +1 -0
- package/dist/services/{workspace-watcher.d.ts → project-watcher.d.ts} +8 -8
- package/dist/services/project-watcher.d.ts.map +1 -0
- package/dist/services/{workspace-watcher.js → project-watcher.js} +7 -7
- package/dist/services/project-watcher.js.map +1 -0
- package/dist/services/{workspaces.d.ts → projects.d.ts} +13 -13
- package/dist/services/projects.d.ts.map +1 -0
- package/dist/services/{workspaces.js → projects.js} +54 -54
- package/dist/services/projects.js.map +1 -0
- package/dist/services/reminders.d.ts +4 -4
- package/dist/services/reminders.d.ts.map +1 -1
- package/dist/services/reminders.js +10 -10
- package/dist/services/reminders.js.map +1 -1
- package/dist/services/session-state.js +1 -1
- package/dist/services/sessions.d.ts +22 -22
- package/dist/services/sessions.d.ts.map +1 -1
- package/dist/services/sessions.js +21 -21
- package/dist/services/sessions.js.map +1 -1
- package/dist/services/users.d.ts +4 -4
- package/dist/services/users.d.ts.map +1 -1
- package/dist/services/users.js +16 -16
- package/dist/services/users.js.map +1 -1
- package/dist/sessions/contracts.d.ts +4 -4
- package/dist/sessions/contracts.d.ts.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/surfaces/browser.js +1 -1
- package/dist/surfaces/browser.js.map +1 -1
- package/dist/surfaces/contracts.d.ts +1 -1
- package/dist/surfaces/contracts.d.ts.map +1 -1
- package/dist/surfaces/filesystem.d.ts +1 -1
- package/dist/surfaces/filesystem.d.ts.map +1 -1
- package/dist/surfaces/filesystem.js +18 -18
- package/dist/surfaces/filesystem.js.map +1 -1
- package/dist/surfaces/remote-filesystem.d.ts +2 -2
- package/dist/surfaces/remote-filesystem.d.ts.map +1 -1
- package/dist/surfaces/remote-filesystem.js +6 -6
- package/dist/surfaces/remote-filesystem.js.map +1 -1
- package/dist/surfaces/terminal.js +2 -2
- package/dist/surfaces/terminal.js.map +1 -1
- package/dist/tools/agent-loop.js +1 -1
- package/dist/tools/agent-loop.js.map +1 -1
- package/dist/tools/agent-tools.js +1 -1
- package/dist/tools/agent-tools.js.map +1 -1
- package/dist/tools/architecture-tools.js +8 -8
- package/dist/tools/architecture-tools.js.map +1 -1
- package/dist/tools/browser-tools.d.ts +1 -1
- package/dist/tools/browser-tools.d.ts.map +1 -1
- package/dist/tools/browser-tools.js +3 -3
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/contracts.d.ts +1 -1
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/core/execute.d.ts +1 -1
- package/dist/tools/core/execute.d.ts.map +1 -1
- package/dist/tools/core/execute.js +1 -1
- package/dist/tools/core/execute.js.map +1 -1
- package/dist/tools/core/get-fs.d.ts +9 -9
- package/dist/tools/core/get-fs.d.ts.map +1 -1
- package/dist/tools/core/get-fs.js +20 -20
- package/dist/tools/core/get-fs.js.map +1 -1
- package/dist/tools/core/jait.d.ts +3 -3
- package/dist/tools/core/jait.d.ts.map +1 -1
- package/dist/tools/core/jait.js +9 -9
- package/dist/tools/core/jait.js.map +1 -1
- package/dist/tools/core/read.d.ts +1 -1
- package/dist/tools/core/read.d.ts.map +1 -1
- package/dist/tools/core/search.d.ts +2 -2
- package/dist/tools/core/search.d.ts.map +1 -1
- package/dist/tools/core/search.js +5 -5
- package/dist/tools/core/search.js.map +1 -1
- package/dist/tools/cron-tools.js +2 -2
- package/dist/tools/cron-tools.js.map +1 -1
- package/dist/tools/elevated-tools.js +3 -3
- package/dist/tools/elevated-tools.js.map +1 -1
- package/dist/tools/file-tools.js +4 -4
- package/dist/tools/file-tools.js.map +1 -1
- package/dist/tools/index.d.ts +3 -3
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +4 -4
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +11 -11
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/preview-tools.d.ts +1 -1
- package/dist/tools/preview-tools.d.ts.map +1 -1
- package/dist/tools/preview-tools.js +10 -10
- package/dist/tools/preview-tools.js.map +1 -1
- package/dist/tools/{workspace-tools.d.ts → project-tools.d.ts} +4 -4
- package/dist/tools/project-tools.d.ts.map +1 -0
- package/dist/tools/{workspace-tools.js → project-tools.js} +28 -28
- package/dist/tools/project-tools.js.map +1 -0
- package/dist/tools/prompts/claude-prompt.js +4 -4
- package/dist/tools/prompts/default-openai-prompt.js +1 -1
- package/dist/tools/prompts/default-prompt.js +1 -1
- package/dist/tools/prompts/gemini-prompt.js +4 -4
- package/dist/tools/prompts/gpt5-prompt.js +3 -3
- package/dist/tools/prompts/gpt51-prompt.js +2 -2
- package/dist/tools/prompts/gpt52-prompt.js +2 -2
- package/dist/tools/prompts/prompt-registry.d.ts +2 -2
- package/dist/tools/prompts/prompt-registry.d.ts.map +1 -1
- package/dist/tools/prompts/prompt-registry.js +5 -5
- package/dist/tools/prompts/prompt-registry.js.map +1 -1
- package/dist/tools/prompts/shared-sections.d.ts +2 -2
- package/dist/tools/prompts/shared-sections.d.ts.map +1 -1
- package/dist/tools/prompts/shared-sections.js +7 -7
- package/dist/tools/prompts/shared-sections.js.map +1 -1
- package/dist/tools/prompts/xai-prompt.js +2 -2
- package/dist/tools/remote-executor.d.ts +7 -7
- package/dist/tools/remote-executor.d.ts.map +1 -1
- package/dist/tools/remote-executor.js +13 -13
- package/dist/tools/remote-executor.js.map +1 -1
- package/dist/tools/repo-proposal-tools.js +5 -5
- package/dist/tools/repo-proposal-tools.js.map +1 -1
- package/dist/tools/ssh-tools.js +1 -1
- package/dist/tools/ssh-tools.js.map +1 -1
- package/dist/tools/surface-tools.d.ts +1 -1
- package/dist/tools/surface-tools.d.ts.map +1 -1
- package/dist/tools/surface-tools.js +2 -2
- package/dist/tools/surface-tools.js.map +1 -1
- package/dist/tools/terminal-tools.d.ts +2 -2
- package/dist/tools/terminal-tools.d.ts.map +1 -1
- package/dist/tools/terminal-tools.js +10 -10
- package/dist/tools/terminal-tools.js.map +1 -1
- package/dist/tools/thread-tools.js +8 -8
- package/dist/tools/thread-tools.js.map +1 -1
- package/dist/tools/tool-names.d.ts +1 -1
- package/dist/tools/tool-names.js +1 -1
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/voice-assistant/service.d.ts +1 -1
- package/dist/voice-assistant/service.js +4 -4
- package/dist/voice-assistant/tools.d.ts +2 -2
- package/dist/voice-assistant/tools.d.ts.map +1 -1
- package/dist/voice-assistant/tools.js +14 -14
- package/dist/voice-assistant/tools.js.map +1 -1
- package/dist/ws.d.ts +1 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +2 -2
- package/dist/ws.js.map +1 -1
- package/package.json +1 -1
- package/web-dist/assets/{_basePickBy-BxTNhXHf.js → _basePickBy-BUJIW_9x.js} +1 -1
- package/web-dist/assets/{_baseUniq-BzmTBuCK.js → _baseUniq-DK1B22lY.js} +1 -1
- package/web-dist/assets/{arc-D_str31s.js → arc-C-QiRnH7.js} +1 -1
- package/web-dist/assets/{architectureDiagram-2XIMDMQ5-iGpZ5eMv.js → architectureDiagram-2XIMDMQ5-BZmbQ_3h.js} +1 -1
- package/web-dist/assets/{blockDiagram-WCTKOSBZ-CzaQqynl.js → blockDiagram-WCTKOSBZ-G9mYf55q.js} +1 -1
- package/web-dist/assets/{c4Diagram-IC4MRINW-PyiTG4vY.js → c4Diagram-IC4MRINW-CuPwcNfs.js} +1 -1
- package/web-dist/assets/channel-BLa9-bs3.js +1 -0
- package/web-dist/assets/{chunk-4BX2VUAB-D0T3UNJp.js → chunk-4BX2VUAB-CMVUcixG.js} +1 -1
- package/web-dist/assets/{chunk-55IACEB6-CEZ65WgK.js → chunk-55IACEB6-B8tSmPKt.js} +1 -1
- package/web-dist/assets/{chunk-FMBD7UC4-P5kWRofC.js → chunk-FMBD7UC4-DVj-CvM1.js} +1 -1
- package/web-dist/assets/{chunk-JSJVCQXG-Cn1owVt4.js → chunk-JSJVCQXG-Cmnljb4L.js} +1 -1
- package/web-dist/assets/{chunk-KX2RTZJC-CC0b6eqX.js → chunk-KX2RTZJC-7m5AdtzG.js} +1 -1
- package/web-dist/assets/{chunk-NQ4KR5QH-CNIgo-1z.js → chunk-NQ4KR5QH-B5v6IJ6l.js} +1 -1
- package/web-dist/assets/{chunk-QZHKN3VN-DF6TeuK6.js → chunk-QZHKN3VN-B4UYeBP1.js} +1 -1
- package/web-dist/assets/{chunk-WL4C6EOR-DaZTFehP.js → chunk-WL4C6EOR-CGFIlzJa.js} +1 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-BIrMmcNF.js +1 -0
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-BIrMmcNF.js +1 -0
- package/web-dist/assets/clone-Cz7Wvqij.js +1 -0
- package/web-dist/assets/{cose-bilkent-S5V4N54A-BxdF5cV-.js → cose-bilkent-S5V4N54A-Bu4BMP0s.js} +1 -1
- package/web-dist/assets/{dagre-KLK3FWXG-Dm4scFIL.js → dagre-KLK3FWXG-RPC70-Xe.js} +1 -1
- package/web-dist/assets/{diagram-E7M64L7V-Bne6RKl6.js → diagram-E7M64L7V-Dd4nOsHW.js} +1 -1
- package/web-dist/assets/{diagram-IFDJBPK2-j2mQ5C5l.js → diagram-IFDJBPK2-CzpziBn0.js} +1 -1
- package/web-dist/assets/{diagram-P4PSJMXO-CdzuLWEw.js → diagram-P4PSJMXO-DkmCba9Q.js} +1 -1
- package/web-dist/assets/{erDiagram-INFDFZHY-DZrdptsJ.js → erDiagram-INFDFZHY-Bj_Bs6AV.js} +1 -1
- package/web-dist/assets/{flowDiagram-PKNHOUZH-DgjJzAMy.js → flowDiagram-PKNHOUZH-C0xS0K4m.js} +1 -1
- package/web-dist/assets/{ganttDiagram-A5KZAMGK-BUK9KV20.js → ganttDiagram-A5KZAMGK-BsMXCAFW.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-D30kLUud.js → gitGraphDiagram-K3NZZRJ6-DdHtQ6nv.js} +1 -1
- package/web-dist/assets/{graph-Uq5Ey2rZ.js → graph-CdALIWH3.js} +1 -1
- package/web-dist/assets/{index-CPsRY9iy.js → index-BXqMB-YW.js} +375 -375
- package/web-dist/assets/{index-Dl_78WX8.js → index-BvAA5A4d.js} +1 -1
- package/web-dist/assets/{index-Ceg7oKI4.js → index-CORE-1FI.js} +1 -1
- package/web-dist/assets/{infoDiagram-LFFYTUFH-CcayyObn.js → infoDiagram-LFFYTUFH-CjnqZWNv.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-PHBUUO56-CoNyYrRv.js → ishikawaDiagram-PHBUUO56-D9jI-RC-.js} +1 -1
- package/web-dist/assets/{journeyDiagram-4ABVD52K-DhNuQwoO.js → journeyDiagram-4ABVD52K-DcqN6kzs.js} +1 -1
- package/web-dist/assets/{kanban-definition-K7BYSVSG-CiBoEtT_.js → kanban-definition-K7BYSVSG-DX89gI7K.js} +1 -1
- package/web-dist/assets/{layout-CclAjc31.js → layout-Cf5OI4nz.js} +1 -1
- package/web-dist/assets/{linear-D0T2Ue4i.js → linear-2kubajXl.js} +1 -1
- package/web-dist/assets/{mindmap-definition-YRQLILUH-Bs5KOLlF.js → mindmap-definition-YRQLILUH-B-vwF3Yf.js} +1 -1
- package/web-dist/assets/{pieDiagram-SKSYHLDU-D5ft8t9O.js → pieDiagram-SKSYHLDU-_g7lolAP.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-337W2JSQ-CTrNOfNq.js → quadrantDiagram-337W2JSQ-CRzTvfRY.js} +1 -1
- package/web-dist/assets/{requirementDiagram-Z7DCOOCP-Lfkxswx5.js → requirementDiagram-Z7DCOOCP-D2IzaFED.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-D7VXd1gH.js → sankeyDiagram-WA2Y5GQK-BWRYnDOv.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-2WXFIKYE-BobMUXZE.js → sequenceDiagram-2WXFIKYE-CrhP8n1p.js} +1 -1
- package/web-dist/assets/{stateDiagram-RAJIS63D-BiTIuwsM.js → stateDiagram-RAJIS63D-DlhLnVxX.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-9ImNIYTQ.js +1 -0
- package/web-dist/assets/{timeline-definition-YZTLITO2-rKlur9hp.js → timeline-definition-YZTLITO2-DtSHcXX1.js} +1 -1
- package/web-dist/assets/{treemap-KZPCXAKY-BtERtPNk.js → treemap-KZPCXAKY-x6GBkxTu.js} +1 -1
- package/web-dist/assets/{vennDiagram-LZ73GAT5-Ke0QhSrP.js → vennDiagram-LZ73GAT5-DbxbFwgH.js} +1 -1
- package/web-dist/assets/{xychartDiagram-JWTSCODW-Cl96gv3X.js → xychartDiagram-JWTSCODW-B0PWrXcw.js} +1 -1
- package/web-dist/index.html +1 -1
- package/dist/routes/workspace.d.ts +0 -16
- package/dist/routes/workspace.d.ts.map +0 -1
- package/dist/routes/workspace.js.map +0 -1
- package/dist/routes/workspaces.d.ts +0 -15
- package/dist/routes/workspaces.d.ts.map +0 -1
- package/dist/routes/workspaces.js.map +0 -1
- package/dist/services/workspace-repositories.d.ts +0 -35
- package/dist/services/workspace-repositories.d.ts.map +0 -1
- package/dist/services/workspace-repositories.js.map +0 -1
- package/dist/services/workspace-state.d.ts +0 -8
- package/dist/services/workspace-state.d.ts.map +0 -1
- package/dist/services/workspace-state.js.map +0 -1
- package/dist/services/workspace-watcher.d.ts.map +0 -1
- package/dist/services/workspace-watcher.js.map +0 -1
- package/dist/services/workspaces.d.ts.map +0 -1
- package/dist/services/workspaces.js.map +0 -1
- package/dist/tools/workspace-tools.d.ts.map +0 -1
- package/dist/tools/workspace-tools.js.map +0 -1
- package/web-dist/assets/channel-Dpmc9iFy.js +0 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-yqgzo6kv.js +0 -1
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-yqgzo6kv.js +0 -1
- package/web-dist/assets/clone-BV2MQMkR.js +0 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-BxQjvEWb.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Project Routes — REST API for server-side file browsing.
|
|
3
3
|
*
|
|
4
4
|
* Exposes the FileSystemSurface's list/read/stat operations
|
|
5
|
-
* so the web UI can browse a remote
|
|
5
|
+
* so the web UI can browse a remote project without needing
|
|
6
6
|
* the browser's File System Access API.
|
|
7
7
|
*/
|
|
8
8
|
import { exec } from "node:child_process";
|
|
@@ -98,11 +98,11 @@ async function nodeFileSearch(root, query, maxResults) {
|
|
|
98
98
|
await walk(root);
|
|
99
99
|
return results.join("\n");
|
|
100
100
|
}
|
|
101
|
-
async function
|
|
101
|
+
async function runProjectSearch(projectRoot, query, mode, maxResults) {
|
|
102
102
|
const isWin = platform() === "win32";
|
|
103
|
-
const safeDir =
|
|
103
|
+
const safeDir = projectRoot.replace(/"/g, '\\"');
|
|
104
104
|
const safeQuery = query.replace(/"/g, '\\"');
|
|
105
|
-
const execOpts = { timeout: 15_000, maxBuffer: 2 * 1024 * 1024, cwd:
|
|
105
|
+
const execOpts = { timeout: 15_000, maxBuffer: 2 * 1024 * 1024, cwd: projectRoot };
|
|
106
106
|
try {
|
|
107
107
|
if (mode === "content") {
|
|
108
108
|
let stdout = "";
|
|
@@ -112,7 +112,7 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
|
|
|
112
112
|
}
|
|
113
113
|
catch {
|
|
114
114
|
// rg not available — use Node.js-based search
|
|
115
|
-
stdout = await nodeContentSearch(
|
|
115
|
+
stdout = await nodeContentSearch(projectRoot, query, maxResults);
|
|
116
116
|
}
|
|
117
117
|
const lines = stdout.trim().split("\n").filter(Boolean).slice(0, maxResults);
|
|
118
118
|
const matches = lines.map((line) => {
|
|
@@ -120,8 +120,8 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
|
|
|
120
120
|
if (!match)
|
|
121
121
|
return null;
|
|
122
122
|
const absPath = match[1];
|
|
123
|
-
const relPath = absPath.includes(
|
|
124
|
-
? relative(
|
|
123
|
+
const relPath = absPath.includes(projectRoot.replace(/\\/g, "/")) || absPath.includes(projectRoot)
|
|
124
|
+
? relative(projectRoot, absPath).replace(/\\/g, "/")
|
|
125
125
|
: absPath.replace(/\\/g, "/");
|
|
126
126
|
return { file: relPath, line: parseInt(match[2], 10), content: match[3].trim() };
|
|
127
127
|
}).filter(Boolean);
|
|
@@ -144,13 +144,13 @@ async function runWorkspaceSearch(workspaceRoot, query, mode, maxResults) {
|
|
|
144
144
|
}
|
|
145
145
|
catch {
|
|
146
146
|
// rg not available — use Node.js-based search
|
|
147
|
-
stdout = await nodeFileSearch(
|
|
147
|
+
stdout = await nodeFileSearch(projectRoot, cleanedQuery, maxResults);
|
|
148
148
|
}
|
|
149
149
|
const files = stdout.trim().split("\n").filter(Boolean).slice(0, maxResults).map((rawPath) => {
|
|
150
150
|
const trimmed = rawPath.trim();
|
|
151
151
|
// git ls-files returns relative paths; others return absolute
|
|
152
|
-
const relPath = trimmed.includes(
|
|
153
|
-
? relative(
|
|
152
|
+
const relPath = trimmed.includes(projectRoot.replace(/\\/g, "/")) || trimmed.includes(projectRoot)
|
|
153
|
+
? relative(projectRoot, trimmed).replace(/\\/g, "/")
|
|
154
154
|
: trimmed.replace(/\\/g, "/");
|
|
155
155
|
const name = relPath.split("/").pop() || relPath;
|
|
156
156
|
return { path: relPath, name };
|
|
@@ -213,29 +213,29 @@ function findFsSurfaceWithBackup(registry, filePath, preferredSurfaceId) {
|
|
|
213
213
|
}
|
|
214
214
|
return preferred ?? null;
|
|
215
215
|
}
|
|
216
|
-
export function
|
|
217
|
-
// GET /api/
|
|
218
|
-
app.get("/api/
|
|
216
|
+
export function registerProjectRoutes(app, surfaceRegistry, sessionState, sessionService, ws, projectService, projectState) {
|
|
217
|
+
// GET /api/project/info — returns the active project root + surface ID
|
|
218
|
+
app.get("/api/project/info", async (_req, reply) => {
|
|
219
219
|
const fs = findFsSurface(surfaceRegistry);
|
|
220
220
|
if (!fs) {
|
|
221
|
-
return reply.status(404).send({ error: "
|
|
221
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
222
222
|
}
|
|
223
223
|
const snap = fs.snapshot();
|
|
224
224
|
return {
|
|
225
225
|
surfaceId: snap.id,
|
|
226
|
-
|
|
226
|
+
projectRoot: snap.metadata?.projectRoot ?? null,
|
|
227
227
|
state: snap.state,
|
|
228
228
|
};
|
|
229
229
|
});
|
|
230
|
-
// POST /api/
|
|
230
|
+
// POST /api/project/open — create a filesystem surface for the given path
|
|
231
231
|
// This is called when a client picks a directory (e.g. Electron native dialog)
|
|
232
232
|
// so that ALL clients on the session can browse files via the gateway REST API.
|
|
233
|
-
app.post("/api/
|
|
233
|
+
app.post("/api/project/open", async (req, reply) => {
|
|
234
234
|
const body = req.body;
|
|
235
|
-
const
|
|
235
|
+
const projectPath = body?.path;
|
|
236
236
|
const sessionId = body?.sessionId;
|
|
237
237
|
let nodeId = body?.nodeId || "gateway";
|
|
238
|
-
if (!
|
|
238
|
+
if (!projectPath) {
|
|
239
239
|
return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path is required" });
|
|
240
240
|
}
|
|
241
241
|
if (!sessionId) {
|
|
@@ -247,7 +247,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
247
247
|
if (!isRemote && nodeId !== "gateway") {
|
|
248
248
|
const { stat: fsStat } = await import("node:fs/promises");
|
|
249
249
|
try {
|
|
250
|
-
const info = await fsStat(
|
|
250
|
+
const info = await fsStat(projectPath);
|
|
251
251
|
if (info.isDirectory()) {
|
|
252
252
|
// Path exists locally — use gateway node instead of the stale remote one
|
|
253
253
|
nodeId = "gateway";
|
|
@@ -263,7 +263,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
263
263
|
if (isRemote) {
|
|
264
264
|
// Remote node — verify path exists via WS proxy
|
|
265
265
|
try {
|
|
266
|
-
const info = await ws.proxyFsOp(nodeId, "stat", { path:
|
|
266
|
+
const info = await ws.proxyFsOp(nodeId, "stat", { path: projectPath });
|
|
267
267
|
if (!info.isDirectory) {
|
|
268
268
|
return reply.status(400).send({ error: "NOT_A_DIRECTORY", message: "The specified path is not a directory" });
|
|
269
269
|
}
|
|
@@ -276,7 +276,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
276
276
|
// Local gateway — verify the path exists on the local filesystem
|
|
277
277
|
const { stat } = await import("node:fs/promises");
|
|
278
278
|
try {
|
|
279
|
-
const info = await stat(
|
|
279
|
+
const info = await stat(projectPath);
|
|
280
280
|
if (!info.isDirectory()) {
|
|
281
281
|
return reply.status(400).send({ error: "NOT_A_DIRECTORY", message: "The specified path is not a directory" });
|
|
282
282
|
}
|
|
@@ -297,14 +297,14 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
297
297
|
if (isRemote) {
|
|
298
298
|
await surfaceRegistry.startSurface("remote-filesystem", surfaceId, {
|
|
299
299
|
sessionId,
|
|
300
|
-
|
|
300
|
+
projectRoot: projectPath,
|
|
301
301
|
nodeId,
|
|
302
302
|
});
|
|
303
303
|
}
|
|
304
304
|
else {
|
|
305
305
|
await surfaceRegistry.startSurface("filesystem", surfaceId, {
|
|
306
306
|
sessionId,
|
|
307
|
-
|
|
307
|
+
projectRoot: projectPath,
|
|
308
308
|
});
|
|
309
309
|
}
|
|
310
310
|
}
|
|
@@ -315,32 +315,32 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
315
315
|
});
|
|
316
316
|
}
|
|
317
317
|
const session = sessionService?.getById(sessionId);
|
|
318
|
-
let
|
|
318
|
+
let projectId = session?.projectId ?? null;
|
|
319
319
|
try {
|
|
320
|
-
if (!
|
|
321
|
-
const
|
|
320
|
+
if (!projectId && session?.userId && projectService) {
|
|
321
|
+
const project = projectService.getOrCreateForRoot({
|
|
322
322
|
userId: session.userId,
|
|
323
|
-
rootPath:
|
|
323
|
+
rootPath: projectPath,
|
|
324
324
|
nodeId,
|
|
325
325
|
});
|
|
326
|
-
|
|
327
|
-
sessionService?.update(sessionId, {
|
|
326
|
+
projectId = project.id;
|
|
327
|
+
sessionService?.update(sessionId, { projectId, projectPath });
|
|
328
328
|
}
|
|
329
329
|
else {
|
|
330
|
-
sessionService?.update(sessionId, {
|
|
330
|
+
sessionService?.update(sessionId, { projectPath });
|
|
331
331
|
}
|
|
332
|
-
if (
|
|
333
|
-
|
|
332
|
+
if (projectId)
|
|
333
|
+
projectService?.touch(projectId);
|
|
334
334
|
}
|
|
335
335
|
catch { /* best effort */ }
|
|
336
|
-
const panelState = { open: true, remotePath:
|
|
336
|
+
const panelState = { open: true, remotePath: projectPath, surfaceId, nodeId };
|
|
337
337
|
if (sessionId && sessionState) {
|
|
338
|
-
sessionState.set(sessionId, { "
|
|
338
|
+
sessionState.set(sessionId, { "project.panel": panelState });
|
|
339
339
|
}
|
|
340
|
-
if (
|
|
341
|
-
const existing =
|
|
342
|
-
|
|
343
|
-
"
|
|
340
|
+
if (projectId && projectState) {
|
|
341
|
+
const existing = projectState.get(projectId, ["project.ui"])["project.ui"];
|
|
342
|
+
projectState.set(projectId, {
|
|
343
|
+
"project.ui": {
|
|
344
344
|
panel: panelState,
|
|
345
345
|
tabs: existing?.tabs ?? null,
|
|
346
346
|
layout: existing?.layout ?? null,
|
|
@@ -349,18 +349,18 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
349
349
|
},
|
|
350
350
|
});
|
|
351
351
|
}
|
|
352
|
-
return { surfaceId,
|
|
352
|
+
return { surfaceId, projectRoot: projectPath, nodeId, projectId };
|
|
353
353
|
});
|
|
354
|
-
// GET /api/
|
|
355
|
-
app.get("/api/
|
|
354
|
+
// GET /api/project/list?path=&surfaceId= — list directory entries
|
|
355
|
+
app.get("/api/project/list", async (req, reply) => {
|
|
356
356
|
const { path: dirPath, surfaceId } = req.query;
|
|
357
357
|
const fs = findFsSurface(surfaceRegistry, surfaceId, dirPath, { fallbackWhenTargetDisallowed: true });
|
|
358
358
|
if (!fs) {
|
|
359
|
-
return reply.status(404).send({ error: "
|
|
359
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
360
360
|
}
|
|
361
361
|
try {
|
|
362
362
|
const snap = fs.snapshot();
|
|
363
|
-
const root = snap.metadata?.
|
|
363
|
+
const root = snap.metadata?.projectRoot;
|
|
364
364
|
const targetPath = dirPath || root || ".";
|
|
365
365
|
const entries = await fs.list(targetPath);
|
|
366
366
|
return { path: targetPath, entries };
|
|
@@ -372,12 +372,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
372
372
|
});
|
|
373
373
|
}
|
|
374
374
|
});
|
|
375
|
-
// GET /api/
|
|
376
|
-
app.get("/api/
|
|
375
|
+
// GET /api/project/read?path=&surfaceId= — read a file
|
|
376
|
+
app.get("/api/project/read", async (req, reply) => {
|
|
377
377
|
const { path: filePath, surfaceId } = req.query;
|
|
378
378
|
const fs = findFsSurface(surfaceRegistry, surfaceId, filePath, { fallbackWhenTargetDisallowed: true });
|
|
379
379
|
if (!fs) {
|
|
380
|
-
return reply.status(404).send({ error: "
|
|
380
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
381
381
|
}
|
|
382
382
|
if (!filePath) {
|
|
383
383
|
return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
|
|
@@ -394,8 +394,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
396
|
});
|
|
397
|
-
// POST /api/
|
|
398
|
-
app.post("/api/
|
|
397
|
+
// POST /api/project/write — write a file while preserving undo backups
|
|
398
|
+
app.post("/api/project/write", async (req, reply) => {
|
|
399
399
|
const body = req.body;
|
|
400
400
|
const filePath = body?.path;
|
|
401
401
|
const content = body?.content;
|
|
@@ -407,7 +407,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
407
407
|
}
|
|
408
408
|
const fs = findFsSurfaceWithBackup(surfaceRegistry, filePath, body?.surfaceId);
|
|
409
409
|
if (!fs) {
|
|
410
|
-
return reply.status(404).send({ error: "
|
|
410
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
411
411
|
}
|
|
412
412
|
try {
|
|
413
413
|
await fs.write(filePath, content);
|
|
@@ -415,10 +415,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
415
415
|
}
|
|
416
416
|
catch (err) {
|
|
417
417
|
const message = err instanceof Error ? err.message : "Failed to write file";
|
|
418
|
-
const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside
|
|
418
|
+
const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside project root")
|
|
419
419
|
|| message.includes("refers to a symlink")
|
|
420
420
|
|| message.includes("must be relative")
|
|
421
|
-
|| message.includes("escapes
|
|
421
|
+
|| message.includes("escapes project boundary")
|
|
422
422
|
|| message.includes("path traversal")));
|
|
423
423
|
return reply.status(isValidationError ? 400 : 500).send({
|
|
424
424
|
error: isValidationError ? "VALIDATION_ERROR" : "WRITE_FAILED",
|
|
@@ -426,12 +426,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
426
426
|
});
|
|
427
427
|
}
|
|
428
428
|
});
|
|
429
|
-
// GET /api/
|
|
430
|
-
app.get("/api/
|
|
429
|
+
// GET /api/project/stat?path=&surfaceId= — stat a file or directory
|
|
430
|
+
app.get("/api/project/stat", async (req, reply) => {
|
|
431
431
|
const { path: targetPath, surfaceId } = req.query;
|
|
432
432
|
const fs = findFsSurface(surfaceRegistry, surfaceId, targetPath, { fallbackWhenTargetDisallowed: true });
|
|
433
433
|
if (!fs) {
|
|
434
|
-
return reply.status(404).send({ error: "
|
|
434
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
435
435
|
}
|
|
436
436
|
if (!targetPath) {
|
|
437
437
|
return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
|
|
@@ -447,8 +447,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
447
447
|
});
|
|
448
448
|
}
|
|
449
449
|
});
|
|
450
|
-
// POST /api/
|
|
451
|
-
app.post("/api/
|
|
450
|
+
// POST /api/project/undo — restore a file to its pre-modification state
|
|
451
|
+
app.post("/api/project/undo", async (req, reply) => {
|
|
452
452
|
const body = req.body;
|
|
453
453
|
const filePath = body?.path;
|
|
454
454
|
if (!filePath) {
|
|
@@ -456,7 +456,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
456
456
|
}
|
|
457
457
|
const fs = findFsSurfaceWithBackup(surfaceRegistry, filePath, body?.surfaceId);
|
|
458
458
|
if (!fs) {
|
|
459
|
-
return reply.status(404).send({ error: "
|
|
459
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
460
460
|
}
|
|
461
461
|
try {
|
|
462
462
|
const restored = await fs.restore(filePath);
|
|
@@ -472,12 +472,12 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
472
472
|
});
|
|
473
473
|
}
|
|
474
474
|
});
|
|
475
|
-
// GET /api/
|
|
476
|
-
app.get("/api/
|
|
475
|
+
// GET /api/project/backup?path= — get the original (backed-up) content of a file
|
|
476
|
+
app.get("/api/project/backup", async (req, reply) => {
|
|
477
477
|
const { path: filePath, surfaceId } = req.query;
|
|
478
478
|
const fs = findFsSurface(surfaceRegistry, surfaceId, filePath, { fallbackWhenTargetDisallowed: true });
|
|
479
479
|
if (!fs) {
|
|
480
|
-
return reply.status(404).send({ error: "
|
|
480
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
481
481
|
}
|
|
482
482
|
if (!filePath) {
|
|
483
483
|
return reply.status(400).send({ error: "VALIDATION_ERROR", message: "path query parameter is required" });
|
|
@@ -502,8 +502,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
502
502
|
hasBackup: true,
|
|
503
503
|
};
|
|
504
504
|
});
|
|
505
|
-
// POST /api/
|
|
506
|
-
app.post("/api/
|
|
505
|
+
// POST /api/project/apply-diff — apply merged file content and clear backup
|
|
506
|
+
app.post("/api/project/apply-diff", async (req, reply) => {
|
|
507
507
|
const body = req.body;
|
|
508
508
|
const filePath = body?.path;
|
|
509
509
|
const content = body?.content;
|
|
@@ -512,7 +512,7 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
512
512
|
}
|
|
513
513
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, filePath);
|
|
514
514
|
if (!fs) {
|
|
515
|
-
return reply.status(404).send({ error: "
|
|
515
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
516
516
|
}
|
|
517
517
|
try {
|
|
518
518
|
// If content is provided, write it through the surface to keep path validation
|
|
@@ -525,10 +525,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
525
525
|
}
|
|
526
526
|
catch (err) {
|
|
527
527
|
const message = err instanceof Error ? err.message : "Failed to apply diff";
|
|
528
|
-
const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside
|
|
528
|
+
const isValidationError = err instanceof PathTraversalError || (err instanceof Error && (message.includes("outside project root")
|
|
529
529
|
|| message.includes("refers to a symlink")
|
|
530
530
|
|| message.includes("must be relative")
|
|
531
|
-
|| message.includes("escapes
|
|
531
|
+
|| message.includes("escapes project boundary")
|
|
532
532
|
|| message.includes("path traversal")));
|
|
533
533
|
return reply.status(isValidationError ? 400 : 500).send({
|
|
534
534
|
error: isValidationError ? "VALIDATION_ERROR" : "APPLY_FAILED",
|
|
@@ -536,8 +536,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
536
536
|
});
|
|
537
537
|
}
|
|
538
538
|
});
|
|
539
|
-
// POST /api/
|
|
540
|
-
app.post("/api/
|
|
539
|
+
// POST /api/project/undo-all — restore all modified files to pre-modification state
|
|
540
|
+
app.post("/api/project/undo-all", async (req, reply) => {
|
|
541
541
|
const body = req.body;
|
|
542
542
|
const paths = body?.paths;
|
|
543
543
|
if (!paths || paths.length === 0) {
|
|
@@ -560,8 +560,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
560
560
|
}
|
|
561
561
|
return { ok: true, results };
|
|
562
562
|
});
|
|
563
|
-
// POST /api/
|
|
564
|
-
app.post("/api/
|
|
563
|
+
// POST /api/project/delete — delete a file or directory
|
|
564
|
+
app.post("/api/project/delete", async (req, reply) => {
|
|
565
565
|
const body = req.body;
|
|
566
566
|
const targetPath = body?.path;
|
|
567
567
|
if (!targetPath) {
|
|
@@ -569,10 +569,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
569
569
|
}
|
|
570
570
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, targetPath);
|
|
571
571
|
if (!fs) {
|
|
572
|
-
return reply.status(404).send({ error: "
|
|
572
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
573
573
|
}
|
|
574
574
|
if (!(fs instanceof FileSystemSurface)) {
|
|
575
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote
|
|
575
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
|
|
576
576
|
}
|
|
577
577
|
try {
|
|
578
578
|
if (body?.isDirectory) {
|
|
@@ -588,8 +588,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
588
588
|
return reply.status(500).send({ error: "DELETE_FAILED", message });
|
|
589
589
|
}
|
|
590
590
|
});
|
|
591
|
-
// POST /api/
|
|
592
|
-
app.post("/api/
|
|
591
|
+
// POST /api/project/rename — rename a file or directory
|
|
592
|
+
app.post("/api/project/rename", async (req, reply) => {
|
|
593
593
|
const body = req.body;
|
|
594
594
|
const targetPath = body?.path;
|
|
595
595
|
const newName = body?.newName;
|
|
@@ -602,10 +602,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
602
602
|
}
|
|
603
603
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, targetPath);
|
|
604
604
|
if (!fs) {
|
|
605
|
-
return reply.status(404).send({ error: "
|
|
605
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
606
606
|
}
|
|
607
607
|
if (!(fs instanceof FileSystemSurface)) {
|
|
608
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote
|
|
608
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
|
|
609
609
|
}
|
|
610
610
|
try {
|
|
611
611
|
const newPath = await fs.renameFile(targetPath, newName);
|
|
@@ -616,8 +616,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
616
616
|
return reply.status(500).send({ error: "RENAME_FAILED", message });
|
|
617
617
|
}
|
|
618
618
|
});
|
|
619
|
-
// POST /api/
|
|
620
|
-
app.post("/api/
|
|
619
|
+
// POST /api/project/move — move a file or directory to a new parent
|
|
620
|
+
app.post("/api/project/move", async (req, reply) => {
|
|
621
621
|
const body = req.body;
|
|
622
622
|
const srcPath = body?.srcPath;
|
|
623
623
|
const destDir = body?.destDir;
|
|
@@ -626,10 +626,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
626
626
|
}
|
|
627
627
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, srcPath);
|
|
628
628
|
if (!fs) {
|
|
629
|
-
return reply.status(404).send({ error: "
|
|
629
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
630
630
|
}
|
|
631
631
|
if (!(fs instanceof FileSystemSurface)) {
|
|
632
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote
|
|
632
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
|
|
633
633
|
}
|
|
634
634
|
try {
|
|
635
635
|
const newPath = await fs.moveFile(srcPath, destDir);
|
|
@@ -640,8 +640,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
640
640
|
return reply.status(500).send({ error: "MOVE_FAILED", message });
|
|
641
641
|
}
|
|
642
642
|
});
|
|
643
|
-
// POST /api/
|
|
644
|
-
app.post("/api/
|
|
643
|
+
// POST /api/project/create-file — create a new empty file
|
|
644
|
+
app.post("/api/project/create-file", async (req, reply) => {
|
|
645
645
|
const body = req.body;
|
|
646
646
|
const filePath = body?.path;
|
|
647
647
|
if (!filePath) {
|
|
@@ -649,10 +649,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
649
649
|
}
|
|
650
650
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, filePath);
|
|
651
651
|
if (!fs) {
|
|
652
|
-
return reply.status(404).send({ error: "
|
|
652
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
653
653
|
}
|
|
654
654
|
if (!(fs instanceof FileSystemSurface)) {
|
|
655
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote
|
|
655
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
|
|
656
656
|
}
|
|
657
657
|
try {
|
|
658
658
|
await fs.createFile(filePath, body?.content ?? "");
|
|
@@ -663,8 +663,8 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
663
663
|
return reply.status(500).send({ error: "CREATE_FAILED", message });
|
|
664
664
|
}
|
|
665
665
|
});
|
|
666
|
-
// POST /api/
|
|
667
|
-
app.post("/api/
|
|
666
|
+
// POST /api/project/create-directory — create a new directory
|
|
667
|
+
app.post("/api/project/create-directory", async (req, reply) => {
|
|
668
668
|
const body = req.body;
|
|
669
669
|
const dirPath = body?.path;
|
|
670
670
|
if (!dirPath) {
|
|
@@ -672,10 +672,10 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
672
672
|
}
|
|
673
673
|
const fs = findFsSurface(surfaceRegistry, body?.surfaceId, dirPath);
|
|
674
674
|
if (!fs) {
|
|
675
|
-
return reply.status(404).send({ error: "
|
|
675
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
676
676
|
}
|
|
677
677
|
if (!(fs instanceof FileSystemSurface)) {
|
|
678
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote
|
|
678
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "File management not supported on remote projects yet" });
|
|
679
679
|
}
|
|
680
680
|
try {
|
|
681
681
|
await fs.createDirectory(dirPath);
|
|
@@ -686,9 +686,9 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
686
686
|
return reply.status(500).send({ error: "CREATE_DIR_FAILED", message });
|
|
687
687
|
}
|
|
688
688
|
});
|
|
689
|
-
// GET /api/
|
|
689
|
+
// GET /api/project/search?query=&mode=&limit=&surfaceId=
|
|
690
690
|
// mode: "files" (filename search) | "content" (grep/ripgrep content search)
|
|
691
|
-
app.get("/api/
|
|
691
|
+
app.get("/api/project/search", async (req, reply) => {
|
|
692
692
|
const { query, mode = "files", limit: limitStr, surfaceId } = req.query;
|
|
693
693
|
if (!query) {
|
|
694
694
|
return reply.status(400).send({ error: "VALIDATION_ERROR", message: "query is required" });
|
|
@@ -696,28 +696,28 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
696
696
|
const maxResults = Math.min(Math.max(parseInt(limitStr || "50", 10) || 50, 1), 200);
|
|
697
697
|
const fs = findFsSurface(surfaceRegistry, surfaceId);
|
|
698
698
|
if (!fs) {
|
|
699
|
-
return reply.status(404).send({ error: "
|
|
699
|
+
return reply.status(404).send({ error: "NO_PROJECT", message: "No filesystem surface is running" });
|
|
700
700
|
}
|
|
701
701
|
const snap = fs.snapshot();
|
|
702
|
-
const
|
|
703
|
-
if (!
|
|
704
|
-
return reply.status(400).send({ error: "NO_ROOT", message: "No
|
|
702
|
+
const projectRoot = snap.metadata?.projectRoot;
|
|
703
|
+
if (!projectRoot) {
|
|
704
|
+
return reply.status(400).send({ error: "NO_ROOT", message: "No project root configured" });
|
|
705
705
|
}
|
|
706
706
|
try {
|
|
707
707
|
if (fs instanceof RemoteFileSystemSurface) {
|
|
708
708
|
const nodeId = fs.nodeId ?? snap.metadata?.nodeId;
|
|
709
709
|
if (!nodeId || !ws) {
|
|
710
|
-
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "
|
|
710
|
+
return reply.status(501).send({ error: "NOT_SUPPORTED", message: "Project search is not available for this remote project" });
|
|
711
711
|
}
|
|
712
|
-
const result = await ws.proxyFsOp(nodeId, "search-
|
|
713
|
-
path:
|
|
712
|
+
const result = await ws.proxyFsOp(nodeId, "search-project", {
|
|
713
|
+
path: projectRoot,
|
|
714
714
|
query,
|
|
715
715
|
mode,
|
|
716
716
|
limit: maxResults,
|
|
717
717
|
}, 20_000);
|
|
718
718
|
return result;
|
|
719
719
|
}
|
|
720
|
-
return await
|
|
720
|
+
return await runProjectSearch(projectRoot, query, mode === "content" ? "content" : "files", maxResults);
|
|
721
721
|
}
|
|
722
722
|
catch (err) {
|
|
723
723
|
const message = err instanceof Error ? err.message : "Search failed";
|
|
@@ -725,4 +725,4 @@ export function registerWorkspaceRoutes(app, surfaceRegistry, sessionState, sess
|
|
|
725
725
|
}
|
|
726
726
|
});
|
|
727
727
|
}
|
|
728
|
-
//# sourceMappingURL=
|
|
728
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { AppConfig } from "../config.js";
|
|
3
|
+
import type { ProjectService } from "../services/projects.js";
|
|
4
|
+
import type { SessionService } from "../services/sessions.js";
|
|
5
|
+
import type { ProjectStateService } from "../services/project-state.js";
|
|
6
|
+
import type { RepositoryService } from "../services/repositories.js";
|
|
7
|
+
import { GitService } from "../services/git.js";
|
|
8
|
+
import type { WsControlPlane } from "../ws.js";
|
|
9
|
+
export interface ProjectEntityRouteDeps {
|
|
10
|
+
repoService?: RepositoryService;
|
|
11
|
+
gitService?: GitService;
|
|
12
|
+
ws?: WsControlPlane;
|
|
13
|
+
}
|
|
14
|
+
export declare function registerProjectEntityRoutes(app: FastifyInstance, config: AppConfig, projectService: ProjectService, sessionService: SessionService, projectState?: ProjectStateService, deps?: ProjectEntityRouteDeps): void;
|
|
15
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/routes/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,mBAAmB,EAClC,IAAI,GAAE,sBAA2B,QAsRlC"}
|