@superblocksteam/mcp-server 2.0.0-SNAPSHOT.12e637302a23edc8
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 +128 -0
- package/dist/target/resolve-base-url-target.d.ts.map +1 -0
- package/dist/target/resolve-base-url-target.js +125 -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 +65 -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 +95 -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 +1320 -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,71 @@
|
|
|
1
|
+
import { getLocalTokenWithUrlIfExists } from "@superblocksteam/util";
|
|
2
|
+
import { normalizeBaseUrl } from "../urls.js";
|
|
3
|
+
import { getFlagValue } from "../utils/args.js";
|
|
4
|
+
import { getMcpAuthFilePath, listStoredOrigins, upsertAuthToken, } from "./store.js";
|
|
5
|
+
function getUsageText() {
|
|
6
|
+
return [
|
|
7
|
+
"Usage:",
|
|
8
|
+
" superblocks-mcp Start the MCP server (stdio)",
|
|
9
|
+
" superblocks-mcp login --token <token> Authenticate with Superblocks",
|
|
10
|
+
" superblocks-mcp setup --client cursor Write MCP config for Cursor",
|
|
11
|
+
" superblocks-mcp setup --client claude Write MCP config for Claude Code",
|
|
12
|
+
" superblocks-mcp setup --client cursor --dry-run Preview without writing",
|
|
13
|
+
].join("\n");
|
|
14
|
+
}
|
|
15
|
+
async function addAuth(args) {
|
|
16
|
+
const baseUrl = getFlagValue(args, "--base-url");
|
|
17
|
+
const token = getFlagValue(args, "--token") ??
|
|
18
|
+
process.env.SUPERBLOCKS_TOKEN ??
|
|
19
|
+
process.env.SUPERBLOCKS_API_TOKEN;
|
|
20
|
+
if (!baseUrl || !token) {
|
|
21
|
+
throw new Error("auth add requires --base-url and --token (or SUPERBLOCKS_TOKEN / SUPERBLOCKS_API_TOKEN).");
|
|
22
|
+
}
|
|
23
|
+
const normalizedBaseUrl = await upsertAuthToken(baseUrl, token);
|
|
24
|
+
console.log(`Stored API token for ${normalizedBaseUrl} in ${getMcpAuthFilePath()}`);
|
|
25
|
+
}
|
|
26
|
+
async function importCurrentAuth() {
|
|
27
|
+
const currentCliAuth = await getLocalTokenWithUrlIfExists();
|
|
28
|
+
if (!currentCliAuth || !("token" in currentCliAuth)) {
|
|
29
|
+
throw new Error("No logged-in Superblocks CLI session found to import. Run 'superblocks login' first.");
|
|
30
|
+
}
|
|
31
|
+
const normalizedBaseUrl = await upsertAuthToken(currentCliAuth.superblocksBaseUrl, currentCliAuth.token);
|
|
32
|
+
console.log(`Imported API token for ${normalizedBaseUrl} into ${getMcpAuthFilePath()}`);
|
|
33
|
+
}
|
|
34
|
+
async function listAuth() {
|
|
35
|
+
const origins = await listStoredOrigins();
|
|
36
|
+
if (origins.length === 0) {
|
|
37
|
+
console.log(`No stored origins in ${getMcpAuthFilePath()}`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
console.log(`Stored origins in ${getMcpAuthFilePath()}:`);
|
|
41
|
+
for (const origin of origins) {
|
|
42
|
+
console.log(`- ${normalizeBaseUrl(origin)}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function maybeRunAuthCommand(args) {
|
|
46
|
+
if (args.length === 0 || args[0] !== "auth") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const subcommand = args[1];
|
|
50
|
+
switch (subcommand) {
|
|
51
|
+
case "add": {
|
|
52
|
+
await addAuth(args.slice(2));
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
case "import-current": {
|
|
56
|
+
await importCurrentAuth();
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
case "list": {
|
|
60
|
+
await listAuth();
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
default: {
|
|
64
|
+
throw new Error(`Unknown auth subcommand '${subcommand ?? ""}'.\n\n${getUsageText()}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function getMcpUsageText() {
|
|
69
|
+
return getUsageText();
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/auth/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type AuthContext = {
|
|
2
|
+
token: string;
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function getAuthContext(): AuthContext | undefined;
|
|
6
|
+
export declare function runWithAuthContext<T>(context: AuthContext, fn: () => T | Promise<T>): T | Promise<T>;
|
|
7
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/auth/context.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAI7D,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,OAAO,EAAE,WAAW,EACpB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
const authStore = new AsyncLocalStorage();
|
|
3
|
+
export function getAuthContext() {
|
|
4
|
+
return authStore.getStore();
|
|
5
|
+
}
|
|
6
|
+
export function runWithAuthContext(context, fn) {
|
|
7
|
+
return authStore.run(context, fn);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/auth/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAe,CAAC;AAEvD,MAAM,UAAU,cAAc;IAC5B,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAoB,EACpB,EAAwB;IAExB,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type ValidateResult = {
|
|
2
|
+
name: string;
|
|
3
|
+
};
|
|
4
|
+
type LoginCommandOptions = {
|
|
5
|
+
authFilePath?: string;
|
|
6
|
+
validateToken?: (token: string, baseUrl: string) => Promise<ValidateResult>;
|
|
7
|
+
};
|
|
8
|
+
export declare function maybeRunLoginCommand(args: string[], options?: LoginCommandOptions): Promise<boolean>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/auth/login.ts"],"names":[],"mappings":"AAWA,KAAK,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,KAAK,mBAAmB,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7E,CAAC;AAWF,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CA4ClB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { dirname } from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { resolveAuthFilePath } from "@superblocksteam/util";
|
|
4
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
5
|
+
import { getFlagValue } from "../utils/args.js";
|
|
6
|
+
const DEFAULT_BASE_URL = "https://app.superblocks.com";
|
|
7
|
+
async function defaultValidateToken(token, baseUrl) {
|
|
8
|
+
const sdk = createSdk(token, baseUrl);
|
|
9
|
+
const response = await sdk.fetchCurrentUser();
|
|
10
|
+
return { name: response.user.name };
|
|
11
|
+
}
|
|
12
|
+
export async function maybeRunLoginCommand(args, options = {}) {
|
|
13
|
+
if (args.length === 0 || args[0] !== "login") {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const subArgs = args.slice(1);
|
|
17
|
+
const token = getFlagValue(subArgs, "--token") ??
|
|
18
|
+
process.env.SUPERBLOCKS_TOKEN ??
|
|
19
|
+
process.env.SUPERBLOCKS_API_TOKEN;
|
|
20
|
+
if (!token) {
|
|
21
|
+
throw new Error("A token is required. Pass --token <token>, or set SUPERBLOCKS_TOKEN.\n" +
|
|
22
|
+
"You can find your API key at https://app.superblocks.com/personal-settings#apiKey");
|
|
23
|
+
}
|
|
24
|
+
const baseUrl = getFlagValue(subArgs, "--base-url") ?? DEFAULT_BASE_URL;
|
|
25
|
+
const validate = options.validateToken ?? defaultValidateToken;
|
|
26
|
+
let user;
|
|
27
|
+
try {
|
|
28
|
+
user = await validate(token, baseUrl);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
32
|
+
throw new Error(`Login failed (${baseUrl}): ${detail}\n` +
|
|
33
|
+
"Verify your API key at " +
|
|
34
|
+
`${baseUrl.replace(/\/$/, "")}/personal-settings#apiKey`);
|
|
35
|
+
}
|
|
36
|
+
const authFile = options.authFilePath ?? resolveAuthFilePath();
|
|
37
|
+
await fs.ensureDir(dirname(authFile));
|
|
38
|
+
await fs.writeJson(authFile, { superblocksBaseUrl: baseUrl, token });
|
|
39
|
+
try {
|
|
40
|
+
await fs.chmod(authFile, 0o600);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Non-POSIX systems (Windows) may not support chmod
|
|
44
|
+
}
|
|
45
|
+
console.log(`Logged in as ${user.name}. Token saved to ${authFile}`);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AASvD,KAAK,UAAU,oBAAoB,CACjC,KAAa,EACb,OAAe;IAEf,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAc,EACd,UAA+B,EAAE;IAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GACT,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,wEAAwE;YACtE,mFAAmF,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,gBAAgB,CAAC;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,oBAAoB,CAAC;IAE/D,IAAI,IAAoB,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,iBAAiB,OAAO,MAAM,MAAM,IAAI;YACtC,yBAAyB;YACzB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,2BAA2B,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type AuthSource = "cli-auth" | "mcp-auth-store" | "remote-context";
|
|
2
|
+
type ResolvedAuth = {
|
|
3
|
+
token: string;
|
|
4
|
+
source: AuthSource;
|
|
5
|
+
};
|
|
6
|
+
type AuthStatus = {
|
|
7
|
+
authenticated: boolean;
|
|
8
|
+
source: AuthSource | null;
|
|
9
|
+
updatedAt: string | null;
|
|
10
|
+
};
|
|
11
|
+
export declare function getAuthSetupHint(baseUrl: string): string;
|
|
12
|
+
export declare function getAuthStatusForOrigin(baseUrl: string): Promise<AuthStatus>;
|
|
13
|
+
export declare function resolveAuthForOrigin(baseUrl: string): Promise<ResolvedAuth>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=resolve-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-auth.d.ts","sourceRoot":"","sources":["../../src/auth/resolve-auth.ts"],"names":[],"mappings":"AAMA,KAAK,UAAU,GACX,UAAU,GACV,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AA6BD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CA4BrB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getLocalTokenWithUrlIfExists } from "@superblocksteam/util";
|
|
2
|
+
import { normalizeBaseUrl } from "../urls.js";
|
|
3
|
+
import { getAuthContext } from "./context.js";
|
|
4
|
+
import { getStoredAuthEntry, getStoredAuthToken } from "./store.js";
|
|
5
|
+
export function getAuthSetupHint(baseUrl) {
|
|
6
|
+
const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
|
|
7
|
+
return (`Run 'superblocks login' to authenticate, ` +
|
|
8
|
+
`or 'superblocks-mcp auth add --base-url ${normalizedBaseUrl} --token <token>' for a specific environment.`);
|
|
9
|
+
}
|
|
10
|
+
async function tryCliAuth(normalizedBaseUrl) {
|
|
11
|
+
const currentCliAuth = await getLocalTokenWithUrlIfExists();
|
|
12
|
+
if (currentCliAuth &&
|
|
13
|
+
"token" in currentCliAuth &&
|
|
14
|
+
normalizeBaseUrl(currentCliAuth.superblocksBaseUrl) === normalizedBaseUrl) {
|
|
15
|
+
return { token: currentCliAuth.token, source: "cli-auth" };
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
async function tryMcpStoreAuth(normalizedBaseUrl) {
|
|
20
|
+
const storedEntry = await getStoredAuthEntry(normalizedBaseUrl);
|
|
21
|
+
if (storedEntry) {
|
|
22
|
+
return {
|
|
23
|
+
auth: { token: storedEntry.token, source: "mcp-auth-store" },
|
|
24
|
+
updatedAt: storedEntry.updatedAt,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
export async function getAuthStatusForOrigin(baseUrl) {
|
|
30
|
+
const ctx = getAuthContext();
|
|
31
|
+
if (ctx) {
|
|
32
|
+
const normalizedRequested = normalizeBaseUrl(baseUrl);
|
|
33
|
+
const normalizedContext = normalizeBaseUrl(ctx.baseUrl);
|
|
34
|
+
if (normalizedRequested !== normalizedContext) {
|
|
35
|
+
return { authenticated: false, source: null, updatedAt: null };
|
|
36
|
+
}
|
|
37
|
+
return { authenticated: true, source: "remote-context", updatedAt: null };
|
|
38
|
+
}
|
|
39
|
+
const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
|
|
40
|
+
const cliAuth = await tryCliAuth(normalizedBaseUrl);
|
|
41
|
+
if (cliAuth) {
|
|
42
|
+
return { authenticated: true, source: "cli-auth", updatedAt: null };
|
|
43
|
+
}
|
|
44
|
+
const mcpAuth = await tryMcpStoreAuth(normalizedBaseUrl);
|
|
45
|
+
if (mcpAuth) {
|
|
46
|
+
return {
|
|
47
|
+
authenticated: true,
|
|
48
|
+
source: "mcp-auth-store",
|
|
49
|
+
updatedAt: mcpAuth.updatedAt,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return { authenticated: false, source: null, updatedAt: null };
|
|
53
|
+
}
|
|
54
|
+
export async function resolveAuthForOrigin(baseUrl) {
|
|
55
|
+
const ctx = getAuthContext();
|
|
56
|
+
if (ctx) {
|
|
57
|
+
const normalizedRequested = normalizeBaseUrl(baseUrl);
|
|
58
|
+
const normalizedContext = normalizeBaseUrl(ctx.baseUrl);
|
|
59
|
+
if (normalizedRequested !== normalizedContext) {
|
|
60
|
+
throw new Error(`Remote auth context is for ${normalizedContext}, but tool requested auth for ${normalizedRequested}`);
|
|
61
|
+
}
|
|
62
|
+
return { token: ctx.token, source: "remote-context" };
|
|
63
|
+
}
|
|
64
|
+
const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
|
|
65
|
+
const cliAuth = await tryCliAuth(normalizedBaseUrl);
|
|
66
|
+
if (cliAuth) {
|
|
67
|
+
return cliAuth;
|
|
68
|
+
}
|
|
69
|
+
const storedToken = await getStoredAuthToken(normalizedBaseUrl);
|
|
70
|
+
if (storedToken) {
|
|
71
|
+
return { token: storedToken, source: "mcp-auth-store" };
|
|
72
|
+
}
|
|
73
|
+
throw new Error(`No API token configured for ${normalizedBaseUrl}. ${getAuthSetupHint(normalizedBaseUrl)}`);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=resolve-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-auth.js","sourceRoot":"","sources":["../../src/auth/resolve-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the authenticated user's current organization ID (from /api/v1/users/me).
|
|
3
|
+
* Used by MCP tools so callers do not need a separate get_current_user round trip.
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveCurrentOrganizationId(normalizedBaseUrl: string, token: string): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=resolve-current-organization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-current-organization.d.ts","sourceRoot":"","sources":["../../src/auth/resolve-current-organization.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the authenticated user's current organization ID (from /api/v1/users/me).
|
|
4
|
+
* Used by MCP tools so callers do not need a separate get_current_user round trip.
|
|
5
|
+
*/
|
|
6
|
+
export async function resolveCurrentOrganizationId(normalizedBaseUrl, token) {
|
|
7
|
+
const sdk = createSdk(token, normalizedBaseUrl);
|
|
8
|
+
const me = await sdk.fetchCurrentUser();
|
|
9
|
+
const id = me.user?.currentOrganizationId;
|
|
10
|
+
if (!id) {
|
|
11
|
+
throw new Error("Could not resolve current organization: missing currentOrganizationId on user");
|
|
12
|
+
}
|
|
13
|
+
return id;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=resolve-current-organization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-current-organization.js","sourceRoot":"","sources":["../../src/auth/resolve-current-organization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,iBAAyB,EACzB,KAAa;IAEb,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type AuthStoreEntry = {
|
|
2
|
+
token: string;
|
|
3
|
+
updatedAt: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function getMcpAuthFilePath(): string;
|
|
6
|
+
export declare function upsertAuthToken(baseUrl: string, token: string): Promise<string>;
|
|
7
|
+
export declare function getStoredAuthToken(baseUrl: string): Promise<string | undefined>;
|
|
8
|
+
export declare function getStoredAuthEntry(baseUrl: string): Promise<AuthStoreEntry | undefined>;
|
|
9
|
+
export declare function listStoredOrigins(): Promise<string[]>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAUF,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C;AAuCD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7B;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAIrC;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAG3D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import { normalizeBaseUrl } from "../urls.js";
|
|
5
|
+
const EMPTY_AUTH_STORE = {
|
|
6
|
+
origins: {},
|
|
7
|
+
};
|
|
8
|
+
export function getMcpAuthFilePath() {
|
|
9
|
+
return (process.env.SUPERBLOCKS_MCP_AUTH_FILE ??
|
|
10
|
+
path.join(homedir(), ".superblocks/mcp-auth.json"));
|
|
11
|
+
}
|
|
12
|
+
async function ensureAuthDirectory() {
|
|
13
|
+
const authFilePath = getMcpAuthFilePath();
|
|
14
|
+
const authDirectoryPath = path.dirname(authFilePath);
|
|
15
|
+
await fs.ensureDir(authDirectoryPath);
|
|
16
|
+
await fs.chmod(authDirectoryPath, 0o700).catch(() => undefined);
|
|
17
|
+
}
|
|
18
|
+
async function readAuthStore() {
|
|
19
|
+
const authFilePath = getMcpAuthFilePath();
|
|
20
|
+
if (!(await fs.pathExists(authFilePath))) {
|
|
21
|
+
return {
|
|
22
|
+
origins: { ...EMPTY_AUTH_STORE.origins },
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const authStore = await fs.readJSON(authFilePath);
|
|
26
|
+
if (!authStore ||
|
|
27
|
+
typeof authStore !== "object" ||
|
|
28
|
+
!("origins" in authStore)) {
|
|
29
|
+
throw new Error(`Invalid MCP auth store: ${authFilePath}`);
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
origins: authStore.origins,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function writeAuthStore(authStore) {
|
|
36
|
+
await ensureAuthDirectory();
|
|
37
|
+
const authFilePath = getMcpAuthFilePath();
|
|
38
|
+
await fs.writeJSON(authFilePath, authStore, { spaces: 2 });
|
|
39
|
+
await fs.chmod(authFilePath, 0o600).catch(() => undefined);
|
|
40
|
+
}
|
|
41
|
+
export async function upsertAuthToken(baseUrl, token) {
|
|
42
|
+
const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
|
|
43
|
+
const authStore = await readAuthStore();
|
|
44
|
+
authStore.origins[normalizedBaseUrl] = {
|
|
45
|
+
token,
|
|
46
|
+
updatedAt: new Date().toISOString(),
|
|
47
|
+
};
|
|
48
|
+
await writeAuthStore(authStore);
|
|
49
|
+
return normalizedBaseUrl;
|
|
50
|
+
}
|
|
51
|
+
export async function getStoredAuthToken(baseUrl) {
|
|
52
|
+
return (await getStoredAuthEntry(baseUrl))?.token;
|
|
53
|
+
}
|
|
54
|
+
export async function getStoredAuthEntry(baseUrl) {
|
|
55
|
+
const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
|
|
56
|
+
const authStore = await readAuthStore();
|
|
57
|
+
return authStore.origins[normalizedBaseUrl];
|
|
58
|
+
}
|
|
59
|
+
export async function listStoredOrigins() {
|
|
60
|
+
const authStore = await readAuthStore();
|
|
61
|
+
return Object.keys(authStore.origins).sort();
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAW9C,MAAM,gBAAgB,GAAc;IAClC,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAChC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,4BAA4B,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAErD,MAAM,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClD,IACE,CAAC,SAAS;QACV,OAAO,SAAS,KAAK,QAAQ;QAC7B,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAyC;KAC7D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAoB;IAChD,MAAM,mBAAmB,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,KAAa;IAEb,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG;QACrC,KAAK;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe;IAEf,OAAO,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe;IAEf,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,OAAO,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement-wrapper.d.ts","sourceRoot":"","sources":["../src/entitlement-wrapper.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAwBhE;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3C,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAsBrC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { resolveAuthForOrigin } from "./auth/resolve-auth.js";
|
|
2
|
+
import { EntitlementError, assertEnterprisePlan } from "./entitlement.js";
|
|
3
|
+
import { normalizeBaseUrl } from "./urls.js";
|
|
4
|
+
export function extractBaseUrl(args) {
|
|
5
|
+
if (!args || typeof args !== "object") {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const obj = args;
|
|
9
|
+
if (typeof obj.base_url === "string") {
|
|
10
|
+
try {
|
|
11
|
+
return normalizeBaseUrl(obj.base_url);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (typeof obj.app_url === "string") {
|
|
18
|
+
try {
|
|
19
|
+
return normalizeBaseUrl(obj.app_url);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
export function wrapHandlerWithEntitlement(handler) {
|
|
28
|
+
return async (args) => {
|
|
29
|
+
const baseUrl = extractBaseUrl(args);
|
|
30
|
+
if (baseUrl) {
|
|
31
|
+
let authResolved = false;
|
|
32
|
+
try {
|
|
33
|
+
const auth = await resolveAuthForOrigin(baseUrl);
|
|
34
|
+
authResolved = true;
|
|
35
|
+
await assertEnterprisePlan(baseUrl, auth.token);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof EntitlementError) {
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
if (authResolved) {
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return handler(args);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=entitlement-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement-wrapper.js","sourceRoot":"","sources":["../src/entitlement-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAA4C;IAE5C,OAAO,KAAK,EAAE,IAAa,EAAoB,EAAE;QAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACjD,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;oBACtC,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare class EntitlementError extends Error {
|
|
2
|
+
readonly plan: string | undefined;
|
|
3
|
+
constructor(plan: string | undefined);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* The plan could not be read, so nothing is known about the entitlement.
|
|
7
|
+
*
|
|
8
|
+
* Distinct from {@link EntitlementError}, which is a definite answer that the
|
|
9
|
+
* org is on the wrong plan. This one means try again; that one means upgrade.
|
|
10
|
+
*/
|
|
11
|
+
export declare class PlanCheckUnavailableError extends Error {
|
|
12
|
+
constructor(cause?: unknown);
|
|
13
|
+
}
|
|
14
|
+
export type PlanEntitlementOptions = {
|
|
15
|
+
cacheTtlMs?: number;
|
|
16
|
+
/** How long one caller waits for a read before giving up on this call. */
|
|
17
|
+
callerWaitMs?: number;
|
|
18
|
+
cooldownMs?: number;
|
|
19
|
+
now?: () => number;
|
|
20
|
+
/** Bounds the read itself, which outlives any one caller's wait. */
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
};
|
|
23
|
+
export type PlanEntitlement = {
|
|
24
|
+
/** Resolves when the org behind this credential may use the Admin tools. */
|
|
25
|
+
assert(baseUrl: string, token: string): Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The plan check that gates every Admin tool call, made cheap and bounded.
|
|
29
|
+
*
|
|
30
|
+
* Read straight through it was one uncached, unbounded `GET /users/me` per tool
|
|
31
|
+
* call, failing closed. So when that route wedged, every Admin tool went with
|
|
32
|
+
* it -- including `list_integrations`, which needs nothing but plain REST --
|
|
33
|
+
* and each call waited on the socket rather than on any deadline of its own.
|
|
34
|
+
*
|
|
35
|
+
* Same four measures the Builder side needs, for the same reason:
|
|
36
|
+
*
|
|
37
|
+
* - **Cache** the verdict, refusals included, so a poll loop reads the plan
|
|
38
|
+
* once per TTL instead of once per call.
|
|
39
|
+
* - **Collapse** concurrent callers onto one read, so a burst does not
|
|
40
|
+
* multiply load on a route that is already struggling.
|
|
41
|
+
* - **Caller deadline**, so a wedged route cannot hold a tool call open. The
|
|
42
|
+
* read keeps running past it, so a route that answers slowly rather than
|
|
43
|
+
* never still fills the cache instead of being killed just short of
|
|
44
|
+
* succeeding on every attempt.
|
|
45
|
+
* - **Break** after a failed read, so later calls fail fast instead of each
|
|
46
|
+
* discovering the same outage the slow way.
|
|
47
|
+
*
|
|
48
|
+
* Only a failed *read of an unhealthy endpoint* opens the breaker, and only for
|
|
49
|
+
* the control plane it failed on. Being on the wrong plan, or presenting a
|
|
50
|
+
* credential the API rejects, is a definite answer about one caller and must
|
|
51
|
+
* not fail everyone else fast.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createPlanEntitlement(options?: PlanEntitlementOptions): PlanEntitlement;
|
|
54
|
+
export declare function assertEnterprisePlan(baseUrl: string, token: string): Promise<void>;
|
|
55
|
+
//# sourceMappingURL=entitlement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement.d.ts","sourceRoot":"","sources":["../src/entitlement.ts"],"names":[],"mappings":"AAqFA,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,MAAM,GAAG,SAAS;CAUrC;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,KAAK,CAAC,EAAE,OAAO;CAU5B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4BF,MAAM,MAAM,eAAe,GAAG;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAmGjB;AAcD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf"}
|