@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,98 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import { ExportViewMode } from "@superblocksteam/shared";
|
|
3
|
+
import { buildDirectoryTreeSummary } from "../application/directory-tree.js";
|
|
4
|
+
import { materializeApplication } from "../application/materialize-application.js";
|
|
5
|
+
import { applicationModeLabel, applicationModeNote, summarizeMultiPageApplicationStructure, } from "../application/summary.js";
|
|
6
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
7
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
8
|
+
import { getApplicationStructureInputSchema, resolveAppTarget, } from "../target/resolve-app-target.js";
|
|
9
|
+
import * as schemas from "./schemas.js";
|
|
10
|
+
import { parseToolInput } from "./validation.js";
|
|
11
|
+
const DEFAULT_DIRECTORY_TREE_ENTRY_LIMIT = 200;
|
|
12
|
+
export const getApplicationStructure = {
|
|
13
|
+
name: "get_application_structure",
|
|
14
|
+
title: "Get Application Structure",
|
|
15
|
+
description: "Fetch a Superblocks application structure summary. For Clark AI Apps this returns a bounded checkout tree and temp path. Provide either app_url or application_id plus base_url.",
|
|
16
|
+
inputSchema: schemas.getApplicationStructureToolInputSchema,
|
|
17
|
+
annotations: {
|
|
18
|
+
readOnlyHint: false,
|
|
19
|
+
destructiveHint: false,
|
|
20
|
+
idempotentHint: true,
|
|
21
|
+
openWorldHint: true,
|
|
22
|
+
},
|
|
23
|
+
audience: "customer",
|
|
24
|
+
async handler(args) {
|
|
25
|
+
const input = parseToolInput(getApplicationStructureInputSchema, args);
|
|
26
|
+
const target = resolveAppTarget(input);
|
|
27
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
28
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
29
|
+
const application = await sdk.fetchApplicationWithComponents({
|
|
30
|
+
applicationId: target.applicationId,
|
|
31
|
+
branch: target.branch,
|
|
32
|
+
viewMode: ExportViewMode.EXPORT_LIVE,
|
|
33
|
+
});
|
|
34
|
+
if (!application) {
|
|
35
|
+
throw new Error(`Application ${target.applicationId} was not found.`);
|
|
36
|
+
}
|
|
37
|
+
if (application.type === "multi-page") {
|
|
38
|
+
const mode = "1.0";
|
|
39
|
+
return {
|
|
40
|
+
...summarizeMultiPageApplicationStructure(application),
|
|
41
|
+
application_mode_label: applicationModeLabel(mode),
|
|
42
|
+
application_mode_note: applicationModeNote(mode),
|
|
43
|
+
application_id: target.applicationId,
|
|
44
|
+
auth_source: auth.source,
|
|
45
|
+
base_url: target.baseUrl,
|
|
46
|
+
branch: target.branch,
|
|
47
|
+
environment: target.environment,
|
|
48
|
+
resolved_from: target.resolvedFrom,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const materialized = await materializeApplication({
|
|
52
|
+
sdk,
|
|
53
|
+
application,
|
|
54
|
+
branch: target.branch,
|
|
55
|
+
});
|
|
56
|
+
const cleanupRootPath = materialized.isTemporary
|
|
57
|
+
? materialized.temporaryRootPath
|
|
58
|
+
: undefined;
|
|
59
|
+
if (materialized.isTemporary && !cleanupRootPath) {
|
|
60
|
+
throw new Error(`Expected temporaryRootPath for temporary checkout: ${materialized.checkoutPath}`);
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const directoryTree = await buildDirectoryTreeSummary(materialized.checkoutPath, {
|
|
64
|
+
exclude: new Set([".superblocks"]),
|
|
65
|
+
maxEntries: input.max_entries ?? DEFAULT_DIRECTORY_TREE_ENTRY_LIMIT,
|
|
66
|
+
});
|
|
67
|
+
const mode = "2.0";
|
|
68
|
+
return {
|
|
69
|
+
application_id: target.applicationId,
|
|
70
|
+
application_mode: mode,
|
|
71
|
+
application_mode_label: applicationModeLabel(mode),
|
|
72
|
+
application_mode_note: applicationModeNote(mode),
|
|
73
|
+
auth_source: auth.source,
|
|
74
|
+
base_url: target.baseUrl,
|
|
75
|
+
branch: target.branch,
|
|
76
|
+
checkout_is_temporary: materialized.isTemporary,
|
|
77
|
+
checkout_path: materialized.isTemporary
|
|
78
|
+
? null
|
|
79
|
+
: materialized.checkoutPath,
|
|
80
|
+
directory_tree: directoryTree.entries,
|
|
81
|
+
environment: target.environment,
|
|
82
|
+
resolved_from: target.resolvedFrom,
|
|
83
|
+
tree_truncated: directoryTree.truncated,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
if (cleanupRootPath) {
|
|
88
|
+
try {
|
|
89
|
+
await fs.remove(cleanupRootPath);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Best-effort cleanup; do not mask primary result or error.
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=get-application-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-application-structure.js","sourceRoot":"","sources":["../../src/tools/get-application-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sCAAsC,GACvC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,kCAAkC,EAClC,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,kLAAkL;IACpL,WAAW,EAAE,OAAO,CAAC,sCAAsC;IAC3D,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,8BAA8B,CAAC;YAC3D,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,cAAc,CAAC,WAAW;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,CAAC,aAAa,iBAAiB,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,OAAO;gBACL,GAAG,sCAAsC,CAAC,WAAW,CAAC;gBACtD,sBAAsB,EAAE,oBAAoB,CAAC,IAAI,CAAC;gBAClD,qBAAqB,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBAChD,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;aACnC,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC;YAChD,GAAG;YACH,WAAW;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW;YAC9C,CAAC,CAAC,YAAY,CAAC,iBAAiB;YAChC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,sDAAsD,YAAY,CAAC,YAAY,EAAE,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,yBAAyB,CACnD,YAAY,CAAC,YAAY,EACzB;gBACE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClC,UAAU,EAAE,KAAK,CAAC,WAAW,IAAI,kCAAkC;aACpE,CACF,CAAC;YAEF,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,OAAO;gBACL,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,gBAAgB,EAAE,IAAI;gBACtB,sBAAsB,EAAE,oBAAoB,CAAC,IAAI,CAAC;gBAClD,qBAAqB,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBAChD,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,qBAAqB,EAAE,YAAY,CAAC,WAAW;gBAC/C,aAAa,EAAE,YAAY,CAAC,WAAW;oBACrC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,YAAY,CAAC,YAAY;gBAC7B,cAAc,EAAE,aAAa,CAAC,OAAO;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;gBAClC,cAAc,EAAE,aAAa,CAAC,SAAS;aACxC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,4DAA4D;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-application-summary.d.ts","sourceRoot":"","sources":["../../src/tools/get-application-summary.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,qBAAqB,EAAE,cAwCnC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ExportViewMode } from "@superblocksteam/shared";
|
|
2
|
+
import { applicationModeLabel, applicationModeNote, summarizeApplication, } from "../application/summary.js";
|
|
3
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
4
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
5
|
+
import { appTargetInputSchema, resolveAppTarget, } from "../target/resolve-app-target.js";
|
|
6
|
+
import * as schemas from "./schemas.js";
|
|
7
|
+
import { parseToolInput } from "./validation.js";
|
|
8
|
+
export const getApplicationSummary = {
|
|
9
|
+
name: "get_application_summary",
|
|
10
|
+
title: "Get Application Summary",
|
|
11
|
+
description: "Fetch a Superblocks application summary, including the owning organization ID, app mode, deployed commit ID when available, and resolved environment. Provide either app_url or application_id plus base_url.",
|
|
12
|
+
inputSchema: schemas.appTargetToolInputSchema,
|
|
13
|
+
annotations: {
|
|
14
|
+
readOnlyHint: true,
|
|
15
|
+
destructiveHint: false,
|
|
16
|
+
idempotentHint: true,
|
|
17
|
+
openWorldHint: true,
|
|
18
|
+
},
|
|
19
|
+
audience: "customer",
|
|
20
|
+
async handler(args) {
|
|
21
|
+
const input = parseToolInput(appTargetInputSchema, args);
|
|
22
|
+
const target = resolveAppTarget(input);
|
|
23
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
24
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
25
|
+
const application = await sdk.fetchApplication({
|
|
26
|
+
applicationId: target.applicationId,
|
|
27
|
+
branch: target.branch,
|
|
28
|
+
viewMode: ExportViewMode.EXPORT_LIVE,
|
|
29
|
+
});
|
|
30
|
+
if (!application) {
|
|
31
|
+
throw new Error(`Application ${target.applicationId} was not found.`);
|
|
32
|
+
}
|
|
33
|
+
const summary = summarizeApplication(application);
|
|
34
|
+
return {
|
|
35
|
+
...summary,
|
|
36
|
+
application_mode_label: applicationModeLabel(summary.application_mode),
|
|
37
|
+
application_mode_note: applicationModeNote(summary.application_mode),
|
|
38
|
+
auth_source: auth.source,
|
|
39
|
+
base_url: target.baseUrl,
|
|
40
|
+
branch: target.branch,
|
|
41
|
+
environment: target.environment,
|
|
42
|
+
resolved_from: target.resolvedFrom,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=get-application-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-application-summary.js","sourceRoot":"","sources":["../../src/tools/get-application-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,+MAA+M;IACjN,WAAW,EAAE,OAAO,CAAC,wBAAwB;IAC7C,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC;YAC7C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,cAAc,CAAC,WAAW;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,CAAC,aAAa,iBAAiB,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO;YACL,GAAG,OAAO;YACV,sBAAsB,EAAE,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACtE,qBAAqB,EAAE,mBAAmB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACpE,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-audit-events.d.ts","sourceRoot":"","sources":["../../src/tools/get-audit-events.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,cAAc,EAAE,cAkD5B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
2
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
3
|
+
import { getAuditEventsInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
|
|
4
|
+
import * as schemas from "./schemas.js";
|
|
5
|
+
import { parseToolInput } from "./validation.js";
|
|
6
|
+
export const getAuditEvents = {
|
|
7
|
+
name: "get_audit_events",
|
|
8
|
+
title: "Get Audit Events",
|
|
9
|
+
description: "Fetch v2 audit events (OCSF) for the current organization in a time range, with cursor pagination and OCSF filters. Use list_audit_event_types to discover all available class_uid, resource_type, and operation values for filtering.\n\n" +
|
|
10
|
+
"IMPORTANT — API execution double-counting: API execution events (class_uid=6003) are logged as start/completion pairs. " +
|
|
11
|
+
"Each execution produces two events with the same timestamp: a start event (status_id=99, no duration) and a completion event " +
|
|
12
|
+
"(status_id=1 for success or status_id=2 for failure, includes duration in ms). " +
|
|
13
|
+
"To count unique executions, filter to status_id != 99 (i.e. exclude IN_PROGRESS) or divide the raw class_uid=6003 count by 2.",
|
|
14
|
+
inputSchema: schemas.getAuditEventsToolInputSchema,
|
|
15
|
+
annotations: {
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: true,
|
|
20
|
+
},
|
|
21
|
+
audience: "customer",
|
|
22
|
+
async handler(args) {
|
|
23
|
+
const input = parseToolInput(getAuditEventsInputSchema, args);
|
|
24
|
+
const target = resolveBaseUrlTarget(input);
|
|
25
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
26
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
27
|
+
const response = await sdk.fetchAuditEvents({
|
|
28
|
+
activityId: input.activity_id,
|
|
29
|
+
applicationId: input.application_id,
|
|
30
|
+
timeStart: input.time_start,
|
|
31
|
+
timeEnd: input.time_end,
|
|
32
|
+
classUid: input.class_uid,
|
|
33
|
+
status: input.status,
|
|
34
|
+
severity: input.severity,
|
|
35
|
+
actor: input.actor,
|
|
36
|
+
resourceType: input.resource_type,
|
|
37
|
+
resourceId: input.resource_id,
|
|
38
|
+
search: input.search,
|
|
39
|
+
cursor: input.cursor,
|
|
40
|
+
limit: input.limit,
|
|
41
|
+
});
|
|
42
|
+
if (!Array.isArray(response?.events)) {
|
|
43
|
+
throw new Error("Invalid audit events response from SDK");
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
events: response.events,
|
|
47
|
+
next_cursor: response.next_cursor,
|
|
48
|
+
auth_source: auth.source,
|
|
49
|
+
base_url: target.baseUrl,
|
|
50
|
+
environment: target.environment,
|
|
51
|
+
total_count: response.events.length,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=get-audit-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-audit-events.js","sourceRoot":"","sources":["../../src/tools/get-audit-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,kBAAkB;IACzB,WAAW,EACT,4OAA4O;QAC5O,yHAAyH;QACzH,+HAA+H;QAC/H,iFAAiF;QACjF,+HAA+H;IACjI,WAAW,EAAE,OAAO,CAAC,6BAA6B;IAClD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC;YAC1C,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,aAAa,EAAE,KAAK,CAAC,cAAc;YACnC,SAAS,EAAE,KAAK,CAAC,UAAU;YAC3B,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,YAAY,EAAE,KAAK,CAAC,aAAa;YACjC,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;SACpC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-auth-status.d.ts","sourceRoot":"","sources":["../../src/tools/get-auth-status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,aAAa,EAAE,cA8B3B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getAuthSetupHint, getAuthStatusForOrigin, } from "../auth/resolve-auth.js";
|
|
2
|
+
import { authStatusInputSchema, resolveOriginTarget, } from "../target/resolve-app-target.js";
|
|
3
|
+
import * as schemas from "./schemas.js";
|
|
4
|
+
import { parseToolInput } from "./validation.js";
|
|
5
|
+
export const getAuthStatus = {
|
|
6
|
+
name: "get_auth_status",
|
|
7
|
+
title: "Get Auth Status",
|
|
8
|
+
description: "Check whether the current user is authenticated for a Superblocks environment derived from either an app_url or a base_url.",
|
|
9
|
+
inputSchema: schemas.authStatusToolInputSchema,
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
destructiveHint: false,
|
|
13
|
+
idempotentHint: true,
|
|
14
|
+
openWorldHint: false,
|
|
15
|
+
},
|
|
16
|
+
audience: "customer",
|
|
17
|
+
async handler(args) {
|
|
18
|
+
const input = parseToolInput(authStatusInputSchema, args);
|
|
19
|
+
const target = resolveOriginTarget(input);
|
|
20
|
+
const authStatus = await getAuthStatusForOrigin(target.baseUrl);
|
|
21
|
+
return {
|
|
22
|
+
authenticated: authStatus.authenticated,
|
|
23
|
+
auth_source: authStatus.source,
|
|
24
|
+
base_url: target.baseUrl,
|
|
25
|
+
environment: target.environment,
|
|
26
|
+
resolved_from: target.resolvedFrom,
|
|
27
|
+
setup_hint: authStatus.authenticated
|
|
28
|
+
? undefined
|
|
29
|
+
: getAuthSetupHint(target.baseUrl),
|
|
30
|
+
updated_at: authStatus.updatedAt,
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=get-auth-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-auth-status.js","sourceRoot":"","sources":["../../src/tools/get-auth-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,6HAA6H;IAC/H,WAAW,EAAE,OAAO,CAAC,yBAAyB;IAC9C,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhE,OAAO;YACL,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,WAAW,EAAE,UAAU,CAAC,MAAM;YAC9B,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,UAAU,EAAE,UAAU,CAAC,aAAa;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;YACpC,UAAU,EAAE,UAAU,CAAC,SAAS;SACjC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-billing-plan-summary.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-plan-summary.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,qBAAqB,EAAE,cA4BnC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
2
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
3
|
+
import { billingBaseUrlInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
|
|
4
|
+
import * as schemas from "./schemas.js";
|
|
5
|
+
import { parseToolInput } from "./validation.js";
|
|
6
|
+
export const getBillingPlanSummary = {
|
|
7
|
+
name: "get_billing_plan_summary",
|
|
8
|
+
title: "Get Billing Plan Summary",
|
|
9
|
+
description: "Get the current billing plan summary including credit allocation, usage, billing cycle dates, and deployed application counts. Requires billing:manage permission.",
|
|
10
|
+
inputSchema: schemas.getBillingPlanSummaryToolInputSchema,
|
|
11
|
+
annotations: {
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
destructiveHint: false,
|
|
14
|
+
idempotentHint: true,
|
|
15
|
+
openWorldHint: true,
|
|
16
|
+
},
|
|
17
|
+
audience: "customer",
|
|
18
|
+
async handler(args) {
|
|
19
|
+
const input = parseToolInput(billingBaseUrlInputSchema, args);
|
|
20
|
+
const target = resolveBaseUrlTarget(input);
|
|
21
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
22
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
23
|
+
const summary = await sdk.fetchBillingPlanSummary();
|
|
24
|
+
return {
|
|
25
|
+
auth_source: auth.source,
|
|
26
|
+
base_url: target.baseUrl,
|
|
27
|
+
environment: target.environment,
|
|
28
|
+
plan: summary,
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=get-billing-plan-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-billing-plan-summary.js","sourceRoot":"","sources":["../../src/tools/get-billing-plan-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,0BAA0B;IACjC,WAAW,EACT,oKAAoK;IACtK,WAAW,EAAE,OAAO,CAAC,oCAAoC;IACzD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAEpD,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-billing-usage-daily.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-usage-daily.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,oBAAoB,EAAE,cAqClC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
2
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
3
|
+
import { billingDateRangeInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
|
|
4
|
+
import * as schemas from "./schemas.js";
|
|
5
|
+
import { parseToolInput } from "./validation.js";
|
|
6
|
+
export const getBillingUsageDaily = {
|
|
7
|
+
name: "get_billing_usage_daily",
|
|
8
|
+
title: "Get Billing Usage (Daily)",
|
|
9
|
+
description: "Get daily AI credit usage for a date range. Returns one row per day with the total credits consumed. Requires billing:manage permission.",
|
|
10
|
+
inputSchema: schemas.getBillingUsageDailyToolInputSchema,
|
|
11
|
+
annotations: {
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
destructiveHint: false,
|
|
14
|
+
idempotentHint: true,
|
|
15
|
+
openWorldHint: true,
|
|
16
|
+
},
|
|
17
|
+
audience: "customer",
|
|
18
|
+
async handler(args) {
|
|
19
|
+
const input = parseToolInput(billingDateRangeInputSchema, args);
|
|
20
|
+
const target = resolveBaseUrlTarget(input);
|
|
21
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
22
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
23
|
+
const rows = await sdk.fetchBillingUsageDaily(input.start_date, input.end_date);
|
|
24
|
+
const totalCredits = rows.reduce((sum, r) => sum + r.creditsUsed, 0);
|
|
25
|
+
return {
|
|
26
|
+
auth_source: auth.source,
|
|
27
|
+
base_url: target.baseUrl,
|
|
28
|
+
daily_usage: rows,
|
|
29
|
+
end_date: input.end_date,
|
|
30
|
+
environment: target.environment,
|
|
31
|
+
start_date: input.start_date,
|
|
32
|
+
total_credits: totalCredits,
|
|
33
|
+
total_days: rows.length,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=get-billing-usage-daily.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-billing-usage-daily.js","sourceRoot":"","sources":["../../src/tools/get-billing-usage-daily.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,0IAA0I;IAC5I,WAAW,EAAE,OAAO,CAAC,mCAAmC;IACxD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,sBAAsB,CAC3C,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAErE,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,YAAY;YAC3B,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-billing-usage-records.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-usage-records.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiMpD,eAAO,MAAM,sBAAsB,EAAE,cAiIpC,CAAC"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
|
|
2
|
+
import { createSdk } from "../sdk/create-sdk.js";
|
|
3
|
+
import { billingUsageRecordsInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
|
|
4
|
+
import { applyPagination } from "./pagination.js";
|
|
5
|
+
import * as schemas from "./schemas.js";
|
|
6
|
+
import { parseToolInput } from "./validation.js";
|
|
7
|
+
const NO_CHECKPOINT_LABEL = "No checkpoint";
|
|
8
|
+
function buildCheckpointRollup(rows) {
|
|
9
|
+
const byCheckpoint = new Map();
|
|
10
|
+
let noCheckpoint = null;
|
|
11
|
+
for (const row of rows) {
|
|
12
|
+
// Treat a null, undefined, or empty checkpointId as "no checkpoint" so a
|
|
13
|
+
// malformed/empty id never becomes a phantom checkpoint entry. All credit
|
|
14
|
+
// sums are `?? 0`-guarded: the wire shape is a hand-maintained mirror with
|
|
15
|
+
// no runtime validation, and an absent numeric field must degrade a row to
|
|
16
|
+
// a 0 contribution, never NaN (NaN serializes to null and would silently
|
|
17
|
+
// corrupt the whole response's total).
|
|
18
|
+
if (!row.checkpointId) {
|
|
19
|
+
if (noCheckpoint === null) {
|
|
20
|
+
noCheckpoint = {
|
|
21
|
+
application_id: row.applicationId,
|
|
22
|
+
application_name: row.applicationName,
|
|
23
|
+
checkpoint_id: null,
|
|
24
|
+
checkpoint_label: NO_CHECKPOINT_LABEL,
|
|
25
|
+
credits_used: 0,
|
|
26
|
+
last_activity_date: row.date,
|
|
27
|
+
on_demand_credits_used: 0,
|
|
28
|
+
unbilled_credits_used: 0,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else if (noCheckpoint.application_id !== row.applicationId) {
|
|
32
|
+
// The bucket folds rows from more than one application (or a row with
|
|
33
|
+
// no application at all), so it is not attributable to a single app.
|
|
34
|
+
// Under an application_id filter every folded row shares one app, so
|
|
35
|
+
// this branch never fires and the bucket keeps that app's id/name.
|
|
36
|
+
noCheckpoint.application_id = null;
|
|
37
|
+
noCheckpoint.application_name = null;
|
|
38
|
+
}
|
|
39
|
+
noCheckpoint.credits_used += row.creditsUsed ?? 0;
|
|
40
|
+
noCheckpoint.on_demand_credits_used += row.onDemandCreditsUsed ?? 0;
|
|
41
|
+
noCheckpoint.unbilled_credits_used += row.unbilledCreditsUsed ?? 0;
|
|
42
|
+
if (row.date > noCheckpoint.last_activity_date) {
|
|
43
|
+
noCheckpoint.last_activity_date = row.date;
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const existing = byCheckpoint.get(row.checkpointId) ?? {
|
|
48
|
+
application_id: row.applicationId,
|
|
49
|
+
application_name: row.applicationName,
|
|
50
|
+
checkpoint_id: row.checkpointId,
|
|
51
|
+
checkpoint_label: row.checkpointLabel,
|
|
52
|
+
credits_used: 0,
|
|
53
|
+
last_activity_date: row.date,
|
|
54
|
+
on_demand_credits_used: 0,
|
|
55
|
+
unbilled_credits_used: 0,
|
|
56
|
+
};
|
|
57
|
+
existing.credits_used += row.creditsUsed ?? 0;
|
|
58
|
+
existing.on_demand_credits_used += row.onDemandCreditsUsed ?? 0;
|
|
59
|
+
existing.unbilled_credits_used += row.unbilledCreditsUsed ?? 0;
|
|
60
|
+
existing.checkpoint_label ??= row.checkpointLabel;
|
|
61
|
+
existing.application_id ??= row.applicationId;
|
|
62
|
+
existing.application_name ??= row.applicationName;
|
|
63
|
+
if (row.date > existing.last_activity_date) {
|
|
64
|
+
existing.last_activity_date = row.date;
|
|
65
|
+
}
|
|
66
|
+
byCheckpoint.set(row.checkpointId, existing);
|
|
67
|
+
}
|
|
68
|
+
const checkpoints = [...byCheckpoint.values()].sort((a, b) => b.credits_used - a.credits_used ||
|
|
69
|
+
b.last_activity_date.localeCompare(a.last_activity_date) ||
|
|
70
|
+
(a.checkpoint_id ?? "").localeCompare(b.checkpoint_id ?? ""));
|
|
71
|
+
if (noCheckpoint) {
|
|
72
|
+
// The "No checkpoint" bucket is always last, regardless of its credit total, so real checkpoints stay top-ranked.
|
|
73
|
+
checkpoints.push(noCheckpoint);
|
|
74
|
+
}
|
|
75
|
+
return checkpoints;
|
|
76
|
+
}
|
|
77
|
+
function matchesAppFilters(row, input) {
|
|
78
|
+
if (input.application_id && row.applicationId !== input.application_id) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
if (input.usage_type && row.usageType !== input.usage_type) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
function summarizePagination(paged) {
|
|
87
|
+
return {
|
|
88
|
+
has_more: paged.has_more,
|
|
89
|
+
limit: paged.limit,
|
|
90
|
+
next_offset: paged.next_offset,
|
|
91
|
+
offset: paged.offset,
|
|
92
|
+
returned_count: paged.returned_count,
|
|
93
|
+
total_count: paged.total_count,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function buildApplicationAggregates({ applicationUsageRows, dollarLedgerRows, }) {
|
|
97
|
+
const byApplication = new Map();
|
|
98
|
+
if (dollarLedgerRows.length > 0) {
|
|
99
|
+
for (const row of dollarLedgerRows) {
|
|
100
|
+
if (!row.applicationId) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const existing = byApplication.get(row.applicationId) ?? {
|
|
104
|
+
amount_cents: 0,
|
|
105
|
+
application_id: row.applicationId,
|
|
106
|
+
application_name: row.applicationName,
|
|
107
|
+
credits: null,
|
|
108
|
+
};
|
|
109
|
+
existing.amount_cents = (existing.amount_cents ?? 0) + row.amountCents;
|
|
110
|
+
existing.application_name ??= row.applicationName;
|
|
111
|
+
byApplication.set(row.applicationId, existing);
|
|
112
|
+
}
|
|
113
|
+
return [...byApplication.values()].sort((a, b) => (b.amount_cents ?? 0) - (a.amount_cents ?? 0) ||
|
|
114
|
+
(a.application_name ?? "").localeCompare(b.application_name ?? "") ||
|
|
115
|
+
a.application_id.localeCompare(b.application_id));
|
|
116
|
+
}
|
|
117
|
+
for (const row of applicationUsageRows) {
|
|
118
|
+
if (!row.applicationId) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const existing = byApplication.get(row.applicationId) ?? {
|
|
122
|
+
amount_cents: null,
|
|
123
|
+
application_id: row.applicationId,
|
|
124
|
+
application_name: row.applicationName,
|
|
125
|
+
credits: 0,
|
|
126
|
+
};
|
|
127
|
+
existing.credits = (existing.credits ?? 0) + (row.creditsUsed ?? 0);
|
|
128
|
+
byApplication.set(row.applicationId, existing);
|
|
129
|
+
}
|
|
130
|
+
return [...byApplication.values()].sort((a, b) => (b.credits ?? 0) - (a.credits ?? 0) ||
|
|
131
|
+
(a.application_name ?? "").localeCompare(b.application_name ?? "") ||
|
|
132
|
+
a.application_id.localeCompare(b.application_id));
|
|
133
|
+
}
|
|
134
|
+
export const getBillingUsageRecords = {
|
|
135
|
+
name: "get_billing_usage_records",
|
|
136
|
+
title: "Get Billing Usage Records",
|
|
137
|
+
description: "Get AI credit billing usage for a date range, rolled up per checkpoint (an accepted AI change). Each entry has checkpoint_id, checkpoint_label (the checkpoint's commit message; null when the commit had no message), application, credits_used, and overage splits. Usage not attributable to any checkpoint (history from before checkpoint tracking shipped, never-accepted prompts, and agent or utility usage) is aggregated into a single trailing entry with checkpoint_id null — expected, not missing data; older date ranges fall mostly in that bucket. Because that entry sorts last, it may sit past the requested page; no_checkpoint_credits always reports its credit total for the whole filtered range, so compare it against total_credits before summarizing a partial page. checkpoint_data_available is false when the server predates checkpoint rollups (no_checkpoint_credits is then null — unknowable, not zero). App filters (application_id, usage_type) scope every surface, including checkpoints. Pagination (limit/offset) applies only to the checkpoints list; by_application, dollar_ledger_records, and top_users are always full summaries. by_application credits are an independent server-side per-application total and are not expected to equal the sum of that application's checkpoints. Requires billing:manage permission.",
|
|
138
|
+
inputSchema: schemas.getBillingUsageRecordsToolInputSchema,
|
|
139
|
+
annotations: {
|
|
140
|
+
readOnlyHint: true,
|
|
141
|
+
destructiveHint: false,
|
|
142
|
+
idempotentHint: true,
|
|
143
|
+
openWorldHint: true,
|
|
144
|
+
},
|
|
145
|
+
audience: "customer",
|
|
146
|
+
async handler(args) {
|
|
147
|
+
const input = parseToolInput(billingUsageRecordsInputSchema, args);
|
|
148
|
+
const target = resolveBaseUrlTarget(input);
|
|
149
|
+
const auth = await resolveAuthForOrigin(target.baseUrl);
|
|
150
|
+
const sdk = createSdk(auth.token, target.baseUrl);
|
|
151
|
+
const response = await sdk.fetchBillingUsageRecordsResponse(input.start_date, input.end_date);
|
|
152
|
+
const hasAppScopedFilter = Boolean(input.application_id || input.usage_type);
|
|
153
|
+
const dollarLedgerRows = (response.dollarLedgerRows ?? []).filter((row) => matchesAppFilters(row, input));
|
|
154
|
+
const applicationUsageRows = (response.applicationUsageRows ?? []).filter((row) => matchesAppFilters(row, input));
|
|
155
|
+
const byApplication = buildApplicationAggregates({
|
|
156
|
+
applicationUsageRows,
|
|
157
|
+
dollarLedgerRows,
|
|
158
|
+
});
|
|
159
|
+
// Two separate questions. `hasUsageGroupRows` — did the server send the
|
|
160
|
+
// rollup collection? — drives which source computes the totals, so they
|
|
161
|
+
// always reconcile with `checkpoints`. `checkpoint_data_available` — does
|
|
162
|
+
// the server actually map usage to checkpoints? — is the presence of the
|
|
163
|
+
// checkpointId FIELD on the rows, not merely of the array: a pre-checkpoint
|
|
164
|
+
// server (the state between #20020 and #20888 landing) returns
|
|
165
|
+
// usageGroupRows with no checkpointId, and must report false so a consumer
|
|
166
|
+
// can tell "no rollup capability" from "rollup present, nothing mapped yet".
|
|
167
|
+
const usageGroupRows = response.usageGroupRows;
|
|
168
|
+
const hasUsageGroupRows = Array.isArray(usageGroupRows);
|
|
169
|
+
const checkpointDataAvailable = Array.isArray(usageGroupRows) &&
|
|
170
|
+
(usageGroupRows.length === 0 ||
|
|
171
|
+
usageGroupRows.some((row) => "checkpointId" in row));
|
|
172
|
+
const filteredGroupRows = (usageGroupRows ?? []).filter((row) => {
|
|
173
|
+
if (input.application_id && row.applicationId !== input.application_id) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
// Checkpoint rollups are AI-credit usage; any other usage type excludes them.
|
|
177
|
+
if (input.usage_type && input.usage_type !== "ai_credits") {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
return true;
|
|
181
|
+
});
|
|
182
|
+
const allCheckpoints = buildCheckpointRollup(filteredGroupRows);
|
|
183
|
+
// The trailing bucket sorts last, so pagination can leave it off the page
|
|
184
|
+
// while total_credits still includes it. This scalar keeps the unattributed
|
|
185
|
+
// total visible to consumers that never page. null = pre-rollup server,
|
|
186
|
+
// where attributability is unknowable (distinct from a known 0).
|
|
187
|
+
const noCheckpointCredits = hasUsageGroupRows
|
|
188
|
+
? (allCheckpoints.find((c) => c.checkpoint_id === null)?.credits_used ??
|
|
189
|
+
0)
|
|
190
|
+
: null;
|
|
191
|
+
const legacyRows = hasAppScopedFilter ? [] : response.rows;
|
|
192
|
+
// Every legacy path gets the same `?? 0` guard as the usageGroupRows path:
|
|
193
|
+
// these are hand-maintained wire mirrors with no runtime validation, and
|
|
194
|
+
// one absent creditsUsed must degrade that row to 0, never NaN-poison the
|
|
195
|
+
// total (NaN serializes to null and silently corrupts the response).
|
|
196
|
+
const totalCredits = hasUsageGroupRows
|
|
197
|
+
? filteredGroupRows.reduce((sum, r) => sum + (r.creditsUsed ?? 0), 0)
|
|
198
|
+
: hasAppScopedFilter
|
|
199
|
+
? // Sum real per-app credits from applicationUsageRows: by_application's
|
|
200
|
+
// `credits` is null in dollar-ledger mode, which would zero the total.
|
|
201
|
+
applicationUsageRows.reduce((sum, r) => sum + (r.creditsUsed ?? 0), 0)
|
|
202
|
+
: legacyRows.reduce((sum, r) => sum + (r.creditsUsed ?? 0), 0);
|
|
203
|
+
const byUser = new Map();
|
|
204
|
+
const userRows = hasUsageGroupRows ? filteredGroupRows : legacyRows;
|
|
205
|
+
for (const r of userRows) {
|
|
206
|
+
if (!r.email) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
byUser.set(r.email, (byUser.get(r.email) ?? 0) + (r.creditsUsed ?? 0));
|
|
210
|
+
}
|
|
211
|
+
const topUsers = [...byUser.entries()]
|
|
212
|
+
.sort((a, b) => b[1] - a[1])
|
|
213
|
+
.slice(0, 10)
|
|
214
|
+
.map(([email, credits]) => ({ email, credits }));
|
|
215
|
+
// `checkpoints` is the primary list and the only paginated collection; the
|
|
216
|
+
// pagination fields always describe it. `by_application`, `top_users`, and
|
|
217
|
+
// `dollar_ledger_records` are full app-scoped summaries, never paginated.
|
|
218
|
+
const checkpointPagination = applyPagination(allCheckpoints, {
|
|
219
|
+
limit: input.limit,
|
|
220
|
+
offset: input.offset,
|
|
221
|
+
});
|
|
222
|
+
const checkpoints = checkpointPagination.page;
|
|
223
|
+
const pageInfo = summarizePagination(checkpointPagination);
|
|
224
|
+
return {
|
|
225
|
+
auth_source: auth.source,
|
|
226
|
+
base_url: target.baseUrl,
|
|
227
|
+
by_application: byApplication,
|
|
228
|
+
checkpoint_data_available: checkpointDataAvailable,
|
|
229
|
+
checkpoints,
|
|
230
|
+
dollar_ledger_records: dollarLedgerRows,
|
|
231
|
+
end_date: input.end_date,
|
|
232
|
+
environment: target.environment,
|
|
233
|
+
has_more: pageInfo.has_more,
|
|
234
|
+
limit: pageInfo.limit,
|
|
235
|
+
next_offset: pageInfo.next_offset,
|
|
236
|
+
no_checkpoint_credits: noCheckpointCredits,
|
|
237
|
+
offset: pageInfo.offset,
|
|
238
|
+
returned_count: pageInfo.returned_count,
|
|
239
|
+
start_date: input.start_date,
|
|
240
|
+
top_users: topUsers,
|
|
241
|
+
total_count: pageInfo.total_count,
|
|
242
|
+
total_credits: totalCredits,
|
|
243
|
+
};
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
//# sourceMappingURL=get-billing-usage-records.js.map
|