@superblocksteam/mcp-server 2.0.105 → 2.0.106-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/auth/commands.d.ts.map +1 -1
  2. package/dist/auth/commands.js +6 -19
  3. package/dist/auth/commands.js.map +1 -1
  4. package/dist/auth/context.d.ts +7 -0
  5. package/dist/auth/context.d.ts.map +1 -0
  6. package/dist/auth/context.js +9 -0
  7. package/dist/auth/context.js.map +1 -0
  8. package/dist/auth/login.d.ts +10 -0
  9. package/dist/auth/login.d.ts.map +1 -0
  10. package/dist/auth/login.js +48 -0
  11. package/dist/auth/login.js.map +1 -0
  12. package/dist/auth/resolve-auth.d.ts +1 -1
  13. package/dist/auth/resolve-auth.d.ts.map +1 -1
  14. package/dist/auth/resolve-auth.js +19 -0
  15. package/dist/auth/resolve-auth.js.map +1 -1
  16. package/dist/auth/resolve-current-organization.d.ts +6 -0
  17. package/dist/auth/resolve-current-organization.d.ts.map +1 -0
  18. package/dist/auth/resolve-current-organization.js +15 -0
  19. package/dist/auth/resolve-current-organization.js.map +1 -0
  20. package/dist/entitlement-wrapper.d.ts +3 -0
  21. package/dist/entitlement-wrapper.d.ts.map +1 -0
  22. package/dist/entitlement-wrapper.js +49 -0
  23. package/dist/entitlement-wrapper.js.map +1 -0
  24. package/dist/entitlement.d.ts +6 -0
  25. package/dist/entitlement.d.ts.map +1 -0
  26. package/dist/entitlement.js +26 -0
  27. package/dist/entitlement.js.map +1 -0
  28. package/dist/http.d.ts.map +1 -1
  29. package/dist/http.js +8 -113
  30. package/dist/http.js.map +1 -1
  31. package/dist/index.d.ts +6 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +13 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/jsonrpc.d.ts +25 -0
  36. package/dist/jsonrpc.d.ts.map +1 -0
  37. package/dist/jsonrpc.js +102 -0
  38. package/dist/jsonrpc.js.map +1 -0
  39. package/dist/setup/commands.d.ts +7 -0
  40. package/dist/setup/commands.d.ts.map +1 -0
  41. package/dist/setup/commands.js +57 -0
  42. package/dist/setup/commands.js.map +1 -0
  43. package/dist/setup/index.d.ts +5 -0
  44. package/dist/setup/index.d.ts.map +1 -0
  45. package/dist/setup/index.js +3 -0
  46. package/dist/setup/index.js.map +1 -0
  47. package/dist/setup/setup-config.d.ts +27 -0
  48. package/dist/setup/setup-config.d.ts.map +1 -0
  49. package/dist/setup/setup-config.js +100 -0
  50. package/dist/setup/setup-config.js.map +1 -0
  51. package/dist/target/resolve-app-target.d.ts +13 -0
  52. package/dist/target/resolve-app-target.d.ts.map +1 -1
  53. package/dist/target/resolve-app-target.js +16 -0
  54. package/dist/target/resolve-app-target.js.map +1 -1
  55. package/dist/target/resolve-base-url-target.d.ts +13 -1
  56. package/dist/target/resolve-base-url-target.d.ts.map +1 -1
  57. package/dist/target/resolve-base-url-target.js +11 -1
  58. package/dist/target/resolve-base-url-target.js.map +1 -1
  59. package/dist/test-setup.d.ts +2 -0
  60. package/dist/test-setup.d.ts.map +1 -0
  61. package/dist/test-setup.js +9 -0
  62. package/dist/test-setup.js.map +1 -0
  63. package/dist/tool-call-result.d.ts.map +1 -1
  64. package/dist/tool-call-result.js +4 -0
  65. package/dist/tool-call-result.js.map +1 -1
  66. package/dist/tools/deactivate-user.d.ts +3 -0
  67. package/dist/tools/deactivate-user.d.ts.map +1 -0
  68. package/dist/tools/deactivate-user.js +95 -0
  69. package/dist/tools/deactivate-user.js.map +1 -0
  70. package/dist/tools/find-apps-by-integration.d.ts.map +1 -1
  71. package/dist/tools/find-apps-by-integration.js +14 -2
  72. package/dist/tools/find-apps-by-integration.js.map +1 -1
  73. package/dist/tools/find-apps-by-package.d.ts.map +1 -1
  74. package/dist/tools/find-apps-by-package.js +18 -2
  75. package/dist/tools/find-apps-by-package.js.map +1 -1
  76. package/dist/tools/get-application-deployment-history.d.ts.map +1 -1
  77. package/dist/tools/get-application-deployment-history.js +16 -5
  78. package/dist/tools/get-application-deployment-history.js.map +1 -1
  79. package/dist/tools/get-audit-events.d.ts.map +1 -1
  80. package/dist/tools/get-audit-events.js +5 -1
  81. package/dist/tools/get-audit-events.js.map +1 -1
  82. package/dist/tools/get-billing-usage-records.d.ts.map +1 -1
  83. package/dist/tools/get-billing-usage-records.js +14 -4
  84. package/dist/tools/get-billing-usage-records.js.map +1 -1
  85. package/dist/tools/get-user-permissions.d.ts +3 -0
  86. package/dist/tools/get-user-permissions.d.ts.map +1 -0
  87. package/dist/tools/get-user-permissions.js +68 -0
  88. package/dist/tools/get-user-permissions.js.map +1 -0
  89. package/dist/tools/grant-resource-access.d.ts.map +1 -1
  90. package/dist/tools/grant-resource-access.js +5 -3
  91. package/dist/tools/grant-resource-access.js.map +1 -1
  92. package/dist/tools/index.d.ts.map +1 -1
  93. package/dist/tools/index.js +8 -0
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/list-applications.d.ts.map +1 -1
  96. package/dist/tools/list-applications.js +26 -15
  97. package/dist/tools/list-applications.js.map +1 -1
  98. package/dist/tools/list-integrations.d.ts.map +1 -1
  99. package/dist/tools/list-integrations.js +26 -13
  100. package/dist/tools/list-integrations.js.map +1 -1
  101. package/dist/tools/list-organization-agents.d.ts.map +1 -1
  102. package/dist/tools/list-organization-agents.js +7 -4
  103. package/dist/tools/list-organization-agents.js.map +1 -1
  104. package/dist/tools/list-roles.d.ts.map +1 -1
  105. package/dist/tools/list-roles.js +6 -3
  106. package/dist/tools/list-roles.js.map +1 -1
  107. package/dist/tools/list-users-by-role.d.ts +3 -0
  108. package/dist/tools/list-users-by-role.d.ts.map +1 -0
  109. package/dist/tools/list-users-by-role.js +74 -0
  110. package/dist/tools/list-users-by-role.js.map +1 -0
  111. package/dist/tools/list-users.d.ts +3 -0
  112. package/dist/tools/list-users.d.ts.map +1 -0
  113. package/dist/tools/list-users.js +69 -0
  114. package/dist/tools/list-users.js.map +1 -0
  115. package/dist/tools/org-user-types.d.ts +16 -0
  116. package/dist/tools/org-user-types.d.ts.map +1 -0
  117. package/dist/tools/org-user-types.js +2 -0
  118. package/dist/tools/org-user-types.js.map +1 -0
  119. package/dist/tools/pagination.d.ts +14 -0
  120. package/dist/tools/pagination.d.ts.map +1 -0
  121. package/dist/tools/pagination.js +21 -0
  122. package/dist/tools/pagination.js.map +1 -0
  123. package/dist/tools/registry.d.ts.map +1 -1
  124. package/dist/tools/registry.js +8 -1
  125. package/dist/tools/registry.js.map +1 -1
  126. package/dist/tools/schemas.d.ts +13 -8
  127. package/dist/tools/schemas.d.ts.map +1 -1
  128. package/dist/tools/schemas.js +104 -13
  129. package/dist/tools/schemas.js.map +1 -1
  130. package/dist/utils/args.d.ts +3 -0
  131. package/dist/utils/args.d.ts.map +1 -0
  132. package/dist/utils/args.js +15 -0
  133. package/dist/utils/args.js.map +1 -0
  134. package/dist/version.d.ts +2 -0
  135. package/dist/version.d.ts.map +1 -0
  136. package/dist/version.js +3 -0
  137. package/dist/version.js.map +1 -0
  138. package/package.json +23 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACzD,OAAO;QACL,GAAG,MAAM;QACT,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;KAC9B,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-result.d.ts","sourceRoot":"","sources":["../src/tool-call-result.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAiBF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAoBhC"}
