@lando-labs/lando-ds-mcp 4.0.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.
Files changed (132) hide show
  1. package/CHANGELOG.md +526 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +4 -0
  4. package/README.md +170 -0
  5. package/build/data/ds-meta.json +1 -0
  6. package/build/data/ds-meta.schema.json +282 -0
  7. package/build/data/ds-meta.verbose.json +1 -0
  8. package/build/data/icon-metadata.d.ts +64 -0
  9. package/build/data/icon-metadata.d.ts.map +1 -0
  10. package/build/data/icon-metadata.js +1128 -0
  11. package/build/data/icon-metadata.js.map +1 -0
  12. package/build/data/lucide-icon-names.d.ts +12 -0
  13. package/build/data/lucide-icon-names.d.ts.map +1 -0
  14. package/build/data/lucide-icon-names.js +1653 -0
  15. package/build/data/lucide-icon-names.js.map +1 -0
  16. package/build/data/lucide-icons.d.ts +41 -0
  17. package/build/data/lucide-icons.d.ts.map +1 -0
  18. package/build/data/lucide-icons.js +80 -0
  19. package/build/data/lucide-icons.js.map +1 -0
  20. package/build/data/rn-tokens-snapshot.d.ts +753 -0
  21. package/build/data/rn-tokens-snapshot.d.ts.map +1 -0
  22. package/build/data/rn-tokens-snapshot.js +286 -0
  23. package/build/data/rn-tokens-snapshot.js.map +1 -0
  24. package/build/index.d.ts +18 -0
  25. package/build/index.d.ts.map +1 -0
  26. package/build/index.js +411 -0
  27. package/build/index.js.map +1 -0
  28. package/build/prompts/index.d.ts +16 -0
  29. package/build/prompts/index.d.ts.map +1 -0
  30. package/build/prompts/index.js +145 -0
  31. package/build/prompts/index.js.map +1 -0
  32. package/build/resources/code-examples.d.ts +6 -0
  33. package/build/resources/code-examples.d.ts.map +1 -0
  34. package/build/resources/code-examples.js +278 -0
  35. package/build/resources/code-examples.js.map +1 -0
  36. package/build/resources/design-tokens.d.ts +6 -0
  37. package/build/resources/design-tokens.d.ts.map +1 -0
  38. package/build/resources/design-tokens.js +128 -0
  39. package/build/resources/design-tokens.js.map +1 -0
  40. package/build/resources/index.d.ts +19 -0
  41. package/build/resources/index.d.ts.map +1 -0
  42. package/build/resources/index.js +80 -0
  43. package/build/resources/index.js.map +1 -0
  44. package/build/test.d.ts +12 -0
  45. package/build/test.d.ts.map +1 -0
  46. package/build/test.js +680 -0
  47. package/build/test.js.map +1 -0
  48. package/build/tools/compose-components.d.ts +40 -0
  49. package/build/tools/compose-components.d.ts.map +1 -0
  50. package/build/tools/compose-components.js +61 -0
  51. package/build/tools/compose-components.js.map +1 -0
  52. package/build/tools/get-animation-examples.d.ts +30 -0
  53. package/build/tools/get-animation-examples.d.ts.map +1 -0
  54. package/build/tools/get-animation-examples.js +484 -0
  55. package/build/tools/get-animation-examples.js.map +1 -0
  56. package/build/tools/get-component-capabilities.d.ts +43 -0
  57. package/build/tools/get-component-capabilities.d.ts.map +1 -0
  58. package/build/tools/get-component-capabilities.js +108 -0
  59. package/build/tools/get-component-capabilities.js.map +1 -0
  60. package/build/tools/get-component-props.d.ts +23 -0
  61. package/build/tools/get-component-props.d.ts.map +1 -0
  62. package/build/tools/get-component-props.js +46 -0
  63. package/build/tools/get-component-props.js.map +1 -0
  64. package/build/tools/get-component-reference.d.ts +25 -0
  65. package/build/tools/get-component-reference.d.ts.map +1 -0
  66. package/build/tools/get-component-reference.js +112 -0
  67. package/build/tools/get-component-reference.js.map +1 -0
  68. package/build/tools/get-component.d.ts +25 -0
  69. package/build/tools/get-component.d.ts.map +1 -0
  70. package/build/tools/get-component.js +60 -0
  71. package/build/tools/get-component.js.map +1 -0
  72. package/build/tools/get-composition-hints.d.ts +22 -0
  73. package/build/tools/get-composition-hints.d.ts.map +1 -0
  74. package/build/tools/get-composition-hints.js +39 -0
  75. package/build/tools/get-composition-hints.js.map +1 -0
  76. package/build/tools/get-design-tokens.d.ts +24 -0
  77. package/build/tools/get-design-tokens.d.ts.map +1 -0
  78. package/build/tools/get-design-tokens.js +96 -0
  79. package/build/tools/get-design-tokens.js.map +1 -0
  80. package/build/tools/get-ds-metadata.d.ts +16 -0
  81. package/build/tools/get-ds-metadata.d.ts.map +1 -0
  82. package/build/tools/get-ds-metadata.js +65 -0
  83. package/build/tools/get-ds-metadata.js.map +1 -0
  84. package/build/tools/get-hook.d.ts +19 -0
  85. package/build/tools/get-hook.d.ts.map +1 -0
  86. package/build/tools/get-hook.js +46 -0
  87. package/build/tools/get-hook.js.map +1 -0
  88. package/build/tools/get-theme-presets.d.ts +13 -0
  89. package/build/tools/get-theme-presets.d.ts.map +1 -0
  90. package/build/tools/get-theme-presets.js +41 -0
  91. package/build/tools/get-theme-presets.js.map +1 -0
  92. package/build/tools/list-components.d.ts +29 -0
  93. package/build/tools/list-components.d.ts.map +1 -0
  94. package/build/tools/list-components.js +88 -0
  95. package/build/tools/list-components.js.map +1 -0
  96. package/build/tools/list-hooks.d.ts +22 -0
  97. package/build/tools/list-hooks.d.ts.map +1 -0
  98. package/build/tools/list-hooks.js +80 -0
  99. package/build/tools/list-hooks.js.map +1 -0
  100. package/build/tools/list-icons.d.ts +28 -0
  101. package/build/tools/list-icons.d.ts.map +1 -0
  102. package/build/tools/list-icons.js +161 -0
  103. package/build/tools/list-icons.js.map +1 -0
  104. package/build/tools/platform-transform.d.ts +64 -0
  105. package/build/tools/platform-transform.d.ts.map +1 -0
  106. package/build/tools/platform-transform.js +117 -0
  107. package/build/tools/platform-transform.js.map +1 -0
  108. package/build/tools/platform.d.ts +76 -0
  109. package/build/tools/platform.d.ts.map +1 -0
  110. package/build/tools/platform.js +80 -0
  111. package/build/tools/platform.js.map +1 -0
  112. package/build/tools/search-icons.d.ts +28 -0
  113. package/build/tools/search-icons.d.ts.map +1 -0
  114. package/build/tools/search-icons.js +257 -0
  115. package/build/tools/search-icons.js.map +1 -0
  116. package/build/utils/error-envelope.d.ts +14 -0
  117. package/build/utils/error-envelope.d.ts.map +1 -0
  118. package/build/utils/error-envelope.js +35 -0
  119. package/build/utils/error-envelope.js.map +1 -0
  120. package/build/utils/icon-library.d.ts +17 -0
  121. package/build/utils/icon-library.d.ts.map +1 -0
  122. package/build/utils/icon-library.js +24 -0
  123. package/build/utils/icon-library.js.map +1 -0
  124. package/build/utils/jsx-safety.d.ts +47 -0
  125. package/build/utils/jsx-safety.d.ts.map +1 -0
  126. package/build/utils/jsx-safety.js +63 -0
  127. package/build/utils/jsx-safety.js.map +1 -0
  128. package/build/utils/meta-loader.d.ts +37 -0
  129. package/build/utils/meta-loader.d.ts.map +1 -0
  130. package/build/utils/meta-loader.js +114 -0
  131. package/build/utils/meta-loader.js.map +1 -0
  132. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-props.d.ts","sourceRoot":"","sources":["../../src/tools/get-component-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAY7E,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxF"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * get_component_props Tool — meta-backed (v3.0.0).
