@cloudcli-ai/cloudcli 1.37.2 → 1.37.4
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 +269 -0
- package/dist/assets/{abnfDiagram-N423BO3Z-C4UAoHJb.js → abnfDiagram-N423BO3Z-Dmkwx38H.js} +1 -1
- package/dist/assets/{arc-B8jF-ja9.js → arc-DLe9AYuO.js} +1 -1
- package/dist/assets/{architectureDiagram-T3A2C74G-C_Wur_CU.js → architectureDiagram-T3A2C74G-CBbbbNUW.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-Cq4P1i8t.js → blockDiagram-VBNYF7ZC-CaMEaWu4.js} +1 -1
- package/dist/assets/{c4Diagram-5PPSVZJV-C1wG4eUj.js → c4Diagram-5PPSVZJV-DhjMgNnR.js} +1 -1
- package/dist/assets/channel-CWrmwsir.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-B8fnBG6E.js → chunk-2GRJ4B5K-yjl3-F-i.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-WdfPooPJ.js → chunk-2Q5K7J3B-DsAYaWEP.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-DhZJuG2E.js → chunk-5RXB4S5H-Bt5qmqOX.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-B0rjslal.js → chunk-5VM5RSS4-yWrWVvUt.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-CG2Oj4jL.js → chunk-6Q2QTUOP-Dt66K5xb.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-rrl2lRxY.js → chunk-GF5L2VYU-DA0vzaj4.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-CjVbrVMA.js → chunk-JWPE2WC7-CUkbx96V.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-CRzKgU8S.js → chunk-KBJHAD2P-DWKxx1WH.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-DBz4GTZF.js → chunk-RYQCIY6F-BqluplN0.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-wHxalsXk.js → chunk-XXDRQBXY-DelKg3Xf.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-COAGCC6w.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-COAGCC6w.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-s1hygY8e.js → cose-bilkent-JH36ORCC-DHV93-Em.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-C4LGV15i.js → cynefin-VYW2F7L2-B9HZgoGX.js} +1 -1
- package/dist/assets/{cynefinDiagram-MW4NZA55-C5uhu7B3.js → cynefinDiagram-MW4NZA55-hFjjEQg8.js} +1 -1
- package/dist/assets/{dagre-VZM6K2ZE-B-OBTewm.js → dagre-VZM6K2ZE-CpeVOC7V.js} +1 -1
- package/dist/assets/{diagram-7IWD3JNH-BjGKQxih.js → diagram-7IWD3JNH-D0H1UoRA.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-BMKz1X2L.js → diagram-B4RE2ZJO-6Y7BQUup.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-DNh-GhKC.js → diagram-LBJQPF4R-C0nNOwht.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-BaTG9jPT.js → diagram-Q27KOJAE-En6QlOVX.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-BUwo2OvJ.js → diagram-UB23O5K3-CmPiNeGD.js} +1 -1
- package/dist/assets/{ebnfDiagram-BXEA7PRR-DAZgfzX2.js → ebnfDiagram-BXEA7PRR-Bygzp1Qt.js} +1 -1
- package/dist/assets/{erDiagram-JOGREHBK-1w1CcGEb.js → erDiagram-JOGREHBK-CwScRfzl.js} +1 -1
- package/dist/assets/{flowDiagram-UKHOOZJN-D4EII8Jj.js → flowDiagram-UKHOOZJN-bKX-0xP6.js} +1 -1
- package/dist/assets/{ganttDiagram-PKOTCBZU-ChvJZAgB.js → ganttDiagram-PKOTCBZU-DtZPKXGd.js} +1 -1
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-DtOn41S8.js → gitGraphDiagram-DS77QQ5N-CUOtdL1o.js} +1 -1
- package/dist/assets/index-CdjIFxM2.js +5004 -0
- package/dist/assets/index-DgafhGTF.css +32 -0
- package/dist/assets/{infoDiagram-6WML65LV-DN_PVEJZ.js → infoDiagram-6WML65LV-ciRQTS0h.js} +1 -1
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-DbkF1kXb.js → ishikawaDiagram-WSZJBQD7-CgjhQZ84.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-pJwmhddE.js → journeyDiagram-NVQOT4AX-BsbQSeIW.js} +1 -1
- package/dist/assets/{kanban-definition-27J2QSJJ-PPAPgNp5.js → kanban-definition-27J2QSJJ-CrwzY9Jw.js} +1 -1
- package/dist/assets/{linear-iPR-J9f7.js → linear-BUaCDr6l.js} +1 -1
- package/dist/assets/{mermaid.core-BEUL86Z6.js → mermaid.core-ClgdUU0j.js} +5 -5
- package/dist/assets/{mindmap-definition-FAOFIHXS-BvZoBib7.js → mindmap-definition-FAOFIHXS-BictljY1.js} +1 -1
- package/dist/assets/{pegDiagram-VL7TDLO6-DhYreaUd.js → pegDiagram-VL7TDLO6-BXdByy_U.js} +1 -1
- package/dist/assets/{pieDiagram-7S7Q4E2Y-CrOHlyD0.js → pieDiagram-7S7Q4E2Y-uZsMfkRX.js} +1 -1
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-D4g5yH3t.js → quadrantDiagram-CIZ2JOQS-7lCv4QIj.js} +1 -1
- package/dist/assets/{railroadDiagram-AXF67PYL-Dj39lHlf.js → railroadDiagram-AXF67PYL-07dxIWbi.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-1AS4Zgm_.js → requirementDiagram-LRYGKXZP-Cb31Yv1_.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-CKlMn19P.js → sankeyDiagram-W5VNT64P-X0YPSyF9.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-B_j3qyvo.js → sequenceDiagram-SI44F4Z6-BdBxSIlP.js} +1 -1
- package/dist/assets/server.browser-CtX3Hdl5.js +27 -0
- package/dist/assets/{sizeCapture-X5ZJPWSS-Bp2Op16v.js → sizeCapture-X5ZJPWSS-DQM5xAyD.js} +1 -1
- package/dist/assets/{stateDiagram-OKZ733FA-C0cN6DoY.js → stateDiagram-OKZ733FA-DJ3xkLUF.js} +1 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-vAaE4zNo.js +1 -0
- package/dist/assets/{swimlanes-SLNWSIFB-BEvXOV9b.js → swimlanes-SLNWSIFB-rjfYdW0w.js} +2 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-TV2IF4Nq.js +8 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-zdJQinvZ.js → timeline-definition-Z64GVDOM-DZMra5do.js} +1 -1
- package/dist/assets/{vendor-codemirror-OwyKSvPE.js → vendor-codemirror-CYrSt7-U.js} +18 -18
- package/dist/assets/{vennDiagram-T6HMQDX7-DuF1uZMY.js → vennDiagram-T6HMQDX7-BevD8uu0.js} +1 -1
- package/dist/assets/{wardleyDiagram-T6FBY63Y-B9AlLQup.js → wardleyDiagram-T6FBY63Y-DsIyXB7z.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M-DTJX48Qg.js → xychartDiagram-ELKLHX3M-G3PlF3ko.js} +1 -1
- package/dist/index.html +3 -3
- package/dist-server/server/index.js +11 -4
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/modules/agent/agent.module.js +9 -2
- package/dist-server/server/modules/agent/agent.module.js.map +1 -1
- package/dist-server/server/modules/agent/agent.routes.js +177 -130
- package/dist-server/server/modules/agent/agent.routes.js.map +1 -1
- package/dist-server/server/modules/agent/tests/agent-run-registration.test.js +306 -0
- package/dist-server/server/modules/agent/tests/agent-run-registration.test.js.map +1 -0
- package/dist-server/server/modules/agent/tests/agent.routes.test.js +48 -2
- package/dist-server/server/modules/agent/tests/agent.routes.test.js.map +1 -1
- package/dist-server/server/modules/browser-use/browser-use.routes.js +39 -33
- package/dist-server/server/modules/browser-use/browser-use.routes.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/index.js +5 -0
- package/dist-server/server/modules/database/index.js.map +1 -1
- package/dist-server/server/modules/database/migrations.js +45 -1
- package/dist-server/server/modules/database/migrations.js.map +1 -1
- package/dist-server/server/modules/database/repositories/provider-models.js +60 -6
- package/dist-server/server/modules/database/repositories/provider-models.js.map +1 -1
- package/dist-server/server/modules/database/repositories/scheduled-messages.db.js +71 -0
- package/dist-server/server/modules/database/repositories/scheduled-messages.db.js.map +1 -0
- package/dist-server/server/modules/database/repositories/session-drafts.db.js +105 -0
- package/dist-server/server/modules/database/repositories/session-drafts.db.js.map +1 -0
- package/dist-server/server/modules/database/repositories/sessions.db.js +144 -5
- package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
- package/dist-server/server/modules/database/repositories/user-preferences.db.js +65 -0
- package/dist-server/server/modules/database/repositories/user-preferences.db.js.map +1 -0
- package/dist-server/server/modules/database/schema.js +99 -0
- package/dist-server/server/modules/database/schema.js.map +1 -1
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +99 -0
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +39 -0
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/user-preferences.db.integration.test.js +105 -0
- package/dist-server/server/modules/database/tests/user-preferences.db.integration.test.js.map +1 -0
- package/dist-server/server/modules/file-tree/file-tree.module.js +2 -1
- package/dist-server/server/modules/file-tree/file-tree.module.js.map +1 -1
- package/dist-server/server/modules/file-tree/file-tree.service.js +44 -7
- package/dist-server/server/modules/file-tree/file-tree.service.js.map +1 -1
- package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js +126 -1
- package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js.map +1 -1
- package/dist-server/server/modules/git/git-branch-diff.service.js +142 -0
- package/dist-server/server/modules/git/git-branch-diff.service.js.map +1 -0
- package/dist-server/server/modules/git/git-branch.service.js.map +1 -1
- package/dist-server/server/modules/git/git.routes.js +92 -5
- package/dist-server/server/modules/git/git.routes.js.map +1 -1
- package/dist-server/server/modules/git/tests/git-branch-diff.service.test.js +160 -0
- package/dist-server/server/modules/git/tests/git-branch-diff.service.test.js.map +1 -0
- package/dist-server/server/modules/projects/project-clone.routes.js +108 -0
- package/dist-server/server/modules/projects/project-clone.routes.js.map +1 -0
- package/dist-server/server/modules/projects/projects.routes.js +13 -66
- package/dist-server/server/modules/projects/projects.routes.js.map +1 -1
- package/dist-server/server/modules/projects/services/project-clone-request.service.js +36 -0
- package/dist-server/server/modules/projects/services/project-clone-request.service.js.map +1 -0
- package/dist-server/server/modules/projects/services/project-clone.service.js +86 -32
- package/dist-server/server/modules/projects/services/project-clone.service.js.map +1 -1
- package/dist-server/server/modules/projects/services/project-delete.service.js +12 -1
- package/dist-server/server/modules/projects/services/project-delete.service.js.map +1 -1
- package/dist-server/server/modules/projects/services/project-star.service.js +2 -2
- package/dist-server/server/modules/projects/services/project-star.service.js.map +1 -1
- package/dist-server/server/modules/projects/tests/project-clone.routes.test.js +191 -0
- package/dist-server/server/modules/projects/tests/project-clone.routes.test.js.map +1 -0
- package/dist-server/server/modules/projects/tests/project-clone.service.test.js +275 -0
- package/dist-server/server/modules/projects/tests/project-clone.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/index.js +3 -0
- package/dist-server/server/modules/providers/index.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js +62 -9
- package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-fork.provider.js +46 -0
- package/dist-server/server/modules/providers/list/claude/claude-fork.provider.js.map +1 -0
- package/dist-server/server/modules/providers/list/claude/claude-models.provider.js +31 -12
- package/dist-server/server/modules/providers/list/claude/claude-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js +472 -53
- package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js +38 -11
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +1007 -60
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js +4 -1
- package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude.provider.js +2 -0
- package/dist-server/server/modules/providers/list/claude/claude.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +204 -0
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -0
- package/dist-server/server/modules/providers/list/codex/codex-fork.provider.js +32 -0
- package/dist-server/server/modules/providers/list/codex/codex-fork.provider.js.map +1 -0
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +47 -0
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js +71 -53
- package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +8 -0
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +1621 -431
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex.provider.js +2 -0
- package/dist-server/server/modules/providers/list/codex/codex.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js +9 -2
- package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-runtime.provider.js +16 -8
- package/dist-server/server/modules/providers/list/cursor/cursor-runtime.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 +274 -9
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.js +5 -2
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +19 -2
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/provider.routes.js +134 -2
- package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
- package/dist-server/server/modules/providers/services/claude-cli-liveness.service.js +100 -0
- package/dist-server/server/modules/providers/services/claude-cli-liveness.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/claude-settings-permissions.service.js +97 -0
- package/dist-server/server/modules/providers/services/claude-settings-permissions.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js +23 -1
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-models.service.js +59 -5
- package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-runtime.service.js +8 -0
- package/dist-server/server/modules/providers/services/provider-runtime.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-token-usage.service.js +139 -35
- package/dist-server/server/modules/providers/services/provider-token-usage.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/session-conversations-search.service.js +2 -4
- package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/session-history-cache.service.js +91 -0
- package/dist-server/server/modules/providers/services/session-history-cache.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/session-synchronizer.service.js +105 -32
- package/dist-server/server/modules/providers/services/session-synchronizer.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js +3 -60
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions.service.js +252 -12
- package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
- package/dist-server/server/modules/providers/tests/claude-auth.test.js +183 -0
- package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/claude-background-work.test.js +172 -0
- package/dist-server/server/modules/providers/tests/claude-background-work.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-compaction.test.js +84 -0
- package/dist-server/server/modules/providers/tests/claude-compaction.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-message-model.test.js +123 -0
- package/dist-server/server/modules/providers/tests/claude-message-model.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-models.test.js +39 -0
- package/dist-server/server/modules/providers/tests/claude-models.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-runtime-hold.test.js +265 -0
- package/dist-server/server/modules/providers/tests/claude-runtime-hold.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-sessions.test.js +1815 -33
- package/dist-server/server/modules/providers/tests/claude-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/claude-settings-permissions.test.js +228 -0
- package/dist-server/server/modules/providers/tests/claude-settings-permissions.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-subagent-echo.test.js +16 -0
- package/dist-server/server/modules/providers/tests/claude-subagent-echo.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/claude-token-budget.test.js +85 -0
- package/dist-server/server/modules/providers/tests/claude-token-budget.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-message-editing.test.js +338 -0
- package/dist-server/server/modules/providers/tests/codex-message-editing.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-models.test.js +25 -0
- package/dist-server/server/modules/providers/tests/codex-models.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-runtime.test.js +83 -0
- package/dist-server/server/modules/providers/tests/codex-runtime.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-session-fork.test.js +54 -0
- package/dist-server/server/modules/providers/tests/codex-session-fork.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js +354 -15
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/cursor-auth.test.js +167 -0
- package/dist-server/server/modules/providers/tests/cursor-auth.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/opencode-models.test.js +196 -4
- package/dist-server/server/modules/providers/tests/opencode-models.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +19 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider-capabilities.service.test.js +30 -0
- package/dist-server/server/modules/providers/tests/provider-capabilities.service.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js +79 -1
- package/dist-server/server/modules/providers/tests/provider-models.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +164 -1
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js +190 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/session-fork.test.js +113 -0
- package/dist-server/server/modules/providers/tests/session-fork.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/session-history-cache.service.test.js +139 -0
- package/dist-server/server/modules/providers/tests/session-history-cache.service.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/session-orphan-prune.test.js +90 -0
- package/dist-server/server/modules/providers/tests/session-orphan-prune.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/session-synchronizer-coalescing.test.js +122 -0
- package/dist-server/server/modules/providers/tests/session-synchronizer-coalescing.test.js.map +1 -0
- package/dist-server/server/modules/providers/tests/sessions.service.test.js +219 -1
- package/dist-server/server/modules/providers/tests/sessions.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/skills.test.js +15 -3
- package/dist-server/server/modules/providers/tests/skills.test.js.map +1 -1
- package/dist-server/server/modules/scheduled-messages/index.js +5 -0
- package/dist-server/server/modules/scheduled-messages/index.js.map +1 -0
- package/dist-server/server/modules/scheduled-messages/scheduled-messages.routes.js +47 -0
- package/dist-server/server/modules/scheduled-messages/scheduled-messages.routes.js.map +1 -0
- package/dist-server/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.js +175 -0
- package/dist-server/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.js.map +1 -0
- package/dist-server/server/modules/scheduled-messages/services/scheduled-messages.service.js +95 -0
- package/dist-server/server/modules/scheduled-messages/services/scheduled-messages.service.js.map +1 -0
- package/dist-server/server/modules/scheduled-messages/tests/scheduled-messages.test.js +290 -0
- package/dist-server/server/modules/scheduled-messages/tests/scheduled-messages.test.js.map +1 -0
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js +23 -23
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -1
- package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js +48 -0
- package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js.map +1 -1
- package/dist-server/server/modules/user/tests/user.service.test.js +70 -0
- package/dist-server/server/modules/user/tests/user.service.test.js.map +1 -1
- package/dist-server/server/modules/user/user.module.js +10 -1
- package/dist-server/server/modules/user/user.module.js.map +1 -1
- package/dist-server/server/modules/user/user.routes.js +44 -0
- package/dist-server/server/modules/user/user.routes.js.map +1 -1
- package/dist-server/server/modules/user/user.service.js +75 -0
- package/dist-server/server/modules/user/user.service.js.map +1 -1
- package/dist-server/server/modules/voice/tests/voice.service.test.js +3 -2
- package/dist-server/server/modules/voice/tests/voice.service.test.js.map +1 -1
- package/dist-server/server/modules/websocket/index.js +7 -0
- package/dist-server/server/modules/websocket/index.js.map +1 -1
- package/dist-server/server/modules/websocket/services/chat-run-registry.service.js +37 -49
- package/dist-server/server/modules/websocket/services/chat-run-registry.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/chat-session-writer.service.js +35 -5
- package/dist-server/server/modules/websocket/services/chat-session-writer.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js +204 -10
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/session-upsert-broadcast.service.js +94 -0
- package/dist-server/server/modules/websocket/services/session-upsert-broadcast.service.js.map +1 -0
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js +236 -20
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/chat-background-subscribe.test.js +137 -0
- package/dist-server/server/modules/websocket/tests/chat-background-subscribe.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/chat-edit-send.test.js +263 -0
- package/dist-server/server/modules/websocket/tests/chat-edit-send.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js +29 -3
- package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/chat-stop-task.test.js +96 -0
- package/dist-server/server/modules/websocket/tests/chat-stop-task.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/session-upsert-broadcast.test.js +106 -0
- package/dist-server/server/modules/websocket/tests/session-upsert-broadcast.test.js.map +1 -0
- package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js +500 -0
- package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js.map +1 -1
- package/dist-server/server/shared/claude-cli-path.js +22 -5
- package/dist-server/server/shared/claude-cli-path.js.map +1 -1
- package/dist-server/server/shared/index.js +3 -0
- package/dist-server/server/shared/index.js.map +1 -0
- package/dist-server/server/shared/message-unification.js +376 -0
- package/dist-server/server/shared/message-unification.js.map +1 -0
- package/dist-server/server/shared/tests/claude-cli-path.test.js +45 -1
- package/dist-server/server/shared/tests/claude-cli-path.test.js.map +1 -1
- package/dist-server/server/shared/tests/message-unification.test.js +174 -0
- package/dist-server/server/shared/tests/message-unification.test.js.map +1 -0
- package/dist-server/server/shared/tests/read-only-roots.test.js +124 -0
- package/dist-server/server/shared/tests/read-only-roots.test.js.map +1 -0
- package/dist-server/server/shared/tests/strip-ansi-sequences.test.js +31 -0
- package/dist-server/server/shared/tests/strip-ansi-sequences.test.js.map +1 -0
- package/dist-server/server/shared/utils.js +160 -0
- package/dist-server/server/shared/utils.js.map +1 -1
- package/electron/desktopWindow.js +6 -0
- package/electron/viewHost.js +25 -2
- package/package.json +20 -17
- package/server/index.ts +16 -5
- package/server/modules/agent/agent.module.ts +11 -1
- package/server/modules/agent/agent.routes.ts +200 -142
- package/server/modules/agent/tests/agent-run-registration.test.ts +348 -0
- package/server/modules/agent/tests/agent.routes.test.ts +51 -2
- package/server/modules/browser-use/browser-use.routes.ts +96 -33
- package/server/modules/database/connection.ts +2 -1
- package/server/modules/database/index.ts +10 -0
- package/server/modules/database/migrations.ts +51 -0
- package/server/modules/database/repositories/provider-models.ts +79 -6
- package/server/modules/database/repositories/scheduled-messages.db.ts +127 -0
- package/server/modules/database/repositories/session-drafts.db.ts +171 -0
- package/server/modules/database/repositories/sessions.db.ts +204 -3
- package/server/modules/database/repositories/user-preferences.db.ts +80 -0
- package/server/modules/database/schema.ts +103 -0
- package/server/modules/database/tests/provider-models.db.integration.test.ts +113 -0
- package/server/modules/database/tests/sessions.db.integration.test.ts +52 -0
- package/server/modules/database/tests/user-preferences.db.integration.test.ts +135 -0
- package/server/modules/file-tree/file-tree.module.ts +2 -1
- package/server/modules/file-tree/file-tree.service.ts +49 -7
- package/server/modules/file-tree/tests/file-tree.service.test.ts +163 -1
- package/server/modules/git/git-branch-diff.service.ts +204 -0
- package/server/modules/git/git-branch.service.ts +2 -12
- package/server/modules/git/git.routes.ts +100 -6
- package/server/modules/git/tests/git-branch-diff.service.test.ts +210 -0
- package/server/modules/projects/project-clone.routes.ts +142 -0
- package/server/modules/projects/projects.routes.ts +16 -81
- package/server/modules/projects/services/project-clone-request.service.ts +56 -0
- package/server/modules/projects/services/project-clone.service.ts +102 -34
- package/server/modules/projects/services/project-delete.service.ts +13 -1
- package/server/modules/projects/services/project-star.service.ts +2 -2
- package/server/modules/projects/tests/project-clone.routes.test.ts +246 -0
- package/server/modules/projects/tests/project-clone.service.test.ts +376 -0
- package/server/modules/providers/index.ts +4 -0
- package/server/modules/providers/list/claude/claude-auth.provider.ts +81 -11
- package/server/modules/providers/list/claude/claude-fork.provider.ts +57 -0
- package/server/modules/providers/list/claude/claude-models.provider.ts +37 -17
- package/server/modules/providers/list/claude/claude-runtime.provider.js +510 -54
- package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +40 -14
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +1195 -63
- package/server/modules/providers/list/claude/claude-skills.provider.ts +4 -1
- package/server/modules/providers/list/claude/claude.provider.ts +3 -0
- package/server/modules/providers/list/codex/codex-app-server.client.ts +243 -0
- package/server/modules/providers/list/codex/codex-fork.provider.ts +40 -0
- package/server/modules/providers/list/codex/codex-models.provider.ts +47 -0
- package/server/modules/providers/list/codex/{codex-runtime.provider.js → codex-runtime.provider.ts} +105 -70
- package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +9 -0
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +1847 -455
- package/server/modules/providers/list/codex/codex.provider.ts +3 -0
- package/server/modules/providers/list/cursor/cursor-auth.provider.ts +10 -2
- package/server/modules/providers/list/cursor/cursor-runtime.provider.js +17 -8
- package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +0 -1
- package/server/modules/providers/list/opencode/opencode-models.provider.ts +297 -9
- package/server/modules/providers/list/opencode/opencode-runtime.provider.js +5 -2
- package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +30 -2
- package/server/modules/providers/provider.routes.ts +162 -2
- package/server/modules/providers/services/claude-cli-liveness.service.ts +121 -0
- package/server/modules/providers/services/claude-settings-permissions.service.ts +127 -0
- package/server/modules/providers/services/provider-capabilities.service.ts +40 -1
- package/server/modules/providers/services/provider-models.service.ts +71 -4
- package/server/modules/providers/services/provider-runtime.service.ts +11 -0
- package/server/modules/providers/services/provider-token-usage.service.ts +166 -39
- package/server/modules/providers/services/session-conversations-search.service.ts +2 -5
- package/server/modules/providers/services/session-history-cache.service.ts +150 -0
- package/server/modules/providers/services/session-synchronizer.service.ts +125 -38
- package/server/modules/providers/services/sessions-watcher.service.ts +3 -64
- package/server/modules/providers/services/sessions.service.ts +309 -17
- package/server/modules/providers/tests/claude-auth.test.ts +208 -0
- package/server/modules/providers/tests/claude-background-work.test.ts +213 -0
- package/server/modules/providers/tests/claude-compaction.test.ts +101 -0
- package/server/modules/providers/tests/claude-message-model.test.ts +160 -0
- package/server/modules/providers/tests/claude-models.test.ts +87 -0
- package/server/modules/providers/tests/claude-runtime-hold.test.ts +309 -0
- package/server/modules/providers/tests/claude-sessions.test.ts +2167 -37
- package/server/modules/providers/tests/claude-settings-permissions.test.ts +271 -0
- package/server/modules/providers/tests/claude-subagent-echo.test.ts +25 -0
- package/server/modules/providers/tests/claude-token-budget.test.ts +104 -0
- package/server/modules/providers/tests/codex-message-editing.test.ts +419 -0
- package/server/modules/providers/tests/codex-models.test.ts +37 -0
- package/server/modules/providers/tests/codex-runtime.test.ts +94 -0
- package/server/modules/providers/tests/codex-session-fork.test.ts +59 -0
- package/server/modules/providers/tests/codex-sessions.test.ts +396 -15
- package/server/modules/providers/tests/cursor-auth.test.ts +187 -0
- package/server/modules/providers/tests/opencode-models.test.ts +266 -8
- package/server/modules/providers/tests/opencode-sessions.test.ts +40 -1
- package/server/modules/providers/tests/provider-capabilities.service.test.ts +37 -0
- package/server/modules/providers/tests/provider-models.service.test.ts +99 -1
- package/server/modules/providers/tests/provider-token-usage.service.test.ts +188 -1
- package/server/modules/providers/tests/provider.routes.test.ts +230 -1
- package/server/modules/providers/tests/session-fork.test.ts +173 -0
- package/server/modules/providers/tests/session-history-cache.service.test.ts +165 -0
- package/server/modules/providers/tests/session-orphan-prune.test.ts +107 -0
- package/server/modules/providers/tests/session-synchronizer-coalescing.test.ts +136 -0
- package/server/modules/providers/tests/sessions.service.test.ts +303 -1
- package/server/modules/providers/tests/skills.test.ts +21 -5
- package/server/modules/scheduled-messages/index.ts +8 -0
- package/server/modules/scheduled-messages/scheduled-messages.routes.ts +68 -0
- package/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.ts +216 -0
- package/server/modules/scheduled-messages/services/scheduled-messages.service.ts +121 -0
- package/server/modules/scheduled-messages/tests/scheduled-messages.test.ts +354 -0
- package/server/modules/taskmaster/taskmaster.routes.ts +23 -33
- package/server/modules/taskmaster/tests/taskmaster.routes.test.ts +57 -0
- package/server/modules/user/tests/user.service.test.ts +90 -0
- package/server/modules/user/user.module.ts +10 -1
- package/server/modules/user/user.routes.ts +44 -0
- package/server/modules/user/user.service.ts +105 -0
- package/server/modules/voice/tests/voice.service.test.ts +3 -2
- package/server/modules/websocket/README.md +4 -2
- package/server/modules/websocket/index.ts +8 -0
- package/server/modules/websocket/services/chat-run-registry.service.ts +45 -54
- package/server/modules/websocket/services/chat-session-writer.service.ts +36 -6
- package/server/modules/websocket/services/chat-websocket.service.ts +302 -16
- package/server/modules/websocket/services/session-upsert-broadcast.service.ts +108 -0
- package/server/modules/websocket/services/shell-websocket.service.ts +276 -22
- package/server/modules/websocket/tests/chat-background-subscribe.test.ts +167 -0
- package/server/modules/websocket/tests/chat-edit-send.test.ts +309 -0
- package/server/modules/websocket/tests/chat-run-registry.test.ts +34 -3
- package/server/modules/websocket/tests/chat-stop-task.test.ts +127 -0
- package/server/modules/websocket/tests/session-upsert-broadcast.test.ts +138 -0
- package/server/modules/websocket/tests/shell-websocket.service.test.ts +629 -0
- package/server/shared/claude-cli-path.ts +24 -6
- package/server/shared/index.ts +3 -0
- package/server/shared/interfaces.ts +91 -0
- package/server/shared/message-unification.ts +449 -0
- package/server/shared/tests/claude-cli-path.test.ts +58 -1
- package/server/shared/tests/message-unification.test.ts +218 -0
- package/server/shared/tests/read-only-roots.test.ts +139 -0
- package/server/shared/tests/strip-ansi-sequences.test.ts +42 -0
- package/server/shared/types.ts +382 -7
- package/server/shared/utils.ts +176 -0
- package/dist/assets/channel-_falYbU1.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-Dn-3CfpR.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-Dn-3CfpR.js +0 -1
- package/dist/assets/index-CzPLBvXT.css +0 -32
- package/dist/assets/index-DFkBBuSA.js +0 -1549
- package/dist/assets/stateDiagram-v2-UEYNNEHI-BvBxUUrZ.js +0 -1
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-CsE-x4YK.js +0 -8
package/server/shared/types.ts
CHANGED
|
@@ -94,6 +94,13 @@ export type ProviderModelOption = {
|
|
|
94
94
|
export type ProviderModelsDefinition = {
|
|
95
95
|
OPTIONS: ProviderModelOption[];
|
|
96
96
|
DEFAULT: string;
|
|
97
|
+
/**
|
|
98
|
+
* Reasoning-effort levels a custom entry of this catalog may declare, weakest
|
|
99
|
+
* first; empty for providers without effort support. The Providers service
|
|
100
|
+
* sets it on merged catalogs from the capability matrix, so the model
|
|
101
|
+
* library offers the same levels on every machine. Adapter catalogs omit it.
|
|
102
|
+
*/
|
|
103
|
+
EFFORT_LEVELS?: string[];
|
|
97
104
|
};
|
|
98
105
|
|
|
99
106
|
/**
|
|
@@ -110,6 +117,22 @@ export type CustomProviderModelRecord = {
|
|
|
110
117
|
modelId: string;
|
|
111
118
|
model: string;
|
|
112
119
|
sortOrder: number;
|
|
120
|
+
/** NULL for rows that never declared effort levels, including pre-existing rows. */
|
|
121
|
+
effort: CustomProviderModelEffort | null;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Reasoning-effort levels a user declared for one custom model.
|
|
126
|
+
*
|
|
127
|
+
* `values` holds unique, non-empty level ids drawn from the levels the
|
|
128
|
+
* provider's predefined models declare, and is never empty (an empty
|
|
129
|
+
* declaration is stored as NULL). `default`, when present, is one of `values`
|
|
130
|
+
* and documents the level the provider applies when the composer sends
|
|
131
|
+
* `Default`, mirroring `ProviderModelOption['effort'].default`.
|
|
132
|
+
*/
|
|
133
|
+
export type CustomProviderModelEffort = {
|
|
134
|
+
values: string[];
|
|
135
|
+
default?: string;
|
|
113
136
|
};
|
|
114
137
|
|
|
115
138
|
/**
|
|
@@ -122,6 +145,12 @@ export type CustomProviderModelRecord = {
|
|
|
122
145
|
export type CustomProviderModelInput = {
|
|
123
146
|
id: string;
|
|
124
147
|
model: string;
|
|
148
|
+
/**
|
|
149
|
+
* Optional reasoning-effort declaration. `undefined` leaves stored metadata
|
|
150
|
+
* untouched on update (and stores none on create) so clients that predate
|
|
151
|
+
* effort metadata keep working; `null` clears it.
|
|
152
|
+
*/
|
|
153
|
+
effort?: CustomProviderModelEffort | null;
|
|
125
154
|
};
|
|
126
155
|
|
|
127
156
|
// ---------------------------
|
|
@@ -186,10 +215,12 @@ export type MessageKind =
|
|
|
186
215
|
| 'complete'
|
|
187
216
|
| 'status'
|
|
188
217
|
| 'permission_request'
|
|
218
|
+
| 'permission_resolved'
|
|
189
219
|
| 'permission_cancelled'
|
|
190
220
|
| 'session_created'
|
|
191
|
-
| '
|
|
192
|
-
| 'task_notification'
|
|
221
|
+
| 'history_truncated'
|
|
222
|
+
| 'task_notification'
|
|
223
|
+
| 'task_status';
|
|
193
224
|
|
|
194
225
|
/**
|
|
195
226
|
* Event kinds added by the chat gateway layer on top of provider message kinds.
|
|
@@ -215,14 +246,75 @@ export type GatewayEventKind =
|
|
|
215
246
|
*/
|
|
216
247
|
export type ServerEventKind = MessageKind | GatewayEventKind;
|
|
217
248
|
|
|
249
|
+
/** The owning project as it appears inside a `session_upserted` delta. */
|
|
250
|
+
export type SessionUpsertedProject = {
|
|
251
|
+
projectId: string;
|
|
252
|
+
path: string;
|
|
253
|
+
fullPath: string;
|
|
254
|
+
displayName: string;
|
|
255
|
+
isStarred: boolean;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* The `session_upserted` sidebar delta, built only by
|
|
260
|
+
* `modules/websocket/services/session-upsert-broadcast.service.ts`.
|
|
261
|
+
*
|
|
262
|
+
* Typed rather than assembled as an untyped object literal because the payload
|
|
263
|
+
* used to be built in two places and silently drifted apart: one copy set
|
|
264
|
+
* `providerSessionId` and the other did not, and nothing could detect it.
|
|
265
|
+
*
|
|
266
|
+
* `providerSessionId` is how a client recognises that a row it is currently
|
|
267
|
+
* showing has been merged into its canonical app-session row, so it is always
|
|
268
|
+
* present — `null` only while the provider has not reported an id yet.
|
|
269
|
+
*/
|
|
270
|
+
export type SessionUpsertedEvent = {
|
|
271
|
+
kind: 'session_upserted';
|
|
272
|
+
sessionId: string;
|
|
273
|
+
providerSessionId: string | null;
|
|
274
|
+
provider: LLMProvider;
|
|
275
|
+
session: {
|
|
276
|
+
id: string;
|
|
277
|
+
summary: string;
|
|
278
|
+
messageCount: number;
|
|
279
|
+
lastActivity: string;
|
|
280
|
+
};
|
|
281
|
+
project: SessionUpsertedProject | null;
|
|
282
|
+
timestamp: string;
|
|
283
|
+
};
|
|
284
|
+
|
|
218
285
|
/**
|
|
219
286
|
* Provider-neutral message envelope used in REST responses and realtime channels.
|
|
220
287
|
*
|
|
221
288
|
* Every provider-specific message must be converted into this shape before being
|
|
222
289
|
* emitted outside provider-specific modules.
|
|
223
290
|
*/
|
|
291
|
+
/**
|
|
292
|
+
* A compaction, as the transcript records it.
|
|
293
|
+
*
|
|
294
|
+
* `running` is the status the CLI sends when it starts compacting, `done` the
|
|
295
|
+
* boundary it sends when it has, `failed` a compaction that did not finish.
|
|
296
|
+
* The token counts and duration only come with a boundary.
|
|
297
|
+
*/
|
|
298
|
+
export type CompactionInfo = {
|
|
299
|
+
phase: 'running' | 'done' | 'failed';
|
|
300
|
+
/** Whether the user asked for it or the context window did. */
|
|
301
|
+
trigger?: 'manual' | 'auto';
|
|
302
|
+
/** Tokens the conversation held before and after, when the boundary reports them. */
|
|
303
|
+
preTokens?: number;
|
|
304
|
+
postTokens?: number;
|
|
305
|
+
durationMs?: number;
|
|
306
|
+
error?: string | null;
|
|
307
|
+
};
|
|
308
|
+
|
|
224
309
|
export type NormalizedMessage = {
|
|
225
310
|
id: string;
|
|
311
|
+
/**
|
|
312
|
+
* The provider's own identifier for the transcript row this message came
|
|
313
|
+
* from, when the provider has stable per-row identity (today: Claude's
|
|
314
|
+
* `uuid`). It is what "edit this message" and "fork from here" address, so it
|
|
315
|
+
* has to survive a reload — never a value this app synthesized.
|
|
316
|
+
*/
|
|
317
|
+
transcriptAnchorId?: string;
|
|
226
318
|
sessionId: string;
|
|
227
319
|
timestamp: string;
|
|
228
320
|
provider: LLMProvider;
|
|
@@ -236,6 +328,15 @@ export type NormalizedMessage = {
|
|
|
236
328
|
seq?: number;
|
|
237
329
|
role?: 'user' | 'assistant';
|
|
238
330
|
content?: string;
|
|
331
|
+
/**
|
|
332
|
+
* The model that produced this assistant message, as the provider reported
|
|
333
|
+
* it on the transcript row (today: Claude's `message.model`, e.g.
|
|
334
|
+
* `claude-opus-5`). Absent on user turns — no provider records which model a
|
|
335
|
+
* request went out with — and absent when the provider named a placeholder
|
|
336
|
+
* such as `<synthetic>`, so a locally-fabricated notice is never labelled
|
|
337
|
+
* with a model it did not run on.
|
|
338
|
+
*/
|
|
339
|
+
model?: string;
|
|
239
340
|
/**
|
|
240
341
|
* Optional display-oriented metadata used by providers that need to expose
|
|
241
342
|
* richer transcript artifacts without introducing a brand-new message kind.
|
|
@@ -251,6 +352,8 @@ export type NormalizedMessage = {
|
|
|
251
352
|
isLocalCommand?: boolean;
|
|
252
353
|
isLocalCommandStdout?: boolean;
|
|
253
354
|
isCompactSummary?: boolean;
|
|
355
|
+
/** Set on the row that stands in for a compaction, so the UI can draw it as one. */
|
|
356
|
+
compact?: CompactionInfo;
|
|
254
357
|
images?: unknown;
|
|
255
358
|
/** Non-image files attached to a user turn after provider history normalization. */
|
|
256
359
|
files?: unknown;
|
|
@@ -274,13 +377,226 @@ export type NormalizedMessage = {
|
|
|
274
377
|
status?: string;
|
|
275
378
|
summary?: string;
|
|
276
379
|
tokenBudget?: unknown;
|
|
277
|
-
|
|
380
|
+
/**
|
|
381
|
+
* Timeline of everything a subagent did, attached to the `tool_use` that
|
|
382
|
+
* spawned it. Present for Claude `Agent`/`Task` calls and Codex
|
|
383
|
+
* `spawn_agent` calls; absent for every other tool.
|
|
384
|
+
*/
|
|
385
|
+
subagentTools?: SubagentActivity[];
|
|
386
|
+
/** Identity and lifecycle of the subagent this `tool_use` spawned. */
|
|
387
|
+
subagent?: SubagentInfo;
|
|
388
|
+
/** The workflow run this `tool_use` launched, read from its journal on disk. */
|
|
389
|
+
workflow?: WorkflowInfo;
|
|
390
|
+
/** Stored memory the reply drew on, when the provider reports it. */
|
|
391
|
+
memoryCitations?: MemoryCitation[];
|
|
278
392
|
toolUseResult?: unknown;
|
|
279
393
|
sequence?: number;
|
|
280
394
|
rowid?: number;
|
|
395
|
+
/**
|
|
396
|
+
* `task_status` fields: one lifecycle event of a background task the live
|
|
397
|
+
* run is tracking. `taskId` is the provider's task handle; `toolUseId` names
|
|
398
|
+
* the call that launched it and is absent on `updated`, which the SDK keys by
|
|
399
|
+
* task id alone. `status` and `summary` above carry the event's own.
|
|
400
|
+
*/
|
|
401
|
+
event?: 'started' | 'progress' | 'updated' | 'notification';
|
|
402
|
+
taskId?: string;
|
|
403
|
+
toolUseId?: string;
|
|
404
|
+
taskType?: string;
|
|
405
|
+
workflowName?: string;
|
|
406
|
+
description?: string;
|
|
407
|
+
usage?: TaskUsage;
|
|
408
|
+
outputFile?: string;
|
|
409
|
+
/** A workflow's `progress` only: where each agent the run spawned stands. */
|
|
410
|
+
agents?: WorkflowAgentProgress[];
|
|
281
411
|
[key: string]: unknown;
|
|
282
412
|
};
|
|
283
413
|
|
|
414
|
+
/**
|
|
415
|
+
* What a background task has spent so far, as the CLI reports it on
|
|
416
|
+
* `task_progress` and `task_notification`.
|
|
417
|
+
*/
|
|
418
|
+
export type TaskUsage = {
|
|
419
|
+
totalTokens: number;
|
|
420
|
+
toolUses: number;
|
|
421
|
+
durationMs: number;
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* One background task a live session still has outstanding — a spawned
|
|
426
|
+
* agent, a workflow run or a backgrounded command — as the runtime tracks it
|
|
427
|
+
* from the stream's `task_started` until the event that settles it.
|
|
428
|
+
*
|
|
429
|
+
* `taskId` is the handle a stop request names; `toolUseId` is the call that
|
|
430
|
+
* launched it, which is how the client pairs the task with its card.
|
|
431
|
+
* `startedAt` is the server clock at `task_started`, so a session whose turn
|
|
432
|
+
* has ended can still report how long its work has been going.
|
|
433
|
+
*/
|
|
434
|
+
export type BackgroundTaskSummary = {
|
|
435
|
+
taskId: string;
|
|
436
|
+
toolUseId: string;
|
|
437
|
+
taskType: string;
|
|
438
|
+
description: string;
|
|
439
|
+
workflowName?: string;
|
|
440
|
+
startedAt: number;
|
|
441
|
+
/**
|
|
442
|
+
* The task was launched by a subagent or workflow agent, not by the
|
|
443
|
+
* session's own turn: its `toolUseId` names a call in that agent's
|
|
444
|
+
* transcript, so no card in this session's transcript matches it. Listed so
|
|
445
|
+
* it can still be stopped; not counted as the session's own work.
|
|
446
|
+
*/
|
|
447
|
+
nested?: boolean;
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Where one agent of a running workflow stands, as the SDK reports it on the
|
|
452
|
+
* run's `task_progress` events.
|
|
453
|
+
*
|
|
454
|
+
* An entry the script has queued but not yet started has no `agentId` and is
|
|
455
|
+
* identified by `index` alone; once the agent runs, `agentId` names the
|
|
456
|
+
* transcript it writes. `lastToolName` and `lastToolSummary` are the agent's
|
|
457
|
+
* own latest tool call — unlike the event's task-level `last_tool_name`, which
|
|
458
|
+
* for a workflow is the current agent's label.
|
|
459
|
+
*/
|
|
460
|
+
export type WorkflowAgentProgress = {
|
|
461
|
+
index: number;
|
|
462
|
+
label?: string;
|
|
463
|
+
/** The title of the script phase the agent runs under, when it has one. */
|
|
464
|
+
phase?: string;
|
|
465
|
+
agentId?: string;
|
|
466
|
+
model?: string;
|
|
467
|
+
state: 'queued' | 'running' | 'done' | 'failed';
|
|
468
|
+
startedAt?: number;
|
|
469
|
+
lastToolName?: string;
|
|
470
|
+
lastToolSummary?: string;
|
|
471
|
+
promptPreview?: string;
|
|
472
|
+
tokens?: number;
|
|
473
|
+
toolCalls?: number;
|
|
474
|
+
durationMs?: number;
|
|
475
|
+
resultPreview?: string;
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* One workflow agent's recorded timeline, read from its transcript on demand
|
|
480
|
+
* when the card is opened — the SDK never streams an agent's own rows to the
|
|
481
|
+
* parent session, so this is the only way to see what it did.
|
|
482
|
+
*
|
|
483
|
+
* `activityCount` is the full length of the timeline; `activity` is capped
|
|
484
|
+
* for transport like a subagent's `subagentTools`.
|
|
485
|
+
*/
|
|
486
|
+
export type WorkflowAgentActivity = {
|
|
487
|
+
agent: {
|
|
488
|
+
id: string;
|
|
489
|
+
label?: string;
|
|
490
|
+
model?: string;
|
|
491
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
492
|
+
};
|
|
493
|
+
activity: SubagentActivity[];
|
|
494
|
+
activityCount: number;
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* One agent a workflow run spawned, as its journal records it.
|
|
499
|
+
*
|
|
500
|
+
* `label` and `phase` are whatever the script passed when it spawned the
|
|
501
|
+
* agent; older scripts passed neither. An agent with a `started` record and no
|
|
502
|
+
* `result` or `failed` one is still running as far as the journal knows.
|
|
503
|
+
*/
|
|
504
|
+
export type WorkflowAgentInfo = {
|
|
505
|
+
id: string;
|
|
506
|
+
label?: string;
|
|
507
|
+
phase?: string;
|
|
508
|
+
/** `stopped` is an agent the journal never settled although the run itself has — abandoned by a stop or a resume that re-ran the step. */
|
|
509
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* A `Workflow` tool call's run, attached to the `tool_use` that launched it.
|
|
514
|
+
*
|
|
515
|
+
* `status` follows the same rule as a background agent's: the task
|
|
516
|
+
* notification's word when one exists, else `running` only while the process
|
|
517
|
+
* that launched it is still up, else `stopped`. The agent list and counts come
|
|
518
|
+
* from `<transcriptDir>/journal.jsonl`; both are empty when the run left no
|
|
519
|
+
* journal behind (a fork copies only the parent's transcript).
|
|
520
|
+
*/
|
|
521
|
+
export type WorkflowInfo = {
|
|
522
|
+
runId: string;
|
|
523
|
+
name: string;
|
|
524
|
+
description?: string;
|
|
525
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
526
|
+
agents: WorkflowAgentInfo[];
|
|
527
|
+
agentCounts: { total: number; completed: number; failed: number; running: number; stopped: number };
|
|
528
|
+
scriptPath?: string;
|
|
529
|
+
};
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* One stored memory an assistant reply drew on.
|
|
533
|
+
*
|
|
534
|
+
* Codex appends these to a reply that used its memory files, naming the file
|
|
535
|
+
* and line range it read plus a short note on what it took from there. The
|
|
536
|
+
* transcript shows them as a footnote so a memory-derived claim is traceable
|
|
537
|
+
* rather than arriving as an unattributed assertion.
|
|
538
|
+
*/
|
|
539
|
+
export type MemoryCitation = {
|
|
540
|
+
/** File and line range that was read, e.g. `MEMORY.md:137-142`. */
|
|
541
|
+
source: string;
|
|
542
|
+
/** What the reply took from that range, when the provider states it. */
|
|
543
|
+
note?: string;
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* One entry in a subagent's recorded timeline.
|
|
548
|
+
*
|
|
549
|
+
* Providers store a subagent's work in a separate transcript (Claude:
|
|
550
|
+
* `<session>/subagents/agent-<id>.jsonl`; Codex: a sibling rollout keyed by
|
|
551
|
+
* `agent_thread_id`). Both are flattened into this shape so the transcript can
|
|
552
|
+
* replay a subagent's run with the same renderers the main thread uses.
|
|
553
|
+
*
|
|
554
|
+
* `kind` decides which fields matter: `tool` uses the tool fields, `text` and
|
|
555
|
+
* `thinking` use `content`. Consumers must not assume tool fields exist on the
|
|
556
|
+
* text kinds.
|
|
557
|
+
*/
|
|
558
|
+
export type SubagentActivity = {
|
|
559
|
+
kind: 'tool' | 'text' | 'thinking';
|
|
560
|
+
timestamp?: string;
|
|
561
|
+
/** Tool-call identity; only set when `kind` is `tool`. */
|
|
562
|
+
toolId?: string;
|
|
563
|
+
toolName?: string;
|
|
564
|
+
toolInput?: unknown;
|
|
565
|
+
toolResult?: { content?: string; isError?: boolean } | null;
|
|
566
|
+
/** Message body; only set when `kind` is `text` or `thinking`. */
|
|
567
|
+
content?: string;
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Identity and lifecycle of one spawned subagent, normalized across providers.
|
|
572
|
+
*
|
|
573
|
+
* `status` is `running` until the call that spawned the agent resolves. After
|
|
574
|
+
* that it is whatever the provider reported — Claude's task notification
|
|
575
|
+
* carries one — and `completed` when the provider reported nothing. A failed
|
|
576
|
+
* tool call *inside* the agent is not a failed agent, so it is never inferred
|
|
577
|
+
* from the transcript. A background agent whose session process ended before
|
|
578
|
+
* it reported is `stopped`: no outcome exists and none is coming.
|
|
579
|
+
*/
|
|
580
|
+
export type SubagentInfo = {
|
|
581
|
+
/** Provider-native agent id — Claude `agentId`, Codex `agent_thread_id`. */
|
|
582
|
+
id: string;
|
|
583
|
+
/** Human-facing label: Claude's agent type, or Codex's assigned nickname. */
|
|
584
|
+
name?: string;
|
|
585
|
+
/** Agent type/preset when the provider records one (Claude `agentType`). */
|
|
586
|
+
type?: string;
|
|
587
|
+
/** One-line task summary shown in the collapsed header. */
|
|
588
|
+
description?: string;
|
|
589
|
+
status: 'running' | 'completed' | 'failed' | 'stopped';
|
|
590
|
+
/** Model the subagent ran on, when the provider records it. */
|
|
591
|
+
model?: string;
|
|
592
|
+
/**
|
|
593
|
+
* How many activities the agent actually recorded. It exceeds
|
|
594
|
+
* `subagentTools.length` when a long run was truncated for transport, which
|
|
595
|
+
* lets the UI say so instead of silently showing a partial timeline.
|
|
596
|
+
*/
|
|
597
|
+
activityCount?: number;
|
|
598
|
+
};
|
|
599
|
+
|
|
284
600
|
/**
|
|
285
601
|
* Output gateway shared by WebSocket and SSE provider runs.
|
|
286
602
|
*
|
|
@@ -292,7 +608,6 @@ export type ProviderRuntimeWriter = {
|
|
|
292
608
|
setSessionId?(sessionId: string): void;
|
|
293
609
|
userId?: string | number | null;
|
|
294
610
|
isWebSocketWriter?: boolean;
|
|
295
|
-
isSSEStreamWriter?: boolean;
|
|
296
611
|
};
|
|
297
612
|
|
|
298
613
|
export type ProviderPermissionDecision = {
|
|
@@ -322,6 +637,15 @@ export type ProviderRuntimeContext = {
|
|
|
322
637
|
getProviderModels(): Promise<ProviderModelsDefinition>;
|
|
323
638
|
normalizeMessage(raw: unknown, sessionId: string | null): NormalizedMessage[];
|
|
324
639
|
isProviderInstalled(): Promise<boolean>;
|
|
640
|
+
/**
|
|
641
|
+
* Builds the SDK query for a run. Production leaves this unset and the
|
|
642
|
+
* runtime uses the SDK's own; tests supply a scripted stream so the hold
|
|
643
|
+
* and background-work paths can be driven without a CLI process.
|
|
644
|
+
*/
|
|
645
|
+
createQuery?: (input: { prompt: AsyncIterable<unknown>; options: AnyRecord }) => AsyncIterable<unknown> & {
|
|
646
|
+
interrupt(): Promise<void>;
|
|
647
|
+
stopTask?(taskId: string): Promise<void>;
|
|
648
|
+
};
|
|
325
649
|
};
|
|
326
650
|
|
|
327
651
|
export type ProviderRunFunction = (
|
|
@@ -546,6 +870,29 @@ export type UpsertProviderMcpServerInput = {
|
|
|
546
870
|
|
|
547
871
|
// ---------------------------
|
|
548
872
|
//----------------- PROVIDER AUTH TYPES ------------
|
|
873
|
+
/**
|
|
874
|
+
* Records that an API-key style credential is taking precedence over a
|
|
875
|
+
* still-valid subscription login in `~/.claude/.credentials.json`.
|
|
876
|
+
*
|
|
877
|
+
* Claude Code always prefers `ANTHROPIC_AUTH_TOKEN` / `ANTHROPIC_API_KEY` over
|
|
878
|
+
* the OAuth login written by `claude /login`, so when both exist every request
|
|
879
|
+
* is billed to the key (pay-as-you-go) rather than the subscription — usually
|
|
880
|
+
* without the user realising it. The Claude auth provider fills this in so the
|
|
881
|
+
* settings UI can say which variable won and where it was found; the fix
|
|
882
|
+
* differs per source (unset the variable and restart the server for
|
|
883
|
+
* `process_env`, edit the `env` block of `~/.claude/settings.json` for
|
|
884
|
+
* `settings_file`). It is never set when the login in the credentials file is
|
|
885
|
+
* missing or expired, because then nothing is being bypassed.
|
|
886
|
+
*/
|
|
887
|
+
export type ProviderAuthSubscriptionOverride = {
|
|
888
|
+
/** The environment variable Claude Code is using instead of the login. */
|
|
889
|
+
variable: 'ANTHROPIC_API_KEY' | 'ANTHROPIC_AUTH_TOKEN';
|
|
890
|
+
/** Where that variable was found: the server process env or the settings.json env block. */
|
|
891
|
+
source: 'process_env' | 'settings_file';
|
|
892
|
+
/** Email recorded in the credentials file for the bypassed login, when known. */
|
|
893
|
+
subscriptionEmail: string | null;
|
|
894
|
+
};
|
|
895
|
+
|
|
549
896
|
/**
|
|
550
897
|
* Authentication status result returned by provider health checks.
|
|
551
898
|
*
|
|
@@ -559,6 +906,12 @@ export type ProviderAuthStatus = {
|
|
|
559
906
|
email: string | null;
|
|
560
907
|
method: string | null;
|
|
561
908
|
error?: string;
|
|
909
|
+
/**
|
|
910
|
+
* Present only when `method` is `api_key` and a valid subscription login is
|
|
911
|
+
* being bypassed; see ProviderAuthSubscriptionOverride. Omitted otherwise so
|
|
912
|
+
* existing consumers that never look for it are unaffected.
|
|
913
|
+
*/
|
|
914
|
+
subscriptionOverride?: ProviderAuthSubscriptionOverride;
|
|
562
915
|
};
|
|
563
916
|
|
|
564
917
|
// ---------------------------
|
|
@@ -642,12 +995,13 @@ export type WorkspacePathValidationResult = {
|
|
|
642
995
|
};
|
|
643
996
|
|
|
644
997
|
// ---------------------------
|
|
645
|
-
//----------------- GIT WORKTREE MANAGEMENT ------------
|
|
998
|
+
//----------------- GIT COMMAND EXECUTION AND WORKTREE MANAGEMENT ------------
|
|
646
999
|
/**
|
|
647
1000
|
* Captured output of one completed `git` invocation.
|
|
648
1001
|
*
|
|
649
|
-
* Returned by `GitCommandRunner` implementations so
|
|
650
|
-
* both streams without caring about
|
|
1002
|
+
* Returned by `GitCommandRunner` and `GitProcessRunner` implementations so the
|
|
1003
|
+
* git and worktree services can read both streams without caring about
|
|
1004
|
+
* process plumbing.
|
|
651
1005
|
*/
|
|
652
1006
|
export type GitCommandResult = {
|
|
653
1007
|
stdout: string;
|
|
@@ -664,6 +1018,20 @@ export type GitCommandResult = {
|
|
|
664
1018
|
*/
|
|
665
1019
|
export type GitCommandRunner = (args: string[], cwd: string) => Promise<GitCommandResult>;
|
|
666
1020
|
|
|
1021
|
+
/**
|
|
1022
|
+
* Executes `command args...` inside `options.cwd` and resolves with the captured output.
|
|
1023
|
+
*
|
|
1024
|
+
* This is the `spawnAsync` shape the Git routes module injects into its typed
|
|
1025
|
+
* services (branch deletion, branch compare) so their tests can substitute a
|
|
1026
|
+
* fake runner. Like `GitCommandRunner`, the promise must reject on a non-zero
|
|
1027
|
+
* exit code, with `stderr` attached to the error when available.
|
|
1028
|
+
*/
|
|
1029
|
+
export type GitProcessRunner = (
|
|
1030
|
+
command: string,
|
|
1031
|
+
args: string[],
|
|
1032
|
+
options: { cwd: string },
|
|
1033
|
+
) => Promise<GitCommandResult>;
|
|
1034
|
+
|
|
667
1035
|
/**
|
|
668
1036
|
* One entry parsed from `git worktree list --porcelain`.
|
|
669
1037
|
*
|
|
@@ -987,6 +1355,13 @@ export type FileTreeProjectGateway = {
|
|
|
987
1355
|
export type FileTreeWorkspaceGateway = {
|
|
988
1356
|
rootPath: string;
|
|
989
1357
|
validatePath(candidatePath: string): Promise<WorkspacePathValidationResult>;
|
|
1358
|
+
/**
|
|
1359
|
+
* Resolves a path readable outside the workspace root — the system temp
|
|
1360
|
+
* directory and the Claude projects directory — or `null` when it is not
|
|
1361
|
+
* one. Read-only: the write policy is `validatePath` and it does not consult
|
|
1362
|
+
* this.
|
|
1363
|
+
*/
|
|
1364
|
+
resolveReadOnlyRootPath(candidatePath: string): Promise<string | null>;
|
|
990
1365
|
};
|
|
991
1366
|
|
|
992
1367
|
/**
|