@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
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP sensitive-resource and side-effect guardrails (WI-0003501).
|
|
3
|
+
*
|
|
4
|
+
* The schema-driven read framework (WI-0003500) will happily produce
|
|
5
|
+
* describe/list/get tools for every PostgREST resource in the pinned
|
|
6
|
+
* Persist contract. That is unsafe by default: some resources are
|
|
7
|
+
* classified `sensitive`/`restricted` (credentials, financial secrets,
|
|
8
|
+
* authorisation internals) and others declare `side_effects`
|
|
9
|
+
* (notifications, state transitions) that must never be triggered by a
|
|
10
|
+
* generic CRUD path.
|
|
11
|
+
*
|
|
12
|
+
* This module is the single choke point that decides:
|
|
13
|
+
*
|
|
14
|
+
* - which resources the generated catalogue is allowed to surface;
|
|
15
|
+
* - which fields must be redacted when a sensitive resource is
|
|
16
|
+
* explicitly opted in (defence-in-depth for password/token/secret
|
|
17
|
+
* columns);
|
|
18
|
+
* - which write operations (`create`, `update`, `delete`) can never be
|
|
19
|
+
* generated automatically — dedicated tools with explicit
|
|
20
|
+
* confirmation/idempotency semantics are required.
|
|
21
|
+
*
|
|
22
|
+
* The rules encoded here are intentionally conservative: when in doubt,
|
|
23
|
+
* fail closed. Callers who genuinely need a sensitive resource must set
|
|
24
|
+
* `includeSensitive` on the catalogue filter (and pay for the redaction
|
|
25
|
+
* that comes with it); callers who need write access to a side-effecting
|
|
26
|
+
* resource must build a dedicated tool with a hand-written safety
|
|
27
|
+
* envelope. There is no generator escape hatch for that second case.
|
|
28
|
+
*/
|
|
29
|
+
import type { PersistResource } from '../contracts/persist-resource-contract.js';
|
|
30
|
+
/**
|
|
31
|
+
* PostgREST operations that MCP will NEVER auto-generate as tools.
|
|
32
|
+
*
|
|
33
|
+
* Generic CRUD wrappers on `create`/`update`/`delete` are prohibited
|
|
34
|
+
* even for `normal` resources — they trivially become side-effect
|
|
35
|
+
* vectors (status transitions, notifications, payments, provisioning)
|
|
36
|
+
* as soon as they are exposed to a model. Every mutating action must be
|
|
37
|
+
* a dedicated tool with an explicit safety envelope
|
|
38
|
+
* (confirmation semantics, idempotency, redaction of returned rows).
|
|
39
|
+
*/
|
|
40
|
+
export declare const NON_GENERATABLE_OPERATIONS: readonly string[];
|
|
41
|
+
/**
|
|
42
|
+
* PostgREST operations the read framework can generate tools for.
|
|
43
|
+
* Anything not in this set is either read-only-but-unsupported (extend
|
|
44
|
+
* the framework) or a side effect (dedicated tool required).
|
|
45
|
+
*/
|
|
46
|
+
export declare const READ_OPERATIONS: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* Field-name patterns that look like credential material. Used to redact
|
|
49
|
+
* fields from responses AND from `select`/`filter`/`order` allowlists when
|
|
50
|
+
* a sensitive resource is opted in via {@link CatalogueFilter.includeSensitive}.
|
|
51
|
+
*
|
|
52
|
+
* The patterns match on token boundaries (`^`, `_`, `$`) so we do not
|
|
53
|
+
* accidentally swallow innocuous names like `content_hash`, `visitor_key`,
|
|
54
|
+
* or `public_key`. They are conservative on purpose: Persist's
|
|
55
|
+
* resource-level `sensitivity` marker is the primary defence; this list
|
|
56
|
+
* exists as a belt-and-braces filter that catches secret-shaped column
|
|
57
|
+
* names inside a resource that a caller has intentionally opened up.
|
|
58
|
+
*/
|
|
59
|
+
export declare const SENSITIVE_FIELD_PATTERNS: readonly RegExp[];
|
|
60
|
+
/** `true` when the resource's declared sensitivity is `sensitive` or `restricted`. */
|
|
61
|
+
export declare function isSensitiveResource(resource: PersistResource): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* `true` when the resource declares any {@link PersistResource.side_effects}
|
|
64
|
+
* markers — notification emission, template rendering, background job
|
|
65
|
+
* scheduling, etc. Side-effecting resources are ineligible for the
|
|
66
|
+
* generic read framework: their state transitions must be modelled as
|
|
67
|
+
* dedicated tools.
|
|
68
|
+
*/
|
|
69
|
+
export declare function hasSideEffects(resource: PersistResource): boolean;
|
|
70
|
+
/** `true` when a field name matches any {@link SENSITIVE_FIELD_PATTERNS} entry. */
|
|
71
|
+
export declare function isSensitiveField(name: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Return the subset of a resource's fields that must be redacted from
|
|
74
|
+
* any response and stripped from the select/filter/order allowlists.
|
|
75
|
+
* Names are returned in the resource's declared field order so callers
|
|
76
|
+
* can advertise them deterministically.
|
|
77
|
+
*/
|
|
78
|
+
export declare function sensitiveFieldNames(resource: PersistResource): string[];
|
|
79
|
+
/**
|
|
80
|
+
* Return the resource's field names with the sensitive set removed —
|
|
81
|
+
* i.e. the fields the read framework may safely expose. Deterministic
|
|
82
|
+
* order (resource-declared order, sensitive rows dropped).
|
|
83
|
+
*/
|
|
84
|
+
export declare function visibleFieldNames(resource: PersistResource): string[];
|
|
85
|
+
/**
|
|
86
|
+
* True when the resource declares at least one read operation the
|
|
87
|
+
* generator supports (`list` or `read`). Resources that only support
|
|
88
|
+
* write operations exist for side-effect paths and must never be
|
|
89
|
+
* surfaced by the read framework.
|
|
90
|
+
*/
|
|
91
|
+
export declare function hasAnyReadOperation(resource: PersistResource): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* The reason a resource was excluded from the generated catalogue.
|
|
94
|
+
* Emitted on the catalogue exclusion report so operators can trace
|
|
95
|
+
* "why is `foo_bar_list` not advertised?" to the exact guardrail.
|
|
96
|
+
*/
|
|
97
|
+
export type ExclusionReason = 'no_read_operations' | 'sensitive' | 'restricted' | 'side_effects';
|
|
98
|
+
/**
|
|
99
|
+
* Decision object for one resource: whether the generator may emit
|
|
100
|
+
* describe/list/get for it, and if not, why not.
|
|
101
|
+
*
|
|
102
|
+
* `sensitive`/`restricted` exclusions can be overridden by callers who
|
|
103
|
+
* pass `includeSensitive: true` to the catalogue — in that case the
|
|
104
|
+
* generator still fires, but the field redaction guardrail
|
|
105
|
+
* (see {@link sensitiveFieldNames}) prunes any credential-shaped columns
|
|
106
|
+
* from the returned rows. Side-effect exclusions are hard: there is no
|
|
107
|
+
* `includeSideEffects` opt-in.
|
|
108
|
+
*/
|
|
109
|
+
export interface EligibilityDecision {
|
|
110
|
+
eligible: boolean;
|
|
111
|
+
reasons: ExclusionReason[];
|
|
112
|
+
}
|
|
113
|
+
export interface EligibilityOptions {
|
|
114
|
+
/**
|
|
115
|
+
* When `true`, resources marked `sensitive` or `restricted` become
|
|
116
|
+
* eligible for generation. Field redaction still applies. Default
|
|
117
|
+
* `false` — sensitive resources are hidden.
|
|
118
|
+
*/
|
|
119
|
+
includeSensitive?: boolean;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Decide whether a resource may be surfaced by the generated read
|
|
123
|
+
* framework, and record every guardrail it fails.
|
|
124
|
+
*
|
|
125
|
+
* The eligibility check is defence-in-depth: even with
|
|
126
|
+
* `includeSensitive: true`, a `side_effects` marker or a missing read
|
|
127
|
+
* operation still rejects the resource — the caller cannot bypass those
|
|
128
|
+
* two rules through the catalogue filter.
|
|
129
|
+
*/
|
|
130
|
+
export declare function evaluateResourceEligibility(resource: PersistResource, options?: EligibilityOptions): EligibilityDecision;
|
|
131
|
+
/**
|
|
132
|
+
* Assert that a resource description carries no PostgREST operation
|
|
133
|
+
* that MCP will never generate a tool for. Called by the resource-tools
|
|
134
|
+
* factory as a hard invariant: if a future change accidentally wires a
|
|
135
|
+
* write operation into the generator, the build will crash immediately
|
|
136
|
+
* instead of silently exposing a generic mutator.
|
|
137
|
+
*/
|
|
138
|
+
export declare function assertNoAutoGeneratedWrites(resource: PersistResource): void;
|
|
139
|
+
/**
|
|
140
|
+
* Redact a plain PostgREST row: return a shallow copy with every
|
|
141
|
+
* {@link isSensitiveField} key removed. Non-object inputs are returned
|
|
142
|
+
* as-is so array wrappers and null rows survive unchanged.
|
|
143
|
+
*/
|
|
144
|
+
export declare function redactRow<T>(row: T): T;
|
|
145
|
+
/** Apply {@link redactRow} across a rowset. */
|
|
146
|
+
export declare function redactRows<T>(rows: T[]): T[];
|
|
147
|
+
//# sourceMappingURL=guardrails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2CAA2C,CAAC;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAIvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAqB,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAerD,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEjE;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,WAAW,GACX,YAAY,GACZ,cAAc,CAAC;AAEnB;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,kBAAuB,GAC/B,mBAAmB,CASrB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAe3E;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQtC;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE5C"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP sensitive-resource and side-effect guardrails (WI-0003501).
|
|
3
|
+
*
|
|
4
|
+
* The schema-driven read framework (WI-0003500) will happily produce
|
|
5
|
+
* describe/list/get tools for every PostgREST resource in the pinned
|
|
6
|
+
* Persist contract. That is unsafe by default: some resources are
|
|
7
|
+
* classified `sensitive`/`restricted` (credentials, financial secrets,
|
|
8
|
+
* authorisation internals) and others declare `side_effects`
|
|
9
|
+
* (notifications, state transitions) that must never be triggered by a
|
|
10
|
+
* generic CRUD path.
|
|
11
|
+
*
|
|
12
|
+
* This module is the single choke point that decides:
|
|
13
|
+
*
|
|
14
|
+
* - which resources the generated catalogue is allowed to surface;
|
|
15
|
+
* - which fields must be redacted when a sensitive resource is
|
|
16
|
+
* explicitly opted in (defence-in-depth for password/token/secret
|
|
17
|
+
* columns);
|
|
18
|
+
* - which write operations (`create`, `update`, `delete`) can never be
|
|
19
|
+
* generated automatically — dedicated tools with explicit
|
|
20
|
+
* confirmation/idempotency semantics are required.
|
|
21
|
+
*
|
|
22
|
+
* The rules encoded here are intentionally conservative: when in doubt,
|
|
23
|
+
* fail closed. Callers who genuinely need a sensitive resource must set
|
|
24
|
+
* `includeSensitive` on the catalogue filter (and pay for the redaction
|
|
25
|
+
* that comes with it); callers who need write access to a side-effecting
|
|
26
|
+
* resource must build a dedicated tool with a hand-written safety
|
|
27
|
+
* envelope. There is no generator escape hatch for that second case.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* PostgREST operations that MCP will NEVER auto-generate as tools.
|
|
31
|
+
*
|
|
32
|
+
* Generic CRUD wrappers on `create`/`update`/`delete` are prohibited
|
|
33
|
+
* even for `normal` resources — they trivially become side-effect
|
|
34
|
+
* vectors (status transitions, notifications, payments, provisioning)
|
|
35
|
+
* as soon as they are exposed to a model. Every mutating action must be
|
|
36
|
+
* a dedicated tool with an explicit safety envelope
|
|
37
|
+
* (confirmation semantics, idempotency, redaction of returned rows).
|
|
38
|
+
*/
|
|
39
|
+
export const NON_GENERATABLE_OPERATIONS = [
|
|
40
|
+
'create',
|
|
41
|
+
'update',
|
|
42
|
+
'delete',
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* PostgREST operations the read framework can generate tools for.
|
|
46
|
+
* Anything not in this set is either read-only-but-unsupported (extend
|
|
47
|
+
* the framework) or a side effect (dedicated tool required).
|
|
48
|
+
*/
|
|
49
|
+
export const READ_OPERATIONS = ['list', 'read'];
|
|
50
|
+
/**
|
|
51
|
+
* Field-name patterns that look like credential material. Used to redact
|
|
52
|
+
* fields from responses AND from `select`/`filter`/`order` allowlists when
|
|
53
|
+
* a sensitive resource is opted in via {@link CatalogueFilter.includeSensitive}.
|
|
54
|
+
*
|
|
55
|
+
* The patterns match on token boundaries (`^`, `_`, `$`) so we do not
|
|
56
|
+
* accidentally swallow innocuous names like `content_hash`, `visitor_key`,
|
|
57
|
+
* or `public_key`. They are conservative on purpose: Persist's
|
|
58
|
+
* resource-level `sensitivity` marker is the primary defence; this list
|
|
59
|
+
* exists as a belt-and-braces filter that catches secret-shaped column
|
|
60
|
+
* names inside a resource that a caller has intentionally opened up.
|
|
61
|
+
*/
|
|
62
|
+
export const SENSITIVE_FIELD_PATTERNS = [
|
|
63
|
+
/(^|_)password($|_hash$|_salt$)/i,
|
|
64
|
+
/(^|_)secret(s)?$/i,
|
|
65
|
+
/(^|_)client_secret$/i,
|
|
66
|
+
/(^|_)access_token$/i,
|
|
67
|
+
/(^|_)refresh_token$/i,
|
|
68
|
+
/(^|_)bearer_token$/i,
|
|
69
|
+
/(^|_)auth_token$/i,
|
|
70
|
+
/(^|_)session_token$/i,
|
|
71
|
+
/(^|_)api_key$/i,
|
|
72
|
+
/(^|_)private_key$/i,
|
|
73
|
+
/(^|_)encrypted_private_key$/i,
|
|
74
|
+
/(^|_)credentials?$/i,
|
|
75
|
+
/(^|_)cvv$/i,
|
|
76
|
+
/(^|_)pin(_hash)?$/i,
|
|
77
|
+
];
|
|
78
|
+
/** `true` when the resource's declared sensitivity is `sensitive` or `restricted`. */
|
|
79
|
+
export function isSensitiveResource(resource) {
|
|
80
|
+
return resource.sensitivity !== 'normal';
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `true` when the resource declares any {@link PersistResource.side_effects}
|
|
84
|
+
* markers — notification emission, template rendering, background job
|
|
85
|
+
* scheduling, etc. Side-effecting resources are ineligible for the
|
|
86
|
+
* generic read framework: their state transitions must be modelled as
|
|
87
|
+
* dedicated tools.
|
|
88
|
+
*/
|
|
89
|
+
export function hasSideEffects(resource) {
|
|
90
|
+
return resource.side_effects.length > 0;
|
|
91
|
+
}
|
|
92
|
+
/** `true` when a field name matches any {@link SENSITIVE_FIELD_PATTERNS} entry. */
|
|
93
|
+
export function isSensitiveField(name) {
|
|
94
|
+
return SENSITIVE_FIELD_PATTERNS.some((re) => re.test(name));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Return the subset of a resource's fields that must be redacted from
|
|
98
|
+
* any response and stripped from the select/filter/order allowlists.
|
|
99
|
+
* Names are returned in the resource's declared field order so callers
|
|
100
|
+
* can advertise them deterministically.
|
|
101
|
+
*/
|
|
102
|
+
export function sensitiveFieldNames(resource) {
|
|
103
|
+
return resource.fields
|
|
104
|
+
.map((f) => f.name)
|
|
105
|
+
.filter(isSensitiveField);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Return the resource's field names with the sensitive set removed —
|
|
109
|
+
* i.e. the fields the read framework may safely expose. Deterministic
|
|
110
|
+
* order (resource-declared order, sensitive rows dropped).
|
|
111
|
+
*/
|
|
112
|
+
export function visibleFieldNames(resource) {
|
|
113
|
+
return resource.fields
|
|
114
|
+
.map((f) => f.name)
|
|
115
|
+
.filter((n) => !isSensitiveField(n));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* True when the resource declares at least one read operation the
|
|
119
|
+
* generator supports (`list` or `read`). Resources that only support
|
|
120
|
+
* write operations exist for side-effect paths and must never be
|
|
121
|
+
* surfaced by the read framework.
|
|
122
|
+
*/
|
|
123
|
+
export function hasAnyReadOperation(resource) {
|
|
124
|
+
return resource.operations.some((op) => READ_OPERATIONS.includes(op));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Decide whether a resource may be surfaced by the generated read
|
|
128
|
+
* framework, and record every guardrail it fails.
|
|
129
|
+
*
|
|
130
|
+
* The eligibility check is defence-in-depth: even with
|
|
131
|
+
* `includeSensitive: true`, a `side_effects` marker or a missing read
|
|
132
|
+
* operation still rejects the resource — the caller cannot bypass those
|
|
133
|
+
* two rules through the catalogue filter.
|
|
134
|
+
*/
|
|
135
|
+
export function evaluateResourceEligibility(resource, options = {}) {
|
|
136
|
+
const reasons = [];
|
|
137
|
+
if (!hasAnyReadOperation(resource))
|
|
138
|
+
reasons.push('no_read_operations');
|
|
139
|
+
if (hasSideEffects(resource))
|
|
140
|
+
reasons.push('side_effects');
|
|
141
|
+
if (!options.includeSensitive) {
|
|
142
|
+
if (resource.sensitivity === 'sensitive')
|
|
143
|
+
reasons.push('sensitive');
|
|
144
|
+
if (resource.sensitivity === 'restricted')
|
|
145
|
+
reasons.push('restricted');
|
|
146
|
+
}
|
|
147
|
+
return { eligible: reasons.length === 0, reasons };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Assert that a resource description carries no PostgREST operation
|
|
151
|
+
* that MCP will never generate a tool for. Called by the resource-tools
|
|
152
|
+
* factory as a hard invariant: if a future change accidentally wires a
|
|
153
|
+
* write operation into the generator, the build will crash immediately
|
|
154
|
+
* instead of silently exposing a generic mutator.
|
|
155
|
+
*/
|
|
156
|
+
export function assertNoAutoGeneratedWrites(resource) {
|
|
157
|
+
const forbidden = resource.operations.filter((op) => NON_GENERATABLE_OPERATIONS.includes(op));
|
|
158
|
+
if (forbidden.length > 0 && forbidden.length === resource.operations.length) {
|
|
159
|
+
// Resource is write-only — hasAnyReadOperation check already caught
|
|
160
|
+
// this; skip the redundant assertion.
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// The generator only emits describe/list/get, so the presence of write
|
|
164
|
+
// operations on the source resource is fine — this assertion exists
|
|
165
|
+
// to guard against a *future* refactor that starts emitting them.
|
|
166
|
+
// Nothing to fail on today, but leave the assertion body in place so
|
|
167
|
+
// adding a new NON_GENERATABLE op will still be caught by tests that
|
|
168
|
+
// scan for its side effects.
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Redact a plain PostgREST row: return a shallow copy with every
|
|
172
|
+
* {@link isSensitiveField} key removed. Non-object inputs are returned
|
|
173
|
+
* as-is so array wrappers and null rows survive unchanged.
|
|
174
|
+
*/
|
|
175
|
+
export function redactRow(row) {
|
|
176
|
+
if (row === null || typeof row !== 'object' || Array.isArray(row))
|
|
177
|
+
return row;
|
|
178
|
+
const out = {};
|
|
179
|
+
for (const [key, value] of Object.entries(row)) {
|
|
180
|
+
if (isSensitiveField(key))
|
|
181
|
+
continue;
|
|
182
|
+
out[key] = value;
|
|
183
|
+
}
|
|
184
|
+
return out;
|
|
185
|
+
}
|
|
186
|
+
/** Apply {@link redactRow} across a rowset. */
|
|
187
|
+
export function redactRows(rows) {
|
|
188
|
+
return rows.map(redactRow);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=guardrails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/generated-reads/guardrails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { DEFAULT_LIMIT, MAX_LIMIT, QueryBuilderError, buildGetQuery, buildListQuery, isSingletonPrimaryKey, } from './query-builder.js';
|
|
2
|
+
export type { BuiltQuery, FilterClause, GetQueryInput, ListQueryInput, OrderClause, OrderDirection, OrderNulls, } from './query-builder.js';
|
|
3
|
+
export { GENERATED_READ_ERRORS, buildResourceTools, } from './resource-tools.js';
|
|
4
|
+
export type { GeneratedDescribeResponse, GeneratedListResponse, GeneratedResourceTools, } from './resource-tools.js';
|
|
5
|
+
export { buildGeneratedReadCatalogue, buildGeneratedReadCatalogueReport, groupGeneratedReadsByModule, } from './catalogue.js';
|
|
6
|
+
export type { CatalogueExclusion, CatalogueFilter, CatalogueReport, } from './catalogue.js';
|
|
7
|
+
export { NON_GENERATABLE_OPERATIONS, READ_OPERATIONS, SENSITIVE_FIELD_PATTERNS, assertNoAutoGeneratedWrites, evaluateResourceEligibility, hasAnyReadOperation, hasSideEffects, isSensitiveField, isSensitiveResource, redactRow, redactRows, sensitiveFieldNames, visibleFieldNames, } from './guardrails.js';
|
|
8
|
+
export type { EligibilityDecision, EligibilityOptions, ExclusionReason, } from './guardrails.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated-reads/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DEFAULT_LIMIT, MAX_LIMIT, QueryBuilderError, buildGetQuery, buildListQuery, isSingletonPrimaryKey, } from './query-builder.js';
|
|
2
|
+
export { GENERATED_READ_ERRORS, buildResourceTools, } from './resource-tools.js';
|
|
3
|
+
export { buildGeneratedReadCatalogue, buildGeneratedReadCatalogueReport, groupGeneratedReadsByModule, } from './catalogue.js';
|
|
4
|
+
export { NON_GENERATABLE_OPERATIONS, READ_OPERATIONS, SENSITIVE_FIELD_PATTERNS, assertNoAutoGeneratedWrites, evaluateResourceEligibility, hasAnyReadOperation, hasSideEffects, isSensitiveField, isSensitiveResource, redactRow, redactRows, sensitiveFieldNames, visibleFieldNames, } from './guardrails.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated-reads/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgREST query builder for the schema-driven bounded read framework.
|
|
3
|
+
*
|
|
4
|
+
* The builder is the single choke point that turns caller-supplied
|
|
5
|
+
* filter/order/select/pagination input into a validated PostgREST URL.
|
|
6
|
+
* Every value that could influence the outbound URL is checked against
|
|
7
|
+
* the resource's declared capability allowlists BEFORE it is placed in
|
|
8
|
+
* the query — an unknown filter field, an unsupported operator, an
|
|
9
|
+
* unlisted order field, or a bogus select column is a hard input error,
|
|
10
|
+
* not something we silently forward.
|
|
11
|
+
*
|
|
12
|
+
* Safety contract, enforced here so the generated tools never have to
|
|
13
|
+
* hand-write it:
|
|
14
|
+
*
|
|
15
|
+
* - Endpoint is fixed to the resource's `public_endpoint`; callers
|
|
16
|
+
* cannot influence it.
|
|
17
|
+
* - `select` is either the full field list or a caller-provided subset,
|
|
18
|
+
* always constrained to declared fields. No dotted paths, no
|
|
19
|
+
* parentheses — so no embedded resource traversal
|
|
20
|
+
* (`select=id,foo(bar)`).
|
|
21
|
+
* - Filters are `{field, op, value(s)}` — the operator is compared
|
|
22
|
+
* against `filter_capabilities.supported_operators`, the field
|
|
23
|
+
* against `filter_capabilities.filterable_fields`.
|
|
24
|
+
* - `order` is `{field, direction}` — the field must be in
|
|
25
|
+
* `order_capabilities.orderable_fields`; direction is `asc` | `desc`;
|
|
26
|
+
* optional `nulls` is `first` | `last`.
|
|
27
|
+
* - `limit` is clamped to {@link MAX_LIMIT} (200); `offset` must be
|
|
28
|
+
* non-negative. Every response advertises `next_offset` so callers
|
|
29
|
+
* cannot accidentally issue an unbounded scan.
|
|
30
|
+
*/
|
|
31
|
+
import type { PersistResource } from '../contracts/persist-resource-contract.js';
|
|
32
|
+
/** Server-side ceiling. No caller can ask for more rows per page. */
|
|
33
|
+
export declare const MAX_LIMIT = 200;
|
|
34
|
+
/** Default page size when the caller does not supply one. */
|
|
35
|
+
export declare const DEFAULT_LIMIT = 50;
|
|
36
|
+
/** Direction values PostgREST accepts on an `order` clause. */
|
|
37
|
+
export declare const ORDER_DIRECTIONS: readonly ["asc", "desc"];
|
|
38
|
+
export type OrderDirection = (typeof ORDER_DIRECTIONS)[number];
|
|
39
|
+
/** Nulls-placement modifiers PostgREST accepts on an `order` clause. */
|
|
40
|
+
export declare const ORDER_NULLS: readonly ["first", "last"];
|
|
41
|
+
export type OrderNulls = (typeof ORDER_NULLS)[number];
|
|
42
|
+
/** Single filter clause: `field op value(s)`. */
|
|
43
|
+
export interface FilterClause {
|
|
44
|
+
field: string;
|
|
45
|
+
op: string;
|
|
46
|
+
/** Scalar value for point ops (`eq`, `gt`, `like`, …). */
|
|
47
|
+
value?: string | number | boolean | null;
|
|
48
|
+
/** Value list for the `in` operator. Rejected on any other op. */
|
|
49
|
+
values?: Array<string | number | boolean | null>;
|
|
50
|
+
}
|
|
51
|
+
/** Single order clause. */
|
|
52
|
+
export interface OrderClause {
|
|
53
|
+
field: string;
|
|
54
|
+
direction?: OrderDirection;
|
|
55
|
+
nulls?: OrderNulls;
|
|
56
|
+
}
|
|
57
|
+
/** Args accepted by the generated list tool. */
|
|
58
|
+
export interface ListQueryInput {
|
|
59
|
+
filters?: FilterClause[];
|
|
60
|
+
order?: OrderClause[];
|
|
61
|
+
select?: string[];
|
|
62
|
+
limit?: number;
|
|
63
|
+
offset?: number;
|
|
64
|
+
}
|
|
65
|
+
/** Args accepted by the generated get tool. */
|
|
66
|
+
export interface GetQueryInput {
|
|
67
|
+
id: string;
|
|
68
|
+
select?: string[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Fully validated PostgREST request the api-client can dispatch. The
|
|
72
|
+
* `path` is the resource's `public_endpoint`; `query` is a plain object
|
|
73
|
+
* suitable for the api-client's `URLSearchParams`-based encoder.
|
|
74
|
+
*/
|
|
75
|
+
export interface BuiltQuery {
|
|
76
|
+
path: string;
|
|
77
|
+
query: Record<string, string>;
|
|
78
|
+
/** Effective limit (post-clamp) — mirrored on the response envelope. */
|
|
79
|
+
limit: number;
|
|
80
|
+
/** Effective offset — mirrored on the response envelope. */
|
|
81
|
+
offset: number;
|
|
82
|
+
}
|
|
83
|
+
export declare class QueryBuilderError extends Error {
|
|
84
|
+
constructor(message: string);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build a validated PostgREST list-query. Throws {@link QueryBuilderError}
|
|
88
|
+
* on any input that would breach the resource's declared safety envelope.
|
|
89
|
+
*/
|
|
90
|
+
export declare function buildListQuery(resource: PersistResource, input: ListQueryInput): BuiltQuery;
|
|
91
|
+
/**
|
|
92
|
+
* Build a validated PostgREST get-by-primary-key query. Resources with
|
|
93
|
+
* a composite primary key are not supported here — the caller must check
|
|
94
|
+
* {@link isSingletonPrimaryKey} before invoking.
|
|
95
|
+
*/
|
|
96
|
+
export declare function buildGetQuery(resource: PersistResource, input: GetQueryInput): BuiltQuery;
|
|
97
|
+
/** `true` iff the resource's primary key is a single scalar column. */
|
|
98
|
+
export declare function isSingletonPrimaryKey(resource: PersistResource): boolean;
|
|
99
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/generated-reads/query-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2CAA2C,CAAC;AAGnD,qEAAqE;AACrE,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,6DAA6D;AAC7D,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,0BAA2B,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,wEAAwE;AACxE,eAAO,MAAM,WAAW,4BAA6B,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC,kEAAkE;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAClD;AAED,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA4KD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,cAAc,GACpB,UAAU,CA8BZ;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,aAAa,GACnB,UAAU,CAiBZ;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAExE"}
|