@try-works/dsh-model-as-tool 0.1.2 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dsh-tool-mode-credentials.mjs +20 -0
- package/bin/dsh-tool-mode.mjs +202 -0
- package/catalog/desert-ant-models.json +693 -693
- package/client/client.model-tools.js +592 -0
- package/client/index.js +1679 -0
- package/lib/adapters/index.d.ts.map +1 -1
- package/lib/adapters/index.js +4 -4
- package/lib/bindings.d.ts.map +1 -1
- package/lib/bindings.js +26 -25
- package/lib/capability.d.ts.map +1 -1
- package/lib/capability.js +17 -0
- package/lib/capture-path.d.ts +97 -0
- package/lib/capture-path.d.ts.map +1 -0
- package/lib/capture-path.js +152 -0
- package/lib/diagnostics.d.ts +166 -0
- package/lib/diagnostics.d.ts.map +1 -0
- package/lib/diagnostics.js +135 -0
- package/lib/extension-dependencies.d.ts +197 -0
- package/lib/extension-dependencies.d.ts.map +1 -0
- package/lib/extension-dependencies.js +369 -0
- package/lib/extension-dispatch.d.ts +117 -0
- package/lib/extension-dispatch.d.ts.map +1 -0
- package/lib/extension-dispatch.js +124 -0
- package/lib/extension-registrar.d.ts +100 -0
- package/lib/extension-registrar.d.ts.map +1 -0
- package/lib/extension-registrar.js +134 -0
- package/lib/extensions-api.d.ts +217 -0
- package/lib/extensions-api.d.ts.map +1 -0
- package/lib/extensions-api.js +17 -0
- package/lib/extensions-remote.d.ts +54 -0
- package/lib/extensions-remote.d.ts.map +1 -0
- package/lib/extensions-remote.js +66 -0
- package/lib/extensions-service.d.ts +334 -0
- package/lib/extensions-service.d.ts.map +1 -0
- package/lib/extensions-service.js +1351 -0
- package/lib/harness-llm.d.ts +138 -0
- package/lib/harness-llm.d.ts.map +1 -0
- package/lib/harness-llm.js +218 -0
- package/lib/harness-serving.d.ts +95 -0
- package/lib/harness-serving.d.ts.map +1 -0
- package/lib/harness-serving.js +157 -0
- package/lib/headless.d.ts +97 -0
- package/lib/headless.d.ts.map +1 -0
- package/lib/headless.js +349 -0
- package/lib/http-acquisition.d.ts +27 -0
- package/lib/http-acquisition.d.ts.map +1 -0
- package/lib/http-acquisition.js +136 -0
- package/lib/index.d.ts +250 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2625 -70
- package/lib/invocation-accounting.d.ts +169 -0
- package/lib/invocation-accounting.d.ts.map +1 -0
- package/lib/invocation-accounting.js +148 -0
- package/lib/legacy-migration.d.ts +95 -0
- package/lib/legacy-migration.d.ts.map +1 -0
- package/lib/legacy-migration.js +429 -0
- package/lib/managed-workers.d.ts +151 -0
- package/lib/managed-workers.d.ts.map +1 -0
- package/lib/managed-workers.js +249 -0
- package/lib/mcp/client-grant.d.ts +74 -0
- package/lib/mcp/client-grant.d.ts.map +1 -0
- package/lib/mcp/client-grant.js +60 -0
- package/lib/mcp/credential-cli.d.ts +38 -0
- package/lib/mcp/credential-cli.d.ts.map +1 -0
- package/lib/mcp/credential-cli.js +148 -0
- package/lib/mcp/credential-store.d.ts +143 -0
- package/lib/mcp/credential-store.d.ts.map +1 -0
- package/lib/mcp/credential-store.js +454 -0
- package/lib/mcp/host-binding.d.ts +25 -0
- package/lib/mcp/host-binding.d.ts.map +1 -1
- package/lib/mcp/host-binding.js +107 -14
- package/lib/mcp/http.d.ts +68 -18
- package/lib/mcp/http.d.ts.map +1 -1
- package/lib/mcp/http.js +390 -62
- package/lib/mcp/oauth.d.ts +149 -0
- package/lib/mcp/oauth.d.ts.map +1 -0
- package/lib/mcp/oauth.js +396 -0
- package/lib/mcp/protocol.d.ts +46 -7
- package/lib/mcp/protocol.d.ts.map +1 -1
- package/lib/mcp/protocol.js +63 -16
- package/lib/mcp/rate-limit.d.ts +68 -0
- package/lib/mcp/rate-limit.d.ts.map +1 -0
- package/lib/mcp/rate-limit.js +114 -0
- package/lib/mcp/sdk-v2.d.ts +17 -0
- package/lib/mcp/sdk-v2.d.ts.map +1 -0
- package/lib/mcp/sdk-v2.js +181 -0
- package/lib/mcp/server.d.ts +11 -1
- package/lib/mcp/server.d.ts.map +1 -1
- package/lib/mcp/server.js +80 -13
- package/lib/mcp/stdio.d.ts.map +1 -1
- package/lib/mcp/stdio.js +9 -1
- package/lib/mcp/subscriptions.d.ts +43 -1
- package/lib/mcp/subscriptions.d.ts.map +1 -1
- package/lib/mcp/subscriptions.js +90 -9
- package/lib/model-qualification.d.ts +192 -0
- package/lib/model-qualification.d.ts.map +1 -0
- package/lib/model-qualification.js +178 -0
- package/lib/planning.d.ts +246 -0
- package/lib/planning.d.ts.map +1 -0
- package/lib/planning.js +457 -0
- package/lib/prepared-assets.d.ts +178 -0
- package/lib/prepared-assets.d.ts.map +1 -0
- package/lib/prepared-assets.js +286 -0
- package/lib/provider-bridge.d.ts +37 -0
- package/lib/provider-bridge.d.ts.map +1 -1
- package/lib/provider-bridge.js +189 -12
- package/lib/ptc-authority.d.ts +140 -0
- package/lib/ptc-authority.d.ts.map +1 -0
- package/lib/ptc-authority.js +216 -0
- package/lib/ptc-runtime.d.ts +156 -0
- package/lib/ptc-runtime.d.ts.map +1 -0
- package/lib/ptc-runtime.js +191 -0
- package/lib/publication.d.ts +2 -1
- package/lib/publication.d.ts.map +1 -1
- package/lib/publication.js +13 -5
- package/lib/receipt.d.ts.map +1 -1
- package/lib/receipt.js +8 -0
- package/lib/title-proposal.d.ts +194 -0
- package/lib/title-proposal.d.ts.map +1 -0
- package/lib/title-proposal.js +244 -0
- package/lib/tool-mode-run.d.ts +235 -0
- package/lib/tool-mode-run.d.ts.map +1 -0
- package/lib/tool-mode-run.js +283 -0
- package/lib/types.d.ts +3 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/update-surface.d.ts +79 -0
- package/lib/update-surface.d.ts.map +1 -0
- package/lib/update-surface.js +224 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/lang-detect.d.ts +16 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/lang-detect.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/lang-detect.js +85 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.d.ts +38 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/standard.js +445 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/stt-transcribe.d.ts +20 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/stt-transcribe.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/stt-transcribe.js +112 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.d.ts +14 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-embed.js +63 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.d.ts +14 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contracts/text-rerank.js +76 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/dsh.d.ts +82 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/dsh.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/dsh.js +274 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/index.d.ts +26 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/index.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/index.js +48 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/meta.d.ts +104 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/meta.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/meta.js +55 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/registry.d.ts +107 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/registry.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/registry.js +246 -0
- package/node_modules/@try-works/tool-mode-contracts/package.json +34 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/bin/dsh-tool-mode.mjs +20 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.d.ts +80 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/cli.js +533 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.d.ts +83 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/declarative-recipes.js +125 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.d.ts +70 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/discovery.js +201 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.d.ts +57 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/errors.js +83 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.d.ts +31 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/index.js +31 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.d.ts +86 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/archive.js +185 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.d.ts +126 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.js +297 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.d.ts +216 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.js +800 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.d.ts +210 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/migration.js +368 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.d.ts +63 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/runtime-link.js +149 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.d.ts +35 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/source-directory.js +179 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.d.ts +179 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/staged.js +235 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.d.ts +367 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.js +807 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.d.ts +185 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/update-flow.js +504 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.d.ts +17 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/zip-source.js +80 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.d.ts +52 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/load.js +102 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.d.ts +171 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/manifest.js +271 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.d.ts +242 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/runtime.js +58 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.d.ts +118 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/state.js +113 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.d.ts +2 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker/worker-child.js +351 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.d.ts +150 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/worker.js +670 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/package.json +53 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/schema/extension-manifest-1.1.0.schema.json +253 -0
- package/node_modules/@try-works/tool-mode-recipes/bin/tool-mode-recipe.mjs +15 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/broker.d.ts +427 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/broker.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/broker.js +592 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/cli.d.ts +60 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/cli.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/cli.js +936 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.d.ts +237 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/dsh-adapter.js +200 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.d.ts +85 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/fixture-provider.js +176 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/images.d.ts +105 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/images.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/images.js +129 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/index.d.ts +25 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/index.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/index.js +25 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.d.ts +325 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/recipe-format.js +1310 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/templates.d.ts +51 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/templates.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/templates.js +310 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/titles.d.ts +227 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/titles.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/titles.js +407 -0
- package/node_modules/@try-works/tool-mode-recipes/package.json +56 -0
- package/node_modules/@try-works/tool-mode-recipes/recipes/describe-image.json +38 -0
- package/node_modules/@try-works/tool-mode-recipes/recipes/text-title.json +45 -0
- package/node_modules/@try-works/tool-mode-recipes/schema/harness-model-recipe.schema.json +273 -0
- package/package.json +50 -17
- package/remote/spec.mjs +439 -0
- package/remote/typert.host.mjs +14 -0
- package/remote/typert.remote-client.mjs +16 -0
- package/lib/adapters/tongue.d.ts +0 -31
- package/lib/adapters/tongue.d.ts.map +0 -1
- package/lib/adapters/tongue.js +0 -93
- package/lib/adapters/voz.d.ts +0 -28
- package/lib/adapters/voz.d.ts.map +0 -1
- package/lib/adapters/voz.js +0 -102
- /package/{lib → node_modules/@try-works/tool-mode-extension-sdk/lib}/licensing.d.ts +0 -0
- /package/{lib → node_modules/@try-works/tool-mode-extension-sdk/lib}/licensing.d.ts.map +0 -0
- /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,
|
|
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"}
|
package/lib/adapters/index.js
CHANGED
|
@@ -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,
|
|
63
|
-
|
|
64
|
-
|
|
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)
|
package/lib/bindings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,
|
|
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
|
-
*
|
|
128
|
+
* The PROJECTED output schema, closing the DECL-02 advertisement gap.
|
|
128
129
|
*
|
|
129
|
-
* The
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
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
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
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: {
|
|
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) {
|
package/lib/capability.d.ts.map
CHANGED
|
@@ -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,
|
|
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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"}
|