@raytio/mcp-server 3.1.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities/effective-capabilities.d.ts +11 -4
- package/dist/capabilities/effective-capabilities.d.ts.map +1 -1
- package/dist/capabilities/effective-capabilities.js +11 -4
- package/dist/capabilities/effective-capabilities.js.map +1 -1
- package/dist/capabilities/tool-capability.d.ts +52 -0
- package/dist/capabilities/tool-capability.d.ts.map +1 -0
- package/dist/capabilities/tool-capability.js +238 -0
- package/dist/capabilities/tool-capability.js.map +1 -0
- package/dist/generated-reads/catalogue.d.ts +80 -0
- package/dist/generated-reads/catalogue.d.ts.map +1 -0
- package/dist/generated-reads/catalogue.js +127 -0
- package/dist/generated-reads/catalogue.js.map +1 -0
- package/dist/generated-reads/guardrails.d.ts +147 -0
- package/dist/generated-reads/guardrails.d.ts.map +1 -0
- package/dist/generated-reads/guardrails.js +190 -0
- package/dist/generated-reads/guardrails.js.map +1 -0
- package/dist/generated-reads/index.d.ts +9 -0
- package/dist/generated-reads/index.d.ts.map +1 -0
- package/dist/generated-reads/index.js +5 -0
- package/dist/generated-reads/index.js.map +1 -0
- package/dist/generated-reads/query-builder.d.ts +99 -0
- package/dist/generated-reads/query-builder.d.ts.map +1 -0
- package/dist/generated-reads/query-builder.js +240 -0
- package/dist/generated-reads/query-builder.js.map +1 -0
- package/dist/generated-reads/resource-tools.d.ts +110 -0
- package/dist/generated-reads/resource-tools.d.ts.map +1 -0
- package/dist/generated-reads/resource-tools.js +280 -0
- package/dist/generated-reads/resource-tools.js.map +1 -0
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +9 -0
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/dsm/index.d.ts.map +1 -1
- package/dist/tools/dsm/index.js +18 -0
- package/dist/tools/dsm/index.js.map +1 -1
- package/dist/tools/ppm/activity-create.d.ts.map +1 -1
- package/dist/tools/ppm/activity-create.js +4 -0
- package/dist/tools/ppm/activity-create.js.map +1 -1
- package/dist/tools/ppm/activity-update.d.ts.map +1 -1
- package/dist/tools/ppm/activity-update.js +4 -0
- package/dist/tools/ppm/activity-update.js.map +1 -1
- package/dist/tools/ppm/external-system-list.d.ts.map +1 -1
- package/dist/tools/ppm/external-system-list.js +4 -0
- package/dist/tools/ppm/external-system-list.js.map +1 -1
- package/dist/tools/ppm/template-create.d.ts.map +1 -1
- package/dist/tools/ppm/template-create.js +4 -0
- package/dist/tools/ppm/template-create.js.map +1 -1
- package/dist/tools/ppm/template-get.d.ts.map +1 -1
- package/dist/tools/ppm/template-get.js +5 -0
- package/dist/tools/ppm/template-get.js.map +1 -1
- package/dist/tools/ppm/template-instantiate.d.ts.map +1 -1
- package/dist/tools/ppm/template-instantiate.js +4 -0
- package/dist/tools/ppm/template-instantiate.js.map +1 -1
- package/dist/tools/ppm/template-list.d.ts.map +1 -1
- package/dist/tools/ppm/template-list.js +4 -0
- package/dist/tools/ppm/template-list.js.map +1 -1
- package/dist/tools/ppm/template-slot-create.d.ts.map +1 -1
- package/dist/tools/ppm/template-slot-create.js +4 -0
- package/dist/tools/ppm/template-slot-create.js.map +1 -1
- package/dist/tools/ppm/template-slot-list.d.ts.map +1 -1
- package/dist/tools/ppm/template-slot-list.js +4 -0
- package/dist/tools/ppm/template-slot-list.js.map +1 -1
- package/dist/tools/ppm/work-item-activities.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-activities.js +4 -0
- package/dist/tools/ppm/work-item-activities.js.map +1 -1
- package/dist/tools/ppm/work-item-block.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-block.js +5 -0
- package/dist/tools/ppm/work-item-block.js.map +1 -1
- package/dist/tools/ppm/work-item-cancel.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-cancel.js +14 -2
- package/dist/tools/ppm/work-item-cancel.js.map +1 -1
- package/dist/tools/ppm/work-item-comment.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-comment.js +4 -0
- package/dist/tools/ppm/work-item-comment.js.map +1 -1
- package/dist/tools/ppm/work-item-complete.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-complete.js +5 -0
- package/dist/tools/ppm/work-item-complete.js.map +1 -1
- package/dist/tools/ppm/work-item-create.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-create.js +4 -0
- package/dist/tools/ppm/work-item-create.js.map +1 -1
- package/dist/tools/ppm/work-item-dependency-create.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-dependency-create.js +4 -0
- package/dist/tools/ppm/work-item-dependency-create.js.map +1 -1
- package/dist/tools/ppm/work-item-dependency-list.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-dependency-list.js +4 -0
- package/dist/tools/ppm/work-item-dependency-list.js.map +1 -1
- package/dist/tools/ppm/work-item-get.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-get.js +4 -0
- package/dist/tools/ppm/work-item-get.js.map +1 -1
- package/dist/tools/ppm/work-item-link-create.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-link-create.js +4 -0
- package/dist/tools/ppm/work-item-link-create.js.map +1 -1
- package/dist/tools/ppm/work-item-link-list.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-link-list.js +4 -0
- package/dist/tools/ppm/work-item-link-list.js.map +1 -1
- package/dist/tools/ppm/work-item-list.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-list.js +4 -0
- package/dist/tools/ppm/work-item-list.js.map +1 -1
- package/dist/tools/ppm/work-item-ready.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-ready.js +5 -0
- package/dist/tools/ppm/work-item-ready.js.map +1 -1
- package/dist/tools/ppm/work-item-start.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-start.js +5 -0
- package/dist/tools/ppm/work-item-start.js.map +1 -1
- package/dist/tools/ppm/work-item-tree.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-tree.js +4 -0
- package/dist/tools/ppm/work-item-tree.js.map +1 -1
- package/dist/tools/ppm/work-item-unblock.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-unblock.js +5 -0
- package/dist/tools/ppm/work-item-unblock.js.map +1 -1
- package/dist/tools/ppm/work-item-update-progress.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-update-progress.js +5 -0
- package/dist/tools/ppm/work-item-update-progress.js.map +1 -1
- package/dist/tools/ppm/work-item-update.d.ts.map +1 -1
- package/dist/tools/ppm/work-item-update.js +4 -0
- package/dist/tools/ppm/work-item-update.js.map +1 -1
- package/dist/tools/prm/index.d.ts.map +1 -1
- package/dist/tools/prm/index.js +21 -0
- package/dist/tools/prm/index.js.map +1 -1
- package/dist/tools/prm/prm-party-create.d.ts.map +1 -1
- package/dist/tools/prm/prm-party-create.js +4 -0
- package/dist/tools/prm/prm-party-create.js.map +1 -1
- package/dist/tools/prm/prm-party-list.d.ts.map +1 -1
- package/dist/tools/prm/prm-party-list.js +4 -0
- package/dist/tools/prm/prm-party-list.js.map +1 -1
- package/dist/tools/registry.d.ts +68 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/sfa/activity-create.d.ts.map +1 -1
- package/dist/tools/sfa/activity-create.js +2 -0
- package/dist/tools/sfa/activity-create.js.map +1 -1
- package/dist/tools/sfa/activity-list.d.ts.map +1 -1
- package/dist/tools/sfa/activity-list.js +2 -0
- package/dist/tools/sfa/activity-list.js.map +1 -1
- package/dist/tools/sfa/deal-create.d.ts.map +1 -1
- package/dist/tools/sfa/deal-create.js +2 -0
- package/dist/tools/sfa/deal-create.js.map +1 -1
- package/dist/tools/sfa/deal-get.d.ts.map +1 -1
- package/dist/tools/sfa/deal-get.js +2 -0
- package/dist/tools/sfa/deal-get.js.map +1 -1
- package/dist/tools/sfa/deal-line-create.d.ts.map +1 -1
- package/dist/tools/sfa/deal-line-create.js +2 -0
- package/dist/tools/sfa/deal-line-create.js.map +1 -1
- package/dist/tools/sfa/deal-line-list.d.ts.map +1 -1
- package/dist/tools/sfa/deal-line-list.js +2 -0
- package/dist/tools/sfa/deal-line-list.js.map +1 -1
- package/dist/tools/sfa/deal-list.d.ts.map +1 -1
- package/dist/tools/sfa/deal-list.js +2 -0
- package/dist/tools/sfa/deal-list.js.map +1 -1
- package/dist/tools/sfa/deal-update.d.ts.map +1 -1
- package/dist/tools/sfa/deal-update.js +2 -0
- package/dist/tools/sfa/deal-update.js.map +1 -1
- package/dist/tools/sfa/lead-create.d.ts.map +1 -1
- package/dist/tools/sfa/lead-create.js +2 -0
- package/dist/tools/sfa/lead-create.js.map +1 -1
- package/dist/tools/sfa/lead-get.d.ts.map +1 -1
- package/dist/tools/sfa/lead-get.js +2 -0
- package/dist/tools/sfa/lead-get.js.map +1 -1
- package/dist/tools/sfa/lead-list.d.ts.map +1 -1
- package/dist/tools/sfa/lead-list.js +2 -0
- package/dist/tools/sfa/lead-list.js.map +1 -1
- package/dist/tools/sfa/lead-source-list.d.ts.map +1 -1
- package/dist/tools/sfa/lead-source-list.js +2 -0
- package/dist/tools/sfa/lead-source-list.js.map +1 -1
- package/dist/tools/sfa/lead-staging-get.d.ts.map +1 -1
- package/dist/tools/sfa/lead-staging-get.js +2 -0
- package/dist/tools/sfa/lead-staging-get.js.map +1 -1
- package/dist/tools/sfa/lead-staging-list.d.ts.map +1 -1
- package/dist/tools/sfa/lead-staging-list.js +2 -0
- package/dist/tools/sfa/lead-staging-list.js.map +1 -1
- package/dist/tools/sfa/lead-update.d.ts.map +1 -1
- package/dist/tools/sfa/lead-update.js +2 -0
- package/dist/tools/sfa/lead-update.js.map +1 -1
- package/dist/tools/sfa/pipeline-list.d.ts.map +1 -1
- package/dist/tools/sfa/pipeline-list.js +2 -0
- package/dist/tools/sfa/pipeline-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-create.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-artifact-create.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-get.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-artifact-get.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-artifact-list.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-artifact-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-cost-summary.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-cost-summary.js +6 -0
- package/dist/tools/wrm/wrm-agent-run-cost-summary.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-create.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-create.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-create.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-eval-create.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-list.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-eval-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-summary.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-eval-summary.js +8 -0
- package/dist/tools/wrm/wrm-agent-run-eval-summary.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-get.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-get.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-create.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-create.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-list.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-guardrail-result-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-summary.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-guardrail-summary.js +5 -0
- package/dist/tools/wrm/wrm-agent-run-guardrail-summary.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-list.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-create.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-step-create.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-list.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-step-list.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-step-update.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-step-update.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-summary.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-summary.js +7 -0
- package/dist/tools/wrm/wrm-agent-run-summary.js.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-agent-run-update.js +4 -0
- package/dist/tools/wrm/wrm-agent-run-update.js.map +1 -1
- package/dist/tools/wrm/wrm-credential-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-credential-list.js +4 -0
- package/dist/tools/wrm/wrm-credential-list.js.map +1 -1
- package/dist/tools/wrm/wrm-credential-request-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-credential-request-create.js +14 -0
- package/dist/tools/wrm/wrm-credential-request-create.js.map +1 -1
- package/dist/tools/wrm/wrm-credential-request-status.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-credential-request-status.js +5 -0
- package/dist/tools/wrm/wrm-credential-request-status.js.map +1 -1
- package/dist/tools/wrm/wrm-credential-retrieve.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-credential-retrieve.js +4 -0
- package/dist/tools/wrm/wrm-credential-retrieve.js.map +1 -1
- package/dist/tools/wrm/wrm-credential-revoke.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-credential-revoke.js +7 -0
- package/dist/tools/wrm/wrm-credential-revoke.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-create.js +4 -0
- package/dist/tools/wrm/wrm-domain-create.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-get.js +4 -0
- package/dist/tools/wrm/wrm-domain-get.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-list.js +4 -0
- package/dist/tools/wrm/wrm-domain-list.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-create.js +4 -0
- package/dist/tools/wrm/wrm-domain-repository-create.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-get.js +4 -0
- package/dist/tools/wrm/wrm-domain-repository-get.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-list.js +4 -0
- package/dist/tools/wrm/wrm-domain-repository-list.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-repository-update.js +4 -0
- package/dist/tools/wrm/wrm-domain-repository-update.js.map +1 -1
- package/dist/tools/wrm/wrm-domain-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-domain-update.js +4 -0
- package/dist/tools/wrm/wrm-domain-update.js.map +1 -1
- package/dist/tools/wrm/wrm-effective-mcp-servers.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-effective-mcp-servers.js +4 -0
- package/dist/tools/wrm/wrm-effective-mcp-servers.js.map +1 -1
- package/dist/tools/wrm/wrm-effective-mcp-tools.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-effective-mcp-tools.js +4 -0
- package/dist/tools/wrm/wrm-effective-mcp-tools.js.map +1 -1
- package/dist/tools/wrm/wrm-effective-model-prefs.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-effective-model-prefs.js +4 -0
- package/dist/tools/wrm/wrm-effective-model-prefs.js.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-create.js +4 -0
- package/dist/tools/wrm/wrm-eval-scorer-create.js.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-get.js +4 -0
- package/dist/tools/wrm/wrm-eval-scorer-get.js.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-list.js +4 -0
- package/dist/tools/wrm/wrm-eval-scorer-list.js.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-eval-scorer-update.js +4 -0
- package/dist/tools/wrm/wrm-eval-scorer-update.js.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-create.js +4 -0
- package/dist/tools/wrm/wrm-guardrail-create.js.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-get.js +4 -0
- package/dist/tools/wrm/wrm-guardrail-get.js.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-list.js +4 -0
- package/dist/tools/wrm/wrm-guardrail-list.js.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-guardrail-update.js +4 -0
- package/dist/tools/wrm/wrm-guardrail-update.js.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-chunk-search.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-chunk-search.js +4 -0
- package/dist/tools/wrm/wrm-knowledge-chunk-search.js.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-create.js +4 -0
- package/dist/tools/wrm/wrm-knowledge-source-create.js.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-get.js +4 -0
- package/dist/tools/wrm/wrm-knowledge-source-get.js.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-list.js +4 -0
- package/dist/tools/wrm/wrm-knowledge-source-list.js.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-knowledge-source-update.js +4 -0
- package/dist/tools/wrm/wrm-knowledge-source-update.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-create.js +4 -0
- package/dist/tools/wrm/wrm-mcp-server-create.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-get.js +4 -0
- package/dist/tools/wrm/wrm-mcp-server-get.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-list.js +4 -0
- package/dist/tools/wrm/wrm-mcp-server-list.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-server-update.js +4 -0
- package/dist/tools/wrm/wrm-mcp-server-update.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-create.js +4 -0
- package/dist/tools/wrm/wrm-mcp-tool-create.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-get.js +4 -0
- package/dist/tools/wrm/wrm-mcp-tool-get.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-list.js +4 -0
- package/dist/tools/wrm/wrm-mcp-tool-list.js.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-mcp-tool-update.js +4 -0
- package/dist/tools/wrm/wrm-mcp-tool-update.js.map +1 -1
- package/dist/tools/wrm/wrm-memory-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-memory-create.js +6 -0
- package/dist/tools/wrm/wrm-memory-create.js.map +1 -1
- package/dist/tools/wrm/wrm-memory-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-memory-get.js +4 -0
- package/dist/tools/wrm/wrm-memory-get.js.map +1 -1
- package/dist/tools/wrm/wrm-memory-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-memory-list.js +4 -0
- package/dist/tools/wrm/wrm-memory-list.js.map +1 -1
- package/dist/tools/wrm/wrm-memory-search.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-memory-search.js +4 -0
- package/dist/tools/wrm/wrm-memory-search.js.map +1 -1
- package/dist/tools/wrm/wrm-memory-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-memory-update.js +5 -0
- package/dist/tools/wrm/wrm-memory-update.js.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-create.js +4 -0
- package/dist/tools/wrm/wrm-model-availability-create.js.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-get.js +4 -0
- package/dist/tools/wrm/wrm-model-availability-get.js.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-list.js +4 -0
- package/dist/tools/wrm/wrm-model-availability-list.js.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-availability-update.js +4 -0
- package/dist/tools/wrm/wrm-model-availability-update.js.map +1 -1
- package/dist/tools/wrm/wrm-model-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-create.js +4 -0
- package/dist/tools/wrm/wrm-model-create.js.map +1 -1
- package/dist/tools/wrm/wrm-model-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-get.js +4 -0
- package/dist/tools/wrm/wrm-model-get.js.map +1 -1
- package/dist/tools/wrm/wrm-model-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-list.js +4 -0
- package/dist/tools/wrm/wrm-model-list.js.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-create.js +4 -0
- package/dist/tools/wrm/wrm-model-parameter-create.js.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-get.js +4 -0
- package/dist/tools/wrm/wrm-model-parameter-get.js.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-list.js +4 -0
- package/dist/tools/wrm/wrm-model-parameter-list.js.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-parameter-update.js +4 -0
- package/dist/tools/wrm/wrm-model-parameter-update.js.map +1 -1
- package/dist/tools/wrm/wrm-model-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-model-update.js +4 -0
- package/dist/tools/wrm/wrm-model-update.js.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-create.js +4 -0
- package/dist/tools/wrm/wrm-platform-label-map-create.js.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-get.js +4 -0
- package/dist/tools/wrm/wrm-platform-label-map-get.js.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-list.js +4 -0
- package/dist/tools/wrm/wrm-platform-label-map-list.js.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-resolve.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-resolve.js +4 -0
- package/dist/tools/wrm/wrm-platform-label-map-resolve.js.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-platform-label-map-update.js +4 -0
- package/dist/tools/wrm/wrm-platform-label-map-update.js.map +1 -1
- package/dist/tools/wrm/wrm-provider-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-provider-create.js +4 -0
- package/dist/tools/wrm/wrm-provider-create.js.map +1 -1
- package/dist/tools/wrm/wrm-provider-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-provider-get.js +4 -0
- package/dist/tools/wrm/wrm-provider-get.js.map +1 -1
- package/dist/tools/wrm/wrm-provider-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-provider-list.js +4 -0
- package/dist/tools/wrm/wrm-provider-list.js.map +1 -1
- package/dist/tools/wrm/wrm-provider-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-provider-update.js +4 -0
- package/dist/tools/wrm/wrm-provider-update.js.map +1 -1
- package/dist/tools/wrm/wrm-role-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-create.js +4 -0
- package/dist/tools/wrm/wrm-role-create.js.map +1 -1
- package/dist/tools/wrm/wrm-role-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-get.js +4 -0
- package/dist/tools/wrm/wrm-role-get.js.map +1 -1
- package/dist/tools/wrm/wrm-role-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-list.js +4 -0
- package/dist/tools/wrm/wrm-role-list.js.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-create.js +4 -0
- package/dist/tools/wrm/wrm-role-memory-create.js.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-get.js +4 -0
- package/dist/tools/wrm/wrm-role-memory-get.js.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-list.js +4 -0
- package/dist/tools/wrm/wrm-role-memory-list.js.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-search.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-search.js +5 -0
- package/dist/tools/wrm/wrm-role-memory-search.js.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-memory-update.js +4 -0
- package/dist/tools/wrm/wrm-role-memory-update.js.map +1 -1
- package/dist/tools/wrm/wrm-role-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-role-update.js +4 -0
- package/dist/tools/wrm/wrm-role-update.js.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-create.js +4 -0
- package/dist/tools/wrm/wrm-sandbox-provider-create.js.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-get.js +4 -0
- package/dist/tools/wrm/wrm-sandbox-provider-get.js.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-list.js +4 -0
- package/dist/tools/wrm/wrm-sandbox-provider-list.js.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-sandbox-provider-update.js +4 -0
- package/dist/tools/wrm/wrm-sandbox-provider-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-server-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-server-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-server-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-server-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-mcp-tool-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-model-pref-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-model-pref-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-def-model-pref-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-def-model-pref-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-definition-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-get.js +4 -0
- package/dist/tools/wrm/wrm-worker-definition-get.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-definition-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-definition-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-definition-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-find-for-role.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-find-for-role.js +5 -0
- package/dist/tools/wrm/wrm-worker-find-for-role.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-get.js +4 -0
- package/dist/tools/wrm/wrm-worker-get.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-server-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-server-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-server-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-server-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-tool-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-tool-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-mcp-tool-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-mcp-tool-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-model-pref-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-model-pref-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-model-pref-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-model-pref-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-resolve-config.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-resolve-config.js +13 -0
- package/dist/tools/wrm/wrm-worker-resolve-config.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-create.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-create.js +4 -0
- package/dist/tools/wrm/wrm-worker-role-assignment-create.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-get.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-get.js +4 -0
- package/dist/tools/wrm/wrm-worker-role-assignment-get.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-list.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-list.js +4 -0
- package/dist/tools/wrm/wrm-worker-role-assignment-list.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-role-assignment-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-role-assignment-update.js.map +1 -1
- package/dist/tools/wrm/wrm-worker-update.d.ts.map +1 -1
- package/dist/tools/wrm/wrm-worker-update.js +4 -0
- package/dist/tools/wrm/wrm-worker-update.js.map +1 -1
- package/package.json +1 -1
|
@@ -99,10 +99,17 @@ export type WireCapabilityScope = (typeof WIRE_CAPABILITY_SCOPES)[number];
|
|
|
99
99
|
* same semantic ("not a verified unbounded HRM grant — enforcement of
|
|
100
100
|
* access is via ownership / ReBAC / row filters at call time").
|
|
101
101
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
102
|
+
* Vocabulary decision (WI-0003678): the internal alias is permanent.
|
|
103
|
+
* WI-0003661 deferred the internal `OWN_RECORDS → ROW_BOUNDED` rename
|
|
104
|
+
* on the grounds that no tool declared a scope yet. WI-0003678 changed
|
|
105
|
+
* that — every tool in {@link Tool.capabilities} now declares
|
|
106
|
+
* requirements through the contract-derived {@link cap} helper, and
|
|
107
|
+
* OWN_RECORDS is the default scope that helper produces. Renaming at
|
|
108
|
+
* this point would touch every capability declaration for no wire-side
|
|
109
|
+
* benefit (the wire vocabulary is already `ROW_BOUNDED` in Persist and
|
|
110
|
+
* the transform on ingress hides that from the rest of the code path).
|
|
111
|
+
* Keep {@link CAPABILITY_SCOPES} as-is; do not add a `ROW_BOUNDED`
|
|
112
|
+
* alias inside MCP.
|
|
106
113
|
*/
|
|
107
114
|
export declare const CAPABILITY_SCOPES: readonly ["ALL_RECORDS", "OWN_RECORDS"];
|
|
108
115
|
export type CapabilityScope = (typeof CAPABILITY_SCOPES)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-capabilities.d.ts","sourceRoot":"","sources":["../../src/capabilities/effective-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,wDAIzB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E
|
|
1
|
+
{"version":3,"file":"effective-capabilities.d.ts","sourceRoot":"","sources":["../../src/capabilities/effective-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,wDAIzB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,yCAA0C,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAQjE;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;gCAuBzB,CAAC;AAEjB,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;yCAAwC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,wBAAwB;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAEzC,IAAI,EAAE,sBAAsB,EAAE;IAgB1C,oEAAoE;IACpE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;OAMG;IACH,MAAM,CACJ,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS;IAW9B;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO;CAWvD;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAAzC,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,OAAO,YAAA;CAItD;AAED,yCAAyC;AACzC,eAAO,MAAM,+BAA+B,8CACC,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,wBAAwB,CAAC,CAmBnC"}
|
|
@@ -101,10 +101,17 @@ export const WIRE_CAPABILITY_SCOPES = [
|
|
|
101
101
|
* same semantic ("not a verified unbounded HRM grant — enforcement of
|
|
102
102
|
* access is via ownership / ReBAC / row filters at call time").
|
|
103
103
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
104
|
+
* Vocabulary decision (WI-0003678): the internal alias is permanent.
|
|
105
|
+
* WI-0003661 deferred the internal `OWN_RECORDS → ROW_BOUNDED` rename
|
|
106
|
+
* on the grounds that no tool declared a scope yet. WI-0003678 changed
|
|
107
|
+
* that — every tool in {@link Tool.capabilities} now declares
|
|
108
|
+
* requirements through the contract-derived {@link cap} helper, and
|
|
109
|
+
* OWN_RECORDS is the default scope that helper produces. Renaming at
|
|
110
|
+
* this point would touch every capability declaration for no wire-side
|
|
111
|
+
* benefit (the wire vocabulary is already `ROW_BOUNDED` in Persist and
|
|
112
|
+
* the transform on ingress hides that from the rest of the code path).
|
|
113
|
+
* Keep {@link CAPABILITY_SCOPES} as-is; do not add a `ROW_BOUNDED`
|
|
114
|
+
* alias inside MCP.
|
|
108
115
|
*/
|
|
109
116
|
export const CAPABILITY_SCOPES = ['ALL_RECORDS', 'OWN_RECORDS'];
|
|
110
117
|
const wireScopeSchema = z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effective-capabilities.js","sourceRoot":"","sources":["../../src/capabilities/effective-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa;IACb,aAAa;IACb,aAAa;CACL,CAAC;AAGX
|
|
1
|
+
{"version":3,"file":"effective-capabilities.js","sourceRoot":"","sources":["../../src/capabilities/effective-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CapabilityRequirement, CapabilityScope } from './effective-capabilities.js';
|
|
2
|
+
interface ContractPermission {
|
|
3
|
+
resourceGroup: string;
|
|
4
|
+
resourceName: string;
|
|
5
|
+
operations: ReadonlySet<string>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Capability requirements for the 6 RPC endpoints MCP calls. RPCs do not
|
|
9
|
+
* have a `table` entry in the pinned contract, so a matching capability
|
|
10
|
+
* MUST be declared by hand here and referenced via {@link rpcCap}. A tool
|
|
11
|
+
* calling an RPC not listed here fails the completeness test.
|
|
12
|
+
*/
|
|
13
|
+
export declare const RPC_CAPABILITIES: Readonly<Record<string, readonly ContractPermission[]>>;
|
|
14
|
+
/** All operations that MCP knows how to map from an HTTP verb. */
|
|
15
|
+
export declare const HTTP_VERBS: string[];
|
|
16
|
+
/** Convert an HTTP verb (lower-case) into the Persist operation code. */
|
|
17
|
+
export declare function verbToOperation(verb: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Return a {@link CapabilityRequirement} for a tool that calls
|
|
20
|
+
* `/db/v1/<table>` with the given operation.
|
|
21
|
+
*
|
|
22
|
+
* Fails fast on:
|
|
23
|
+
* - unknown table (typo, dropped from contract, forgot to sync);
|
|
24
|
+
* - operation not in the contract's `operations` list for that resource
|
|
25
|
+
* (e.g. declaring UPDATE on a view that is SELECT-only);
|
|
26
|
+
* - invalid scope (guarded by {@link CAPABILITY_SCOPES}).
|
|
27
|
+
*
|
|
28
|
+
* @param table PostgREST endpoint segment (e.g. `ppm_work_items`).
|
|
29
|
+
* @param operation One of `SELECT|INSERT|UPDATE|DELETE`, case-insensitive.
|
|
30
|
+
* Also accepts the HTTP verb (`get`/`post`/`patch`/`delete`).
|
|
31
|
+
* @param scope Defaults to `OWN_RECORDS`. Only set to `ALL_RECORDS`
|
|
32
|
+
* when the tool genuinely needs cross-record reach
|
|
33
|
+
* (tenant-wide list/summary tools). See the WI-0003678
|
|
34
|
+
* scope-guidance block.
|
|
35
|
+
*/
|
|
36
|
+
export declare function cap(table: string, operation: string, scope?: CapabilityScope): CapabilityRequirement;
|
|
37
|
+
/**
|
|
38
|
+
* Return the capability requirement(s) for a tool that calls
|
|
39
|
+
* `/db/v1/rpc/<name>`. Every RPC MCP surfaces MUST have an entry in
|
|
40
|
+
* {@link RPC_CAPABILITIES}; a missing entry throws.
|
|
41
|
+
*/
|
|
42
|
+
export declare function rpcCap(name: string, scope?: CapabilityScope): CapabilityRequirement[];
|
|
43
|
+
/**
|
|
44
|
+
* Test-only: is this table known to the helper (via contract or override)?
|
|
45
|
+
* The completeness test uses this to detect drift between the tool source
|
|
46
|
+
* and the pinned contract without shelling out through {@link cap}.
|
|
47
|
+
*/
|
|
48
|
+
export declare function isKnownTable(table: string): boolean;
|
|
49
|
+
/** Test-only: names of all RPCs the helper knows a capability for. */
|
|
50
|
+
export declare function knownRpcs(): readonly string[];
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=tool-capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-capability.d.ts","sourceRoot":"","sources":["../../src/capabilities/tool-capability.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,qBAAqB,EACrB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAsBrC,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC;AAyDD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAoDpF,CAAC;AAUF,kEAAkE;AAClE,eAAO,MAAM,UAAU,UAA0B,CAAC;AAElD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD;AAiBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,GAAG,CACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,eAA+B,GACrC,qBAAqB,CAuBvB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,eAA+B,GACrC,qBAAqB,EAAE,CAqBzB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,sEAAsE;AACtE,wBAAgB,SAAS,IAAI,SAAS,MAAM,EAAE,CAE7C"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { loadPersistResourceContract } from '../contracts/persist-resource-contract.js';
|
|
2
|
+
import { CAPABILITY_SCOPES, } from './effective-capabilities.js';
|
|
3
|
+
/**
|
|
4
|
+
* Contract-derived helper for declaring `Tool.capabilities` (WI-0003678).
|
|
5
|
+
*
|
|
6
|
+
* The pinned Persist resource contract (`contracts/persist/mcp_resource_contract.json`)
|
|
7
|
+
* already carries the resource-group / resource-name / operations tuple for
|
|
8
|
+
* every table MCP is allowed to surface. Rather than hand-writing those tuples
|
|
9
|
+
* in every tool file (a 748-call surface across 188 tools with predictable
|
|
10
|
+
* copy-paste drift), a tool calls {@link cap} with the table and operation it
|
|
11
|
+
* touches — the helper resolves the tuple at module load, and typos or dropped
|
|
12
|
+
* tables produce a hard error immediately.
|
|
13
|
+
*
|
|
14
|
+
* The completeness test (`src/tools/capability-completeness.test.ts`) scans
|
|
15
|
+
* every tool source for `/db/v1/<table>` literals and enforces that each is
|
|
16
|
+
* covered by a declared capability. Without that test, missing declarations
|
|
17
|
+
* fail open — the tool stays advertised even though it will short-circuit on
|
|
18
|
+
* dispatch.
|
|
19
|
+
*/
|
|
20
|
+
const contract = loadPersistResourceContract();
|
|
21
|
+
const TABLE_TO_PERMISSION = (() => {
|
|
22
|
+
const map = new Map();
|
|
23
|
+
for (const resource of contract.resources) {
|
|
24
|
+
map.set(resource.table, {
|
|
25
|
+
resourceGroup: resource.permission.resource_group,
|
|
26
|
+
resourceName: resource.permission.resource_name,
|
|
27
|
+
operations: new Set(resource.permission.operations.map((o) => o.toUpperCase())),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return map;
|
|
31
|
+
})();
|
|
32
|
+
/**
|
|
33
|
+
* Overrides for tables that are deliberately EXCLUDED from the pinned
|
|
34
|
+
* resource contract (credentials-sensitive, internal permission tables,
|
|
35
|
+
* platform infrastructure) but that legitimate MCP tools still need to
|
|
36
|
+
* declare capabilities against.
|
|
37
|
+
*
|
|
38
|
+
* Every entry is a documented, reviewed exception — anything not in the
|
|
39
|
+
* pinned contract and not listed here will throw at module load. Do not
|
|
40
|
+
* add entries speculatively: an entry here means "MCP tools call this
|
|
41
|
+
* endpoint and we accept the sensitivity trade-off". Removing a tool that
|
|
42
|
+
* used one of these should remove the entry too.
|
|
43
|
+
*
|
|
44
|
+
* Verified against Persist naming convention (`<module>_<plural_snake>` →
|
|
45
|
+
* `<MODULE>.<PLURAL_SNAKE_UPPER>`), consistent across all in-contract
|
|
46
|
+
* resources in the same module. See wrm/, fnd/ sections of the contract.
|
|
47
|
+
*/
|
|
48
|
+
const CONTRACT_OVERRIDES = new Map([
|
|
49
|
+
[
|
|
50
|
+
'wrm_worker_credentials',
|
|
51
|
+
{
|
|
52
|
+
resourceGroup: 'WRM',
|
|
53
|
+
resourceName: 'WORKER_CREDENTIALS',
|
|
54
|
+
operations: new Set(['INSERT', 'SELECT', 'UPDATE']),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
'wrm_credential_requests',
|
|
59
|
+
{
|
|
60
|
+
resourceGroup: 'WRM',
|
|
61
|
+
resourceName: 'CREDENTIAL_REQUESTS',
|
|
62
|
+
operations: new Set(['INSERT', 'SELECT', 'UPDATE']),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
'fnd_notifications',
|
|
67
|
+
{
|
|
68
|
+
resourceGroup: 'FND',
|
|
69
|
+
resourceName: 'NOTIFICATIONS',
|
|
70
|
+
operations: new Set(['INSERT', 'SELECT', 'UPDATE']),
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
]);
|
|
74
|
+
/**
|
|
75
|
+
* Capability requirements for the 6 RPC endpoints MCP calls. RPCs do not
|
|
76
|
+
* have a `table` entry in the pinned contract, so a matching capability
|
|
77
|
+
* MUST be declared by hand here and referenced via {@link rpcCap}. A tool
|
|
78
|
+
* calling an RPC not listed here fails the completeness test.
|
|
79
|
+
*/
|
|
80
|
+
export const RPC_CAPABILITIES = {
|
|
81
|
+
ppm_instantiate_epic_template: [
|
|
82
|
+
{
|
|
83
|
+
resourceGroup: 'PPM',
|
|
84
|
+
resourceName: 'EPIC_TEMPLATES',
|
|
85
|
+
operations: new Set(['SELECT']),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
resourceGroup: 'PPM',
|
|
89
|
+
resourceName: 'WORK_ITEMS',
|
|
90
|
+
operations: new Set(['INSERT']),
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
wrm_knowledge_chunk_search: [
|
|
94
|
+
{
|
|
95
|
+
resourceGroup: 'WRM',
|
|
96
|
+
resourceName: 'KNOWLEDGE_CHUNKS',
|
|
97
|
+
operations: new Set(['SELECT']),
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
wrm_context_aware_memory_search: [
|
|
101
|
+
{
|
|
102
|
+
resourceGroup: 'WRM',
|
|
103
|
+
resourceName: 'ROLE_MEMORIES',
|
|
104
|
+
operations: new Set(['SELECT']),
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
wrm_semantic_memory_search: [
|
|
108
|
+
{
|
|
109
|
+
resourceGroup: 'WRM',
|
|
110
|
+
resourceName: 'ROLE_MEMORIES',
|
|
111
|
+
operations: new Set(['SELECT']),
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
wrm_update_memory_access: [
|
|
115
|
+
{
|
|
116
|
+
resourceGroup: 'WRM',
|
|
117
|
+
resourceName: 'ROLE_MEMORIES',
|
|
118
|
+
operations: new Set(['UPDATE']),
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
// fnd_authz_user_groups — advertised in the WI as a supported RPC; no
|
|
122
|
+
// current tool file calls it, but keep the row so a future consumer can
|
|
123
|
+
// reference it via `rpcCap('fnd_authz_user_groups')` without touching
|
|
124
|
+
// the helper. Verified as a semantic authz RPC per Persist docs.
|
|
125
|
+
fnd_authz_user_groups: [
|
|
126
|
+
{
|
|
127
|
+
resourceGroup: 'FND',
|
|
128
|
+
resourceName: 'USER_GROUPS',
|
|
129
|
+
operations: new Set(['SELECT']),
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
};
|
|
133
|
+
const VERB_TO_OP = {
|
|
134
|
+
get: 'SELECT',
|
|
135
|
+
post: 'INSERT',
|
|
136
|
+
patch: 'UPDATE',
|
|
137
|
+
put: 'UPDATE',
|
|
138
|
+
delete: 'DELETE',
|
|
139
|
+
};
|
|
140
|
+
/** All operations that MCP knows how to map from an HTTP verb. */
|
|
141
|
+
export const HTTP_VERBS = Object.keys(VERB_TO_OP);
|
|
142
|
+
/** Convert an HTTP verb (lower-case) into the Persist operation code. */
|
|
143
|
+
export function verbToOperation(verb) {
|
|
144
|
+
const op = VERB_TO_OP[verb.toLowerCase()];
|
|
145
|
+
if (!op) {
|
|
146
|
+
throw new Error(`Unknown HTTP verb "${verb}" — cannot map to a Persist operation. ` +
|
|
147
|
+
'Update VERB_TO_OP in src/capabilities/tool-capability.ts.');
|
|
148
|
+
}
|
|
149
|
+
return op;
|
|
150
|
+
}
|
|
151
|
+
function resolveTable(table) {
|
|
152
|
+
const fromContract = TABLE_TO_PERMISSION.get(table);
|
|
153
|
+
if (fromContract)
|
|
154
|
+
return fromContract;
|
|
155
|
+
const fromOverride = CONTRACT_OVERRIDES.get(table);
|
|
156
|
+
if (fromOverride)
|
|
157
|
+
return fromOverride;
|
|
158
|
+
throw new Error(`cap(): unknown table "${table}". The pinned Persist contract does not ` +
|
|
159
|
+
'declare a permission for it and no override is registered. Either the ' +
|
|
160
|
+
'table has been renamed / removed upstream (re-sync the contract with ' +
|
|
161
|
+
'`npm run contract:sync-resource`), or add a documented override in ' +
|
|
162
|
+
'src/capabilities/tool-capability.ts if MCP legitimately needs to hit ' +
|
|
163
|
+
'a resource excluded from the surface.');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Return a {@link CapabilityRequirement} for a tool that calls
|
|
167
|
+
* `/db/v1/<table>` with the given operation.
|
|
168
|
+
*
|
|
169
|
+
* Fails fast on:
|
|
170
|
+
* - unknown table (typo, dropped from contract, forgot to sync);
|
|
171
|
+
* - operation not in the contract's `operations` list for that resource
|
|
172
|
+
* (e.g. declaring UPDATE on a view that is SELECT-only);
|
|
173
|
+
* - invalid scope (guarded by {@link CAPABILITY_SCOPES}).
|
|
174
|
+
*
|
|
175
|
+
* @param table PostgREST endpoint segment (e.g. `ppm_work_items`).
|
|
176
|
+
* @param operation One of `SELECT|INSERT|UPDATE|DELETE`, case-insensitive.
|
|
177
|
+
* Also accepts the HTTP verb (`get`/`post`/`patch`/`delete`).
|
|
178
|
+
* @param scope Defaults to `OWN_RECORDS`. Only set to `ALL_RECORDS`
|
|
179
|
+
* when the tool genuinely needs cross-record reach
|
|
180
|
+
* (tenant-wide list/summary tools). See the WI-0003678
|
|
181
|
+
* scope-guidance block.
|
|
182
|
+
*/
|
|
183
|
+
export function cap(table, operation, scope = 'OWN_RECORDS') {
|
|
184
|
+
const permission = resolveTable(table);
|
|
185
|
+
const opUpper = VERB_TO_OP[operation.toLowerCase()] ?? operation.toUpperCase();
|
|
186
|
+
if (!permission.operations.has(opUpper)) {
|
|
187
|
+
throw new Error(`cap("${table}", "${operation}"): operation ${opUpper} is not in the ` +
|
|
188
|
+
`contract's permitted operations for ${permission.resourceGroup}.${permission.resourceName} ` +
|
|
189
|
+
`(supported: ${[...permission.operations].sort().join(', ')}). ` +
|
|
190
|
+
'Pick a different endpoint or fix the tool.');
|
|
191
|
+
}
|
|
192
|
+
if (!CAPABILITY_SCOPES.includes(scope)) {
|
|
193
|
+
throw new Error(`cap("${table}", "${operation}"): invalid scope "${scope}" — ` +
|
|
194
|
+
`must be one of ${CAPABILITY_SCOPES.join(', ')}.`);
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
resourceGroup: permission.resourceGroup,
|
|
198
|
+
resourceName: permission.resourceName,
|
|
199
|
+
operation: opUpper,
|
|
200
|
+
scope,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Return the capability requirement(s) for a tool that calls
|
|
205
|
+
* `/db/v1/rpc/<name>`. Every RPC MCP surfaces MUST have an entry in
|
|
206
|
+
* {@link RPC_CAPABILITIES}; a missing entry throws.
|
|
207
|
+
*/
|
|
208
|
+
export function rpcCap(name, scope = 'OWN_RECORDS') {
|
|
209
|
+
const perms = RPC_CAPABILITIES[name];
|
|
210
|
+
if (!perms) {
|
|
211
|
+
throw new Error(`rpcCap(): unknown RPC "${name}". Add a documented entry to ` +
|
|
212
|
+
'RPC_CAPABILITIES in src/capabilities/tool-capability.ts before ' +
|
|
213
|
+
'referencing it from a tool.');
|
|
214
|
+
}
|
|
215
|
+
// Expand every operation in each entry. Taking only the first
|
|
216
|
+
// (`[...p.operations][0]`) silently dropped the rest, so a multi-op
|
|
217
|
+
// entry would under-declare and the tool would be advertised more
|
|
218
|
+
// permissively than it can actually execute.
|
|
219
|
+
return perms.flatMap((p) => [...p.operations].map((operation) => ({
|
|
220
|
+
resourceGroup: p.resourceGroup,
|
|
221
|
+
resourceName: p.resourceName,
|
|
222
|
+
operation,
|
|
223
|
+
scope,
|
|
224
|
+
})));
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Test-only: is this table known to the helper (via contract or override)?
|
|
228
|
+
* The completeness test uses this to detect drift between the tool source
|
|
229
|
+
* and the pinned contract without shelling out through {@link cap}.
|
|
230
|
+
*/
|
|
231
|
+
export function isKnownTable(table) {
|
|
232
|
+
return TABLE_TO_PERMISSION.has(table) || CONTRACT_OVERRIDES.has(table);
|
|
233
|
+
}
|
|
234
|
+
/** Test-only: names of all RPCs the helper knows a capability for. */
|
|
235
|
+
export function knownRpcs() {
|
|
236
|
+
return Object.keys(RPC_CAPABILITIES);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=tool-capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-capability.js","sourceRoot":"","sources":["../../src/capabilities/tool-capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble the full set of generated read tools from a pinned Persist
|
|
3
|
+
* resource contract. Consumers pass the contract loaded by
|
|
4
|
+
* {@link loadPersistResourceContract}; this module hands back a
|
|
5
|
+
* deterministic, filterable list of {@link Tool} objects ready to be
|
|
6
|
+
* exposed alongside hand-written tools.
|
|
7
|
+
*
|
|
8
|
+
* Safety filters applied by default (WI-0003501):
|
|
9
|
+
*
|
|
10
|
+
* - Resources without a `list` or `read` operation are skipped — the
|
|
11
|
+
* resource may exist only for write-only side-effect paths.
|
|
12
|
+
* - Resources with `sensitivity` other than `normal` are skipped.
|
|
13
|
+
* Callers who genuinely need them must set `includeSensitive: true`
|
|
14
|
+
* on the filter; the resource-tools factory will still redact any
|
|
15
|
+
* credential-shaped columns from every response.
|
|
16
|
+
* - Resources that declare `side_effects` are ALWAYS skipped — there
|
|
17
|
+
* is no opt-in. Generic CRUD around a state-transition or
|
|
18
|
+
* notification path is a category error; dedicated tools with
|
|
19
|
+
* explicit confirmation/idempotency semantics are required.
|
|
20
|
+
*
|
|
21
|
+
* Composite-primary-key resources still get describe + list; only the
|
|
22
|
+
* get-by-id tool is skipped.
|
|
23
|
+
*/
|
|
24
|
+
import type { PersistResource, PersistResourceContract } from '../contracts/persist-resource-contract.js';
|
|
25
|
+
import { Tool } from '../tools/registry.js';
|
|
26
|
+
import { ExclusionReason } from './guardrails.js';
|
|
27
|
+
export interface CatalogueFilter {
|
|
28
|
+
/** Only emit tools for these modules. Case-insensitive; empty = all. */
|
|
29
|
+
modules?: string[];
|
|
30
|
+
/** Additional predicate — return `true` to include the resource. */
|
|
31
|
+
include?: (resource: PersistResource) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* When `true`, resources marked `sensitive`/`restricted` become
|
|
34
|
+
* eligible. Sensitive-field redaction still applies — the caller
|
|
35
|
+
* gains access to the resource's non-secret columns only. Default
|
|
36
|
+
* `false`.
|
|
37
|
+
*
|
|
38
|
+
* Side-effecting resources are NEVER made eligible by this flag —
|
|
39
|
+
* dedicated tools remain the only supported path for them.
|
|
40
|
+
*/
|
|
41
|
+
includeSensitive?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Result of one resource's exclusion, exposed on the report so
|
|
45
|
+
* operators and doc generators can explain "why is `foo_list` not in
|
|
46
|
+
* the surface?" without re-implementing the guardrails.
|
|
47
|
+
*/
|
|
48
|
+
export interface CatalogueExclusion {
|
|
49
|
+
resourceId: string;
|
|
50
|
+
module: string;
|
|
51
|
+
reasons: ExclusionReason[];
|
|
52
|
+
}
|
|
53
|
+
/** Report returned alongside the generated tool list. */
|
|
54
|
+
export interface CatalogueReport {
|
|
55
|
+
tools: Tool[];
|
|
56
|
+
excluded: CatalogueExclusion[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Deterministic, sorted list of generated read tools drawn from the
|
|
60
|
+
* pinned contract. Sorting is by (module, resource_id, tool_name) so
|
|
61
|
+
* `docs/tools.md` regeneration is reproducible.
|
|
62
|
+
*
|
|
63
|
+
* Sensitive and side-effecting resources are filtered out by default —
|
|
64
|
+
* see {@link CatalogueFilter} for the opt-in that lifts the sensitivity
|
|
65
|
+
* bar (nothing lifts the side-effect bar).
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildGeneratedReadCatalogue(contract: PersistResourceContract, filter?: CatalogueFilter): Tool[];
|
|
68
|
+
/**
|
|
69
|
+
* Same as {@link buildGeneratedReadCatalogue}, but also returns the list
|
|
70
|
+
* of resources the guardrails excluded and why. Used by tests and the
|
|
71
|
+
* doc generator to prove that the safety filter is doing its job — a
|
|
72
|
+
* silent skip is indistinguishable from a bug.
|
|
73
|
+
*/
|
|
74
|
+
export declare function buildGeneratedReadCatalogueReport(contract: PersistResourceContract, filter?: CatalogueFilter): CatalogueReport;
|
|
75
|
+
/**
|
|
76
|
+
* Group the generated read tools by module. Modules with no eligible
|
|
77
|
+
* resources are omitted from the returned record.
|
|
78
|
+
*/
|
|
79
|
+
export declare function groupGeneratedReadsByModule(contract: PersistResourceContract, filter?: CatalogueFilter): Record<string, Tool[]>;
|
|
80
|
+
//# sourceMappingURL=catalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/generated-reads/catalogue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAK5C,OAAO,EAEL,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;IACjD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,uBAAuB,EACjC,MAAM,GAAE,eAAoB,GAC3B,IAAI,EAAE,CAER;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,uBAAuB,EACjC,MAAM,GAAE,eAAoB,GAC3B,eAAe,CAkCjB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,uBAAuB,EACjC,MAAM,GAAE,eAAoB,GAC3B,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAqBxB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble the full set of generated read tools from a pinned Persist
|
|
3
|
+
* resource contract. Consumers pass the contract loaded by
|
|
4
|
+
* {@link loadPersistResourceContract}; this module hands back a
|
|
5
|
+
* deterministic, filterable list of {@link Tool} objects ready to be
|
|
6
|
+
* exposed alongside hand-written tools.
|
|
7
|
+
*
|
|
8
|
+
* Safety filters applied by default (WI-0003501):
|
|
9
|
+
*
|
|
10
|
+
* - Resources without a `list` or `read` operation are skipped — the
|
|
11
|
+
* resource may exist only for write-only side-effect paths.
|
|
12
|
+
* - Resources with `sensitivity` other than `normal` are skipped.
|
|
13
|
+
* Callers who genuinely need them must set `includeSensitive: true`
|
|
14
|
+
* on the filter; the resource-tools factory will still redact any
|
|
15
|
+
* credential-shaped columns from every response.
|
|
16
|
+
* - Resources that declare `side_effects` are ALWAYS skipped — there
|
|
17
|
+
* is no opt-in. Generic CRUD around a state-transition or
|
|
18
|
+
* notification path is a category error; dedicated tools with
|
|
19
|
+
* explicit confirmation/idempotency semantics are required.
|
|
20
|
+
*
|
|
21
|
+
* Composite-primary-key resources still get describe + list; only the
|
|
22
|
+
* get-by-id tool is skipped.
|
|
23
|
+
*/
|
|
24
|
+
import { buildResourceTools, } from './resource-tools.js';
|
|
25
|
+
import { evaluateResourceEligibility, } from './guardrails.js';
|
|
26
|
+
function moduleMatches(resource, filter) {
|
|
27
|
+
if (!filter.modules || filter.modules.length === 0)
|
|
28
|
+
return true;
|
|
29
|
+
const wanted = new Set(filter.modules.map((m) => m.toLowerCase()));
|
|
30
|
+
return wanted.has(resource.module.toLowerCase());
|
|
31
|
+
}
|
|
32
|
+
function predicateMatches(resource, filter) {
|
|
33
|
+
if (!filter.include)
|
|
34
|
+
return true;
|
|
35
|
+
return filter.include(resource);
|
|
36
|
+
}
|
|
37
|
+
function collectTools(triple) {
|
|
38
|
+
const out = [triple.describe, triple.list];
|
|
39
|
+
if (triple.get)
|
|
40
|
+
out.push(triple.get);
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Deterministic, sorted list of generated read tools drawn from the
|
|
45
|
+
* pinned contract. Sorting is by (module, resource_id, tool_name) so
|
|
46
|
+
* `docs/tools.md` regeneration is reproducible.
|
|
47
|
+
*
|
|
48
|
+
* Sensitive and side-effecting resources are filtered out by default —
|
|
49
|
+
* see {@link CatalogueFilter} for the opt-in that lifts the sensitivity
|
|
50
|
+
* bar (nothing lifts the side-effect bar).
|
|
51
|
+
*/
|
|
52
|
+
export function buildGeneratedReadCatalogue(contract, filter = {}) {
|
|
53
|
+
return buildGeneratedReadCatalogueReport(contract, filter).tools;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Same as {@link buildGeneratedReadCatalogue}, but also returns the list
|
|
57
|
+
* of resources the guardrails excluded and why. Used by tests and the
|
|
58
|
+
* doc generator to prove that the safety filter is doing its job — a
|
|
59
|
+
* silent skip is indistinguishable from a bug.
|
|
60
|
+
*/
|
|
61
|
+
export function buildGeneratedReadCatalogueReport(contract, filter = {}) {
|
|
62
|
+
const chosen = [];
|
|
63
|
+
const excluded = [];
|
|
64
|
+
for (const resource of contract.resources) {
|
|
65
|
+
if (!moduleMatches(resource, filter))
|
|
66
|
+
continue;
|
|
67
|
+
const decision = evaluateResourceEligibility(resource, {
|
|
68
|
+
includeSensitive: filter.includeSensitive,
|
|
69
|
+
});
|
|
70
|
+
if (!decision.eligible) {
|
|
71
|
+
excluded.push({
|
|
72
|
+
resourceId: resource.resource_id,
|
|
73
|
+
module: resource.module,
|
|
74
|
+
reasons: decision.reasons,
|
|
75
|
+
});
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (!predicateMatches(resource, filter))
|
|
79
|
+
continue;
|
|
80
|
+
chosen.push(resource);
|
|
81
|
+
}
|
|
82
|
+
chosen.sort((a, b) => {
|
|
83
|
+
const byModule = a.module.localeCompare(b.module);
|
|
84
|
+
if (byModule !== 0)
|
|
85
|
+
return byModule;
|
|
86
|
+
return a.resource_id.localeCompare(b.resource_id);
|
|
87
|
+
});
|
|
88
|
+
excluded.sort((a, b) => {
|
|
89
|
+
const byModule = a.module.localeCompare(b.module);
|
|
90
|
+
if (byModule !== 0)
|
|
91
|
+
return byModule;
|
|
92
|
+
return a.resourceId.localeCompare(b.resourceId);
|
|
93
|
+
});
|
|
94
|
+
const tools = [];
|
|
95
|
+
for (const resource of chosen) {
|
|
96
|
+
tools.push(...collectTools(buildResourceTools(resource)));
|
|
97
|
+
}
|
|
98
|
+
return { tools, excluded };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Group the generated read tools by module. Modules with no eligible
|
|
102
|
+
* resources are omitted from the returned record.
|
|
103
|
+
*/
|
|
104
|
+
export function groupGeneratedReadsByModule(contract, filter = {}) {
|
|
105
|
+
const grouped = {};
|
|
106
|
+
const all = buildGeneratedReadCatalogue(contract, filter);
|
|
107
|
+
const byName = new Map();
|
|
108
|
+
for (const resource of contract.resources)
|
|
109
|
+
byName.set(resource.resource_id, resource);
|
|
110
|
+
for (const tool of all) {
|
|
111
|
+
// Recover the module from the resource_id prefix embedded in the
|
|
112
|
+
// tool name: `<resource_id>_(describe|list|get)`.
|
|
113
|
+
const suffixes = ['_describe', '_list', '_get'];
|
|
114
|
+
let resourceId = null;
|
|
115
|
+
for (const suffix of suffixes) {
|
|
116
|
+
if (tool.name.endsWith(suffix)) {
|
|
117
|
+
resourceId = tool.name.slice(0, -suffix.length);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const resource = resourceId ? byName.get(resourceId) : undefined;
|
|
122
|
+
const module = resource?.module ?? 'unknown';
|
|
123
|
+
(grouped[module] ??= []).push(tool);
|
|
124
|
+
}
|
|
125
|
+
return grouped;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=catalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/generated-reads/catalogue.ts"],"names":[],"mappings":"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"}
|