@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.
- package/dist/auth/commands.d.ts.map +1 -1
- package/dist/auth/commands.js +6 -19
- package/dist/auth/commands.js.map +1 -1
- 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 +1 -1
- package/dist/auth/resolve-auth.d.ts.map +1 -1
- package/dist/auth/resolve-auth.js +19 -0
- package/dist/auth/resolve-auth.js.map +1 -1
- 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/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 +6 -0
- package/dist/entitlement.d.ts.map +1 -0
- package/dist/entitlement.js +26 -0
- package/dist/entitlement.js.map +1 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +8 -113
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- 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/setup/commands.d.ts +7 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +57 -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 +13 -0
- package/dist/target/resolve-app-target.d.ts.map +1 -1
- package/dist/target/resolve-app-target.js +16 -0
- package/dist/target/resolve-app-target.js.map +1 -1
- package/dist/target/resolve-base-url-target.d.ts +13 -1
- package/dist/target/resolve-base-url-target.d.ts.map +1 -1
- package/dist/target/resolve-base-url-target.js +11 -1
- package/dist/target/resolve-base-url-target.js.map +1 -1
- 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.map +1 -1
- package/dist/tool-call-result.js +4 -0
- package/dist/tool-call-result.js.map +1 -1
- 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/find-apps-by-integration.d.ts.map +1 -1
- package/dist/tools/find-apps-by-integration.js +14 -2
- package/dist/tools/find-apps-by-integration.js.map +1 -1
- package/dist/tools/find-apps-by-package.d.ts.map +1 -1
- package/dist/tools/find-apps-by-package.js +18 -2
- package/dist/tools/find-apps-by-package.js.map +1 -1
- package/dist/tools/get-application-deployment-history.d.ts.map +1 -1
- package/dist/tools/get-application-deployment-history.js +16 -5
- package/dist/tools/get-application-deployment-history.js.map +1 -1
- package/dist/tools/get-audit-events.d.ts.map +1 -1
- package/dist/tools/get-audit-events.js +5 -1
- package/dist/tools/get-audit-events.js.map +1 -1
- package/dist/tools/get-billing-usage-records.d.ts.map +1 -1
- package/dist/tools/get-billing-usage-records.js +14 -4
- package/dist/tools/get-billing-usage-records.js.map +1 -1
- 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/grant-resource-access.d.ts.map +1 -1
- package/dist/tools/grant-resource-access.js +5 -3
- package/dist/tools/grant-resource-access.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-applications.d.ts.map +1 -1
- package/dist/tools/list-applications.js +26 -15
- package/dist/tools/list-applications.js.map +1 -1
- package/dist/tools/list-integrations.d.ts.map +1 -1
- package/dist/tools/list-integrations.js +26 -13
- package/dist/tools/list-integrations.js.map +1 -1
- package/dist/tools/list-organization-agents.d.ts.map +1 -1
- package/dist/tools/list-organization-agents.js +7 -4
- package/dist/tools/list-organization-agents.js.map +1 -1
- package/dist/tools/list-roles.d.ts.map +1 -1
- package/dist/tools/list-roles.js +6 -3
- package/dist/tools/list-roles.js.map +1 -1
- 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/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/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +8 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/schemas.d.ts +13 -8
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +104 -13
- package/dist/tools/schemas.js.map +1 -1
- 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 +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":"
|
|
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"}
|
package/dist/tool-call-result.js
CHANGED
|
@@ -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 @@
|
|
|
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":"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,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8DAA8D;AAC9D,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,MAAM,yBAAyB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC1B,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,8DAA8D;QAC9D,4GAA4G;QAC5G,gIAAgI;IAClI,WAAW,EAAE,OAAO,CAAC,6BAA6B;IAClD,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,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,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;QAE3C,8CAA8C;QAC9C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAE9D,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,UAAU,GAAG,CAAC,MAAM,aAAa,CAAC;YACtC,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,yBAAyB,cAAc,UAAU,KAAK,CAAC,OAAO,EAAE;SACvE,CAAC,CAAuB,CAAC;QAE1B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,CAAC,OAAO,gDAAgD,CAClG,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,cAAc,GAAG,CAAC,MAAM,aAAa,CAAC;YAC1C,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,yBAAyB,cAAc,SAAS;SACvD,CAAC,CAAmE,CAAC;QAEtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CACvC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,MAAM,GAAG,CAAC,MAAM,aAAa,CAAC;YAClC,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,yBAAyB,cAAc,WAAW,aAAa,CAAC,EAAE,EAAE;YAC1E,IAAI,EAAE;gBACJ,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;aACnE;SACF,CAAC,CAAwC,CAAC;QAE3C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,uDAAuD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAChF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,UAAU,CAAC,KAAK;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-apps-by-integration.d.ts","sourceRoot":"","sources":["../../src/tools/find-apps-by-integration.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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;
|
|
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;
|
|
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
|
|
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: "
|
|
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":"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,4BAA4B,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,
|
|
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":"
|
|
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 {
|
|
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
|
|
10
|
-
inputSchema: schemas.
|
|
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(
|
|
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,
|
|
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,
|
|
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,
|
|
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":"
|
|
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 {
|
|
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(
|
|
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
|
-
|
|
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,
|
|
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 @@
|
|
|
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":"
|
|
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
|
|
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;
|
|
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":"
|
|
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"}
|