@preply/ds-ai-core 11.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/AGENTS.md +7 -0
- package/README.md +34 -0
- package/dist/event-tracking.d.ts +21 -0
- package/dist/event-tracking.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38209 -0
- package/dist/tools/components/__tests__/get-component-docs.test.d.ts +2 -0
- package/dist/tools/components/__tests__/get-component-docs.test.d.ts.map +1 -0
- package/dist/tools/components/__tests__/list-components.test.d.ts +2 -0
- package/dist/tools/components/__tests__/list-components.test.d.ts.map +1 -0
- package/dist/tools/components/context/__test__/get-components-data.test.d.ts +2 -0
- package/dist/tools/components/context/__test__/get-components-data.test.d.ts.map +1 -0
- package/dist/tools/components/context/__test__/test-components/FixtureButton.d.ts +15 -0
- package/dist/tools/components/context/__test__/test-components/FixtureButton.d.ts.map +1 -0
- package/dist/tools/components/context/__test__/test-components/index.d.ts +2 -0
- package/dist/tools/components/context/__test__/test-components/index.d.ts.map +1 -0
- package/dist/tools/components/context/extract-component-docgen-info.d.ts +3 -0
- package/dist/tools/components/context/extract-component-docgen-info.d.ts.map +1 -0
- package/dist/tools/components/context/get-components-data.d.ts +24 -0
- package/dist/tools/components/context/get-components-data.d.ts.map +1 -0
- package/dist/tools/components/context/index.d.ts +6 -0
- package/dist/tools/components/context/index.d.ts.map +1 -0
- package/dist/tools/components/context/render-component-doc.d.ts +4 -0
- package/dist/tools/components/context/render-component-doc.d.ts.map +1 -0
- package/dist/tools/components/get-component-docs.d.ts +15 -0
- package/dist/tools/components/get-component-docs.d.ts.map +1 -0
- package/dist/tools/components/list-components.d.ts +9 -0
- package/dist/tools/components/list-components.d.ts.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/search-icon/__tests__/get-icons-data.test.d.ts +2 -0
- package/dist/tools/search-icon/__tests__/get-icons-data.test.d.ts.map +1 -0
- package/dist/tools/search-icon/__tests__/search-icon.test.d.ts +2 -0
- package/dist/tools/search-icon/__tests__/search-icon.test.d.ts.map +1 -0
- package/dist/tools/search-icon/get-icons-data.d.ts +6 -0
- package/dist/tools/search-icon/get-icons-data.d.ts.map +1 -0
- package/dist/tools/search-icon/search-icon.d.ts +18 -0
- package/dist/tools/search-icon/search-icon.d.ts.map +1 -0
- package/dist/tools/search-token/__tests__/search-token-by-name.test.d.ts +2 -0
- package/dist/tools/search-token/__tests__/search-token-by-name.test.d.ts.map +1 -0
- package/dist/tools/search-token/__tests__/search-token-by-value.test.d.ts +2 -0
- package/dist/tools/search-token/__tests__/search-token-by-value.test.d.ts.map +1 -0
- package/dist/tools/search-token/context/__tests__/get-tokens-data.test.d.ts +2 -0
- package/dist/tools/search-token/context/__tests__/get-tokens-data.test.d.ts.map +1 -0
- package/dist/tools/search-token/context/get-tokens-data.d.ts +13 -0
- package/dist/tools/search-token/context/get-tokens-data.d.ts.map +1 -0
- package/dist/tools/search-token/context/index.d.ts +6 -0
- package/dist/tools/search-token/context/index.d.ts.map +1 -0
- package/dist/tools/search-token/search-token-by-name.d.ts +26 -0
- package/dist/tools/search-token/search-token-by-name.d.ts.map +1 -0
- package/dist/tools/search-token/search-token-by-value.d.ts +24 -0
- package/dist/tools/search-token/search-token-by-value.d.ts.map +1 -0
- package/dist/tools/search-token/token-utils.d.ts +9 -0
- package/dist/tools/search-token/token-utils.d.ts.map +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/create-search-index.d.ts +48 -0
- package/dist/utils/create-search-index.d.ts.map +1 -0
- package/dist/utils/define-tool.d.ts +49 -0
- package/dist/utils/define-tool.d.ts.map +1 -0
- package/dist/utils/format-list.d.ts +26 -0
- package/dist/utils/format-list.d.ts.map +1 -0
- package/dist/utils/md.d.ts +24 -0
- package/dist/utils/md.d.ts.map +1 -0
- package/package.json +48 -0
- package/src/event-tracking.ts +117 -0
- package/src/index.ts +4 -0
- package/src/tools/components/__tests__/get-component-docs.test.ts +58 -0
- package/src/tools/components/__tests__/list-components.test.ts +63 -0
- package/src/tools/components/context/__test__/get-components-data.test.ts +57 -0
- package/src/tools/components/context/__test__/test-components/FixtureButton.tsx +18 -0
- package/src/tools/components/context/__test__/test-components/index.ts +1 -0
- package/src/tools/components/context/__test__/test-components/tsconfig.json +11 -0
- package/src/tools/components/context/extract-component-docgen-info.ts +108 -0
- package/src/tools/components/context/get-components-data.ts +94 -0
- package/src/tools/components/context/index.ts +4 -0
- package/src/tools/components/context/render-component-doc.ts +89 -0
- package/src/tools/components/get-component-docs.ts +26 -0
- package/src/tools/components/list-components.ts +36 -0
- package/src/tools/index.ts +5 -0
- package/src/tools/search-icon/__tests__/get-icons-data.test.ts +22 -0
- package/src/tools/search-icon/__tests__/search-icon.test.ts +235 -0
- package/src/tools/search-icon/__tests__/test-icons/NotIcon.md +1 -0
- package/src/tools/search-icon/__tests__/test-icons/OtherIcon.svg +1 -0
- package/src/tools/search-icon/__tests__/test-icons/TokyoUIClose.svg +1 -0
- package/src/tools/search-icon/__tests__/test-icons/TokyoUIHelp.svg +1 -0
- package/src/tools/search-icon/get-icons-data.ts +19 -0
- package/src/tools/search-icon/search-icon.ts +100 -0
- package/src/tools/search-token/__tests__/search-token-by-name.test.ts +384 -0
- package/src/tools/search-token/__tests__/search-token-by-value.test.ts +250 -0
- package/src/tools/search-token/context/__tests__/get-tokens-data.test.ts +148 -0
- package/src/tools/search-token/context/get-tokens-data.ts +103 -0
- package/src/tools/search-token/context/index.ts +4 -0
- package/src/tools/search-token/search-token-by-name.ts +110 -0
- package/src/tools/search-token/search-token-by-value.ts +107 -0
- package/src/tools/search-token/token-utils.ts +60 -0
- package/src/types.ts +3 -0
- package/src/utils/create-search-index.ts +121 -0
- package/src/utils/define-tool.ts +67 -0
- package/src/utils/format-list.ts +38 -0
- package/src/utils/md.ts +12 -0
- package/tsconfig.json +11 -0
- package/vite.config.ts +23 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolves callback parameter types based on which schemas a tool defines.
|
|
5
|
+
* Uses `[T] extends [never]` (wrapped in tuple) instead of `T extends never`
|
|
6
|
+
* to prevent TypeScript from collapsing the conditional via distributive behavior.
|
|
7
|
+
*
|
|
8
|
+
* - Both Arguments and Options are `never` -> callback takes no parameters
|
|
9
|
+
* - Only Options defined -> callback takes parsed Options
|
|
10
|
+
* - Only Arguments defined -> callback takes parsed Arguments
|
|
11
|
+
* - Both defined -> callback takes merged Arguments & Options
|
|
12
|
+
*/
|
|
13
|
+
type CallbackParameters<
|
|
14
|
+
Arguments extends z.AnyZodObject = never,
|
|
15
|
+
Options extends z.AnyZodObject = never,
|
|
16
|
+
> = [Arguments] extends [never]
|
|
17
|
+
? [Options] extends [never]
|
|
18
|
+
? []
|
|
19
|
+
: [z.input<Options>]
|
|
20
|
+
: [Options] extends [never]
|
|
21
|
+
? [z.input<Arguments>]
|
|
22
|
+
: [z.input<Arguments> & z.input<Options>];
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Shape of a single AI tool definition.
|
|
26
|
+
*
|
|
27
|
+
* A tool has a CLI-style interface with positional `arguments` and named
|
|
28
|
+
* `options`, both validated at runtime via Zod schemas. The `callback`
|
|
29
|
+
* receives the parsed (and type-safe) values and must return an array of
|
|
30
|
+
* output lines that are surfaced to the calling agent.
|
|
31
|
+
*/
|
|
32
|
+
export type Tool<
|
|
33
|
+
Arguments extends z.AnyZodObject = never,
|
|
34
|
+
Options extends z.AnyZodObject = never,
|
|
35
|
+
> = {
|
|
36
|
+
/** The tool name. Used when using as MCP tool. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** The tool description. Used when using as MCP tool and displayed as a help message to CLI command. */
|
|
39
|
+
description: string;
|
|
40
|
+
/** Positional arguments schema. Omit if the tool takes no positional args. */
|
|
41
|
+
arguments?: Arguments;
|
|
42
|
+
/** Named options/flags schema. Omit if the tool takes no options. */
|
|
43
|
+
options?: Options;
|
|
44
|
+
/** Executes the tool logic; returns output lines shown to the agent. */
|
|
45
|
+
callback: (...args: CallbackParameters<Arguments, Options>) => string[];
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Identity helper that infers the generic types from the tool object literal,
|
|
50
|
+
* giving full type-safety on `callback` params without manual type annotations.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* const myTool = defineTool({
|
|
55
|
+
* name: 'greet',
|
|
56
|
+
* description: 'Say hello',
|
|
57
|
+
* arguments: z.object({ name: z.string() }),
|
|
58
|
+
* callback: (args) => [`Hello, ${args.name}!`], // args is typed automatically
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function defineTool<
|
|
63
|
+
Arguments extends z.AnyZodObject = never,
|
|
64
|
+
Options extends z.AnyZodObject = never,
|
|
65
|
+
>(tool: Tool<Arguments, Options>) {
|
|
66
|
+
return tool;
|
|
67
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { stringify } from 'yaml';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats a list of objects into readable string.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```
|
|
8
|
+
* const list = [
|
|
9
|
+
* { name: 'John', age: 30 },
|
|
10
|
+
* { name: 'Jane', age: 25 },
|
|
11
|
+
* ];
|
|
12
|
+
* const formattedList = formatList(list);
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* returns:
|
|
16
|
+
* ```
|
|
17
|
+
* ---
|
|
18
|
+
* name: John
|
|
19
|
+
* age: 30
|
|
20
|
+
* ---
|
|
21
|
+
* name: Jane
|
|
22
|
+
* age: 25
|
|
23
|
+
* ---
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function formatList(list: unknown[]) {
|
|
27
|
+
if (list.length === 0) return '';
|
|
28
|
+
|
|
29
|
+
const delimiter = '\n---\n';
|
|
30
|
+
|
|
31
|
+
return ['', ...list.map(item => stringify(item).trim()), ''].join(delimiter).trim();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function formatListInline(list: unknown[]) {
|
|
35
|
+
if (list.length === 0) return '';
|
|
36
|
+
|
|
37
|
+
return list.join(', ');
|
|
38
|
+
}
|
package/src/utils/md.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as tsmd from 'ts-markdown-builder';
|
|
2
|
+
import { stringify } from 'yaml';
|
|
3
|
+
|
|
4
|
+
function frontMatter(object: Record<string, unknown>): string {
|
|
5
|
+
if (Object.keys(object).length === 0) return '';
|
|
6
|
+
|
|
7
|
+
const yaml = stringify(object).trim();
|
|
8
|
+
|
|
9
|
+
return [tsmd.horizontalRule, yaml, tsmd.horizontalRule].join('\n');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const md = { ...tsmd, frontMatter, comment: (comment: string) => `<!-- ${comment} -->` };
|
package/tsconfig.json
ADDED
package/vite.config.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { builtinModules } from 'node:module';
|
|
2
|
+
import { defineConfig } from 'vite';
|
|
3
|
+
import dts from 'vite-plugin-dts';
|
|
4
|
+
import macros from 'unplugin-macros/vite';
|
|
5
|
+
|
|
6
|
+
const nodeBuiltins = builtinModules.flatMap(m => [m, `node:${m}`]);
|
|
7
|
+
|
|
8
|
+
export default defineConfig({
|
|
9
|
+
plugins: [dts({ exclude: ['vite.config.ts'], entryRoot: 'src' }), macros()],
|
|
10
|
+
build: {
|
|
11
|
+
target: 'esnext',
|
|
12
|
+
lib: {
|
|
13
|
+
entry: 'src/index.ts',
|
|
14
|
+
formats: ['es'],
|
|
15
|
+
},
|
|
16
|
+
rolldownOptions: {
|
|
17
|
+
external: nodeBuiltins,
|
|
18
|
+
output: {
|
|
19
|
+
entryFileNames: '[name].js',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
});
|