@try-works/dsh-model-as-tool 0.1.3 → 0.4.0

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 (260) hide show
  1. package/bin/dsh-tool-mode-credentials.mjs +20 -0
  2. package/bin/dsh-tool-mode.mjs +202 -0
  3. package/catalog/desert-ant-models.json +693 -693
  4. package/client/client.model-tools.js +614 -0
  5. package/client/index.js +1717 -0
  6. package/lib/adapters/index.d.ts.map +1 -1
  7. package/lib/adapters/index.js +4 -4
  8. package/lib/bindings.d.ts.map +1 -1
  9. package/lib/bindings.js +26 -25
  10. package/lib/capability.d.ts.map +1 -1
  11. package/lib/capability.js +17 -0
  12. package/lib/capture-path.d.ts +97 -0
  13. package/lib/capture-path.d.ts.map +1 -0
  14. package/lib/capture-path.js +152 -0
  15. package/lib/diagnostics.d.ts +166 -0
  16. package/lib/diagnostics.d.ts.map +1 -0
  17. package/lib/diagnostics.js +135 -0
  18. package/lib/extension-dependencies.d.ts +325 -0
  19. package/lib/extension-dependencies.d.ts.map +1 -0
  20. package/lib/extension-dependencies.js +858 -0
  21. package/lib/extension-dispatch.d.ts +117 -0
  22. package/lib/extension-dispatch.d.ts.map +1 -0
  23. package/lib/extension-dispatch.js +124 -0
  24. package/lib/extension-registrar.d.ts +100 -0
  25. package/lib/extension-registrar.d.ts.map +1 -0
  26. package/lib/extension-registrar.js +134 -0
  27. package/lib/extensions-api.d.ts +221 -0
  28. package/lib/extensions-api.d.ts.map +1 -0
  29. package/lib/extensions-api.js +17 -0
  30. package/lib/extensions-remote.d.ts +54 -0
  31. package/lib/extensions-remote.d.ts.map +1 -0
  32. package/lib/extensions-remote.js +66 -0
  33. package/lib/extensions-service.d.ts +367 -0
  34. package/lib/extensions-service.d.ts.map +1 -0
  35. package/lib/extensions-service.js +1527 -0
  36. package/lib/harness-llm.d.ts +138 -0
  37. package/lib/harness-llm.d.ts.map +1 -0
  38. package/lib/harness-llm.js +218 -0
  39. package/lib/harness-serving.d.ts +95 -0
  40. package/lib/harness-serving.d.ts.map +1 -0
  41. package/lib/harness-serving.js +157 -0
  42. package/lib/headless.d.ts +97 -0
  43. package/lib/headless.d.ts.map +1 -0
  44. package/lib/headless.js +349 -0
  45. package/lib/http-acquisition.d.ts +27 -0
  46. package/lib/http-acquisition.d.ts.map +1 -0
  47. package/lib/http-acquisition.js +136 -0
  48. package/lib/index.d.ts +271 -7
  49. package/lib/index.d.ts.map +1 -1
  50. package/lib/index.js +2644 -70
  51. package/lib/invocation-accounting.d.ts +169 -0
  52. package/lib/invocation-accounting.d.ts.map +1 -0
  53. package/lib/invocation-accounting.js +148 -0
  54. package/lib/legacy-migration.d.ts +95 -0
  55. package/lib/legacy-migration.d.ts.map +1 -0
  56. package/lib/legacy-migration.js +429 -0
  57. package/lib/managed-workers.d.ts +151 -0
  58. package/lib/managed-workers.d.ts.map +1 -0
  59. package/lib/managed-workers.js +249 -0
  60. package/lib/mcp/client-grant.d.ts +74 -0
  61. package/lib/mcp/client-grant.d.ts.map +1 -0
  62. package/lib/mcp/client-grant.js +60 -0
  63. package/lib/mcp/credential-cli.d.ts +38 -0
  64. package/lib/mcp/credential-cli.d.ts.map +1 -0
  65. package/lib/mcp/credential-cli.js +148 -0
  66. package/lib/mcp/credential-store.d.ts +143 -0
  67. package/lib/mcp/credential-store.d.ts.map +1 -0
  68. package/lib/mcp/credential-store.js +454 -0
  69. package/lib/mcp/host-binding.d.ts +25 -0
  70. package/lib/mcp/host-binding.d.ts.map +1 -1
  71. package/lib/mcp/host-binding.js +107 -14
  72. package/lib/mcp/http.d.ts +68 -18
  73. package/lib/mcp/http.d.ts.map +1 -1
  74. package/lib/mcp/http.js +390 -62
  75. package/lib/mcp/oauth.d.ts +149 -0
  76. package/lib/mcp/oauth.d.ts.map +1 -0
  77. package/lib/mcp/oauth.js +396 -0
  78. package/lib/mcp/protocol.d.ts +46 -7
  79. package/lib/mcp/protocol.d.ts.map +1 -1
  80. package/lib/mcp/protocol.js +63 -16
  81. package/lib/mcp/rate-limit.d.ts +68 -0
  82. package/lib/mcp/rate-limit.d.ts.map +1 -0
  83. package/lib/mcp/rate-limit.js +114 -0
  84. package/lib/mcp/sdk-v2.d.ts +17 -0
  85. package/lib/mcp/sdk-v2.d.ts.map +1 -0
  86. package/lib/mcp/sdk-v2.js +181 -0
  87. package/lib/mcp/server.d.ts +11 -1
  88. package/lib/mcp/server.d.ts.map +1 -1
  89. package/lib/mcp/server.js +80 -13
  90. package/lib/mcp/stdio.d.ts.map +1 -1
  91. package/lib/mcp/stdio.js +9 -1
  92. package/lib/mcp/subscriptions.d.ts +43 -1
  93. package/lib/mcp/subscriptions.d.ts.map +1 -1
  94. package/lib/mcp/subscriptions.js +90 -9
  95. package/lib/model-qualification.d.ts +192 -0
  96. package/lib/model-qualification.d.ts.map +1 -0
  97. package/lib/model-qualification.js +178 -0
  98. package/lib/planning.d.ts +246 -0
  99. package/lib/planning.d.ts.map +1 -0
  100. package/lib/planning.js +457 -0
  101. package/lib/prepared-assets.d.ts +178 -0
  102. package/lib/prepared-assets.d.ts.map +1 -0
  103. package/lib/prepared-assets.js +286 -0
  104. package/lib/provider-bridge.d.ts +37 -0
  105. package/lib/provider-bridge.d.ts.map +1 -1
  106. package/lib/provider-bridge.js +189 -12
  107. package/lib/ptc-authority.d.ts +140 -0
  108. package/lib/ptc-authority.d.ts.map +1 -0
  109. package/lib/ptc-authority.js +216 -0
  110. package/lib/ptc-runtime.d.ts +156 -0
  111. package/lib/ptc-runtime.d.ts.map +1 -0
  112. package/lib/ptc-runtime.js +191 -0
  113. package/lib/publication.d.ts +2 -1
  114. package/lib/publication.d.ts.map +1 -1
  115. package/lib/publication.js +13 -5
  116. package/lib/receipt.d.ts.map +1 -1
  117. package/lib/receipt.js +8 -0
  118. package/lib/title-proposal.d.ts +194 -0
  119. package/lib/title-proposal.d.ts.map +1 -0
  120. package/lib/title-proposal.js +244 -0
  121. package/lib/tool-mode-run.d.ts +235 -0
  122. package/lib/tool-mode-run.d.ts.map +1 -0
  123. package/lib/tool-mode-run.js +283 -0
  124. package/lib/types.d.ts +3 -1
  125. package/lib/types.d.ts.map +1 -1
  126. package/lib/update-surface.d.ts +79 -0
  127. package/lib/update-surface.d.ts.map +1 -0
  128. package/lib/update-surface.js +224 -0
  129. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.d.ts +38 -0
  130. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.d.ts.map +1 -0
  131. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.js +445 -0
  132. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.d.ts +14 -0
  133. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.d.ts.map +1 -0
  134. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.js +63 -0
  135. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.d.ts +14 -0
  136. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.d.ts.map +1 -0
  137. package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.js +76 -0
  138. package/node_modules/@try-works/tool-mode-contracts/lib/dsh.d.ts.map +1 -1
  139. package/node_modules/@try-works/tool-mode-contracts/lib/dsh.js +69 -55
  140. package/node_modules/@try-works/tool-mode-contracts/lib/index.d.ts +4 -1
  141. package/node_modules/@try-works/tool-mode-contracts/lib/index.d.ts.map +1 -1
  142. package/node_modules/@try-works/tool-mode-contracts/lib/index.js +26 -2
  143. package/node_modules/@try-works/tool-mode-contracts/lib/registry.d.ts +28 -2
  144. package/node_modules/@try-works/tool-mode-contracts/lib/registry.d.ts.map +1 -1
  145. package/node_modules/@try-works/tool-mode-contracts/lib/registry.js +93 -10
  146. package/node_modules/@try-works/tool-mode-contracts/package.json +0 -1
  147. package/node_modules/@try-works/tool-mode-extension-sdk/bin/dsh-tool-mode.mjs +20 -0
  148. package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.d.ts +80 -0
  149. package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.d.ts.map +1 -0
  150. package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.js +533 -0
  151. package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.d.ts +83 -0
  152. package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.d.ts.map +1 -0
  153. package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.js +125 -0
  154. package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.d.ts +70 -0
  155. package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.d.ts.map +1 -0
  156. package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.js +201 -0
  157. package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.d.ts +57 -0
  158. package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.d.ts.map +1 -0
  159. package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.js +83 -0
  160. package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.d.ts +32 -0
  161. package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.d.ts.map +1 -0
  162. package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.js +32 -0
  163. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.d.ts +86 -0
  164. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.d.ts.map +1 -0
  165. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.js +191 -0
  166. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.d.ts +126 -0
  167. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.d.ts.map +1 -0
  168. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.js +297 -0
  169. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.d.ts +216 -0
  170. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.d.ts.map +1 -0
  171. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.js +800 -0
  172. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.d.ts +210 -0
  173. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.d.ts.map +1 -0
  174. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.js +368 -0
  175. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.d.ts +63 -0
  176. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.d.ts.map +1 -0
  177. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.js +149 -0
  178. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.d.ts +35 -0
  179. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.d.ts.map +1 -0
  180. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.js +179 -0
  181. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.d.ts +179 -0
  182. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.d.ts.map +1 -0
  183. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.js +235 -0
  184. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.d.ts +367 -0
  185. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.d.ts.map +1 -0
  186. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.js +807 -0
  187. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.d.ts +44 -0
  188. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.d.ts.map +1 -0
  189. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.js +243 -0
  190. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.d.ts +185 -0
  191. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.d.ts.map +1 -0
  192. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.js +504 -0
  193. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.d.ts +17 -0
  194. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.d.ts.map +1 -0
  195. package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.js +80 -0
  196. package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.d.ts +52 -0
  197. package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.d.ts.map +1 -0
  198. package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.js +102 -0
  199. package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.d.ts +171 -0
  200. package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.d.ts.map +1 -0
  201. package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.js +271 -0
  202. package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.d.ts +242 -0
  203. package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.d.ts.map +1 -0
  204. package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.js +58 -0
  205. package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.d.ts +118 -0
  206. package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.d.ts.map +1 -0
  207. package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.js +113 -0
  208. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.d.ts +2 -0
  209. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.d.ts.map +1 -0
  210. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.js +351 -0
  211. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.d.ts +150 -0
  212. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.d.ts.map +1 -0
  213. package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.js +670 -0
  214. package/node_modules/@try-works/tool-mode-extension-sdk/package.json +53 -0
  215. package/node_modules/@try-works/tool-mode-extension-sdk/schema/extension-manifest-1.1.0.schema.json +253 -0
  216. package/node_modules/@try-works/tool-mode-recipes/bin/tool-mode-recipe.mjs +15 -0
  217. package/node_modules/@try-works/tool-mode-recipes/lib/broker.d.ts +427 -0
  218. package/node_modules/@try-works/tool-mode-recipes/lib/broker.d.ts.map +1 -0
  219. package/node_modules/@try-works/tool-mode-recipes/lib/broker.js +592 -0
  220. package/node_modules/@try-works/tool-mode-recipes/lib/cli.d.ts +60 -0
  221. package/node_modules/@try-works/tool-mode-recipes/lib/cli.d.ts.map +1 -0
  222. package/node_modules/@try-works/tool-mode-recipes/lib/cli.js +936 -0
  223. package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.d.ts +237 -0
  224. package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.d.ts.map +1 -0
  225. package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.js +200 -0
  226. package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.d.ts +85 -0
  227. package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.d.ts.map +1 -0
  228. package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.js +176 -0
  229. package/node_modules/@try-works/tool-mode-recipes/lib/images.d.ts +105 -0
  230. package/node_modules/@try-works/tool-mode-recipes/lib/images.d.ts.map +1 -0
  231. package/node_modules/@try-works/tool-mode-recipes/lib/images.js +129 -0
  232. package/node_modules/@try-works/tool-mode-recipes/lib/index.d.ts +25 -0
  233. package/node_modules/@try-works/tool-mode-recipes/lib/index.d.ts.map +1 -0
  234. package/node_modules/@try-works/tool-mode-recipes/lib/index.js +25 -0
  235. package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.d.ts +325 -0
  236. package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.d.ts.map +1 -0
  237. package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.js +1310 -0
  238. package/node_modules/@try-works/tool-mode-recipes/lib/templates.d.ts +51 -0
  239. package/node_modules/@try-works/tool-mode-recipes/lib/templates.d.ts.map +1 -0
  240. package/node_modules/@try-works/tool-mode-recipes/lib/templates.js +310 -0
  241. package/node_modules/@try-works/tool-mode-recipes/lib/titles.d.ts +227 -0
  242. package/node_modules/@try-works/tool-mode-recipes/lib/titles.d.ts.map +1 -0
  243. package/node_modules/@try-works/tool-mode-recipes/lib/titles.js +407 -0
  244. package/node_modules/@try-works/tool-mode-recipes/package.json +56 -0
  245. package/node_modules/@try-works/tool-mode-recipes/recipes/describe-image.json +38 -0
  246. package/node_modules/@try-works/tool-mode-recipes/recipes/text-title.json +45 -0
  247. package/node_modules/@try-works/tool-mode-recipes/schema/harness-model-recipe.schema.json +273 -0
  248. package/package.json +43 -15
  249. package/remote/spec.mjs +462 -0
  250. package/remote/typert.host.mjs +14 -0
  251. package/remote/typert.remote-client.mjs +16 -0
  252. package/lib/adapters/tongue.d.ts +0 -31
  253. package/lib/adapters/tongue.d.ts.map +0 -1
  254. package/lib/adapters/tongue.js +0 -93
  255. package/lib/adapters/voz.d.ts +0 -28
  256. package/lib/adapters/voz.d.ts.map +0 -1
  257. package/lib/adapters/voz.js +0 -102
  258. /package/{lib → node_modules/@try-works/tool-mode-extension-sdk/lib}/licensing.d.ts +0 -0
  259. /package/{lib → node_modules/@try-works/tool-mode-extension-sdk/lib}/licensing.d.ts.map +0 -0
  260. /package/{lib → node_modules/@try-works/tool-mode-extension-sdk/lib}/licensing.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAA;AAExB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAAO,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,kBAA4C,EACrD,SAAS,GAAE,SAAS,cAAc,EAAsB,EACxD,MAAM,CAAC,EAAE,cAAc,GACtB,YAAY,GAAG,SAAS,CAqB1B;AAED,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAA;AAExB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAAO,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,kBAA4C,EACrD,SAAS,GAAE,SAAS,cAAc,EAAsB,EACxD,MAAM,CAAC,EAAE,cAAc,GACtB,YAAY,GAAG,SAAS,CAoB1B;AAED,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -59,10 +59,10 @@ function transportAdapter(entry, transport) {
59
59
  */
60
60
  export function createAdapter(entry, options = { route: 'npm-native' }, factories = ADAPTER_FACTORIES, bridge) {
61
61
  // A declared extension binding is the model's own statement of who implements
62
- // it, so it is consulted before any host-side knowledge.
63
- if (bridge !== undefined && entry.provider !== undefined) {
64
- return bridge.adapterFor(entry);
65
- }
62
+ // it, but only the explicit extension route may use it. This keeps CLI/remote
63
+ // fallback routes from accidentally trying to load a provider package.
64
+ if (options.route === 'extension')
65
+ return bridge?.adapterFor(entry);
66
66
  for (const factory of factories) {
67
67
  const adapter = factory(entry);
68
68
  if (adapter !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC7E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,qBAAqB,CAAA;AAElE,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAA;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IACtD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC9D;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAC1C,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAaxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,EACvE,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,QAAQ,CAYV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,EACvE,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EACjC,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,iBAAiB,CAoBnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE;IAAE,KAAK,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,IAAI,CAAA;KAAE,CAAA;CAAE,EAC7D,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,GACjB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAoG3C"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAOL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC7E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAA;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IACtD;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC9D;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAC1C,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAcxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,EACvE,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,QAAQ,CAYV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,EACvE,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EACjC,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,iBAAiB,CAoBnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE;IAAE,KAAK,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,IAAI,CAAA;KAAE,CAAA;CAAE,EAC7D,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,GACjB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAoG3C"}
package/lib/bindings.js CHANGED
@@ -13,7 +13,7 @@
13
13
  * @module @try-works/dsh-model-as-tool/bindings
14
14
  */
15
15
  import { defineTool } from '@deepseek-ai/dsh-tools';
16
- import { assertValidContract, assertValidInput, assertValidOutput, crossFieldRules, toDshParameters, } from '@try-works/tool-mode-contracts';
16
+ import { assertValidContract, assertValidInput, assertValidOutput, crossFieldRules, projectSchemaToDsh, toDshParameters, } from '@try-works/tool-mode-contracts';
17
17
  import { toContractPayload, toNativeArgs } from "./contract-payload.js";
18
18
  import { buildInvocationReceipt } from "./receipt.js";
19
19
  import { authorizeTool, createInvocationAuthority, } from "./authority.js";
@@ -27,6 +27,7 @@ import { authorizeTool, createInvocationAuthority, } from "./authority.js";
27
27
  */
28
28
  export function executionLocationOf(route) {
29
29
  switch (route) {
30
+ case 'extension':
30
31
  case 'npm-native':
31
32
  case 'npm-onnxruntime':
32
33
  return 'host';
@@ -124,33 +125,26 @@ export function registerContractTool(ctx, binding, host) {
124
125
  parameters: toDshParameters(contract),
125
126
  output: {
126
127
  /**
127
- * An open object schema, and DECL-02 names this as INADEQUATE.
128
+ * The PROJECTED output schema, closing the DECL-02 advertisement gap.
128
129
  *
129
- * The requirement says in as many words that an unconstrained
130
- * `{type: "object", additionalProperties: true}` is not an adequate implementation
131
- * of an ordinary leaf tool's contract. It is right, and this repository cannot yet
132
- * do better: the contract's real output schema CANNOT be projected into DSH's
133
- * value-schema DSL. Attempting it produced four distinct rejections at
134
- * registration, recorded here because the next person will try the same thing:
130
+ * The registry validates every success against this advertised schema, so it may
131
+ * never be STRICTER than the contract. `projectSchemaToDsh` only loosens: it drops
132
+ * keywords the DSH value-schema DSL cannot carry (`items` at depth, non-scalar
133
+ * `enum`, `minimum`/`pattern`/`minLength`), records each in `runtimeEnforced`, and
134
+ * keeps every property name, type and closedness. `assertValidOutput` still
135
+ * enforces the FULL contract at runtime, so the projection is advertisement-only.
135
136
  *
136
- * 1. `schema.required is not supported by the value schema DSL`
137
- * 2. `schema.properties.candidates.items.required is not supported` - so required
138
- * is unsupported at EVERY depth, not merely at the root
139
- * 3. `schema.properties.words.items is not supported` - `items` is in the
140
- * documented supported set but its support does not extend to an array nested
141
- * inside an object, which is what every output schema has
142
- * 4. `schema.properties.reliability.enum must be a non-empty array of scalar
143
- * values` - and separate attempts to express the union type as `oneOf` were
144
- * rejected too, with `oneOf must be an array of at least two value schemas`
145
- *
146
- * Stripping each keyword in turn does converge, but it converges on a schema that
147
- * advertises almost nothing while APPEARING to be a real declaration - which is
148
- * worse than this open object, because a client would trust it. The contract
149
- * itself is unchanged and complete: `assertValidOutput` enforces the real schema at
150
- * runtime against the untouched contract, so results ARE validated. What is
151
- * missing is the ADVERTISEMENT.
137
+ * The open `{type:"object", additionalProperties:true}` this replaces declared
138
+ * nothing about any field; the projection names every property, its type and its
139
+ * requiredness — a genuine declaration. Registration was previously impossible
140
+ * because the projection mangled scalar enums into objects (`{0:'host',...}`) via
141
+ * an array/record confusion in stripItems; that defect is fixed and probed.
152
142
  */
153
- schema: { type: 'object', additionalProperties: true },
143
+ schema: {
144
+ type: 'object',
145
+ properties: projectSchemaToDsh(contract.outputSchema).parameters,
146
+ additionalProperties: false,
147
+ },
154
148
  render: (_args, value) => {
155
149
  const record = value;
156
150
  return [{ type: 'text', text: renderForModel(contract, record) }];
@@ -189,6 +183,13 @@ export function registerContractTool(ctx, binding, host) {
189
183
  // call that failed validation would claim provenance for a result nobody
190
184
  // received, so the sink sees only calls that actually completed.
191
185
  host.recordReceipt?.(buildReceipt(binding, host, meta));
186
+ /**
187
+ * The cast exists because the projected schema's inferred type is a closed
188
+ * record, while the registry validates the VALUE against the projected schema
189
+ * (which only LOOSENS the contract) and `assertValidOutput` enforces the full
190
+ * contract. The value is losslessly JSON and has passed both; the type-level
191
+ * fiction is contained to this return.
192
+ */
192
193
  return value;
193
194
  },
194
195
  presentCall(callArgs) {
@@ -1 +1 @@
1
- {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAWtE;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE5E;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACvB,GACL,iBAAiB,CA6FnB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAM,GACpD,aAAa,EAAE,CAEjB"}
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAWtE;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE5E;AAwBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACvB,GACL,iBAAiB,CA+GnB;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAM,GACpD,aAAa,EAAE,CAEjB"}
package/lib/capability.js CHANGED
@@ -80,6 +80,23 @@ export function resolveCapability(entry, options = {}) {
80
80
  // A bridge is checked first among the fallbacks because it is the only route
81
81
  // for Apple-only models, which have neither a package nor (for some) a verb.
82
82
  const bridgeUsable = remoteEndpoint !== undefined && remoteEndpoint.length > 0 && !entry.closedBeta;
83
+ if (entry.provider !== undefined && !entry.closedBeta) {
84
+ const extensionManifest = `${entry.provider.extension}/package.json`;
85
+ if (resolve(extensionManifest)) {
86
+ return {
87
+ runnable: true,
88
+ route: 'extension',
89
+ reason: `${entry.name} is implemented by the Tool Mode extension ${entry.provider.extension}; provider readiness is checked through that extension before publication and again for discovery.`,
90
+ resolved: [extensionManifest],
91
+ };
92
+ }
93
+ return {
94
+ runnable: false,
95
+ route: 'unavailable',
96
+ reason: `${entry.name} declares the Tool Mode extension ${entry.provider.extension}, which is not installed or not resolvable from this host. Install and activate that extension, or correct the catalog binding.`,
97
+ missing: [extensionManifest],
98
+ };
99
+ }
83
100
  const pkg = entry.npmPackage;
84
101
  // Why the in-process route did not pan out. Kept so the final verdict can name
85
102
  // the exact missing piece ("install onnxruntime-node") instead of falling back
@@ -0,0 +1,97 @@
1
+ /**
2
+ * The full capture path, and the metadata-only profile (OBS-03).
3
+ *
4
+ * THE PREMISE OBS-03 STARTS FROM, and it is the uncomfortable one: **this plugin's defaults
5
+ * cannot guarantee privacy.** A body that is never written by us may still be captured by
6
+ * ANOTHER DSH logging plugin, because DSH's LLM service requires model-visible inputs to be
7
+ * reconstructable — so a harness call's prompt necessarily passes through a surface a sibling
8
+ * plugin can observe. Nothing this plugin does can close that.
9
+ *
10
+ * What this plugin CAN do is be honest about it, which is what the requirement asks for in three
11
+ * parts:
12
+ *
13
+ * 1. **Document the full capture path** — every place a body can come to rest, including the
14
+ * ones outside this plugin's control. A privacy claim that names only our own writes is
15
+ * misleading precisely because the reader will assume it is complete.
16
+ * 2. **Provide and TEST a metadata-only profile** for the headless local-specialist case, where
17
+ * an operator wants the tools without any body retention.
18
+ * 3. **REFUSE rather than silently log** where a no-retention policy cannot be honoured
19
+ * alongside DSH's reconstructability contract. `harnessExecutionDecision` in
20
+ * `diagnostics.ts` makes that decision; this module says which profile it applies to.
21
+ *
22
+ * @module @try-works/dsh-model-as-tool/capture-path
23
+ */
24
+ /** Where a request or response body can come to rest. */
25
+ export interface CaptureSurface {
26
+ /** A stable name for the surface. */
27
+ readonly surface: string;
28
+ /**
29
+ * Whether THIS plugin writes bodies there.
30
+ *
31
+ * `false` does not mean the surface is safe — it means this plugin is not the author. That
32
+ * distinction is the whole reason the field exists: a reader must not mistake "we do not
33
+ * write here" for "nothing is written here".
34
+ */
35
+ readonly writtenByThisPlugin: boolean;
36
+ /** What actually lands there. */
37
+ readonly contents: string;
38
+ /** What an operator can do about it. */
39
+ readonly control: string;
40
+ }
41
+ /**
42
+ * The FULL capture path, including surfaces outside this plugin's control.
43
+ *
44
+ * Ordered from what this plugin owns to what it does not, so a reader sees the boundary
45
+ * explicitly rather than inferring it from a list of our own writes.
46
+ */
47
+ export declare const CAPTURE_PATH: readonly CaptureSurface[];
48
+ /** Which capture policy a deployment runs under (OBS-03). */
49
+ export type CaptureProfile =
50
+ /** Ordinary operation: receipts and accounting, bodies owned by the surfaces above. */
51
+ 'standard'
52
+ /**
53
+ * Headless local-specialist: METADATA ONLY.
54
+ *
55
+ * Composed by an operator who wants the tools without any body retention at all. Everything
56
+ * this plugin writes is metadata; the profile additionally forbids the one path where this
57
+ * plugin could be the author of a body, and refuses harness-backed execution when the
58
+ * deployment's policy cannot satisfy DSH's reconstructability contract.
59
+ */
60
+ | 'metadata-only';
61
+ /** What a profile permits. */
62
+ export interface ProfilePolicy {
63
+ readonly profile: CaptureProfile;
64
+ /** Whether this profile may serve harness-backed (model-calling) tools at all. */
65
+ readonly permitsHarnessExecution: boolean;
66
+ /** Whether this plugin writes any request or response BODY. */
67
+ readonly writesBodies: boolean;
68
+ /** Surfaces this profile does not close, so a reader sees the residual risk. */
69
+ readonly residualSurfaces: readonly string[];
70
+ }
71
+ /**
72
+ * Describe a profile's policy.
73
+ *
74
+ * @param profile - the profile to describe.
75
+ * @param policy - the deployment's retention facts.
76
+ * @returns what the profile permits, and what it does not close.
77
+ */
78
+ export declare function profilePolicy(profile: CaptureProfile, policy: {
79
+ readonly retainsBodies: boolean;
80
+ readonly requiresReconstructableInputs: boolean;
81
+ }): ProfilePolicy;
82
+ /**
83
+ * Whether a profile may serve one tool.
84
+ *
85
+ * @param profile - the active profile.
86
+ * @param policy - the deployment's retention facts.
87
+ * @param harnessBacked - whether the tool calls a model.
88
+ * @returns the decision, with the reason when it refuses.
89
+ */
90
+ export declare function admitsTool(profile: CaptureProfile, policy: {
91
+ readonly retainsBodies: boolean;
92
+ readonly requiresReconstructableInputs: boolean;
93
+ }, harnessBacked: boolean): {
94
+ readonly admitted: boolean;
95
+ readonly reason?: string;
96
+ };
97
+ //# sourceMappingURL=capture-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-path.d.ts","sourceRoot":"","sources":["../src/capture-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,cAAc,EAuEjD,CAAA;AAED,6DAA6D;AAC7D,MAAM,MAAM,cAAc;AACxB,uFAAuF;AACrF,UAAU;AACZ;;;;;;;GAOG;GACD,eAAe,CAAA;AAEnB,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,kFAAkF;IAClF,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAA;IACzC,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAA;CAAE,GAC3F,aAAa,CA+Bf;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAA;CAAE,EAC5F,aAAa,EAAE,OAAO,GACrB;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB1D"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * The full capture path, and the metadata-only profile (OBS-03).
3
+ *
4
+ * THE PREMISE OBS-03 STARTS FROM, and it is the uncomfortable one: **this plugin's defaults
5
+ * cannot guarantee privacy.** A body that is never written by us may still be captured by
6
+ * ANOTHER DSH logging plugin, because DSH's LLM service requires model-visible inputs to be
7
+ * reconstructable — so a harness call's prompt necessarily passes through a surface a sibling
8
+ * plugin can observe. Nothing this plugin does can close that.
9
+ *
10
+ * What this plugin CAN do is be honest about it, which is what the requirement asks for in three
11
+ * parts:
12
+ *
13
+ * 1. **Document the full capture path** — every place a body can come to rest, including the
14
+ * ones outside this plugin's control. A privacy claim that names only our own writes is
15
+ * misleading precisely because the reader will assume it is complete.
16
+ * 2. **Provide and TEST a metadata-only profile** for the headless local-specialist case, where
17
+ * an operator wants the tools without any body retention.
18
+ * 3. **REFUSE rather than silently log** where a no-retention policy cannot be honoured
19
+ * alongside DSH's reconstructability contract. `harnessExecutionDecision` in
20
+ * `diagnostics.ts` makes that decision; this module says which profile it applies to.
21
+ *
22
+ * @module @try-works/dsh-model-as-tool/capture-path
23
+ */
24
+ /**
25
+ * The FULL capture path, including surfaces outside this plugin's control.
26
+ *
27
+ * Ordered from what this plugin owns to what it does not, so a reader sees the boundary
28
+ * explicitly rather than inferring it from a list of our own writes.
29
+ */
30
+ export const CAPTURE_PATH = [
31
+ {
32
+ surface: 'tool invocation arguments',
33
+ writtenByThisPlugin: false,
34
+ contents: 'The arguments a caller passes to a tool. They reach the implementation, and for a '
35
+ + 'harness-backed tool they become part of the rendered prompt.',
36
+ control: 'The caller decides what to pass. This plugin adds nothing to the arguments and copies '
37
+ + 'them nowhere.',
38
+ },
39
+ {
40
+ surface: 'managed-worker stdout/stderr',
41
+ writtenByThisPlugin: false,
42
+ contents: 'Whatever an extension process prints. An extension that logs its own inputs puts bodies '
43
+ + 'into a stream this plugin does not author or read.',
44
+ control: 'Extension authors control their own logging. The isolation mode is declared in the '
45
+ + 'manifest, and the diagnostics surface reports it.',
46
+ },
47
+ {
48
+ surface: 'DSH LLM service',
49
+ writtenByThisPlugin: false,
50
+ contents: 'THE SURFACE THIS PLUGIN CANNOT CLOSE. DSH requires model-visible inputs to be '
51
+ + 'reconstructable, so a harness call\'s prompt passes through the LLM service by design.',
52
+ control: 'An operator-level policy, not a plugin setting. Where no-retention conflicts with '
53
+ + 'reconstructability, the correct response is to REFUSE harness-backed execution — which '
54
+ + 'this plugin does rather than logging bodies or bypassing DSH.',
55
+ },
56
+ {
57
+ surface: 'another DSH logging plugin',
58
+ writtenByThisPlugin: false,
59
+ contents: 'Any body a sibling plugin observes through a DSH hook. This plugin neither knows what '
60
+ + 'they capture nor can it prevent them.',
61
+ control: 'Operator configuration of the OTHER plugin. This is the specific case OBS-03 names, and '
62
+ + 'it is why the plugin defaults cannot be presented as a privacy guarantee.',
63
+ },
64
+ {
65
+ surface: 'the auxiliary-call journal (section 19)',
66
+ writtenByThisPlugin: true,
67
+ contents: 'Harness-backed auxiliary calls, recorded under a SEPARATE authorization from ordinary '
68
+ + 'tool receipts. The broker refuses to construct without a journal sink, so a '
69
+ + 'harness-backed run that records nothing cannot exist.',
70
+ control: 'A deployment composes the sink or the broker refuses. The journal is the mechanism that '
71
+ + 'makes a harness call auditable without putting its body in an ordinary log.',
72
+ },
73
+ {
74
+ surface: 'invocation accounting',
75
+ writtenByThisPlugin: true,
76
+ contents: 'Timings, outcome class and byte SIZES. The record has no field that can hold a payload, '
77
+ + 'which is asserted structurally rather than promised.',
78
+ control: 'Always on. There is nothing to configure because there is nothing sensitive in it.',
79
+ },
80
+ {
81
+ surface: 'tool receipts',
82
+ writtenByThisPlugin: true,
83
+ contents: 'Identity and provenance — contract, implementation, extension version, content digest, '
84
+ + 'activation generation, caller scope. No credentials and no bodies.',
85
+ control: 'Disabled by an explicit configuration flag, which is visible on the diagnostics surface.',
86
+ },
87
+ ];
88
+ /**
89
+ * Describe a profile's policy.
90
+ *
91
+ * @param profile - the profile to describe.
92
+ * @param policy - the deployment's retention facts.
93
+ * @returns what the profile permits, and what it does not close.
94
+ */
95
+ export function profilePolicy(profile, policy) {
96
+ /**
97
+ * The surfaces no profile can close, listed for BOTH profiles because the difference between
98
+ * them is what THIS plugin writes — not what a sibling plugin does.
99
+ */
100
+ const residualSurfaces = CAPTURE_PATH
101
+ .filter(surface => !surface.writtenByThisPlugin)
102
+ .map(surface => surface.surface);
103
+ if (profile === 'standard') {
104
+ return {
105
+ profile,
106
+ permitsHarnessExecution: true,
107
+ writesBodies: false,
108
+ residualSurfaces,
109
+ };
110
+ }
111
+ /**
112
+ * METADATA ONLY. The plugin still writes no bodies — it never did — and the profile adds the
113
+ * REFUSAL: where a no-retention policy conflicts with DSH's reconstructability requirement,
114
+ * harness-backed execution is not served at all. Logging bodies against the policy and
115
+ * bypassing DSH are both forbidden, which leaves refusing.
116
+ */
117
+ const conflict = !policy.retainsBodies && policy.requiresReconstructableInputs;
118
+ return {
119
+ profile,
120
+ permitsHarnessExecution: !conflict,
121
+ writesBodies: false,
122
+ residualSurfaces,
123
+ };
124
+ }
125
+ /**
126
+ * Whether a profile may serve one tool.
127
+ *
128
+ * @param profile - the active profile.
129
+ * @param policy - the deployment's retention facts.
130
+ * @param harnessBacked - whether the tool calls a model.
131
+ * @returns the decision, with the reason when it refuses.
132
+ */
133
+ export function admitsTool(profile, policy, harnessBacked) {
134
+ const described = profilePolicy(profile, policy);
135
+ /**
136
+ * A NON-harness tool is admitted under every profile: it calls no model, so there is no body
137
+ * for the reconstructability contract to be about, and refusing it would remove working
138
+ * functionality for no privacy gain.
139
+ */
140
+ if (!harnessBacked)
141
+ return { admitted: true };
142
+ if (described.permitsHarnessExecution)
143
+ return { admitted: true };
144
+ return {
145
+ admitted: false,
146
+ reason: 'the metadata-only profile refuses harness-backed execution because the deployment does '
147
+ + 'not retain bodies while DSH requires model-visible inputs to be reconstructable. '
148
+ + 'Logging bodies against the policy and bypassing DSH are both forbidden, so the tool is '
149
+ + 'not served.',
150
+ };
151
+ }
152
+ //# sourceMappingURL=capture-path.js.map
@@ -0,0 +1,166 @@
1
+ /**
2
+ * The settings/diagnostic surface (OBS-04).
3
+ *
4
+ * OBS-04 names, item by item, what an operator must be able to SEE. A surface that answers
5
+ * "is it on?" but not "which client may call what, and exactly why is this not supported here?"
6
+ * leaves an operator guessing, so each item below is reported with the fact that makes it
7
+ * actionable rather than a bare boolean.
8
+ *
9
+ * DESIGN CONSTRAINTS, because a diagnostic surface is unusually easy to get wrong:
10
+ *
11
+ * - **It reports STATE, never credentials.** It names authorized clients and grants; it
12
+ * never echoes a token. A diagnostic surface is the single most likely place for a secret
13
+ * to leak, because its whole purpose is to be displayed.
14
+ * - **Unsupported is always paired with WHY.** OBS-04 asks for "exact unsupported-platform
15
+ * reasons", and a bare `supported: false` sends an operator to the source to find out.
16
+ * - **Unknown is its own state.** A fact that cannot be determined is reported as unknown
17
+ * rather than defaulted to false, because "not supported" and "not checked" call for
18
+ * different actions.
19
+ *
20
+ * @module @try-works/dsh-model-as-tool/diagnostics
21
+ */
22
+ /** One capability this deployment either has, lacks, or has not determined. */
23
+ export interface CapabilityReport {
24
+ /** The capability, in the vocabulary OBS-04 uses. */
25
+ readonly capability: string;
26
+ /** Whether it is available HERE. */
27
+ readonly state: 'available' | 'unavailable' | 'unknown';
28
+ /**
29
+ * Why, whenever the state is not `available`.
30
+ *
31
+ * Never omitted for `unavailable`: an operator cannot act on a fact they cannot explain,
32
+ * and OBS-04 asks for the EXACT reason.
33
+ */
34
+ readonly reason?: string;
35
+ }
36
+ /** Inputs the surface reports on. */
37
+ export interface DiagnosticInputs {
38
+ /** Whether the MCP surface is mounted. */
39
+ readonly mcpMounted: boolean;
40
+ /** Where it listens, when it does. */
41
+ readonly mcpEndpoint?: string;
42
+ /** Whether the endpoint requires a credential. */
43
+ readonly mcpRequiresCredential?: boolean;
44
+ /** Client identities currently authorized, if the deployment tracks them. */
45
+ readonly authorizedClients?: readonly string[];
46
+ /** Tool names exported to clients. */
47
+ readonly exportedTools: readonly string[];
48
+ /** Tools registered on the host but deliberately NOT exported. */
49
+ readonly withheldTools?: readonly string[];
50
+ /** Per-model preparation state. */
51
+ readonly preparation?: readonly {
52
+ readonly modelId: string;
53
+ readonly prepared: boolean;
54
+ readonly reason?: string;
55
+ }[];
56
+ /** The implementation each contract currently resolves to. */
57
+ readonly selectedImplementations?: readonly {
58
+ readonly contractId: string;
59
+ readonly implementationId: string;
60
+ }[];
61
+ /** Installed extensions and whether they are active. */
62
+ readonly extensions?: readonly {
63
+ readonly extensionId: string;
64
+ readonly version: string;
65
+ readonly activation: string;
66
+ }[];
67
+ /** Whether the deployment can remove an extension, and whether it protects built-ins. */
68
+ readonly uninstall?: {
69
+ readonly available: boolean;
70
+ readonly builtInsProtected: boolean;
71
+ readonly reason?: string;
72
+ };
73
+ /** Location and network requirements. */
74
+ readonly requirements?: {
75
+ readonly localOnly: boolean;
76
+ readonly networkOrigins: readonly string[];
77
+ };
78
+ /** Code Mode permission and backend readiness. */
79
+ readonly codeMode?: {
80
+ readonly permitted: boolean;
81
+ readonly backendReady: boolean;
82
+ readonly reason?: string;
83
+ };
84
+ /** Platform facts, so an unsupported reason can name the platform it refers to. */
85
+ readonly platform: {
86
+ readonly os: string;
87
+ readonly arch: string;
88
+ readonly nodeVersion: string;
89
+ };
90
+ }
91
+ /** The reported surface. */
92
+ export interface DiagnosticReport {
93
+ readonly platform: DiagnosticInputs['platform'];
94
+ readonly mcp: {
95
+ readonly mounted: boolean;
96
+ readonly endpoint: string | null;
97
+ readonly requiresCredential: boolean | null;
98
+ readonly authorizedClients: readonly string[];
99
+ readonly exportedTools: readonly string[];
100
+ readonly withheldTools: readonly string[];
101
+ };
102
+ readonly preparation: readonly {
103
+ readonly modelId: string;
104
+ readonly prepared: boolean;
105
+ readonly reason: string | null;
106
+ }[];
107
+ readonly implementations: readonly {
108
+ readonly contractId: string;
109
+ readonly implementationId: string;
110
+ }[];
111
+ readonly extensions: readonly {
112
+ readonly extensionId: string;
113
+ readonly version: string;
114
+ readonly activation: string;
115
+ }[];
116
+ readonly capabilities: readonly CapabilityReport[];
117
+ readonly uninstall: DiagnosticInputs['uninstall'] | null;
118
+ readonly requirements: DiagnosticInputs['requirements'] | null;
119
+ readonly codeMode: DiagnosticInputs['codeMode'] | null;
120
+ }
121
+ /**
122
+ * Build the diagnostic report.
123
+ *
124
+ * @param inputs - the observed state.
125
+ * @returns everything OBS-04 names, with a reason wherever something is not available.
126
+ */
127
+ export declare function buildDiagnostics(inputs: DiagnosticInputs): DiagnosticReport;
128
+ /**
129
+ * The exact reason something is unsupported on THIS platform.
130
+ *
131
+ * Exists as a function because OBS-04 asks for the reason to be EXACT, and an exact reason has
132
+ * to name the platform it is about — "unsupported" against an unnamed platform sends an
133
+ * operator to compare their machine against a document.
134
+ *
135
+ * @param subject - what is unsupported.
136
+ * @param supportedOn - the platforms it does work on.
137
+ * @param platform - the platform being reported.
138
+ * @returns a reason naming both sides of the mismatch.
139
+ */
140
+ export declare function unsupportedReason(subject: string, supportedOn: readonly {
141
+ readonly os: string;
142
+ readonly arch: string;
143
+ }[], platform: {
144
+ readonly os: string;
145
+ readonly arch: string;
146
+ }): string;
147
+ /**
148
+ * Whether the deployment may retain request and response BODIES (OBS-03).
149
+ *
150
+ * OBS-03's operative sentence is a refusal, not a preference: where an operator's no-retention
151
+ * policy cannot be honoured together with DSH's requirement that model-visible inputs be
152
+ * reconstructable, harness-backed execution must be REFUSED rather than bodies silently
153
+ * logged or DSH bypassed. This returns the decision so the caller cannot soften it into a
154
+ * warning.
155
+ *
156
+ * @param policy - the deployment's retention policy.
157
+ * @returns whether harness-backed execution is permitted.
158
+ */
159
+ export declare function harnessExecutionDecision(policy: {
160
+ readonly retainsBodies: boolean;
161
+ readonly requiresReconstructableInputs: boolean;
162
+ }): {
163
+ readonly permitted: boolean;
164
+ readonly reason?: string;
165
+ };
166
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}