@chatcode/chatcode-cli 3.0.2 → 3.0.4-rc.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.
Files changed (221) hide show
  1. package/README.i18n.yaml +10 -10
  2. package/README.md +26 -1
  3. package/README.zh.md +26 -1
  4. package/lib/bin.js +70 -75
  5. package/lib/{command-errors-CIYn1nnW.js → command-errors-BkCHTQHj.js} +12 -12
  6. package/lib/{command-trees-8o99Bws7.js → command-trees-5HFyC5sI.js} +2 -2
  7. package/lib/{component-identity-CnmIKHEF.js → component-identity-De91VHwW.js} +3 -3
  8. package/lib/{dist-DxjlHHph.js → dist-CsDWUvQ4.js} +238 -232
  9. package/lib/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -0
  10. package/lib/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -0
  11. package/lib/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -0
  12. package/lib/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -0
  13. package/lib/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -0
  14. package/lib/dsh-ecosystem-spec/protocols/tui-channel.js +166 -0
  15. package/lib/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -0
  16. package/lib/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -0
  17. package/lib/dsh-ecosystem-spec/registry/README.md +14 -0
  18. package/lib/dsh-ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
  19. package/lib/dsh-ecosystem-spec/registry/contracts/scene-v1alpha1.json +13 -0
  20. package/lib/dsh-ecosystem-spec/registry/contracts/settings-section-v1alpha1.json +13 -0
  21. package/lib/dsh-ecosystem-spec/registry/contracts/tui-channel-v1alpha1.json +30 -0
  22. package/lib/dsh-ecosystem-spec/registry/contracts/workspace-provider-v1alpha1.json +6 -0
  23. package/lib/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
  24. package/lib/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -0
  25. package/lib/dsh-ecosystem-spec/registry/registry-0.15.json +149 -0
  26. package/lib/dsh-ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
  27. package/lib/dsh-ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
  28. package/lib/dsh-ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
  29. package/lib/{dump-config-BSTrhTT_.js → dump-config-BcH-VYuv.js} +5 -5
  30. package/lib/dump-config-CyopmD85.js +2 -0
  31. package/lib/{dump-config-schema-Cz4A13GB.js → dump-config-schema-DM0fb6Ns.js} +2 -2
  32. package/lib/{extension-events-DciGPKJa.js → extension-events-CdYCRP0o.js} +26 -26
  33. package/lib/{frames-7PAg0Q9b.js → frames-DOX-Jgk8.js} +4 -4
  34. package/lib/headless-compat.js +2 -2
  35. package/lib/{home-migration-DLaSvmfn.js → home-migration-BjDmRwBB.js} +23 -4
  36. package/lib/{host-access-CmD27uhQ.js → host-access-Bk4xps5E.js} +1 -1
  37. package/lib/{keymap-CFChEJ2W.js → keymap-CJ1kvLR2.js} +17 -16
  38. package/lib/{plugin-jvd9PCVt.js → plugin-XR7ncbnW.js} +3767 -2331
  39. package/lib/{plugin-DYHtreEd.js → plugin-eJjD6r12.js} +1 -1
  40. package/lib/{profile-boot-Blq7uqhx.js → profile-boot-BNQry1NM.js} +109 -14
  41. package/lib/profile-boot.js +2 -2
  42. package/lib/{scenes-ai_8sHDs.js → scenes-CAmWncZD.js} +3 -3
  43. package/lib/{settings-sections-QQ1-2lhL.js → settings-sections-CakcvBv9.js} +7 -3
  44. package/lib/startup-diagnostics-C_hRCp-q.js +91 -0
  45. package/lib/statusBarSettings-BPPS_Usm.js +382 -0
  46. package/lib/{supports-color-CcW-FGjr.js → supports-color-DyChQwlI.js} +2 -2
  47. package/lib/{themes-DTzG_9I_.js → themes-OjcUpZzw.js} +13 -13
  48. package/lib/tui-compat-command-trees.js +1 -1
  49. package/lib/tui-compat-extensions.js +4 -4
  50. package/lib/tui-compat-plugin-host.js +5 -5
  51. package/lib/tui-compat-scenes.js +1 -1
  52. package/lib/tui-compat-settings-sections.js +1 -1
  53. package/lib/tui-compat-working-activity.js +4 -4
  54. package/lib/tui-compat-workspaces.js +1 -1
  55. package/lib/tui-compat.js +44 -29
  56. package/lib/types/args.d.ts +2 -0
  57. package/lib/types/home-migration.d.ts +8 -0
  58. package/lib/types/permission-bypass.d.ts +16 -0
  59. package/lib/types/profile-boot.d.ts +12 -0
  60. package/lib/types/startup-diagnostics.d.ts +13 -0
  61. package/lib/types/tui-compat.d.ts +6 -0
  62. package/lib/types/web-browser.d.ts +6 -0
  63. package/lib/types/web-instance.d.ts +42 -0
  64. package/lib/web-browser-Vcgfdsv_.js +46 -0
  65. package/lib/web-instance-B0jec7cq.js +2 -0
  66. package/lib/web-instance-DbP7IHPv.js +280 -0
  67. package/lib/{workspaces-CznCgVHv.js → workspaces-XY7UdfXp.js} +2 -2
  68. package/package.json +40 -32
  69. package/runtime/manifest.json +4 -6
  70. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/index.js +34 -4
  71. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/types/index.d.ts +9 -0
  72. package/runtime/node_modules/@deepseek-ai/dsh-agent-preset/skills/cordis-composition-reference/references/packages.md +2 -1
  73. package/runtime/node_modules/@deepseek-ai/dsh-api-gateway/lib/client.js +2 -0
  74. package/runtime/node_modules/@deepseek-ai/dsh-api-gateway/lib/types/client/remote-stream.js +4 -0
  75. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +39 -0
  76. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js +6 -1
  77. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +10 -3
  78. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +7 -0
  79. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/catalog.js +8 -1
  80. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/types.d.ts +10 -0
  81. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/index.js +28 -1
  82. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.host.js +39 -0
  83. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.remote-client.d.ts +2 -0
  84. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/typert.remote-client.js +32 -0
  85. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/types/index.d.ts +8 -0
  86. package/runtime/node_modules/@deepseek-ai/dsh-api-settings-controller/lib/types/index.js +19 -1
  87. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/index.js +28 -0
  88. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/feed.js +17 -0
  89. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +67 -19
  90. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/types/index.d.ts +1 -1
  91. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/types/profile-context.d.ts +11 -1
  92. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/worker/profile-resolution-bootstrap.js +22 -3
  93. package/runtime/node_modules/@deepseek-ai/dsh-base/cordis.patch.yml +9 -3
  94. package/runtime/node_modules/@deepseek-ai/dsh-base/package.json +2 -1
  95. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/client.js +3 -2
  96. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-chat/lib/types/index.d.ts +2 -2
  97. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +1 -1
  98. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +1 -1
  99. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +60 -12
  100. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/directory.d.ts +3 -1
  101. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/types/client/locales.d.ts +6 -0
  102. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/CodeBlock.module.css +3 -5
  103. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/markdown/MarkdownText.module.css +23 -27
  104. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings/lib/types/client/contract/slots.d.ts +3 -1
  105. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  106. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/types/index.d.ts +2 -2
  107. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +8 -7
  108. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/types/client/SettingsDocumentAction.d.ts +1 -1
  109. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/types/client/settings-document-store.d.ts +2 -1
  110. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +33 -12
  111. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/types/client/locales.d.ts +2 -0
  112. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +1 -1
  113. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  114. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
  115. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +8 -1
  116. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +2 -0
  117. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/index.js +84 -8
  118. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/types/region.d.ts +9 -0
  119. package/runtime/node_modules/@deepseek-ai/dsh-compaction-basic/lib/types/summarizer.d.ts +7 -0
  120. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/index.js +35 -0
  121. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/brand.d.ts +11 -0
  122. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/brand.js +10 -0
  123. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/index.d.ts +28 -0
  124. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/lib/types/index.js +36 -0
  125. package/runtime/node_modules/@deepseek-ai/dsh-computer-use/package.json +42 -0
  126. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/lib/index.js +102 -14
  127. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/lib/types/index.d.ts +34 -4
  128. package/runtime/node_modules/@deepseek-ai/dsh-config-editor/package.json +1 -0
  129. package/runtime/node_modules/@deepseek-ai/dsh-host-webserver/lib/index.js +2 -1
  130. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/index.js +21 -8
  131. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/types/path-opener.d.ts +4 -6
  132. package/runtime/node_modules/@deepseek-ai/dsh-native-command/lib/types/path-opener.js +18 -7
  133. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +3 -8
  134. package/runtime/node_modules/@deepseek-ai/dsh-session-log-export/lib/types/client/HeaderAction.d.ts +1 -1
  135. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/index.js +5 -4
  136. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/types/index.d.ts +4 -3
  137. package/runtime/node_modules/@deepseek-ai/dsh-settings/lib/types/index.js +4 -3
  138. package/runtime/node_modules/@deepseek-ai/dsh-skill/lib/types/index.d.ts +1 -1
  139. package/runtime/node_modules/@deepseek-ai/dsh-skill-filesystem/lib/index.js +7 -1
  140. package/runtime/node_modules/@deepseek-ai/dsh-storage/lib/types/backend.d.ts +4 -0
  141. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/index.js +60 -0
  142. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/types/domain.d.ts +15 -0
  143. package/runtime/node_modules/@deepseek-ai/dsh-storage-json/lib/index.js +25 -0
  144. package/runtime/node_modules/@deepseek-ai/dsh-storage-json/package.json +1 -0
  145. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/index.js +5472 -0
  146. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/command-args.d.ts +17 -0
  147. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti/cicd.d.ts +8 -0
  148. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti/tianti.d.ts +7 -0
  149. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/commands/tianti-deliver/tianti-deliver.d.ts +8 -0
  150. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/config.d.ts +27 -0
  151. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/index.d.ts +12 -0
  152. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/memory-config.d.ts +10 -0
  153. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/runtime.d.ts +105 -0
  154. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/aliases.d.ts +11 -0
  155. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/auth.d.ts +20 -0
  156. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/client.d.ts +206 -0
  157. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/config.d.ts +20 -0
  158. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/index.d.ts +6 -0
  159. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/log.d.ts +16 -0
  160. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/types.d.ts +136 -0
  161. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/codebase.d.ts +19 -0
  162. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/dynamicWorkflow.d.ts +10 -0
  163. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/engine.d.ts +8 -0
  164. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/executor.d.ts +11 -0
  165. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/executors.d.ts +15 -0
  166. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/index.d.ts +23 -0
  167. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/memorySuggestions.d.ts +12 -0
  168. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/openspec.d.ts +31 -0
  169. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/recommend.d.ts +8 -0
  170. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/render.d.ts +8 -0
  171. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/requirementContext.d.ts +12 -0
  172. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/scenarioUpgrade.d.ts +24 -0
  173. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/state.d.ts +16 -0
  174. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/store.d.ts +33 -0
  175. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/templates.d.ts +8 -0
  176. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/types.d.ts +385 -0
  177. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/wanmaDevelopmentWorkflow/writeReviewSync.d.ts +6 -0
  178. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/index.d.ts +29 -0
  179. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/store.d.ts +20 -0
  180. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/writeReview/types.d.ts +49 -0
  181. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/tools.d.ts +12 -0
  182. package/runtime/node_modules/@deepseek-ai/dsh-tianti/package.json +55 -0
  183. package/runtime/node_modules/@deepseek-ai/dsh-tool-cordis/lib/types/api-catalog.js +57 -13
  184. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/cordis.patch.yml +2 -1
  185. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/ptc.patch.yml +2 -1
  186. package/runtime/node_modules/@deepseek-ai/dsh-web-app/presets/standard.patch.yml +2 -1
  187. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-D5kpKf--.css +1 -0
  188. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Dz_cDcce.js +133 -0
  189. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Dz_cDcce.js.map +1 -0
  190. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-apple-touch-icon.png +0 -0
  191. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-icon-32.png +0 -0
  192. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/chatcode-mask-icon.svg +1 -0
  193. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon-dark.svg +1 -3
  194. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon.ico +0 -0
  195. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/favicon.svg +1 -3
  196. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +8 -4
  197. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/preview.html +8 -4
  198. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/package.json +2 -1
  199. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/index.js +110 -33
  200. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/entity.d.ts +6 -0
  201. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/entity.js +23 -17
  202. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.d.ts +10 -0
  203. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.js +95 -21
  204. package/lib/dump-config-DBW7YLx-.js +0 -2
  205. package/lib/tuiDisplayPrefs-BCHRRcfe.js +0 -162
  206. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-DUvMhLle.css +0 -1
  207. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Q6zc2uHV.js +0 -127
  208. package/runtime/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/index-Q6zc2uHV.js.map +0 -1
  209. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/README.md +0 -9
  210. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/bin/system.node +0 -0
  211. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/package.json +0 -31
  212. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/prebuilds.json +0 -6
  213. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/README.md +0 -9
  214. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/package.json +0 -31
  215. package/runtime/node_modules/@deepseek-ai/node-addon-system-darwin-x64/prebuilds.json +0 -6
  216. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/README.md +0 -11
  217. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/package.json +0 -31
  218. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-arm64/prebuilds.json +0 -24
  219. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/README.md +0 -11
  220. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/package.json +0 -31
  221. package/runtime/node_modules/@deepseek-ai/node-addon-system-linux-x64/prebuilds.json +0 -24
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chatcode/chatcode-cli",
3
3
  "description": "ChatCode CLI: TUI-first coding agent, Web launcher, profiles, and legacy DSH-compatible plugins",
