wind-agent-cli 1.37.3 → 1.38.1
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/README.md +16 -1
- package/dist/api-docs.html +2 -2
- package/dist/assets/{CodeEditor-BqmxpZ_D.js → CodeEditor-Cx2QOPKS.js} +6 -6
- package/dist/assets/FileTree-CaCZBfXB.js +1 -0
- package/dist/assets/GitPanel-C8vu-HU9.js +4 -0
- package/dist/assets/{MarkdownPreview-93h_1tJa.js → MarkdownPreview-DM1I8sMC.js} +17 -27
- package/dist/assets/Shell-DrlLKa8f.css +1 -0
- package/dist/assets/Shell-eRBEAkRb.js +76 -0
- package/dist/assets/StandaloneShell-C_SgfnxT.js +1 -0
- package/dist/assets/TaskMasterPanel-ePMcx8a-.js +2 -0
- package/dist/assets/abnfDiagram-N423BO3Z-BcJZs1lF.js +1 -0
- package/dist/assets/arc-B53XXXxy.js +1 -0
- package/dist/assets/architectureDiagram-T3A2C74G-vTs0UDp_.js +36 -0
- package/dist/assets/{blockDiagram-VBNYF7ZC-oSjQ1SgE.js → blockDiagram-VBNYF7ZC-CRlmkPBH.js} +4 -4
- package/dist/assets/c4Diagram-5PPSVZJV-CDkarwX2.js +10 -0
- package/dist/assets/channel-BBmlxLKm.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-B07uZ07O.js → chunk-2GRJ4B5K-CdVcURNG.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-DNSfO7xS.js → chunk-2Q5K7J3B-CSMQbOQx.js} +1 -1
- package/dist/assets/chunk-5RXB4S5H-DFW9zj_c.js +231 -0
- package/dist/assets/{chunk-5VM5RSS4-B7vZV0zC.js → chunk-5VM5RSS4-DBpthDmq.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-DuS_xUGG.js → chunk-6Q2QTUOP-BcUSTdgD.js} +1 -1
- package/dist/assets/chunk-GF5L2VYU-4m17UUNv.js +206 -0
- package/dist/assets/{chunk-JWPE2WC7-DD2hcXvs.js → chunk-JWPE2WC7-BQbCGGN3.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-Cz-l38qp.js → chunk-KBJHAD2P-BSUyigrP.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-DGFIU1YM.js → chunk-RYQCIY6F-IDx48cke.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-CmfzoYFl.js → chunk-XXDRQBXY-CkptWWiw.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-Zuuh6WIs.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-Zuuh6WIs.js +1 -0
- package/dist/assets/cose-bilkent-JH36ORCC-Di3RMB4X.js +1 -0
- package/dist/assets/{cynefin-VYW2F7L2-P1HecReO.js → cynefin-VYW2F7L2-DBEP-JNm.js} +11 -23
- package/dist/assets/cynefinDiagram-MW4NZA55-DCa5bQ3E.js +62 -0
- package/dist/assets/cytoscape.esm-yzknjiTM.js +321 -0
- package/dist/assets/dagre-VZM6K2ZE-N0N_WSj2.js +4 -0
- package/dist/assets/{diagram-7IWD3JNH-9CWGFMYR.js → diagram-7IWD3JNH-wYn0p431.js} +5 -5
- package/dist/assets/{diagram-B4RE2ZJO-TWK59T6V.js → diagram-B4RE2ZJO-Cse-jrwQ.js} +2 -2
- package/dist/assets/diagram-LBJQPF4R-Byhmgq5m.js +24 -0
- package/dist/assets/diagram-Q27KOJAE-BNsUkxU7.js +24 -0
- package/dist/assets/diagram-UB23O5K3-C3QHYX7n.js +41 -0
- package/dist/assets/ebnfDiagram-BXEA7PRR-BP6B3t_z.js +1 -0
- package/dist/assets/erDiagram-JOGREHBK-CjYRNWDj.js +85 -0
- package/dist/assets/feature-chat-CenAll-X.js +88 -0
- package/dist/assets/feature-workspace-X9kJZ4EG.js +39 -0
- package/dist/assets/{flowDiagram-UKHOOZJN-DEr2II5V.js → flowDiagram-UKHOOZJN-4H-yy-hv.js} +4 -4
- package/dist/assets/ganttDiagram-PKOTCBZU-CEjsxzjF.js +292 -0
- package/dist/assets/gitGraphDiagram-DS77QQ5N-CNEvMqer.js +106 -0
- package/dist/assets/graph-DOmOIIwC.js +1 -0
- package/dist/assets/index-BIKUx4Nd.js +1 -0
- package/dist/assets/index-BnTqIKbW.js +1 -0
- package/dist/assets/index-CblFvRGn.js +35 -0
- package/dist/assets/index-Cr5MbHuj.css +1 -0
- package/dist/assets/{index-BSe3UiFA.js → index-Dn_5mZup.js} +3 -3
- package/dist/assets/infoDiagram-6WML65LV-CaQEYwl_.js +2 -0
- package/dist/assets/ishikawaDiagram-WSZJBQD7-jvmcvqKv.js +70 -0
- package/dist/assets/journeyDiagram-NVQOT4AX-D3t6ZEEp.js +139 -0
- package/dist/assets/{kanban-definition-27J2QSJJ-DmlgiV7K.js → kanban-definition-27J2QSJJ-DndXvXlL.js} +6 -6
- package/dist/assets/{layout-D6BstSzF.js → layout-D-LzfAck.js} +1 -1
- package/dist/assets/{linear-Ct_eoJQk.js → linear-CRI9G1bv.js} +1 -1
- package/dist/assets/map-DxJ2ADlA.js +1 -0
- package/dist/assets/mermaid.core-Nej1-0Ug.js +306 -0
- package/dist/assets/{mindmap-definition-FAOFIHXS-DGtMgQhf.js → mindmap-definition-FAOFIHXS-7fzz0Exr.js} +4 -4
- package/dist/assets/pegDiagram-VL7TDLO6-DTiRFRfv.js +1 -0
- package/dist/assets/{pieDiagram-7S7Q4E2Y-DMkt_Zfr.js → pieDiagram-7S7Q4E2Y-BU4cScsB.js} +2 -2
- package/dist/assets/quadrantDiagram-CIZ2JOQS-Cc13j5j0.js +7 -0
- package/dist/assets/railroadDiagram-AXF67PYL-CfB467SJ.js +1 -0
- package/dist/assets/requirementDiagram-LRYGKXZP-BddSRoQa.js +84 -0
- package/dist/assets/sankeyDiagram-W5VNT64P-D33-L55R.js +40 -0
- package/dist/assets/sequenceDiagram-SI44F4Z6-BP7gKO1m.js +162 -0
- package/dist/assets/sizeCapture-X5ZJPWSS-DLmxTSos.js +1 -0
- package/dist/assets/stateDiagram-OKZ733FA-2fN5h0fl.js +1 -0
- package/dist/assets/stateDiagram-v2-UEYNNEHI-ddGXuRHz.js +1 -0
- package/dist/assets/swimlanes-SLNWSIFB-m6QzM3CR.js +2 -0
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-DNmdh3Nm.js +8 -0
- package/dist/assets/timeline-definition-Z64GVDOM-B-4XL-3f.js +120 -0
- package/dist/assets/vendor-data-DsEZeNPr.js +4 -0
- package/dist/assets/vendor-i18n-B6HjLCnN.js +1 -0
- package/dist/assets/vendor-markdown-DkITEES2.js +298 -0
- package/dist/assets/vendor-react-C2GTiUCy.js +10 -0
- package/dist/assets/vendor-ui-CAUHSABu.js +49 -0
- package/dist/assets/vennDiagram-T6HMQDX7-C-2U26ta.js +34 -0
- package/dist/assets/{wardleyDiagram-T6FBY63Y-Db9dsaXv.js → wardleyDiagram-T6FBY63Y-BM4F1_6i.js} +2 -2
- package/dist/assets/workbox-window.prod.es5-BBnX5xw4.js +2 -0
- package/dist/assets/xychartDiagram-ELKLHX3M-BWBCnHJm.js +7 -0
- package/dist/favicon.png +0 -0
- package/dist/icons/icon-128x128.png +0 -0
- package/dist/icons/icon-144x144.png +0 -0
- package/dist/icons/icon-152x152.png +0 -0
- package/dist/icons/icon-180x180.png +0 -0
- package/dist/icons/icon-192x192.png +0 -0
- package/dist/icons/icon-384x384.png +0 -0
- package/dist/icons/icon-512x512.png +0 -0
- package/dist/icons/icon-72x72.png +0 -0
- package/dist/icons/icon-96x96.png +0 -0
- package/dist/icons/icon-maskable-192x192.png +0 -0
- package/dist/icons/icon-maskable-512x512.png +0 -0
- package/dist/icons/new-icon.png +0 -0
- package/dist/index.html +17 -27
- package/dist/logo-128.png +0 -0
- package/dist/logo-256.png +0 -0
- package/dist/manifest.webmanifest +1 -0
- package/dist/push-sw.js +48 -0
- package/dist/screenshots/setup-screen-mobile.png +0 -0
- package/dist/screenshots/setup-screen.png +0 -0
- package/dist/sw.js +1 -124
- package/dist/workbox-ae5c0bb2.js +1 -0
- package/dist-server/server/index.js +1 -1
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/load-env.js +4 -2
- package/dist-server/server/load-env.js.map +1 -1
- package/dist-server/server/modules/agent/agent.routes.js +1 -1
- package/dist-server/server/modules/agent/agent.routes.js.map +1 -1
- package/dist-server/server/modules/browser-use/browser-use.service.js +1 -1
- package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
- package/dist-server/server/modules/cli/cli.service.js +5 -5
- package/dist-server/server/modules/cli/cli.service.js.map +1 -1
- package/dist-server/server/modules/cli/sandbox.service.js +7 -7
- package/dist-server/server/modules/cli/sandbox.service.js.map +1 -1
- package/dist-server/server/modules/commands/commands.routes.js +1 -1
- package/dist-server/server/modules/commands/commands.routes.js.map +1 -1
- package/dist-server/server/modules/commands/tests/commands.test.js +1 -1
- package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -1
- package/dist-server/server/modules/database/connection.js +1 -1
- package/dist-server/server/modules/database/connection.js.map +1 -1
- package/dist-server/server/modules/database/repositories/sessions.db.js +1 -1
- package/dist-server/server/modules/database/tests/projects.db.integration.test.js +3 -2
- package/dist-server/server/modules/database/tests/projects.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +4 -3
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +2 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -1
- package/dist-server/server/modules/notifications/vapid-keys.service.js +1 -1
- package/dist-server/server/modules/notifications/vapid-keys.service.js.map +1 -1
- package/dist-server/server/modules/projects/tests/project-management.service.test.js +2 -1
- package/dist-server/server/modules/projects/tests/project-management.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +2 -2
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +1 -1
- package/dist-server/server/modules/providers/services/sessions.service.js +1 -1
- package/dist-server/server/modules/providers/tests/claude-auth.test.js +8 -0
- package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js +1 -1
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +2 -2
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js +1 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -1
- package/dist-server/server/modules/system/system.service.js +1 -1
- package/dist-server/server/modules/system/system.service.js.map +1 -1
- package/dist-server/server/modules/system/tests/system.service.test.js +1 -1
- package/dist-server/server/modules/system/tests/system.service.test.js.map +1 -1
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js +4 -3
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-list.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-open.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-remove.service.js +1 -1
- package/electron/cloud.js +3 -3
- package/electron/desktopNotifications.js +1 -1
- package/electron/desktopWindow.js +12 -12
- package/electron/launcher/index.html +1 -1
- package/electron/launcher/launcher.js +14 -14
- package/electron/localServer.js +5 -5
- package/electron/main.js +19 -19
- package/electron/serverInstaller.js +2 -2
- package/electron/viewHost.js +1 -1
- package/package.json +53 -37
- package/public/api-docs.html +2 -2
- package/scripts/build-client.mjs +30 -0
- package/scripts/generate-pwa-icons.ps1 +33 -0
- package/scripts/verify-pwa-build.mjs +37 -0
- package/server/index.ts +1 -1
- package/server/load-env.ts +4 -2
- package/server/modules/agent/agent.routes.ts +1 -1
- package/server/modules/browser-use/browser-use.service.ts +1 -1
- package/server/modules/cli/cli.service.ts +5 -5
- package/server/modules/cli/sandbox.service.ts +7 -7
- package/server/modules/commands/commands.routes.ts +1 -1
- package/server/modules/commands/tests/commands.test.ts +1 -1
- package/server/modules/database/connection.ts +2 -1
- package/server/modules/database/repositories/sessions.db.ts +1 -1
- package/server/modules/database/tests/projects.db.integration.test.ts +3 -2
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +4 -3
- package/server/modules/database/tests/sessions.db.integration.test.ts +2 -1
- package/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
- package/server/modules/notifications/vapid-keys.service.ts +1 -1
- package/server/modules/projects/tests/project-management.service.test.ts +2 -1
- package/server/modules/providers/list/codex/codex-app-server.client.ts +2 -2
- package/server/modules/providers/list/codex/codex-models.provider.ts +1 -1
- package/server/modules/providers/list/cursor/cursor-models.provider.ts +1 -1
- package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +0 -1
- package/server/modules/providers/list/opencode/opencode-models.provider.ts +1 -1
- package/server/modules/providers/services/sessions.service.ts +1 -1
- package/server/modules/providers/tests/claude-auth.test.ts +7 -0
- package/server/modules/providers/tests/codex-sessions.test.ts +1 -1
- package/server/modules/providers/tests/opencode-sessions.test.ts +2 -2
- package/server/modules/providers/tests/provider.routes.test.ts +1 -1
- package/server/modules/system/system.service.ts +1 -1
- package/server/modules/system/tests/system.service.test.ts +1 -1
- package/server/modules/taskmaster/taskmaster.routes.ts +4 -3
- package/server/modules/websocket/services/shell-websocket.service.ts +1 -1
- package/server/modules/worktrees/services/worktree-list.service.ts +1 -1
- package/server/modules/worktrees/services/worktree-open.service.ts +1 -1
- package/server/modules/worktrees/services/worktree-remove.service.ts +1 -1
- package/server/shared/interfaces.ts +1 -1
- package/server/shared/types.ts +6 -6
- package/dist/assets/FileTree-DLE7Ioai.js +0 -127
- package/dist/assets/GitPanel-f8RMRa8D.js +0 -29
- package/dist/assets/PluginTabContent-DU1jjkXP.js +0 -1
- package/dist/assets/Shell-CN_2MRIM.js +0 -81
- package/dist/assets/Shell-qxJ8_QYu.css +0 -32
- package/dist/assets/StandaloneShell-D0avS8UE.js +0 -1
- package/dist/assets/TaskMasterPanel-Cpf1Q5Ph.js +0 -32
- package/dist/assets/abnfDiagram-N423BO3Z-p3aJIm4T.js +0 -1
- package/dist/assets/arc-CTeud6Fl.js +0 -1
- package/dist/assets/architectureDiagram-T3A2C74G-CG7kRCJU.js +0 -36
- package/dist/assets/c4Diagram-5PPSVZJV-RkzF0DJV.js +0 -10
- package/dist/assets/channel-BfQbarn9.js +0 -1
- package/dist/assets/chunk-5RXB4S5H-BTeYcgyb.js +0 -231
- package/dist/assets/chunk-GF5L2VYU-CKLZ3iVD.js +0 -206
- package/dist/assets/classDiagram-JCYQIIEL-Bpfe3kq7.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-Bpfe3kq7.js +0 -1
- package/dist/assets/code-xml-CLpHzEOP.js +0 -6
- package/dist/assets/cose-bilkent-JH36ORCC-DlFcLXCB.js +0 -1
- package/dist/assets/cynefinDiagram-MW4NZA55-COgduz5P.js +0 -62
- package/dist/assets/cytoscape.esm-C10L9Icf.js +0 -331
- package/dist/assets/dagre-VZM6K2ZE-Bbb-siGp.js +0 -4
- package/dist/assets/diagram-LBJQPF4R-ErMC9yaa.js +0 -24
- package/dist/assets/diagram-Q27KOJAE-Dt_-C7hV.js +0 -24
- package/dist/assets/diagram-UB23O5K3-BJ1DnRAF.js +0 -41
- package/dist/assets/ebnfDiagram-BXEA7PRR-CE1YaQ9s.js +0 -1
- package/dist/assets/erDiagram-JOGREHBK-Bqk7N9aY.js +0 -85
- package/dist/assets/ganttDiagram-PKOTCBZU-CWYAUeYN.js +0 -292
- package/dist/assets/gitGraphDiagram-DS77QQ5N-tdEcEIM6.js +0 -106
- package/dist/assets/graph-Cx-EqisW.js +0 -1
- package/dist/assets/index-B-sTfSZq.js +0 -1
- package/dist/assets/index-B_FDMWar.js +0 -1174
- package/dist/assets/index-CWJtg2pR.js +0 -11
- package/dist/assets/index-t1w8KNxn.css +0 -1
- package/dist/assets/infoDiagram-6WML65LV-A3IqRUnO.js +0 -2
- package/dist/assets/ishikawaDiagram-WSZJBQD7-B2uL6bkK.js +0 -70
- package/dist/assets/journeyDiagram-NVQOT4AX-D9JB-hRW.js +0 -139
- package/dist/assets/map-CV9uif0g.js +0 -1
- package/dist/assets/mermaid.core-CQ698HNn.js +0 -312
- package/dist/assets/pegDiagram-VL7TDLO6-CO6vP4n9.js +0 -1
- package/dist/assets/quadrantDiagram-CIZ2JOQS-DgNxRz6t.js +0 -7
- package/dist/assets/railroadDiagram-AXF67PYL-DKz9UqA9.js +0 -1
- package/dist/assets/requirementDiagram-LRYGKXZP-L84XyGgV.js +0 -84
- package/dist/assets/sankeyDiagram-W5VNT64P-CQqWbJ3j.js +0 -40
- package/dist/assets/sequenceDiagram-SI44F4Z6--tnzS2tb.js +0 -162
- package/dist/assets/sizeCapture-X5ZJPWSS-DujwEOtm.js +0 -1
- package/dist/assets/stateDiagram-OKZ733FA-BK3TcZY2.js +0 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-_medyomK.js +0 -1
- package/dist/assets/swimlanes-SLNWSIFB-naX-Uv1B.js +0 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-DstIv3TC.js +0 -8
- package/dist/assets/timeline-definition-Z64GVDOM-C-vP_ddU.js +0 -120
- package/dist/assets/vendor-react-whEHfigN.js +0 -59
- package/dist/assets/vennDiagram-T6HMQDX7-DN-I7o-7.js +0 -34
- package/dist/assets/xychartDiagram-ELKLHX3M-DE6OxW_p.js +0 -7
- package/dist/manifest.json +0 -61
|
@@ -106,7 +106,7 @@ function readCommandError(error: unknown): string {
|
|
|
106
106
|
|
|
107
107
|
function showSandboxHelp(output: CliOutput): void {
|
|
108
108
|
output.log(`
|
|
109
|
-
${terminalTextStyles.bright('
|
|
109
|
+
${terminalTextStyles.bright('WindCli Sandbox')} — Run WindCli inside Docker Sandboxes
|
|
110
110
|
|
|
111
111
|
Usage:
|
|
112
112
|
wacli sandbox <workspace> Create and start a sandbox
|
|
@@ -118,7 +118,7 @@ Subcommands:
|
|
|
118
118
|
${terminalTextStyles.bright('start')} Restart a stopped sandbox and re-launch the web UI
|
|
119
119
|
${terminalTextStyles.bright('stop')} Stop a sandbox (preserves state)
|
|
120
120
|
${terminalTextStyles.bright('rm')} Remove a sandbox
|
|
121
|
-
${terminalTextStyles.bright('logs')} Show
|
|
121
|
+
${terminalTextStyles.bright('logs')} Show WindCli server logs
|
|
122
122
|
${terminalTextStyles.bright('help')} Show this help
|
|
123
123
|
|
|
124
124
|
Options:
|
|
@@ -279,7 +279,7 @@ export function createSandboxCommandService(
|
|
|
279
279
|
);
|
|
280
280
|
dependencies.spawnDetachedSandbox(['run', sandboxName]);
|
|
281
281
|
await dependencies.wait(5_000);
|
|
282
|
-
dependencies.output.log(`${terminalTextStyles.info('▶')} Launching
|
|
282
|
+
dependencies.output.log(`${terminalTextStyles.info('▶')} Launching WindCli web server...`);
|
|
283
283
|
dependencies.runSandboxCommand([
|
|
284
284
|
'exec',
|
|
285
285
|
sandboxName,
|
|
@@ -290,7 +290,7 @@ export function createSandboxCommandService(
|
|
|
290
290
|
if (!publishSandboxPort(options, dependencies)) {
|
|
291
291
|
return 1;
|
|
292
292
|
}
|
|
293
|
-
dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('
|
|
293
|
+
dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('WindCli is ready!')}`);
|
|
294
294
|
dependencies.output.log(` ${terminalTextStyles.info('→')} ${terminalTextStyles.bright(`http://localhost:${options.port}`)}\n`);
|
|
295
295
|
return 0;
|
|
296
296
|
}
|
|
@@ -330,7 +330,7 @@ export function createSandboxCommandService(
|
|
|
330
330
|
// proceed and let sbx report a credential error itself.
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
-
dependencies.output.log(`\n${terminalTextStyles.bright('
|
|
333
|
+
dependencies.output.log(`\n${terminalTextStyles.bright('WindCli Sandbox')}`);
|
|
334
334
|
dependencies.output.log(terminalTextStyles.dim('─'.repeat(50)));
|
|
335
335
|
dependencies.output.log(` Agent: ${terminalTextStyles.info(options.agent)} ${terminalTextStyles.dim(`(${secret} credentials)`)}`);
|
|
336
336
|
dependencies.output.log(` Workspace: ${terminalTextStyles.dim(workspace)}`);
|
|
@@ -381,7 +381,7 @@ export function createSandboxCommandService(
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
-
dependencies.output.log(`${terminalTextStyles.info('▶')} Launching
|
|
384
|
+
dependencies.output.log(`${terminalTextStyles.info('▶')} Launching WindCli web server...`);
|
|
385
385
|
dependencies.runSandboxCommand([
|
|
386
386
|
'exec',
|
|
387
387
|
sandboxName,
|
|
@@ -393,7 +393,7 @@ export function createSandboxCommandService(
|
|
|
393
393
|
return 1;
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
-
dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('
|
|
396
|
+
dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('WindCli is ready!')}`);
|
|
397
397
|
dependencies.output.log(` ${terminalTextStyles.info('→')} Open ${terminalTextStyles.bright(`http://localhost:${options.port}`)}`);
|
|
398
398
|
dependencies.output.log(`\n${terminalTextStyles.dim(' Manage with:')}`);
|
|
399
399
|
dependencies.output.log(` ${terminalTextStyles.dim('$')} sbx ls`);
|
|
@@ -249,7 +249,7 @@ const builtInHandlers = {
|
|
|
249
249
|
const helpCommands = isCodex
|
|
250
250
|
? [...builtInCommands, ...codexNativeCommands]
|
|
251
251
|
: builtInCommands;
|
|
252
|
-
const helpText = `# ${isCodex ? "Codex and
|
|
252
|
+
const helpText = `# ${isCodex ? "Codex and WindCli" : "WindCli"} Commands
|
|
253
253
|
|
|
254
254
|
## Built-in Commands
|
|
255
255
|
|
|
@@ -165,7 +165,7 @@ test('Codex help includes provider-native commands and model aliases use the mod
|
|
|
165
165
|
const model = await executeCommand('/model', { provider: 'codex' });
|
|
166
166
|
const helpData = help.data as { content: string };
|
|
167
167
|
|
|
168
|
-
assert.match(helpData.content, /Codex and
|
|
168
|
+
assert.match(helpData.content, /Codex and WindCli Commands/);
|
|
169
169
|
assert.match(helpData.content, /\/plan/);
|
|
170
170
|
assert.equal(model.action, 'models');
|
|
171
171
|
});
|
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
* `getConnection()` to obtain the shared singleton.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import Database from 'better-sqlite3';
|
|
14
13
|
import fs from 'fs';
|
|
15
14
|
import path from 'path';
|
|
16
15
|
import { fileURLToPath } from 'url';
|
|
17
16
|
|
|
17
|
+
import Database from 'better-sqlite3';
|
|
18
|
+
|
|
18
19
|
import { APP_CONFIG_TABLE_SCHEMA_SQL } from '@/modules/database/schema.js';
|
|
19
20
|
|
|
20
21
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -168,7 +168,7 @@ export const sessionsDb = {
|
|
|
168
168
|
* `session_id` is the stable app-facing id, while `provider_session_id`
|
|
169
169
|
* stays NULL until the provider runtime announces its own id and
|
|
170
170
|
* `assignProviderSessionId` records the mapping. `customName` is derived
|
|
171
|
-
* from the first visible
|
|
171
|
+
* from the first visible WindCli message by the sessions service.
|
|
172
172
|
*/
|
|
173
173
|
createAppSession(
|
|
174
174
|
sessionId: string,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import test from 'node:test';
|
|
@@ -15,6 +15,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
|
|
|
15
15
|
|
|
16
16
|
closeConnection();
|
|
17
17
|
process.env.DATABASE_PATH = databasePath;
|
|
18
|
+
await writeFile(databasePath, '');
|
|
18
19
|
await initializeDatabase();
|
|
19
20
|
|
|
20
21
|
try {
|
|
@@ -36,7 +37,7 @@ test('projectsDb.createProjectPath returns created for fresh paths', async () =>
|
|
|
36
37
|
|
|
37
38
|
assert.equal(created.outcome, 'created');
|
|
38
39
|
assert.ok(created.project);
|
|
39
|
-
assert.equal(created.project?.project_path, '/workspace/new-project');
|
|
40
|
+
assert.equal(created.project?.project_path, path.normalize('/workspace/new-project'));
|
|
40
41
|
assert.equal(created.project?.isArchived, 0);
|
|
41
42
|
});
|
|
42
43
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import test from 'node:test';
|
|
@@ -15,6 +15,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
|
|
|
15
15
|
|
|
16
16
|
closeConnection();
|
|
17
17
|
process.env.DATABASE_PATH = databasePath;
|
|
18
|
+
await writeFile(databasePath, '');
|
|
18
19
|
await initializeDatabase();
|
|
19
20
|
|
|
20
21
|
try {
|
|
@@ -45,7 +46,7 @@ test('disk-discovered sessions are keyed by the provider id for both columns', a
|
|
|
45
46
|
|
|
46
47
|
test('app sessions get the provider id assigned without creating a duplicate row', async () => {
|
|
47
48
|
await withIsolatedDatabase(() => {
|
|
48
|
-
sessionsDb.createAppSession('app-id-1', 'claude', '/workspace/demo', 'Initial
|
|
49
|
+
sessionsDb.createAppSession('app-id-1', 'claude', '/workspace/demo', 'Initial WindCli message');
|
|
49
50
|
sessionsDb.assignProviderSessionId('app-id-1', 'provider-xyz');
|
|
50
51
|
|
|
51
52
|
// A later synchronizer pass that discovers the transcript on disk must
|
|
@@ -66,7 +67,7 @@ test('app sessions get the provider id assigned without creating a duplicate row
|
|
|
66
67
|
const row = sessionsDb.getSessionById('app-id-1');
|
|
67
68
|
assert.equal(row?.provider_session_id, 'provider-xyz');
|
|
68
69
|
assert.equal(row?.jsonl_path, '/fake/path/provider-xyz.jsonl');
|
|
69
|
-
assert.equal(row?.custom_name, 'Initial
|
|
70
|
+
assert.equal(row?.custom_name, 'Initial WindCli message');
|
|
70
71
|
});
|
|
71
72
|
});
|
|
72
73
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import { mkdtemp, rm } from 'node:fs/promises';
|
|
2
|
+
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import test from 'node:test';
|
|
@@ -16,6 +16,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
|
|
|
16
16
|
|
|
17
17
|
closeConnection();
|
|
18
18
|
process.env.DATABASE_PATH = databasePath;
|
|
19
|
+
await writeFile(databasePath, '');
|
|
19
20
|
await initializeDatabase();
|
|
20
21
|
|
|
21
22
|
try {
|
|
@@ -165,7 +165,7 @@ function buildNotificationPayload(event) {
|
|
|
165
165
|
const message = CODE_MAP[normalizedEvent.code] || 'You have a new notification';
|
|
166
166
|
|
|
167
167
|
return {
|
|
168
|
-
title: sessionName || '
|
|
168
|
+
title: sessionName || 'WindCli',
|
|
169
169
|
body: `${providerLabel}: ${message}`,
|
|
170
170
|
data: {
|
|
171
171
|
sessionId: normalizedEvent.sessionId || null,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import test from 'node:test';
|
|
3
4
|
|
|
4
5
|
import { createProject } from '@/modules/projects/services/project-management.service.js';
|
|
@@ -62,7 +63,7 @@ test('createProject throws conflict when active project path already exists', as
|
|
|
62
63
|
assert.ok(error instanceof AppError);
|
|
63
64
|
assert.equal(error.code, 'PROJECT_ALREADY_EXISTS');
|
|
64
65
|
assert.equal(error.statusCode, 409);
|
|
65
|
-
assert.equal(error.details, 'Project path already exists: /workspace/my-project');
|
|
66
|
+
assert.equal(error.details, 'Project path already exists: ' + path.normalize('/workspace/my-project'));
|
|
66
67
|
return true;
|
|
67
68
|
},
|
|
68
69
|
);
|
|
@@ -78,7 +78,7 @@ export class CodexAppServerClient {
|
|
|
78
78
|
await client.request('initialize', {
|
|
79
79
|
clientInfo: {
|
|
80
80
|
name: 'cloudcli',
|
|
81
|
-
title: '
|
|
81
|
+
title: 'WindCli',
|
|
82
82
|
version: '1.0.0',
|
|
83
83
|
},
|
|
84
84
|
capabilities: {
|
|
@@ -187,7 +187,7 @@ export class CodexAppServerClient {
|
|
|
187
187
|
id: message.id,
|
|
188
188
|
error: {
|
|
189
189
|
code: -32601,
|
|
190
|
-
message: `
|
|
190
|
+
message: `WindCli does not handle app-server request ${message.method}`,
|
|
191
191
|
},
|
|
192
192
|
});
|
|
193
193
|
return;
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
readOptionalString,
|
|
16
16
|
} from '@/shared/utils.js';
|
|
17
17
|
|
|
18
|
-
/** Curated Codex catalog shipped as immutable
|
|
18
|
+
/** Curated Codex catalog shipped as immutable WindCli defaults. */
|
|
19
19
|
export const CODEX_PREDEFINED_MODELS: ProviderModelsDefinition = {
|
|
20
20
|
OPTIONS: [
|
|
21
21
|
{
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
sanitizeLeafDirectoryName,
|
|
13
13
|
} from '@/shared/utils.js';
|
|
14
14
|
|
|
15
|
-
/** Curated Cursor catalog shipped as immutable
|
|
15
|
+
/** Curated Cursor catalog shipped as immutable WindCli defaults. */
|
|
16
16
|
export const CURSOR_PREDEFINED_MODELS: ProviderModelsDefinition = {
|
|
17
17
|
OPTIONS: [
|
|
18
18
|
{ value: 'auto', label: 'Auto', description: 'Let Cursor choose the model.' },
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from '@/shared/utils.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* Curated OpenCode catalog shipped as immutable
|
|
17
|
+
* Curated OpenCode catalog shipped as immutable WindCli defaults.
|
|
18
18
|
*
|
|
19
19
|
* OpenCode routes by `<providerID>/<modelID>`, so this list mirrors the
|
|
20
20
|
* providers `opencode models --verbose` reports: the OpenCode Zen gateway plus
|
|
@@ -208,7 +208,7 @@ export const sessionsService = {
|
|
|
208
208
|
* chat, navigates to the returned id immediately, and the id never changes
|
|
209
209
|
* for the lifetime of the conversation. The provider-native id is mapped to
|
|
210
210
|
* this row later, when the provider runtime announces it mid-run. Its title
|
|
211
|
-
* comes directly from the first visible
|
|
211
|
+
* comes directly from the first visible WindCli message and is limited to
|
|
212
212
|
* four whole words before any provider-owned storage exists.
|
|
213
213
|
*/
|
|
214
214
|
createAppSession(
|
|
@@ -52,7 +52,9 @@ const withEnv = async (
|
|
|
52
52
|
const withTempHome = async (fn: (homeDir: string) => Promise<void>) => {
|
|
53
53
|
const homeDir = await mkdtemp(path.join(os.tmpdir(), 'claude-auth-test-'));
|
|
54
54
|
const originalHome = process.env.HOME;
|
|
55
|
+
const originalUserProfile = process.env.USERPROFILE;
|
|
55
56
|
process.env.HOME = homeDir;
|
|
57
|
+
process.env.USERPROFILE = homeDir;
|
|
56
58
|
try {
|
|
57
59
|
await fn(homeDir);
|
|
58
60
|
} finally {
|
|
@@ -61,6 +63,11 @@ const withTempHome = async (fn: (homeDir: string) => Promise<void>) => {
|
|
|
61
63
|
} else {
|
|
62
64
|
process.env.HOME = originalHome;
|
|
63
65
|
}
|
|
66
|
+
if (originalUserProfile === undefined) {
|
|
67
|
+
delete process.env.USERPROFILE;
|
|
68
|
+
} else {
|
|
69
|
+
process.env.USERPROFILE = originalUserProfile;
|
|
70
|
+
}
|
|
64
71
|
await rm(homeDir, { recursive: true, force: true });
|
|
65
72
|
}
|
|
66
73
|
};
|
|
@@ -64,7 +64,7 @@ const writeCodexTranscript = async (
|
|
|
64
64
|
return filePath;
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
test('Codex synchronizer preserves the title assigned when
|
|
67
|
+
test('Codex synchronizer preserves the title assigned when WindCli creates a session', { concurrency: false }, async () => {
|
|
68
68
|
const tempRoot = await mkdtemp(path.join(os.tmpdir(), 'codex-session-sync-app-'));
|
|
69
69
|
const workspacePath = path.join(tempRoot, 'workspace');
|
|
70
70
|
await mkdir(workspacePath, { recursive: true });
|
|
@@ -470,14 +470,14 @@ const seedOpenCodeSession = async (
|
|
|
470
470
|
}
|
|
471
471
|
};
|
|
472
472
|
|
|
473
|
-
test('OpenCode synchronizer preserves the title assigned when
|
|
473
|
+
test('OpenCode synchronizer preserves the title assigned when WindCli creates a session', { concurrency: false }, async () => {
|
|
474
474
|
const tempRoot = await mkdtemp(path.join(os.tmpdir(), 'opencode-session-sync-app-'));
|
|
475
475
|
const workspacePath = path.join(tempRoot, 'workspace');
|
|
476
476
|
await mkdir(workspacePath, { recursive: true });
|
|
477
477
|
const restoreHomeDir = patchHomeDir(tempRoot);
|
|
478
478
|
|
|
479
479
|
try {
|
|
480
|
-
// Both provider-owned values differ from the
|
|
480
|
+
// Both provider-owned values differ from the WindCli title so either one
|
|
481
481
|
// leaking through would change the assertion below.
|
|
482
482
|
await seedOpenCodeSession(tempRoot, workspacePath, {
|
|
483
483
|
sessionId: 'oc-app-1',
|
|
@@ -54,7 +54,7 @@ async function withProviderServer(
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
test('session creation route names a
|
|
57
|
+
test('session creation route names a WindCli session from the initial message', async () => {
|
|
58
58
|
await withProviderServer(async (baseUrl, workspacePath) => {
|
|
59
59
|
const response = await fetch(`${baseUrl}/api/providers/sessions`, {
|
|
60
60
|
method: 'POST',
|
|
@@ -33,7 +33,7 @@ export function createSystemUpdateService(dependencies: SystemUpdateDependencies
|
|
|
33
33
|
? 'npm run update:platform'
|
|
34
34
|
: dependencies.installMode === 'git'
|
|
35
35
|
? 'git checkout main && git pull && npm install'
|
|
36
|
-
: 'npm install -g
|
|
36
|
+
: 'npm install -g wind-agent-cli@latest';
|
|
37
37
|
const workingDirectory = dependencies.isPlatform || dependencies.installMode === 'git'
|
|
38
38
|
? dependencies.appRoot
|
|
39
39
|
: dependencies.homeDirectory;
|
|
@@ -59,7 +59,7 @@ test('global npm installations update from the user home directory', async () =>
|
|
|
59
59
|
const result = await service.updateSystem();
|
|
60
60
|
|
|
61
61
|
assert.deepEqual(calls, [[
|
|
62
|
-
'npm install -g
|
|
62
|
+
'npm install -g wind-agent-cli@latest',
|
|
63
63
|
'/home/cloudcli',
|
|
64
64
|
dependencies.environment,
|
|
65
65
|
]]);
|
|
@@ -102,9 +102,10 @@ export function createTaskmasterRouter(dependencies: TaskmasterRouterDependencie
|
|
|
102
102
|
async function checkTaskMasterInstallation() {
|
|
103
103
|
return new Promise((resolve) => {
|
|
104
104
|
// Check if task-master command is available
|
|
105
|
-
const
|
|
105
|
+
const locator = process.platform === 'win32' ? 'where.exe' : 'which';
|
|
106
|
+
const child = spawn(locator, ['task-master'], {
|
|
106
107
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
107
|
-
shell:
|
|
108
|
+
shell: false
|
|
108
109
|
});
|
|
109
110
|
|
|
110
111
|
let output = '';
|
|
@@ -123,7 +124,7 @@ export function createTaskmasterRouter(dependencies: TaskmasterRouterDependencie
|
|
|
123
124
|
// TaskMaster is installed, get version
|
|
124
125
|
const versionChild = spawn('task-master', ['--version'], {
|
|
125
126
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
126
|
-
shell:
|
|
127
|
+
shell: false
|
|
127
128
|
});
|
|
128
129
|
|
|
129
130
|
let versionOutput = '';
|
|
@@ -315,7 +315,7 @@ function buildShellEnvironment(
|
|
|
315
315
|
|
|
316
316
|
if (readString(message.shellMode) === 'herdr') {
|
|
317
317
|
// The web terminal is a new Herdr client, not a pane nested inside the
|
|
318
|
-
// Herdr pane that may have launched
|
|
318
|
+
// Herdr pane that may have launched WindCli. Keep HERDR_SOCKET_PATH so it
|
|
319
319
|
// attaches to the running session, but remove inherited pane identity.
|
|
320
320
|
HERDR_PANE_ENVIRONMENT_KEYS.forEach((key) => delete environment[key]);
|
|
321
321
|
}
|
|
@@ -89,7 +89,7 @@ async function readLastCommit(
|
|
|
89
89
|
/**
|
|
90
90
|
* Builds the full Worktrees panel payload for the repository containing
|
|
91
91
|
* `projectPath`: every worktree with dirty count, ahead/behind vs the base
|
|
92
|
-
* branch, last commit info, and the linked
|
|
92
|
+
* branch, last commit info, and the linked WindCli project (when registered).
|
|
93
93
|
*/
|
|
94
94
|
export async function listWorktrees(
|
|
95
95
|
input: ListWorktreesInput,
|
|
@@ -26,7 +26,7 @@ function mapRowToProjectView(row: ProjectRepositoryRow): WorktreeProjectView {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
* Ensures a
|
|
29
|
+
* Ensures a WindCli project exists (and is active) for a worktree directory
|
|
30
30
|
* and returns it, so the caller can switch the UI into that worktree.
|
|
31
31
|
*
|
|
32
32
|
* The path is only accepted when it is a registered worktree of the repository
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Removes a linked worktree (never the main one), optionally deletes its
|
|
16
|
-
* branch, and archives the
|
|
16
|
+
* branch, and archives the WindCli project registered for the directory so it
|
|
17
17
|
* disappears from the sidebar while its chat history stays recoverable.
|
|
18
18
|
*/
|
|
19
19
|
export async function removeWorktree(
|
|
@@ -60,7 +60,7 @@ export interface IProvider {
|
|
|
60
60
|
/**
|
|
61
61
|
* Model catalog contract for one provider.
|
|
62
62
|
*
|
|
63
|
-
* Implementations supply
|
|
63
|
+
* Implementations supply WindCli's curated predefined models and can inspect
|
|
64
64
|
* provider-native session state. The Providers service merges these immutable
|
|
65
65
|
* source-controlled definitions with user-created SQLite rows at read time.
|
|
66
66
|
*/
|
package/server/shared/types.ts
CHANGED
|
@@ -77,7 +77,7 @@ export type ProviderModelOption = {
|
|
|
77
77
|
description?: string;
|
|
78
78
|
/** Stable SQLite row id used only by model-management actions. */
|
|
79
79
|
recordId?: number;
|
|
80
|
-
/** True for user-created rows; false for immutable
|
|
80
|
+
/** True for user-created rows; false for immutable WindCli defaults. */
|
|
81
81
|
isCustom?: boolean;
|
|
82
82
|
effort?: {
|
|
83
83
|
default?: string;
|
|
@@ -302,7 +302,7 @@ export type ProviderRuntimeWriter = {
|
|
|
302
302
|
*
|
|
303
303
|
* The Codex JSON-RPC client emits this shape to its runtime adapter. Method and
|
|
304
304
|
* parameter validation stays in the adapter because the protocol can add new
|
|
305
|
-
* notification variants independently of
|
|
305
|
+
* notification variants independently of WindCli releases.
|
|
306
306
|
*/
|
|
307
307
|
export type CodexAppServerNotification = {
|
|
308
308
|
method: string;
|
|
@@ -313,7 +313,7 @@ export type CodexAppServerNotification = {
|
|
|
313
313
|
* Server-initiated Codex JSON-RPC request that may require a UI response.
|
|
314
314
|
*
|
|
315
315
|
* The Codex client forwards approval-capable requests to the runtime while it
|
|
316
|
-
* rejects request methods that
|
|
316
|
+
* rejects request methods that WindCli does not implement.
|
|
317
317
|
*/
|
|
318
318
|
export type CodexAppServerRequest = {
|
|
319
319
|
id: number;
|
|
@@ -723,7 +723,7 @@ export type WorktreePorcelainEntry = {
|
|
|
723
723
|
*
|
|
724
724
|
* Extends the porcelain entry with everything the Worktrees panel renders:
|
|
725
725
|
* dirty-file count, ahead/behind relative to the base branch (the branch
|
|
726
|
-
* checked out in the main worktree), last-commit metadata, and the
|
|
726
|
+
* checked out in the main worktree), last-commit metadata, and the WindCli
|
|
727
727
|
* project row linked to the worktree directory (if one was registered).
|
|
728
728
|
*/
|
|
729
729
|
export type WorktreeDescriptor = {
|
|
@@ -802,7 +802,7 @@ export type CreateAndOpenWorktreeResult = CreateWorktreeResult & {
|
|
|
802
802
|
};
|
|
803
803
|
|
|
804
804
|
/**
|
|
805
|
-
* Input accepted when registering an existing worktree as a
|
|
805
|
+
* Input accepted when registering an existing worktree as a WindCli project.
|
|
806
806
|
*
|
|
807
807
|
* The service verifies that `worktreePath` belongs to the repository containing
|
|
808
808
|
* `projectPath` before it creates or restores any project record.
|
|
@@ -813,7 +813,7 @@ export type OpenWorktreeInput = {
|
|
|
813
813
|
};
|
|
814
814
|
|
|
815
815
|
/**
|
|
816
|
-
* Project view returned after a worktree is opened in
|
|
816
|
+
* Project view returned after a worktree is opened in WindCli.
|
|
817
817
|
*
|
|
818
818
|
* This deliberately mirrors the project-selection payload used by the Projects
|
|
819
819
|
* module so the frontend can switch to the worktree without another lookup.
|