dsh-agent-plugins-market 0.9.0 → 0.9.2

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 (358) hide show
  1. package/README.md +64 -154
  2. package/README.zh.md +74 -164
  3. package/assets/dsh-agent-plugins.png +0 -0
  4. package/client/client.js +5371 -1085
  5. package/client/client.js.map +1 -1
  6. package/lib/index.js +2 -257
  7. package/lib/{application → packages/market-bundle/src/application}/catalog.js +207 -41
  8. package/lib/{application → packages/market-bundle/src/application}/details.js +73 -29
  9. package/lib/packages/market-bundle/src/application/extension-inventory.js +408 -0
  10. package/lib/packages/market-bundle/src/application/extension-project.js +64 -0
  11. package/lib/packages/market-bundle/src/application/resource-inventory.js +96 -0
  12. package/lib/packages/market-bundle/src/application/server-config.js +9 -0
  13. package/lib/packages/market-bundle/src/application/suite-queries.js +86 -0
  14. package/lib/packages/market-bundle/src/index.js +372 -0
  15. package/lib/{runtime/host → packages/market-bundle/src/platform}/feedback-tool.js +2 -2
  16. package/lib/{runtime/host → packages/market-bundle/src/platform}/settings-namespace.js +55 -7
  17. package/lib/packages/market-bundle/src/platform/settings-schema.js +25 -0
  18. package/lib/packages/market-bundle/src/routes-extension-presets.js +161 -0
  19. package/lib/packages/market-bundle/src/routes-resources.js +127 -0
  20. package/lib/{routes.js → packages/market-bundle/src/routes.js} +225 -21
  21. package/lib/packages/market-bundle/src/runtime-adapters.js +57 -0
  22. package/lib/packages/market-bundle/src/session-extension.js +337 -0
  23. package/lib/{application → packages/market-catalog/src/application}/catalog-context.js +7 -4
  24. package/lib/{application → packages/market-catalog/src/application}/install-store.js +3 -3
  25. package/lib/{application → packages/market-catalog/src/application}/snapshot-cache.js +100 -11
  26. package/lib/{application → packages/market-catalog/src/application}/source-store.js +24 -11
  27. package/lib/{application → packages/market-catalog/src/application}/state/state-store.js +1 -1
  28. package/lib/{application → packages/market-catalog/src/application}/state/storage-migration.js +1 -1
  29. package/lib/packages/market-catalog/src/index.js +19 -0
  30. package/lib/{catalog → packages/market-catalog/src/scanning}/archive.js +1 -1
  31. package/lib/{catalog → packages/market-catalog/src/scanning}/codex-mcp.js +1 -1
  32. package/lib/{catalog → packages/market-catalog/src/scanning}/component-files.js +2 -2
  33. package/lib/{catalog → packages/market-catalog/src/scanning}/manifests.js +2 -2
  34. package/lib/{catalog → packages/market-catalog/src/scanning}/native-project.js +1 -1
  35. package/lib/{catalog → packages/market-catalog/src/scanning}/paths.js +1 -1
  36. package/lib/{catalog → packages/market-catalog/src/scanning}/plugin-variables.js +21 -1
  37. package/lib/{catalog → packages/market-catalog/src/scanning}/scan-resolvers.js +35 -2
  38. package/lib/{catalog → packages/market-catalog/src/scanning}/skills-parse.js +40 -10
  39. package/lib/{catalog → packages/market-catalog/src/scanning}/validate.js +15 -2
  40. package/lib/packages/market-contracts/src/contracts/extension-presets.js +125 -0
  41. package/lib/{contracts → packages/market-contracts/src/contracts}/market.js +33 -5
  42. package/lib/packages/market-contracts/src/contracts/mcp-overrides.js +2 -0
  43. package/lib/packages/market-contracts/src/contracts/resource-window.js +29 -0
  44. package/lib/packages/market-contracts/src/contracts/settings.js +130 -0
  45. package/lib/packages/market-contracts/src/contracts/surface-toggles.js +29 -0
  46. package/lib/packages/market-contracts/src/contracts/translation.js +28 -0
  47. package/lib/packages/market-contracts/src/index.js +4 -0
  48. package/lib/{model → packages/market-contracts/src/model}/layouts.js +11 -0
  49. package/lib/{application → packages/market-contracts/src/ports}/ports.js +3 -0
  50. package/lib/{application/mcp/mcp-redaction.js → packages/market-contracts/src/redaction.js} +17 -1
  51. package/lib/{application → packages/market-lsp/src/application}/lsp/lsp-direct-config.js +2 -2
  52. package/lib/{application → packages/market-lsp/src/application}/lsp/lsp-server-state.js +1 -1
  53. package/lib/{application → packages/market-lsp/src/application}/lsp/lsp-status.js +20 -3
  54. package/lib/{application → packages/market-lsp/src/application}/lsp/profile-seam.js +1 -1
  55. package/lib/packages/market-lsp/src/application/lsp/validation.js +46 -0
  56. package/lib/{application → packages/market-lsp/src/application}/lsp-service.js +61 -3
  57. package/lib/packages/market-lsp/src/index.js +8 -0
  58. package/lib/{runtime → packages/market-lsp/src/runtime}/lsp/lsp-mounts.js +79 -40
  59. package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-backend.js +0 -16
  60. package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-config.js +104 -21
  61. package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-direct-config.js +12 -4
  62. package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-overrides.js +4 -4
  63. package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-status.js +49 -10
  64. package/lib/packages/market-mcp/src/application/mcp/validation.js +63 -0
  65. package/lib/{application → packages/market-mcp/src/application}/mcp-service.js +111 -91
  66. package/lib/packages/market-mcp/src/index.js +10 -0
  67. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/bridge.js +12 -9
  68. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/connection.js +1 -1
  69. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/oauth.js +1 -1
  70. package/lib/packages/market-mcp/src/runtime/mcp/bridge/tool-ownership.js +26 -0
  71. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/tools.js +1 -1
  72. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-auth-record.js +35 -4
  73. package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-mounts.js +35 -4
  74. package/lib/packages/market-runtime/src/adapter-contracts.js +1 -0
  75. package/lib/packages/market-runtime/src/application/command-resources.js +74 -0
  76. package/lib/packages/market-runtime/src/application/extension-authorization.js +27 -0
  77. package/lib/packages/market-runtime/src/application/extension-hook-selection.js +56 -0
  78. package/lib/packages/market-runtime/src/application/extension-suite-declarations.js +57 -0
  79. package/lib/packages/market-runtime/src/application/extension-suite-selection.js +84 -0
  80. package/lib/packages/market-runtime/src/application/fs-probe.js +43 -0
  81. package/lib/packages/market-runtime/src/application/panel-resources.js +370 -0
  82. package/lib/{application → packages/market-runtime/src/application}/panels/user-hooks.js +2 -2
  83. package/lib/{application → packages/market-runtime/src/application}/panels/user-store.js +53 -13
  84. package/lib/{application → packages/market-runtime/src/application}/project-agent-roles.js +20 -11
  85. package/lib/packages/market-runtime/src/application/state/extension-presets.js +144 -0
  86. package/lib/packages/market-runtime/src/application/state/resource-favorites.js +90 -0
  87. package/lib/packages/market-runtime/src/application/state/resource-filters.js +2 -0
  88. package/lib/packages/market-runtime/src/application/state/surface-toggles.js +10 -0
  89. package/lib/packages/market-runtime/src/application/state/workspace-policy.js +56 -0
  90. package/lib/packages/market-runtime/src/catalog-port.js +1 -0
  91. package/lib/packages/market-runtime/src/extension-service.js +1 -0
  92. package/lib/packages/market-runtime/src/index.js +31 -0
  93. package/lib/{runtime → packages/market-runtime/src/runtime}/agents/agent-role-router.js +74 -79
  94. package/lib/packages/market-runtime/src/runtime/agents/agent-teams-seat.js +58 -0
  95. package/lib/{runtime → packages/market-runtime/src/runtime}/agents/subagent-catalog.js +89 -21
  96. package/lib/packages/market-runtime/src/runtime/agents/team-coordination.js +51 -0
  97. package/lib/packages/market-runtime/src/runtime/agents/teammate-role-runtime.js +241 -0
  98. package/lib/packages/market-runtime/src/runtime/agents/teammate-role-tool.js +130 -0
  99. package/lib/{runtime → packages/market-runtime/src/runtime}/core/reconcile-scheduler.js +2 -2
  100. package/lib/packages/market-runtime/src/runtime/core/reconciler.js +457 -0
  101. package/lib/packages/market-runtime/src/runtime/host/command-name-allocator.js +168 -0
  102. package/lib/packages/market-runtime/src/runtime/host/extension-progress.js +120 -0
  103. package/lib/packages/market-runtime/src/runtime/host/extension-runtime.js +405 -0
  104. package/lib/packages/market-runtime/src/runtime/host/extension-session-state.js +839 -0
  105. package/lib/packages/market-runtime/src/runtime/host/extension-tool-gates.js +96 -0
  106. package/lib/{runtime → packages/market-runtime/src/runtime}/host/failure-detail.js +1 -1
  107. package/lib/{runtime → packages/market-runtime/src/runtime}/host/host-locale.js +2 -0
  108. package/lib/packages/market-runtime/src/runtime/host/menu-row-identities.js +38 -0
  109. package/lib/packages/market-runtime/src/runtime/host/resource-filter-service.js +81 -0
  110. package/lib/packages/market-runtime/src/runtime/host/scoped-contributors.js +304 -0
  111. package/lib/packages/market-runtime/src/runtime/host/surface-toggle-service.js +15 -0
  112. package/lib/packages/market-runtime/src/runtime/panels/user-commands.js +211 -0
  113. package/lib/{runtime → packages/market-runtime/src/runtime}/panels/user-panels.js +34 -14
  114. package/lib/packages/market-runtime/src/runtime/surfaces/commands-mounts.js +256 -0
  115. package/lib/packages/market-runtime/src/runtime/surfaces/extension-hooks.js +294 -0
  116. package/lib/packages/market-runtime/src/runtime/surfaces/hook-dry-run.js +122 -0
  117. package/lib/{runtime → packages/market-runtime/src/runtime}/surfaces/hooks-mounts.js +1 -1
  118. package/lib/{runtime → packages/market-runtime/src/runtime}/surfaces/project-runtime.js +23 -13
  119. package/lib/packages/market-runtime/src/runtime/surfaces/skills-provider.js +241 -0
  120. package/lib/packages/market-translation/src/application/state/translation-cache.js +122 -0
  121. package/lib/packages/market-translation/src/application/translation/chain.js +99 -0
  122. package/lib/packages/market-translation/src/application/translation/document.js +384 -0
  123. package/lib/packages/market-translation/src/application/translation/localizer.js +642 -0
  124. package/lib/packages/market-translation/src/application/translation/service.js +113 -0
  125. package/lib/packages/market-translation/src/application/translation/unit.js +19 -0
  126. package/lib/packages/market-translation/src/index.js +4 -0
  127. package/lib/packages/market-translation/src/runtime/host/llm-translator.js +278 -0
  128. package/lib/packages/market-translation/src/runtime/host/machine-translator.js +152 -0
  129. package/lib/packages/market-translation/src/runtime/host/text-masking.js +96 -0
  130. package/lib/packages/market-translation/src/runtime/host/translation-providers.js +116 -0
  131. package/lib/types/index.d.ts +2 -130
  132. package/lib/types/{application → packages/market-bundle/src/application}/catalog.d.ts +117 -22
  133. package/lib/types/packages/market-bundle/src/application/details.d.ts +24 -0
  134. package/lib/types/packages/market-bundle/src/application/extension-inventory.d.ts +45 -0
  135. package/lib/types/packages/market-bundle/src/application/extension-project.d.ts +26 -0
  136. package/lib/types/packages/market-bundle/src/application/resource-inventory.d.ts +42 -0
  137. package/lib/types/packages/market-bundle/src/application/server-config.d.ts +9 -0
  138. package/lib/types/packages/market-bundle/src/application/suite-queries.d.ts +84 -0
  139. package/lib/types/packages/market-bundle/src/index.d.ts +125 -0
  140. package/lib/types/{runtime/host → packages/market-bundle/src/platform}/settings-namespace.d.ts +44 -9
  141. package/lib/types/{application/mcp/mcp-backend.d.ts → packages/market-bundle/src/platform/settings-schema.d.ts} +13 -28
  142. package/lib/types/packages/market-bundle/src/routes-extension-presets.d.ts +15 -0
  143. package/lib/types/packages/market-bundle/src/routes-resources.d.ts +17 -0
  144. package/lib/types/packages/market-bundle/src/routes.d.ts +32 -0
  145. package/lib/types/packages/market-bundle/src/runtime-adapters.d.ts +42 -0
  146. package/lib/types/packages/market-bundle/src/session-extension.d.ts +62 -0
  147. package/lib/types/{application → packages/market-catalog/src/application}/catalog-context.d.ts +11 -3
  148. package/lib/types/{application → packages/market-catalog/src/application}/install-store.d.ts +1 -1
  149. package/lib/types/{application → packages/market-catalog/src/application}/regions.d.ts +1 -1
  150. package/lib/types/{application → packages/market-catalog/src/application}/snapshot-cache.d.ts +44 -2
  151. package/lib/types/{application → packages/market-catalog/src/application}/source-store.d.ts +12 -3
  152. package/lib/types/{application → packages/market-catalog/src/application}/state/state-store.d.ts +1 -1
  153. package/lib/types/packages/market-catalog/src/index.d.ts +22 -0
  154. package/lib/types/{catalog → packages/market-catalog/src/scanning}/archive.d.ts +1 -1
  155. package/lib/types/{catalog → packages/market-catalog/src/scanning}/codex-mcp.d.ts +1 -1
  156. package/lib/types/{catalog → packages/market-catalog/src/scanning}/component-files.d.ts +1 -1
  157. package/lib/types/{catalog → packages/market-catalog/src/scanning}/lsp-spec.d.ts +1 -1
  158. package/lib/types/{catalog → packages/market-catalog/src/scanning}/manifests.d.ts +3 -3
  159. package/lib/types/{catalog → packages/market-catalog/src/scanning}/native-project.d.ts +2 -2
  160. package/lib/types/{catalog → packages/market-catalog/src/scanning}/plugin-variables.d.ts +12 -1
  161. package/lib/types/{catalog → packages/market-catalog/src/scanning}/project-config.d.ts +2 -2
  162. package/lib/types/{catalog → packages/market-catalog/src/scanning}/project-hooks.d.ts +2 -2
  163. package/lib/types/{catalog → packages/market-catalog/src/scanning}/scan-pipeline.d.ts +1 -1
  164. package/lib/types/{catalog → packages/market-catalog/src/scanning}/scan-resolvers.d.ts +3 -3
  165. package/lib/types/{catalog → packages/market-catalog/src/scanning}/source-catalog.d.ts +1 -1
  166. package/lib/types/{catalog → packages/market-catalog/src/scanning}/suite-components.d.ts +1 -1
  167. package/lib/types/{catalog → packages/market-catalog/src/scanning}/suite-scanner.d.ts +1 -1
  168. package/lib/types/{catalog → packages/market-catalog/src/scanning}/surfaces.d.ts +1 -1
  169. package/lib/types/{catalog → packages/market-catalog/src/scanning}/validate.d.ts +1 -1
  170. package/lib/types/packages/market-contracts/src/contracts/extension-presets.d.ts +237 -0
  171. package/lib/types/{contracts → packages/market-contracts/src/contracts}/market.d.ts +87 -16
  172. package/lib/types/packages/market-contracts/src/contracts/mcp-overrides.d.ts +39 -0
  173. package/lib/types/{contracts → packages/market-contracts/src/contracts}/mcp-status.d.ts +9 -0
  174. package/lib/types/packages/market-contracts/src/contracts/resource-window.d.ts +70 -0
  175. package/lib/types/packages/market-contracts/src/contracts/settings.d.ts +121 -0
  176. package/lib/types/packages/market-contracts/src/contracts/surface-toggles.d.ts +28 -0
  177. package/lib/types/packages/market-contracts/src/contracts/translation.d.ts +81 -0
  178. package/lib/types/{runtime → packages/market-contracts/src}/host/plugin-message-source.d.ts +1 -1
  179. package/lib/types/packages/market-contracts/src/index.d.ts +5 -0
  180. package/lib/types/{model → packages/market-contracts/src/model}/layouts.d.ts +7 -0
  181. package/lib/types/{model → packages/market-contracts/src/model}/types.d.ts +2 -2
  182. package/lib/types/packages/market-contracts/src/ports/ports.d.ts +183 -0
  183. package/lib/types/{application → packages/market-contracts/src/ports}/queries.d.ts +27 -6
  184. package/lib/types/{application/mcp/mcp-redaction.d.ts → packages/market-contracts/src/redaction.d.ts} +2 -0
  185. package/lib/types/{application → packages/market-lsp/src/application}/lsp/lsp-direct-config.d.ts +1 -1
  186. package/lib/types/{application → packages/market-lsp/src/application}/lsp/lsp-status.d.ts +21 -5
  187. package/lib/types/packages/market-lsp/src/application/lsp/validation.d.ts +8 -0
  188. package/lib/types/{application → packages/market-lsp/src/application}/lsp-service.d.ts +19 -6
  189. package/lib/types/packages/market-lsp/src/index.d.ts +8 -0
  190. package/lib/types/{runtime → packages/market-lsp/src/runtime}/lsp/lsp-mounts.d.ts +26 -6
  191. package/lib/types/packages/market-mcp/src/application/mcp/mcp-backend.d.ts +28 -0
  192. package/lib/types/{application → packages/market-mcp/src/application}/mcp/mcp-bridge-config.d.ts +1 -1
  193. package/lib/types/{application → packages/market-mcp/src/application}/mcp/mcp-config.d.ts +2 -2
  194. package/lib/types/{application → packages/market-mcp/src/application}/mcp/mcp-direct-config.d.ts +6 -1
  195. package/lib/types/{application → packages/market-mcp/src/application}/mcp/mcp-overrides.d.ts +4 -38
  196. package/lib/types/packages/market-mcp/src/application/mcp/mcp-status.d.ts +40 -0
  197. package/lib/types/{application/server-config.d.ts → packages/market-mcp/src/application/mcp/validation.d.ts} +2 -10
  198. package/lib/types/{application → packages/market-mcp/src/application}/mcp-service.d.ts +22 -16
  199. package/lib/types/packages/market-mcp/src/index.d.ts +12 -0
  200. package/lib/types/packages/market-mcp/src/runtime/mcp/bridge/tool-ownership.d.ts +14 -0
  201. package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-auth-record.d.ts +4 -0
  202. package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-mounts.d.ts +19 -3
  203. package/lib/types/packages/market-runtime/src/adapter-contracts.d.ts +89 -0
  204. package/lib/types/{application → packages/market-runtime/src/application}/agent-roles.d.ts +2 -0
  205. package/lib/types/packages/market-runtime/src/application/command-resources.d.ts +26 -0
  206. package/lib/types/packages/market-runtime/src/application/extension-authorization.d.ts +12 -0
  207. package/lib/types/packages/market-runtime/src/application/extension-hook-selection.d.ts +23 -0
  208. package/lib/types/packages/market-runtime/src/application/extension-suite-declarations.d.ts +10 -0
  209. package/lib/types/packages/market-runtime/src/application/extension-suite-selection.d.ts +30 -0
  210. package/lib/types/packages/market-runtime/src/application/fs-probe.d.ts +12 -0
  211. package/lib/types/packages/market-runtime/src/application/panel-resources.d.ts +100 -0
  212. package/lib/types/{application → packages/market-runtime/src/application}/panels/user-hooks.d.ts +1 -1
  213. package/lib/types/packages/market-runtime/src/application/project-agent-roles.d.ts +10 -0
  214. package/lib/types/packages/market-runtime/src/application/state/extension-presets.d.ts +24 -0
  215. package/lib/types/packages/market-runtime/src/application/state/resource-favorites.d.ts +9 -0
  216. package/lib/types/packages/market-runtime/src/application/state/resource-filters.d.ts +2 -0
  217. package/lib/types/packages/market-runtime/src/application/state/surface-toggles.d.ts +6 -0
  218. package/lib/types/packages/market-runtime/src/application/state/workspace-policy.d.ts +19 -0
  219. package/lib/types/packages/market-runtime/src/catalog-port.d.ts +30 -0
  220. package/lib/types/packages/market-runtime/src/extension-service.d.ts +14 -0
  221. package/lib/types/packages/market-runtime/src/index.d.ts +41 -0
  222. package/lib/types/{runtime → packages/market-runtime/src/runtime}/agents/agent-role-router.d.ts +66 -31
  223. package/lib/types/packages/market-runtime/src/runtime/agents/agent-teams-seat.d.ts +41 -0
  224. package/lib/types/{runtime → packages/market-runtime/src/runtime}/agents/subagent-catalog.d.ts +34 -2
  225. package/lib/types/packages/market-runtime/src/runtime/agents/team-coordination.d.ts +8 -0
  226. package/lib/types/packages/market-runtime/src/runtime/agents/teammate-role-runtime.d.ts +74 -0
  227. package/lib/types/packages/market-runtime/src/runtime/agents/teammate-role-tool.d.ts +6 -0
  228. package/lib/types/{runtime → packages/market-runtime/src/runtime}/core/reconcile-scheduler.d.ts +5 -2
  229. package/lib/types/packages/market-runtime/src/runtime/core/reconciler.d.ts +141 -0
  230. package/lib/types/packages/market-runtime/src/runtime/host/command-name-allocator.d.ts +132 -0
  231. package/lib/types/packages/market-runtime/src/runtime/host/extension-progress.d.ts +91 -0
  232. package/lib/types/packages/market-runtime/src/runtime/host/extension-runtime.d.ts +77 -0
  233. package/lib/types/packages/market-runtime/src/runtime/host/extension-session-state.d.ts +242 -0
  234. package/lib/types/packages/market-runtime/src/runtime/host/extension-tool-gates.d.ts +38 -0
  235. package/lib/types/{runtime → packages/market-runtime/src/runtime}/host/host-locale.d.ts +1 -1
  236. package/lib/types/packages/market-runtime/src/runtime/host/menu-row-identities.d.ts +50 -0
  237. package/lib/types/{runtime → packages/market-runtime/src/runtime}/host/model-catalog.d.ts +1 -1
  238. package/lib/types/packages/market-runtime/src/runtime/host/resource-filter-service.d.ts +34 -0
  239. package/lib/types/packages/market-runtime/src/runtime/host/scoped-contributors.d.ts +58 -0
  240. package/lib/types/packages/market-runtime/src/runtime/host/surface-toggle-service.d.ts +10 -0
  241. package/lib/types/packages/market-runtime/src/runtime/panels/user-commands.d.ts +74 -0
  242. package/lib/types/{runtime → packages/market-runtime/src/runtime}/panels/user-panels.d.ts +7 -1
  243. package/lib/types/packages/market-runtime/src/runtime/surfaces/commands-mounts.d.ts +81 -0
  244. package/lib/types/packages/market-runtime/src/runtime/surfaces/extension-hooks.d.ts +59 -0
  245. package/lib/types/packages/market-runtime/src/runtime/surfaces/hook-dry-run.d.ts +91 -0
  246. package/lib/types/{runtime → packages/market-runtime/src/runtime}/surfaces/hooks-mounts.d.ts +1 -1
  247. package/lib/types/{runtime → packages/market-runtime/src/runtime}/surfaces/project-runtime.d.ts +8 -5
  248. package/lib/types/packages/market-runtime/src/runtime/surfaces/skills-provider.d.ts +71 -0
  249. package/lib/types/packages/market-translation/src/application/state/translation-cache.d.ts +56 -0
  250. package/lib/types/packages/market-translation/src/application/translation/chain.d.ts +47 -0
  251. package/lib/types/packages/market-translation/src/application/translation/document.d.ts +54 -0
  252. package/lib/types/packages/market-translation/src/application/translation/localizer.d.ts +325 -0
  253. package/lib/types/packages/market-translation/src/application/translation/service.d.ts +89 -0
  254. package/lib/types/packages/market-translation/src/application/translation/unit.d.ts +35 -0
  255. package/lib/types/packages/market-translation/src/index.d.ts +4 -0
  256. package/lib/types/packages/market-translation/src/runtime/host/llm-translator.d.ts +30 -0
  257. package/lib/types/packages/market-translation/src/runtime/host/machine-translator.d.ts +52 -0
  258. package/lib/types/packages/market-translation/src/runtime/host/text-masking.d.ts +42 -0
  259. package/lib/types/packages/market-translation/src/runtime/host/translation-providers.d.ts +42 -0
  260. package/locale/en.json +6 -0
  261. package/locale/zh.json +6 -0
  262. package/package.json +47 -10
  263. package/schemas/README.md +4 -4
  264. package/schemas/agent-plugins/spec.md +2 -2
  265. package/schemas/com.deepseek.harness/spec.md +1 -1
  266. package/schemas/skill-collection/spec.md +10 -2
  267. package/lib/application/panel-resources.js +0 -161
  268. package/lib/application/server-config.js +0 -109
  269. package/lib/contracts/settings.js +0 -63
  270. package/lib/runtime/core/reconciler.js +0 -100
  271. package/lib/runtime/panels/user-commands.js +0 -105
  272. package/lib/runtime/surfaces/commands-mounts.js +0 -186
  273. package/lib/runtime/surfaces/skills-provider.js +0 -160
  274. package/lib/types/application/details.d.ts +0 -7
  275. package/lib/types/application/mcp/mcp-status.d.ts +0 -24
  276. package/lib/types/application/panel-resources.d.ts +0 -28
  277. package/lib/types/application/ports.d.ts +0 -86
  278. package/lib/types/application/project-agent-roles.d.ts +0 -3
  279. package/lib/types/contracts/settings.d.ts +0 -59
  280. package/lib/types/routes.d.ts +0 -16
  281. package/lib/types/runtime/core/reconciler.d.ts +0 -58
  282. package/lib/types/runtime/panels/user-commands.d.ts +0 -27
  283. package/lib/types/runtime/surfaces/commands-mounts.d.ts +0 -48
  284. package/lib/types/runtime/surfaces/skills-provider.d.ts +0 -23
  285. /package/lib/{application → packages/market-catalog/src/application}/deadline.js +0 -0
  286. /package/lib/{application → packages/market-catalog/src/application}/json-file.js +0 -0
  287. /package/lib/{application → packages/market-catalog/src/application}/regions.js +0 -0
  288. /package/lib/{catalog → packages/market-catalog/src/scanning}/fs-probes.js +0 -0
  289. /package/lib/{catalog → packages/market-catalog/src/scanning}/git.js +0 -0
  290. /package/lib/{catalog → packages/market-catalog/src/scanning}/lsp-spec.js +0 -0
  291. /package/lib/{catalog → packages/market-catalog/src/scanning}/project-config.js +0 -0
  292. /package/lib/{catalog → packages/market-catalog/src/scanning}/project-hooks.js +0 -0
  293. /package/lib/{catalog → packages/market-catalog/src/scanning}/scan-pipeline.js +0 -0
  294. /package/lib/{catalog → packages/market-catalog/src/scanning}/source-catalog.js +0 -0
  295. /package/lib/{catalog → packages/market-catalog/src/scanning}/suite-components.js +0 -0
  296. /package/lib/{catalog → packages/market-catalog/src/scanning}/suite-scanner.js +0 -0
  297. /package/lib/{catalog → packages/market-catalog/src/scanning}/surfaces.js +0 -0
  298. /package/lib/{contracts → packages/market-contracts/src/contracts}/lsp-status.js +0 -0
  299. /package/lib/{contracts → packages/market-contracts/src/contracts}/lsp.js +0 -0
  300. /package/lib/{contracts → packages/market-contracts/src/contracts}/mcp-status.js +0 -0
  301. /package/lib/{contracts → packages/market-contracts/src/contracts}/mcp.js +0 -0
  302. /package/lib/{runtime → packages/market-contracts/src}/host/plugin-message-source.js +0 -0
  303. /package/lib/{model → packages/market-contracts/src/model}/command-names.js +0 -0
  304. /package/lib/{model → packages/market-contracts/src/model}/preset-source.js +0 -0
  305. /package/lib/{model → packages/market-contracts/src/model}/types.js +0 -0
  306. /package/lib/{application → packages/market-contracts/src/ports}/queries.js +0 -0
  307. /package/lib/{application → packages/market-mcp/src/application}/mcp/mcp-bridge-config.js +0 -0
  308. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/host-contract.js +0 -0
  309. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/host-seams.js +0 -0
  310. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/plugin-identity.js +0 -0
  311. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/projection.js +0 -0
  312. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/transport.js +0 -0
  313. /package/lib/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-credentials.js +0 -0
  314. /package/lib/{application → packages/market-runtime/src/application}/agent-roles.js +0 -0
  315. /package/lib/{runtime → packages/market-runtime/src/runtime}/agents/agent-role-names.js +0 -0
  316. /package/lib/{runtime → packages/market-runtime/src/runtime}/core/context.js +0 -0
  317. /package/lib/{runtime → packages/market-runtime/src/runtime}/core/mount-lifecycle.js +0 -0
  318. /package/lib/{runtime → packages/market-runtime/src/runtime}/core/source-auto-update.js +0 -0
  319. /package/lib/{runtime → packages/market-runtime/src/runtime}/core/timer-seat.js +0 -0
  320. /package/lib/{runtime → packages/market-runtime/src/runtime}/host/model-catalog.js +0 -0
  321. /package/lib/{runtime → packages/market-runtime/src/runtime}/host/shell-path.js +0 -0
  322. /package/lib/{runtime → packages/market-runtime/src/runtime}/host/tool-registry-observer.js +0 -0
  323. /package/lib/{runtime → packages/market-runtime/src/runtime}/surfaces/dynamic-context.js +0 -0
  324. /package/lib/types/{runtime/host → packages/market-bundle/src/platform}/feedback-tool.d.ts +0 -0
  325. /package/lib/types/{application → packages/market-catalog/src/application}/deadline.d.ts +0 -0
  326. /package/lib/types/{application → packages/market-catalog/src/application}/json-file.d.ts +0 -0
  327. /package/lib/types/{application → packages/market-catalog/src/application}/state/storage-migration.d.ts +0 -0
  328. /package/lib/types/{catalog → packages/market-catalog/src/scanning}/fs-probes.d.ts +0 -0
  329. /package/lib/types/{catalog → packages/market-catalog/src/scanning}/git.d.ts +0 -0
  330. /package/lib/types/{catalog → packages/market-catalog/src/scanning}/paths.d.ts +0 -0
  331. /package/lib/types/{catalog → packages/market-catalog/src/scanning}/skills-parse.d.ts +0 -0
  332. /package/lib/types/{contracts → packages/market-contracts/src/contracts}/lsp-status.d.ts +0 -0
  333. /package/lib/types/{contracts → packages/market-contracts/src/contracts}/lsp.d.ts +0 -0
  334. /package/lib/types/{contracts → packages/market-contracts/src/contracts}/mcp.d.ts +0 -0
  335. /package/lib/types/{model → packages/market-contracts/src/model}/command-names.d.ts +0 -0
  336. /package/lib/types/{model → packages/market-contracts/src/model}/preset-source.d.ts +0 -0
  337. /package/lib/types/{application → packages/market-lsp/src/application}/lsp/lsp-server-state.d.ts +0 -0
  338. /package/lib/types/{application → packages/market-lsp/src/application}/lsp/profile-seam.d.ts +0 -0
  339. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/bridge.d.ts +0 -0
  340. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/connection.d.ts +0 -0
  341. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/host-contract.d.ts +0 -0
  342. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/host-seams.d.ts +0 -0
  343. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/oauth.d.ts +0 -0
  344. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/plugin-identity.d.ts +0 -0
  345. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/projection.d.ts +0 -0
  346. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/tools.d.ts +0 -0
  347. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/bridge/transport.d.ts +0 -0
  348. /package/lib/types/{runtime → packages/market-mcp/src/runtime}/mcp/mcp-credentials.d.ts +0 -0
  349. /package/lib/types/{application → packages/market-runtime/src/application}/panels/user-store.d.ts +0 -0
  350. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/agents/agent-role-names.d.ts +0 -0
  351. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/core/context.d.ts +0 -0
  352. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/core/mount-lifecycle.d.ts +0 -0
  353. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/core/source-auto-update.d.ts +0 -0
  354. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/core/timer-seat.d.ts +0 -0
  355. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/host/failure-detail.d.ts +0 -0
  356. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/host/shell-path.d.ts +0 -0
  357. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/host/tool-registry-observer.d.ts +0 -0
  358. /package/lib/types/{runtime → packages/market-runtime/src/runtime}/surfaces/dynamic-context.d.ts +0 -0