3
+ *
4
+ * Returns a TypeScript interface for the requested component's props,
5
+ * derived from `meta.components[X].props`. Names in meta are PascalCase
6
+ * (Button, DatePicker) — this tool accepts them as-is.
7
+ *
8
+ * Post-#40: props already come from meta in structured form (type,
9
+ * required, default, description). This tool renders that as a TS
10
+ * interface for AI consumers who want a familiar shape. A future
11
+ * `format: 'jsonSchema'` param can expose the raw structured form.
12
+ */
13
+ import { z } from 'zod';
14
+ import { getComponent, getComponentNames, renderHtmlAttrsFooter } from '../utils/meta-loader.js';
15
+ const componentNames = getComponentNames();
16
+ export const getComponentPropsSchema = z.object({
17
+ componentName: z.enum(componentNames).describe('PascalCase name of the component (e.g. "Button", "DatePicker"). Must be a name in `list_components`.'),
18
+ });
19
+ function renderPropLine(name, prop) {
20
+ const optional = prop.required ? '' : '?';
21
+ const jsdocParts = [];
22
+ if (prop.description)
23
+ jsdocParts.push(prop.description);
24
+ if (prop.default)
25
+ jsdocParts.push(`@default ${prop.default}`);
26
+ const jsdoc = jsdocParts.length > 0 ? ` /** ${jsdocParts.join(' — ')} */\n` : '';
27
+ return `${jsdoc} ${name}${optional}: ${prop.type}\n`;
28
+ }
29
+ export async function getComponentProps(params) {
30
+ const { componentName } = params;
31
+ const cmp = getComponent(componentName);
32
+ if (!cmp) {
33
+ // Should be prevented by the Zod enum, but keep the guard for safety.
34
+ throw new Error(`Component "${componentName}" not found in DS meta.`);
35
+ }
36
+ const propNames = Object.keys(cmp.props).sort();
37
+ const propLines = propNames.map((n) => renderPropLine(n, cmp.props[n])).join('');
38
+ let out = `/**\n * ${componentName}Props\n * Category: ${cmp.category}\n`;
39
+ if (cmp.deprecated) {
40
+ out += ` * DEPRECATED since ${cmp.deprecated.since} — use ${cmp.deprecated.replacedBy} (removal ${cmp.deprecated.removeAt})\n`;
41
+ }
42
+ out += ` */\ninterface ${componentName}Props {\n${propLines}}\n`;
43
+ out += renderHtmlAttrsFooter(cmp);
44
+ return out;
45
+ }
46
+ //# sourceMappingURL=get-component-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-props.js","sourceRoot":"","sources":["../../src/tools/get-component-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEhG,MAAM,cAAc,GAAG,iBAAiB,EAA2B,CAAA;AAEnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,sGAAsG,CAAC;CACvJ,CAAC,CAAA;AAIF,SAAS,cAAc,CAAC,IAAY,EAAE,IAAuF;IAC3H,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IACzC,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,IAAI,IAAI,CAAC,WAAW;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvD,IAAI,IAAI,CAAC,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAE7D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACjF,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA+B;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAChC,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,sEAAsE;QACtE,MAAM,IAAI,KAAK,CAAC,cAAc,aAAa,yBAAyB,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEhF,IAAI,GAAG,GAAG,WAAW,aAAa,uBAAuB,GAAG,CAAC,QAAQ,IAAI,CAAA;IACzE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,GAAG,IAAI,uBAAuB,GAAG,CAAC,UAAU,CAAC,KAAK,UAAU,GAAG,CAAC,UAAU,CAAC,UAAU,aAAa,GAAG,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAA;IAChI,CAAC;IACD,GAAG,IAAI,kBAAkB,aAAa,YAAY,SAAS,KAAK,CAAA;IAChE,GAAG,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAEjC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * get_component_reference Tool — merged docs + examples (v3.0.0).
3
+ *
4
+ * Single-call full component context, replacing v2.x's split between
5
+ * `get_component_docs` and `get_usage_example`. Reads from verbose meta
6
+ * (description, examples, composes, appliesClassNames) and augments with
7
+ * light meta (category, platforms, deprecation).
8
+ *
9
+ * The `include` array is optional; omitting it returns all sections.
10
+ * Consumers who need a lighter payload can pass e.g. `include: ['examples']`.
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const getComponentReferenceSchema: z.ZodObject<{
14
+ componentName: z.ZodEnum<[string, ...string[]]>;
15
+ include: z.ZodOptional<z.ZodArray<z.ZodEnum<["description", "examples", "composes", "props", "appliesClassNames"]>, "many">>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ componentName: string;
18
+ include?: ("props" | "description" | "examples" | "composes" | "appliesClassNames")[] | undefined;
19
+ }, {
20
+ componentName: string;
21
+ include?: ("props" | "description" | "examples" | "composes" | "appliesClassNames")[] | undefined;
22
+ }>;
23
+ export type GetComponentReferenceParams = z.infer<typeof getComponentReferenceSchema>;
24
+ export declare function getComponentReference(params: GetComponentReferenceParams): Promise<string>;
25
+ //# sourceMappingURL=get-component-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-reference.d.ts","sourceRoot":"","sources":["../../src/tools/get-component-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,2BAA2B;;;;;;;;;EAStC,CAAA;AAEF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAwCrF,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqDhG"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * get_component_reference Tool — merged docs + examples (v3.0.0).
3
+ *
4
+ * Single-call full component context, replacing v2.x's split between
5
+ * `get_component_docs` and `get_usage_example`. Reads from verbose meta
6
+ * (description, examples, composes, appliesClassNames) and augments with
7
+ * light meta (category, platforms, deprecation).
8
+ *
9
+ * The `include` array is optional; omitting it returns all sections.
10
+ * Consumers who need a lighter payload can pass e.g. `include: ['examples']`.
11
+ */
12
+ import { z } from 'zod';
13
+ import { getVerboseComponent, getComponentNames, renderHtmlAttrsFooter, } from '../utils/meta-loader.js';
14
+ const componentNames = getComponentNames();
15
+ export const getComponentReferenceSchema = z.object({
16
+ componentName: z.enum(componentNames).describe('PascalCase name of the component (e.g. "Button", "DatePicker").'),
17
+ include: z
18
+ .array(z.enum(['description', 'examples', 'composes', 'props', 'appliesClassNames']))
19
+ .max(5)
20
+ .optional()
21
+ .describe("Sections to include (default: description + examples + composes + props). Omit or pass all values for full reference. 'appliesClassNames' is only present for components whose maintainer chose to expose theming class-name maps."),
22
+ });
23
+ const DEFAULT_INCLUDE = ['description', 'examples', 'composes', 'props'];
24
+ function renderPropsSection(props) {
25
+ const names = Object.keys(props).sort();
26
+ if (names.length === 0)
27
+ return '_No props._\n';
28
+ let out = '';
29
+ for (const name of names) {
30
+ const p = props[name];
31
+ const req = p.required ? '**required**' : 'optional';
32
+ out += `- \`${name}\` (${req}, type: \`${p.type}\`)`;
33
+ if (p.default)
34
+ out += `, default: \`${p.default}\``;
35
+ out += `\n`;
36
+ if (p.description)
37
+ out += ` - ${p.description}\n`;
38
+ }
39
+ return out;
40
+ }
41
+ function renderComposesSection(composes) {
42
+ if (!composes || Object.keys(composes).length === 0)
43
+ return '_No formal composition hints._\n';
44
+ let out = '';
45
+ for (const [prop, hint] of Object.entries(composes)) {
46
+ out += `- \`${prop}\` accepts a \`${hint.accepts}\` (as \`${hint.as}\`)\n`;
47
+ }
48
+ return out;
49
+ }
50
+ function renderAppliesClassNames(map) {
51
+ if (!map || Object.keys(map).length === 0)
52
+ return '_No theming class-name maps exposed._\n';
53
+ let out = '';
54
+ for (const [variantProp, classMap] of Object.entries(map)) {
55
+ out += `- **${variantProp}**\n`;
56
+ for (const [variant, className] of Object.entries(classMap)) {
57
+ out += ` - \`${variant}\` → \`${className}\`\n`;
58
+ }
59
+ }
60
+ return out;
61
+ }
62
+ export async function getComponentReference(params) {
63
+ const { componentName } = params;
64
+ const include = new Set(params.include ?? DEFAULT_INCLUDE);
65
+ const cmp = getVerboseComponent(componentName);
66
+ if (!cmp) {
67
+ return `Error: \`${componentName}\` is not registered in DS meta.`;
68
+ }
69
+ let out = `# ${componentName}\n\n`;
70
+ out += `**Category**: ${cmp.category}\n`;
71
+ out += `**Subpath**: \`${cmp.subpath}\`\n`;
72
+ if (cmp.ref)
73
+ out += `**Ref**: forwards to \`${cmp.ref}\`\n`;
74
+ if (cmp.polymorphic)
75
+ out += `**Polymorphic**: yes (\`as\` / \`asChild\`)\n`;
76
+ if (cmp.serverSafe)
77
+ out += `**RSC-safe**: yes\n`;
78
+ if (cmp.deprecated) {
79
+ out += `**⚠ Deprecated**: since v${cmp.deprecated.since}; use \`${cmp.deprecated.replacedBy}\`; removal at v${cmp.deprecated.removeAt}\n`;
80
+ }
81
+ out += '\n';
82
+ if (include.has('description')) {
83
+ out += `## Description\n\n${cmp.description || '_No description in meta._'}\n\n`;
84
+ }
85
+ if (include.has('examples')) {
86
+ out += `## Examples\n\n`;
87
+ if (cmp.examples.length === 0) {
88
+ out += '_No examples in meta yet._\n\n';
89
+ }
90
+ else {
91
+ cmp.examples.forEach((ex, idx) => {
92
+ out += `### ${idx + 1}. ${ex.name}\n\n`;
93
+ out += '```tsx\n';
94
+ out += ex.code + '\n';
95
+ out += '```\n\n';
96
+ });
97
+ }
98
+ }
99
+ if (include.has('composes')) {
100
+ out += `## Composition\n\n${renderComposesSection(cmp.composes)}\n`;
101
+ }
102
+ if (include.has('props')) {
103
+ out += `## Props\n\n${renderPropsSection(cmp.props)}`;
104
+ out += renderHtmlAttrsFooter(cmp);
105
+ out += '\n';
106
+ }
107
+ if (include.has('appliesClassNames')) {
108
+ out += `## Theming Class Names\n\n${renderAppliesClassNames(cmp.appliesClassNames)}\n`;
109
+ }
110
+ return out;
111
+ }
112
+ //# sourceMappingURL=get-component-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-reference.js","sourceRoot":"","sources":["../../src/tools/get-component-reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * get_component Tool — meta-backed (v3.0.0; RN param stripped in v4.0.0).
3
+ *
4
+ * Generates a ready-to-use JSX snippet: import + component element with
5
+ * the supplied props/children. Prop keys and string values are validated
6
+ * against jsx-safety before interpolation (v2.7.1 #19). Component name +
7
+ * import package come from DS meta (v3.0.0 #47).
8
+ */
9
+ import { z } from 'zod';
10
+ export declare const getComponentSchema: z.ZodObject<{
11
+ componentName: z.ZodEnum<[string, ...string[]]>;
12
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../utils/jsx-safety.js").PropValue, z.ZodTypeDef, import("../utils/jsx-safety.js").PropValue>>>;
13
+ children: z.ZodOptional<z.ZodString>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ componentName: string;
16
+ props?: Record<string, import("../utils/jsx-safety.js").PropValue> | undefined;
17
+ children?: string | undefined;
18
+ }, {
19
+ componentName: string;
20
+ props?: Record<string, import("../utils/jsx-safety.js").PropValue> | undefined;
21
+ children?: string | undefined;
22
+ }>;
23
+ export type GetComponentParams = z.infer<typeof getComponentSchema>;
24
+ export declare function getComponent(params: GetComponentParams): Promise<string>;
25
+ //# sourceMappingURL=get-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component.d.ts","sourceRoot":"","sources":["../../src/tools/get-component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAcvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAsBnE,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB9E"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * get_component Tool — meta-backed (v3.0.0; RN param stripped in v4.0.0).
3
+ *
4
+ * Generates a ready-to-use JSX snippet: import + component element with
5
+ * the supplied props/children. Prop keys and string values are validated
6
+ * against jsx-safety before interpolation (v2.7.1 #19). Component name +
7
+ * import package come from DS meta (v3.0.0 #47).
8
+ */
9
+ import { z } from 'zod';
10
+ import { getComponent as metaGetComponent, getComponentNames, getDsPackageName, } from '../utils/meta-loader.js';
11
+ import { assertSafeJsxAttrString, assertSafeJsxPropKey, propsRecordSchema, } from '../utils/jsx-safety.js';
12
+ const componentNames = getComponentNames();
13
+ export const getComponentSchema = z.object({
14
+ componentName: z.enum(componentNames).describe('PascalCase name of the component to generate (e.g. "Button", "DatePicker").'),
15
+ props: propsRecordSchema.optional().describe('Component props as key-value pairs (string|number|boolean primitives, optionally nested in objects/arrays).'),
16
+ children: z.string().max(8_000).optional().describe('Children content for the component (JSX or text).'),
17
+ });
18
+ function buildPropsString(props) {
19
+ return Object.entries(props)
20
+ .map(([key, value]) => {
21
+ assertSafeJsxPropKey(key);
22
+ if (typeof value === 'string') {
23
+ assertSafeJsxAttrString(value, key);
24
+ return `${key}="${value}"`;
25
+ }
26
+ else if (typeof value === 'boolean') {
27
+ return value ? key : '';
28
+ }
29
+ else if (typeof value === 'number') {
30
+ return `${key}={${value}}`;
31
+ }
32
+ else if (typeof value === 'object' && value !== null) {
33
+ return `${key}={${JSON.stringify(value)}}`;
34
+ }
35
+ return '';
36
+ })
37
+ .filter(Boolean)
38
+ .join(' ');
39
+ }
40
+ export async function getComponent(params) {
41
+ const { componentName, props = {}, children } = params;
42
+ const cmp = metaGetComponent(componentName);
43
+ if (!cmp) {
44
+ return `Error: \`${componentName}\` is not registered in DS meta.`;
45
+ }
46
+ const propsString = buildPropsString(props);
47
+ const propsWithSpace = propsString ? ` ${propsString}` : '';
48
+ const importStatement = `import { ${componentName} } from '${getDsPackageName()}'`;
49
+ // Deprecation warning header (surfaces meta.deprecated so agents don't
50
+ // silently emit deprecated components).
51
+ const deprecationHeader = cmp.deprecated
52
+ ? `// ⚠ ${componentName} is deprecated since v${cmp.deprecated.since}; use ${cmp.deprecated.replacedBy} (removal at v${cmp.deprecated.removeAt}).\n`
53
+ : '';
54
+ const hasChildren = children && children.trim().length > 0;
55
+ const snippet = hasChildren
56
+ ? `${importStatement}\n\n<${componentName}${propsWithSpace}>\n ${children}\n</${componentName}>`
57
+ : `${importStatement}\n\n<${componentName}${propsWithSpace} />`;
58
+ return `${deprecationHeader}${snippet}`;
59
+ }
60
+ //# sourceMappingURL=get-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component.js","sourceRoot":"","sources":["../../src/tools/get-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * get_composition_hints Tool (new in v3.0.0).
3
+ *
4
+ * Returns the DS's authoritative composition hints for a component —
5
+ * `meta.verbose.components[X].composes` — which prop of X naturally
6
+ * accepts which other component as its value. Populated for the obvious
7
+ * cases (Button.leftIcon → Icon, Card → CardHeader/Body/Footer, etc.).
8
+ *
9
+ * Agents use this to know what other components officially pair with the
10
+ * one they're rendering, without having to grep through examples.
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const getCompositionHintsSchema: z.ZodObject<{
14
+ componentName: z.ZodEnum<[string, ...string[]]>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ componentName: string;
17
+ }, {
18
+ componentName: string;
19
+ }>;
20
+ export type GetCompositionHintsParams = z.infer<typeof getCompositionHintsSchema>;
21
+ export declare function getCompositionHints(params: GetCompositionHintsParams): Promise<string>;
22
+ //# sourceMappingURL=get-composition-hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-composition-hints.d.ts","sourceRoot":"","sources":["../../src/tools/get-composition-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,yBAAyB;;;;;;EAIpC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB5F"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * get_composition_hints Tool (new in v3.0.0).
3
+ *
4
+ * Returns the DS's authoritative composition hints for a component —
5
+ * `meta.verbose.components[X].composes` — which prop of X naturally
6
+ * accepts which other component as its value. Populated for the obvious
7
+ * cases (Button.leftIcon → Icon, Card → CardHeader/Body/Footer, etc.).
8
+ *
9
+ * Agents use this to know what other components officially pair with the
10
+ * one they're rendering, without having to grep through examples.
11
+ */
12
+ import { z } from 'zod';
13
+ import { getVerboseComponent, getComponentNames } from '../utils/meta-loader.js';
14
+ const componentNames = getComponentNames();
15
+ export const getCompositionHintsSchema = z.object({
16
+ componentName: z
17
+ .enum(componentNames)
18
+ .describe('PascalCase name of the component (e.g. "Button", "Card") to fetch composition hints for.'),
19
+ });
20
+ export async function getCompositionHints(params) {
21
+ const { componentName } = params;
22
+ const cmp = getVerboseComponent(componentName);
23
+ if (!cmp) {
24
+ return `Error: \`${componentName}\` is not registered in DS meta.`;
25
+ }
26
+ let out = `# Composition Hints: ${componentName}\n\n`;
27
+ if (!cmp.composes || Object.keys(cmp.composes).length === 0) {
28
+ out += '_No formal composition hints in DS meta for this component. This does not necessarily mean nothing pairs with it — the DS only populates the obvious cases (e.g. `Button.leftIcon → Icon`)._\n';
29
+ return out;
30
+ }
31
+ out += 'These are the DS-authoritative composition hints — for each of the listed props, the DS expects the specified component (or shape) as the value.\n\n';
32
+ for (const [prop, hint] of Object.entries(cmp.composes)) {
33
+ out += `- **\`${prop}\`** accepts a \`${hint.accepts}\` (as \`${hint.as}\`)\n`;
34
+ }
35
+ out += '\n';
36
+ out += 'Use `get_component_reference` for the full component reference including these hints and examples.\n';
37
+ return out;
38
+ }
39
+ //# sourceMappingURL=get-composition-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-composition-hints.js","sourceRoot":"","sources":["../../src/tools/get-composition-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhF,MAAM,cAAc,GAAG,iBAAiB,EAA2B,CAAA;AAEnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,aAAa,EAAE,CAAC;SACb,IAAI,CAAC,cAAc,CAAC;SACpB,QAAQ,CAAC,0FAA0F,CAAC;CACxG,CAAC,CAAA;AAIF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAiC;IACzE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEhC,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,YAAY,aAAa,kCAAkC,CAAA;IACpE,CAAC;IAED,IAAI,GAAG,GAAG,wBAAwB,aAAa,MAAM,CAAA;IAErD,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,GAAG,IAAI,gMAAgM,CAAA;QACvM,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,GAAG,IAAI,sJAAsJ,CAAA;IAE7J,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,GAAG,IAAI,SAAS,IAAI,oBAAoB,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,EAAE,OAAO,CAAA;IAChF,CAAC;IAED,GAAG,IAAI,IAAI,CAAA;IACX,GAAG,IAAI,sGAAsG,CAAA;IAE7G,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * get_design_tokens Tool — meta-backed (v3.0.0; RN branch stripped in v4.0.0).
3
+ *
4
+ * Returns DS tokens (colors, spacing, typography, radius, shadows, motion)
5
+ * from `meta.tokens`. Post-brand-neutralization: no baked brand framing —
6
+ * output describes what meta actually declares.
7
+ *
8
+ * Format parameter:
9
+ * - 'css' (default) — CSS variable references (`var(--color-*)`).
10
+ * Resolves to OKLCH values at runtime in the browser.
11
+ * - 'hex' — Raw hex strings from meta (source of truth in JS).
12
+ * - 'both' — Both forms per token for agents that need to pick.
13
+ */
14
+ import { z } from 'zod';
15
+ export declare const getDesignTokensSchema: z.ZodObject<{
16
+ format: z.ZodOptional<z.ZodEnum<["css", "hex", "both"]>>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ format?: "css" | "hex" | "both" | undefined;
19
+ }, {
20
+ format?: "css" | "hex" | "both" | undefined;
21
+ }>;
22
+ export type GetDesignTokensParams = z.infer<typeof getDesignTokensSchema>;
23
+ export declare function getDesignTokens(params?: GetDesignTokensParams): Promise<string>;
24
+ //# sourceMappingURL=get-design-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-design-tokens.d.ts","sourceRoot":"","sources":["../../src/tools/get-design-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,qBAAqB;;;;;;EAOhC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AA+CzE,wBAAsB,eAAe,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCzF"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * get_design_tokens Tool — meta-backed (v3.0.0; RN branch stripped in v4.0.0).
3
+ *
4
+ * Returns DS tokens (colors, spacing, typography, radius, shadows, motion)
5
+ * from `meta.tokens`. Post-brand-neutralization: no baked brand framing —
6
+ * output describes what meta actually declares.
7
+ *
8
+ * Format parameter:
9
+ * - 'css' (default) — CSS variable references (`var(--color-*)`).
10
+ * Resolves to OKLCH values at runtime in the browser.
11
+ * - 'hex' — Raw hex strings from meta (source of truth in JS).
12
+ * - 'both' — Both forms per token for agents that need to pick.
13
+ */
14
+ import { z } from 'zod';
15
+ import { getLightMeta } from '../utils/meta-loader.js';
16
+ export const getDesignTokensSchema = z.object({
17
+ format: z
18
+ .enum(['css', 'hex', 'both'])
19
+ .optional()
20
+ .describe("Output format for color values (default 'css'). 'css' returns var(--color-*) references (resolve to OKLCH at runtime). 'hex' returns sRGB hex strings. 'both' returns both."),
21
+ });
22
+ /**
23
+ * Given a nested token value (which may be a scalar like "#123456" or an
24
+ * object of scalars keyed by shade), yield (path, value) entries.
25
+ * Path is joined with `-` and used both as the tail of the CSS var name
26
+ * and as the display key.
27
+ */
28
+ function* walkTokens(node, path = []) {
29
+ if (node === null || node === undefined)
30
+ return;
31
+ if (typeof node === 'string' || typeof node === 'number') {
32
+ yield { path, value: String(node) };
33
+ return;
34
+ }
35
+ if (typeof node === 'object' && !Array.isArray(node)) {
36
+ for (const [k, v] of Object.entries(node)) {
37
+ yield* walkTokens(v, [...path, k]);
38
+ }
39
+ return;
40
+ }
41
+ if (Array.isArray(node)) {
42
+ yield { path, value: JSON.stringify(node) };
43
+ }
44
+ }
45
+ function formatValue(value, format, cssVar) {
46
+ if (format === 'css')
47
+ return `var(${cssVar})`;
48
+ if (format === 'hex')
49
+ return value;
50
+ return `var(${cssVar}) — ${value}`;
51
+ }
52
+ function renderCategory(title, root, cssPrefix, format) {
53
+ if (!root || Object.keys(root).length === 0)
54
+ return '';
55
+ let out = `## ${title}\n\n`;
56
+ for (const { path, value } of walkTokens(root)) {
57
+ const key = path.join('-');
58
+ const cssVar = `--${cssPrefix}${key}`;
59
+ out += `- \`${key}\`: ${formatValue(value, format, cssVar)}\n`;
60
+ }
61
+ return out + '\n';
62
+ }
63
+ export async function getDesignTokens(params = {}) {
64
+ const format = params.format ?? 'css';
65
+ const meta = getLightMeta();
66
+ const t = meta.tokens;
67
+ let response = `# Design Tokens (${meta.package.name}@${meta.package.version})\n\n`;
68
+ response += `Format: \`${format}\`. `;
69
+ if (format === 'css') {
70
+ response += 'CSS variable references resolve to OKLCH values at runtime in supporting browsers.\n\n';
71
+ }
72
+ else if (format === 'hex') {
73
+ response += 'sRGB hex strings (source of truth in JS). CSS runtime form is OKLCH; see `format: "css"` for those references.\n\n';
74
+ }
75
+ else {
76
+ response += 'Both CSS variable references and hex source values.\n\n';
77
+ }
78
+ response += renderCategory('Colors — semantic', t.colors.semantic, 'color-', format);
79
+ response += renderCategory('Colors — brand', t.colors.brand, 'color-', format);
80
+ response += renderCategory('Spacing', t.spacing, 'spacing-', format);
81
+ response += renderCategory('Typography', t.typography, 'font-', format);
82
+ response += renderCategory('Radius', t.radius, 'radius-', format);
83
+ response += renderCategory('Shadows', t.shadows, 'shadow-', format);
84
+ response += renderCategory('Motion', t.motion, '', format);
85
+ response += '## Usage\n\n';
86
+ response += '```css\n';
87
+ response += '.my-component {\n';
88
+ response += ' color: var(--color-primary);\n';
89
+ response += ' padding: var(--spacing-md);\n';
90
+ response += ' border-radius: var(--radius-lg);\n';
91
+ response += ' box-shadow: var(--shadow-md);\n';
92
+ response += '}\n';
93
+ response += '```\n';
94
+ return response;
95
+ }
96
+ //# sourceMappingURL=get-design-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-design-tokens.js","sourceRoot":"","sources":["../../src/tools/get-design-tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * get_ds_metadata Tool (new in v3.0.0).
3
+ *
4
+ * One-call "what am I talking to." Returns the DS package identity, the
5
+ * meta schema version, capability totals, exports map, and icon totals so
6
+ * an agent (or a CI guard) can self-orient without having to make
7
+ * multiple introspection calls.
8
+ *
9
+ * Enables issue #11's version/component-count sync guard trivially —
10
+ * `meta.package.version` is canonical.
11
+ */
12
+ import { z } from 'zod';
13
+ export declare const getDsMetadataSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
14
+ export type GetDsMetadataParams = z.infer<typeof getDsMetadataSchema>;
15
+ export declare function getDsMetadata(_params?: GetDsMetadataParams): Promise<string>;
16
+ //# sourceMappingURL=get-ds-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ds-metadata.d.ts","sourceRoot":"","sources":["../../src/tools/get-ds-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,mBAAmB,gDAAe,CAAA;AAE/C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,wBAAsB,aAAa,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDtF"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * get_ds_metadata Tool (new in v3.0.0).
3
+ *
4
+ * One-call "what am I talking to." Returns the DS package identity, the
5
+ * meta schema version, capability totals, exports map, and icon totals so
6
+ * an agent (or a CI guard) can self-orient without having to make
7
+ * multiple introspection calls.
8
+ *
9
+ * Enables issue #11's version/component-count sync guard trivially —
10
+ * `meta.package.version` is canonical.
11
+ */
12
+ import { z } from 'zod';
13
+ import { getLightMeta } from '../utils/meta-loader.js';
14
+ export const getDsMetadataSchema = z.object({});
15
+ export async function getDsMetadata(_params = {}) {
16
+ const meta = getLightMeta();
17
+ const totalComponents = Object.keys(meta.components).length;
18
+ const totalDeprecated = Object.values(meta.components).filter((c) => c.deprecated !== null).length;
19
+ const categories = new Set(Object.values(meta.components).map((c) => c.category));
20
+ let out = '# DS Metadata\n\n';
21
+ out += `- **Package**: \`${meta.package.name}\`\n`;
22
+ out += `- **Version**: v${meta.package.version}\n`;
23
+ out += `- **Homepage**: ${meta.package.homepage}\n`;
24
+ out += `- **Meta schema**: v${meta.$schemaVersion}\n\n`;
25
+ out += `## Component totals\n\n`;
26
+ out += `- **Total components**: ${totalComponents}\n`;
27
+ out += `- **Categories**: ${categories.size} (${[...categories].sort().join(', ')})\n`;
28
+ out += `- **Deprecated**: ${totalDeprecated}\n\n`;
29
+ out += `## Capability totals\n\n`;
30
+ out += `- **RSC-safe**: ${meta.capabilities.rscSafe.length}\n`;
31
+ out += `- **Client-only**: ${meta.capabilities.clientOnly.length}\n`;
32
+ out += `- **Polymorphic** (\`as\` / \`asChild\`): ${meta.capabilities.polymorphic.length}\n`;
33
+ out += `- **With forwarded ref**: ${meta.capabilities.withRef.length}\n\n`;
34
+ out += `## Icon totals\n\n`;
35
+ out += `- **DS brand registry**: ${meta.icons.totalCount}\n\n`;
36
+ // Hooks — added to meta in schema 1.3 (DS#504). Absent on older meta.
37
+ const hooks = meta.hooks;
38
+ if (hooks && Object.keys(hooks).length > 0) {
39
+ const hookNames = Object.keys(hooks);
40
+ const byCategory = new Map();
41
+ for (const name of hookNames) {
42
+ const cat = hooks[name].category;
43
+ byCategory.set(cat, (byCategory.get(cat) ?? 0) + 1);
44
+ }
45
+ const catBreakdown = [...byCategory.entries()]
46
+ .sort(([a], [b]) => a.localeCompare(b))
47
+ .map(([c, n]) => `${c} (${n})`)
48
+ .join(', ');
49
+ out += `## Hook totals\n\n`;
50
+ out += `- **Total hooks**: ${hookNames.length}\n`;
51
+ out += `- **By category**: ${catBreakdown}\n`;
52
+ out += `- Use \`list_hooks\` / \`get_hook\` to introspect.\n\n`;
53
+ }
54
+ out += `## Exports\n\n`;
55
+ out += `- **Main**: \`${meta.exports.main}\`\n`;
56
+ out += `- **Subpaths** (${meta.exports.subpaths.length}):\n`;
57
+ for (const s of meta.exports.subpaths.slice(0, 30)) {
58
+ out += ` - \`${s}\`\n`;
59
+ }
60
+ if (meta.exports.subpaths.length > 30) {
61
+ out += ` - _…and ${meta.exports.subpaths.length - 30} more_\n`;
62
+ }
63
+ return out;
64
+ }
65
+ //# sourceMappingURL=get-ds-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ds-metadata.js","sourceRoot":"","sources":["../../src/tools/get-ds-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * get_hook Tool — meta-backed (v3.3.0).
3
+ *
4
+ * Full detail for a single DS utility hook — signature, returns, category,
5
+ * RSC safety, subpath, description, and an import snippet. Mirrors the
6
+ * `get_component` shape for the hooks side of the DS meta (schema 1.3,
7
+ * DS#504).
8
+ */
9
+ import { z } from 'zod';
10
+ export declare const getHookSchema: z.ZodObject<{
11
+ hookName: z.ZodEnum<[string, ...string[]]>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ hookName: string;
14
+ }, {
15
+ hookName: string;
16
+ }>;
17
+ export type GetHookParams = z.infer<typeof getHookSchema>;
18
+ export declare function getHook_tool(params: GetHookParams): Promise<string>;
19
+ //# sourceMappingURL=get-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-hook.d.ts","sourceRoot":"","sources":["../../src/tools/get-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,aAAa;;;;;;EAIxB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEzD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BzE"}