1
+ {"version":3,"file":"tool-call-result.d.ts","sourceRoot":"","sources":["../src/tool-call-result.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAiBF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAwBhC"}
@@ -1,4 +1,5 @@
1
1
  import { McpError } from "@modelcontextprotocol/sdk/types.js";
2
+ import { EntitlementError } from "./entitlement.js";
2
3
  import { handleToolCall } from "./tools/index.js";
3
4
  function createToolCallResultPayload(text, options = {}) {
4
5
  return {
@@ -20,6 +21,9 @@ export async function executeToolCall(name, args, registry) {
20
21
  if (error instanceof McpError) {
21
22
  throw error;
22
23
  }
24
+ if (error instanceof EntitlementError) {
25
+ return createToolCallResultPayload(error.message, { isError: true });
26
+ }
23
27
  return createToolCallResultPayload(JSON.stringify({
24
28
  error: error instanceof Error ? error.message : String(error),
25
29
  }, null, 2), { isError: true });
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-result.js","sourceRoot":"","sources":["../src/tool-call-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAalD,SAAS,2BAA2B,CAClC,IAAY,EACZ,UAA8B,EAAE;IAEhC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI;aACL;SACF;QACD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAa,EACb,QAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,2BAA2B,CAChC,IAAI,CAAC,SAAS,CACZ;YACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,EACD,IAAI,EACJ,CAAC,CACF,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-call-result.js","sourceRoot":"","sources":["../src/tool-call-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAalD,SAAS,2BAA2B,CAClC,IAAY,EACZ,UAA8B,EAAE;IAEhC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI;aACL;SACF;QACD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAa,EACb,QAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,OAAO,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,2BAA2B,CAChC,IAAI,CAAC,SAAS,CACZ;YACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,EACD,IAAI,EACJ,CAAC,CACF,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "./registry.js";
2
+ export declare const deactivateUser: ToolDefinition;
3
+ //# sourceMappingURL=deactivate-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deactivate-user.d.ts","sourceRoot":"","sources":["../../src/tools/deactivate-user.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuBpD,eAAO,MAAM,cAAc,EAAE,cA0F5B,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { createSdk } from "../sdk/create-sdk.js";
4
+ import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
5
+ import * as schemas from "./schemas.js";
6
+ import { callServerApi } from "./server-api.js";
7
+ import { parseToolInput } from "./validation.js";
8
+ // Must match GroupType.ALL_USERS from @superblocksteam/shared
9
+ const ALL_USERS_GROUP_TYPE = 0;
10
+ const deactivateUserInputSchema = z
11
+ .object({
12
+ base_url: z.string().url(),
13
+ user_id: z.string().uuid(),
14
+ reason: z
15
+ .string()
16
+ .trim()
17
+ .min(1)
18
+ .optional()
19
+ .describe("Echoed in the response for the caller's own logging; not persisted server-side."),
20
+ })
21
+ .strict();
22
+ export const deactivateUser = {
23
+ name: "deactivate_user",
24
+ title: "Deactivate User",
25
+ description: "Deactivate a user account by user_id for incident response. " +
26
+ "This removes the user from all groups, revokes their RBAC assignments, and prevents them from logging in. " +
27
+ "Requires org admin privileges. Optionally include a reason, which is echoed back in the response for the caller's own logging.",
28
+ inputSchema: schemas.deactivateUserToolInputSchema,
29
+ annotations: {
30
+ readOnlyHint: false,
31
+ destructiveHint: true,
32
+ idempotentHint: false,
33
+ openWorldHint: true,
34
+ },
35
+ audience: "internal",
36
+ async handler(args) {
37
+ const input = parseToolInput(deactivateUserInputSchema, args);
38
+ const baseUrl = normalizeBaseUrl(input.base_url);
39
+ const auth = await resolveAuthForOrigin(baseUrl);
40
+ const sdk = createSdk(auth.token, baseUrl);
41
+ // Resolve the current user's organization ID.
42
+ const currentUser = await sdk.fetchCurrentUser();
43
+ const organizationId = currentUser.user.currentOrganizationId;
44
+ // Fetch the target user's details (we need their email for the group
45
+ // operations API that performs the actual deactivation).
46
+ const targetUser = (await callServerApi({
47
+ baseUrl,
48
+ token: auth.token,
49
+ method: "GET",
50
+ path: `/api/v1/organizations/${organizationId}/users/${input.user_id}`,
51
+ }));
52
+ if (!targetUser?.email) {
53
+ throw new Error(`Could not resolve email for user ${input.user_id}. The user may not exist in this organization.`);
54
+ }
55
+ // List organization groups and locate the "All Users" group.
56
+ const groupsResponse = (await callServerApi({
57
+ baseUrl,
58
+ token: auth.token,
59
+ method: "GET",
60
+ path: `/api/v1/organizations/${organizationId}/groups`,
61
+ }));
62
+ if (!Array.isArray(groupsResponse?.groups)) {
63
+ throw new Error("Unexpected response shape from groups endpoint.");
64
+ }
65
+ const allUsersGroup = groupsResponse.groups.find((g) => g.type === ALL_USERS_GROUP_TYPE);
66
+ if (!allUsersGroup) {
67
+ throw new Error("Could not find the All Users group in the organization.");
68
+ }
69
+ // Remove the user from the All Users group. On the server this triggers
70
+ // the full deactivation flow: sets the deactivated timestamp, deletes
71
+ // RBAC assignments, revokes pending invitations, and emits cloud events.
72
+ const result = (await callServerApi({
73
+ baseUrl,
74
+ token: auth.token,
75
+ method: "POST",
76
+ path: `/api/v1/organizations/${organizationId}/groups/${allUsersGroup.id}`,
77
+ body: {
78
+ operations: [{ email: targetUser.email, action: "REMOVE_MEMBER" }],
79
+ },
80
+ }));
81
+ if (result && typeof result === "object" && "errors" in result) {
82
+ throw new Error(`User deactivation may have failed. Server response: ${JSON.stringify(result)}`);
83
+ }
84
+ return {
85
+ result,
86
+ user_id: input.user_id,
87
+ user_email: targetUser.email,
88
+ reason: input.reason,
89
+ auth_source: auth.source,
90
+ base_url: baseUrl,
91
+ environment: detectEnvironment(baseUrl),
92
+ };
93
+ },
94
+ };
95
+ //# sourceMappingURL=deactivate-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deactivate-user.js","sourceRoot":"","sources":["../../src/tools/deactivate-user.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"find-apps-by-integration.d.ts","sourceRoot":"","sources":["../../src/tools/find-apps-by-integration.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAmCpD,eAAO,MAAM,qBAAqB,EAAE,cAsCnC,CAAC"}
1
+ {"version":3,"file":"find-apps-by-integration.d.ts","sourceRoot":"","sources":["../../src/tools/find-apps-by-integration.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAqCpD,eAAO,MAAM,qBAAqB,EAAE,cAgDnC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
3
  import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
4
+ import { applyPagination } from "./pagination.js";
4
5
  import * as schemas from "./schemas.js";
5
6
  import { callServerApi } from "./server-api.js";
6
7
  import { parseToolInput } from "./validation.js";
@@ -8,6 +9,8 @@ const findAppsByIntegrationInputSchema = z
8
9
  .object({
9
10
  base_url: z.string().url(),
10
11
  integration_id: z.string().uuid(),
12
+ limit: z.number().int().positive().max(200).optional(),
13
+ offset: z.number().int().nonnegative().optional(),
11
14
  })
12
15
  .strict();
13
16
  function normalizeApplicationsResponse(response) {
@@ -48,13 +51,22 @@ export const findAppsByIntegration = {
48
51
  },
49
52
  });
50
53
  const applications = normalizeApplicationsResponse(response);
54
+ const paged = applyPagination(applications, {
55
+ limit: input.limit,
56
+ offset: input.offset,
57
+ });
51
58
  return {
52
59
  integration_id: input.integration_id,
53
- applications,
60
+ applications: paged.page,
54
61
  auth_source: auth.source,
55
62
  base_url: baseUrl,
56
63
  environment: detectEnvironment(baseUrl),
57
- total_count: applications.length,
64
+ has_more: paged.has_more,
65
+ limit: paged.limit,
66
+ next_offset: paged.next_offset,
67
+ offset: paged.offset,
68
+ returned_count: paged.returned_count,
69
+ total_count: paged.total_count,
58
70
  };
59
71
  },
60
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"find-apps-by-integration.js","sourceRoot":"","sources":["../../src/tools/find-apps-by-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,gCAAgC,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAClC,CAAC;KACD,MAAM,EAAE,CAAC;AAQZ,SAAS,6BAA6B,CACpC,QAAiB;IAEjB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAiC,CAAC;IAC3C,CAAC;IACD,IACE,QAAQ;QACR,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,IAAI,QAAQ;QACnB,KAAK,CAAC,OAAO,CAAE,QAAoC,CAAC,KAAK,CAAC,EAC1D,CAAC;QACD,OAAQ,QAA6C,CAAC,KAAK,CAAC;IAC9D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,0BAA0B;IACjC,WAAW,EACT,uGAAuG;IACzG,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,gCAAgC,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;YACnC,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE;gBACL,aAAa,EAAE,KAAK,CAAC,cAAc;aACpC;SACF,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAE7D,OAAO;YACL,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,YAAY;YACZ,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACvC,WAAW,EAAE,YAAY,CAAC,MAAM;SACjC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"find-apps-by-integration.js","sourceRoot":"","sources":["../../src/tools/find-apps-by-integration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"find-apps-by-package.d.ts","sourceRoot":"","sources":["../../src/tools/find-apps-by-package.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgBpD,eAAO,MAAM,iBAAiB,EAAE,cAyE/B,CAAC"}
1
+ {"version":3,"file":"find-apps-by-package.d.ts","sourceRoot":"","sources":["../../src/tools/find-apps-by-package.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA6BpD,eAAO,MAAM,iBAAiB,EAAE,cAqF/B,CAAC"}
@@ -9,6 +9,15 @@ const findAppsByPackageInputSchema = z
9
9
  base_url: z.string().url(),
10
10
  package_name: z.string().trim().min(1),
11
11
  package_version: z.string().trim().min(1).optional(),
12
+ package_version_resolved: z.string().trim().min(1).optional(),
13
+ dependency_source: z
14
+ .enum(["root", "direct", "transitive"])
15
+ .describe("Filter by dependency source: 'root' (root package.json), 'direct' (any non-transitive), 'transitive' (lockfile-only)")
16
+ .optional(),
17
+ include_transitive: z
18
+ .boolean()
19
+ .describe("When false, excludes transitive (lockfile-only) dependencies. Defaults to true.")
20
+ .optional(),
12
21
  deployed: z.boolean().optional(),
13
22
  limit: z.number().int().min(1).max(200).optional(),
14
23
  offset: z.number().int().min(0).optional(),
@@ -17,7 +26,7 @@ const findAppsByPackageInputSchema = z
17
26
  export const findAppsByPackage = {
18
27
  name: "find_apps_by_package",
19
28
  title: "Find Apps by Package",
20
- description: "Find apps whose package usage index contains a declared package.json dependency. Supports filtering by deployed/non-deployed app commits with exact declared version string/range matching (not resolved lockfile versions).",
29
+ description: "Find apps whose package usage index contains a package dependency. Supports filtering by deployed/non-deployed commits, declared or resolved version, and dependency source (root, direct, transitive).",
21
30
  inputSchema: schemas.findAppsByPackageToolInputSchema,
22
31
  annotations: {
23
32
  readOnlyHint: true,
@@ -37,6 +46,9 @@ export const findAppsByPackage = {
37
46
  : input.deployed
38
47
  ? "true"
39
48
  : "false";
49
+ // If include_transitive is explicitly false and no dependency_source filter, default to 'direct'
50
+ const dependencySource = input.dependency_source ??
51
+ (input.include_transitive === false ? "direct" : undefined);
40
52
  const data = (await callServerApi({
41
53
  baseUrl,
42
54
  token: auth.token,
@@ -45,6 +57,8 @@ export const findAppsByPackage = {
45
57
  query: {
46
58
  package_name: input.package_name,
47
59
  package_version_declared: input.package_version,
60
+ package_version_resolved: input.package_version_resolved,
61
+ dependency_source: dependencySource,
48
62
  deployed,
49
63
  limit,
50
64
  offset,
@@ -58,11 +72,13 @@ export const findAppsByPackage = {
58
72
  deployed_filter: data.deployed_filter,
59
73
  package_name: data.package_name,
60
74
  package_version_declared: data.package_version_declared,
75
+ package_version_resolved: data.package_version_resolved,
76
+ dependency_source: data.dependency_source,
61
77
  limit: data.limit,
62
78
  offset: data.offset,
63
79
  total_matches: data.total,
64
80
  matches: data.items,
65
- note: "Set deployed=true for only deployed commits, deployed=false for only non-deployed commits, or omit deployed to search all indexed commits. Matching is exact on declared package.json strings/ranges and does not reflect resolved lockfile versions.",
81
+ note: "Results include dependency_source ('root' or 'transitive') and package_version_resolved (from lockfile). Use dependency_source filter to narrow results. Use include_transitive=false to exclude lockfile-only transitive deps.",
66
82
  auth_source: auth.source,
67
83
  base_url: baseUrl,
68
84
  environment: detectEnvironment(baseUrl),
@@ -1 +1 @@
1
- {"version":3,"file":"find-apps-by-package.js","sourceRoot":"","sources":["../../src/tools/find-apps-by-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-apps-by-package.js","sourceRoot":"","sources":["../../src/tools/find-apps-by-package.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-application-deployment-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-application-deployment-history.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,+BAA+B,EAAE,cA+B7C,CAAC"}
1
+ {"version":3,"file":"get-application-deployment-history.d.ts","sourceRoot":"","sources":["../../src/tools/get-application-deployment-history.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,+BAA+B,EAAE,cA6C7C,CAAC"}
@@ -1,13 +1,14 @@
1
1
  import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
2
2
  import { createSdk } from "../sdk/create-sdk.js";
3
- import { appTargetInputSchema, resolveAppTarget, } from "../target/resolve-app-target.js";
3
+ import { getApplicationDeploymentHistoryInputSchema, resolveAppTarget, } from "../target/resolve-app-target.js";
4
+ import { applyPagination } from "./pagination.js";
4
5
  import * as schemas from "./schemas.js";
5
6
  import { parseToolInput } from "./validation.js";
6
7
  export const getApplicationDeploymentHistory = {
7
8
  name: "get_application_deployment_history",
8
9
  title: "Get Application Deployment History",
9
- description: "Fetch the deployment timeline for a Superblocks application. Returns all deploy and undeploy events in reverse chronological order, including who performed each action and when. Undeploy entries have a null commitId. Supports either app_url or application_id plus base_url.",
10
- inputSchema: schemas.appTargetToolInputSchema,
10
+ description: "Fetch the deployment timeline for a Superblocks application. Returns deploy and undeploy events in reverse chronological order, including who performed each action and when. Undeploy entries have a null commitId. Supports either app_url or application_id plus base_url.",
11
+ inputSchema: schemas.getApplicationDeploymentHistoryToolInputSchema,
11
12
  annotations: {
12
13
  readOnlyHint: true,
13
14
  destructiveHint: false,
@@ -16,18 +17,28 @@ export const getApplicationDeploymentHistory = {
16
17
  },
17
18
  audience: "customer",
18
19
  async handler(args) {
19
- const input = parseToolInput(appTargetInputSchema, args);
20
+ const input = parseToolInput(getApplicationDeploymentHistoryInputSchema, args);
20
21
  const target = resolveAppTarget(input);
21
22
  const auth = await resolveAuthForOrigin(target.baseUrl);
22
23
  const sdk = createSdk(auth.token, target.baseUrl);
23
24
  const deployments = await sdk.fetchApplicationDeployments(target.applicationId);
25
+ const paged = applyPagination(deployments, {
26
+ limit: input.limit,
27
+ offset: input.offset,
28
+ });
24
29
  return {
25
30
  application_id: target.applicationId,
26
31
  auth_source: auth.source,
27
32
  base_url: target.baseUrl,
28
- deployments,
33
+ deployments: paged.page,
29
34
  environment: target.environment,
35
+ has_more: paged.has_more,
36
+ limit: paged.limit,
37
+ next_offset: paged.next_offset,
38
+ offset: paged.offset,
30
39
  resolved_from: target.resolvedFrom,
40
+ returned_count: paged.returned_count,
41
+ total_count: paged.total_count,
31
42
  };
32
43
  },
33
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-application-deployment-history.js","sourceRoot":"","sources":["../../src/tools/get-application-deployment-history.ts"],"names":[],"mappings":"AAAA,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,+BAA+B,GAAmB;IAC7D,IAAI,EAAE,oCAAoC;IAC1C,KAAK,EAAE,oCAAoC;IAC3C,WAAW,EACT,mRAAmR;IACrR,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,2BAA2B,CACvD,MAAM,CAAC,aAAa,CACrB,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,aAAa;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;SACnC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"get-application-deployment-history.js","sourceRoot":"","sources":["../../src/tools/get-application-deployment-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,+BAA+B,GAAmB;IAC7D,IAAI,EAAE,oCAAoC;IAC1C,KAAK,EAAE,oCAAoC;IAC3C,WAAW,EACT,+QAA+Q;IACjR,WAAW,EAAE,OAAO,CAAC,8CAA8C;IACnE,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,CAC1B,0CAA0C,EAC1C,IAAI,CACL,CAAC;QACF,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,2BAA2B,CACvD,MAAM,CAAC,aAAa,CACrB,CAAC;QAEF,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE;YACzC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,aAAa;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,WAAW,EAAE,KAAK,CAAC,IAAI;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1 +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,cA8C5B,CAAC"}
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"}
@@ -6,7 +6,11 @@ import { parseToolInput } from "./validation.js";
6
6
  export const getAuditEvents = {
7
7
  name: "get_audit_events",
8
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.",
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.",
10
14
  inputSchema: schemas.getAuditEventsToolInputSchema,
11
15
  annotations: {
12
16
  readOnlyHint: true,
@@ -1 +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,wOAAwO;IAC1O,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-billing-usage-records.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-usage-records.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,sBAAsB,EAAE,cA+CpC,CAAC"}
1
+ {"version":3,"file":"get-billing-usage-records.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-usage-records.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,eAAO,MAAM,sBAAsB,EAAE,cAyDpC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
2
2
  import { createSdk } from "../sdk/create-sdk.js";
3
- import { billingDateRangeInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
3
+ import { billingUsageRecordsInputSchema, resolveBaseUrlTarget, } from "../target/resolve-base-url-target.js";
4
+ import { applyPagination } from "./pagination.js";
4
5
  import * as schemas from "./schemas.js";
5
6
  import { parseToolInput } from "./validation.js";
6
7
  export const getBillingUsageRecords = {
@@ -16,7 +17,7 @@ export const getBillingUsageRecords = {
16
17
  },
17
18
  audience: "customer",
18
19
  async handler(args) {
19
- const input = parseToolInput(billingDateRangeInputSchema, args);
20
+ const input = parseToolInput(billingUsageRecordsInputSchema, args);
20
21
  const target = resolveBaseUrlTarget(input);
21
22
  const auth = await resolveAuthForOrigin(target.baseUrl);
22
23
  const sdk = createSdk(auth.token, target.baseUrl);
@@ -30,16 +31,25 @@ export const getBillingUsageRecords = {
30
31
  .sort((a, b) => b[1] - a[1])
31
32
  .slice(0, 10)
32
33
  .map(([email, credits]) => ({ email, credits }));
34
+ const paged = applyPagination(rows, {
35
+ limit: input.limit,
36
+ offset: input.offset,
37
+ });
33
38
  return {
34
39
  auth_source: auth.source,
35
40
  base_url: target.baseUrl,
36
41
  end_date: input.end_date,
37
42
  environment: target.environment,
38
- records: rows,
43
+ has_more: paged.has_more,
44
+ limit: paged.limit,
45
+ next_offset: paged.next_offset,
46
+ offset: paged.offset,
47
+ records: paged.page,
48
+ returned_count: paged.returned_count,
39
49
  start_date: input.start_date,
40
50
  top_users: topUsers,
51
+ total_count: paged.total_count,
41
52
  total_credits: totalCredits,
42
- total_records: rows.length,
43
53
  };
44
54
  },
45
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-billing-usage-records.js","sourceRoot":"","sources":["../../src/tools/get-billing-usage-records.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,sBAAsB,GAAmB;IACpD,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,+JAA+J;IACjK,WAAW,EAAE,OAAO,CAAC,qCAAqC;IAC1D,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,wBAAwB,CAC7C,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,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAEnD,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,IAAI,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"get-billing-usage-records.js","sourceRoot":"","sources":["../../src/tools/get-billing-usage-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "./registry.js";
2
+ export declare const getUserPermissions: ToolDefinition;
3
+ //# sourceMappingURL=get-user-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-permissions.d.ts","sourceRoot":"","sources":["../../src/tools/get-user-permissions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgDpD,eAAO,MAAM,kBAAkB,EAAE,cA4DhC,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { z } from "zod";
2
+ import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
4
+ import * as schemas from "./schemas.js";
5
+ import { callServerApi } from "./server-api.js";
6
+ import { parseToolInput } from "./validation.js";
7
+ const getUserPermissionsInputSchema = z
8
+ .object({
9
+ base_url: z.string().url(),
10
+ organization_id: z.string().uuid(),
11
+ user_id: z.string().uuid(),
12
+ })
13
+ .strict();
14
+ export const getUserPermissions = {
15
+ name: "get_user_permissions",
16
+ title: "Get User Permissions",
17
+ description: "Get all resources a user can access and their role on each, including assignments inherited through groups. Returns RBAC assignments across applications, integrations, workflows, and jobs. Useful for deprovisioning audits, compliance reviews, and access certification.",
18
+ inputSchema: schemas.getUserPermissionsToolInputSchema,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ destructiveHint: false,
22
+ idempotentHint: true,
23
+ openWorldHint: true,
24
+ },
25
+ audience: "customer",
26
+ async handler(args) {
27
+ const input = parseToolInput(getUserPermissionsInputSchema, args);
28
+ const baseUrl = normalizeBaseUrl(input.base_url);
29
+ const auth = await resolveAuthForOrigin(baseUrl);
30
+ const assignments = await callServerApi({
31
+ baseUrl,
32
+ token: auth.token,
33
+ method: "GET",
34
+ path: `/api/v1/organizations/${input.organization_id}/users/${input.user_id}/assignments`,
35
+ });
36
+ if (!Array.isArray(assignments)) {
37
+ throw new Error(`Unexpected response from user assignments API: expected array, got ${typeof assignments}`);
38
+ }
39
+ const assignmentsList = assignments;
40
+ return {
41
+ user_id: input.user_id,
42
+ organization_id: input.organization_id,
43
+ assignments: assignmentsList.map((a) => ({
44
+ id: a.id,
45
+ assignment_type: a.assignmentType,
46
+ resource_type: a.resourceType,
47
+ resource_id: a.resourceId,
48
+ principal_type: a.principalType,
49
+ principal_id: a.principalId,
50
+ role_name: a.role?.name ?? null,
51
+ role_id: a.role?.id ?? null,
52
+ permission: a.permission
53
+ ? {
54
+ action: a.permission.actionType,
55
+ resource: a.permission.resourceType,
56
+ }
57
+ : null,
58
+ resource_name: a.application?.name ?? a.integration?.name ?? a.api?.name ?? null,
59
+ inherited_via_group: a.group?.name ?? null,
60
+ })),
61
+ auth_source: auth.source,
62
+ base_url: baseUrl,
63
+ environment: detectEnvironment(baseUrl),
64
+ total_count: assignmentsList.length,
65
+ };
66
+ },
67
+ };
68
+ //# sourceMappingURL=get-user-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-permissions.js","sourceRoot":"","sources":["../../src/tools/get-user-permissions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"grant-resource-access.d.ts","sourceRoot":"","sources":["../../src/tools/grant-resource-access.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBpD,eAAO,MAAM,mBAAmB,EAAE,cAsCjC,CAAC"}
1
+ {"version":3,"file":"grant-resource-access.d.ts","sourceRoot":"","sources":["../../src/tools/grant-resource-access.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAwBpD,eAAO,MAAM,mBAAmB,EAAE,cA2CjC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { resolveAuthForOrigin } from "../auth/resolve-auth.js";
3
+ import { resolveCurrentOrganizationId } from "../auth/resolve-current-organization.js";
3
4
  import { createSdk } from "../sdk/create-sdk.js";
4
5
  import { detectEnvironment, normalizeBaseUrl } from "../urls.js";
5
6
  import * as schemas from "./schemas.js";
@@ -16,7 +17,6 @@ const grantResourceAccessInputSchema = z
16
17
  resource_id: z.string().min(1),
17
18
  principal_type: z.enum(["user", "group"]),
18
19
  principal_id: z.string().min(1),
19
- organization_id: z.string().uuid(),
20
20
  })
21
21
  .strict())
22
22
  .min(1),
@@ -25,7 +25,7 @@ const grantResourceAccessInputSchema = z
25
25
  export const grantResourceAccess = {
26
26
  name: "grant_resource_access",
27
27
  title: "Grant Resource Access",
28
- description: "Create RBAC assignments for a resource (roles or direct permissions).",
28
+ description: "Create RBAC assignments for a resource (roles or direct permissions). Organization scope is always the authenticated user's current organization (matches server enforcement).",
29
29
  inputSchema: schemas.grantResourceAccessToolInputSchema,
30
30
  annotations: {
31
31
  readOnlyHint: false,
@@ -38,6 +38,7 @@ export const grantResourceAccess = {
38
38
  const input = parseToolInput(grantResourceAccessInputSchema, args);
39
39
  const baseUrl = normalizeBaseUrl(input.base_url);
40
40
  const auth = await resolveAuthForOrigin(baseUrl);
41
+ const organizationId = await resolveCurrentOrganizationId(baseUrl, auth.token);
41
42
  const sdk = createSdk(auth.token, baseUrl);
42
43
  const assignments = await sdk.createRbacAssignments({
43
44
  assignments: input.assignments.map((a) => ({
@@ -47,11 +48,12 @@ export const grantResourceAccess = {
47
48
  resourceId: a.resource_id,
48
49
  principalType: a.principal_type,
49
50
  principalId: a.principal_id,
50
- organizationId: a.organization_id,
51
+ organizationId,
51
52
  })),
52
53
  });
53
54
  return {
54
55
  assignments,
56
+ organization_id: organizationId,
55
57
  auth_source: auth.source,
56
58
  base_url: baseUrl,
57
59
  environment: detectEnvironment(baseUrl),
@@ -1 +1 @@
1
- {"version":3,"file":"grant-resource-access.js","sourceRoot":"","sources":["../../src/tools/grant-resource-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,8BAA8B,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,WAAW,EAAE,CAAC;SACX,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;KACnC,CAAC;SACD,MAAM,EAAE,CACZ;SACA,GAAG,CAAC,CAAC,CAAC;CACV,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EACT,uEAAuE;IACzE,WAAW,EAAE,OAAO,CAAC,kCAAkC;IACvD,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;IACD,QAAQ,EAAE,UAAU;IACpB,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,cAAc,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC;YAClD,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,cAAc,EAAE,CAAC,CAAC,eAAe;gBACjC,YAAY,EAAE,CAAC,CAAC,aAAa;gBAC7B,YAAY,EAAE,CAAC,CAAC,aAAa;gBAC7B,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,aAAa,EAAE,CAAC,CAAC,cAAc;gBAC/B,WAAW,EAAE,CAAC,CAAC,YAAY;gBAC3B,cAAc,EAAE,CAAC,CAAC,eAAe;aAClC,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,OAAO;YACL,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACvC,WAAW,EAAE,WAAW,CAAC,MAAM;SAChC,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"grant-resource-access.js","sourceRoot":"","sources":["../../src/tools/grant-resource-access.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlE,eAAO,MAAM,eAAe,EAAE,cAAc,EA2C3C,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,oBAOvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlE,eAAO,MAAM,eAAe,EAAE,cAAc,EA+C3C,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,YAAY,oBAOvB"}