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
@@ -0,0 +1,116 @@
1
+ import { googleTranslate, microsoftTranslate } from './machine-translator.js';
2
+ import { maskText, unmaskText } from './text-masking.js';
3
+ /** Retry is one subset of the original batch, with complete input semantics. */
4
+ const MAX_REPAIR_INPUTS = 20;
5
+ const STRUCTURE_MARKER = /⟪d\d+⟫/g;
6
+ function restoreAnswer(source, masked, answer) {
7
+ const text = unmaskText(answer, masked.placeholders);
8
+ if (text === undefined)
9
+ return undefined;
10
+ const expected = source.match(STRUCTURE_MARKER) ?? [];
11
+ const actual = text.match(STRUCTURE_MARKER) ?? [];
12
+ if (expected.length !== actual.length || expected.some((marker, i) => marker !== actual[i]))
13
+ return undefined;
14
+ return text.replace(STRUCTURE_MARKER, '').trim() === '' ? undefined : text;
15
+ }
16
+ /**
17
+ * Preserve valid siblings and retry damaged structural inputs once, in full.
18
+ * A failed repair stays empty for the localizer retry policy. Formatting leaves
19
+ * never become separate translation requests.
20
+ */
21
+ function withMasking(base) {
22
+ return {
23
+ id: base.id,
24
+ available: () => base.available(),
25
+ async translate(request) {
26
+ const masked = request.texts.map(maskText);
27
+ const translated = await base.translate({ ...request, texts: masked.map(entry => entry.text) });
28
+ request.signal.throwIfAborted();
29
+ if (translated.length !== masked.length)
30
+ throw new Error(base.id + ' translate: result count mismatch');
31
+ const restored = request.texts.map(() => '');
32
+ /** First reason one slot could not be answered, reported only if no slot was. */
33
+ let firstFailure;
34
+ const repairs = [];
35
+ for (let index = 0; index < request.texts.length; index++) {
36
+ const source = request.texts[index];
37
+ const answer = translated[index];
38
+ const text = restoreAnswer(source, masked[index], answer);
39
+ if (text !== undefined) {
40
+ restored[index] = text;
41
+ continue;
42
+ }
43
+ const markers = source.match(STRUCTURE_MARKER) ?? [];
44
+ // Empty results and unstructured descriptions keep the existing retry
45
+ // policy. Only damaged structural prose gets the whole-input retry.
46
+ const prose = answer.replace(/⟦?[A-Z]\d+⟧|⟪d\d+⟫/g, '').trim();
47
+ if (markers.length === 0) {
48
+ firstFailure ??= base.id + ' translate: the answer lost or duplicated a placeholder';
49
+ continue;
50
+ }
51
+ if (prose === '') {
52
+ firstFailure ??= base.id + ' translate: invalid translated text';
53
+ continue;
54
+ }
55
+ if (repairs.length < MAX_REPAIR_INPUTS)
56
+ repairs.push(index);
57
+ }
58
+ if (repairs.length > 0) {
59
+ request.signal.throwIfAborted();
60
+ try {
61
+ const answers = await base.translate({ ...request, texts: repairs.map(index => masked[index].text) });
62
+ request.signal.throwIfAborted();
63
+ if (answers.length !== repairs.length)
64
+ throw new Error(base.id + ' translate: repair result count mismatch');
65
+ repairs.forEach((index, offset) => {
66
+ restored[index] = restoreAnswer(request.texts[index], masked[index], answers[offset]) ?? '';
67
+ });
68
+ }
69
+ catch (error) {
70
+ if (request.signal.aborted)
71
+ throw error;
72
+ // Valid siblings remain available when the complete-input retry fails.
73
+ }
74
+ }
75
+ request.signal.throwIfAborted();
76
+ if (restored.every(text => text === ''))
77
+ throw new Error(firstFailure ?? base.id + ' translate: no valid translations');
78
+ return restored;
79
+ }
80
+ };
81
+ }
82
+ /**
83
+ * Build the ordered chain: google -> microsoft -> llm.
84
+ *
85
+ * The two public endpoints report themselves available unconditionally: they
86
+ * need no key, no registration and no configuration, which is what makes
87
+ * translation work out of the box on a fresh deployment. Whether one of them
88
+ * actually answers is settled by calling it, and the chain's circuit breaker is
89
+ * what stops a blocked network from costing a timeout per batch.
90
+ *
91
+ * The model hop is absent when the caller has none, so a deployment without a
92
+ * configured route gets a two-hop chain rather than a hop that always fails.
93
+ *
94
+ * The host context is accepted but unread: neither keyless endpoint needs a
95
+ * seam, and the field is part of the composition root's frozen call shape so a
96
+ * keyed provider can join the chain without changing that call.
97
+ * @param options - the host context and the already-built model provider.
98
+ * @returns the chain, best hop first.
99
+ */
100
+ export function createTranslationProviders(options) {
101
+ const providers = [
102
+ withMasking({
103
+ id: 'google',
104
+ available: () => true,
105
+ translate: async (request) => (await googleTranslate(request)).texts
106
+ }),
107
+ withMasking({
108
+ id: 'microsoft',
109
+ available: () => true,
110
+ translate: async (request) => (await microsoftTranslate(request)).texts
111
+ })
112
+ ];
113
+ if (options.llm !== undefined)
114
+ providers.push(withMasking(options.llm));
115
+ return providers;
116
+ }
@@ -1,130 +1,2 @@
1
- /**
2
- * dsh-agent-plugins-market host entry: the Agent Plugins Market manager.
3
- *
4
- * Function plugin (named exports, no default export). It registers one skill
5
- * provider feeding enabled suites into `ctx.skills`, reconciles enabled
6
- * suites' `mcp.json` servers into live self-built bridge mounts (stdio,
7
- * Streamable HTTP with OAuth, and legacy SSE — no host MCP client needed),
8
- * and mounts the market page's HTTP routes on the web server. Skills and MCP
9
- * tools are exposed through the host's native model surfaces; this plugin
10
- * does not register a redundant suite-inventory model tool.
11
- *
12
- * Requires `ctx.skills` (the dsh skill registry). MCP mounting is
13
- * self-contained: suites' MCP servers mount through the market's own bridge
14
- * plugin on the host `tools` registry.
15
- */
16
- import { type Context, type Volatile } from '@deepseek-ai/cordis';
17
- import z from '@deepseek-ai/schemastery';
18
- import type { DownloadRegionSetting } from './contracts/settings.js';
19
- import type { SourceRef } from './model/types.js';
20
- export declare const name = "dsh-agent-plugins-market";
21
- export declare const inject: string[];
22
- /** Host configuration. */
23
- /** Host configuration; the five market settings arrive as volatile references the host updates in place. */
24
- export interface Config {
25
- /** User-dimension suite root; defaults to `~/.dsh/agent-plugins` (`$DSH_HOME/agent-plugins`). */
26
- userRoot?: string;
27
- /** Legacy mutable data root to migrate; writes always use the canonical root/data. */
28
- dataRoot?: string;
29
- /** Initial repository sources, merged into the persisted state on first load. */
30
- sources?: SourceRef[];
31
- /**
32
- * Git/archive acquisition tuning: `proxy` (http/https proxy URL),
33
- * `insteadOf` URL-prefix rewrites (mirror acceleration), `timeoutMs` per
34
- * git invocation, `cloneRetry` (default true), `fallbackTarball` (retry a
35
- * failed GitHub clone as a codeload tarball download; default false), and
36
- * `allowHttpArchives` (permit plain-http archive URLs; default false).
37
- */
38
- git?: {
39
- proxy?: string;
40
- insteadOf?: Record<string, string>;
41
- timeoutMs?: number;
42
- cloneRetry?: boolean;
43
- fallbackTarball?: boolean;
44
- allowHttpArchives?: boolean;
45
- };
46
- /** MCP mount backend switch; updated live through the host settings service. */
47
- mcpEnhanced: Volatile<boolean | undefined>;
48
- /** Project-layout discovery switch; updated live through the host settings service. */
49
- scanProjectLayouts: Volatile<boolean | undefined>;
50
- /** Download region choice; updated live through the host settings service. */
51
- downloadRegion: Volatile<DownloadRegionSetting | undefined>;
52
- /** Experience-feedback tool switch; updated live through the host settings service. */
53
- feedbackEnabled: Volatile<boolean | undefined>;
54
- /** Background source-update switch; updated live through the host settings service. */
55
- autoUpdateSources: Volatile<boolean | undefined>;
56
- }
57
- /**
58
- * Schemastery projection the host loader reads: the five volatile fields become
59
- * the `dsh-agent-plugins-market` settings namespace (the Plugins panel's
60
- * configuration page reads it), while the startup fields stay plain.
61
- */
62
- /** The schema's input face: every field optional, exactly what a profile patch may carry. */
63
- export interface ConfigInput {
64
- userRoot?: string | null;
65
- dataRoot?: string | null;
66
- sources?: unknown;
67
- git?: {
68
- proxy?: string | null;
69
- insteadOf?: Record<string, unknown>;
70
- timeoutMs?: number | null;
71
- cloneRetry?: boolean | null;
72
- fallbackTarball?: boolean | null;
73
- allowHttpArchives?: boolean | null;
74
- };
75
- mcpEnhanced?: boolean | null;
76
- scanProjectLayouts?: boolean | null;
77
- downloadRegion?: 'auto' | 'global' | 'china' | null;
78
- feedbackEnabled?: boolean | null;
79
- autoUpdateSources?: boolean | null;
80
- }
81
- export declare const Config: z<Schemastery.ObjectS<NoInfer<{
82
- userRoot: z<string | undefined, string | undefined, "plain">;
83
- dataRoot: z<string | undefined, string | undefined, "plain">;
84
- sources: z<any, any, "plain">;
85
- git: z<Schemastery.ObjectS<NoInfer<{
86
- proxy: z<string, string, "plain">;
87
- insteadOf: z<import("@deepseek-ai/cosmokit").Dict<string, any>, import("@deepseek-ai/cosmokit").Dict<string, any>, "plain">;
88
- timeoutMs: z<number, number, "plain">;
89
- cloneRetry: z<boolean, boolean, "plain">;
90
- fallbackTarball: z<boolean, boolean, "plain">;
91
- allowHttpArchives: z<boolean, boolean, "plain">;
92
- }>>, Schemastery.ObjectT<NoInfer<{
93
- proxy: z<string, string, "plain">;
94
- insteadOf: z<import("@deepseek-ai/cosmokit").Dict<string, any>, import("@deepseek-ai/cosmokit").Dict<string, any>, "plain">;
95
- timeoutMs: z<number, number, "plain">;
96
- cloneRetry: z<boolean, boolean, "plain">;
97
- fallbackTarball: z<boolean, boolean, "plain">;
98
- allowHttpArchives: z<boolean, boolean, "plain">;
99
- }>>, "plain">;
100
- mcpEnhanced: z<boolean, boolean, "volatile-defined">;
101
- scanProjectLayouts: z<boolean, boolean, "volatile-defined">;
102
- downloadRegion: z<"auto" | "global" | "china", "auto" | "global" | "china", "volatile-defined">;
103
- feedbackEnabled: z<boolean, boolean, "volatile-defined">;
104
- autoUpdateSources: z<boolean, boolean, "volatile-defined">;
105
- }>>, Schemastery.ObjectT<NoInfer<{
106
- userRoot: z<string | undefined, string | undefined, "plain">;
107
- dataRoot: z<string | undefined, string | undefined, "plain">;
108
- sources: z<any, any, "plain">;
109
- git: z<Schemastery.ObjectS<NoInfer<{
110
- proxy: z<string, string, "plain">;
111
- insteadOf: z<import("@deepseek-ai/cosmokit").Dict<string, any>, import("@deepseek-ai/cosmokit").Dict<string, any>, "plain">;
112
- timeoutMs: z<number, number, "plain">;
113
- cloneRetry: z<boolean, boolean, "plain">;
114
- fallbackTarball: z<boolean, boolean, "plain">;
115
- allowHttpArchives: z<boolean, boolean, "plain">;
116
- }>>, Schemastery.ObjectT<NoInfer<{
117
- proxy: z<string, string, "plain">;
118
- insteadOf: z<import("@deepseek-ai/cosmokit").Dict<string, any>, import("@deepseek-ai/cosmokit").Dict<string, any>, "plain">;
119
- timeoutMs: z<number, number, "plain">;
120
- cloneRetry: z<boolean, boolean, "plain">;
121
- fallbackTarball: z<boolean, boolean, "plain">;
122
- allowHttpArchives: z<boolean, boolean, "plain">;
123
- }>>, "plain">;
124
- mcpEnhanced: z<boolean, boolean, "volatile-defined">;
125
- scanProjectLayouts: z<boolean, boolean, "volatile-defined">;
126
- downloadRegion: z<"auto" | "global" | "china", "auto" | "global" | "china", "volatile-defined">;
127
- feedbackEnabled: z<boolean, boolean, "volatile-defined">;
128
- autoUpdateSources: z<boolean, boolean, "volatile-defined">;
129
- }>>, "plain">;
130
- export declare function apply(ctx: Context, config?: Config): Promise<void>;
1
+ /** Public installation entry; domain ownership lives in private workspace packages. */
2
+ export * from './packages/market-bundle/src/index.js';
@@ -1,15 +1,17 @@
1
- import type { LspLegacySeamMigration, LspStatusPayload } from '../contracts/lsp-status.js';
2
- import type { OverviewPayload, ServerConfigPayload, SkillContent, SourceProgress, SuiteDetail } from '../contracts/market.js';
3
- import type { McpStatusPayload } from './mcp/mcp-status.js';
4
- import type { SourceRef, Suite, SuiteSurfaceKey } from '../model/types.js';
5
- import type { McpBackend } from '../contracts/mcp.js';
6
- import type { McpMountDiagnostic } from '../contracts/mcp.js';
7
- import { type McpServerOverride, type McpSuiteOverrides } from './mcp/mcp-overrides.js';
8
- import { type CatalogGitOptions, type CatalogOptions } from './catalog-context.js';
9
- import { type LspServerTable, type McpBackendInfo, type SourceInput, type SourcePatch } from './ports.js';
10
- import { type CatalogSnapshot } from './snapshot-cache.js';
11
- import { codeloadTarballUrl } from './source-store.js';
12
- import type { MarketService } from './queries.js';
1
+ import type { LspLegacySeamMigration, LspStatusPayload } from '../../../market-contracts/src/contracts/lsp-status.js';
2
+ import type { MenuRowFaceWire, OverviewPayload, ServerConfigPayload, SourceProgress, SuiteDetail, SuiteDocumentText, UserPanelKind } from '../../../market-contracts/src/contracts/market.js';
3
+ import type { McpStatusPayload } from '../../../market-mcp/src/index.js';
4
+ import type { SourceRef, Suite, SuiteSurfaceKey } from '../../../market-contracts/src/model/types.js';
5
+ import type { McpBackend } from '../../../market-contracts/src/contracts/mcp.js';
6
+ import type { McpMountDiagnostic } from '../../../market-contracts/src/contracts/mcp.js';
7
+ import { type McpServerOverride, type McpSuiteOverrides } from '../../../market-mcp/src/index.js';
8
+ import { type CatalogGitOptions, type CatalogOptions } from '../../../market-catalog/src/index.js';
9
+ import type { DocumentTranslation, TranslationFields, TranslationSurfaceKind } from '../../../market-contracts/src/contracts/translation.js';
10
+ import { type LspServerTable, type McpBackendInfo, type SourceInput, type SourcePatch } from '../../../market-contracts/src/ports/ports.js';
11
+ import { type CatalogSnapshot } from '../../../market-catalog/src/index.js';
12
+ import { codeloadTarballUrl } from '../../../market-catalog/src/index.js';
13
+ import type { MarketService } from '../../../market-contracts/src/ports/queries.js';
14
+ import type { ExtensionSuiteCandidate } from '../../../market-runtime/src/index.js';
13
15
  export declare class Catalog implements MarketService {
14
16
  private readonly context;
15
17
  private readonly ports;
@@ -18,6 +20,8 @@ export declare class Catalog implements MarketService {
18
20
  private readonly installs;
19
21
  private readonly mcp;
20
22
  private readonly lsp;
23
+ private readonly translation;
24
+ private readonly suiteQueries;
21
25
  constructor(options: CatalogOptions);
22
26
  /** Latest MCP mount diagnostics (suiteId -> reasons), fed by host reconcile. */
23
27
  get mcpDiagnostics(): McpMountDiagnostic[];
@@ -26,6 +30,26 @@ export declare class Catalog implements MarketService {
26
30
  get userRoot(): string;
27
31
  /** The plugin storage root holding per-suite `${PLUGIN_DATA}` directories and overrides. */
28
32
  get dataRoot(): string;
33
+ /** The shared Agent layout root the direct user declarations (hooks, MCP) are read from. */
34
+ get agentsRoot(): string;
35
+ /**
36
+ * The host locale preference the panels render in.
37
+ *
38
+ * A read that walks many rows resolves it once and passes the value to every
39
+ * {@link translateFields} call: the host answers the preference by projecting
40
+ * every profile entry's live configuration, so reading it per row made a
41
+ * panel's latency scale with its row count instead of its work.
42
+ */
43
+ get localePreference(): string;
44
+ /**
45
+ * The clock this catalog's caches age against.
46
+ *
47
+ * The panel row cache is derived from the same files the snapshot cache
48
+ * walks, so it measures its maximum age on the same timeline: a test that
49
+ * drives the catalog's injected clock drives both, and a deployment gets the
50
+ * one process clock.
51
+ */
52
+ now(): number;
29
53
  get sources(): SourceRef[];
30
54
  /** Whether one suite currently carries an install entry. */
31
55
  isInstalled(sourceId: string, suiteId: string): boolean;
@@ -33,6 +57,30 @@ export declare class Catalog implements MarketService {
33
57
  setScanProjectLayouts(enabled: boolean): Promise<void>;
34
58
  /** Load persisted user state once at plugin activation. */
35
59
  load(): Promise<void>;
60
+ /** Release the localizer's and the snapshot cache's timers; in-flight work still persists. */
61
+ dispose(): void;
62
+ /**
63
+ * Drop every cached translation, in memory and on disk.
64
+ *
65
+ * Translation is lazy, so this is the whole of the reset: nothing is queued
66
+ * here, and the next panel read repopulates the cache from scratch. The
67
+ * in-memory copy is emptied too, or the same process would keep serving text
68
+ * the file no longer holds.
69
+ * @returns fulfillment once the cache is empty.
70
+ */
71
+ clearTranslations(): Promise<void>;
72
+ /** Apply the current display preference to pending translation work. */
73
+ syncTranslationEnabled(): void;
74
+ /**
75
+ * Wait for queued translations to finish.
76
+ *
77
+ * Nothing on the request path calls this — the panel renders upstream text
78
+ * and re-reads. It exists so a test can observe the settled state instead of
79
+ * polling.
80
+ * @param deadlineMs - maximum wait; omitted waits for the queue alone.
81
+ * @returns whether the queue drained before the deadline.
82
+ */
83
+ settleDescriptions(deadlineMs?: number): Promise<boolean>;
36
84
  /** Append config-seeded sources missing from user state and persist them. */
37
85
  mergeSources(sources: SourceRef[]): Promise<void>;
38
86
  /**
@@ -49,16 +97,55 @@ export declare class Catalog implements MarketService {
49
97
  refreshSettled(deadlineMs?: number): Promise<boolean>;
50
98
  /** Read one coherent user-dimension snapshot, reusing in-flight discovery. */
51
99
  readUserCatalog(): Promise<CatalogSnapshot>;
100
+ /** Installed local user declarations, including globally disabled suites; never changes global runtime discovery. */
101
+ installedSuiteDeclarations(): Promise<ExtensionSuiteCandidate[]>;
52
102
  /** Read one coherent project-dimension snapshot for a workspace cwd. */
53
103
  readProjectCatalog(cwd: string): Promise<CatalogSnapshot>;
54
104
  /** Runtime discovery scans only sources containing an enabled install. No acquisition or network access. */
55
105
  enabledUserSuites(): Promise<Suite[]>;
56
- /** The full market overview from one user snapshot. */
106
+ /**
107
+ * The full market overview from one user snapshot.
108
+ *
109
+ * The description is localized on the way out: a suite whose text is already
110
+ * Chinese (or already bilingual) is served as authored, and every other
111
+ * description is translated in the background. The read itself never waits on
112
+ * a provider call — a suite with no cached translation carries its original
113
+ * text plus a translated field only once one lands, and the panel re-reads
114
+ * while anything reports itself pending.
115
+ */
57
116
  overview(): Promise<OverviewPayload>;
58
- /** One suite's full detail for the market detail modal. */
59
- suiteDetail(sourceId: string, suiteId: string): Promise<SuiteDetail>;
60
- /** One skill's full SKILL.md text for the market detail modal. */
61
- skillContent(sourceId: string, suiteId: string, skillName: string): Promise<SkillContent>;
117
+ /** One entity's translated description, pending count included. {@link TranslationService.translateFields} owns the rule. */
118
+ translateFields(surface: TranslationSurfaceKind, id: string, fields: {
119
+ name?: string | undefined;
120
+ description?: string | undefined;
121
+ }, locale: string): {
122
+ fields: TranslationFields;
123
+ pending: number;
124
+ };
125
+ /** One authored text translated chunk by chunk. {@link TranslationService.translateDocument} owns the rule for bodies. */
126
+ translateDocument(surface: TranslationSurfaceKind, id: string, text: string, locale: string, retry?: boolean): DocumentTranslation;
127
+ /**
128
+ * The localized face of every `/` menu row this plugin owns.
129
+ *
130
+ * The rows come from the runtime registries (through
131
+ * {@link CatalogPorts.menuRowIdentities}) because only they know the call name
132
+ * a command actually got; the text comes from the shared translation service,
133
+ * because the panel reads it through the same translation cache. Resolution
134
+ * is a cache read and never a provider call: a row whose text is not cached
135
+ * yet answers without a face, and the panel read that follows queues it.
136
+ *
137
+ * A field is emitted only when the translation differs from the authored
138
+ * text. The menu shows the call name beside the label, so a name that
139
+ * translated to itself would only duplicate the alias.
140
+ * @returns one wire row per owned menu row, without rows carrying no translation.
141
+ */
142
+ menuRowFaces(): Promise<MenuRowFaceWire[]>;
143
+ /** One suite's full detail. {@link SuiteQueries.suiteDetail} owns the composition. */
144
+ suiteDetail(sourceId: string, suiteId: string, projectCwd?: string): Promise<SuiteDetail>;
145
+ /** One suite document's authored text. {@link SuiteQueries.suiteDocument} owns the read. */
146
+ suiteDocument(sourceId: string, suiteId: string, kind: UserPanelKind, name: string, projectCwd?: string): Promise<SuiteDocumentText>;
147
+ /** One suite document's translation. {@link SuiteQueries.suiteDocumentTranslation} owns the keying. */
148
+ suiteDocumentTranslation(sourceId: string, suiteId: string, kind: UserPanelKind, name: string, retry?: boolean, projectCwd?: string): Promise<DocumentTranslation>;
62
149
  /** Add a source and acquire it immediately (clone, download, or in-place). */
63
150
  addSource(input: SourceInput): Promise<SourceRef>;
64
151
  /** Register one unmanaged `.sources/` checkout as a source without touching its files. */
@@ -92,11 +179,19 @@ export declare class Catalog implements MarketService {
92
179
  setSurface(sourceId: string, suiteId: string, surface: SuiteSurfaceKey, enabled: boolean): Promise<void>;
93
180
  /** Build the flat MCP service inventory for the status surface. */
94
181
  mcpStatus(): Promise<McpStatusPayload>;
95
- /** Persist a user-owned MCP service and reconcile its bridge mount. */
96
- addMcpServer(name: string, server: unknown): Promise<void>;
97
- /** Read effective service configuration without exposing credential literals. */
98
- serverConfig(kind: 'mcp' | 'lsp', id: string): Promise<ServerConfigPayload>;
99
- /** Validate a complete replacement before writing; plugin checkouts remain untouched. */
182
+ /** Validate and persist a user-owned MCP service with optional policy before reconciling its mount. */
183
+ addMcpServer(name: string, server: unknown, policy?: unknown): Promise<void>;
184
+ /**
185
+ * Read a service without credential literals, or an unsaved template when
186
+ * `create` is true. The two transports have separate owners, so this facade
187
+ * only routes the request to the module that owns the declaration.
188
+ */
189
+ serverConfig(kind: 'mcp' | 'lsp', id: string, create?: boolean): Promise<ServerConfigPayload>;
190
+ /**
191
+ * Validate a complete replacement before writing; plugin checkouts remain
192
+ * untouched. The MCP half also carries the editing policy, which the LSP
193
+ * document has no seat for.
194
+ */
100
195
  saveServerConfig(kind: 'mcp' | 'lsp', id: string, config: unknown, policy?: unknown): Promise<void>;
101
196
  /** One suite's persisted MCP overrides, addressed by qualified suite id. */
102
197
  mcpOverrides(sourceId: string, suiteId: string): Promise<McpSuiteOverrides>;
@@ -0,0 +1,24 @@
1
+ import type { SuiteDetail, UserPanelKind } from '../../../market-contracts/src/contracts/market.js';
2
+ import { type InstalledEntry, type Suite } from '../../../market-contracts/src/model/types.js';
3
+ import type { McpMountDiagnostic as McpDiagnostic } from '../../../market-contracts/src/contracts/mcp.js';
4
+ /** Build the detail response for one normalized suite. */
5
+ export declare function buildSuiteDetail(suite: Suite, installed: InstalledEntry | undefined, diagnostics: readonly McpDiagnostic[], mcpOverrides?: Record<string, Record<string, unknown>>): Promise<SuiteDetail>;
6
+ /**
7
+ * Read one of a suite's document surfaces — a skill, a command, or an agent —
8
+ * by the identity the market detail page addresses it with.
9
+ *
10
+ * This is the only body the market ever serves. The detail payload carries a
11
+ * document's name and description so its row can render, and the text arrives
12
+ * here when a reader opens that row, whole and uncut.
13
+ *
14
+ * The suite's own scanned resource list is the only source of a path: the
15
+ * caller names a document, never a path, and a name the scan did not produce is
16
+ * a miss rather than a lookup. Commands and agents read the same resource the
17
+ * scan that built the detail payload found, so a document read here is the
18
+ * document that payload named — re-read rather than taken from the request.
19
+ * @param suite - the normalized suite the document belongs to.
20
+ * @param kind - which of the three document surfaces the name belongs to.
21
+ * @param name - the document's name inside that surface.
22
+ * @returns the document's text exactly as authored.
23
+ */
24
+ export declare function readSuiteDocument(suite: Suite, kind: UserPanelKind, name: string): Promise<string>;
@@ -0,0 +1,45 @@
1
+ import type { CatalogPort as Catalog } from '../../../market-runtime/src/index.js';
2
+ import type { PanelResourceStore } from '../../../market-runtime/src/index.js';
3
+ import { type ExtensionResource } from '../../../market-contracts/src/contracts/extension-presets.js';
4
+ import type { UserPanelEntryWire, UserPanelKind } from '../../../market-contracts/src/contracts/market.js';
5
+ import { type Suite } from '../../../market-contracts/src/model/types.js';
6
+ import type { McpSuiteOverrides } from '../../../market-mcp/src/index.js';
7
+ import type { ExtensionSuiteCandidate } from '../../../market-runtime/src/index.js';
8
+ export interface ExtensionInventoryPorts {
9
+ catalog: Pick<Catalog, 'overview' | 'mcpStatus' | 'lspStatus'>;
10
+ panels: Record<UserPanelKind, Pick<PanelResourceStore, 'list'>>;
11
+ }
12
+ /** Shared options every mode honours. */
13
+ interface ExtensionInventoryBaseOptions {
14
+ sessionId?: string;
15
+ mcpSessionControl?: boolean;
16
+ /** Legacy mode: installed/local suites without validated declarations. */
17
+ projectSuites?: readonly Suite[];
18
+ /**
19
+ * Suites whose hook declarations this read publishes. The session inventory
20
+ * lists project hooks, installed user-dimension suites and the @user-hooks
21
+ * suite here; it stays separate from {@link projectSuites} so project owner
22
+ * addressing keeps its meaning. Absent, the hook source is projectSuites.
23
+ */
24
+ hookSuites?: readonly Suite[];
25
+ }
26
+ /** Candidate mode: the override data must be explicit, because a missing value would read as "enabled". */
27
+ export interface ExtensionInventoryCandidateOptions extends ExtensionInventoryBaseOptions {
28
+ /** Validated declarations from the parse owner; `validSurfaces` is the availability evidence. */
29
+ candidates: readonly ExtensionSuiteCandidate[];
30
+ /** Per-suite MCP overrides, keyed by resource id. Required: absence is never "on". */
31
+ mcpOverrides: ReadonlyMap<string, McpSuiteOverrides>;
32
+ /** LSP server ids the user disabled, in the identity the LSP rows use. Required for the same reason. */
33
+ lspDisabledIds: ReadonlySet<string>;
34
+ }
35
+ /** Legacy mode: no candidates, so no validated-surface or override data exists. */
36
+ export interface ExtensionInventoryLegacyOptions extends ExtensionInventoryBaseOptions {
37
+ candidates?: undefined;
38
+ mcpOverrides?: undefined;
39
+ lspDisabledIds?: undefined;
40
+ }
41
+ export type ExtensionInventoryOptions = ExtensionInventoryCandidateOptions | ExtensionInventoryLegacyOptions;
42
+ /** Suite panel ids are JSON tuples, not display names or flattened command identifiers. */
43
+ export declare function suiteResourceOwner(entry: UserPanelEntryWire): string | undefined;
44
+ export declare function readExtensionInventory(ports: ExtensionInventoryPorts, options?: ExtensionInventoryOptions): Promise<ExtensionResource[]>;
45
+ export { extensionResourceEnabled } from '../../../market-runtime/src/index.js';
@@ -0,0 +1,26 @@
1
+ /** Read-only project resources reuse the full user-facing detail and document readers. */
2
+ import type { CatalogPort as Catalog } from '../../../market-runtime/src/index.js';
3
+ import { createPanelResources } from '../../../market-runtime/src/index.js';
4
+ import type { McpToolSnapshot } from '../../../market-contracts/src/ports/ports.js';
5
+ import type { McpMountDiagnostic } from '../../../market-contracts/src/contracts/mcp.js';
6
+ import type { Suite } from '../../../market-contracts/src/model/types.js';
7
+ import type { UserPanelKind } from '../../../market-contracts/src/contracts/market.js';
8
+ /** What one session's workspace can read: the project suites plus the full user-facing detail readers. */
9
+ export type ProjectExtensionReader = ReturnType<typeof createProjectExtensionResources>;
10
+ export declare function createProjectExtensionResources(catalog: Catalog, users: Parameters<typeof createPanelResources>[1], cwd: string): {
11
+ panels: Record<UserPanelKind, import("../../../market-runtime/src/index.js").PanelResourceStore>;
12
+ suites: () => Promise<Suite[]>;
13
+ suiteDetail(sourceId: string, suiteId: string): Promise<import("../../../market-contracts/src/contracts/market.js").SuiteDetail>;
14
+ /**
15
+ * One document of this workspace's suite, on any of the three surfaces.
16
+ *
17
+ * The lookup stays in Catalog — one reader for skills, commands and agents — and
18
+ * the project cwd only selects which snapshot answers. Re-scanning here would
19
+ * duplicate the catalog's own identity handling.
20
+ */
21
+ suiteDocument(sourceId: string, suiteId: string, kind: UserPanelKind, name: string): Promise<import("../../../market-contracts/src/contracts/market.js").SuiteDocumentText>;
22
+ /** The same document's translation, answered from this workspace's snapshot. */
23
+ suiteDocumentTranslation(sourceId: string, suiteId: string, kind: UserPanelKind, name: string, retry?: boolean): Promise<import("@dsh-market/contracts/contracts/translation").DocumentTranslation>;
24
+ mcpStatus(diagnostics?: McpMountDiagnostic[], observed?: readonly McpToolSnapshot[]): Promise<import("@dsh-market/contracts/contracts/mcp-status").McpStatusPayload>;
25
+ lspStatus(): Promise<import("@dsh-market/contracts/contracts/lsp-status").LspStatusPayload>;
26
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The project resource window's installed inventory.
3
+ *
4
+ * One aggregation over the data planes that already exist — the market
5
+ * overview (installed suites), the three user panels (skills, commands,
6
+ * agents), the MCP status surface, and the LSP status surface — assembled
7
+ * here into the row shape the window renders. No second scan pipeline runs:
8
+ * every row cites the source of truth that already feeds the settings panels,
9
+ * and the per-entry enable flags come from the workspace filter state.
10
+ *
11
+ * @module application/resource-inventory
12
+ */
13
+ import type { Catalog } from './catalog.js';
14
+ import type { PanelResourceStore } from '../../../market-runtime/src/index.js';
15
+ import type { ResourceFavoriteWire, ResourceWindowPayload } from '../../../market-contracts/src/contracts/resource-window.js';
16
+ import type { ResourceFilters } from '../../../market-runtime/src/index.js';
17
+ /** Structural catalog surface the inventory reads. */
18
+ interface InventoryCatalog {
19
+ overview(): Promise<import('../../../market-contracts/src/contracts/market.js').OverviewPayload>;
20
+ mcpStatus(): Promise<import('../../../market-contracts/src/contracts/mcp-status.js').McpStatusPayload>;
21
+ lspStatus(): Promise<import('../../../market-contracts/src/contracts/lsp-status.js').LspStatusPayload>;
22
+ }
23
+ /** Structural filter state the inventory reads (implemented by the runtime service). */
24
+ export interface InventoryFilterSource {
25
+ currentFilters(): ResourceFilters;
26
+ favorites(): Promise<ResourceFavoriteWire[]>;
27
+ }
28
+ /** The stores and services one inventory read needs. */
29
+ export interface ResourceInventoryDeps {
30
+ catalog: InventoryCatalog | Catalog;
31
+ panels: {
32
+ skills: PanelResourceStore;
33
+ commands: PanelResourceStore;
34
+ agents: PanelResourceStore;
35
+ };
36
+ filters: InventoryFilterSource;
37
+ /** The workspace label the header chip shows; defaults to the process cwd. */
38
+ workspace?: string;
39
+ }
40
+ /** Build one window payload from the live stores. */
41
+ export declare function buildResourceWindow(deps: ResourceInventoryDeps): Promise<ResourceWindowPayload>;
42
+ export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Compatibility barrel for the service-configuration helpers that used to live
3
+ * here. Each declaration now belongs to the domain that owns it: MCP validation
4
+ * and redaction-restore to market-mcp, LSP validation and the override layer to
5
+ * market-lsp. The re-exports stay so existing importers and tests keep their
6
+ * current specifier; new code imports the owning module directly.
7
+ */
8
+ export { McpConfigError, restoreRedactedConfig, validateServerMcp, type McpFieldError } from '../../../market-mcp/src/index.js';
9
+ export { applyLspOverrides, loadLspOverrides, lspConfig, saveLspOverride, validateServerLsp } from '../../../market-lsp/src/index.js';