@superblocksteam/mcp-server 2.0.0-SNAPSHOT.06fa243c132fe1fb
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/LICENSE.txt +87 -0
- package/README.md +266 -0
- package/dist/application/commit-history.d.ts +27 -0
- package/dist/application/commit-history.d.ts.map +1 -0
- package/dist/application/commit-history.js +36 -0
- package/dist/application/commit-history.js.map +1 -0
- package/dist/application/directory-tree.d.ts +11 -0
- package/dist/application/directory-tree.d.ts.map +1 -0
- package/dist/application/directory-tree.js +37 -0
- package/dist/application/directory-tree.js.map +1 -0
- package/dist/application/materialize-application.d.ts +16 -0
- package/dist/application/materialize-application.d.ts.map +1 -0
- package/dist/application/materialize-application.js +47 -0
- package/dist/application/materialize-application.js.map +1 -0
- package/dist/application/summary.d.ts +25 -0
- package/dist/application/summary.d.ts.map +1 -0
- package/dist/application/summary.js +42 -0
- package/dist/application/summary.js.map +1 -0
- package/dist/auth/commands.d.ts +3 -0
- package/dist/auth/commands.d.ts.map +1 -0
- package/dist/auth/commands.js +71 -0
- package/dist/auth/commands.js.map +1 -0
- package/dist/auth/context.d.ts +7 -0
- package/dist/auth/context.d.ts.map +1 -0
- package/dist/auth/context.js +9 -0
- package/dist/auth/context.js.map +1 -0
- package/dist/auth/login.d.ts +10 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +48 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/resolve-auth.d.ts +15 -0
- package/dist/auth/resolve-auth.d.ts.map +1 -0
- package/dist/auth/resolve-auth.js +75 -0
- package/dist/auth/resolve-auth.js.map +1 -0
- package/dist/auth/resolve-current-organization.d.ts +6 -0
- package/dist/auth/resolve-current-organization.d.ts.map +1 -0
- package/dist/auth/resolve-current-organization.js +15 -0
- package/dist/auth/resolve-current-organization.js.map +1 -0
- package/dist/auth/store.d.ts +11 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +63 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/entitlement-wrapper.d.ts +3 -0
- package/dist/entitlement-wrapper.d.ts.map +1 -0
- package/dist/entitlement-wrapper.js +49 -0
- package/dist/entitlement-wrapper.js.map +1 -0
- package/dist/entitlement.d.ts +55 -0
- package/dist/entitlement.d.ts.map +1 -0
- package/dist/entitlement.js +246 -0
- package/dist/entitlement.js.map +1 -0
- package/dist/http.d.ts +9 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +299 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonrpc.d.ts +25 -0
- package/dist/jsonrpc.d.ts.map +1 -0
- package/dist/jsonrpc.js +102 -0
- package/dist/jsonrpc.js.map +1 -0
- package/dist/profile.d.ts +3 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +7 -0
- package/dist/profile.js.map +1 -0
- package/dist/sdk/create-sdk.d.ts +3 -0
- package/dist/sdk/create-sdk.d.ts.map +1 -0
- package/dist/sdk/create-sdk.js +6 -0
- package/dist/sdk/create-sdk.js.map +1 -0
- package/dist/setup/commands.d.ts +7 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +58 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/index.d.ts +5 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +3 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/setup-config.d.ts +27 -0
- package/dist/setup/setup-config.d.ts.map +1 -0
- package/dist/setup/setup-config.js +100 -0
- package/dist/setup/setup-config.js.map +1 -0
- package/dist/target/resolve-app-target.d.ts +102 -0
- package/dist/target/resolve-app-target.d.ts.map +1 -0
- package/dist/target/resolve-app-target.js +176 -0
- package/dist/target/resolve-app-target.js.map +1 -0
- package/dist/target/resolve-base-url-target.d.ts +132 -0
- package/dist/target/resolve-base-url-target.d.ts.map +1 -0
- package/dist/target/resolve-base-url-target.js +126 -0
- package/dist/target/resolve-base-url-target.js.map +1 -0
- package/dist/target/resolve-organization-target.d.ts +23 -0
- package/dist/target/resolve-organization-target.d.ts.map +1 -0
- package/dist/target/resolve-organization-target.js +50 -0
- package/dist/target/resolve-organization-target.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +9 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/tool-call-result.d.ts +12 -0
- package/dist/tool-call-result.d.ts.map +1 -0
- package/dist/tool-call-result.js +32 -0
- package/dist/tool-call-result.js.map +1 -0
- package/dist/tools/aggregate-audit-events.d.ts +3 -0
- package/dist/tools/aggregate-audit-events.d.ts.map +1 -0
- package/dist/tools/aggregate-audit-events.js +60 -0
- package/dist/tools/aggregate-audit-events.js.map +1 -0
- package/dist/tools/assign-builder-seat.d.ts +3 -0
- package/dist/tools/assign-builder-seat.d.ts.map +1 -0
- package/dist/tools/assign-builder-seat.js +45 -0
- package/dist/tools/assign-builder-seat.js.map +1 -0
- package/dist/tools/billing-usage-limits.d.ts +5 -0
- package/dist/tools/billing-usage-limits.d.ts.map +1 -0
- package/dist/tools/billing-usage-limits.js +191 -0
- package/dist/tools/billing-usage-limits.js.map +1 -0
- package/dist/tools/checkout-application.d.ts +3 -0
- package/dist/tools/checkout-application.d.ts.map +1 -0
- package/dist/tools/checkout-application.js +65 -0
- package/dist/tools/checkout-application.js.map +1 -0
- package/dist/tools/create-folder.d.ts +3 -0
- package/dist/tools/create-folder.d.ts.map +1 -0
- package/dist/tools/create-folder.js +39 -0
- package/dist/tools/create-folder.js.map +1 -0
- package/dist/tools/create-integration.d.ts +10 -0
- package/dist/tools/create-integration.d.ts.map +1 -0
- package/dist/tools/create-integration.js +93 -0
- package/dist/tools/create-integration.js.map +1 -0
- package/dist/tools/datasource-configuration-by-type.schema.json +2619 -0
- package/dist/tools/deactivate-user.d.ts +3 -0
- package/dist/tools/deactivate-user.d.ts.map +1 -0
- package/dist/tools/deactivate-user.js +95 -0
- package/dist/tools/deactivate-user.js.map +1 -0
- package/dist/tools/delete-folder.d.ts +3 -0
- package/dist/tools/delete-folder.d.ts.map +1 -0
- package/dist/tools/delete-folder.js +42 -0
- package/dist/tools/delete-folder.js.map +1 -0
- package/dist/tools/delete-group-org-role.d.ts +3 -0
- package/dist/tools/delete-group-org-role.d.ts.map +1 -0
- package/dist/tools/delete-group-org-role.js +54 -0
- package/dist/tools/delete-group-org-role.js.map +1 -0
- package/dist/tools/delete-integration.d.ts +3 -0
- package/dist/tools/delete-integration.d.ts.map +1 -0
- package/dist/tools/delete-integration.js +39 -0
- package/dist/tools/delete-integration.js.map +1 -0
- package/dist/tools/deploy-application.d.ts +3 -0
- package/dist/tools/deploy-application.d.ts.map +1 -0
- package/dist/tools/deploy-application.js +142 -0
- package/dist/tools/deploy-application.js.map +1 -0
- package/dist/tools/find-apps-by-integration.d.ts +3 -0
- package/dist/tools/find-apps-by-integration.d.ts.map +1 -0
- package/dist/tools/find-apps-by-integration.js +135 -0
- package/dist/tools/find-apps-by-integration.js.map +1 -0
- package/dist/tools/find-apps-by-package.d.ts +3 -0
- package/dist/tools/find-apps-by-package.d.ts.map +1 -0
- package/dist/tools/find-apps-by-package.js +88 -0
- package/dist/tools/find-apps-by-package.js.map +1 -0
- package/dist/tools/get-app-sbom.d.ts +3 -0
- package/dist/tools/get-app-sbom.d.ts.map +1 -0
- package/dist/tools/get-app-sbom.js +54 -0
- package/dist/tools/get-app-sbom.js.map +1 -0
- package/dist/tools/get-application-access.d.ts +3 -0
- package/dist/tools/get-application-access.d.ts.map +1 -0
- package/dist/tools/get-application-access.js +35 -0
- package/dist/tools/get-application-access.js.map +1 -0
- package/dist/tools/get-application-commit-history.d.ts +3 -0
- package/dist/tools/get-application-commit-history.d.ts.map +1 -0
- package/dist/tools/get-application-commit-history.js +55 -0
- package/dist/tools/get-application-commit-history.js.map +1 -0
- package/dist/tools/get-application-deployment-history.d.ts +3 -0
- package/dist/tools/get-application-deployment-history.d.ts.map +1 -0
- package/dist/tools/get-application-deployment-history.js +45 -0
- package/dist/tools/get-application-deployment-history.js.map +1 -0
- package/dist/tools/get-application-policy-run-findings.d.ts +3 -0
- package/dist/tools/get-application-policy-run-findings.d.ts.map +1 -0
- package/dist/tools/get-application-policy-run-findings.js +62 -0
- package/dist/tools/get-application-policy-run-findings.js.map +1 -0
- package/dist/tools/get-application-publish-pipeline.d.ts +3 -0
- package/dist/tools/get-application-publish-pipeline.d.ts.map +1 -0
- package/dist/tools/get-application-publish-pipeline.js +47 -0
- package/dist/tools/get-application-publish-pipeline.js.map +1 -0
- package/dist/tools/get-application-publish-readiness.d.ts +3 -0
- package/dist/tools/get-application-publish-readiness.d.ts.map +1 -0
- package/dist/tools/get-application-publish-readiness.js +47 -0
- package/dist/tools/get-application-publish-readiness.js.map +1 -0
- package/dist/tools/get-application-structure.d.ts +3 -0
- package/dist/tools/get-application-structure.d.ts.map +1 -0
- package/dist/tools/get-application-structure.js +98 -0
- package/dist/tools/get-application-structure.js.map +1 -0
- package/dist/tools/get-application-summary.d.ts +3 -0
- package/dist/tools/get-application-summary.d.ts.map +1 -0
- package/dist/tools/get-application-summary.js +46 -0
- package/dist/tools/get-application-summary.js.map +1 -0
- package/dist/tools/get-audit-events.d.ts +3 -0
- package/dist/tools/get-audit-events.d.ts.map +1 -0
- package/dist/tools/get-audit-events.js +55 -0
- package/dist/tools/get-audit-events.js.map +1 -0
- package/dist/tools/get-auth-status.d.ts +3 -0
- package/dist/tools/get-auth-status.d.ts.map +1 -0
- package/dist/tools/get-auth-status.js +34 -0
- package/dist/tools/get-auth-status.js.map +1 -0
- package/dist/tools/get-billing-plan-summary.d.ts +3 -0
- package/dist/tools/get-billing-plan-summary.d.ts.map +1 -0
- package/dist/tools/get-billing-plan-summary.js +32 -0
- package/dist/tools/get-billing-plan-summary.js.map +1 -0
- package/dist/tools/get-billing-usage-daily.d.ts +3 -0
- package/dist/tools/get-billing-usage-daily.d.ts.map +1 -0
- package/dist/tools/get-billing-usage-daily.js +37 -0
- package/dist/tools/get-billing-usage-daily.js.map +1 -0
- package/dist/tools/get-billing-usage-records.d.ts +3 -0
- package/dist/tools/get-billing-usage-records.d.ts.map +1 -0
- package/dist/tools/get-billing-usage-records.js +246 -0
- package/dist/tools/get-billing-usage-records.js.map +1 -0
- package/dist/tools/get-chat-messages.d.ts +3 -0
- package/dist/tools/get-chat-messages.d.ts.map +1 -0
- package/dist/tools/get-chat-messages.js +51 -0
- package/dist/tools/get-chat-messages.js.map +1 -0
- package/dist/tools/get-current-user.d.ts +3 -0
- package/dist/tools/get-current-user.d.ts.map +1 -0
- package/dist/tools/get-current-user.js +66 -0
- package/dist/tools/get-current-user.js.map +1 -0
- package/dist/tools/get-dependency-scan-summary.d.ts +3 -0
- package/dist/tools/get-dependency-scan-summary.d.ts.map +1 -0
- package/dist/tools/get-dependency-scan-summary.js +42 -0
- package/dist/tools/get-dependency-scan-summary.js.map +1 -0
- package/dist/tools/get-integration-access.d.ts +3 -0
- package/dist/tools/get-integration-access.d.ts.map +1 -0
- package/dist/tools/get-integration-access.js +41 -0
- package/dist/tools/get-integration-access.js.map +1 -0
- package/dist/tools/get-integration-config-schema.d.ts +3 -0
- package/dist/tools/get-integration-config-schema.d.ts.map +1 -0
- package/dist/tools/get-integration-config-schema.js +34 -0
- package/dist/tools/get-integration-config-schema.js.map +1 -0
- package/dist/tools/get-integration.d.ts +3 -0
- package/dist/tools/get-integration.d.ts.map +1 -0
- package/dist/tools/get-integration.js +39 -0
- package/dist/tools/get-integration.js.map +1 -0
- package/dist/tools/get-job-access.d.ts +3 -0
- package/dist/tools/get-job-access.d.ts.map +1 -0
- package/dist/tools/get-job-access.js +41 -0
- package/dist/tools/get-job-access.js.map +1 -0
- package/dist/tools/get-knowledge.d.ts +3 -0
- package/dist/tools/get-knowledge.d.ts.map +1 -0
- package/dist/tools/get-knowledge.js +48 -0
- package/dist/tools/get-knowledge.js.map +1 -0
- package/dist/tools/get-organization-summary.d.ts +3 -0
- package/dist/tools/get-organization-summary.d.ts.map +1 -0
- package/dist/tools/get-organization-summary.js +48 -0
- package/dist/tools/get-organization-summary.js.map +1 -0
- package/dist/tools/get-review-policy-run-report.d.ts +3 -0
- package/dist/tools/get-review-policy-run-report.d.ts.map +1 -0
- package/dist/tools/get-review-policy-run-report.js +60 -0
- package/dist/tools/get-review-policy-run-report.js.map +1 -0
- package/dist/tools/get-review-policy-summary.d.ts +3 -0
- package/dist/tools/get-review-policy-summary.d.ts.map +1 -0
- package/dist/tools/get-review-policy-summary.js +47 -0
- package/dist/tools/get-review-policy-summary.js.map +1 -0
- package/dist/tools/get-review-policy.d.ts +3 -0
- package/dist/tools/get-review-policy.d.ts.map +1 -0
- package/dist/tools/get-review-policy.js +43 -0
- package/dist/tools/get-review-policy.js.map +1 -0
- package/dist/tools/get-user-permissions.d.ts +3 -0
- package/dist/tools/get-user-permissions.d.ts.map +1 -0
- package/dist/tools/get-user-permissions.js +68 -0
- package/dist/tools/get-user-permissions.js.map +1 -0
- package/dist/tools/get-workflow-access.d.ts +3 -0
- package/dist/tools/get-workflow-access.d.ts.map +1 -0
- package/dist/tools/get-workflow-access.js +41 -0
- package/dist/tools/get-workflow-access.js.map +1 -0
- package/dist/tools/grant-resource-access.d.ts +3 -0
- package/dist/tools/grant-resource-access.d.ts.map +1 -0
- package/dist/tools/grant-resource-access.js +64 -0
- package/dist/tools/grant-resource-access.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +148 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integration-mention.d.ts +2 -0
- package/dist/tools/integration-mention.d.ts.map +1 -0
- package/dist/tools/integration-mention.js +8 -0
- package/dist/tools/integration-mention.js.map +1 -0
- package/dist/tools/list-applications.d.ts +3 -0
- package/dist/tools/list-applications.d.ts.map +1 -0
- package/dist/tools/list-applications.js +115 -0
- package/dist/tools/list-applications.js.map +1 -0
- package/dist/tools/list-audit-event-types.d.ts +3 -0
- package/dist/tools/list-audit-event-types.d.ts.map +1 -0
- package/dist/tools/list-audit-event-types.js +41 -0
- package/dist/tools/list-audit-event-types.js.map +1 -0
- package/dist/tools/list-builder-seats.d.ts +3 -0
- package/dist/tools/list-builder-seats.d.ts.map +1 -0
- package/dist/tools/list-builder-seats.js +42 -0
- package/dist/tools/list-builder-seats.js.map +1 -0
- package/dist/tools/list-dependency-scan-findings.d.ts +3 -0
- package/dist/tools/list-dependency-scan-findings.d.ts.map +1 -0
- package/dist/tools/list-dependency-scan-findings.js +69 -0
- package/dist/tools/list-dependency-scan-findings.js.map +1 -0
- package/dist/tools/list-distinct-packages-in-org.d.ts +3 -0
- package/dist/tools/list-distinct-packages-in-org.d.ts.map +1 -0
- package/dist/tools/list-distinct-packages-in-org.js +117 -0
- package/dist/tools/list-distinct-packages-in-org.js.map +1 -0
- package/dist/tools/list-folders.d.ts +3 -0
- package/dist/tools/list-folders.d.ts.map +1 -0
- package/dist/tools/list-folders.js +39 -0
- package/dist/tools/list-folders.js.map +1 -0
- package/dist/tools/list-integrations.d.ts +3 -0
- package/dist/tools/list-integrations.d.ts.map +1 -0
- package/dist/tools/list-integrations.js +69 -0
- package/dist/tools/list-integrations.js.map +1 -0
- package/dist/tools/list-knowledge.d.ts +3 -0
- package/dist/tools/list-knowledge.d.ts.map +1 -0
- package/dist/tools/list-knowledge.js +56 -0
- package/dist/tools/list-knowledge.js.map +1 -0
- package/dist/tools/list-organization-agents.d.ts +3 -0
- package/dist/tools/list-organization-agents.d.ts.map +1 -0
- package/dist/tools/list-organization-agents.js +49 -0
- package/dist/tools/list-organization-agents.js.map +1 -0
- package/dist/tools/list-packages-by-app.d.ts +3 -0
- package/dist/tools/list-packages-by-app.d.ts.map +1 -0
- package/dist/tools/list-packages-by-app.js +97 -0
- package/dist/tools/list-packages-by-app.js.map +1 -0
- package/dist/tools/list-rbac-assignments.d.ts +3 -0
- package/dist/tools/list-rbac-assignments.d.ts.map +1 -0
- package/dist/tools/list-rbac-assignments.js +57 -0
- package/dist/tools/list-rbac-assignments.js.map +1 -0
- package/dist/tools/list-review-policies.d.ts +3 -0
- package/dist/tools/list-review-policies.d.ts.map +1 -0
- package/dist/tools/list-review-policies.js +42 -0
- package/dist/tools/list-review-policies.js.map +1 -0
- package/dist/tools/list-review-policy-runs.d.ts +3 -0
- package/dist/tools/list-review-policy-runs.d.ts.map +1 -0
- package/dist/tools/list-review-policy-runs.js +80 -0
- package/dist/tools/list-review-policy-runs.js.map +1 -0
- package/dist/tools/list-roles.d.ts +3 -0
- package/dist/tools/list-roles.d.ts.map +1 -0
- package/dist/tools/list-roles.js +61 -0
- package/dist/tools/list-roles.js.map +1 -0
- package/dist/tools/list-users-by-role.d.ts +3 -0
- package/dist/tools/list-users-by-role.d.ts.map +1 -0
- package/dist/tools/list-users-by-role.js +74 -0
- package/dist/tools/list-users-by-role.js.map +1 -0
- package/dist/tools/list-users.d.ts +3 -0
- package/dist/tools/list-users.d.ts.map +1 -0
- package/dist/tools/list-users.js +69 -0
- package/dist/tools/list-users.js.map +1 -0
- package/dist/tools/lookup-package-vulnerabilities.d.ts +3 -0
- package/dist/tools/lookup-package-vulnerabilities.d.ts.map +1 -0
- package/dist/tools/lookup-package-vulnerabilities.js +57 -0
- package/dist/tools/lookup-package-vulnerabilities.js.map +1 -0
- package/dist/tools/map-rbac-assignments.d.ts +35 -0
- package/dist/tools/map-rbac-assignments.d.ts.map +1 -0
- package/dist/tools/map-rbac-assignments.js +22 -0
- package/dist/tools/map-rbac-assignments.js.map +1 -0
- package/dist/tools/org-user-types.d.ts +16 -0
- package/dist/tools/org-user-types.d.ts.map +1 -0
- package/dist/tools/org-user-types.js +2 -0
- package/dist/tools/org-user-types.js.map +1 -0
- package/dist/tools/pagination.d.ts +14 -0
- package/dist/tools/pagination.d.ts.map +1 -0
- package/dist/tools/pagination.js +21 -0
- package/dist/tools/pagination.js.map +1 -0
- package/dist/tools/plugin-configuration-schema.d.ts +3 -0
- package/dist/tools/plugin-configuration-schema.d.ts.map +1 -0
- package/dist/tools/plugin-configuration-schema.js +171 -0
- package/dist/tools/plugin-configuration-schema.js.map +1 -0
- package/dist/tools/registry.d.ts +36 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +32 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/revoke-resource-access.d.ts +3 -0
- package/dist/tools/revoke-resource-access.d.ts.map +1 -0
- package/dist/tools/revoke-resource-access.js +39 -0
- package/dist/tools/revoke-resource-access.js.map +1 -0
- package/dist/tools/schemas.d.ts +147 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +1324 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/server-api.d.ts +33 -0
- package/dist/tools/server-api.d.ts.map +1 -0
- package/dist/tools/server-api.js +96 -0
- package/dist/tools/server-api.js.map +1 -0
- package/dist/tools/unassign-builder-seat.d.ts +3 -0
- package/dist/tools/unassign-builder-seat.d.ts.map +1 -0
- package/dist/tools/unassign-builder-seat.js +44 -0
- package/dist/tools/unassign-builder-seat.js.map +1 -0
- package/dist/tools/undeploy-application.d.ts +3 -0
- package/dist/tools/undeploy-application.d.ts.map +1 -0
- package/dist/tools/undeploy-application.js +56 -0
- package/dist/tools/undeploy-application.js.map +1 -0
- package/dist/tools/update-folder.d.ts +3 -0
- package/dist/tools/update-folder.d.ts.map +1 -0
- package/dist/tools/update-folder.js +42 -0
- package/dist/tools/update-folder.js.map +1 -0
- package/dist/tools/update-group-org-role.d.ts +3 -0
- package/dist/tools/update-group-org-role.d.ts.map +1 -0
- package/dist/tools/update-group-org-role.js +55 -0
- package/dist/tools/update-group-org-role.js.map +1 -0
- package/dist/tools/update-integration.d.ts +3 -0
- package/dist/tools/update-integration.d.ts.map +1 -0
- package/dist/tools/update-integration.js +40 -0
- package/dist/tools/update-integration.js.map +1 -0
- package/dist/tools/update-resource-access.d.ts +3 -0
- package/dist/tools/update-resource-access.d.ts.map +1 -0
- package/dist/tools/update-resource-access.js +44 -0
- package/dist/tools/update-resource-access.js.map +1 -0
- package/dist/tools/update-user-org-role.d.ts +3 -0
- package/dist/tools/update-user-org-role.d.ts.map +1 -0
- package/dist/tools/update-user-org-role.js +55 -0
- package/dist/tools/update-user-org-role.js.map +1 -0
- package/dist/tools/validation.d.ts +3 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +10 -0
- package/dist/tools/validation.js.map +1 -0
- package/dist/urls.d.ts +4 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.js +33 -0
- package/dist/urls.js.map +1 -0
- package/dist/utils/args.d.ts +3 -0
- package/dist/utils/args.d.ts.map +1 -0
- package/dist/utils/args.js +15 -0
- package/dist/utils/args.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { ServerApiError, callServerApi } from "./tools/server-api.js";
|
|
3
|
+
const ENTITLED_PLANS = new Set(["ENTERPRISE", "POC"]);
|
|
4
|
+
const PLAN_PATH = "api/v1/public/users/me";
|
|
5
|
+
/**
|
|
6
|
+
* How long a plan verdict is trusted before the API is asked again.
|
|
7
|
+
*
|
|
8
|
+
* A plan is not something that changes between two tool calls, and an upgrade
|
|
9
|
+
* or downgrade landing within a minute is well inside what anyone notices.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_CACHE_TTL_MS = 60_000;
|
|
12
|
+
/**
|
|
13
|
+
* How long one caller waits for a plan read before giving up on this call.
|
|
14
|
+
*
|
|
15
|
+
* This read gates every Admin tool call, so it must fail long before the
|
|
16
|
+
* caller does. It had no bound at all, which is how one wedged route took the
|
|
17
|
+
* whole Admin surface down with it (ENG-5806).
|
|
18
|
+
*
|
|
19
|
+
* The read is *not* cancelled at this point — see {@link DEFAULT_READ_TIMEOUT_MS}.
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_CALLER_WAIT_MS = 10_000;
|
|
22
|
+
/**
|
|
23
|
+
* How long the read itself is given, which is deliberately longer than the
|
|
24
|
+
* caller waits.
|
|
25
|
+
*
|
|
26
|
+
* Aborting the read at the caller's deadline would mean an endpoint that
|
|
27
|
+
* answers slowly rather than never can never fill the cache: every read is
|
|
28
|
+
* killed just short of succeeding, so the breaker stays open and a recoverable
|
|
29
|
+
* slowdown becomes a permanent outage — strictly worse than the unbounded read
|
|
30
|
+
* this replaced, which at least eventually returned. ENG-5805 measures ~20s on
|
|
31
|
+
* the endpoint this gates on, which is exactly that window.
|
|
32
|
+
*
|
|
33
|
+
* So the caller stops waiting at 10s and the read keeps going, filling the
|
|
34
|
+
* cache for whoever calls next. Matches `DEFAULT_IDENTITY_TIMEOUT_MS` on the
|
|
35
|
+
* Builder side, for the same reason.
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_READ_TIMEOUT_MS = 30_000;
|
|
38
|
+
/** How long later calls fail fast after a plan read failed. */
|
|
39
|
+
const DEFAULT_COOLDOWN_MS = 30_000;
|
|
40
|
+
/**
|
|
41
|
+
* Whether a failed plan read means the control plane is unhealthy, rather than
|
|
42
|
+
* that this one credential was rejected.
|
|
43
|
+
*
|
|
44
|
+
* The Builder side has always drawn this line (`identityEndpointUnhealthy`);
|
|
45
|
+
* this side treated every failure as an outage, so a single expired token
|
|
46
|
+
* opened the breaker and every *other* caller then failed fast for the
|
|
47
|
+
* cooldown. A 4xx is a definite answer about one caller and must not do that.
|
|
48
|
+
*
|
|
49
|
+
* 429 is the exception, as on the Builder side: a shared rate limit is about
|
|
50
|
+
* the route's capacity, not about this credential.
|
|
51
|
+
*/
|
|
52
|
+
function planEndpointUnhealthy(error) {
|
|
53
|
+
return !(error instanceof ServerApiError &&
|
|
54
|
+
error.status < 500 &&
|
|
55
|
+
error.status !== 429);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A deadline a caller can stop waiting at without cancelling what it waits on.
|
|
59
|
+
*/
|
|
60
|
+
function callerDeadline(ms) {
|
|
61
|
+
let timer;
|
|
62
|
+
const expired = new Promise((_resolve, reject) => {
|
|
63
|
+
timer = setTimeout(() => reject(new PlanCheckUnavailableError()), ms);
|
|
64
|
+
});
|
|
65
|
+
return { cancel: () => clearTimeout(timer), expired };
|
|
66
|
+
}
|
|
67
|
+
export class EntitlementError extends Error {
|
|
68
|
+
plan;
|
|
69
|
+
constructor(plan) {
|
|
70
|
+
const planLabel = plan ?? "unknown";
|
|
71
|
+
super(`The Superblocks MCP server requires an Enterprise or POC plan. ` +
|
|
72
|
+
`Your organization is on the ${planLabel} plan. ` +
|
|
73
|
+
`Contact sales to upgrade: https://www.superblocks.com/contact-sales`);
|
|
74
|
+
this.name = "EntitlementError";
|
|
75
|
+
this.plan = plan;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The plan could not be read, so nothing is known about the entitlement.
|
|
80
|
+
*
|
|
81
|
+
* Distinct from {@link EntitlementError}, which is a definite answer that the
|
|
82
|
+
* org is on the wrong plan. This one means try again; that one means upgrade.
|
|
83
|
+
*/
|
|
84
|
+
export class PlanCheckUnavailableError extends Error {
|
|
85
|
+
constructor(cause) {
|
|
86
|
+
const detail = cause instanceof Error && cause.message ? `: ${cause.message}` : "";
|
|
87
|
+
super(`Superblocks could not confirm your organization's plan${detail}. ` +
|
|
88
|
+
`This is usually transient - try again in a moment.`);
|
|
89
|
+
this.name = "PlanCheckUnavailableError";
|
|
90
|
+
this.cause = cause;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Reads the plan out of a `/users/me` envelope.
|
|
95
|
+
*
|
|
96
|
+
* Returns `{ readable: false }` when the response is not shaped like that
|
|
97
|
+
* envelope at all, which is a degraded or truncated answer rather than a
|
|
98
|
+
* statement about billing. Caching that as a definite verdict told the caller
|
|
99
|
+
* to upgrade their plan for 60s because the control plane was unwell.
|
|
100
|
+
*
|
|
101
|
+
* A well-formed envelope whose org genuinely carries no plan *is* a definite
|
|
102
|
+
* answer, and stays one.
|
|
103
|
+
*/
|
|
104
|
+
function readPlanFromEnvelope(data) {
|
|
105
|
+
if (data === null || typeof data !== "object") {
|
|
106
|
+
return { readable: false };
|
|
107
|
+
}
|
|
108
|
+
const organizations = data.organizations;
|
|
109
|
+
// No `organizations` array at all is not a `/users/me` answer. An *empty*
|
|
110
|
+
// one is: that caller is genuinely in no organization.
|
|
111
|
+
if (!Array.isArray(organizations)) {
|
|
112
|
+
return { readable: false };
|
|
113
|
+
}
|
|
114
|
+
return { plan: organizations[0]?.billing?.plan, readable: true };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The plan check that gates every Admin tool call, made cheap and bounded.
|
|
118
|
+
*
|
|
119
|
+
* Read straight through it was one uncached, unbounded `GET /users/me` per tool
|
|
120
|
+
* call, failing closed. So when that route wedged, every Admin tool went with
|
|
121
|
+
* it -- including `list_integrations`, which needs nothing but plain REST --
|
|
122
|
+
* and each call waited on the socket rather than on any deadline of its own.
|
|
123
|
+
*
|
|
124
|
+
* Same four measures the Builder side needs, for the same reason:
|
|
125
|
+
*
|
|
126
|
+
* - **Cache** the verdict, refusals included, so a poll loop reads the plan
|
|
127
|
+
* once per TTL instead of once per call.
|
|
128
|
+
* - **Collapse** concurrent callers onto one read, so a burst does not
|
|
129
|
+
* multiply load on a route that is already struggling.
|
|
130
|
+
* - **Caller deadline**, so a wedged route cannot hold a tool call open. The
|
|
131
|
+
* read keeps running past it, so a route that answers slowly rather than
|
|
132
|
+
* never still fills the cache instead of being killed just short of
|
|
133
|
+
* succeeding on every attempt.
|
|
134
|
+
* - **Break** after a failed read, so later calls fail fast instead of each
|
|
135
|
+
* discovering the same outage the slow way.
|
|
136
|
+
*
|
|
137
|
+
* Only a failed *read of an unhealthy endpoint* opens the breaker, and only for
|
|
138
|
+
* the control plane it failed on. Being on the wrong plan, or presenting a
|
|
139
|
+
* credential the API rejects, is a definite answer about one caller and must
|
|
140
|
+
* not fail everyone else fast.
|
|
141
|
+
*/
|
|
142
|
+
export function createPlanEntitlement(options = {}) {
|
|
143
|
+
const now = options.now ?? Date.now;
|
|
144
|
+
const cacheTtlMs = options.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
|
|
145
|
+
const callerWaitMs = options.callerWaitMs ?? DEFAULT_CALLER_WAIT_MS;
|
|
146
|
+
const cooldownMs = options.cooldownMs ?? DEFAULT_COOLDOWN_MS;
|
|
147
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_READ_TIMEOUT_MS;
|
|
148
|
+
// The plan belongs to the org behind the credential, on one control plane.
|
|
149
|
+
// The credential is hashed so raw tokens are not held as map keys.
|
|
150
|
+
const verdicts = new Map();
|
|
151
|
+
const inflight = new Map();
|
|
152
|
+
// Keyed by control plane, because that is what the breaker is a statement
|
|
153
|
+
// about. `baseUrl` comes from the tool's own arguments, so one scalar here
|
|
154
|
+
// let an outage on one control plane fail calls against every other,
|
|
155
|
+
// healthy one.
|
|
156
|
+
const failFastUntil = new Map();
|
|
157
|
+
function cacheKey(baseUrl, token) {
|
|
158
|
+
return `${baseUrl}\n${createHash("sha256").update(token).digest("hex")}`;
|
|
159
|
+
}
|
|
160
|
+
function readPlan(key, baseUrl, token) {
|
|
161
|
+
const pending = (async () => {
|
|
162
|
+
try {
|
|
163
|
+
const data = await callServerApi({
|
|
164
|
+
baseUrl,
|
|
165
|
+
method: "GET",
|
|
166
|
+
path: PLAN_PATH,
|
|
167
|
+
timeoutMs,
|
|
168
|
+
token,
|
|
169
|
+
});
|
|
170
|
+
const envelope = readPlanFromEnvelope(data);
|
|
171
|
+
if (!envelope.readable) {
|
|
172
|
+
// A 200 that is not a `/users/me` envelope means the read did not
|
|
173
|
+
// land, so this is an outage, not a verdict. Not cached.
|
|
174
|
+
throw new PlanCheckUnavailableError(new Error("the plan was missing from the response"));
|
|
175
|
+
}
|
|
176
|
+
failFastUntil.delete(baseUrl);
|
|
177
|
+
verdicts.set(key, {
|
|
178
|
+
expiresAt: now() + cacheTtlMs,
|
|
179
|
+
plan: envelope.plan,
|
|
180
|
+
});
|
|
181
|
+
return envelope.plan;
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
// Only an unhealthy endpoint opens the breaker. A 4xx is a definite
|
|
185
|
+
// answer about this one caller, so it must not fail everyone else fast.
|
|
186
|
+
if (planEndpointUnhealthy(error)) {
|
|
187
|
+
failFastUntil.set(baseUrl, now() + cooldownMs);
|
|
188
|
+
}
|
|
189
|
+
throw error instanceof PlanCheckUnavailableError
|
|
190
|
+
? error
|
|
191
|
+
: new PlanCheckUnavailableError(error);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
inflight.delete(key);
|
|
195
|
+
}
|
|
196
|
+
})();
|
|
197
|
+
inflight.set(key, pending);
|
|
198
|
+
return pending;
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
async assert(baseUrl, token) {
|
|
202
|
+
const key = cacheKey(baseUrl, token);
|
|
203
|
+
const cached = verdicts.get(key);
|
|
204
|
+
if (cached && cached.expiresAt > now()) {
|
|
205
|
+
assertEntitled(cached.plan);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
verdicts.delete(key);
|
|
209
|
+
// A read already running is the one to wait on even while the breaker
|
|
210
|
+
// is open: it is the probe that will close it.
|
|
211
|
+
let pending = inflight.get(key);
|
|
212
|
+
if (!pending) {
|
|
213
|
+
const openUntil = failFastUntil.get(baseUrl) ?? 0;
|
|
214
|
+
if (openUntil > now()) {
|
|
215
|
+
throw new PlanCheckUnavailableError();
|
|
216
|
+
}
|
|
217
|
+
pending = readPlan(key, baseUrl, token);
|
|
218
|
+
}
|
|
219
|
+
// Race, rather than await: this caller stops waiting at its own
|
|
220
|
+
// deadline while the read carries on to fill the cache. Promise.race
|
|
221
|
+
// also keeps a rejection handler on `pending` for its whole life, so a
|
|
222
|
+
// read that fails after this caller gave up stays handled.
|
|
223
|
+
const deadline = callerDeadline(callerWaitMs);
|
|
224
|
+
try {
|
|
225
|
+
assertEntitled(await Promise.race([pending, deadline.expired]));
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
deadline.cancel();
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function assertEntitled(plan) {
|
|
234
|
+
if (!plan || !ENTITLED_PLANS.has(plan)) {
|
|
235
|
+
throw new EntitlementError(plan);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* The process-wide plan check. Sharing one instance is the point: the cache and
|
|
240
|
+
* the breaker only help if every Admin tool call goes through the same one.
|
|
241
|
+
*/
|
|
242
|
+
const sharedPlanEntitlement = createPlanEntitlement();
|
|
243
|
+
export async function assertEnterprisePlan(baseUrl, token) {
|
|
244
|
+
return sharedPlanEntitlement.assert(baseUrl, token);
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=entitlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Profile } from "./tools/index.js";
|
|
2
|
+
export type HttpServerOptions = {
|
|
3
|
+
profile?: Profile;
|
|
4
|
+
port?: number;
|
|
5
|
+
authToken?: string;
|
|
6
|
+
waitUntilClose?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function startHttpServer(options?: HttpServerOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAuDF,wBAAsB,eAAe,CACnC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuRf"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import { createHmac, randomUUID, timingSafeEqual } from "node:crypto";
|
|
2
|
+
import { createServer, } from "node:http";
|
|
3
|
+
import pkg from "../package.json" with { type: "json" };
|
|
4
|
+
import { handleJsonRpc, invalidRequestResponse, isJsonRpcRequest, } from "./jsonrpc.js";
|
|
5
|
+
import { resolveProfile } from "./profile.js";
|
|
6
|
+
import { executeToolCall } from "./tool-call-result.js";
|
|
7
|
+
import { buildToolRegistry, toolDefinitions, } from "./tools/index.js";
|
|
8
|
+
const MAX_BODY_BYTES = 1_000_000;
|
|
9
|
+
function collectBody(req) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const chunks = [];
|
|
12
|
+
let totalBytes = 0;
|
|
13
|
+
let settled = false;
|
|
14
|
+
const finalizeReject = (error) => {
|
|
15
|
+
if (settled) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
settled = true;
|
|
19
|
+
reject(error);
|
|
20
|
+
};
|
|
21
|
+
const finalizeResolve = (body) => {
|
|
22
|
+
if (settled) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
settled = true;
|
|
26
|
+
resolve(body);
|
|
27
|
+
};
|
|
28
|
+
req.on("data", (chunk) => {
|
|
29
|
+
if (settled) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
totalBytes += chunk.length;
|
|
33
|
+
if (totalBytes > MAX_BODY_BYTES) {
|
|
34
|
+
req.pause();
|
|
35
|
+
finalizeReject(new Error("Request body too large"));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
chunks.push(chunk);
|
|
39
|
+
});
|
|
40
|
+
req.on("end", () => {
|
|
41
|
+
finalizeResolve(Buffer.concat(chunks).toString("utf-8"));
|
|
42
|
+
});
|
|
43
|
+
req.on("error", (error) => {
|
|
44
|
+
finalizeReject(error instanceof Error ? error : new Error(String(error)));
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function constantTimeTokenEquals(expected, provided) {
|
|
49
|
+
// Hash both inputs first so timingSafeEqual always compares fixed-length data.
|
|
50
|
+
const key = "superblocks-mcp-http-auth-compare-v1";
|
|
51
|
+
const expectedDigest = createHmac("sha256", key).update(expected).digest();
|
|
52
|
+
const providedDigest = createHmac("sha256", key).update(provided).digest();
|
|
53
|
+
return timingSafeEqual(expectedDigest, providedDigest);
|
|
54
|
+
}
|
|
55
|
+
export async function startHttpServer(options = {}) {
|
|
56
|
+
const port = options.port ?? 8484;
|
|
57
|
+
const profile = options.profile ?? resolveProfile();
|
|
58
|
+
const waitUntilClose = options.waitUntilClose ?? false;
|
|
59
|
+
const authToken = options.authToken ?? process.env.SUPERBLOCKS_MCP_HTTP_TOKEN;
|
|
60
|
+
if (!authToken) {
|
|
61
|
+
throw new Error("HTTP transport requires auth token. Pass authToken option or set SUPERBLOCKS_MCP_HTTP_TOKEN.");
|
|
62
|
+
}
|
|
63
|
+
const registry = buildToolRegistry(toolDefinitions, profile);
|
|
64
|
+
const jsonRpcOptions = {
|
|
65
|
+
version: pkg.version,
|
|
66
|
+
listTools: () => registry.listTools(),
|
|
67
|
+
executeToolCall: (name, args) => executeToolCall(name, args, registry),
|
|
68
|
+
};
|
|
69
|
+
const ALLOWED_ORIGINS = new Set([
|
|
70
|
+
"http://localhost",
|
|
71
|
+
"http://127.0.0.1",
|
|
72
|
+
"https://localhost",
|
|
73
|
+
"https://127.0.0.1",
|
|
74
|
+
]);
|
|
75
|
+
function corsOrigin(req) {
|
|
76
|
+
const origin = req.headers.origin;
|
|
77
|
+
if (!origin)
|
|
78
|
+
return undefined;
|
|
79
|
+
try {
|
|
80
|
+
const { protocol, hostname } = new URL(origin);
|
|
81
|
+
const base = `${protocol}//${hostname}`;
|
|
82
|
+
return ALLOWED_ORIGINS.has(base) ? origin : undefined;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function isAuthorized(req) {
|
|
89
|
+
const authorization = req.headers.authorization;
|
|
90
|
+
if (!authorization?.startsWith("Bearer ")) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const providedToken = authorization.slice("Bearer ".length);
|
|
94
|
+
return constantTimeTokenEquals(authToken, providedToken);
|
|
95
|
+
}
|
|
96
|
+
function resolveSessionId(req) {
|
|
97
|
+
const header = req.headers["mcp-session-id"];
|
|
98
|
+
if (typeof header === "string" && header.length > 0) {
|
|
99
|
+
return header;
|
|
100
|
+
}
|
|
101
|
+
if (Array.isArray(header) &&
|
|
102
|
+
typeof header[0] === "string" &&
|
|
103
|
+
header[0].length > 0) {
|
|
104
|
+
return header[0];
|
|
105
|
+
}
|
|
106
|
+
return randomUUID();
|
|
107
|
+
}
|
|
108
|
+
const httpServer = createServer((req, res) => {
|
|
109
|
+
void (async () => {
|
|
110
|
+
const requestUrl = new URL(req.url ?? "", "http://127.0.0.1");
|
|
111
|
+
const allowed = corsOrigin(req);
|
|
112
|
+
if (allowed) {
|
|
113
|
+
res.setHeader("Access-Control-Allow-Origin", allowed);
|
|
114
|
+
res.setHeader("Vary", "Origin");
|
|
115
|
+
res.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Mcp-Session-Id");
|
|
116
|
+
res.setHeader("Access-Control-Expose-Headers", "Mcp-Session-Id");
|
|
117
|
+
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
|
|
118
|
+
}
|
|
119
|
+
if (requestUrl.pathname !== "/mcp") {
|
|
120
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
121
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (req.method === "OPTIONS") {
|
|
125
|
+
if (!allowed) {
|
|
126
|
+
res.writeHead(403, { "Content-Type": "application/json" });
|
|
127
|
+
res.end(JSON.stringify({ error: "Origin not allowed" }));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
res.writeHead(204);
|
|
131
|
+
res.end();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!isAuthorized(req)) {
|
|
135
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
136
|
+
res.end(JSON.stringify({ error: "Unauthorized" }));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (req.method === "POST") {
|
|
140
|
+
let body;
|
|
141
|
+
try {
|
|
142
|
+
body = await collectBody(req);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (error instanceof Error &&
|
|
146
|
+
error.message === "Request body too large") {
|
|
147
|
+
res.writeHead(413, {
|
|
148
|
+
"Content-Type": "application/json",
|
|
149
|
+
Connection: "close",
|
|
150
|
+
});
|
|
151
|
+
res.end(JSON.stringify({ error: "Request body too large" }), () => {
|
|
152
|
+
if (!req.destroyed) {
|
|
153
|
+
req.destroy();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
let parsed;
|
|
161
|
+
try {
|
|
162
|
+
parsed = JSON.parse(body);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
166
|
+
res.end(JSON.stringify({ error: "Invalid JSON" }));
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const sessionId = resolveSessionId(req);
|
|
170
|
+
if (Array.isArray(parsed)) {
|
|
171
|
+
if (parsed.length === 0) {
|
|
172
|
+
res.writeHead(200, {
|
|
173
|
+
"Content-Type": "application/json",
|
|
174
|
+
"Mcp-Session-Id": sessionId,
|
|
175
|
+
});
|
|
176
|
+
res.end(JSON.stringify(invalidRequestResponse()));
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const results = (await Promise.all(parsed.map((r) => isJsonRpcRequest(r)
|
|
180
|
+
? handleJsonRpc(r, jsonRpcOptions)
|
|
181
|
+
: Promise.resolve(invalidRequestResponse())))).filter((r) => r !== null);
|
|
182
|
+
if (results.length === 0) {
|
|
183
|
+
res.writeHead(202);
|
|
184
|
+
res.end();
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
res.writeHead(200, {
|
|
188
|
+
"Content-Type": "application/json",
|
|
189
|
+
"Mcp-Session-Id": sessionId,
|
|
190
|
+
});
|
|
191
|
+
res.end(JSON.stringify(results));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const result = isJsonRpcRequest(parsed)
|
|
196
|
+
? await handleJsonRpc(parsed, jsonRpcOptions)
|
|
197
|
+
: invalidRequestResponse();
|
|
198
|
+
if (result === null) {
|
|
199
|
+
res.writeHead(202);
|
|
200
|
+
res.end();
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
res.writeHead(200, {
|
|
204
|
+
"Content-Type": "application/json",
|
|
205
|
+
"Mcp-Session-Id": sessionId,
|
|
206
|
+
});
|
|
207
|
+
res.end(JSON.stringify(result));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (req.method === "GET") {
|
|
213
|
+
// Placeholder SSE endpoint for MCP Streamable HTTP compatibility.
|
|
214
|
+
// This endpoint currently sends heartbeat frames only.
|
|
215
|
+
const sessionId = resolveSessionId(req);
|
|
216
|
+
let closed = false;
|
|
217
|
+
const cleanup = () => {
|
|
218
|
+
if (closed) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
closed = true;
|
|
222
|
+
clearInterval(heartbeat);
|
|
223
|
+
if (!res.writableEnded) {
|
|
224
|
+
res.end();
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
res.writeHead(200, {
|
|
228
|
+
"Content-Type": "text/event-stream",
|
|
229
|
+
"Cache-Control": "no-cache",
|
|
230
|
+
Connection: "keep-alive",
|
|
231
|
+
"Mcp-Session-Id": sessionId,
|
|
232
|
+
});
|
|
233
|
+
res.write(":\n\n");
|
|
234
|
+
const heartbeat = setInterval(() => {
|
|
235
|
+
if (closed || res.destroyed || res.writableEnded) {
|
|
236
|
+
cleanup();
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
res.write(":\n\n");
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.error("SSE heartbeat write failed:", error);
|
|
244
|
+
cleanup();
|
|
245
|
+
}
|
|
246
|
+
}, 30_000);
|
|
247
|
+
req.on("close", cleanup);
|
|
248
|
+
req.on("aborted", cleanup);
|
|
249
|
+
res.on("close", cleanup);
|
|
250
|
+
res.on("error", (error) => {
|
|
251
|
+
console.error("SSE response stream error:", error);
|
|
252
|
+
cleanup();
|
|
253
|
+
});
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (req.method === "DELETE") {
|
|
257
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
258
|
+
res.end(JSON.stringify({ ok: true }));
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
res.writeHead(405, { "Content-Type": "application/json" });
|
|
262
|
+
res.end(JSON.stringify({ error: "Method not allowed" }));
|
|
263
|
+
})().catch((err) => {
|
|
264
|
+
console.error("Unhandled error in MCP HTTP handler:", err);
|
|
265
|
+
if (res.headersSent) {
|
|
266
|
+
if (!res.writableEnded) {
|
|
267
|
+
res.end();
|
|
268
|
+
}
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
272
|
+
res.end(JSON.stringify({ error: "Internal server error" }));
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
return new Promise((resolve, reject) => {
|
|
276
|
+
const onRuntimeError = (error) => {
|
|
277
|
+
console.error("MCP HTTP server runtime error:", error);
|
|
278
|
+
};
|
|
279
|
+
const onError = (error) => reject(error);
|
|
280
|
+
httpServer.once("error", onError);
|
|
281
|
+
httpServer.listen(port, "127.0.0.1", () => {
|
|
282
|
+
httpServer.off("error", onError);
|
|
283
|
+
httpServer.on("error", onRuntimeError);
|
|
284
|
+
console.error(`superblocks-mcp HTTP server started on http://127.0.0.1:${port}/mcp (profile: ${profile}, tools: ${registry.listTools().length})`);
|
|
285
|
+
if (!waitUntilClose) {
|
|
286
|
+
resolve();
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
httpServer.once("close", () => {
|
|
290
|
+
httpServer.off("error", onRuntimeError);
|
|
291
|
+
resolve();
|
|
292
|
+
});
|
|
293
|
+
httpServer.once("error", (error) => {
|
|
294
|
+
reject(error);
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { type Profile } from "./tools/index.js";
|
|
3
|
+
export { resolveProfile } from "./profile.js";
|
|
4
|
+
export { executeToolCall } from "./tool-call-result.js";
|
|
5
|
+
export { buildToolRegistry, toolDefinitions } from "./tools/index.js";
|
|
6
|
+
export { getPluginConfigurationSchema } from "./tools/plugin-configuration-schema.js";
|
|
7
|
+
export type { Profile, ToolRegistry } from "./tools/registry.js";
|
|
8
|
+
export { getAuthContext, runWithAuthContext } from "./auth/context.js";
|
|
9
|
+
export { handleJsonRpc, invalidRequestResponse, isJsonRpcRequest, type HandleJsonRpcOptions, type JsonRpcRequest, type JsonRpcResponse, } from "./jsonrpc.js";
|
|
10
|
+
export { MCP_SERVER_VERSION } from "./version.js";
|
|
11
|
+
export type ServerOptions = {
|
|
12
|
+
profile?: Profile;
|
|
13
|
+
};
|
|
14
|
+
export declare const MCP_SERVE_DEPRECATION_NOTICE = "superblocks-mcp is deprecated. Prefer: superblocks mcp setup --client claude (stdio MCP as the logged-in CLI user)";
|
|
15
|
+
export declare function startServer(options?: ServerOptions): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAiBA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,4BAA4B,uHAC6E,CAAC;AAEvH,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC5E"}
|