@kelpi/mcp 0.1.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/README.md +312 -0
- package/bin/kelpi-mcp +3 -0
- package/dist/__tests__/integration-api/fixtures.d.ts +382 -0
- package/dist/__tests__/integration-api/fixtures.d.ts.map +1 -0
- package/dist/__tests__/integration-api/fixtures.js +478 -0
- package/dist/__tests__/integration-api/fixtures.js.map +1 -0
- package/dist/__tests__/integration-api/index.d.ts +19 -0
- package/dist/__tests__/integration-api/index.d.ts.map +1 -0
- package/dist/__tests__/integration-api/index.js +33 -0
- package/dist/__tests__/integration-api/index.js.map +1 -0
- package/dist/__tests__/integration-api/setup.d.ts +176 -0
- package/dist/__tests__/integration-api/setup.d.ts.map +1 -0
- package/dist/__tests__/integration-api/setup.js +329 -0
- package/dist/__tests__/integration-api/setup.js.map +1 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +11 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/unit/test-utils.d.ts +46 -0
- package/dist/__tests__/unit/test-utils.d.ts.map +1 -0
- package/dist/__tests__/unit/test-utils.js +50 -0
- package/dist/__tests__/unit/test-utils.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +17 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +169 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/auth-state.d.ts +54 -0
- package/dist/lib/auth-state.d.ts.map +1 -0
- package/dist/lib/auth-state.js +131 -0
- package/dist/lib/auth-state.js.map +1 -0
- package/dist/lib/config.d.ts +39 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +170 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/error-formatter.d.ts +40 -0
- package/dist/lib/error-formatter.d.ts.map +1 -0
- package/dist/lib/error-formatter.js +149 -0
- package/dist/lib/error-formatter.js.map +1 -0
- package/dist/lib/errors.d.ts +44 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +56 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/tool-helpers.d.ts +49 -0
- package/dist/lib/tool-helpers.d.ts.map +1 -0
- package/dist/lib/tool-helpers.js +101 -0
- package/dist/lib/tool-helpers.js.map +1 -0
- package/dist/lib/tool-registry.d.ts +111 -0
- package/dist/lib/tool-registry.d.ts.map +1 -0
- package/dist/lib/tool-registry.js +112 -0
- package/dist/lib/tool-registry.js.map +1 -0
- package/dist/lib/version.d.ts +13 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +13 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/prompts/flow-generator.d.ts +45 -0
- package/dist/prompts/flow-generator.d.ts.map +1 -0
- package/dist/prompts/flow-generator.js +177 -0
- package/dist/prompts/flow-generator.js.map +1 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +7 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/server.d.ts +66 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +140 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/auth/index.d.ts +18 -0
- package/dist/tools/auth/index.d.ts.map +1 -0
- package/dist/tools/auth/index.js +50 -0
- package/dist/tools/auth/index.js.map +1 -0
- package/dist/tools/auth/login.d.ts +37 -0
- package/dist/tools/auth/login.d.ts.map +1 -0
- package/dist/tools/auth/login.js +257 -0
- package/dist/tools/auth/login.js.map +1 -0
- package/dist/tools/auth/schemas.d.ts +69 -0
- package/dist/tools/auth/schemas.d.ts.map +1 -0
- package/dist/tools/auth/schemas.js +36 -0
- package/dist/tools/auth/schemas.js.map +1 -0
- package/dist/tools/auth/status.d.ts +11 -0
- package/dist/tools/auth/status.d.ts.map +1 -0
- package/dist/tools/auth/status.js +50 -0
- package/dist/tools/auth/status.js.map +1 -0
- package/dist/tools/contacts/create.d.ts +11 -0
- package/dist/tools/contacts/create.d.ts.map +1 -0
- package/dist/tools/contacts/create.js +47 -0
- package/dist/tools/contacts/create.js.map +1 -0
- package/dist/tools/contacts/index.d.ts +10 -0
- package/dist/tools/contacts/index.d.ts.map +1 -0
- package/dist/tools/contacts/index.js +40 -0
- package/dist/tools/contacts/index.js.map +1 -0
- package/dist/tools/contacts/schemas.d.ts +37 -0
- package/dist/tools/contacts/schemas.d.ts.map +1 -0
- package/dist/tools/contacts/schemas.js +15 -0
- package/dist/tools/contacts/schemas.js.map +1 -0
- package/dist/tools/events/index.d.ts +10 -0
- package/dist/tools/events/index.d.ts.map +1 -0
- package/dist/tools/events/index.js +42 -0
- package/dist/tools/events/index.js.map +1 -0
- package/dist/tools/events/schemas.d.ts +37 -0
- package/dist/tools/events/schemas.d.ts.map +1 -0
- package/dist/tools/events/schemas.js +17 -0
- package/dist/tools/events/schemas.js.map +1 -0
- package/dist/tools/events/track.d.ts +11 -0
- package/dist/tools/events/track.d.ts.map +1 -0
- package/dist/tools/events/track.js +41 -0
- package/dist/tools/events/track.js.map +1 -0
- package/dist/tools/flows/activate.d.ts +11 -0
- package/dist/tools/flows/activate.d.ts.map +1 -0
- package/dist/tools/flows/activate.js +46 -0
- package/dist/tools/flows/activate.js.map +1 -0
- package/dist/tools/flows/create.d.ts +11 -0
- package/dist/tools/flows/create.d.ts.map +1 -0
- package/dist/tools/flows/create.js +72 -0
- package/dist/tools/flows/create.js.map +1 -0
- package/dist/tools/flows/index.d.ts +24 -0
- package/dist/tools/flows/index.d.ts.map +1 -0
- package/dist/tools/flows/index.js +183 -0
- package/dist/tools/flows/index.js.map +1 -0
- package/dist/tools/flows/list.d.ts +11 -0
- package/dist/tools/flows/list.d.ts.map +1 -0
- package/dist/tools/flows/list.js +34 -0
- package/dist/tools/flows/list.js.map +1 -0
- package/dist/tools/flows/schemas.d.ts +621 -0
- package/dist/tools/flows/schemas.d.ts.map +1 -0
- package/dist/tools/flows/schemas.js +135 -0
- package/dist/tools/flows/schemas.js.map +1 -0
- package/dist/tools/flows/transform.d.ts +39 -0
- package/dist/tools/flows/transform.d.ts.map +1 -0
- package/dist/tools/flows/transform.js +139 -0
- package/dist/tools/flows/transform.js.map +1 -0
- package/dist/tools/index.d.ts +34 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +46 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/sdk/index.d.ts +18 -0
- package/dist/tools/sdk/index.d.ts.map +1 -0
- package/dist/tools/sdk/index.js +69 -0
- package/dist/tools/sdk/index.js.map +1 -0
- package/dist/tools/sdk/public-key.d.ts +11 -0
- package/dist/tools/sdk/public-key.d.ts.map +1 -0
- package/dist/tools/sdk/public-key.js +24 -0
- package/dist/tools/sdk/public-key.js.map +1 -0
- package/dist/tools/sdk/schemas.d.ts +48 -0
- package/dist/tools/sdk/schemas.d.ts.map +1 -0
- package/dist/tools/sdk/schemas.js +35 -0
- package/dist/tools/sdk/schemas.js.map +1 -0
- package/dist/tools/sdk/snippet.d.ts +11 -0
- package/dist/tools/sdk/snippet.d.ts.map +1 -0
- package/dist/tools/sdk/snippet.js +50 -0
- package/dist/tools/sdk/snippet.js.map +1 -0
- package/dist/tools/sdk/templates/index.d.ts +5 -0
- package/dist/tools/sdk/templates/index.d.ts.map +1 -0
- package/dist/tools/sdk/templates/index.js +5 -0
- package/dist/tools/sdk/templates/index.js.map +1 -0
- package/dist/tools/sdk/templates/nextjs.d.ts +5 -0
- package/dist/tools/sdk/templates/nextjs.d.ts.map +1 -0
- package/dist/tools/sdk/templates/nextjs.js +71 -0
- package/dist/tools/sdk/templates/nextjs.js.map +1 -0
- package/dist/tools/sdk/templates/node.d.ts +9 -0
- package/dist/tools/sdk/templates/node.d.ts.map +1 -0
- package/dist/tools/sdk/templates/node.js +170 -0
- package/dist/tools/sdk/templates/node.js.map +1 -0
- package/dist/tools/sdk/templates/react.d.ts +5 -0
- package/dist/tools/sdk/templates/react.d.ts.map +1 -0
- package/dist/tools/sdk/templates/react.js +54 -0
- package/dist/tools/sdk/templates/react.js.map +1 -0
- package/dist/tools/sdk/templates/vanilla.d.ts +5 -0
- package/dist/tools/sdk/templates/vanilla.d.ts.map +1 -0
- package/dist/tools/sdk/templates/vanilla.js +61 -0
- package/dist/tools/sdk/templates/vanilla.js.map +1 -0
- package/dist/tools/templates/create.d.ts +11 -0
- package/dist/tools/templates/create.d.ts.map +1 -0
- package/dist/tools/templates/create.js +39 -0
- package/dist/tools/templates/create.js.map +1 -0
- package/dist/tools/templates/index.d.ts +17 -0
- package/dist/tools/templates/index.d.ts.map +1 -0
- package/dist/tools/templates/index.js +68 -0
- package/dist/tools/templates/index.js.map +1 -0
- package/dist/tools/templates/list.d.ts +11 -0
- package/dist/tools/templates/list.d.ts.map +1 -0
- package/dist/tools/templates/list.js +31 -0
- package/dist/tools/templates/list.js.map +1 -0
- package/dist/tools/templates/schemas.d.ts +90 -0
- package/dist/tools/templates/schemas.d.ts.map +1 -0
- package/dist/tools/templates/schemas.js +37 -0
- package/dist/tools/templates/schemas.js.map +1 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/sdk/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAE/F;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;QACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,4CAA4C,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;KAC7G,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AA4BpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAiB;IAC1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAsB,kBAAkB,EAAE;QACzE,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAiB,kBAAkB,EAAE;QAC3E,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolHandler } from '../../lib/tool-registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a get SDK snippet handler.
|
|
4
|
+
* This factory function allows for dependency injection in tests.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createGetSdkSnippetHandler(): ToolHandler;
|
|
7
|
+
/**
|
|
8
|
+
* Default get SDK snippet handler
|
|
9
|
+
*/
|
|
10
|
+
export declare const getSdkSnippetHandler: ToolHandler;
|
|
11
|
+
//# sourceMappingURL=snippet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet.d.ts","sourceRoot":"","sources":["../../../src/tools/sdk/snippet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,4BAA4B,CAAC;AA8B1E;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,WAAW,CAkBxD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,aAA+B,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { withAuth, textResponse, validationErrorResponse, handleApiError, } from '../../lib/tool-helpers.js';
|
|
2
|
+
import { getSdkSnippetInputSchema, getOrCreatePublicKey } from './schemas.js';
|
|
3
|
+
import { getReactSnippet, getNextJsSnippet, getVanillaSnippet, getNodeSnippet, getExpressSnippet } from './templates/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get the snippet for a given framework
|
|
6
|
+
*/
|
|
7
|
+
function getSnippetForFramework(framework, publicKey) {
|
|
8
|
+
switch (framework) {
|
|
9
|
+
case 'react':
|
|
10
|
+
return getReactSnippet(publicKey);
|
|
11
|
+
case 'nextjs':
|
|
12
|
+
return getNextJsSnippet(publicKey);
|
|
13
|
+
case 'vanilla':
|
|
14
|
+
return getVanillaSnippet(publicKey);
|
|
15
|
+
case 'node':
|
|
16
|
+
return getNodeSnippet(publicKey);
|
|
17
|
+
case 'express':
|
|
18
|
+
return getExpressSnippet(publicKey);
|
|
19
|
+
default:
|
|
20
|
+
throw new Error(`Unknown framework: ${framework}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a get SDK snippet handler.
|
|
25
|
+
* This factory function allows for dependency injection in tests.
|
|
26
|
+
*/
|
|
27
|
+
export function createGetSdkSnippetHandler() {
|
|
28
|
+
return async (input) => {
|
|
29
|
+
// Validate input using Zod schema
|
|
30
|
+
const validationResult = getSdkSnippetInputSchema.safeParse(input);
|
|
31
|
+
if (!validationResult.success) {
|
|
32
|
+
return validationErrorResponse(validationResult.error, 'Invalid framework');
|
|
33
|
+
}
|
|
34
|
+
return withAuth('getting SDK snippets', async ({ client }) => {
|
|
35
|
+
try {
|
|
36
|
+
const keyData = await getOrCreatePublicKey(client);
|
|
37
|
+
const snippet = getSnippetForFramework(validationResult.data.framework, keyData.key);
|
|
38
|
+
return textResponse(snippet);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return handleApiError(err, 'get SDK snippet');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Default get SDK snippet handler
|
|
48
|
+
*/
|
|
49
|
+
export const getSdkSnippetHandler = createGetSdkSnippetHandler();
|
|
50
|
+
//# sourceMappingURL=snippet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippet.js","sourceRoot":"","sources":["../../../src/tools/sdk/snippet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,uBAAuB,EACvB,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAA2B,MAAM,cAAc,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/H;;GAEG;AACH,SAAS,sBAAsB,CAAC,SAA6B,EAAE,SAAiB;IAC9E,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,KAAK,EAAE,KAA8B,EAAuB,EAAE;QACnE,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,QAAQ,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC3D,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrF,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,cAAc,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/nextjs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkE1D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js SDK snippet template
|
|
3
|
+
*/
|
|
4
|
+
export function getNextJsSnippet(publicKey) {
|
|
5
|
+
return `// Install: npm install @kelpi/react
|
|
6
|
+
|
|
7
|
+
// ============================================
|
|
8
|
+
// app/providers.tsx - Create a providers file
|
|
9
|
+
// ============================================
|
|
10
|
+
'use client';
|
|
11
|
+
|
|
12
|
+
import { KelpiProvider } from '@kelpi/react';
|
|
13
|
+
|
|
14
|
+
export function Providers({ children }: { children: React.ReactNode }) {
|
|
15
|
+
return (
|
|
16
|
+
<KelpiProvider apiKey="${publicKey}">
|
|
17
|
+
{children}
|
|
18
|
+
</KelpiProvider>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ============================================
|
|
23
|
+
// app/layout.tsx - Use the provider in layout
|
|
24
|
+
// ============================================
|
|
25
|
+
import { Providers } from './providers';
|
|
26
|
+
|
|
27
|
+
export default function RootLayout({
|
|
28
|
+
children,
|
|
29
|
+
}: {
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
}) {
|
|
32
|
+
return (
|
|
33
|
+
<html lang="en">
|
|
34
|
+
<body>
|
|
35
|
+
<Providers>{children}</Providers>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// ============================================
|
|
42
|
+
// app/components/TrackingExample.tsx - Client component
|
|
43
|
+
// ============================================
|
|
44
|
+
'use client';
|
|
45
|
+
|
|
46
|
+
import { useKelpi } from '@kelpi/react';
|
|
47
|
+
|
|
48
|
+
export function TrackingExample() {
|
|
49
|
+
const kelpi = useKelpi();
|
|
50
|
+
|
|
51
|
+
// Identify user after authentication
|
|
52
|
+
const handleUserLogin = async (user: { id: string; email: string }) => {
|
|
53
|
+
await kelpi.identify(user.id, {
|
|
54
|
+
email: user.email,
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// Track page views or events
|
|
59
|
+
const trackPageView = (page: string) => {
|
|
60
|
+
kelpi.track('page_viewed', { page });
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<button onClick={() => kelpi.track('button_clicked')}>
|
|
65
|
+
Track Event
|
|
66
|
+
</button>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=nextjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/nextjs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO;;;;;;;;;;;6BAWoB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDrC,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js SDK snippet template
|
|
3
|
+
*/
|
|
4
|
+
export declare function getNodeSnippet(publicKey: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Express.js SDK snippet template
|
|
7
|
+
*/
|
|
8
|
+
export declare function getExpressSnippet(publicKey: string): string;
|
|
9
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/node.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiG3D"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js SDK snippet template
|
|
3
|
+
*/
|
|
4
|
+
export function getNodeSnippet(publicKey) {
|
|
5
|
+
return `// Install: npm install @kelpi/sdk
|
|
6
|
+
|
|
7
|
+
import { Kelpi } from '@kelpi/sdk';
|
|
8
|
+
import { createMemoryStorage } from '@kelpi/sdk/storage';
|
|
9
|
+
|
|
10
|
+
// 1. Create and initialize the SDK for server-side use
|
|
11
|
+
const kelpi = new Kelpi({
|
|
12
|
+
// Use memory storage for server-side (not browser localStorage)
|
|
13
|
+
storage: createMemoryStorage(),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
kelpi.init({
|
|
17
|
+
apiKey: '${publicKey}',
|
|
18
|
+
// Optional: custom API host
|
|
19
|
+
// apiHost: 'https://api.kelpi.ai',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// 2. Identify users from your backend
|
|
23
|
+
async function identifyUser(userId: string, traits: Record<string, unknown>) {
|
|
24
|
+
try {
|
|
25
|
+
const response = await kelpi.identify(userId, traits);
|
|
26
|
+
console.log('User identified:', response.contact_id);
|
|
27
|
+
return response;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error('Failed to identify user:', error);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 3. Track server-side events
|
|
35
|
+
function trackServerEvent(eventName: string, properties: Record<string, unknown>) {
|
|
36
|
+
kelpi.track(eventName, properties);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 4. Flush events before process exit
|
|
40
|
+
async function shutdown() {
|
|
41
|
+
await kelpi.flush();
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
process.on('SIGTERM', shutdown);
|
|
46
|
+
process.on('SIGINT', shutdown);
|
|
47
|
+
|
|
48
|
+
// Example usage in an API endpoint
|
|
49
|
+
async function handlePurchase(userId: string, orderData: { orderId: string; amount: number }) {
|
|
50
|
+
// Identify/update user
|
|
51
|
+
await identifyUser(userId, {
|
|
52
|
+
lastPurchaseAt: new Date().toISOString(),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Track the purchase event
|
|
56
|
+
trackServerEvent('purchase_completed', {
|
|
57
|
+
order_id: orderData.orderId,
|
|
58
|
+
amount: orderData.amount,
|
|
59
|
+
currency: 'USD',
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Flush immediately for important events
|
|
63
|
+
await kelpi.flush();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { kelpi, identifyUser, trackServerEvent };
|
|
67
|
+
`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Express.js SDK snippet template
|
|
71
|
+
*/
|
|
72
|
+
export function getExpressSnippet(publicKey) {
|
|
73
|
+
return `// Install: npm install @kelpi/sdk express
|
|
74
|
+
|
|
75
|
+
import express from 'express';
|
|
76
|
+
import { Kelpi } from '@kelpi/sdk';
|
|
77
|
+
import { createMemoryStorage } from '@kelpi/sdk/storage';
|
|
78
|
+
|
|
79
|
+
const app = express();
|
|
80
|
+
app.use(express.json());
|
|
81
|
+
|
|
82
|
+
// 1. Initialize Kelpi SDK
|
|
83
|
+
const kelpi = new Kelpi({
|
|
84
|
+
storage: createMemoryStorage(),
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
kelpi.init({
|
|
88
|
+
apiKey: '${publicKey}',
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// 2. Middleware to track requests (optional)
|
|
92
|
+
app.use((req, res, next) => {
|
|
93
|
+
const userId = req.headers['x-user-id'] as string;
|
|
94
|
+
if (userId) {
|
|
95
|
+
kelpi.track('api_request', {
|
|
96
|
+
method: req.method,
|
|
97
|
+
path: req.path,
|
|
98
|
+
userId,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
next();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// 3. Example: Identify user on signup
|
|
105
|
+
app.post('/api/signup', async (req, res) => {
|
|
106
|
+
const { email, name } = req.body;
|
|
107
|
+
const userId = generateUserId(); // Your user ID generation logic
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
// Identify the new user
|
|
111
|
+
await kelpi.identify(userId, {
|
|
112
|
+
email,
|
|
113
|
+
name,
|
|
114
|
+
signedUpAt: new Date().toISOString(),
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// Track signup event
|
|
118
|
+
kelpi.track('user_signed_up', {
|
|
119
|
+
method: 'email',
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
await kelpi.flush();
|
|
123
|
+
|
|
124
|
+
res.json({ success: true, userId });
|
|
125
|
+
} catch (error) {
|
|
126
|
+
res.status(500).json({ error: 'Signup failed' });
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// 4. Example: Track purchase
|
|
131
|
+
app.post('/api/purchase', async (req, res) => {
|
|
132
|
+
const { userId, orderId, amount } = req.body;
|
|
133
|
+
|
|
134
|
+
// Identify to update traits
|
|
135
|
+
await kelpi.identify(userId, {
|
|
136
|
+
lastPurchaseAt: new Date().toISOString(),
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
// Track purchase
|
|
140
|
+
kelpi.track('purchase_completed', {
|
|
141
|
+
order_id: orderId,
|
|
142
|
+
amount,
|
|
143
|
+
currency: 'USD',
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
await kelpi.flush();
|
|
147
|
+
|
|
148
|
+
res.json({ success: true });
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// 5. Graceful shutdown
|
|
152
|
+
const shutdown = async () => {
|
|
153
|
+
await kelpi.flush();
|
|
154
|
+
process.exit(0);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
process.on('SIGTERM', shutdown);
|
|
158
|
+
process.on('SIGINT', shutdown);
|
|
159
|
+
|
|
160
|
+
const PORT = process.env.PORT || 3000;
|
|
161
|
+
app.listen(PORT, () => {
|
|
162
|
+
console.log(\`Server running on port \${PORT}\`);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
function generateUserId(): string {
|
|
166
|
+
return 'user_' + Math.random().toString(36).substr(2, 9);
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/node.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO;;;;;;;;;;;;aAYI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDrB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO;;;;;;;;;;;;;;;aAeI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFrB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/react.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiDzD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React SDK snippet template
|
|
3
|
+
*/
|
|
4
|
+
export function getReactSnippet(publicKey) {
|
|
5
|
+
return `// Install: npm install @kelpi/react
|
|
6
|
+
|
|
7
|
+
import { KelpiProvider, useKelpi } from '@kelpi/react';
|
|
8
|
+
|
|
9
|
+
// 1. Wrap your app with KelpiProvider
|
|
10
|
+
function App() {
|
|
11
|
+
return (
|
|
12
|
+
<KelpiProvider apiKey="${publicKey}">
|
|
13
|
+
<YourApp />
|
|
14
|
+
</KelpiProvider>
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 2. Use the useKelpi hook in your components
|
|
19
|
+
function MyComponent() {
|
|
20
|
+
const kelpi = useKelpi();
|
|
21
|
+
|
|
22
|
+
// Identify a user (call this after login)
|
|
23
|
+
const handleLogin = async (userId: string, email: string) => {
|
|
24
|
+
await kelpi.identify(userId, {
|
|
25
|
+
email,
|
|
26
|
+
firstName: 'John',
|
|
27
|
+
lastName: 'Doe',
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Track events
|
|
32
|
+
const handleButtonClick = () => {
|
|
33
|
+
kelpi.track('button_clicked', {
|
|
34
|
+
button_id: 'signup',
|
|
35
|
+
page: '/home',
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Reset on logout
|
|
40
|
+
const handleLogout = () => {
|
|
41
|
+
kelpi.reset();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<div>
|
|
46
|
+
<button onClick={handleButtonClick}>Click me</button>
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default App;
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/react.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO;;;;;;;6BAOoB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCrC,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vanilla.d.ts","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/vanilla.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwD3D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vanilla JavaScript SDK snippet template
|
|
3
|
+
*/
|
|
4
|
+
export function getVanillaSnippet(publicKey) {
|
|
5
|
+
return `// Install: npm install @kelpi/sdk
|
|
6
|
+
// Or use CDN: <script src="https://cdn.kelpi.ai/sdk.min.js"></script>
|
|
7
|
+
|
|
8
|
+
import { Kelpi } from '@kelpi/sdk';
|
|
9
|
+
|
|
10
|
+
// 1. Create and initialize the SDK
|
|
11
|
+
const kelpi = new Kelpi();
|
|
12
|
+
|
|
13
|
+
kelpi.init({
|
|
14
|
+
apiKey: '${publicKey}',
|
|
15
|
+
// Optional: custom API host (defaults to https://api.kelpi.ai)
|
|
16
|
+
// apiHost: 'https://api.kelpi.ai',
|
|
17
|
+
// Optional: enable debug mode
|
|
18
|
+
// debug: true,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// 2. Identify a user (call after login)
|
|
22
|
+
async function onUserLogin(userId, email) {
|
|
23
|
+
try {
|
|
24
|
+
await kelpi.identify(userId, {
|
|
25
|
+
email: email,
|
|
26
|
+
// Add any other traits
|
|
27
|
+
firstName: 'John',
|
|
28
|
+
plan: 'premium',
|
|
29
|
+
});
|
|
30
|
+
console.log('User identified successfully');
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.error('Failed to identify user:', error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// 3. Track events
|
|
37
|
+
function trackEvent(eventName, properties) {
|
|
38
|
+
kelpi.track(eventName, properties);
|
|
39
|
+
// Events are queued and sent in batches
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Example: Track a button click
|
|
43
|
+
document.getElementById('signup-btn').addEventListener('click', () => {
|
|
44
|
+
trackEvent('signup_clicked', {
|
|
45
|
+
button_location: 'header',
|
|
46
|
+
page: window.location.pathname,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// 4. Flush events immediately (optional)
|
|
51
|
+
async function sendEventsNow() {
|
|
52
|
+
await kelpi.flush();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// 5. Reset on logout
|
|
56
|
+
function onUserLogout() {
|
|
57
|
+
kelpi.reset();
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=vanilla.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vanilla.js","sourceRoot":"","sources":["../../../../src/tools/sdk/templates/vanilla.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO;;;;;;;;;aASI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CrB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolHandler } from '../../lib/tool-registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a create template handler.
|
|
4
|
+
* This factory function allows for dependency injection in tests.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createCreateTemplateHandler(): ToolHandler;
|
|
7
|
+
/**
|
|
8
|
+
* Default create template handler
|
|
9
|
+
*/
|
|
10
|
+
export declare const createTemplateHandler: ToolHandler;
|
|
11
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/tools/templates/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,4BAA4B,CAAC;AAW1E;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,WAAW,CA2BzD;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAAgC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ApiError } from '../../lib/api-client.js';
|
|
2
|
+
import { withAuth, successResponse, validationErrorResponse, errorResponse, unknownErrorResponse, } from '../../lib/tool-helpers.js';
|
|
3
|
+
import { createTemplateInputSchema } from './schemas.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a create template handler.
|
|
6
|
+
* This factory function allows for dependency injection in tests.
|
|
7
|
+
*/
|
|
8
|
+
export function createCreateTemplateHandler() {
|
|
9
|
+
return async (input) => {
|
|
10
|
+
// Validate input using Zod schema
|
|
11
|
+
const validationResult = createTemplateInputSchema.safeParse(input);
|
|
12
|
+
if (!validationResult.success) {
|
|
13
|
+
return validationErrorResponse(validationResult.error, 'Invalid template data');
|
|
14
|
+
}
|
|
15
|
+
return withAuth('creating templates', async ({ client }) => {
|
|
16
|
+
try {
|
|
17
|
+
const response = await client.post('/api/v1/templates', validationResult.data);
|
|
18
|
+
return successResponse(response.data);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
if (err instanceof ApiError) {
|
|
22
|
+
const message = err.status === 409
|
|
23
|
+
? `Template with slug "${input.slug}" already exists`
|
|
24
|
+
: err.message;
|
|
25
|
+
return errorResponse('Failed to create template', message, {
|
|
26
|
+
status: err.status,
|
|
27
|
+
...(err.validationErrors && { validation_errors: err.validationErrors }),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return unknownErrorResponse(err, 'create template');
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Default create template handler
|
|
37
|
+
*/
|
|
38
|
+
export const createTemplateHandler = createCreateTemplateHandler();
|
|
39
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/tools/templates/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAyB,MAAM,cAAc,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,KAAK,EAAE,KAA8B,EAAuB,EAAE;QACnE,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,QAAQ,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACzD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmB,mBAAmB,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACjG,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG;wBAChC,CAAC,CAAC,uBAAuB,KAAK,CAAC,IAAI,kBAAkB;wBACrD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;oBAEhB,OAAO,aAAa,CAAC,2BAA2B,EAAE,OAAO,EAAE;wBACzD,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,GAAG,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC;qBACzE,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ToolWithHandler } from '../../lib/tool-registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* kelpi_create_template tool definition and handler
|
|
4
|
+
*
|
|
5
|
+
* Creates a new email template with variables support.
|
|
6
|
+
*/
|
|
7
|
+
export declare const kelpiCreateTemplate: ToolWithHandler;
|
|
8
|
+
/**
|
|
9
|
+
* kelpi_list_templates tool definition and handler
|
|
10
|
+
*
|
|
11
|
+
* Lists all templates in the workspace.
|
|
12
|
+
*/
|
|
13
|
+
export declare const kelpiListTemplates: ToolWithHandler;
|
|
14
|
+
export * from './schemas.js';
|
|
15
|
+
export { createCreateTemplateHandler } from './create.js';
|
|
16
|
+
export { createListTemplatesHandler } from './list.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKlE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,eA8BjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAiBhC,CAAC;AAGF,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC"}
|