@superblocksteam/mcp-server 2.0.104 → 2.0.105-next.1
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/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-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-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-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-integrations.js +1 -1
- 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 +73 -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 +68 -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/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 +4 -0
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +96 -10
- 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
package/dist/index.js
CHANGED
|
@@ -6,10 +6,17 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
6
6
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
7
7
|
import pkg from "../package.json" with { type: "json" };
|
|
8
8
|
import { getMcpUsageText, maybeRunAuthCommand } from "./auth/commands.js";
|
|
9
|
+
import { maybeRunLoginCommand } from "./auth/login.js";
|
|
9
10
|
import { resolveProfile } from "./profile.js";
|
|
11
|
+
import { maybeRunSetupCommand } from "./setup/commands.js";
|
|
10
12
|
import { executeToolCall } from "./tool-call-result.js";
|
|
11
13
|
import { buildToolRegistry, toolDefinitions, } from "./tools/index.js";
|
|
12
14
|
export { resolveProfile } from "./profile.js";
|
|
15
|
+
export { executeToolCall } from "./tool-call-result.js";
|
|
16
|
+
export { buildToolRegistry, toolDefinitions } from "./tools/index.js";
|
|
17
|
+
export { getAuthContext, runWithAuthContext } from "./auth/context.js";
|
|
18
|
+
export { handleJsonRpc, invalidRequestResponse, isJsonRpcRequest, } from "./jsonrpc.js";
|
|
19
|
+
export { MCP_SERVER_VERSION } from "./version.js";
|
|
13
20
|
export async function startServer(options = {}) {
|
|
14
21
|
const profile = options.profile ?? resolveProfile();
|
|
15
22
|
const registry = buildToolRegistry(toolDefinitions, profile);
|
|
@@ -39,9 +46,15 @@ async function main() {
|
|
|
39
46
|
console.log(getMcpUsageText());
|
|
40
47
|
return;
|
|
41
48
|
}
|
|
49
|
+
if (await maybeRunLoginCommand(args)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
42
52
|
if (await maybeRunAuthCommand(args)) {
|
|
43
53
|
return;
|
|
44
54
|
}
|
|
55
|
+
if (await maybeRunSetupCommand(args)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
45
58
|
if (args.length > 0) {
|
|
46
59
|
throw new Error(`Unknown command '${args.join(" ")}'.\n\n${getMcpUsageText()}`);
|
|
47
60
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type JsonRpcRequest = {
|
|
2
|
+
jsonrpc: "2.0";
|
|
3
|
+
id?: string | number | null;
|
|
4
|
+
method: string;
|
|
5
|
+
params?: Record<string, unknown>;
|
|
6
|
+
};
|
|
7
|
+
export type JsonRpcResponse = {
|
|
8
|
+
jsonrpc: "2.0";
|
|
9
|
+
id: string | number | null;
|
|
10
|
+
result?: unknown;
|
|
11
|
+
error?: {
|
|
12
|
+
code: number;
|
|
13
|
+
message: string;
|
|
14
|
+
data?: unknown;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export type HandleJsonRpcOptions = {
|
|
18
|
+
version: string;
|
|
19
|
+
listTools: () => unknown[];
|
|
20
|
+
executeToolCall: (name: string, args: unknown) => Promise<unknown>;
|
|
21
|
+
};
|
|
22
|
+
export declare function isJsonRpcRequest(value: unknown): value is JsonRpcRequest;
|
|
23
|
+
export declare function invalidRequestResponse(): JsonRpcResponse;
|
|
24
|
+
export declare function handleJsonRpc(request: JsonRpcRequest, options: HandleJsonRpcOptions): Promise<JsonRpcResponse | null>;
|
|
25
|
+
//# sourceMappingURL=jsonrpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC;IAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CASxE;AAED,wBAAgB,sBAAsB,IAAI,eAAe,CAMxD;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAoGjC"}
|
package/dist/jsonrpc.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export function isJsonRpcRequest(value) {
|
|
2
|
+
return (typeof value === "object" &&
|
|
3
|
+
value !== null &&
|
|
4
|
+
"jsonrpc" in value &&
|
|
5
|
+
value.jsonrpc === "2.0" &&
|
|
6
|
+
"method" in value &&
|
|
7
|
+
typeof value.method === "string");
|
|
8
|
+
}
|
|
9
|
+
export function invalidRequestResponse() {
|
|
10
|
+
return {
|
|
11
|
+
jsonrpc: "2.0",
|
|
12
|
+
id: null,
|
|
13
|
+
error: { code: -32600, message: "Invalid Request" },
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export async function handleJsonRpc(request, options) {
|
|
17
|
+
const hasRequestId = Object.keys(request).includes("id");
|
|
18
|
+
const maybeRespond = (response) => hasRequestId ? response : null;
|
|
19
|
+
let id = null;
|
|
20
|
+
try {
|
|
21
|
+
id = hasRequestId ? (request.id ?? null) : null;
|
|
22
|
+
switch (request.method) {
|
|
23
|
+
case "initialize": {
|
|
24
|
+
return maybeRespond({
|
|
25
|
+
jsonrpc: "2.0",
|
|
26
|
+
id,
|
|
27
|
+
result: {
|
|
28
|
+
protocolVersion: "2025-03-26",
|
|
29
|
+
capabilities: { tools: {} },
|
|
30
|
+
serverInfo: {
|
|
31
|
+
name: "superblocks-mcp",
|
|
32
|
+
version: options.version,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
case "tools/list": {
|
|
38
|
+
return maybeRespond({
|
|
39
|
+
jsonrpc: "2.0",
|
|
40
|
+
id,
|
|
41
|
+
result: { tools: options.listTools() },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
case "tools/call": {
|
|
45
|
+
const params = request.params;
|
|
46
|
+
if (!params?.name) {
|
|
47
|
+
return maybeRespond({
|
|
48
|
+
jsonrpc: "2.0",
|
|
49
|
+
id,
|
|
50
|
+
error: { code: -32602, message: "Missing tool name" },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const result = await options.executeToolCall(params.name, params.arguments);
|
|
55
|
+
return maybeRespond({ jsonrpc: "2.0", id, result });
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const code = typeof error.code === "number"
|
|
59
|
+
? error.code
|
|
60
|
+
: -32603;
|
|
61
|
+
return maybeRespond({
|
|
62
|
+
jsonrpc: "2.0",
|
|
63
|
+
id,
|
|
64
|
+
error: {
|
|
65
|
+
code,
|
|
66
|
+
message: error instanceof Error
|
|
67
|
+
? error.message
|
|
68
|
+
: "Internal server error",
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
case "notifications/initialized": {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
case "ping": {
|
|
77
|
+
return maybeRespond({ jsonrpc: "2.0", id, result: {} });
|
|
78
|
+
}
|
|
79
|
+
default: {
|
|
80
|
+
return maybeRespond({
|
|
81
|
+
jsonrpc: "2.0",
|
|
82
|
+
id,
|
|
83
|
+
error: {
|
|
84
|
+
code: -32601,
|
|
85
|
+
message: `Method not found: ${request.method}`,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return maybeRespond({
|
|
93
|
+
jsonrpc: "2.0",
|
|
94
|
+
id,
|
|
95
|
+
error: {
|
|
96
|
+
code: -32603,
|
|
97
|
+
message: error instanceof Error ? error.message : "Internal server error",
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=jsonrpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type SetupCommandOptions = {
|
|
2
|
+
configPathOverride?: string;
|
|
3
|
+
resolveBinary?: () => string | undefined;
|
|
4
|
+
resolveCliBinary?: () => string | undefined;
|
|
5
|
+
};
|
|
6
|
+
export declare function maybeRunSetupCommand(args: string[], options?: SetupCommandOptions): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,mBAAmB,GAAG;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CAsElB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getFlagValue, hasFlag } from "../utils/args.js";
|
|
2
|
+
import { buildMcpEntry, configPathForClient, labelForClient, mergeMcpConfig, } from "./setup-config.js";
|
|
3
|
+
const VALID_CLIENTS = new Set(["claude", "cursor", "generic"]);
|
|
4
|
+
export async function maybeRunSetupCommand(args, options = {}) {
|
|
5
|
+
if (args.length === 0 || args[0] !== "setup") {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const subArgs = args.slice(1);
|
|
9
|
+
const clientRaw = getFlagValue(subArgs, "--client") ?? "generic";
|
|
10
|
+
if (!VALID_CLIENTS.has(clientRaw)) {
|
|
11
|
+
throw new Error(`Unknown client '${clientRaw}'. Valid options: ${[...VALID_CLIENTS].join(", ")}`);
|
|
12
|
+
}
|
|
13
|
+
const client = clientRaw;
|
|
14
|
+
const dryRun = hasFlag(subArgs, "--dry-run");
|
|
15
|
+
const configPath = options.configPathOverride ?? configPathForClient(client);
|
|
16
|
+
if (!configPath) {
|
|
17
|
+
console.log(`# MCP configuration for ${labelForClient(client)}`);
|
|
18
|
+
console.log("# Copy this into your MCP client configuration file:\n");
|
|
19
|
+
console.log(JSON.stringify({
|
|
20
|
+
mcpServers: {
|
|
21
|
+
superblocks: buildMcpEntry({
|
|
22
|
+
resolveBinary: options.resolveBinary,
|
|
23
|
+
resolveCliBinary: options.resolveCliBinary,
|
|
24
|
+
}),
|
|
25
|
+
},
|
|
26
|
+
}, null, 2));
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const { action, config } = await mergeMcpConfig(configPath, {
|
|
30
|
+
dryRun,
|
|
31
|
+
resolveBinary: options.resolveBinary,
|
|
32
|
+
resolveCliBinary: options.resolveCliBinary,
|
|
33
|
+
});
|
|
34
|
+
if (dryRun) {
|
|
35
|
+
console.log(`# MCP configuration for ${labelForClient(client)} (dry run)`);
|
|
36
|
+
console.log(`# Would write to: ${configPath}\n`);
|
|
37
|
+
console.log(JSON.stringify(config, null, 2));
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
switch (action) {
|
|
41
|
+
case "created":
|
|
42
|
+
console.log(`Wrote Superblocks MCP config to ${configPath}`);
|
|
43
|
+
break;
|
|
44
|
+
case "merged":
|
|
45
|
+
console.log(`Added Superblocks MCP server to ${configPath}`);
|
|
46
|
+
break;
|
|
47
|
+
case "updated":
|
|
48
|
+
console.log(`Updated Superblocks MCP server config in ${configPath}`);
|
|
49
|
+
break;
|
|
50
|
+
case "already_current":
|
|
51
|
+
console.log(`Superblocks MCP server is already configured in ${configPath}`);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
console.log(`Restart ${labelForClient(client)} to activate the MCP server.`);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/setup/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { maybeRunSetupCommand } from "./commands.js";
|
|
2
|
+
export type { SetupCommandOptions } from "./commands.js";
|
|
3
|
+
export { buildMcpEntry, configPathForClient, labelForClient, mergeMcpConfig, } from "./setup-config.js";
|
|
4
|
+
export type { McpClient, MergeAction, MergeResult } from "./setup-config.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type McpClient = "claude" | "cursor" | "generic";
|
|
2
|
+
type McpServerEntry = {
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
};
|
|
6
|
+
type McpConfig = {
|
|
7
|
+
mcpServers: Record<string, McpServerEntry>;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
};
|
|
10
|
+
export type MergeAction = "already_current" | "created" | "merged" | "updated";
|
|
11
|
+
export type MergeResult = {
|
|
12
|
+
action: MergeAction;
|
|
13
|
+
config: McpConfig;
|
|
14
|
+
};
|
|
15
|
+
export declare function buildMcpEntry(options?: {
|
|
16
|
+
resolveBinary?: () => string | undefined;
|
|
17
|
+
resolveCliBinary?: () => string | undefined;
|
|
18
|
+
}): McpServerEntry;
|
|
19
|
+
export declare function configPathForClient(client: McpClient): string | undefined;
|
|
20
|
+
export declare function labelForClient(client: McpClient): string;
|
|
21
|
+
export declare function mergeMcpConfig(configPath: string, options?: {
|
|
22
|
+
dryRun?: boolean;
|
|
23
|
+
resolveBinary?: () => string | undefined;
|
|
24
|
+
resolveCliBinary?: () => string | undefined;
|
|
25
|
+
}): Promise<MergeResult>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=setup-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-config.d.ts","sourceRoot":"","sources":["../../src/setup/setup-config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAwBF,wBAAgB,aAAa,CAC3B,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACxC,GACL,cAAc,CAuBhB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAExD;AAgBD,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACxC,GACL,OAAO,CAAC,WAAW,CAAC,CA0CtB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import fs from "fs-extra";
|
|
5
|
+
const CLIENT_CONFIG_PATHS = {
|
|
6
|
+
claude: path.join(os.homedir(), ".claude.json"),
|
|
7
|
+
cursor: path.join(os.homedir(), ".cursor", "mcp.json"),
|
|
8
|
+
};
|
|
9
|
+
const CLIENT_LABELS = {
|
|
10
|
+
claude: "Claude Code (~/.claude.json)",
|
|
11
|
+
cursor: "Cursor (~/.cursor/mcp.json)",
|
|
12
|
+
generic: "Generic MCP client",
|
|
13
|
+
};
|
|
14
|
+
function whichBinary(name) {
|
|
15
|
+
try {
|
|
16
|
+
return execFileSync("which", [name], {
|
|
17
|
+
encoding: "utf-8",
|
|
18
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
19
|
+
}).trim();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function buildMcpEntry(options = {}) {
|
|
26
|
+
const mcpBin = (options.resolveBinary ?? (() => whichBinary("superblocks-mcp")))();
|
|
27
|
+
if (mcpBin) {
|
|
28
|
+
return { command: mcpBin, args: [] };
|
|
29
|
+
}
|
|
30
|
+
const cliBin = (options.resolveCliBinary ?? (() => whichBinary("superblocks")))();
|
|
31
|
+
if (cliBin) {
|
|
32
|
+
return { command: cliBin, args: ["mcp", "serve"] };
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
command: "npx",
|
|
36
|
+
args: [
|
|
37
|
+
"-y",
|
|
38
|
+
"--registry=https://registry.npmjs.org",
|
|
39
|
+
"@superblocksteam/mcp-server@latest",
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function configPathForClient(client) {
|
|
44
|
+
return CLIENT_CONFIG_PATHS[client];
|
|
45
|
+
}
|
|
46
|
+
export function labelForClient(client) {
|
|
47
|
+
return CLIENT_LABELS[client] ?? client;
|
|
48
|
+
}
|
|
49
|
+
function deepEqual(a, b) {
|
|
50
|
+
if (a === b)
|
|
51
|
+
return true;
|
|
52
|
+
if (typeof a !== "object" || typeof b !== "object" || !a || !b)
|
|
53
|
+
return false;
|
|
54
|
+
const keysA = Object.keys(a);
|
|
55
|
+
const keysB = Object.keys(b);
|
|
56
|
+
if (keysA.length !== keysB.length)
|
|
57
|
+
return false;
|
|
58
|
+
return keysA.every((k) => deepEqual(a[k], b[k]));
|
|
59
|
+
}
|
|
60
|
+
export async function mergeMcpConfig(configPath, options = {}) {
|
|
61
|
+
const entry = buildMcpEntry({
|
|
62
|
+
resolveBinary: options.resolveBinary,
|
|
63
|
+
resolveCliBinary: options.resolveCliBinary,
|
|
64
|
+
});
|
|
65
|
+
let existing;
|
|
66
|
+
try {
|
|
67
|
+
existing = (await fs.readJson(configPath));
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const code = err.code;
|
|
71
|
+
if (code !== "ENOENT" && !(err instanceof SyntaxError)) {
|
|
72
|
+
throw new Error(`Cannot read MCP config at ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
let action;
|
|
76
|
+
if (!existing || typeof existing !== "object") {
|
|
77
|
+
existing = { mcpServers: {} };
|
|
78
|
+
action = "created";
|
|
79
|
+
}
|
|
80
|
+
else if (!existing.mcpServers || typeof existing.mcpServers !== "object") {
|
|
81
|
+
existing.mcpServers = {};
|
|
82
|
+
action = "created";
|
|
83
|
+
}
|
|
84
|
+
else if (deepEqual(existing.mcpServers.superblocks, entry)) {
|
|
85
|
+
action = "already_current";
|
|
86
|
+
}
|
|
87
|
+
else if (existing.mcpServers.superblocks) {
|
|
88
|
+
action = "updated";
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
action = "merged";
|
|
92
|
+
}
|
|
93
|
+
existing.mcpServers.superblocks = entry;
|
|
94
|
+
if (!options.dryRun && action !== "already_current") {
|
|
95
|
+
await fs.ensureDir(path.dirname(configPath));
|
|
96
|
+
await fs.writeJson(configPath, existing, { spaces: 2 });
|
|
97
|
+
}
|
|
98
|
+
return { action, config: existing };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=setup-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-config.js","sourceRoot":"","sources":["../../src/setup/setup-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":""}
|
|
@@ -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":"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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"}
|