@knocklabs/agent-toolkit 0.1.1 → 0.1.3
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/ai-sdk/index.d.ts +21 -0
- package/dist/ai-sdk/index.js +47 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/ai-sdk/tool-converter.d.ts +12 -0
- package/dist/ai-sdk/tool-converter.js +7 -0
- package/dist/ai-sdk/tool-converter.js.map +1 -0
- package/dist/chunk-2CNJ4XX6.js +33 -0
- package/dist/chunk-2CNJ4XX6.js.map +1 -0
- package/dist/chunk-3LZK6RH6.js +29 -0
- package/dist/chunk-3LZK6RH6.js.map +1 -0
- package/dist/chunk-4VR65G5W.js +66 -0
- package/dist/chunk-4VR65G5W.js.map +1 -0
- package/dist/chunk-6H3BXH2Y.js +15 -0
- package/dist/chunk-6H3BXH2Y.js.map +1 -0
- package/dist/chunk-BY4KQPUO.js +39 -0
- package/dist/chunk-BY4KQPUO.js.map +1 -0
- package/dist/chunk-DSRTYV37.js +39 -0
- package/dist/chunk-DSRTYV37.js.map +1 -0
- package/dist/chunk-JTYQTWCX.js +75 -0
- package/dist/chunk-JTYQTWCX.js.map +1 -0
- package/dist/chunk-NZB2TMJW.js +92 -0
- package/dist/chunk-NZB2TMJW.js.map +1 -0
- package/dist/chunk-O6DWF42E.js +31 -0
- package/dist/chunk-O6DWF42E.js.map +1 -0
- package/dist/chunk-OD5VHBGN.js +32 -0
- package/dist/chunk-OD5VHBGN.js.map +1 -0
- package/dist/chunk-PDMA6RIB.js +19 -0
- package/dist/chunk-PDMA6RIB.js.map +1 -0
- package/dist/chunk-RYMJEH6P.js +140 -0
- package/dist/chunk-RYMJEH6P.js.map +1 -0
- package/dist/chunk-THLK376Y.js +191 -0
- package/dist/chunk-THLK376Y.js.map +1 -0
- package/dist/chunk-TLHETJRF.js +75 -0
- package/dist/chunk-TLHETJRF.js.map +1 -0
- package/dist/chunk-TOBLV65T.js +30 -0
- package/dist/chunk-TOBLV65T.js.map +1 -0
- package/dist/chunk-VJFA3ZVW.js +210 -0
- package/dist/chunk-VJFA3ZVW.js.map +1 -0
- package/dist/chunk-WB4XCCUS.js +19 -0
- package/dist/chunk-WB4XCCUS.js.map +1 -0
- package/dist/chunk-XRQWR3LY.js +184 -0
- package/dist/chunk-XRQWR3LY.js.map +1 -0
- package/dist/chunk-XUYE3AGB.js +27 -0
- package/dist/chunk-XUYE3AGB.js.map +1 -0
- package/dist/lib/knock-client.d.ts +4 -0
- package/dist/lib/knock-client.js +7 -0
- package/dist/lib/knock-client.js.map +1 -0
- package/dist/lib/knock-tool.d.ts +4 -0
- package/dist/lib/knock-tool.js +7 -0
- package/dist/lib/knock-tool.js.map +1 -0
- package/dist/lib/tools/channels.d.ts +13 -0
- package/dist/lib/tools/channels.js +10 -0
- package/dist/lib/tools/channels.js.map +1 -0
- package/dist/lib/tools/commits.d.ts +16 -0
- package/dist/lib/tools/commits.js +10 -0
- package/dist/lib/tools/commits.js.map +1 -0
- package/dist/lib/tools/email-layouts.d.ts +13 -0
- package/dist/lib/tools/email-layouts.js +10 -0
- package/dist/lib/tools/email-layouts.js.map +1 -0
- package/dist/lib/tools/environments.d.ts +13 -0
- package/dist/lib/tools/environments.js +10 -0
- package/dist/lib/tools/environments.js.map +1 -0
- package/dist/lib/tools/index.d.ts +4 -0
- package/dist/lib/tools/index.js +23 -0
- package/dist/lib/tools/index.js.map +1 -0
- package/dist/lib/tools/message-types.d.ts +15 -0
- package/dist/lib/tools/message-types.js +10 -0
- package/dist/lib/tools/message-types.js.map +1 -0
- package/dist/lib/tools/messages.d.ts +13 -0
- package/dist/lib/tools/messages.js +10 -0
- package/dist/lib/tools/messages.js.map +1 -0
- package/dist/lib/tools/objects.d.ts +19 -0
- package/dist/lib/tools/objects.js +10 -0
- package/dist/lib/tools/objects.js.map +1 -0
- package/dist/lib/tools/partials.d.ts +13 -0
- package/dist/lib/tools/partials.js +10 -0
- package/dist/lib/tools/partials.js.map +1 -0
- package/dist/lib/tools/tenants.d.ts +16 -0
- package/dist/lib/tools/tenants.js +10 -0
- package/dist/lib/tools/tenants.js.map +1 -0
- package/dist/lib/tools/users.d.ts +19 -0
- package/dist/lib/tools/users.js +10 -0
- package/dist/lib/tools/users.js.map +1 -0
- package/dist/lib/tools/workflows.d.ts +18 -0
- package/dist/lib/tools/workflows.js +10 -0
- package/dist/lib/tools/workflows.js.map +1 -0
- package/dist/lib/utils.d.ts +33 -0
- package/dist/lib/utils.js +24 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/modelcontextprotocol/adapter.d.ts +11 -0
- package/dist/modelcontextprotocol/adapter.js +7 -0
- package/dist/modelcontextprotocol/adapter.js.map +1 -0
- package/dist/modelcontextprotocol/index.d.ts +27 -0
- package/dist/modelcontextprotocol/index.js +21 -0
- package/dist/modelcontextprotocol/index.js.map +1 -0
- package/dist/modelcontextprotocol/local-server.d.ts +1 -0
- package/dist/modelcontextprotocol/local-server.js +86 -0
- package/dist/modelcontextprotocol/local-server.js.map +1 -0
- package/dist/openai/index.d.ts +36 -0
- package/dist/openai/index.js +86 -0
- package/dist/openai/index.js.map +1 -0
- package/dist/openai/tool-converter.d.ts +15 -0
- package/dist/openai/tool-converter.js +7 -0
- package/dist/openai/tool-converter.js.map +1 -0
- package/dist/types-B-9pppCQ.d.ts +199 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { T as ToolkitConfig, t as toolPermissions } from '../types-B-9pppCQ.js';
|
|
2
|
+
import { Tool } from 'ai';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '@knocklabs/node';
|
|
5
|
+
import '@knocklabs/mgmt';
|
|
6
|
+
|
|
7
|
+
declare const createKnockToolkit: (config: ToolkitConfig) => {
|
|
8
|
+
/**
|
|
9
|
+
* Get all tools for all categories
|
|
10
|
+
* @returns An array of all tools
|
|
11
|
+
*/
|
|
12
|
+
getAllTools: () => Tool[];
|
|
13
|
+
/**
|
|
14
|
+
* Get all tools for a specific category
|
|
15
|
+
* @param category - The category of tools to get
|
|
16
|
+
* @returns An array of tools for the given category
|
|
17
|
+
*/
|
|
18
|
+
getTools: (category: keyof typeof toolPermissions) => Tool[];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { createKnockToolkit };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
knockToolToAiTool
|
|
3
|
+
} from "../chunk-6H3BXH2Y.js";
|
|
4
|
+
import {
|
|
5
|
+
createKnockClient
|
|
6
|
+
} from "../chunk-3LZK6RH6.js";
|
|
7
|
+
import {
|
|
8
|
+
getToolsByPermissionsInCategories
|
|
9
|
+
} from "../chunk-4VR65G5W.js";
|
|
10
|
+
import "../chunk-NZB2TMJW.js";
|
|
11
|
+
import "../chunk-THLK376Y.js";
|
|
12
|
+
import "../chunk-OD5VHBGN.js";
|
|
13
|
+
import "../chunk-RYMJEH6P.js";
|
|
14
|
+
import "../chunk-BY4KQPUO.js";
|
|
15
|
+
import "../chunk-JTYQTWCX.js";
|
|
16
|
+
import "../chunk-VJFA3ZVW.js";
|
|
17
|
+
import "../chunk-XRQWR3LY.js";
|
|
18
|
+
import "../chunk-2CNJ4XX6.js";
|
|
19
|
+
import "../chunk-TLHETJRF.js";
|
|
20
|
+
import "../chunk-DSRTYV37.js";
|
|
21
|
+
import "../chunk-O6DWF42E.js";
|
|
22
|
+
import "../chunk-TOBLV65T.js";
|
|
23
|
+
|
|
24
|
+
// src/ai-sdk/index.ts
|
|
25
|
+
var createKnockToolkit = (config) => {
|
|
26
|
+
const knockClient = createKnockClient(config);
|
|
27
|
+
const allowedToolsByCategory = getToolsByPermissionsInCategories(config);
|
|
28
|
+
return {
|
|
29
|
+
/**
|
|
30
|
+
* Get all tools for all categories
|
|
31
|
+
* @returns An array of all tools
|
|
32
|
+
*/
|
|
33
|
+
getAllTools: () => Object.values(allowedToolsByCategory).flat().map((t) => knockToolToAiTool(knockClient, config, t)),
|
|
34
|
+
/**
|
|
35
|
+
* Get all tools for a specific category
|
|
36
|
+
* @param category - The category of tools to get
|
|
37
|
+
* @returns An array of tools for the given category
|
|
38
|
+
*/
|
|
39
|
+
getTools: (category) => allowedToolsByCategory[category].map(
|
|
40
|
+
(t) => knockToolToAiTool(knockClient, config, t)
|
|
41
|
+
)
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export {
|
|
45
|
+
createKnockToolkit
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ai-sdk/index.ts"],"sourcesContent":["import { ToolkitConfig } from \"../types.js\";\nimport { toolPermissions } from \"../lib/tools/index.js\";\nimport { getToolsByPermissionsInCategories } from \"../lib/utils.js\";\nimport { createKnockClient } from \"../lib/knock-client.js\";\nimport { Tool } from \"ai\";\nimport { knockToolToAiTool } from \"./tool-converter.js\";\n\nconst createKnockToolkit = (config: ToolkitConfig) => {\n const knockClient = createKnockClient(config);\n const allowedToolsByCategory = getToolsByPermissionsInCategories(config);\n\n return {\n /**\n * Get all tools for all categories\n * @returns An array of all tools\n */\n getAllTools: (): Tool[] =>\n Object.values(allowedToolsByCategory)\n .flat()\n .map((t) => knockToolToAiTool(knockClient, config, t)),\n\n /**\n * Get all tools for a specific category\n * @param category - The category of tools to get\n * @returns An array of tools for the given category\n */\n getTools: (category: keyof typeof toolPermissions): Tool[] =>\n allowedToolsByCategory[category].map((t) =>\n knockToolToAiTool(knockClient, config, t)\n ),\n };\n};\n\nexport { createKnockToolkit };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAM,qBAAqB,CAAC,WAA0B;AACpD,QAAM,cAAc,kBAAkB,MAAM;AAC5C,QAAM,yBAAyB,kCAAkC,MAAM;AAEvE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,aAAa,MACX,OAAO,OAAO,sBAAsB,EACjC,KAAK,EACL,IAAI,CAAC,MAAM,kBAAkB,aAAa,QAAQ,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOzD,UAAU,CAAC,aACT,uBAAuB,QAAQ,EAAE;AAAA,MAAI,CAAC,MACpC,kBAAkB,aAAa,QAAQ,CAAC;AAAA,IAC1C;AAAA,EACJ;AACF;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Tool } from 'ai';
|
|
2
|
+
import { K as KnockClient, C as Config, a as KnockTool } from '../types-B-9pppCQ.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '@knocklabs/node';
|
|
5
|
+
import '@knocklabs/mgmt';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Convert a KnockTool to an AI Tool, ready to pass to the AI SDK.
|
|
9
|
+
*/
|
|
10
|
+
declare const knockToolToAiTool: (knockClient: KnockClient, config: Config, knockTool: KnockTool) => Tool;
|
|
11
|
+
|
|
12
|
+
export { knockToolToAiTool };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/channels.ts
|
|
6
|
+
var listChannels = KnockTool({
|
|
7
|
+
method: "list_channels",
|
|
8
|
+
name: "List channels",
|
|
9
|
+
description: `
|
|
10
|
+
Returns a list of all of the channels configured in the account. Each channel returns information about the type of channel it is (email, sms, push, etc), and the provider that's used to power the channel.
|
|
11
|
+
|
|
12
|
+
Use this tool when you need to know about the channels configured in the Knock account, like when configuring a workflow.
|
|
13
|
+
`,
|
|
14
|
+
execute: (knockClient) => async (params) => {
|
|
15
|
+
const allChannels = [];
|
|
16
|
+
for await (const channel of knockClient.channels.list()) {
|
|
17
|
+
allChannels.push(channel);
|
|
18
|
+
}
|
|
19
|
+
return allChannels;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var channels = {
|
|
23
|
+
listChannels
|
|
24
|
+
};
|
|
25
|
+
var permissions = {
|
|
26
|
+
read: ["listChannels"]
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
channels,
|
|
31
|
+
permissions
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-2CNJ4XX6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/channels.ts"],"sourcesContent":["import { KnockTool } from \"../knock-tool.js\";\nimport { Channel } from \"@knocklabs/mgmt/resources/channels.js\";\n\nconst listChannels = KnockTool({\n method: \"list_channels\",\n name: \"List channels\",\n description: `\n Returns a list of all of the channels configured in the account. Each channel returns information about the type of channel it is (email, sms, push, etc), and the provider that's used to power the channel.\n\n Use this tool when you need to know about the channels configured in the Knock account, like when configuring a workflow.\n `,\n execute: (knockClient) => async (params) => {\n const allChannels: Channel[] = [];\n for await (const channel of knockClient.channels.list()) {\n allChannels.push(channel);\n }\n return allChannels;\n },\n});\n\nexport const channels = {\n listChannels,\n};\n\nexport const permissions = {\n read: [\"listChannels\"],\n};\n"],"mappings":";;;;;AAGA,IAAM,eAAe,UAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,cAAyB,CAAC;AAChC,qBAAiB,WAAW,YAAY,SAAS,KAAK,GAAG;AACvD,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,WAAW;AAAA,EACtB;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,cAAc;AACvB;","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/lib/knock-client.ts
|
|
2
|
+
import { Knock } from "@knocklabs/node";
|
|
3
|
+
import KnockMgmt from "@knocklabs/mgmt";
|
|
4
|
+
var serviceTokensToApiClients = {};
|
|
5
|
+
var createKnockClient = (config) => {
|
|
6
|
+
const client = new KnockMgmt({
|
|
7
|
+
serviceToken: config.serviceToken
|
|
8
|
+
});
|
|
9
|
+
return Object.assign(client, {
|
|
10
|
+
publicApi: async (_environment) => {
|
|
11
|
+
const environment = _environment ?? config.environment ?? "development";
|
|
12
|
+
if (serviceTokensToApiClients?.[config.serviceToken]?.[environment]) {
|
|
13
|
+
return serviceTokensToApiClients[config.serviceToken][environment];
|
|
14
|
+
}
|
|
15
|
+
const { api_key } = await client.apiKeys.exchange({ environment });
|
|
16
|
+
const knock = new Knock(api_key);
|
|
17
|
+
if (!serviceTokensToApiClients[config.serviceToken]) {
|
|
18
|
+
serviceTokensToApiClients[config.serviceToken] = {};
|
|
19
|
+
}
|
|
20
|
+
serviceTokensToApiClients[config.serviceToken][environment] = knock;
|
|
21
|
+
return knock;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
createKnockClient
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=chunk-3LZK6RH6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/knock-client.ts"],"sourcesContent":["import { Knock } from \"@knocklabs/node\";\nimport KnockMgmt from \"@knocklabs/mgmt\";\nimport { Config } from \"../types.js\";\n\nconst serviceTokensToApiClients: Record<string, Record<string, Knock>> = {};\n\ntype KnockClient = ReturnType<typeof createKnockClient>;\n\nconst createKnockClient = (config: Config) => {\n const client = new KnockMgmt({\n serviceToken: config.serviceToken,\n });\n\n return Object.assign(client, {\n publicApi: async (_environment?: string): Promise<Knock> => {\n const environment = _environment ?? config.environment ?? \"development\";\n\n // If the client already exists for this service token and environment, return it\n if (serviceTokensToApiClients?.[config.serviceToken]?.[environment]) {\n return serviceTokensToApiClients[config.serviceToken][environment];\n }\n\n // Otherwise, fetch a public API key for this service token and environment\n const { api_key } = await client.apiKeys.exchange({ environment });\n\n // Create a new Knock client with the public API key\n const knock = new Knock(api_key);\n\n // Store the client in the cache\n if (!serviceTokensToApiClients[config.serviceToken]) {\n serviceTokensToApiClients[config.serviceToken] = {};\n }\n\n serviceTokensToApiClients[config.serviceToken][environment] = knock;\n\n return knock;\n },\n });\n};\n\nexport { createKnockClient, type KnockClient };\n"],"mappings":";AAAA,SAAS,aAAa;AACtB,OAAO,eAAe;AAGtB,IAAM,4BAAmE,CAAC;AAI1E,IAAM,oBAAoB,CAAC,WAAmB;AAC5C,QAAM,SAAS,IAAI,UAAU;AAAA,IAC3B,cAAc,OAAO;AAAA,EACvB,CAAC;AAED,SAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,WAAW,OAAO,iBAA0C;AAC1D,YAAM,cAAc,gBAAgB,OAAO,eAAe;AAG1D,UAAI,4BAA4B,OAAO,YAAY,IAAI,WAAW,GAAG;AACnE,eAAO,0BAA0B,OAAO,YAAY,EAAE,WAAW;AAAA,MACnE;AAGA,YAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,QAAQ,SAAS,EAAE,YAAY,CAAC;AAGjE,YAAM,QAAQ,IAAI,MAAM,OAAO;AAG/B,UAAI,CAAC,0BAA0B,OAAO,YAAY,GAAG;AACnD,kCAA0B,OAAO,YAAY,IAAI,CAAC;AAAA,MACpD;AAEA,gCAA0B,OAAO,YAAY,EAAE,WAAW,IAAI;AAE9D,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toolPermissions,
|
|
3
|
+
tools
|
|
4
|
+
} from "./chunk-NZB2TMJW.js";
|
|
5
|
+
|
|
6
|
+
// src/lib/utils.ts
|
|
7
|
+
function filterTools(tools2, pattern) {
|
|
8
|
+
if (!pattern) {
|
|
9
|
+
throw new Error("No pattern provided");
|
|
10
|
+
}
|
|
11
|
+
if (pattern === "*") {
|
|
12
|
+
return Object.values(tools2).flatMap((category2) => Object.values(category2));
|
|
13
|
+
}
|
|
14
|
+
const [category, tool] = pattern.split(".");
|
|
15
|
+
if (category === "*" && tool === "*") {
|
|
16
|
+
return Object.values(tools2).flatMap((category2) => Object.values(category2));
|
|
17
|
+
}
|
|
18
|
+
if (category && !tools2[category]) {
|
|
19
|
+
throw new Error(`Tool category ${category} not found`);
|
|
20
|
+
}
|
|
21
|
+
if (category && tool === "*") {
|
|
22
|
+
return Object.values(tools2[category]);
|
|
23
|
+
}
|
|
24
|
+
if (category && tool && !tools2[category][tool]) {
|
|
25
|
+
throw new Error(`Tool ${pattern} not found`);
|
|
26
|
+
}
|
|
27
|
+
return [tools2[category][tool]];
|
|
28
|
+
}
|
|
29
|
+
function getToolsWithPermissions(category, categoryPermissions) {
|
|
30
|
+
const toolsInCategory = tools[category];
|
|
31
|
+
const toolPermissionsInCategory = toolPermissions[category];
|
|
32
|
+
return Object.entries(categoryPermissions).reduce(
|
|
33
|
+
(acc, [permissionType, hasPermission]) => {
|
|
34
|
+
if (hasPermission) {
|
|
35
|
+
return acc.concat(
|
|
36
|
+
toolPermissionsInCategory[permissionType].map(
|
|
37
|
+
(toolName) => toolsInCategory[toolName]
|
|
38
|
+
)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return acc;
|
|
42
|
+
},
|
|
43
|
+
[]
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
function getToolsByPermissionsInCategories(config) {
|
|
47
|
+
return Object.keys(config.permissions).reduce(
|
|
48
|
+
(acc, category) => {
|
|
49
|
+
const categoryKey = category;
|
|
50
|
+
const categoryPermissions = config.permissions[categoryKey];
|
|
51
|
+
if (tools[categoryKey] && categoryPermissions) {
|
|
52
|
+
const tools2 = getToolsWithPermissions(categoryKey, categoryPermissions);
|
|
53
|
+
return { ...acc, [categoryKey]: tools2 };
|
|
54
|
+
}
|
|
55
|
+
return acc;
|
|
56
|
+
},
|
|
57
|
+
{}
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
filterTools,
|
|
63
|
+
getToolsWithPermissions,
|
|
64
|
+
getToolsByPermissionsInCategories
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-4VR65G5W.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts"],"sourcesContent":["import { KnockTool } from \"./knock-tool.js\";\nimport { toolPermissions, tools } from \"../lib/tools/index.js\";\nimport { ToolkitConfig } from \"../types.js\";\nimport { ToolCategory } from \"../types.js\";\n\n/**\n * Given a list of tools, and some config may describe the tools that should be provided to the LLM,\n * returns a filtered list of tools that match the config.\n *\n * Options:\n * `*` - All tools\n * `users.*` - All tools that start with `users.`\n * `users.getUser` - A specific tool\n *\n */\nexport function filterTools(\n tools: Record<string, Record<string, KnockTool>>,\n pattern: string | undefined\n): KnockTool[] {\n if (!pattern) {\n throw new Error(\"No pattern provided\");\n }\n\n // If the pattern is `*`, return all tools\n if (pattern === \"*\") {\n return Object.values(tools).flatMap((category) => Object.values(category));\n }\n\n const [category, tool] = pattern.split(\".\");\n\n // If the pattern is `*.*`, return all tools\n if (category === \"*\" && tool === \"*\") {\n return Object.values(tools).flatMap((category) => Object.values(category));\n }\n\n if (category && !tools[category]) {\n throw new Error(`Tool category ${category} not found`);\n }\n\n // If the pattern is `users.*`, return all tools that start with `users.`\n if (category && tool === \"*\") {\n return Object.values(tools[category]);\n }\n\n // If the pattern is `users.getUser`, return the `getUser` tool\n if (category && tool && !tools[category][tool]) {\n throw new Error(`Tool ${pattern} not found`);\n }\n\n return [tools[category][tool]];\n}\n\n/**\n * Given a category and a list of permissions, return a list of tools that the user has permission to use.\n *\n * @param category - The category to get tools for\n * @param categoryPermissions - The permissions to use\n * @returns A list of tools that the user has permission to use\n */\nexport function getToolsWithPermissions(\n category: keyof typeof toolPermissions,\n categoryPermissions: Record<string, boolean | undefined>\n) {\n // Return all of the tools for the category that have permission\n const toolsInCategory = tools[category] as Record<string, KnockTool>;\n const toolPermissionsInCategory = toolPermissions[category] as Record<\n string,\n string[]\n >;\n\n // Look over each permission type, like `read: true`\n // If it's `true`, then find all of the tools that have that permission\n return Object.entries(categoryPermissions).reduce(\n (acc: KnockTool[], [permissionType, hasPermission]) => {\n if (hasPermission) {\n return acc.concat(\n toolPermissionsInCategory[permissionType].map(\n (toolName) => toolsInCategory[toolName]\n )\n );\n }\n return acc;\n },\n []\n );\n}\n\n/**\n * Given a config, return a list of tools for each category that the user has permission to use.\n *\n * @param config - The config to use\n * @returns A list of tools for each category that the user has permission to use\n */\nexport function getToolsByPermissionsInCategories(\n config: ToolkitConfig\n): Record<ToolCategory, KnockTool[]> {\n return Object.keys(config.permissions).reduce(\n (acc, category) => {\n const categoryKey = category as ToolCategory;\n const categoryPermissions = config.permissions[categoryKey];\n\n if (tools[categoryKey] && categoryPermissions) {\n const tools = getToolsWithPermissions(categoryKey, categoryPermissions);\n\n return { ...acc, [categoryKey]: tools };\n }\n\n return acc;\n },\n {} as Record<ToolCategory, KnockTool[]>\n );\n}\n"],"mappings":";;;;;;AAeO,SAAS,YACdA,QACA,SACa;AACb,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAGA,MAAI,YAAY,KAAK;AACnB,WAAO,OAAO,OAAOA,MAAK,EAAE,QAAQ,CAACC,cAAa,OAAO,OAAOA,SAAQ,CAAC;AAAA,EAC3E;AAEA,QAAM,CAAC,UAAU,IAAI,IAAI,QAAQ,MAAM,GAAG;AAG1C,MAAI,aAAa,OAAO,SAAS,KAAK;AACpC,WAAO,OAAO,OAAOD,MAAK,EAAE,QAAQ,CAACC,cAAa,OAAO,OAAOA,SAAQ,CAAC;AAAA,EAC3E;AAEA,MAAI,YAAY,CAACD,OAAM,QAAQ,GAAG;AAChC,UAAM,IAAI,MAAM,iBAAiB,QAAQ,YAAY;AAAA,EACvD;AAGA,MAAI,YAAY,SAAS,KAAK;AAC5B,WAAO,OAAO,OAAOA,OAAM,QAAQ,CAAC;AAAA,EACtC;AAGA,MAAI,YAAY,QAAQ,CAACA,OAAM,QAAQ,EAAE,IAAI,GAAG;AAC9C,UAAM,IAAI,MAAM,QAAQ,OAAO,YAAY;AAAA,EAC7C;AAEA,SAAO,CAACA,OAAM,QAAQ,EAAE,IAAI,CAAC;AAC/B;AASO,SAAS,wBACd,UACA,qBACA;AAEA,QAAM,kBAAkB,MAAM,QAAQ;AACtC,QAAM,4BAA4B,gBAAgB,QAAQ;AAO1D,SAAO,OAAO,QAAQ,mBAAmB,EAAE;AAAA,IACzC,CAAC,KAAkB,CAAC,gBAAgB,aAAa,MAAM;AACrD,UAAI,eAAe;AACjB,eAAO,IAAI;AAAA,UACT,0BAA0B,cAAc,EAAE;AAAA,YACxC,CAAC,aAAa,gBAAgB,QAAQ;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAQO,SAAS,kCACd,QACmC;AACnC,SAAO,OAAO,KAAK,OAAO,WAAW,EAAE;AAAA,IACrC,CAAC,KAAK,aAAa;AACjB,YAAM,cAAc;AACpB,YAAM,sBAAsB,OAAO,YAAY,WAAW;AAE1D,UAAI,MAAM,WAAW,KAAK,qBAAqB;AAC7C,cAAMA,SAAQ,wBAAwB,aAAa,mBAAmB;AAEtE,eAAO,EAAE,GAAG,KAAK,CAAC,WAAW,GAAGA,OAAM;AAAA,MACxC;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;","names":["tools","category"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/ai-sdk/tool-converter.ts
|
|
2
|
+
import { tool } from "ai";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
var knockToolToAiTool = (knockClient, config, knockTool) => {
|
|
5
|
+
return tool({
|
|
6
|
+
description: knockTool.description,
|
|
7
|
+
parameters: knockTool.parameters ?? z.object({}),
|
|
8
|
+
execute: knockTool.bindExecute(knockClient, config)
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
knockToolToAiTool
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=chunk-6H3BXH2Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ai-sdk/tool-converter.ts"],"sourcesContent":["import type { Tool } from \"ai\";\nimport { tool } from \"ai\";\nimport { KnockClient } from \"../lib/knock-client.js\";\nimport { KnockTool } from \"../lib/knock-tool.js\";\nimport { Config } from \"../types.js\";\nimport { z } from \"zod\";\n\n/**\n * Convert a KnockTool to an AI Tool, ready to pass to the AI SDK.\n */\nconst knockToolToAiTool = (\n knockClient: KnockClient,\n config: Config,\n knockTool: KnockTool\n): Tool => {\n return tool({\n description: knockTool.description,\n parameters: knockTool.parameters ?? z.object({}),\n execute: knockTool.bindExecute(knockClient, config),\n });\n};\n\nexport { knockToolToAiTool };\n"],"mappings":";AACA,SAAS,YAAY;AAIrB,SAAS,SAAS;AAKlB,IAAM,oBAAoB,CACxB,aACA,QACA,cACS;AACT,SAAO,KAAK;AAAA,IACV,aAAa,UAAU;AAAA,IACvB,YAAY,UAAU,cAAc,EAAE,OAAO,CAAC,CAAC;AAAA,IAC/C,SAAS,UAAU,YAAY,aAAa,MAAM;AAAA,EACpD,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/partials.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var listPartials = KnockTool({
|
|
8
|
+
method: "list_partials",
|
|
9
|
+
name: "List partials",
|
|
10
|
+
description: `List all partials within the environment given. Partials provide common building blocks for notification templates. Returns information about the partial, including the name and the key.
|
|
11
|
+
|
|
12
|
+
Use this tool when you need to know the available partials for the environment, like when building a notification template and wanting to use a partial to build the template.`,
|
|
13
|
+
parameters: z.object({
|
|
14
|
+
environment: z.string().describe(
|
|
15
|
+
"(string): The environment to list partials for. Defaults to `development`."
|
|
16
|
+
)
|
|
17
|
+
}),
|
|
18
|
+
execute: (knockClient, config) => async (params) => {
|
|
19
|
+
const allPartials = [];
|
|
20
|
+
for await (const partial of knockClient.partials.list({
|
|
21
|
+
environment: params.environment ?? config.environment ?? "development"
|
|
22
|
+
})) {
|
|
23
|
+
allPartials.push(partial);
|
|
24
|
+
}
|
|
25
|
+
return allPartials;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
var partials = {
|
|
29
|
+
listPartials
|
|
30
|
+
};
|
|
31
|
+
var permissions = {
|
|
32
|
+
read: ["listPartials"]
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
partials,
|
|
37
|
+
permissions
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=chunk-BY4KQPUO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/partials.ts"],"sourcesContent":["import { KnockTool } from \"../knock-tool.js\";\nimport { z } from \"zod\";\nimport { Partial } from \"@knocklabs/mgmt/resources/partials.js\";\n\nconst listPartials = KnockTool({\n method: \"list_partials\",\n name: \"List partials\",\n description: `List all partials within the environment given. Partials provide common building blocks for notification templates. Returns information about the partial, including the name and the key.\n \n Use this tool when you need to know the available partials for the environment, like when building a notification template and wanting to use a partial to build the template.`,\n parameters: z.object({\n environment: z\n .string()\n .describe(\n \"(string): The environment to list partials for. Defaults to `development`.\"\n ),\n }),\n execute: (knockClient, config) => async (params) => {\n const allPartials: Partial[] = [];\n for await (const partial of knockClient.partials.list({\n environment: params.environment ?? config.environment ?? \"development\",\n })) {\n allPartials.push(partial);\n }\n return allPartials;\n },\n});\n\nexport const partials = {\n listPartials,\n};\n\nexport const permissions = {\n read: [\"listPartials\"],\n};\n"],"mappings":";;;;;AACA,SAAS,SAAS;AAGlB,IAAM,eAAe,UAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA,EAGb,YAAY,EAAE,OAAO;AAAA,IACnB,aAAa,EACV,OAAO,EACP;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC;AAAA,EACD,SAAS,CAAC,aAAa,WAAW,OAAO,WAAW;AAClD,UAAM,cAAyB,CAAC;AAChC,qBAAiB,WAAW,YAAY,SAAS,KAAK;AAAA,MACpD,aAAa,OAAO,eAAe,OAAO,eAAe;AAAA,IAC3D,CAAC,GAAG;AACF,kBAAY,KAAK,OAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,WAAW;AAAA,EACtB;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,cAAc;AACvB;","names":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/email-layouts.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var listEmailLayouts = KnockTool({
|
|
8
|
+
method: "list_email_layouts",
|
|
9
|
+
name: "List email layouts",
|
|
10
|
+
description: `List all email layouts within the environment given. Returns information about the email layout, including the name and the key.
|
|
11
|
+
|
|
12
|
+
Use this tool when building a workflow that is building an email notification when you need to know the available email layouts.`,
|
|
13
|
+
parameters: z.object({
|
|
14
|
+
environment: z.string().describe(
|
|
15
|
+
"(string): The environment to list email layouts for. Defaults to `development`."
|
|
16
|
+
)
|
|
17
|
+
}),
|
|
18
|
+
execute: (knockClient, config) => async (params) => {
|
|
19
|
+
const allEmailLayouts = [];
|
|
20
|
+
for await (const emailLayout of knockClient.emailLayouts.list({
|
|
21
|
+
environment: params.environment ?? config.environment ?? "development"
|
|
22
|
+
})) {
|
|
23
|
+
allEmailLayouts.push(emailLayout);
|
|
24
|
+
}
|
|
25
|
+
return allEmailLayouts;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
var emailLayouts = {
|
|
29
|
+
listEmailLayouts
|
|
30
|
+
};
|
|
31
|
+
var permissions = {
|
|
32
|
+
read: ["listEmailLayouts"]
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
emailLayouts,
|
|
37
|
+
permissions
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=chunk-DSRTYV37.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/email-layouts.ts"],"sourcesContent":["import { EmailLayout } from \"@knocklabs/mgmt/resources/email-layouts.js\";\nimport { KnockTool } from \"../knock-tool.js\";\nimport { z } from \"zod\";\n\nconst listEmailLayouts = KnockTool({\n method: \"list_email_layouts\",\n name: \"List email layouts\",\n description: `List all email layouts within the environment given. Returns information about the email layout, including the name and the key. \n \n Use this tool when building a workflow that is building an email notification when you need to know the available email layouts.`,\n parameters: z.object({\n environment: z\n .string()\n .describe(\n \"(string): The environment to list email layouts for. Defaults to `development`.\"\n ),\n }),\n execute: (knockClient, config) => async (params) => {\n const allEmailLayouts: EmailLayout[] = [];\n for await (const emailLayout of knockClient.emailLayouts.list({\n environment: params.environment ?? config.environment ?? \"development\",\n })) {\n allEmailLayouts.push(emailLayout);\n }\n return allEmailLayouts;\n },\n});\n\nexport const emailLayouts = {\n listEmailLayouts,\n};\n\nexport const permissions = {\n read: [\"listEmailLayouts\"],\n};\n"],"mappings":";;;;;AAEA,SAAS,SAAS;AAElB,IAAM,mBAAmB,UAAU;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA,EAGb,YAAY,EAAE,OAAO;AAAA,IACnB,aAAa,EACV,OAAO,EACP;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC;AAAA,EACD,SAAS,CAAC,aAAa,WAAW,OAAO,WAAW;AAClD,UAAM,kBAAiC,CAAC;AACxC,qBAAiB,eAAe,YAAY,aAAa,KAAK;AAAA,MAC5D,aAAa,OAAO,eAAe,OAAO,eAAe;AAAA,IAC3D,CAAC,GAAG;AACF,sBAAgB,KAAK,WAAW;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,eAAe;AAAA,EAC1B;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,kBAAkB;AAC3B;","names":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/tenants.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var getTenant = KnockTool({
|
|
8
|
+
method: "get_tenant",
|
|
9
|
+
name: "Get tenant",
|
|
10
|
+
description: `
|
|
11
|
+
Retrieves a tenant by their ID. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.
|
|
12
|
+
|
|
13
|
+
Use this tool when you need to lookup the information about a tenant, including name, and if there are any custom properties set.
|
|
14
|
+
`,
|
|
15
|
+
parameters: z.object({
|
|
16
|
+
tenantId: z.string().describe("(string): The ID of the tenant to retrieve.")
|
|
17
|
+
}),
|
|
18
|
+
execute: (knockClient) => async (params) => {
|
|
19
|
+
const publicClient = await knockClient.publicApi();
|
|
20
|
+
return await publicClient.tenants.get(params.tenantId);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
var setTenant = KnockTool({
|
|
24
|
+
method: "set_tenant",
|
|
25
|
+
name: "Set tenant",
|
|
26
|
+
description: `
|
|
27
|
+
Creates or updates a tenant using the properties provided. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.
|
|
28
|
+
|
|
29
|
+
Use this tool when you need to create a new tenant, or update an existing tenant's properties.
|
|
30
|
+
`,
|
|
31
|
+
parameters: z.object({
|
|
32
|
+
tenantId: z.string().describe("(string): The ID of the tenant to update."),
|
|
33
|
+
name: z.string().describe("(string): The name of the tenant."),
|
|
34
|
+
properties: z.record(z.string(), z.any()).describe("(object): The properties to set on the tenant.")
|
|
35
|
+
}),
|
|
36
|
+
execute: (knockClient) => async (params) => {
|
|
37
|
+
const publicClient = await knockClient.publicApi();
|
|
38
|
+
return await publicClient.tenants.set(params.tenantId, {
|
|
39
|
+
name: params.name,
|
|
40
|
+
...params.properties
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
var deleteTenant = KnockTool({
|
|
45
|
+
method: "delete_tenant",
|
|
46
|
+
name: "Delete tenant",
|
|
47
|
+
description: `
|
|
48
|
+
Deletes a tenant. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.
|
|
49
|
+
|
|
50
|
+
Use this tool when you've been asked to remove a tenant from the system.
|
|
51
|
+
`,
|
|
52
|
+
parameters: z.object({
|
|
53
|
+
tenantId: z.string().describe("(string): The ID of the tenant to delete.")
|
|
54
|
+
}),
|
|
55
|
+
execute: (knockClient) => async (params) => {
|
|
56
|
+
const publicClient = await knockClient.publicApi();
|
|
57
|
+
await publicClient.tenants.delete(params.tenantId);
|
|
58
|
+
return { success: true };
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var tenants = {
|
|
62
|
+
getTenant,
|
|
63
|
+
setTenant,
|
|
64
|
+
deleteTenant
|
|
65
|
+
};
|
|
66
|
+
var permissions = {
|
|
67
|
+
read: ["getTenant"],
|
|
68
|
+
manage: ["setTenant", "deleteTenant"]
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
tenants,
|
|
73
|
+
permissions
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=chunk-JTYQTWCX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/tenants.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { KnockTool } from \"../knock-tool.js\";\n\nconst getTenant = KnockTool({\n method: \"get_tenant\",\n name: \"Get tenant\",\n description: `\n Retrieves a tenant by their ID. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.\n \n Use this tool when you need to lookup the information about a tenant, including name, and if there are any custom properties set.\n `,\n parameters: z.object({\n tenantId: z\n .string()\n .describe(\"(string): The ID of the tenant to retrieve.\"),\n }),\n execute: (knockClient) => async (params) => {\n const publicClient = await knockClient.publicApi();\n return await publicClient.tenants.get(params.tenantId);\n },\n});\n\nconst setTenant = KnockTool({\n method: \"set_tenant\",\n name: \"Set tenant\",\n description: `\n Creates or updates a tenant using the properties provided. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.\n \n Use this tool when you need to create a new tenant, or update an existing tenant's properties.\n `,\n parameters: z.object({\n tenantId: z.string().describe(\"(string): The ID of the tenant to update.\"),\n name: z.string().describe(\"(string): The name of the tenant.\"),\n properties: z\n .record(z.string(), z.any())\n .describe(\"(object): The properties to set on the tenant.\"),\n }),\n execute: (knockClient) => async (params) => {\n const publicClient = await knockClient.publicApi();\n return await publicClient.tenants.set(params.tenantId, {\n name: params.name,\n ...params.properties,\n });\n },\n});\n\nconst deleteTenant = KnockTool({\n method: \"delete_tenant\",\n name: \"Delete tenant\",\n description: `\n Deletes a tenant. Tenants in Knock are used to model organizations, teams, and other groups of users. They are a special type of object.\n \n Use this tool when you've been asked to remove a tenant from the system.\n `,\n parameters: z.object({\n tenantId: z.string().describe(\"(string): The ID of the tenant to delete.\"),\n }),\n execute: (knockClient) => async (params) => {\n const publicClient = await knockClient.publicApi();\n await publicClient.tenants.delete(params.tenantId);\n return { success: true };\n },\n});\n\nexport const tenants = {\n getTenant,\n setTenant,\n deleteTenant,\n};\n\nexport const permissions = {\n read: [\"getTenant\"],\n manage: [\"setTenant\", \"deleteTenant\"],\n};\n"],"mappings":";;;;;AAAA,SAAS,SAAS;AAGlB,IAAM,YAAY,UAAU;AAAA,EAC1B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,YAAY,EAAE,OAAO;AAAA,IACnB,UAAU,EACP,OAAO,EACP,SAAS,6CAA6C;AAAA,EAC3D,CAAC;AAAA,EACD,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,eAAe,MAAM,YAAY,UAAU;AACjD,WAAO,MAAM,aAAa,QAAQ,IAAI,OAAO,QAAQ;AAAA,EACvD;AACF,CAAC;AAED,IAAM,YAAY,UAAU;AAAA,EAC1B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,YAAY,EAAE,OAAO;AAAA,IACnB,UAAU,EAAE,OAAO,EAAE,SAAS,2CAA2C;AAAA,IACzE,MAAM,EAAE,OAAO,EAAE,SAAS,mCAAmC;AAAA,IAC7D,YAAY,EACT,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,CAAC,EAC1B,SAAS,gDAAgD;AAAA,EAC9D,CAAC;AAAA,EACD,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,eAAe,MAAM,YAAY,UAAU;AACjD,WAAO,MAAM,aAAa,QAAQ,IAAI,OAAO,UAAU;AAAA,MACrD,MAAM,OAAO;AAAA,MACb,GAAG,OAAO;AAAA,IACZ,CAAC;AAAA,EACH;AACF,CAAC;AAED,IAAM,eAAe,UAAU;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,YAAY,EAAE,OAAO;AAAA,IACnB,UAAU,EAAE,OAAO,EAAE,SAAS,2CAA2C;AAAA,EAC3E,CAAC;AAAA,EACD,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,eAAe,MAAM,YAAY,UAAU;AACjD,UAAM,aAAa,QAAQ,OAAO,OAAO,QAAQ;AACjD,WAAO,EAAE,SAAS,KAAK;AAAA,EACzB;AACF,CAAC;AAEM,IAAM,UAAU;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,WAAW;AAAA,EAClB,QAAQ,CAAC,aAAa,cAAc;AACtC;","names":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {
|
|
2
|
+
messageTypes,
|
|
3
|
+
permissions as permissions6
|
|
4
|
+
} from "./chunk-THLK376Y.js";
|
|
5
|
+
import {
|
|
6
|
+
messages,
|
|
7
|
+
permissions as permissions5
|
|
8
|
+
} from "./chunk-OD5VHBGN.js";
|
|
9
|
+
import {
|
|
10
|
+
objects,
|
|
11
|
+
permissions as permissions7
|
|
12
|
+
} from "./chunk-RYMJEH6P.js";
|
|
13
|
+
import {
|
|
14
|
+
partials,
|
|
15
|
+
permissions as permissions8
|
|
16
|
+
} from "./chunk-BY4KQPUO.js";
|
|
17
|
+
import {
|
|
18
|
+
permissions as permissions9,
|
|
19
|
+
tenants
|
|
20
|
+
} from "./chunk-JTYQTWCX.js";
|
|
21
|
+
import {
|
|
22
|
+
permissions as permissions10,
|
|
23
|
+
users
|
|
24
|
+
} from "./chunk-VJFA3ZVW.js";
|
|
25
|
+
import {
|
|
26
|
+
permissions as permissions11,
|
|
27
|
+
workflows
|
|
28
|
+
} from "./chunk-XRQWR3LY.js";
|
|
29
|
+
import {
|
|
30
|
+
channels,
|
|
31
|
+
permissions
|
|
32
|
+
} from "./chunk-2CNJ4XX6.js";
|
|
33
|
+
import {
|
|
34
|
+
commits,
|
|
35
|
+
permissions as permissions2
|
|
36
|
+
} from "./chunk-TLHETJRF.js";
|
|
37
|
+
import {
|
|
38
|
+
emailLayouts,
|
|
39
|
+
permissions as permissions3
|
|
40
|
+
} from "./chunk-DSRTYV37.js";
|
|
41
|
+
import {
|
|
42
|
+
environments,
|
|
43
|
+
permissions as permissions4
|
|
44
|
+
} from "./chunk-O6DWF42E.js";
|
|
45
|
+
|
|
46
|
+
// src/lib/tools/index.ts
|
|
47
|
+
var tools = {
|
|
48
|
+
channels,
|
|
49
|
+
commits,
|
|
50
|
+
emailLayouts,
|
|
51
|
+
environments,
|
|
52
|
+
messages,
|
|
53
|
+
messageTypes,
|
|
54
|
+
objects,
|
|
55
|
+
partials,
|
|
56
|
+
tenants,
|
|
57
|
+
users,
|
|
58
|
+
workflows
|
|
59
|
+
};
|
|
60
|
+
var allTools = {
|
|
61
|
+
...channels,
|
|
62
|
+
...commits,
|
|
63
|
+
...emailLayouts,
|
|
64
|
+
...environments,
|
|
65
|
+
...messageTypes,
|
|
66
|
+
...messages,
|
|
67
|
+
...objects,
|
|
68
|
+
...partials,
|
|
69
|
+
...tenants,
|
|
70
|
+
...users,
|
|
71
|
+
...workflows
|
|
72
|
+
};
|
|
73
|
+
var toolPermissions = {
|
|
74
|
+
channels: permissions,
|
|
75
|
+
commits: permissions2,
|
|
76
|
+
emailLayouts: permissions3,
|
|
77
|
+
environments: permissions4,
|
|
78
|
+
messages: permissions5,
|
|
79
|
+
messageTypes: permissions6,
|
|
80
|
+
objects: permissions7,
|
|
81
|
+
partials: permissions8,
|
|
82
|
+
tenants: permissions9,
|
|
83
|
+
users: permissions10,
|
|
84
|
+
workflows: permissions11
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
tools,
|
|
89
|
+
allTools,
|
|
90
|
+
toolPermissions
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=chunk-NZB2TMJW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/index.ts"],"sourcesContent":["import { channels, permissions as channelsPermissions } from \"./channels.js\";\nimport { commits, permissions as commitsPermissions } from \"./commits.js\";\nimport {\n emailLayouts,\n permissions as emailLayoutsPermissions,\n} from \"./email-layouts.js\";\nimport {\n environments,\n permissions as environmentsPermissions,\n} from \"./environments.js\";\nimport { messages, permissions as messagesPermissions } from \"./messages.js\";\nimport {\n messageTypes,\n permissions as messageTypesPermissions,\n} from \"./message-types.js\";\nimport { objects, permissions as objectsPermissions } from \"./objects.js\";\nimport { partials, permissions as partialsPermissions } from \"./partials.js\";\nimport { tenants, permissions as tenantsPermissions } from \"./tenants.js\";\nimport { users, permissions as usersPermissions } from \"./users.js\";\nimport { workflows, permissions as workflowsPermissions } from \"./workflows.js\";\n\nexport const tools = {\n channels,\n commits,\n emailLayouts,\n environments,\n messages,\n messageTypes,\n objects,\n partials,\n tenants,\n users,\n workflows,\n};\n\nexport const allTools = {\n ...channels,\n ...commits,\n ...emailLayouts,\n ...environments,\n ...messageTypes,\n ...messages,\n ...objects,\n ...partials,\n ...tenants,\n ...users,\n ...workflows,\n};\n\nexport const toolPermissions = {\n channels: channelsPermissions,\n commits: commitsPermissions,\n emailLayouts: emailLayoutsPermissions,\n environments: environmentsPermissions,\n messages: messagesPermissions,\n messageTypes: messageTypesPermissions,\n objects: objectsPermissions,\n partials: partialsPermissions,\n tenants: tenantsPermissions,\n users: usersPermissions,\n workflows: workflowsPermissions,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBO,IAAM,QAAQ;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,WAAW;AAAA,EACtB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEO,IAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,SAASA;AAAA,EACT,cAAcA;AAAA,EACd,cAAcA;AAAA,EACd,UAAUA;AAAA,EACV,cAAcA;AAAA,EACd,SAASA;AAAA,EACT,UAAUA;AAAA,EACV,SAASA;AAAA,EACT,OAAOA;AAAA,EACP,WAAWA;AACb;","names":["permissions"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/environments.ts
|
|
6
|
+
var listEnvironments = KnockTool({
|
|
7
|
+
method: "list_environments",
|
|
8
|
+
name: "List environments",
|
|
9
|
+
description: `
|
|
10
|
+
Lists all environments available, returning the slug, name, and the order of each environment. Use this tool when you need to see what environments are available to deploy to.
|
|
11
|
+
`,
|
|
12
|
+
execute: (knockClient) => async (params) => {
|
|
13
|
+
const allEnvironments = [];
|
|
14
|
+
for await (const environment of knockClient.environments.list()) {
|
|
15
|
+
allEnvironments.push(environment);
|
|
16
|
+
}
|
|
17
|
+
return allEnvironments;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
var environments = {
|
|
21
|
+
listEnvironments
|
|
22
|
+
};
|
|
23
|
+
var permissions = {
|
|
24
|
+
read: ["listEnvironments"]
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
environments,
|
|
29
|
+
permissions
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=chunk-O6DWF42E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/environments.ts"],"sourcesContent":["import { Environment } from \"@knocklabs/mgmt/resources/environments.js\";\nimport { KnockTool } from \"../knock-tool.js\";\n\nconst listEnvironments = KnockTool({\n method: \"list_environments\",\n name: \"List environments\",\n description: `\n Lists all environments available, returning the slug, name, and the order of each environment. Use this tool when you need to see what environments are available to deploy to.\n `,\n execute: (knockClient) => async (params) => {\n const allEnvironments: Environment[] = [];\n for await (const environment of knockClient.environments.list()) {\n allEnvironments.push(environment);\n }\n return allEnvironments;\n },\n});\n\nexport const environments = {\n listEnvironments,\n};\n\nexport const permissions = {\n read: [\"listEnvironments\"],\n};\n"],"mappings":";;;;;AAGA,IAAM,mBAAmB,UAAU;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA,EAGb,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,kBAAiC,CAAC;AACxC,qBAAiB,eAAe,YAAY,aAAa,KAAK,GAAG;AAC/D,sBAAgB,KAAK,WAAW;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,eAAe;AAAA,EAC1B;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,kBAAkB;AAC3B;","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KnockTool
|
|
3
|
+
} from "./chunk-TOBLV65T.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/tools/messages.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var getMessageContent = KnockTool({
|
|
8
|
+
method: "get_message_content",
|
|
9
|
+
name: "Get message content",
|
|
10
|
+
description: `
|
|
11
|
+
Retrieves the complete contents of a single message, specified by the messageId. The message contents includes the rendered template that was sent to the recipient. Use this tool when you want to surface information about the emails, SMS, and push notifications that were sent to a user.
|
|
12
|
+
`,
|
|
13
|
+
parameters: z.object({
|
|
14
|
+
messageId: z.string().describe("(string): The messageId of the message to retrieve.")
|
|
15
|
+
}),
|
|
16
|
+
execute: (knockClient) => async (params) => {
|
|
17
|
+
const publicClient = await knockClient.publicApi();
|
|
18
|
+
return await publicClient.messages.getContent(params.messageId);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
var messages = {
|
|
22
|
+
getMessageContent
|
|
23
|
+
};
|
|
24
|
+
var permissions = {
|
|
25
|
+
read: ["getMessageContent"]
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
messages,
|
|
30
|
+
permissions
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=chunk-OD5VHBGN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/tools/messages.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { KnockTool } from \"../knock-tool.js\";\n\nconst getMessageContent = KnockTool({\n method: \"get_message_content\",\n name: \"Get message content\",\n description: `\n Retrieves the complete contents of a single message, specified by the messageId. The message contents includes the rendered template that was sent to the recipient. Use this tool when you want to surface information about the emails, SMS, and push notifications that were sent to a user.\n `,\n parameters: z.object({\n messageId: z\n .string()\n .describe(\"(string): The messageId of the message to retrieve.\"),\n }),\n execute: (knockClient) => async (params) => {\n const publicClient = await knockClient.publicApi();\n return await publicClient.messages.getContent(params.messageId);\n },\n});\n\nexport const messages = {\n getMessageContent,\n};\n\nexport const permissions = {\n read: [\"getMessageContent\"],\n};\n"],"mappings":";;;;;AAAA,SAAS,SAAS;AAGlB,IAAM,oBAAoB,UAAU;AAAA,EAClC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA,EAGb,YAAY,EAAE,OAAO;AAAA,IACnB,WAAW,EACR,OAAO,EACP,SAAS,qDAAqD;AAAA,EACnE,CAAC;AAAA,EACD,SAAS,CAAC,gBAAgB,OAAO,WAAW;AAC1C,UAAM,eAAe,MAAM,YAAY,UAAU;AACjD,WAAO,MAAM,aAAa,SAAS,WAAW,OAAO,SAAS;AAAA,EAChE;AACF,CAAC;AAEM,IAAM,WAAW;AAAA,EACtB;AACF;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM,CAAC,mBAAmB;AAC5B;","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
allTools
|
|
3
|
+
} from "./chunk-NZB2TMJW.js";
|
|
4
|
+
import {
|
|
5
|
+
KnockMcpServer
|
|
6
|
+
} from "./chunk-XUYE3AGB.js";
|
|
7
|
+
|
|
8
|
+
// src/modelcontextprotocol/index.ts
|
|
9
|
+
var createKnockMcpServer = async (params) => {
|
|
10
|
+
const { tools, knockClient, config } = params;
|
|
11
|
+
return Promise.resolve(
|
|
12
|
+
new KnockMcpServer(knockClient, config, tools || Object.values(allTools))
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
createKnockMcpServer
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=chunk-PDMA6RIB.js.map
|