4
- "version": "3.0.2",
4
+ "version": "3.0.4-rc.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -16,6 +16,7 @@
16
16
  },
17
17
  "files": [
18
18
  "lib/*.js",
19
+ "lib/dsh-ecosystem-spec",
19
20
  "lib/types/*.d.ts",
20
21
  "scripts/*.mjs",
21
22
  "runtime/manifest.json",
@@ -27,14 +28,15 @@
27
28
  "dependencies": {
28
29
  "@agentclientprotocol/sdk": "1.4.0",
29
30
  "@babel/code-frame": "^7.29.0",
30
- "@chatcode/cco-better-sidebar": "0.18.0-rc.2",
31
+ "@chatcode/cco-better-sidebar": "0.18.0-rc.4",
31
32
  "@chatcode/cco-builtin-browser": "0.1.21",
32
- "@chatcode/cco-chat-import": "0.12.0",
33
- "@chatcode/cco-llm-chatcode-config": "0.1.3-rc.3",
34
- "@chatcode/cco-market": "1.45.2-rc.3",
35
- "@chatcode/cco-tui": "0.10.0-rc.9",
33
+ "@chatcode/cco-chat-import": "0.16.0",
34
+ "@chatcode/cco-computer-use": "0.3.2",
35
+ "@chatcode/cco-llm-chatcode-config": "0.1.4-rc.7",
36
+ "@chatcode/cco-market": "1.45.2-rc.4",
37
+ "@chatcode/cco-tui": "0.10.0-rc.17",
36
38
  "@deepseek-ai/libreoffice-kit": "^0.1.1",
37
- "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-rc.9",
39
+ "@deepseek-harness-tui/dsh-tui": "npm:@chatcode/cco-tui@0.10.0-rc.17",
38
40
  "@earendil-works/pi-ai": "^0.85.1",
39
41
  "@eslint-community/regexpp": "^4.12.2",
40
42
  "@joplin/turndown-plugin-gfm": "^1.0.67",
@@ -56,11 +58,12 @@
56
58
  "commander": "^15.0.0",
57
59
  "compression": "^1.8.1",
58
60
  "diff": "^9.0.0",
59
- "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.2",
61
+ "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.4",
60
62
  "dsh-builtin-browser": "npm:@chatcode/cco-builtin-browser@0.1.21",
61
- "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.12.0",
62
- "dsh-llm-chatcode-config": "npm:@chatcode/cco-llm-chatcode-config@0.1.3-rc.3",
63
- "dshmarket": "npm:@chatcode/cco-market@1.45.2-rc.3",
63
+ "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.16.0",
64
+ "dsh-computer-use": "npm:@chatcode/cco-computer-use@0.3.2",
65
+ "dsh-llm-chatcode-config": "npm:@chatcode/cco-llm-chatcode-config@0.1.4-rc.7",
66
+ "dshmarket": "npm:@chatcode/cco-market@1.45.2-rc.4",
64
67
  "eventsource-parser": "^3.1.0",
65
68
  "execa": "^10.0.0",
66
69
  "fflate": "^0.8.2",
@@ -92,47 +95,47 @@
92
95
  "ajv": "^8.20.0",
93
96
  "execa": "^10.0.0",
94
97
  "ws": "8.21.0",
95
- "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
98
+ "@deepseek-ai/dsh-acp": "0.1.7-rc.2",
96
99
  "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2",
100
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
101
+ "@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.2",
102
+ "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2",
97
103
  "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2",
98
- "@deepseek-ai/dsh-acp": "0.1.7-rc.2",
99
104
  "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2",
100
- "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2",
101
- "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
102
105
  "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2",
103
- "@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.2",
104
- "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2",
106
+ "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
105
107
  "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2",
106
108
  "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2",
107
- "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2",
109
+ "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
110
+ "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2",
108
111
  "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
109
- "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2",
110
- "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
111
112
  "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
113
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2",
112
114
  "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2",
113
- "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2",
114
115
  "@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.2",
116
+ "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
117
+ "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2",
115
118
  "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2",
116
- "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
117
119
  "@deepseek-ai/dsh-loader-smoke": "0.1.7-rc.2",
118
- "@deepseek-ai/dsh-session": "0.1.7-rc.2",
120
+ "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
121
+ "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2",
119
122
  "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2",
120
123
  "@deepseek-ai/dsh-sdk-client": "0.1.7-rc.2",
121
- "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
122
- "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2",
124
+ "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
125
+ "@deepseek-ai/dsh-session": "0.1.7-rc.2",
123
126
  "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2",
124
- "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
125
127
  "@deepseek-ai/dsh-session-query": "0.1.7-rc.2",
126
- "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
128
+ "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
127
129
  "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
128
130
  "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
129
- "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2",
131
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
132
+ "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2",
130
133
  "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2",
131
- "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
132
134
  "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2",
133
- "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
134
135
  "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
135
- "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2"
136
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
137
+ "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2",
138
+ "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2"
136
139
  },
137
140
  "exports": {
138
141
  "./headless-compat": {
@@ -151,6 +154,11 @@
151
154
  "./lib/*": "./lib/*",
152
155
  "./package.json": "./package.json"
153
156
  },
154
- "optionalDependencies": {},
157
+ "optionalDependencies": {
158
+ "@deepseek-ai/node-addon-system-darwin-arm64": "0.1.2",
159
+ "@deepseek-ai/node-addon-system-darwin-x64": "0.1.2",
160
+ "@deepseek-ai/node-addon-system-linux-arm64": "0.1.2",
161
+ "@deepseek-ai/node-addon-system-linux-x64": "0.1.2"
162
+ },
155
163
  "scripts": {}
156
164
  }
@@ -104,6 +104,7 @@
104
104
  "@deepseek-ai/dsh-compaction-basic",
105
105
  "@deepseek-ai/dsh-compaction-image-offload",
106
106
  "@deepseek-ai/dsh-compaction-tool-result-pruner",
107
+ "@deepseek-ai/dsh-computer-use",
107
108
  "@deepseek-ai/dsh-config-editor",
108
109
  "@deepseek-ai/dsh-cordis-client-runner",
109
110
  "@deepseek-ai/dsh-cordis-host-runner",
@@ -230,6 +231,7 @@
230
231
  "@deepseek-ai/dsh-system-prompt",
231
232
  "@deepseek-ai/dsh-terminal",
232
233
  "@deepseek-ai/dsh-terminal-bash",
234
+ "@deepseek-ai/dsh-tianti",
233
235
  "@deepseek-ai/dsh-time-context",
234
236
  "@deepseek-ai/dsh-timeout",
235
237
  "@deepseek-ai/dsh-tmux-context",
@@ -278,12 +280,8 @@
278
280
  "@deepseek-ai/dsh-workspace",
279
281
  "@deepseek-ai/dsh-workspace-changes",
280
282
  "@deepseek-ai/node-addon-system",
281
- "@deepseek-ai/node-addon-system-darwin-arm64",
282
- "@deepseek-ai/node-addon-system-darwin-x64",
283
- "@deepseek-ai/node-addon-system-linux-arm64",
284
- "@deepseek-ai/node-addon-system-linux-x64",
285
283
  "@deepseek-ai/schemastery"
286
284
  ],
