@try-works/dsh-tool-mode 0.0.0-stage → 0.5.44
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/README.md +299 -2
- package/bin/dsh-tool-mode-credentials.mjs +20 -0
- package/bin/dsh-tool-mode-mcp-stdio.mjs +80 -0
- package/bin/dsh-tool-mode.mjs +211 -0
- package/builtins.lock.json +26 -0
- package/catalog/desert-ant-models.json +693 -0
- package/catalog/playbooks.json +531 -0
- package/client/client.model-tools.js +1910 -0
- package/client/index.js +4039 -0
- package/cordis.patch.yml +39 -0
- package/lib/adapters/index.d.ts +61 -0
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/adapters/index.js +82 -0
- package/lib/adapters/types.d.ts +106 -0
- package/lib/adapters/types.d.ts.map +1 -0
- package/lib/adapters/types.js +85 -0
- package/lib/approval.d.ts +189 -0
- package/lib/approval.d.ts.map +1 -0
- package/lib/approval.js +510 -0
- package/lib/asset-acquisition.d.ts +149 -0
- package/lib/asset-acquisition.d.ts.map +1 -0
- package/lib/asset-acquisition.js +175 -0
- package/lib/authority.d.ts +185 -0
- package/lib/authority.d.ts.map +1 -0
- package/lib/authority.js +223 -0
- package/lib/bindings.d.ts +144 -0
- package/lib/bindings.d.ts.map +1 -0
- package/lib/bindings.js +314 -0
- package/lib/builtins.d.ts +27 -0
- package/lib/builtins.d.ts.map +1 -0
- package/lib/builtins.js +37 -0
- package/lib/capability.d.ts +58 -0
- package/lib/capability.d.ts.map +1 -0
- package/lib/capability.js +192 -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/catalog.d.ts +37 -0
- package/lib/catalog.d.ts.map +1 -0
- package/lib/catalog.js +274 -0
- package/lib/contract-payload.d.ts +39 -0
- package/lib/contract-payload.d.ts.map +1 -0
- package/lib/contract-payload.js +56 -0
- package/lib/custom-tools/compile.d.ts +25 -0
- package/lib/custom-tools/compile.d.ts.map +1 -0
- package/lib/custom-tools/compile.js +61 -0
- package/lib/custom-tools/composite-executor.d.ts +42 -0
- package/lib/custom-tools/composite-executor.d.ts.map +1 -0
- package/lib/custom-tools/composite-executor.js +113 -0
- package/lib/custom-tools/dispatch.d.ts +28 -0
- package/lib/custom-tools/dispatch.d.ts.map +1 -0
- package/lib/custom-tools/dispatch.js +34 -0
- package/lib/custom-tools/http-executor.d.ts +48 -0
- package/lib/custom-tools/http-executor.d.ts.map +1 -0
- package/lib/custom-tools/http-executor.js +241 -0
- package/lib/custom-tools/index.d.ts +12 -0
- package/lib/custom-tools/index.d.ts.map +1 -0
- package/lib/custom-tools/index.js +12 -0
- package/lib/custom-tools/mcp-surface.d.ts +14 -0
- package/lib/custom-tools/mcp-surface.d.ts.map +1 -0
- package/lib/custom-tools/mcp-surface.js +41 -0
- package/lib/custom-tools/prompt-executor.d.ts +39 -0
- package/lib/custom-tools/prompt-executor.d.ts.map +1 -0
- package/lib/custom-tools/prompt-executor.js +59 -0
- package/lib/custom-tools/registry.d.ts +69 -0
- package/lib/custom-tools/registry.d.ts.map +1 -0
- package/lib/custom-tools/registry.js +130 -0
- package/lib/custom-tools/schema.d.ts +26 -0
- package/lib/custom-tools/schema.d.ts.map +1 -0
- package/lib/custom-tools/schema.js +375 -0
- package/lib/custom-tools/service.d.ts +90 -0
- package/lib/custom-tools/service.d.ts.map +1 -0
- package/lib/custom-tools/service.js +203 -0
- package/lib/custom-tools/store.d.ts +61 -0
- package/lib/custom-tools/store.d.ts.map +1 -0
- package/lib/custom-tools/store.js +240 -0
- package/lib/custom-tools/types.d.ts +131 -0
- package/lib/custom-tools/types.d.ts.map +1 -0
- package/lib/custom-tools/types.js +11 -0
- package/lib/decision-combine.d.ts +113 -0
- package/lib/decision-combine.d.ts.map +1 -0
- package/lib/decision-combine.js +156 -0
- package/lib/decision-evaluate.d.ts +185 -0
- package/lib/decision-evaluate.d.ts.map +1 -0
- package/lib/decision-evaluate.js +227 -0
- package/lib/deployment-coordinator.d.ts +213 -0
- package/lib/deployment-coordinator.d.ts.map +1 -0
- package/lib/deployment-coordinator.js +274 -0
- package/lib/diagnostics.d.ts +169 -0
- package/lib/diagnostics.d.ts.map +1 -0
- package/lib/diagnostics.js +136 -0
- package/lib/discovery-contracts.d.ts +14 -0
- package/lib/discovery-contracts.d.ts.map +1 -0
- package/lib/discovery-contracts.js +90 -0
- package/lib/discovery-describe.d.ts +35 -0
- package/lib/discovery-describe.d.ts.map +1 -0
- package/lib/discovery-describe.js +99 -0
- package/lib/embedding-index.d.ts +55 -0
- package/lib/embedding-index.d.ts.map +1 -0
- package/lib/embedding-index.js +126 -0
- package/lib/extension-dependencies.d.ts +355 -0
- package/lib/extension-dependencies.d.ts.map +1 -0
- package/lib/extension-dependencies.js +987 -0
- package/lib/extension-dispatch.d.ts +150 -0
- package/lib/extension-dispatch.d.ts.map +1 -0
- package/lib/extension-dispatch.js +178 -0
- package/lib/extension-page-state.d.ts +69 -0
- package/lib/extension-page-state.d.ts.map +1 -0
- package/lib/extension-page-state.js +82 -0
- package/lib/extension-registrar.d.ts +116 -0
- package/lib/extension-registrar.d.ts.map +1 -0
- package/lib/extension-registrar.js +144 -0
- package/lib/extensions-api.d.ts +346 -0
- package/lib/extensions-api.d.ts.map +1 -0
- package/lib/extensions-api.js +17 -0
- package/lib/extensions-remote.d.ts +57 -0
- package/lib/extensions-remote.d.ts.map +1 -0
- package/lib/extensions-remote.js +69 -0
- package/lib/extensions-service.d.ts +568 -0
- package/lib/extensions-service.d.ts.map +1 -0
- package/lib/extensions-service.js +2507 -0
- package/lib/harness-budgets.d.ts +158 -0
- package/lib/harness-budgets.d.ts.map +1 -0
- package/lib/harness-budgets.js +152 -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 +115 -0
- package/lib/harness-serving.d.ts.map +1 -0
- package/lib/harness-serving.js +176 -0
- package/lib/headless.d.ts +97 -0
- package/lib/headless.d.ts.map +1 -0
- package/lib/headless.js +407 -0
- package/lib/http-acquisition.d.ts +27 -0
- package/lib/http-acquisition.d.ts.map +1 -0
- package/lib/http-acquisition.js +140 -0
- package/lib/index.d.ts +546 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5197 -0
- 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/jev.d.ts +218 -0
- package/lib/jev.d.ts.map +1 -0
- package/lib/jev.js +366 -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/license-basis.d.ts +29 -0
- package/lib/license-basis.d.ts.map +1 -0
- package/lib/license-basis.js +58 -0
- package/lib/managed-workers.d.ts +158 -0
- package/lib/managed-workers.d.ts.map +1 -0
- package/lib/managed-workers.js +269 -0
- package/lib/mcp/auth-selection.d.ts +35 -0
- package/lib/mcp/auth-selection.d.ts.map +1 -0
- package/lib/mcp/auth-selection.js +64 -0
- package/lib/mcp/client-grant.d.ts +89 -0
- package/lib/mcp/client-grant.d.ts.map +1 -0
- package/lib/mcp/client-grant.js +63 -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 +461 -0
- package/lib/mcp/export-policy.d.ts +25 -0
- package/lib/mcp/export-policy.d.ts.map +1 -0
- package/lib/mcp/export-policy.js +31 -0
- package/lib/mcp/host-binding.d.ts +144 -0
- package/lib/mcp/host-binding.d.ts.map +1 -0
- package/lib/mcp/host-binding.js +280 -0
- package/lib/mcp/http.d.ts +180 -0
- package/lib/mcp/http.d.ts.map +1 -0
- package/lib/mcp/http.js +602 -0
- 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 +329 -0
- package/lib/mcp/protocol.d.ts.map +1 -0
- package/lib/mcp/protocol.js +459 -0
- 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 +204 -0
- package/lib/mcp/server.d.ts +149 -0
- package/lib/mcp/server.d.ts.map +1 -0
- package/lib/mcp/server.js +302 -0
- package/lib/mcp/stdio.d.ts +80 -0
- package/lib/mcp/stdio.d.ts.map +1 -0
- package/lib/mcp/stdio.js +184 -0
- package/lib/mcp/subscriptions.d.ts +177 -0
- package/lib/mcp/subscriptions.d.ts.map +1 -0
- package/lib/mcp/subscriptions.js +288 -0
- package/lib/mcp-status.d.ts +96 -0
- package/lib/mcp-status.d.ts.map +1 -0
- package/lib/mcp-status.js +70 -0
- package/lib/mcp-usage.d.ts +110 -0
- package/lib/mcp-usage.d.ts.map +1 -0
- package/lib/mcp-usage.js +189 -0
- 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 +256 -0
- package/lib/planning.d.ts.map +1 -0
- package/lib/planning.js +471 -0
- package/lib/playbook.d.ts +42 -0
- package/lib/playbook.d.ts.map +1 -0
- package/lib/playbook.js +65 -0
- package/lib/prepared-assets.d.ts +269 -0
- package/lib/prepared-assets.d.ts.map +1 -0
- package/lib/prepared-assets.js +471 -0
- package/lib/provider-bridge.d.ts +107 -0
- package/lib/provider-bridge.d.ts.map +1 -0
- package/lib/provider-bridge.js +423 -0
- package/lib/ptc-authority.d.ts +154 -0
- package/lib/ptc-authority.d.ts.map +1 -0
- package/lib/ptc-authority.js +242 -0
- package/lib/ptc-confinement.d.ts +60 -0
- package/lib/ptc-confinement.d.ts.map +1 -0
- package/lib/ptc-confinement.js +212 -0
- package/lib/ptc-runtime.d.ts +166 -0
- package/lib/ptc-runtime.d.ts.map +1 -0
- package/lib/ptc-runtime.js +231 -0
- package/lib/publication.d.ts +161 -0
- package/lib/publication.d.ts.map +1 -0
- package/lib/publication.js +181 -0
- package/lib/receipt-store.d.ts +57 -0
- package/lib/receipt-store.d.ts.map +1 -0
- package/lib/receipt-store.js +143 -0
- package/lib/receipt.d.ts +231 -0
- package/lib/receipt.d.ts.map +1 -0
- package/lib/receipt.js +165 -0
- package/lib/registrar.d.ts +75 -0
- package/lib/registrar.d.ts.map +1 -0
- package/lib/registrar.js +152 -0
- package/lib/resource-governance.d.ts +204 -0
- package/lib/resource-governance.d.ts.map +1 -0
- package/lib/resource-governance.js +213 -0
- package/lib/server-lifecycle.d.ts +175 -0
- package/lib/server-lifecycle.d.ts.map +1 -0
- package/lib/server-lifecycle.js +269 -0
- package/lib/skills.d.ts +31 -0
- package/lib/skills.d.ts.map +1 -0
- package/lib/skills.js +170 -0
- package/lib/speech-bridge.d.ts +74 -0
- package/lib/speech-bridge.d.ts.map +1 -0
- package/lib/speech-bridge.js +115 -0
- package/lib/state.d.ts +100 -0
- package/lib/state.d.ts.map +1 -0
- package/lib/state.js +160 -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-inventory.d.ts +90 -0
- package/lib/tool-inventory.d.ts.map +1 -0
- package/lib/tool-inventory.js +102 -0
- package/lib/tool-mode-run.d.ts +310 -0
- package/lib/tool-mode-run.d.ts.map +1 -0
- package/lib/tool-mode-run.js +411 -0
- package/lib/tool-sources.d.ts +80 -0
- package/lib/tool-sources.d.ts.map +1 -0
- package/lib/tool-sources.js +123 -0
- package/lib/tool-usage-projection.d.ts +390 -0
- package/lib/tool-usage-projection.d.ts.map +1 -0
- package/lib/tool-usage-projection.js +1038 -0
- package/lib/tool-usage-report.d.ts +153 -0
- package/lib/tool-usage-report.d.ts.map +1 -0
- package/lib/tool-usage-report.js +274 -0
- package/lib/transport.d.ts +158 -0
- package/lib/transport.d.ts.map +1 -0
- package/lib/transport.js +332 -0
- package/lib/types.d.ts +134 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +8 -0
- 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/lib/version.d.ts +3 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +27 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contract-metadata.d.ts +13 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contract-metadata.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/contract-metadata.js +85 -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 +87 -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 +53 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/meta.d.ts +133 -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 +64 -0
- package/node_modules/@try-works/tool-mode-contracts/lib/registry.d.ts +121 -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 +35 -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 +86 -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 +145 -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 +33 -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 +33 -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 +191 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/dependencies.d.ts +137 -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 +349 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/lifecycle.d.ts +274 -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 +932 -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 +299 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/store.d.ts +395 -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 +839 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.d.ts +44 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/install/tar-gzip-source.js +255 -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/licensing.d.ts +221 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/licensing.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/licensing.js +188 -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 +128 -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/test-host.d.ts +41 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/test-host.d.ts.map +1 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/lib/test-host.js +52 -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 +157 -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 +688 -0
- package/node_modules/@try-works/tool-mode-extension-sdk/package.json +54 -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 +460 -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 +647 -0
- package/node_modules/@try-works/tool-mode-recipes/lib/cli.d.ts +61 -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 +1106 -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 +205 -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 +119 -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 +201 -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 +345 -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 +1465 -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 +231 -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 +435 -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 +127 -4
- package/remote/spec.mjs +993 -0
- package/remote/typert.host.mjs +14 -0
- package/remote/typert.remote-client.mjs +16 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Licensing, attribution and permission records (LIC-01..LIC-04).
|
|
3
|
+
*
|
|
4
|
+
* Two rules here exist to stop a technical decision standing in for a legal one.
|
|
5
|
+
*
|
|
6
|
+
* - **A config boolean is not a licence grant** (LIC-03). A person records the
|
|
7
|
+
* permission basis, the scope it covers, and their name. Turning on a setting
|
|
8
|
+
* cannot produce that record, so the type has no way to express "someone ticked a
|
|
9
|
+
* box".
|
|
10
|
+
* - **Do not describe telemetry-bearing software as network-free** (LIC-04). An
|
|
11
|
+
* implementation that must report usage telemetry is INELIGIBLE for a strict
|
|
12
|
+
* no-network deployment, and the ineligibility is reported rather than resolved by
|
|
13
|
+
* quietly suppressing the telemetry — which would breach the licence and misdescribe
|
|
14
|
+
* the product at the same time.
|
|
15
|
+
*
|
|
16
|
+
* LIC-01's other half is that the layers are tracked INDEPENDENTLY: an adapter's MIT
|
|
17
|
+
* licence says nothing about the weights it loads, and a missing layer is a gap rather
|
|
18
|
+
* than a default.
|
|
19
|
+
*
|
|
20
|
+
* @module @try-works/dsh-tool-mode/licensing
|
|
21
|
+
*/
|
|
22
|
+
/** The layers whose licences are tracked separately (LIC-01). */
|
|
23
|
+
export type LicenseLayer =
|
|
24
|
+
/** The extension's own source. */
|
|
25
|
+
'code'
|
|
26
|
+
/** The inference engine or runtime. */
|
|
27
|
+
| 'engine'
|
|
28
|
+
/** The model weights. */
|
|
29
|
+
| 'weights'
|
|
30
|
+
/** Scripts or tools that converted the weights. */
|
|
31
|
+
| 'conversion-artifacts'
|
|
32
|
+
/** A vendor SDK the extension depends on. */
|
|
33
|
+
| 'sdk';
|
|
34
|
+
/** Every layer, so a missing one is detectable rather than absent. */
|
|
35
|
+
export declare const LICENSE_LAYERS: readonly LicenseLayer[];
|
|
36
|
+
/**
|
|
37
|
+
* Whether redistribution of a layer is permitted.
|
|
38
|
+
*
|
|
39
|
+
* `unclear` is a first-class value, because treating an unexamined licence as
|
|
40
|
+
* permitted is how a package ships bytes it had no right to.
|
|
41
|
+
*/
|
|
42
|
+
export type Redistribution = 'permitted' | 'not-permitted' | 'unclear';
|
|
43
|
+
/** One layer's licence. */
|
|
44
|
+
export interface LayerLicense {
|
|
45
|
+
readonly layer: LicenseLayer;
|
|
46
|
+
/** The licence name, e.g. `MIT` or `LicenseRef-DAL-Source-Available-1.0`. */
|
|
47
|
+
readonly name: string;
|
|
48
|
+
/** Where the terms live, so a reviewer can read them rather than trust a label. */
|
|
49
|
+
readonly url: string;
|
|
50
|
+
/** Whether the licence requires attribution in the product or its notices. */
|
|
51
|
+
readonly attributionRequired: boolean;
|
|
52
|
+
/** The exact notice text, when attribution is required. */
|
|
53
|
+
readonly attributionText?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Whether the licence is OSI-approved open source.
|
|
56
|
+
*
|
|
57
|
+
* LIC-02 is explicit that Desert Ant's licence is source-available and NOT open
|
|
58
|
+
* source, so this is recorded per layer rather than inferred from the presence of a
|
|
59
|
+
* licence file.
|
|
60
|
+
*/
|
|
61
|
+
readonly openSource: boolean;
|
|
62
|
+
/** Whether these bytes may be redistributed inside a package. */
|
|
63
|
+
readonly redistribution: Redistribution;
|
|
64
|
+
/** Obligations a deployer must meet, stated rather than implied. */
|
|
65
|
+
readonly obligations: readonly string[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The Desert Ant Labs licence, as recorded from the vendor's own terms (LIC-02).
|
|
69
|
+
*
|
|
70
|
+
* Named as a constant because getting it wrong in one place is how a wrong belief
|
|
71
|
+
* spreads: this is source-available, NOT open source, and it forbids redistributing
|
|
72
|
+
* the models or SDKs as a standalone product.
|
|
73
|
+
*/
|
|
74
|
+
export declare function desertAntLabsLicense(layer: LicenseLayer): LayerLicense;
|
|
75
|
+
/** A resolved licence record for one extension (LIC-01). */
|
|
76
|
+
export interface ResolvedLicenseRecord {
|
|
77
|
+
readonly extensionId: string;
|
|
78
|
+
/** One entry per layer. A missing layer is a GAP, not a default. */
|
|
79
|
+
readonly layers: readonly LayerLicense[];
|
|
80
|
+
/** Where the notices must appear, kept with the record rather than looked up. */
|
|
81
|
+
readonly notices: readonly string[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Build a licence record, reporting missing layers (LIC-01).
|
|
85
|
+
*
|
|
86
|
+
* @param extensionId - the extension.
|
|
87
|
+
* @param layers - the declared licences.
|
|
88
|
+
* @returns the record and the layers that were not declared.
|
|
89
|
+
*/
|
|
90
|
+
export declare function resolveLicenses(extensionId: string, layers: readonly LayerLicense[]): {
|
|
91
|
+
readonly record: ResolvedLicenseRecord;
|
|
92
|
+
readonly gaps: readonly LicenseLayer[];
|
|
93
|
+
};
|
|
94
|
+
/** The uses a permission basis can cover (LIC-03). */
|
|
95
|
+
export type PermissionScope = 'native' | 'external-export' | 'distribution' | 'telemetry';
|
|
96
|
+
/**
|
|
97
|
+
* How a permission was established (LIC-03).
|
|
98
|
+
*
|
|
99
|
+
* There is deliberately no `config-boolean` member: the requirement says a config
|
|
100
|
+
* boolean is not a licence grant, and a type that cannot express one is a stronger
|
|
101
|
+
* guarantee than a comment saying not to use one.
|
|
102
|
+
*/
|
|
103
|
+
export type PermissionBasis =
|
|
104
|
+
/** The vendor answered the question in writing. */
|
|
105
|
+
{
|
|
106
|
+
readonly kind: 'vendor-clarification';
|
|
107
|
+
readonly reference: string;
|
|
108
|
+
}
|
|
109
|
+
/** Qualified review, e.g. counsel, decided the boundary. */
|
|
110
|
+
| {
|
|
111
|
+
readonly kind: 'qualified-review';
|
|
112
|
+
readonly reference: string;
|
|
113
|
+
}
|
|
114
|
+
/** The vendor's own published terms address it directly. */
|
|
115
|
+
| {
|
|
116
|
+
readonly kind: 'published-terms';
|
|
117
|
+
readonly url: string;
|
|
118
|
+
}
|
|
119
|
+
/** A commercial agreement covers it. */
|
|
120
|
+
| {
|
|
121
|
+
readonly kind: 'commercial-agreement';
|
|
122
|
+
readonly reference: string;
|
|
123
|
+
};
|
|
124
|
+
/** A human's record of one permission (LIC-03). */
|
|
125
|
+
export interface PermissionRecord {
|
|
126
|
+
readonly extensionId: string;
|
|
127
|
+
readonly scope: PermissionScope;
|
|
128
|
+
readonly basis: PermissionBasis;
|
|
129
|
+
/**
|
|
130
|
+
* The responsible human.
|
|
131
|
+
*
|
|
132
|
+
* Required: an unattributed permission record cannot be reviewed or revisited, and
|
|
133
|
+
* the requirement says a RESPONSIBLE HUMAN must record it.
|
|
134
|
+
*/
|
|
135
|
+
readonly recordedBy: string;
|
|
136
|
+
readonly recordedAt: string;
|
|
137
|
+
/** What the permission does NOT cover, so its limits travel with it. */
|
|
138
|
+
readonly excludes?: readonly string[];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Reject a permission claim that is not a human record (LIC-03).
|
|
142
|
+
*
|
|
143
|
+
* A boolean, a string or an empty object would all be "someone said yes" without a
|
|
144
|
+
* person or a reference, which is what the requirement forbids.
|
|
145
|
+
* @param value - the purported record.
|
|
146
|
+
* @returns whether it is a usable record.
|
|
147
|
+
*/
|
|
148
|
+
export declare function isUsablePermissionRecord(value: unknown): value is PermissionRecord;
|
|
149
|
+
/**
|
|
150
|
+
* Whether a provider may be exposed over MCP (LIC-03).
|
|
151
|
+
*
|
|
152
|
+
* An unresolved EXTERNAL-EXPORT permission blocks THAT PROVIDER's export and nothing
|
|
153
|
+
* else. Blocking the whole plugin would punish every other provider for one
|
|
154
|
+
* unresolved question, which the requirement explicitly rules out.
|
|
155
|
+
* @param extensionId - the provider.
|
|
156
|
+
* @param permissions - every recorded permission.
|
|
157
|
+
* @returns the decision.
|
|
158
|
+
*/
|
|
159
|
+
export declare function exportDecision(extensionId: string, permissions: readonly PermissionRecord[]): {
|
|
160
|
+
readonly exportable: boolean;
|
|
161
|
+
readonly reason?: string;
|
|
162
|
+
};
|
|
163
|
+
/** An implementation's network behaviour, as DECLARED rather than assumed (LIC-04). */
|
|
164
|
+
export interface NetworkBehaviour {
|
|
165
|
+
readonly extensionId: string;
|
|
166
|
+
/**
|
|
167
|
+
* Whether the software reports usage telemetry the licence REQUIRES.
|
|
168
|
+
*
|
|
169
|
+
* When true, suppressing it to appear network-free would breach the licence, so the
|
|
170
|
+
* implementation is ineligible for a no-network deployment instead.
|
|
171
|
+
*/
|
|
172
|
+
readonly requiredTelemetry: boolean;
|
|
173
|
+
/** Whether it makes any other network call. */
|
|
174
|
+
readonly otherNetworkUse: boolean;
|
|
175
|
+
/** What the telemetry carries, so a description can be accurate. */
|
|
176
|
+
readonly telemetryContent?: readonly string[];
|
|
177
|
+
}
|
|
178
|
+
/** The verdict for a strict no-network deployment (LIC-04). */
|
|
179
|
+
export interface NoNetworkVerdict {
|
|
180
|
+
readonly eligible: boolean;
|
|
181
|
+
/** Why not, when it is not. */
|
|
182
|
+
readonly reason?: string;
|
|
183
|
+
/** What a deployer should choose instead, rather than a bare refusal. */
|
|
184
|
+
readonly alternative?: string;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Decide whether an implementation is eligible for a strict no-network deployment
|
|
188
|
+
* (LIC-04).
|
|
189
|
+
*
|
|
190
|
+
* @param behaviour - the implementation's declared network behaviour.
|
|
191
|
+
* @returns the verdict, with an alternative when it is ineligible.
|
|
192
|
+
*/
|
|
193
|
+
export declare function noNetworkEligibility(behaviour: NetworkBehaviour): NoNetworkVerdict;
|
|
194
|
+
/**
|
|
195
|
+
* How a deployment may DESCRIBE itself (LIC-04).
|
|
196
|
+
*
|
|
197
|
+
* The requirement forbids describing telemetry-bearing software as entirely
|
|
198
|
+
* network-free, so a description is derived from the declared behaviour rather than
|
|
199
|
+
* chosen by the deployer.
|
|
200
|
+
* @param behaviour - the implementation's network behaviour.
|
|
201
|
+
* @returns a description that is true of the implementation.
|
|
202
|
+
*/
|
|
203
|
+
export declare function describeNetwork(behaviour: NetworkBehaviour): string;
|
|
204
|
+
/**
|
|
205
|
+
* Whether packaging a model grants the right to redistribute its weights (LIC-01).
|
|
206
|
+
*
|
|
207
|
+
* It does not. Packaging means an adapter plus licensed assets or ACQUISITION
|
|
208
|
+
* INSTRUCTIONS; technical availability does not imply export or redistribution
|
|
209
|
+
* permission.
|
|
210
|
+
* @param record - the licence record.
|
|
211
|
+
* @returns whether the weights may be shipped inside the package.
|
|
212
|
+
*/
|
|
213
|
+
export declare function mayPackageWeights(record: ResolvedLicenseRecord): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* Whether the notices required by a record are present in a shipped notice file.
|
|
216
|
+
* @param record - the licence record.
|
|
217
|
+
* @param noticeText - the notice file's contents.
|
|
218
|
+
* @returns the notices that are missing.
|
|
219
|
+
*/
|
|
220
|
+
export declare function missingNotices(record: ResolvedLicenseRecord, noticeText: string): readonly string[];
|
|
221
|
+
//# sourceMappingURL=licensing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensing.d.ts","sourceRoot":"","sources":["../src/licensing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Licensing, attribution and permission records (LIC-01..LIC-04).
|
|
3
|
+
*
|
|
4
|
+
* Two rules here exist to stop a technical decision standing in for a legal one.
|
|
5
|
+
*
|
|
6
|
+
* - **A config boolean is not a licence grant** (LIC-03). A person records the
|
|
7
|
+
* permission basis, the scope it covers, and their name. Turning on a setting
|
|
8
|
+
* cannot produce that record, so the type has no way to express "someone ticked a
|
|
9
|
+
* box".
|
|
10
|
+
* - **Do not describe telemetry-bearing software as network-free** (LIC-04). An
|
|
11
|
+
* implementation that must report usage telemetry is INELIGIBLE for a strict
|
|
12
|
+
* no-network deployment, and the ineligibility is reported rather than resolved by
|
|
13
|
+
* quietly suppressing the telemetry — which would breach the licence and misdescribe
|
|
14
|
+
* the product at the same time.
|
|
15
|
+
*
|
|
16
|
+
* LIC-01's other half is that the layers are tracked INDEPENDENTLY: an adapter's MIT
|
|
17
|
+
* licence says nothing about the weights it loads, and a missing layer is a gap rather
|
|
18
|
+
* than a default.
|
|
19
|
+
*
|
|
20
|
+
* @module @try-works/dsh-tool-mode/licensing
|
|
21
|
+
*/
|
|
22
|
+
/** Every layer, so a missing one is detectable rather than absent. */
|
|
23
|
+
export const LICENSE_LAYERS = [
|
|
24
|
+
'code', 'engine', 'weights', 'conversion-artifacts', 'sdk',
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* The Desert Ant Labs licence, as recorded from the vendor's own terms (LIC-02).
|
|
28
|
+
*
|
|
29
|
+
* Named as a constant because getting it wrong in one place is how a wrong belief
|
|
30
|
+
* spreads: this is source-available, NOT open source, and it forbids redistributing
|
|
31
|
+
* the models or SDKs as a standalone product.
|
|
32
|
+
*/
|
|
33
|
+
export function desertAntLabsLicense(layer) {
|
|
34
|
+
return {
|
|
35
|
+
layer,
|
|
36
|
+
name: 'Desert Ant Labs Source-Available License 1.0',
|
|
37
|
+
url: 'https://license.desertant.com/1.0',
|
|
38
|
+
attributionRequired: true,
|
|
39
|
+
attributionText: 'Powered by Desert Ant Labs',
|
|
40
|
+
// LIC-02 says this in as many words.
|
|
41
|
+
openSource: false,
|
|
42
|
+
// No redistribution or re-hosting of the models, SDKs or a hosted service.
|
|
43
|
+
redistribution: 'not-permitted',
|
|
44
|
+
obligations: [
|
|
45
|
+
'display the attribution notice with a link to Desert Ant Labs',
|
|
46
|
+
'a commercial licence is required above the per-platform, per-model active-device threshold',
|
|
47
|
+
'do not redistribute the model, SDK or a hosted service as a standalone product',
|
|
48
|
+
'do not use outputs or logs to train a competing on-device model',
|
|
49
|
+
'do not extract weights or tamper with the usage telemetry',
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build a licence record, reporting missing layers (LIC-01).
|
|
55
|
+
*
|
|
56
|
+
* @param extensionId - the extension.
|
|
57
|
+
* @param layers - the declared licences.
|
|
58
|
+
* @returns the record and the layers that were not declared.
|
|
59
|
+
*/
|
|
60
|
+
export function resolveLicenses(extensionId, layers) {
|
|
61
|
+
const declared = new Set(layers.map(layer => layer.layer));
|
|
62
|
+
// An undeclared layer is reported rather than assumed permissive: an adapter's MIT
|
|
63
|
+
// licence says nothing about the weights it loads.
|
|
64
|
+
const gaps = LICENSE_LAYERS.filter(layer => !declared.has(layer));
|
|
65
|
+
return {
|
|
66
|
+
record: {
|
|
67
|
+
extensionId,
|
|
68
|
+
layers,
|
|
69
|
+
// Collected from every layer that requires one, so a notice is never dropped by
|
|
70
|
+
// being attached to a layer nobody reads.
|
|
71
|
+
notices: layers
|
|
72
|
+
.filter(layer => layer.attributionRequired && layer.attributionText !== undefined)
|
|
73
|
+
.map(layer => layer.attributionText),
|
|
74
|
+
},
|
|
75
|
+
gaps,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Reject a permission claim that is not a human record (LIC-03).
|
|
80
|
+
*
|
|
81
|
+
* A boolean, a string or an empty object would all be "someone said yes" without a
|
|
82
|
+
* person or a reference, which is what the requirement forbids.
|
|
83
|
+
* @param value - the purported record.
|
|
84
|
+
* @returns whether it is a usable record.
|
|
85
|
+
*/
|
|
86
|
+
export function isUsablePermissionRecord(value) {
|
|
87
|
+
if (typeof value !== 'object' || value === null)
|
|
88
|
+
return false;
|
|
89
|
+
const candidate = value;
|
|
90
|
+
return typeof candidate.extensionId === 'string'
|
|
91
|
+
&& typeof candidate.scope === 'string'
|
|
92
|
+
&& typeof candidate.recordedBy === 'string' && candidate.recordedBy.length > 0
|
|
93
|
+
&& typeof candidate.recordedAt === 'string'
|
|
94
|
+
&& typeof candidate.basis === 'object' && candidate.basis !== null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Whether a provider may be exposed over MCP (LIC-03).
|
|
98
|
+
*
|
|
99
|
+
* An unresolved EXTERNAL-EXPORT permission blocks THAT PROVIDER's export and nothing
|
|
100
|
+
* else. Blocking the whole plugin would punish every other provider for one
|
|
101
|
+
* unresolved question, which the requirement explicitly rules out.
|
|
102
|
+
* @param extensionId - the provider.
|
|
103
|
+
* @param permissions - every recorded permission.
|
|
104
|
+
* @returns the decision.
|
|
105
|
+
*/
|
|
106
|
+
export function exportDecision(extensionId, permissions) {
|
|
107
|
+
const relevant = permissions.find(record => record.extensionId === extensionId && record.scope === 'external-export');
|
|
108
|
+
if (relevant === undefined) {
|
|
109
|
+
return {
|
|
110
|
+
exportable: false,
|
|
111
|
+
reason: `no external-export permission is recorded for ${extensionId}; `
|
|
112
|
+
+ 'this blocks that provider only, not the other providers',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (!isUsablePermissionRecord(relevant)) {
|
|
116
|
+
return { exportable: false, reason: `the external-export record for ${extensionId} is not a usable record` };
|
|
117
|
+
}
|
|
118
|
+
return { exportable: true };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Decide whether an implementation is eligible for a strict no-network deployment
|
|
122
|
+
* (LIC-04).
|
|
123
|
+
*
|
|
124
|
+
* @param behaviour - the implementation's declared network behaviour.
|
|
125
|
+
* @returns the verdict, with an alternative when it is ineligible.
|
|
126
|
+
*/
|
|
127
|
+
export function noNetworkEligibility(behaviour) {
|
|
128
|
+
if (behaviour.requiredTelemetry) {
|
|
129
|
+
// The honest outcome. Suppressing the telemetry would breach the licence AND
|
|
130
|
+
// misdescribe the software, so neither is offered.
|
|
131
|
+
return {
|
|
132
|
+
eligible: false,
|
|
133
|
+
reason: 'this implementation must report usage telemetry, so it cannot be described or deployed as network-free',
|
|
134
|
+
alternative: 'choose an implementation whose licence requires no telemetry, or run a profile that permits its telemetry',
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (behaviour.otherNetworkUse) {
|
|
138
|
+
return {
|
|
139
|
+
eligible: false,
|
|
140
|
+
reason: 'this implementation makes network calls unrelated to telemetry',
|
|
141
|
+
alternative: 'choose a local-only implementation, or run a profile that permits those destinations',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return { eligible: true };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* How a deployment may DESCRIBE itself (LIC-04).
|
|
148
|
+
*
|
|
149
|
+
* The requirement forbids describing telemetry-bearing software as entirely
|
|
150
|
+
* network-free, so a description is derived from the declared behaviour rather than
|
|
151
|
+
* chosen by the deployer.
|
|
152
|
+
* @param behaviour - the implementation's network behaviour.
|
|
153
|
+
* @returns a description that is true of the implementation.
|
|
154
|
+
*/
|
|
155
|
+
export function describeNetwork(behaviour) {
|
|
156
|
+
if (behaviour.requiredTelemetry) {
|
|
157
|
+
const content = behaviour.telemetryContent ?? [];
|
|
158
|
+
return 'reports usage telemetry'
|
|
159
|
+
+ (content.length > 0 ? ` (${content.join(', ')})` : '')
|
|
160
|
+
+ '; it is not network-free';
|
|
161
|
+
}
|
|
162
|
+
return behaviour.otherNetworkUse ? 'makes network calls' : 'runs without network access';
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Whether packaging a model grants the right to redistribute its weights (LIC-01).
|
|
166
|
+
*
|
|
167
|
+
* It does not. Packaging means an adapter plus licensed assets or ACQUISITION
|
|
168
|
+
* INSTRUCTIONS; technical availability does not imply export or redistribution
|
|
169
|
+
* permission.
|
|
170
|
+
* @param record - the licence record.
|
|
171
|
+
* @returns whether the weights may be shipped inside the package.
|
|
172
|
+
*/
|
|
173
|
+
export function mayPackageWeights(record) {
|
|
174
|
+
const weights = record.layers.find(layer => layer.layer === 'weights');
|
|
175
|
+
// `unclear` is not permission: treating an unexamined licence as permitted is how a
|
|
176
|
+
// package ships bytes it had no right to.
|
|
177
|
+
return weights?.redistribution === 'permitted';
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Whether the notices required by a record are present in a shipped notice file.
|
|
181
|
+
* @param record - the licence record.
|
|
182
|
+
* @param noticeText - the notice file's contents.
|
|
183
|
+
* @returns the notices that are missing.
|
|
184
|
+
*/
|
|
185
|
+
export function missingNotices(record, noticeText) {
|
|
186
|
+
return record.notices.filter(notice => !noticeText.includes(notice));
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=licensing.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading an extension through its public entry (EXT-17, EXT-19).
|
|
3
|
+
*
|
|
4
|
+
* The host reaches an extension ONLY through `./tool-mode` and the interfaces in
|
|
5
|
+
* `runtime.ts`. It never imports a file inside the package, never reaches into an
|
|
6
|
+
* adapter registry the host owns, and never special-cases a model name. That is
|
|
7
|
+
* what makes BASE-09's "no private built-in adapter path" true rather than
|
|
8
|
+
* aspirational: a first-party package and a third-party package are loaded by the
|
|
9
|
+
* same function, so there is no second route that only first-party code can take.
|
|
10
|
+
*
|
|
11
|
+
* Loading is split from activation deliberately. `loadExtensionModule` validates
|
|
12
|
+
* the SHAPE of the export; `activateExtension` calls `create()`. EXT-19 requires
|
|
13
|
+
* `create()` to be lightweight, and keeping the two calls separate is what lets a
|
|
14
|
+
* host reject a malformed package without ever running its code.
|
|
15
|
+
*
|
|
16
|
+
* @module @try-works/tool-mode-extension-sdk/load
|
|
17
|
+
*/
|
|
18
|
+
import { type ExtensionContextV1, type ExtensionInstanceV1, type ToolModeExtensionV1 } from './runtime.ts';
|
|
19
|
+
import type { ExtensionDiscovery } from './discovery.ts';
|
|
20
|
+
/** The public entry subpath every module extension declares. */
|
|
21
|
+
export declare const EXTENSION_ENTRY = "./tool-mode";
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the absolute path of an installed extension's public entry.
|
|
24
|
+
*
|
|
25
|
+
* The path comes from the package's own `exports` map rather than from a
|
|
26
|
+
* convention, so the host reads the same declaration a Node resolver would and a
|
|
27
|
+
* package that points its entry elsewhere keeps working.
|
|
28
|
+
* @param discovery - the package discovery result.
|
|
29
|
+
* @returns the absolute entry path.
|
|
30
|
+
* @throws ManagementError when the package declares no importable `./tool-mode` entry.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveExtensionEntry(discovery: ExtensionDiscovery): string;
|
|
33
|
+
/**
|
|
34
|
+
* Import an extension's public entry and validate its shape.
|
|
35
|
+
*
|
|
36
|
+
* Importing runs the package's module top level, which is why EXT-19 constrains it
|
|
37
|
+
* to be lightweight, and why the shape is checked BEFORE `create()` is called.
|
|
38
|
+
* @param entryPath - absolute path of the module to import.
|
|
39
|
+
* @returns the validated extension.
|
|
40
|
+
* @throws ManagementError when the import fails or the export is malformed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function loadExtensionModule(entryPath: string): Promise<ToolModeExtensionV1>;
|
|
43
|
+
/**
|
|
44
|
+
* Activate a loaded extension.
|
|
45
|
+
*
|
|
46
|
+
* @param extension - the validated extension.
|
|
47
|
+
* @param context - the host-issued context.
|
|
48
|
+
* @returns the activated instance.
|
|
49
|
+
* @throws ManagementError when `create()` fails or returns no usable instance.
|
|
50
|
+
*/
|
|
51
|
+
export declare function activateExtension(extension: ToolModeExtensionV1, context: ExtensionContextV1): Promise<ExtensionInstanceV1>;
|
|
52
|
+
//# sourceMappingURL=load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExD,gEAAgE;AAChE,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAU3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuCzF;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA+B9B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loading an extension through its public entry (EXT-17, EXT-19).
|
|
3
|
+
*
|
|
4
|
+
* The host reaches an extension ONLY through `./tool-mode` and the interfaces in
|
|
5
|
+
* `runtime.ts`. It never imports a file inside the package, never reaches into an
|
|
6
|
+
* adapter registry the host owns, and never special-cases a model name. That is
|
|
7
|
+
* what makes BASE-09's "no private built-in adapter path" true rather than
|
|
8
|
+
* aspirational: a first-party package and a third-party package are loaded by the
|
|
9
|
+
* same function, so there is no second route that only first-party code can take.
|
|
10
|
+
*
|
|
11
|
+
* Loading is split from activation deliberately. `loadExtensionModule` validates
|
|
12
|
+
* the SHAPE of the export; `activateExtension` calls `create()`. EXT-19 requires
|
|
13
|
+
* `create()` to be lightweight, and keeping the two calls separate is what lets a
|
|
14
|
+
* host reject a malformed package without ever running its code.
|
|
15
|
+
*
|
|
16
|
+
* @module @try-works/tool-mode-extension-sdk/load
|
|
17
|
+
*/
|
|
18
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
19
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
20
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
21
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return path;
|
|
25
|
+
};
|
|
26
|
+
import { pathToFileURL } from 'node:url';
|
|
27
|
+
import { ManagementError } from "./errors.js";
|
|
28
|
+
import { EXTENSION_API_VERSION, } from "./runtime.js";
|
|
29
|
+
/** The public entry subpath every module extension declares. */
|
|
30
|
+
export const EXTENSION_ENTRY = './tool-mode';
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the absolute path of an installed extension's public entry.
|
|
33
|
+
*
|
|
34
|
+
* The path comes from the package's own `exports` map rather than from a
|
|
35
|
+
* convention, so the host reads the same declaration a Node resolver would and a
|
|
36
|
+
* package that points its entry elsewhere keeps working.
|
|
37
|
+
* @param discovery - the package discovery result.
|
|
38
|
+
* @returns the absolute entry path.
|
|
39
|
+
* @throws ManagementError when the package declares no importable `./tool-mode` entry.
|
|
40
|
+
*/
|
|
41
|
+
export function resolveExtensionEntry(discovery) {
|
|
42
|
+
if (discovery.entryPath === undefined) {
|
|
43
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', `the package declares no importable ${EXTENSION_ENTRY} export, so it has no module entry`, `Declare "${EXTENSION_ENTRY}": "./<file>.js" in package.json exports; the host does not guess entry points.`);
|
|
44
|
+
}
|
|
45
|
+
return discovery.entryPath;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Import an extension's public entry and validate its shape.
|
|
49
|
+
*
|
|
50
|
+
* Importing runs the package's module top level, which is why EXT-19 constrains it
|
|
51
|
+
* to be lightweight, and why the shape is checked BEFORE `create()` is called.
|
|
52
|
+
* @param entryPath - absolute path of the module to import.
|
|
53
|
+
* @returns the validated extension.
|
|
54
|
+
* @throws ManagementError when the import fails or the export is malformed.
|
|
55
|
+
*/
|
|
56
|
+
export async function loadExtensionModule(entryPath) {
|
|
57
|
+
let module;
|
|
58
|
+
try {
|
|
59
|
+
module = await import(__rewriteRelativeImportExtension(pathToFileURL(entryPath).href));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', `the extension entry could not be imported: ${error instanceof Error ? error.message : String(error)}`, 'Confirm the entry is a valid ES module and that its dependencies are installed.');
|
|
63
|
+
}
|
|
64
|
+
const candidate = (module.default ?? module.extension);
|
|
65
|
+
if (candidate === undefined || typeof candidate !== 'object') {
|
|
66
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', 'the extension entry default-exports nothing usable', `Default-export an object with apiVersion ${EXTENSION_API_VERSION} and create(context).`);
|
|
67
|
+
}
|
|
68
|
+
if (candidate.apiVersion !== EXTENSION_API_VERSION) {
|
|
69
|
+
throw new ManagementError('INCOMPATIBLE_PROTOCOL', 'activate', `the extension declares apiVersion ${String(candidate.apiVersion)}, but this host implements ${EXTENSION_API_VERSION}`, 'Install a build of the extension for this API major, or upgrade the host.');
|
|
70
|
+
}
|
|
71
|
+
if (typeof candidate.create !== 'function') {
|
|
72
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', 'the extension entry default-exports no create(context) function', 'Implement create() on the default export.');
|
|
73
|
+
}
|
|
74
|
+
return candidate;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Activate a loaded extension.
|
|
78
|
+
*
|
|
79
|
+
* @param extension - the validated extension.
|
|
80
|
+
* @param context - the host-issued context.
|
|
81
|
+
* @returns the activated instance.
|
|
82
|
+
* @throws ManagementError when `create()` fails or returns no usable instance.
|
|
83
|
+
*/
|
|
84
|
+
export async function activateExtension(extension, context) {
|
|
85
|
+
let instance;
|
|
86
|
+
try {
|
|
87
|
+
instance = await extension.create(context);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
throw new ManagementError('EXTENSION_FAULT', 'activate', `the extension failed to activate: ${error instanceof Error ? error.message : String(error)}`, 'Check the extension diagnostics; the package was not published.');
|
|
91
|
+
}
|
|
92
|
+
if (instance === null || typeof instance !== 'object' || typeof instance.createProvider !== 'function') {
|
|
93
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', 'the extension returned no createProvider(modelId, configuration)', 'Return an instance implementing the ExtensionInstanceV1 contract.');
|
|
94
|
+
}
|
|
95
|
+
if (typeof instance.dispose !== 'function') {
|
|
96
|
+
// A missing dispose is worse than a missing feature: the host would have no
|
|
97
|
+
// way to release the instance, so deactivation could never fully stop.
|
|
98
|
+
throw new ManagementError('INVALID_EXTENSION', 'activate', 'the extension instance implements no dispose(reason)', 'Implement dispose() so the host can release the instance on deactivation.');
|
|
99
|
+
}
|
|
100
|
+
return instance;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=load.js.map
|