@@ -4,6 +4,8 @@ export declare const MARKET_API_PREFIX: "/api/agent-plugins/";
4
4
  /** Fixed Agent Plugins Market HTTP routes. */
5
5
  export declare const MARKET_ROUTES: {
6
6
  readonly overview: "/api/agent-plugins/overview";
7
+ readonly surfaceToggles: "/api/agent-plugins/surface-toggles";
8
+ readonly setSurfaceToggle: "/api/agent-plugins/surface-toggles/set";
7
9
  readonly mcpStatus: "/api/agent-plugins/mcp-status";
8
10
  readonly addMcpServer: "/api/agent-plugins/mcp-servers/add";
9
11
  readonly lspStatus: "/api/agent-plugins/lsp-status";
@@ -16,7 +18,20 @@ export declare const MARKET_ROUTES: {
16
18
  readonly config: "/api/agent-plugins/config";
17
19
  readonly modelCatalog: "/api/agent-plugins/model-catalog";
18
20
  readonly suite: "/api/agent-plugins/suite";
19
- readonly skill: "/api/agent-plugins/skill";
21
+ /**
22
+ * One suite document's authored text (GET). The query names the suite, the
23
+ * surface, and the document — `{ sourceId, suiteId, kind, name }` — and the
24
+ * body is read server-side when a reader opens the row, so the detail payload
25
+ * never carries a document's bytes.
26
+ */
27
+ readonly suiteDocument: "/api/agent-plugins/suite/document";
28
+ /**
29
+ * One suite document's translation (POST). The body names the suite and the
30
+ * document — `{ sourceId, suiteId, kind, name }` — and never carries text, so
31
+ * this is the market detail page's counterpart of
32
+ * {@link userPanelTranslationRoute}: the file is re-read server-side.
33
+ */
34
+ readonly suiteDocumentTranslation: "/api/agent-plugins/suite/document/translation";
20
35
  readonly addSource: "/api/agent-plugins/sources/add";
21
36
  readonly updateSource: "/api/agent-plugins/sources/update";
22
37
  readonly adoptSource: "/api/agent-plugins/sources/adopt";
@@ -35,6 +50,8 @@ export declare const MARKET_ROUTES: {
35
50
  readonly mcpBackend: "/api/agent-plugins/mcp-backend";
36
51
  readonly setMcpBackend: "/api/agent-plugins/set-mcp-backend";
37
52
  readonly userPanel: "/api/agent-plugins/user-panel";
53
+ readonly menuRowFaces: "/api/agent-plugins/menu-row-faces";
54
+ readonly clearTranslations: "/api/agent-plugins/translations/clear";
38
55
  };
39
56
  /** One timeout's three layers: the user's value, the suite declaration, and the value in force. */
40
57
  export interface ServerTimeoutPolicy {
@@ -133,6 +150,15 @@ export interface ModelCatalogPayload {
133
150
  export type UserPanelMutation = 'create' | 'update' | 'delete';
134
151
  /** Build one user-panel list route URL (`GET`, no mutation). */
135
152
  export declare function userPanelRoute(kind: UserPanelKind): string;
153
+ /**
154
+ * Build the document-translation route URL for one panel's entries (POST).
155
+ *
156
+ * It sits under the entry segment because it translates one entry's document,
157
+ * and it is a POST because it queues provider work — the entry it names is the
158
+ * only input, and the server re-reads that entry rather than trusting text
159
+ * from the page.
160
+ */
161
+ export declare function userPanelTranslationRoute(kind: UserPanelKind): string;
136
162
  /** Build one user-panel mutation route URL (all POSTs). */
137
163
  export declare function userPanelMutationRoute(kind: UserPanelKind, mutation: UserPanelMutation, name?: string): string;
138
164
  /** The MCP mount backend state reported to the settings page. */
@@ -211,6 +237,8 @@ export interface SuiteOverviewCard {
211
237
  name: string;
212
238
  version?: string;
213
239
  description?: string;
240
+ /** The description translated for the panel's locale; absent means render `description`. */
241
+ translatedDescription?: string;
214
242
  keywords: string[];
215
243
  surfaces: SuiteSurfaceCounts;
216
244
  enabled: boolean;
@@ -238,6 +266,13 @@ export interface OverviewPayload {
238
266
  };
239
267
  /** Unmanaged `.sources/` checkouts (manual clones) available for adoption. */
240
268
  unmanaged?: UnmanagedSource[];
269
+ /**
270
+ * Translatable chunks still waiting for a translation, absent or 0 when none
271
+ * are. One chunk counts once, so a card contributes one per chunk of its
272
+ * description still in flight. The panel re-reads while this is non-zero so a
273
+ * translated card replaces the original text without a manual refresh.
274
+ */
275
+ translationPending?: number;
241
276
  }
242
277
  /** Host-side progress of the source mutation currently in flight. */
243
278
  export interface SourceProgress {
@@ -252,14 +287,16 @@ export interface SuiteSkillMeta {
252
287
  whenToUse?: string;
253
288
  path: string;
254
289
  }
255
- /** One command or agent preview in a suite detail response. */
256
- export interface MarkdownPreview {
290
+ /**
291
+ * One command or agent as the suite detail payload carries it: the identity its
292
+ * row renders, never the body. The text is a separate read, made when a reader
293
+ * opens that row.
294
+ */
295
+ export interface SuiteDocumentMeta {
257
296
  name: string;
297
+ /** The document's frontmatter `description`, when it declares one. */
258
298
  description?: string;
259
- content: string;
260
299
  }
261
- /** Claude Code agent preview alias retained for feature-specific readability. */
262
- export type AgentPreview = MarkdownPreview;
263
300
  /** One LSP definition preview in a suite detail response. */
264
301
  export interface LspPreview {
265
302
  name: string;
@@ -301,11 +338,15 @@ export interface McpServerDetail {
301
338
  }
302
339
  /** Full suite detail response served by the detail modal. */
303
340
  export interface SuiteDetail {
341
+ /** Description units still pending; absent means settled. */
342
+ translationPending?: number;
304
343
  sourceId: string;
305
344
  suiteId: string;
306
345
  name: string;
307
346
  version: string | null;
308
347
  description: string | null;
348
+ /** The description translated for the panel's locale; absent means render `description`. */
349
+ translatedDescription?: string;
309
350
  author: string | null;
310
351
  keywords: string[];
311
352
  /** Last modification of the suite checkout, as an ISO timestamp; null when it cannot be read. */
@@ -325,21 +366,21 @@ export interface SuiteDetail {
325
366
  count: number;
326
367
  entries: HookPreview[];
327
368
  };
328
- commands: MarkdownPreview[];
329
- agents: MarkdownPreview[];
369
+ commands: SuiteDocumentMeta[];
370
+ agents: SuiteDocumentMeta[];
330
371
  lsp: LspSurfaceDetail;
331
372
  errors: string[];
332
373
  mcpErrors: string[];
333
374
  }
334
- /** One skill's full file text served by the skill route. */
335
- export interface SkillContent {
375
+ /** One document's full authored text, served by the suite document route. */
376
+ export interface SuiteDocumentText {
336
377
  name: string;
337
- description: string;
338
378
  content: string;
339
- path: string;
340
379
  }
341
380
  /** A user panel entry (skills / commands / agent personas) over HTTP. */
342
381
  export interface UserPanelEntryWire {
382
+ /** Description units still pending on an entry read; absent means settled. */
383
+ translationPending?: number;
343
384
  /**
344
385
  * Entry name: the name its document declares, else its document name — the
345
386
  * file's base name, or, on a panel that reads subdirectories, the document's
@@ -347,26 +388,56 @@ export interface UserPanelEntryWire {
347
388
  */
348
389
  name: string;
349
390
  description: string;
391
+ /** The description translated for the panel's locale; absent means render `description`. */
392
+ translatedDescription?: string;
350
393
  disabled: boolean;
351
394
  /** User entries are editable; suite-owned plugin entries answer only to the enable switch. */
352
395
  origin: 'user' | 'plugin';
353
396
  id?: string;
354
- rawText: string;
397
+ /**
398
+ * The document's own text, exactly as authored. The list read omits it — it
399
+ * was the bulk of the response and the client fetches the one entry it opens
400
+ * — while the single-entry read and the raw user store always carry it.
401
+ */
402
+ rawText?: string;
355
403
  /** Human-readable suite owner for a plugin-provided entry. */
356
404
  suiteName?: string;
357
405
  metadata: Record<string, unknown>;
358
406
  path: string;
359
407
  /** The entry file's last modification, as an ISO timestamp. */
360
408
  updatedAt?: string | null;
361
- content: string;
409
+ /**
410
+ * Frontmatter-stripped body. Supplied by the raw user store, which needs it
411
+ * for a command's payload; the panel view deliberately omits it, because the
412
+ * client renders `rawText` and sending both shipped the same document twice.
413
+ */
414
+ content?: string;
362
415
  /** Suite checkout root of a plugin-provided file; runtime consumers resolve `${PLUGIN_ROOT}` against it. */
363
416
  suiteRoot?: string;
364
417
  /** The suite's `${PLUGIN_DATA}` directory, for the same runtime resolution. */
365
418
  suiteData?: string;
366
419
  }
420
+ /** The `/` menu groups whose rows this plugin owns. */
421
+ export type MenuRowSource = 'commands' | 'skills';
422
+ /**
423
+ * One localized `/` menu row face over HTTP.
424
+ *
425
+ * The row's identity fields never travel: the client matches on `source` +
426
+ * `name` and the host row supplies everything else. Only the description is
427
+ * translated — a name is an identifier the user types and matches against
428
+ * upstream documentation, so no field here can override the host's title.
429
+ */
430
+ export interface MenuRowFaceWire {
431
+ /** Which menu group the row belongs to: the slash-command group or the skill group. */
432
+ source: MenuRowSource;
433
+ /** Command call name or skill name, exactly as the menu row carries it. */
434
+ name: string;
435
+ /** Translated description; absent when nothing was translated. */
436
+ description?: string;
437
+ }
367
438
  /** The user panel surface the market exposes. */
368
439
  export type UserPanelKind = 'skills' | 'commands' | 'agents';
369
440
  /** Build a suite-detail URL without duplicating route or query encoding logic. */
370
441
  export declare function suiteRoute(sourceId: string, suiteId: string): string;
371
- /** Build a skill-content URL without duplicating route or query encoding logic. */
372
- export declare function skillRoute(sourceId: string, suiteId: string, skill: string): string;
442
+ /** Build a suite-document URL without duplicating route or query encoding logic. */
443
+ export declare function documentRoute(sourceId: string, suiteId: string, kind: UserPanelKind, name: string): string;
@@ -0,0 +1,39 @@
1
+ import type { McpServerSse, McpServerStreamableHttp, McpServerStdio } from '../model/types.js';
2
+ /** HTTP-shaped server sources (url + headers carriers) overrides can edit. */
3
+ type McpServerHttp = McpServerStreamableHttp | McpServerSse;
4
+ /** The largest timeout a bridge config and the host timer can hold. */
5
+ export declare const MAX_TIMEOUT_MS = 2147483647;
6
+ /** Per-server override record; absent fields pass through from the source. */
7
+ export type McpServerOverride = {
8
+ /** Validated complete user configuration, retaining source-owned identity. */
9
+ config?: McpServerStdio | McpServerHttp;
10
+ /** Disabled servers are not mounted at all (default enabled). */
11
+ enabled?: boolean;
12
+ /** Replaces the source URL (streamable-http only). */
13
+ url?: string;
14
+ /** Replaces the whole header map (streamable-http only). */
15
+ headers?: Record<string, string>;
16
+ /** Replaces the whole env map (stdio). */
17
+ env?: Record<string, string>;
18
+ /** Replaces the whole args list (stdio). */
19
+ args?: string[];
20
+ /** Replaces the OAuth block (streamable-http only); `enabled: false` disables a source-declared flow. */
21
+ auth?: {
22
+ enabled: boolean;
23
+ scope?: string;
24
+ };
25
+ /** Per-tool-call timeout in milliseconds; absent inherits the suite's value or the bridge default. */
26
+ toolCallTimeoutMs?: number;
27
+ /** Startup timeout in milliseconds; absent inherits the suite's value or the bridge default. */
28
+ startupTimeoutMs?: number;
29
+ /** Tool names the user turned off; the suite's own deny list stays in force beside them. */
30
+ disabledTools?: string[];
31
+ };
32
+ /** Timeout fields a policy save can set (`number`) or clear back to inheritance (`null`). */
33
+ export interface McpTimeoutPatch {
34
+ toolCallTimeoutMs?: number | null;
35
+ startupTimeoutMs?: number | null;
36
+ }
37
+ /** Overrides for one suite, keyed by mcp.json server key. */
38
+ export type McpSuiteOverrides = Record<string, McpServerOverride>;
39
+ export {};
@@ -1,8 +1,11 @@
1
1
  /** Browser-safe MCP status records shared by host aggregation and client rendering. */
2
2
  /** A tool observed in the host MCP tool registry. */
3
3
  export interface McpStatusTool {
4
+ /** The tool's call name, as the server advertises it; never translated. */
4
5
  name: string;
5
6
  description?: string;
7
+ /** The description translated for the panel's locale; absent means render `description`. */
8
+ translatedDescription?: string;
6
9
  /** The advertised input schema, kept only while it stays small enough to transport; absent otherwise. */
7
10
  parameters?: unknown;
8
11
  }
@@ -85,4 +88,10 @@ export interface McpStatusPayload {
85
88
  /** The mount backend the rows were observed under; `host` cannot enforce tool
86
89
  * filters or startup timeouts, so the panel disables those controls. */
87
90
  backend?: 'builtin' | 'host';
91
+ /**
92
+ * Descriptions this read queued that have not landed yet; absent means the
93
+ * text is settled. The panel re-reads while it is non-zero, so translated
94
+ * text appears without the user pressing refresh.
95
+ */
96
+ translationPending?: number;
88
97
  }
@@ -0,0 +1,70 @@
1
+ /** Browser-safe resource-window wire records and route constants. */
2
+ import { type SurfaceToggleKey } from './surface-toggles.js';
3
+ /** Fixed resource-window HTTP routes. */
4
+ export declare const RESOURCE_ROUTES: {
5
+ readonly inventory: "/api/agent-plugins/resource-window";
6
+ readonly setEntry: "/api/agent-plugins/resource-window/entry";
7
+ readonly reset: "/api/agent-plugins/resource-window/reset";
8
+ readonly applyFavorite: "/api/agent-plugins/resource-window/favorites/apply";
9
+ readonly saveFavorite: "/api/agent-plugins/resource-window/favorites/save";
10
+ readonly deleteFavorite: "/api/agent-plugins/resource-window/favorites/delete";
11
+ };
12
+ /**
13
+ * The window's six tabs, each the facet of one switchable surface. Market rows
14
+ * are installed suites; the other five list the entries that surface mounts.
15
+ */
16
+ export type ResourceFace = SurfaceToggleKey;
17
+ /** The tab order the window shows, matching the prototype. */
18
+ export declare const RESOURCE_FACE_ORDER: readonly ResourceFace[];
19
+ /** One inventory row: one already-installed resource this workspace mounts. */
20
+ export interface ResourceEntryWire {
21
+ /** Stable id: `${face}:${entryKey}` — unique across tabs. */
22
+ id: string;
23
+ face: ResourceFace;
24
+ /** Display name: suite name, skill/command/agent name, or server name. */
25
+ name: string;
26
+ /** Version when the source declares one; absent otherwise. */
27
+ version?: string;
28
+ /** One provenance word: the owning source, suite, or "direct". */
29
+ source: string;
30
+ /** Description for the card view's body line. */
31
+ description?: string;
32
+ /** Surface counts for the market tab's footer row; absent elsewhere. */
33
+ counts?: Array<{
34
+ label: string;
35
+ count: number;
36
+ }>;
37
+ /** Whether this workspace mounts the entry right now. */
38
+ enabled: boolean;
39
+ /**
40
+ * Whether the user-level (global) state itself has the entry off: the
41
+ * settings page's own disable, not this workspace's filter. A globally off
42
+ * entry reads disabled here and its switch locks — this surface can filter
43
+ * further, never re-enable what the user level turned off.
44
+ */
45
+ globalDisabled?: boolean;
46
+ }
47
+ /** The workspace's installed inventory with per-entry filter state. */
48
+ export interface ResourceWindowPayload {
49
+ workspace: string;
50
+ entries: ResourceEntryWire[];
51
+ favorites: ResourceFavoriteWire[];
52
+ }
53
+ /** One cross-project favorite: a complete snapshot of every switch. */
54
+ export interface ResourceFavoriteWire {
55
+ id: string;
56
+ name: string;
57
+ createdAt: string;
58
+ /** The six surface switches at save time. */
59
+ surfaces: Record<SurfaceToggleKey, boolean>;
60
+ /** Entry ids turned off at save time, across all faces. */
61
+ offEntries: string[];
62
+ }
63
+ /** The favorite payload the save route accepts and stores verbatim. */
64
+ export interface ResourceFavoriteInput {
65
+ name: string;
66
+ surfaces: Record<SurfaceToggleKey, boolean>;
67
+ offEntries: string[];
68
+ }
69
+ /** Read one untrusted favorite input; unknown faces and non-strings drop out. */
70
+ export declare function resolveFavoriteInput(value: unknown): ResourceFavoriteInput | undefined;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Browser-safe settings contract of the market's host settings namespace: the
3
+ * namespace key, the fields with their defaults, and the one reader that turns
4
+ * a stored section into resolved values.
5
+ *
6
+ * The defaults live here and nowhere else. The namespace schema declares them
7
+ * to the host, the node half reads them back through {@link resolveMarketSettings},
8
+ * and the browser half — which cannot import `src/runtime` — reads the same
9
+ * resolved values off the settings snapshot it is handed. Changing a default is
10
+ * therefore a one-line edit in this module.
11
+ *
12
+ * One default is not a constant: `translationEnabled` follows the interface
13
+ * language, so its reader takes the language as an argument and
14
+ * {@link interfaceLanguageTranslates} answers that default only. An explicit
15
+ * preference is independent of language. {@link resolveTranslationTarget}
16
+ * selects the language of displayed translations, including English.
17
+ *
18
+ * @module contracts/settings
19
+ */
20
+ /** Settings namespace this plugin registers; the key the plugin-config tab pairs our card by. */
21
+ export declare const MARKET_SETTINGS_NAMESPACE = "dsh-agent-plugins-market";
22
+ /** The persisted download-region setting: `auto` follows the interface language. */
23
+ export type DownloadRegionSetting = 'auto' | 'global' | 'china';
24
+ /** Every market setting with the value it resolves to when the document says nothing. */
25
+ export interface MarketSettings {
26
+ /** ON = the built-in MCP bridge with OAuth and SSE; OFF = host client compat mode. */
27
+ mcpEnhanced: boolean;
28
+ /** ON = native project Agent layouts (`.claude/`, `.agents/`) take part in discovery. */
29
+ scanProjectLayouts: boolean;
30
+ /** Download region for GitHub acquisition. */
31
+ downloadRegion: DownloadRegionSetting;
32
+ /** ON = the `report_market_issue` model tool is registered. */
33
+ feedbackEnabled: boolean;
34
+ /** ON = every configured source refreshes in the background. */
35
+ autoUpdateSources: boolean;
36
+ /**
37
+ * ON = suite, skill, command, agent, MCP and LSP text is localized for the
38
+ * host locale. The stored value while the user has one, the interface
39
+ * language's default otherwise.
40
+ */
41
+ translationEnabled: boolean;
42
+ /** ON = the composer carries the Agent preset manager entry (experimental). */
43
+ agentPresetsEnabled: boolean;
44
+ }
45
+ /**
46
+ * The default of every market setting — the single place one is written.
47
+ *
48
+ * These are user-visible behavior: a flip here is a behavior change that ships
49
+ * with its documentation, not a private implementation detail.
50
+ *
51
+ * `translationEnabled` is the one exception: the interface language decides it
52
+ * (see {@link interfaceLanguageTranslates}), so this constant is not where its
53
+ * effective default lives. It is what the browser store holds before the host
54
+ * answers, and that pre-answer state deliberately withholds the translation
55
+ * control rather than flashing it. The namespace schema declares no default for
56
+ * the field at all, an absence that is load-bearing: a schema default would
57
+ * reach the live config reference and erase the difference between "the user
58
+ * never set this" and "the user turned it off".
59
+ */
60
+ export declare const MARKET_SETTINGS_DEFAULTS: MarketSettings;
61
+ /** Every field name the market's settings section carries. */
62
+ export type MarketSettingKey = keyof MarketSettings;
63
+ /**
64
+ * Narrow an untrusted stored region to a setting; anything else reads as the
65
+ * declared default.
66
+ * @param value - the stored `downloadRegion` value.
67
+ * @param fallback - the value an unrecognized input reads as.
68
+ */
69
+ export declare function narrowDownloadRegion(value: unknown, fallback?: DownloadRegionSetting): DownloadRegionSetting;
70
+ /**
71
+ * Whether one interface language renders the market's Chinese dictionary.
72
+ *
73
+ * This is the host's own rule rather than a second reading of it:
74
+ * `bindHostLocale` (`runtime/host/host-locale.ts`) answers every preference
75
+ * that is not English with the Chinese dictionary, so as far as the interface is
76
+ * concerned everything that is not English is Chinese — an absent preference
77
+ * included, which the host reads as zh.
78
+ *
79
+ * This determines only the default display preference: Chinese starts on and
80
+ * English starts off. It must not gate an explicitly enabled translation.
81
+ * @param localePreference - the host `locale.preference`, or undefined while nothing supplies one.
82
+ */
83
+ export declare function interfaceLanguageTranslates(localePreference: string | undefined): boolean;
84
+ /**
85
+ * The language the interface renders, as the translation chain names it.
86
+ *
87
+ * The target follows the dictionary, not the preference tag. The market ships
88
+ * exactly one non-English dictionary and {@link bindHostLocale}'s counterpart
89
+ * resolves every preference that is not English to it, so a `ja` or `zh-Hant`
90
+ * reader is surrounded by Simplified Chinese copy: translating upstream text
91
+ * into Japanese, or into Traditional, would put the one part of the page the
92
+ * layer owns into a language nothing around it is written in. `zh` is the tag
93
+ * both machine endpoints already map to Simplified Chinese
94
+ * (`runtime/host/machine-translator.ts`) and the one the model hop names
95
+ * "Simplified Chinese"; a second dictionary would add a case here rather than a
96
+ * second reading of the preference somewhere else.
97
+ *
98
+ * Target selection is independent of whether translations are displayed.
99
+ * @param localePreference - the host `locale.preference`, or undefined while nothing supplies one.
100
+ * @returns the language rendered by the interface.
101
+ */
102
+ export declare function resolveTranslationTarget(localePreference: string | undefined): 'zh' | 'en';
103
+ /**
104
+ * Resolve a stored settings section the way the host resolves it: each field
105
+ * takes its stored value when it is one this field accepts, and its default
106
+ * otherwise.
107
+ *
108
+ * The host hands the resolved section back on its own, but not every caller has
109
+ * one — the plugin's own halves read a section they may not have received yet,
110
+ * and a test hands in a bare literal. Funnelling all of them through this
111
+ * function is what keeps a second reading of "what does missing mean" from
112
+ * growing somewhere else.
113
+ *
114
+ * A stored boolean always wins: the user's own answer is never overridden by
115
+ * the language. Only a section that says nothing about the field takes the
116
+ * language's answer, which is what makes a language switch move the default for
117
+ * a user who never set the field and leave every other user alone.
118
+ * @param section - the stored (or absent) namespace section, untrusted.
119
+ * @param localePreference - the host `locale.preference` the language-derived default follows.
120
+ */
121
+ export declare function resolveMarketSettings(section: unknown, localePreference?: string): MarketSettings;
@@ -0,0 +1,28 @@
1
+ /** Per-project on/off switches for the six surfaces the plugin mounts. */
2
+ /** The six switchable surfaces, in the order the composer control shows them. */
3
+ export declare const SURFACE_TOGGLE_KEYS: readonly ["market", "skills", "commands", "agents", "mcp", "lsp"];
4
+ /** One switchable surface. */
5
+ export type SurfaceToggleKey = (typeof SURFACE_TOGGLE_KEYS)[number];
6
+ /**
7
+ * The persisted toggle state for one workspace. Every key defaults to on: the
8
+ * file only records a project that turned something off, so the common case —
9
+ * no opinion — costs nothing and an absent file means "all surfaces on".
10
+ */
11
+ export interface SurfaceToggles {
12
+ market: boolean;
13
+ skills: boolean;
14
+ commands: boolean;
15
+ agents: boolean;
16
+ mcp: boolean;
17
+ lsp: boolean;
18
+ }
19
+ /** The all-on default applied when a workspace has no recorded opinion. */
20
+ export declare const ALL_SURFACES_ON: SurfaceToggles;
21
+ /**
22
+ * Read one workspace's toggles from an untrusted record.
23
+ *
24
+ * Unknown keys are dropped and wrong-typed values fall back to on, so a
25
+ * hand-edited or future-shaped file degrades to "the known keys apply" the
26
+ * same way the other state files in this plugin do.
27
+ */
28
+ export declare function resolveSurfaceToggles(value: unknown): SurfaceToggles;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The wire and domain vocabulary of the translation layer.
3
+ *
4
+ * A translation unit names one translatable field of one entity — a suite
5
+ * description, an MCP tool description — and the translated field set carries
6
+ * the results back to every surface that renders them. Kept free of imports so
7
+ * both the server layers and the client bundle can depend on it.
8
+ *
9
+ * Descriptions and document prose are translated. A name is an identifier the user types,
10
+ * greps, and matches against upstream documentation, and machine translation
11
+ * turned them into text that was harder to recognize than the original — so
12
+ * the layer never touches one.
13
+ */
14
+ /** One translation backend: a public machine-translation endpoint or the user's own model. */
15
+ export type TranslationProviderId = 'google' | 'microsoft' | 'llm';
16
+ /** One translation backend: a public endpoint or the user's own model. */
17
+ export interface TranslationProvider {
18
+ /** Which provider this is; also the identity folded into the cache key. */
19
+ readonly id: TranslationProviderId;
20
+ /**
21
+ * Whether this provider can serve a call right now.
22
+ *
23
+ * Read per call and never cached: a model route provisions after the plugin's
24
+ * apply() returns, so an answer captured at composition time would report
25
+ * "unavailable" for the life of the process.
26
+ */
27
+ available(): boolean;
28
+ /** Translate one batch, preserving order and length. Rejects on any failure. */
29
+ translate(request: {
30
+ texts: readonly string[];
31
+ locale: string;
32
+ signal: AbortSignal;
33
+ }): Promise<string[]>;
34
+ }
35
+ /** One surface whose entities are translated; matches the six switchable surfaces. */
36
+ export type TranslationSurfaceKind = 'market' | 'skills' | 'commands' | 'agents' | 'mcp' | 'lsp';
37
+ /**
38
+ * Which text of one entity a cached translation belongs to.
39
+ *
40
+ * The role is a cache-key slot rather than a rendering concern: a description
41
+ * and a document body retain distinct historical keys. The localizer can reuse
42
+ * one translation when their source text and target are identical.
43
+ */
44
+ export type TranslationRole = 'description' | 'document';
45
+ /**
46
+ * The translated fields of one entity.
47
+ *
48
+ * The description is optional because it may be cached, still pending, or
49
+ * absent upstream. An absent field means "render the upstream text".
50
+ */
51
+ export interface TranslationFields {
52
+ translatedDescription?: string;
53
+ }
54
+ /**
55
+ * One document body on its way to the target language.
56
+ *
57
+ * Each paragraph remains authored until every request for it succeeds.
58
+ * `pending` counts paragraphs with unfinished work. `failed` counts paragraphs
59
+ * that cannot currently produce a complete translation. Other paragraphs remain
60
+ * readable while those requests settle.
61
+ */
62
+ export interface DocumentTranslation {
63
+ /** The body with complete translated paragraphs and authored fallbacks. */
64
+ text: string;
65
+ /** Complete Markdown with each translated paragraph directly after its original. */
66
+ bilingualText?: string;
67
+ /** Paragraphs with queued or running work; the client re-reads while this is non-zero. */
68
+ pending: number;
69
+ /** Paragraphs left original because translation failed or a sentence exceeds its safe budget. */
70
+ failed?: number;
71
+ }
72
+ /**
73
+ * Merge two optional field sets; the later one wins per field.
74
+ *
75
+ * A field left undefined in `next` leaves the `base` value in place, so a
76
+ * caller can layer a partial result over an earlier one without erasing it.
77
+ * @param base - the field set to start from.
78
+ * @param next - the field set layered on top.
79
+ * @returns a new field set holding the merged values.
80
+ */
81
+ export declare function mergeTranslationFields(base: TranslationFields, next: TranslationFields): TranslationFields;
@@ -4,7 +4,7 @@
4
4
  * agent's inbox with their producer identity attached. The host's message
5
5
  * sources are merge-extensible — each producer declares its own kind through a
6
6
  * module augmentation, and consumers fall through unknown kinds.
7
- * @module runtime/plugin-message-source
7
+ * @module contracts/host/plugin-message-source
8
8
  */
9
9
  import type { UserMessage } from '@deepseek-ai/dsh-llm';
10
10
  /** Producer identity of every follow-up message this plugin injects. */
@@ -0,0 +1,5 @@
1
+ /** Portable public records. Host augmentations are available only through the host subpath. */
2
+ export * from './model/types.js';
3
+ export * from './contracts/settings.js';
4
+ export * from './contracts/extension-presets.js';
5
+ export type { MarketService, MarketQueries, MarketMutations } from './ports/queries.js';
@@ -59,6 +59,13 @@ export declare const PLUGIN_DATA_VARIABLES: ReadonlySet<string>;
59
59
  export declare const PROJECT_DIR_VARIABLES: ReadonlySet<string>;
60
60
  /** Claude Code names the directory holding the skill's own file; no dialect alias exists. */
61
61
  export declare const SKILL_DIR_VARIABLE = "CLAUDE_SKILL_DIR";
62
+ /**
63
+ * The path names the Claude Code runtime exports to a spawned component. Only
64
+ * the claude-code spellings: a suite script reads a generic or other-dialect
65
+ * alias as a runtime marker, so exporting one would select another runtime's
66
+ * branch. Skill-directory names stay out because no process receives them.
67
+ */
68
+ export declare const CLAUDE_COMPONENT_ENVIRONMENT: Readonly<Record<'root' | 'data' | 'projectDir', string>>;
62
69
  /** Explicit project document formats and portable surfaces; execution stays in the runtime adapters. */
63
70
  export type ProjectMcpFormat = 'mcpServers' | 'zcode' | 'codex';
64
71
  export type ProjectHookFormat = 'claude' | 'zcode';
@@ -56,9 +56,9 @@ export interface SuiteManifest {
56
56
  systemPrompt?: string;
57
57
  systemPromptPath?: string;
58
58
  layout: SuiteLayoutKind;
59
- /** Absolute manifest file path. */
59
+ /** Absolute manifest file path, or empty for a metadata-only or aggregate suite. */
60
60
  path: string;
61
- /** Suite id derived from the manifest name or its root directory, sanitized to `[a-z0-9-]`. */
61
+ /** Sanitized manifest or directory name, or reserved `@skills` for an aggregate collection. */
62
62
  id: string;
63
63
  name: string;
64
64
  version?: string;