287
- "fileCount": 3568,
288
- "byteCount": 66635266
285
+ "fileCount": 3603,
286
+ "byteCount": 68549295
289
287
  }
@@ -17,17 +17,22 @@ function selection(settings) {
17
17
  };
18
18
  }
19
19
  /** Parse one product-wide model preference without accepting partial records. */
20
- function sharedSelection(path) {
20
+ function sharedPreference(path) {
21
21
  try {
22
22
  const parsed = JSON.parse(readFileSync(path, "utf8"));
23
23
  if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) return void 0;
24
24
  const record = parsed;
25
25
  if (typeof record.provider !== "string" || record.provider.length === 0 || typeof record.model !== "string" || record.model.length === 0) return void 0;
26
- return selection({
26
+ const route = selection({
27
27
  provider: record.provider,
28
28
  model: record.model,
29
29
  ...typeof record.reasoningEffort === "string" && record.reasoningEffort.length > 0 ? { reasoningEffort: record.reasoningEffort } : {}
30
30
  });
31
+ const displayName = typeof record.displayName === "string" ? record.displayName.trim() : "";
32
+ return {
33
+ selection: route,
34
+ ...displayName === "" ? {} : { displayName }
35
+ };
31
36
  } catch (_error) {
32
37
  return;
33
38
  }
@@ -53,7 +58,7 @@ var AgentDefaultModelConfig = class extends Service {
53
58
  this.ownerContext = ownerContext;
54
59
  this.config = config;
55
60
  this.sharedPath = process.env[PRODUCT_VERSION_ENV]?.trim() ? join(resolveChatCodeCliHome(), SHARED_MODEL_FILENAME) : void 0;
56
- if (this.sharedPath !== void 0) this.shared = sharedSelection(existsSync(this.sharedPath) ? this.sharedPath : join(resolveChatCodeCliHome(), "tui", SHARED_MODEL_FILENAME));
61
+ if (this.sharedPath !== void 0) this.shared = sharedPreference(existsSync(this.sharedPath) ? this.sharedPath : join(resolveChatCodeCliHome(), "tui", SHARED_MODEL_FILENAME))?.selection;
57
62
  ownerContext.inject(["settings"], (child) => {
58
63
  child.effect(() => child.settings.configure({ auto: false }, ownerContext.fiber));
59
64
  });
@@ -71,10 +76,24 @@ var AgentDefaultModelConfig = class extends Service {
71
76
  ...reasoningEffort === void 0 ? {} : { reasoningEffort }
72
77
  });
73
78
  }
79
+ /** Read the latest shared display name without changing this process's model selection.
80
+ * @returns The saved provider/model/name tuple, or undefined for missing or invalid name metadata.
81
+ */
82
+ sharedDisplayName() {
83
+ if (this.sharedPath === void 0) return void 0;
84
+ const stored = sharedPreference(this.sharedPath);
85
+ if (stored?.displayName === void 0) return void 0;
86
+ return {
87
+ provider: stored.selection.provider,
88
+ model: stored.selection.model,
89
+ name: stored.displayName
90
+ };
91
+ }
74
92
  /**
75
93
  * Save the complete default model selection to the shared ChatCode Home file,
76
94
  * or the owning profile entry in other deployments. Saves commit in submission
77
95
  * order; a failed save rejects its caller without blocking later saves.
96
+ * A shared save also retains an available catalog name; metadata failures do not reject the route save.
78
97
  * @param next - resolved selection accepted by an entry point.
79
98
  * @returns fulfillment after the preference or optional profile write settles.
80
99
  */
@@ -89,7 +108,18 @@ var AgentDefaultModelConfig = class extends Service {
89
108
  if ((entry === void 0 || editor === void 0) && this.sharedPath === void 0) return;
90
109
  const saved = this.saves.then(async () => {
91
110
  if (this.sharedPath !== void 0) {
92
- await writeFileAtomic(this.sharedPath, `${JSON.stringify(config, null, 2)}\n`, {
111
+ const previous = this.sharedDisplayName();
112
+ let displayName = previous?.provider === config.provider && previous.model === config.model ? previous.name : void 0;
113
+ const llm = this.ctx.get("llm");
114
+ if (llm !== void 0) try {
115
+ const name = (await llm.listModels(config.provider)).find((model) => model.id === config.model)?.name.trim();
116
+ if (name !== void 0 && name !== "" && (name !== config.model || displayName === void 0)) displayName = name;
117
+ } catch (_error) {}
118
+ const preference = {
119
+ ...config,
120
+ ...displayName === void 0 ? {} : { displayName }
121
+ };
122
+ await writeFileAtomic(this.sharedPath, `${JSON.stringify(preference, null, 2)}\n`, {
93
123
  mode: 384,
94
124
  dirMode: 448
95
125
  });
@@ -43,10 +43,19 @@ export declare class AgentDefaultModelConfig extends Service {
43
43
  * @returns a detached provider, model, and optional reasoning selection.
44
44
  */
45
45
  currentSelection(): ModelSelection;
46
+ /** Read the latest shared display name without changing this process's model selection.
47
+ * @returns The saved provider/model/name tuple, or undefined for missing or invalid name metadata.
48
+ */
49
+ sharedDisplayName(): {
50
+ provider: string;
51
+ model: string;
52
+ name: string;
53
+ } | undefined;
46
54
  /**
47
55
  * Save the complete default model selection to the shared ChatCode Home file,
48
56
  * or the owning profile entry in other deployments. Saves commit in submission
49
57
  * order; a failed save rejects its caller without blocking later saves.
58
+ * A shared save also retains an available catalog name; metadata failures do not reject the route save.
50
59
  * @param next - resolved selection accepted by an entry point.
51
60
  * @returns fulfillment after the preference or optional profile write settles.
52
61
  */
@@ -34,7 +34,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
34
34
 
35
35
  | Package | Config | Description |
36
36
  |---|---|---|
37
- | `@deepseek-ai/dsh-config-editor` | no | Persist plugin configuration through profile patches and Loader reconciliation |
37
+ | `@deepseek-ai/dsh-config-editor` | yes | Persist plugin configuration through profile patches and Loader reconciliation |
38
38
  | `@deepseek-ai/dsh-hmr` | yes | Coordinated module and profile configuration hot reload |
39
39
  | `@deepseek-ai/dsh-plugin-manager` | yes | Current-profile plugin and bundle management shared by dsh CLI, Web and agent tools |
40
40
 
@@ -493,6 +493,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
493
493
 
494
494
  | Package | Config | Description |
495
495
  |---|---|---|
496
+ | `@deepseek-ai/dsh-tianti` | yes | Tianti commands, resource tools, and guided development delivery for ChatCode CLI |
496
497
  | `@deepseek-ai/dsh-tool-ralph` | yes | Model-facing fresh-agent Ralph loop over the workflow and subagent seams |
497
498
  | `@deepseek-ai/dsh-tool-workflow` | yes | Model-facing workflow tool: run a JavaScript orchestration script over ctx.workflowEngine |
498
499
  | `@deepseek-ai/dsh-workflow-ptc` | yes | Workflow orchestration in the shared sandboxed Node PTC runtime |
@@ -1069,6 +1069,8 @@ window.__ModuleLoader__.load({
1069
1069
  if (!generationAbort.signal.aborted) generationAbort.abort(/* @__PURE__ */ new Error(`${this.options.name} generation ended`));
1070
1070
  }
1071
1071
  }
1072
+ } catch (error) {
1073
+ throw terminalStreamFailure(error);
1072
1074
  } finally {
1073
1075
  if (!this.lifetime.signal.aborted) this.lifetime.abort(/* @__PURE__ */ new Error(`${this.options.name} consumer closed`));
1074
1076
  this.generationAbort?.abort(this.lifetime.signal.reason);
@@ -135,6 +135,10 @@ export class RemoteStream {
135
135
  }
136
136
  }
137
137
  }
138
+ catch (error) {
139
+ // Setup failures need the same marked outcome as failures from an opened stream.
140
+ throw terminalStreamFailure(error);
141
+ }
138
142
  finally {
139
143
  if (!this.lifetime.signal.aborted) {
140
144
  this.lifetime.abort(new Error(`${this.options.name} consumer closed`));
@@ -5340,6 +5340,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5340
5340
  })),
5341
5341
  "revision": number()
5342
5342
  });
5343
+ let _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_parameter_0$schema$value;
5344
+ const _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_parameter_0$schema = () => _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_parameter_0$schema$value ??= string();
5345
+ let _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_result$schema$value;
5346
+ const _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_result$schema = () => _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_result$schema$value ??= object({ "opened": literal(true).readonly() });
5343
5347
  let _deepseek_ai_dsh_api_settings_controller_settings_openSettingsDocument_result$schema$value;
5344
5348
  const _deepseek_ai_dsh_api_settings_controller_settings_openSettingsDocument_result$schema = () => _deepseek_ai_dsh_api_settings_controller_settings_openSettingsDocument_result$schema$value ??= object({ "opened": literal(true).readonly() });
5345
5349
  let _deepseek_ai_dsh_api_settings_controller_settings_replace_parameter_0$schema$value;
@@ -5625,6 +5629,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5625
5629
  "column": 9
5626
5630
  }
5627
5631
  },
5632
+ {
5633
+ id: "@deepseek-ai/dsh-api-settings-controller#settings/openNamespaceDocument",
5634
+ service: "settingsController",
5635
+ namespace: "settings",
5636
+ method: "openNamespaceDocument",
5637
+ invocation: { kind: "direct" },
5638
+ parameters: [{
5639
+ name: "ns",
5640
+ wire: "ns",
5641
+ source: "json",
5642
+ codec: {
5643
+ mode: "strict",
5644
+ typeSymbol: "@deepseek-ai/dsh-api-settings-controller#settings/openNamespaceDocument:ns",
5645
+ create: _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_parameter_0$schema
5646
+ }
5647
+ }],
5648
+ cancellation: { parameter: "signal" },
5649
+ result: {
5650
+ mode: "strict",
5651
+ typeSymbol: "@deepseek-ai/dsh-api-settings-controller/types#SettingsDocumentOpenValue",
5652
+ create: _deepseek_ai_dsh_api_settings_controller_settings_openNamespaceDocument_result$schema
5653
+ },
5654
+ sourceLocation: {
5655
+ "file": "packages/api/settings-controller/src/index.ts",
5656
+ "line": 178,
5657
+ "column": 9
5658
+ }
5659
+ },
5628
5660
  {
5629
5661
  id: "@deepseek-ai/dsh-api-settings-controller#settings/openSettingsDocument",
5630
5662
  service: "settingsController",
@@ -10357,13 +10389,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10357
10389
  "model": string().readonly(),
10358
10390
  "reasoningEffort": string().readonly().optional()
10359
10391
  }).readonly(),
10392
+ "savedDisplayName": object({
10393
+ "provider": string().readonly(),
10394
+ "model": string().readonly(),
10395
+ "name": string().readonly()
10396
+ }).readonly().optional(),
10360
10397
  "routableProviders": array(string()).readonly(),
10361
10398
  "groups": array(object({
10362
10399
  "id": string().readonly(),
10363
10400
  "name": string().readonly(),
10401
+ "custom": boolean().readonly().optional(),
10364
10402
  "models": array(object({
10365
10403
  "id": string().readonly(),
10366
10404
  "name": string().readonly(),
10405
+ "inputModalities": array(union([literal("text"), literal("image")])).readonly().optional(),
10367
10406
  "description": string().readonly().optional(),
10368
10407
  "reasoning": object({
10369
10408
  "efforts": array(object({
@@ -499,6 +499,7 @@ function agentModelSelection(selection) {
499
499
  */
500
500
  async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefaultModel.currentSelection()) {
501
501
  const providers = ctx.llm.listProviders();
502
+ const customProviders = new Set(ctx.llm.listConfigurableProviders().filter((provider) => provider.settingsNs === "llm-pi-ai" && provider.declared === true).map((provider) => provider.provider));
502
503
  const catalog = await Promise.all(providers.map(async (provider) => {
503
504
  try {
504
505
  const models = await ctx.llm.listModels(provider.id);
@@ -515,6 +516,7 @@ async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefaultModel.c
515
516
  return {
516
517
  id: model.id,
517
518
  name: model.name,
519
+ ...resolved.inputModalities === void 0 ? {} : { inputModalities: [...resolved.inputModalities] },
518
520
  ...model.description === void 0 ? {} : { description: model.description },
519
521
  ...reasoning === void 0 ? {} : { reasoning }
520
522
  };
@@ -524,7 +526,8 @@ async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefaultModel.c
524
526
  group: {
525
527
  id: provider.id,
526
528
  name: provider.name,
527
- models: entries
529
+ models: entries,
530
+ ...customProviders.has(provider.id) ? { custom: true } : {}
528
531
  }
529
532
  };
530
533
  } catch (error) {
@@ -539,8 +542,10 @@ async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefaultModel.c
539
542
  }
540
543
  }));
541
544
  const groups = catalog.flatMap((item) => item.kind === "group" ? [item.group] : []).filter((group) => group.models.length > 0);
545
+ const savedDisplayName = ctx.agentDefaultModel.sharedDisplayName();
542
546
  return {
543
547
  default: { ...defaultSelection },
548
+ ...savedDisplayName === void 0 ? {} : { savedDisplayName },
544
549
  routableProviders: groups.map((group) => group.id),
545
550
  groups,
546
551
  failures: catalog.flatMap((item) => item.kind === "failure" ? [item.failure] : [])
@@ -492,13 +492,20 @@ const _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema
492
492
  'model': z.string().readonly(),
493
493
  'reasoningEffort': z.string().readonly().optional(),
494
494
  }).readonly(),
495
+ 'savedDisplayName': z.object({
496
+ 'provider': z.string().readonly(),
497
+ 'model': z.string().readonly(),
498
+ 'name': z.string().readonly(),
499
+ }).readonly().optional(),
495
500
  'routableProviders': z.array(z.string()).readonly(),
496
501
  'groups': z.array(z.object({
497
502
  'id': z.string().readonly(),
498
503
  'name': z.string().readonly(),
504
+ 'custom': z.boolean().readonly().optional(),
499
505
  'models': z.array(z.object({
500
506
  'id': z.string().readonly(),
501
507
  'name': z.string().readonly(),
508
+ 'inputModalities': z.array(z.union([z.literal("text"), z.literal("image")])).readonly().optional(),
502
509
  'description': z.string().readonly().optional(),
503
510
  'reasoning': z.object({
504
511
  'efforts': z.array(z.object({
@@ -1778,7 +1785,7 @@ export const TYPERT = {
1778
1785
  },
1779
1786
  {
1780
1787
  "name": "ModelCatalog",
1781
- "declaration": "export interface ModelCatalog {\n readonly default: ModelSelection;\n readonly routableProviders: readonly string[];\n readonly groups: readonly ModelProviderGroup[];\n readonly failures: readonly ModelCatalogFailure[];\n}"
1788
+ "declaration": "export interface ModelCatalog {\n readonly default: ModelSelection;\n readonly savedDisplayName?: { readonly provider: string; readonly model: string; readonly name: string; };\n readonly routableProviders: readonly string[];\n readonly groups: readonly ModelProviderGroup[];\n readonly failures: readonly ModelCatalogFailure[];\n}"
1782
1789
  },
1783
1790
  {
1784
1791
  "name": "ModelCatalogFailure",
@@ -1786,7 +1793,7 @@ export const TYPERT = {
1786
1793
  },
1787
1794
  {
1788
1795
  "name": "ModelCatalogModel",
1789
- "declaration": "export interface ModelCatalogModel {\n readonly id: string;\n readonly name: string;\n readonly description?: string;\n readonly reasoning?: ModelReasoning;\n}"
1796
+ "declaration": "export interface ModelCatalogModel {\n readonly id: string;\n readonly name: string;\n readonly inputModalities?: readonly ('text' | 'image')[];\n readonly description?: string;\n readonly reasoning?: ModelReasoning;\n}"
1790
1797
  },
1791
1798
  {
1792
1799
  "name": "ModelMessageSource",
@@ -1794,7 +1801,7 @@ export const TYPERT = {
1794
1801
  },
1795
1802
  {
1796
1803
  "name": "ModelProviderGroup",
1797
- "declaration": "export interface ModelProviderGroup {\n readonly id: string;\n readonly name: string;\n readonly models: readonly ModelCatalogModel[];\n}"
1804
+ "declaration": "export interface ModelProviderGroup {\n readonly id: string;\n readonly name: string;\n readonly custom?: boolean;\n readonly models: readonly ModelCatalogModel[];\n}"
1798
1805
  },
1799
1806
  {
1800
1807
  "name": "ModelReasoning",
@@ -492,13 +492,20 @@ const _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema
492
492
  'model': z.string().readonly(),
493
493
  'reasoningEffort': z.string().readonly().optional(),
494
494
  }).readonly(),
495
+ 'savedDisplayName': z.object({
496
+ 'provider': z.string().readonly(),
497
+ 'model': z.string().readonly(),
498
+ 'name': z.string().readonly(),
499
+ }).readonly().optional(),
495
500
  'routableProviders': z.array(z.string()).readonly(),
496
501
  'groups': z.array(z.object({
497
502
  'id': z.string().readonly(),
498
503
  'name': z.string().readonly(),
504
+ 'custom': z.boolean().readonly().optional(),
499
505
  'models': z.array(z.object({
500
506
  'id': z.string().readonly(),
501
507
  'name': z.string().readonly(),
508
+ 'inputModalities': z.array(z.union([z.literal("text"), z.literal("image")])).readonly().optional(),
502
509
  'description': z.string().readonly().optional(),
503
510
  'reasoning': z.object({
504
511
  'efforts': z.array(z.object({
@@ -9,6 +9,9 @@ import { credentialRef } from '@deepseek-ai/dsh-credentials';
9
9
  */
10
10
  export async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefaultModel.currentSelection()) {
11
11
  const providers = ctx.llm.listProviders();
12
+ const customProviders = new Set(ctx.llm.listConfigurableProviders()
13
+ .filter(provider => provider.settingsNs === 'llm-pi-ai' && provider.declared === true)
14
+ .map(provider => provider.provider));
12
15
  const catalog = await Promise.all(providers.map(async (provider) => {
13
16
  try {
14
17
  const models = await ctx.llm.listModels(provider.id);
@@ -29,13 +32,15 @@ export async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefault
29
32
  return {
30
33
  id: model.id,
31
34
  name: model.name,
35
+ ...(resolved.inputModalities === undefined ? {} : { inputModalities: [...resolved.inputModalities] }),
32
36
  ...(model.description === undefined ? {} : { description: model.description }),
33
37
  ...(reasoning === undefined ? {} : { reasoning }),
34
38
  };
35
39
  }));
36
40
  return {
37
41
  kind: 'group',
38
- group: { id: provider.id, name: provider.name, models: entries },
42
+ group: { id: provider.id, name: provider.name, models: entries,
43
+ ...(customProviders.has(provider.id) ? { custom: true } : {}) },
39
44
  };
40
45
  }
41
46
  catch (error) {
@@ -51,8 +56,10 @@ export async function buildModelCatalog(ctx, defaultSelection = ctx.agentDefault
51
56
  }));
52
57
  const groups = catalog.flatMap(item => item.kind === 'group' ? [item.group] : [])
53
58
  .filter(group => group.models.length > 0);
59
+ const savedDisplayName = ctx.agentDefaultModel.sharedDisplayName();
54
60
  return {
55
61
  default: { ...defaultSelection },
62
+ ...savedDisplayName === undefined ? {} : { savedDisplayName },
56
63
  routableProviders: groups.map(group => group.id),
57
64
  groups,
58
65
  failures: catalog.flatMap(item => item.kind === 'failure' ? [item.failure] : []),
@@ -122,6 +122,8 @@ export interface ModelReasoning {
122
122
  export interface ModelCatalogModel {
123
123
  readonly id: string;
124
124
  readonly name: string;
125
+ /** Input types accepted by the exact model route; omission leaves capability unspecified. */
126
+ readonly inputModalities?: readonly ('text' | 'image')[];
125
127
  readonly description?: string;
126
128
  readonly reasoning?: ModelReasoning;
127
129
  }
@@ -129,6 +131,8 @@ export interface ModelCatalogModel {
129
131
  export interface ModelProviderGroup {
130
132
  readonly id: string;
131
133
  readonly name: string;
134
+ /** User-declared route; presentation groups these without changing provider identities. */
135
+ readonly custom?: boolean;
132
136
  readonly models: readonly ModelCatalogModel[];
133
137
  }
134
138
  /** One provider whose model catalog lookup failed. */
@@ -140,6 +144,12 @@ export interface ModelCatalogFailure {
140
144
  /** Host-generation model catalog and the default used by unconfigured Sessions. */
141
145
  export interface ModelCatalog {
142
146
  readonly default: ModelSelection;
147
+ /** Latest shared display name; presentation may use it only for the exact provider/model pair. */
148
+ readonly savedDisplayName?: {
149
+ readonly provider: string;
150
+ readonly model: string;
151
+ readonly name: string;
152
+ };
143
153
  /** Provider routes with at least one currently available catalog model. */
144
154
  readonly routableProviders: readonly string[];
145
155
  readonly groups: readonly ModelProviderGroup[];
@@ -301,6 +301,7 @@ let SettingsController = (() => {
301
301
  let _replace_decorators;
302
302
  let _mutate_decorators;
303
303
  let _openSettingsDocument_decorators;
304
+ let _openNamespaceDocument_decorators;
304
305
  return class SettingsController extends _classSuper {
305
306
  static {
306
307
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -309,6 +310,7 @@ let SettingsController = (() => {
309
310
  _replace_decorators = [Remote];
310
311
  _mutate_decorators = [Remote];
311
312
  _openSettingsDocument_decorators = [Remote];
313
+ _openNamespaceDocument_decorators = [Remote];
312
314
  __esDecorate(this, null, _describe_decorators, {
313
315
  kind: "method",
314
316
  name: "describe",
@@ -364,6 +366,17 @@ let SettingsController = (() => {
364
366
  },
365
367
  metadata: _metadata
366
368
  }, null, _instanceExtraInitializers);
369
+ __esDecorate(this, null, _openNamespaceDocument_decorators, {
370
+ kind: "method",
371
+ name: "openNamespaceDocument",
372
+ static: false,
373
+ private: false,
374
+ access: {
375
+ has: (obj) => "openNamespaceDocument" in obj,
376
+ get: (obj) => obj.openNamespaceDocument
377
+ },
378
+ metadata: _metadata
379
+ }, null, _instanceExtraInitializers);
367
380
  if (_metadata) Object.defineProperty(this, Symbol.metadata, {
368
381
  enumerable: true,
369
382
  configurable: true,
@@ -439,11 +452,25 @@ let SettingsController = (() => {
439
452
  * @throws RemoteError when no document exists, preparation fails, or opening fails.
440
453
  */
441
454
  async openSettingsDocument(signal) {
455
+ return this.openDocument(void 0, signal);
456
+ }
457
+ /** Open the document owning a registered namespace, including shared home-level model configuration.
458
+ * @param ns Registered settings namespace; the Host resolves its owning path.
459
+ * @param signal Caller lifetime before native handoff.
460
+ * @returns Confirmation once the native editor accepts the document.
461
+ * @throws RemoteError for invalid namespaces, preparation failure or rejected native handoff.
462
+ */
463
+ async openNamespaceDocument(ns, signal) {
464
+ const parsed = settingsNamespaceRequestSchema.safeParse({ ns });
465
+ if (!parsed.success) throw new RemoteError("gateway/bad-request", "invalid settings namespace", {});
466
+ return this.openDocument(parsed.data.ns, signal);
467
+ }
468
+ async openDocument(namespace, signal) {
442
469
  const settings = this.provider();
443
470
  if (isAborted(signal)) throw new RemoteError("gateway/cancelled", "settings document open was aborted", {});
444
471
  let path;
445
472
  try {
446
- path = await settings.prepareDocument();
473
+ path = await settings.prepareDocument(namespace);
447
474
  } catch (error) {
448
475
  if (isAborted(signal)) throw new RemoteError("gateway/cancelled", "settings document preparation was aborted", {});
449
476
  throw new RemoteError("gateway/internal", `settings document preparation failed: ${messageOf(error)}`, {}, { cause: error });