@hashgraphonline/standards-agent-kit 0.2.131 → 0.2.132

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 (214) hide show
  1. package/dist/cjs/builders/inscriber/inscriber-builder.d.ts +36 -5
  2. package/dist/cjs/index.d.ts +2 -0
  3. package/dist/cjs/interfaces/FormValidatable.d.ts +45 -0
  4. package/dist/cjs/interfaces/index.d.ts +1 -0
  5. package/dist/cjs/lib/index.d.ts +1 -0
  6. package/dist/cjs/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
  7. package/dist/cjs/lib/zod-render/config-extractor.d.ts +71 -0
  8. package/dist/cjs/lib/zod-render/index.d.ts +6 -0
  9. package/dist/cjs/lib/zod-render/schema-extension.d.ts +102 -0
  10. package/dist/cjs/lib/zod-render/types.d.ts +286 -0
  11. package/dist/cjs/standards-agent-kit.cjs +1 -1
  12. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  13. package/dist/cjs/tools/hcs10/natural-language-mapper.d.ts +6 -1
  14. package/dist/cjs/tools/hcs2/CreateRegistryTool.d.ts +1 -16
  15. package/dist/cjs/tools/hcs2/DeleteEntryTool.d.ts +1 -13
  16. package/dist/cjs/tools/hcs2/RegisterEntryTool.d.ts +1 -16
  17. package/dist/cjs/tools/hcs2/UpdateEntryTool.d.ts +1 -19
  18. package/dist/cjs/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
  19. package/dist/cjs/tools/hedera/HederaCreateNftTool.d.ts +72 -0
  20. package/dist/cjs/tools/hedera/index.d.ts +1 -0
  21. package/dist/cjs/tools/index.d.ts +1 -0
  22. package/dist/cjs/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
  23. package/dist/cjs/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
  24. package/dist/cjs/types/inscription-response.d.ts +172 -0
  25. package/dist/cjs/validation/hip412-schemas.d.ts +1 -1
  26. package/dist/es/builders/inscriber/inscriber-builder.d.ts +36 -5
  27. package/dist/es/index.d.ts +2 -0
  28. package/dist/es/interfaces/FormValidatable.d.ts +45 -0
  29. package/dist/es/interfaces/index.d.ts +1 -0
  30. package/dist/es/lib/index.d.ts +1 -0
  31. package/dist/es/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
  32. package/dist/es/lib/zod-render/config-extractor.d.ts +71 -0
  33. package/dist/es/lib/zod-render/index.d.ts +6 -0
  34. package/dist/es/lib/zod-render/schema-extension.d.ts +102 -0
  35. package/dist/es/lib/zod-render/types.d.ts +286 -0
  36. package/dist/es/standards-agent-kit.es.js +6248 -44
  37. package/dist/es/standards-agent-kit.es.js.map +1 -1
  38. package/dist/es/tools/hcs10/natural-language-mapper.d.ts +6 -1
  39. package/dist/es/tools/hcs2/CreateRegistryTool.d.ts +1 -16
  40. package/dist/es/tools/hcs2/DeleteEntryTool.d.ts +1 -13
  41. package/dist/es/tools/hcs2/RegisterEntryTool.d.ts +1 -16
  42. package/dist/es/tools/hcs2/UpdateEntryTool.d.ts +1 -19
  43. package/dist/es/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
  44. package/dist/es/tools/hedera/HederaCreateNftTool.d.ts +72 -0
  45. package/dist/es/tools/hedera/index.d.ts +1 -0
  46. package/dist/es/tools/index.d.ts +1 -0
  47. package/dist/es/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
  48. package/dist/es/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
  49. package/dist/es/types/inscription-response.d.ts +172 -0
  50. package/dist/es/validation/hip412-schemas.d.ts +1 -1
  51. package/dist/umd/builders/inscriber/inscriber-builder.d.ts +36 -5
  52. package/dist/umd/index.d.ts +2 -0
  53. package/dist/umd/interfaces/FormValidatable.d.ts +45 -0
  54. package/dist/umd/interfaces/index.d.ts +1 -0
  55. package/dist/umd/lib/index.d.ts +1 -0
  56. package/dist/umd/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
  57. package/dist/umd/lib/zod-render/config-extractor.d.ts +71 -0
  58. package/dist/umd/lib/zod-render/index.d.ts +6 -0
  59. package/dist/umd/lib/zod-render/schema-extension.d.ts +102 -0
  60. package/dist/umd/lib/zod-render/types.d.ts +286 -0
  61. package/dist/umd/standards-agent-kit.umd.js +1 -1
  62. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  63. package/dist/umd/tools/hcs10/natural-language-mapper.d.ts +6 -1
  64. package/dist/umd/tools/hcs2/CreateRegistryTool.d.ts +1 -16
  65. package/dist/umd/tools/hcs2/DeleteEntryTool.d.ts +1 -13
  66. package/dist/umd/tools/hcs2/RegisterEntryTool.d.ts +1 -16
  67. package/dist/umd/tools/hcs2/UpdateEntryTool.d.ts +1 -19
  68. package/dist/umd/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
  69. package/dist/umd/tools/hedera/HederaCreateNftTool.d.ts +72 -0
  70. package/dist/umd/tools/hedera/index.d.ts +1 -0
  71. package/dist/umd/tools/index.d.ts +1 -0
  72. package/dist/umd/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
  73. package/dist/umd/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
  74. package/dist/umd/types/inscription-response.d.ts +172 -0
  75. package/dist/umd/validation/hip412-schemas.d.ts +1 -1
  76. package/package.json +29 -32
  77. package/src/builders/inscriber/inscriber-builder.ts +42 -6
  78. package/src/hcs10/HCS10Client.ts +2 -5
  79. package/src/hcs10/types.ts +1 -15
  80. package/src/index.ts +2 -0
  81. package/src/init/init.ts +7 -10
  82. package/src/interfaces/FormValidatable.ts +57 -0
  83. package/src/interfaces/index.ts +1 -0
  84. package/src/lib/index.ts +1 -0
  85. package/src/lib/zod-render/__tests__/withRender.test.ts +205 -0
  86. package/src/lib/zod-render/config-extractor.ts +443 -0
  87. package/src/lib/zod-render/index.ts +42 -0
  88. package/src/lib/zod-render/schema-extension.ts +612 -0
  89. package/src/lib/zod-render/types.ts +333 -0
  90. package/src/plugins/PluginInterface.ts +1 -2
  91. package/src/plugins/PluginRegistry.ts +1 -1
  92. package/src/plugins/hedera/HbarPricePlugin.ts +1 -1
  93. package/src/plugins/weather/index.ts +15 -4
  94. package/src/state/open-convai-state.ts +1 -11
  95. package/src/tools/hcs10/FindRegistrationsTool.ts +1 -1
  96. package/src/tools/hcs10/RegisterAgentTool.ts +3 -3
  97. package/src/tools/hcs10/SendMessageToConnectionTool.ts +4 -1
  98. package/src/tools/hcs10/natural-language-mapper.ts +35 -53
  99. package/src/tools/hcs2/CreateRegistryTool.ts +1 -1
  100. package/src/tools/hcs2/DeleteEntryTool.ts +1 -1
  101. package/src/tools/hcs2/RegisterEntryTool.ts +1 -1
  102. package/src/tools/hcs2/UpdateEntryTool.ts +1 -1
  103. package/src/tools/hcs6/CreateDynamicRegistryTool.ts +2 -2
  104. package/src/tools/hcs6/QueryDynamicRegistryTool.ts +1 -1
  105. package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +1 -1
  106. package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +2 -2
  107. package/src/tools/hedera/HederaCreateNftTool.ts +294 -0
  108. package/src/tools/hedera/index.ts +1 -0
  109. package/src/tools/index.ts +2 -1
  110. package/src/tools/inscriber/InscribeFromFileTool.ts +2 -11
  111. package/src/tools/inscriber/InscribeFromUrlTool.ts +15 -19
  112. package/src/tools/inscriber/InscribeHashinalTool.ts +594 -153
  113. package/src/tools/inscriber/RetrieveInscriptionTool.ts +34 -12
  114. package/src/tools/inscriber/base-inscriber-tools.ts +2 -24
  115. package/src/types/content-resolver.ts +3 -3
  116. package/src/types/inscription-response.ts +234 -0
  117. package/src/utils/Encryption.ts +1 -1
  118. package/src/utils/HederaClient.ts +1 -2
  119. package/src/utils/metadata-defaults.ts +15 -4
  120. package/src/utils/state-tools.ts +1 -2
  121. package/src/validation/content-ref-schemas.ts +2 -2
  122. package/src/validation/hip412-schemas.ts +1 -1
  123. package/dist/es/standards-agent-kit.es10.js +0 -89
  124. package/dist/es/standards-agent-kit.es10.js.map +0 -1
  125. package/dist/es/standards-agent-kit.es11.js +0 -40
  126. package/dist/es/standards-agent-kit.es11.js.map +0 -1
  127. package/dist/es/standards-agent-kit.es12.js +0 -40
  128. package/dist/es/standards-agent-kit.es12.js.map +0 -1
  129. package/dist/es/standards-agent-kit.es13.js +0 -50
  130. package/dist/es/standards-agent-kit.es13.js.map +0 -1
  131. package/dist/es/standards-agent-kit.es14.js +0 -60
  132. package/dist/es/standards-agent-kit.es14.js.map +0 -1
  133. package/dist/es/standards-agent-kit.es15.js +0 -72
  134. package/dist/es/standards-agent-kit.es15.js.map +0 -1
  135. package/dist/es/standards-agent-kit.es16.js +0 -35
  136. package/dist/es/standards-agent-kit.es16.js.map +0 -1
  137. package/dist/es/standards-agent-kit.es17.js +0 -35
  138. package/dist/es/standards-agent-kit.es17.js.map +0 -1
  139. package/dist/es/standards-agent-kit.es18.js +0 -45
  140. package/dist/es/standards-agent-kit.es18.js.map +0 -1
  141. package/dist/es/standards-agent-kit.es19.js +0 -21
  142. package/dist/es/standards-agent-kit.es19.js.map +0 -1
  143. package/dist/es/standards-agent-kit.es2.js +0 -25
  144. package/dist/es/standards-agent-kit.es2.js.map +0 -1
  145. package/dist/es/standards-agent-kit.es20.js +0 -160
  146. package/dist/es/standards-agent-kit.es20.js.map +0 -1
  147. package/dist/es/standards-agent-kit.es21.js +0 -32
  148. package/dist/es/standards-agent-kit.es21.js.map +0 -1
  149. package/dist/es/standards-agent-kit.es22.js +0 -46
  150. package/dist/es/standards-agent-kit.es22.js.map +0 -1
  151. package/dist/es/standards-agent-kit.es23.js +0 -48
  152. package/dist/es/standards-agent-kit.es23.js.map +0 -1
  153. package/dist/es/standards-agent-kit.es24.js +0 -51
  154. package/dist/es/standards-agent-kit.es24.js.map +0 -1
  155. package/dist/es/standards-agent-kit.es25.js +0 -45
  156. package/dist/es/standards-agent-kit.es25.js.map +0 -1
  157. package/dist/es/standards-agent-kit.es26.js +0 -48
  158. package/dist/es/standards-agent-kit.es26.js.map +0 -1
  159. package/dist/es/standards-agent-kit.es27.js +0 -45
  160. package/dist/es/standards-agent-kit.es27.js.map +0 -1
  161. package/dist/es/standards-agent-kit.es28.js +0 -32
  162. package/dist/es/standards-agent-kit.es28.js.map +0 -1
  163. package/dist/es/standards-agent-kit.es29.js +0 -35
  164. package/dist/es/standards-agent-kit.es29.js.map +0 -1
  165. package/dist/es/standards-agent-kit.es3.js +0 -1572
  166. package/dist/es/standards-agent-kit.es3.js.map +0 -1
  167. package/dist/es/standards-agent-kit.es30.js +0 -48
  168. package/dist/es/standards-agent-kit.es30.js.map +0 -1
  169. package/dist/es/standards-agent-kit.es31.js +0 -46
  170. package/dist/es/standards-agent-kit.es31.js.map +0 -1
  171. package/dist/es/standards-agent-kit.es32.js +0 -48
  172. package/dist/es/standards-agent-kit.es32.js.map +0 -1
  173. package/dist/es/standards-agent-kit.es33.js +0 -90
  174. package/dist/es/standards-agent-kit.es33.js.map +0 -1
  175. package/dist/es/standards-agent-kit.es34.js +0 -245
  176. package/dist/es/standards-agent-kit.es34.js.map +0 -1
  177. package/dist/es/standards-agent-kit.es35.js +0 -229
  178. package/dist/es/standards-agent-kit.es35.js.map +0 -1
  179. package/dist/es/standards-agent-kit.es36.js +0 -187
  180. package/dist/es/standards-agent-kit.es36.js.map +0 -1
  181. package/dist/es/standards-agent-kit.es37.js +0 -260
  182. package/dist/es/standards-agent-kit.es37.js.map +0 -1
  183. package/dist/es/standards-agent-kit.es38.js +0 -45
  184. package/dist/es/standards-agent-kit.es38.js.map +0 -1
  185. package/dist/es/standards-agent-kit.es39.js +0 -249
  186. package/dist/es/standards-agent-kit.es39.js.map +0 -1
  187. package/dist/es/standards-agent-kit.es4.js +0 -95
  188. package/dist/es/standards-agent-kit.es4.js.map +0 -1
  189. package/dist/es/standards-agent-kit.es40.js +0 -141
  190. package/dist/es/standards-agent-kit.es40.js.map +0 -1
  191. package/dist/es/standards-agent-kit.es41.js +0 -33
  192. package/dist/es/standards-agent-kit.es41.js.map +0 -1
  193. package/dist/es/standards-agent-kit.es42.js +0 -28
  194. package/dist/es/standards-agent-kit.es42.js.map +0 -1
  195. package/dist/es/standards-agent-kit.es43.js +0 -7
  196. package/dist/es/standards-agent-kit.es43.js.map +0 -1
  197. package/dist/es/standards-agent-kit.es44.js +0 -57
  198. package/dist/es/standards-agent-kit.es44.js.map +0 -1
  199. package/dist/es/standards-agent-kit.es45.js +0 -6
  200. package/dist/es/standards-agent-kit.es45.js.map +0 -1
  201. package/dist/es/standards-agent-kit.es46.js +0 -43
  202. package/dist/es/standards-agent-kit.es46.js.map +0 -1
  203. package/dist/es/standards-agent-kit.es47.js +0 -15
  204. package/dist/es/standards-agent-kit.es47.js.map +0 -1
  205. package/dist/es/standards-agent-kit.es5.js +0 -113
  206. package/dist/es/standards-agent-kit.es5.js.map +0 -1
  207. package/dist/es/standards-agent-kit.es6.js +0 -56
  208. package/dist/es/standards-agent-kit.es6.js.map +0 -1
  209. package/dist/es/standards-agent-kit.es7.js +0 -332
  210. package/dist/es/standards-agent-kit.es7.js.map +0 -1
  211. package/dist/es/standards-agent-kit.es8.js +0 -32
  212. package/dist/es/standards-agent-kit.es8.js.map +0 -1
  213. package/dist/es/standards-agent-kit.es9.js +0 -240
  214. package/dist/es/standards-agent-kit.es9.js.map +0 -1
@@ -1,20 +1,51 @@
1
1
  import { BaseServiceBuilder, HederaAgentKit } from 'hedera-agent-kit';
2
2
  import { InscriptionInput, InscriptionOptions, InscriptionResponse, RetrievedInscriptionResult } from '@hashgraphonline/standards-sdk';
3
3
  /**
4
- * Type definition for DAppSigner since we don't have the actual package
4
+ * Type definition for DAppSigner from hedera-wallet-connect
5
5
  */
6
6
  interface DAppSigner {
7
7
  getAccountId(): {
8
8
  toString(): string;
9
9
  };
10
+ [key: string]: unknown;
11
+ }
12
+ /**
13
+ * Type definition for inscription request parameters
14
+ */
15
+ interface InscriptionRequest {
16
+ [key: string]: unknown;
17
+ }
18
+ /**
19
+ * Type definition for inscription configuration
20
+ */
21
+ interface InscriptionConfig {
22
+ [key: string]: unknown;
23
+ }
24
+ /**
25
+ * Type definition for inscription execution result
26
+ */
27
+ interface InscriptionExecutionResult {
28
+ [key: string]: unknown;
29
+ }
30
+ /**
31
+ * Type definition for inscription result
32
+ */
33
+ interface InscriptionResult {
34
+ [key: string]: unknown;
35
+ }
36
+ /**
37
+ * Type definition for wait for inscription result
38
+ */
39
+ interface WaitForInscriptionResult {
40
+ [key: string]: unknown;
10
41
  }
11
42
  /**
12
43
  * Type definition for InscriptionSDK since we don't have the actual package
13
44
  */
14
45
  interface InscriptionSDK {
15
- inscribeAndExecute(request: any, config: any): Promise<any>;
16
- inscribe(request: any, signer: any): Promise<any>;
17
- waitForInscription(txId: string, maxAttempts: number, intervalMs: number, checkCompletion: boolean, progressCallback?: Function): Promise<any>;
46
+ inscribeAndExecute(request: InscriptionRequest, config: InscriptionConfig): Promise<InscriptionExecutionResult>;
47
+ inscribe(request: InscriptionRequest, signer: DAppSigner): Promise<InscriptionResult>;
48
+ waitForInscription(txId: string, maxAttempts: number, intervalMs: number, checkCompletion: boolean, progressCallback?: (...args: unknown[]) => void): Promise<WaitForInscriptionResult>;
18
49
  }
19
50
  /**
20
51
  * Builder for Inscription operations
@@ -25,7 +56,7 @@ export declare class InscriberBuilder extends BaseServiceBuilder {
25
56
  /**
26
57
  * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK
27
58
  */
28
- protected getInscriptionSDK(options: InscriptionOptions): Promise<InscriptionSDK | null>;
59
+ protected getInscriptionSDK(_options: InscriptionOptions): Promise<InscriptionSDK | null>;
29
60
  /**
30
61
  * Inscribe content using server-side authentication
31
62
  */
@@ -2,6 +2,8 @@ export * from './tools';
2
2
  export * from './state';
3
3
  export * from './init';
4
4
  export * from './plugins';
5
+ export * from './lib';
6
+ export * from './interfaces';
5
7
  export { HCS10Builder, HCS2Builder, HCS6Builder, InscriberBuilder } from './builders';
6
8
  export type { ExecuteResult } from './builders';
7
9
  export { HCS10Client } from './hcs10';
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Interface for tools that can provide custom form validation logic
4
+ */
5
+ export interface FormValidatable {
6
+ /**
7
+ * Determines if a form should be generated for the given input
8
+ * @param input The input data to validate
9
+ * @returns true if a form should be generated, false if the tool can execute
10
+ */
11
+ shouldGenerateForm(input: unknown): boolean;
12
+ /**
13
+ * Returns the schema to use for form generation
14
+ * This allows tools to provide a focused schema for forms
15
+ * @returns The schema to use for generating forms
16
+ */
17
+ getFormSchema(): z.ZodSchema;
18
+ /**
19
+ * Optional method to validate metadata quality and provide detailed feedback
20
+ * @param input The input data to analyze
21
+ * @returns Object indicating if form is needed and the reason
22
+ */
23
+ validateMetadataQuality?(input: unknown): {
24
+ needsForm: boolean;
25
+ reason: string;
26
+ };
27
+ /**
28
+ * Optional method to define which fields are essential for this tool
29
+ * Essential fields are always shown in forms even if marked as optional
30
+ * @returns Array of field names that are essential for user experience
31
+ */
32
+ getEssentialFields?(): string[];
33
+ /**
34
+ * Optional method to determine if a field value should be considered empty
35
+ * Allows tools to define custom empty logic for their specific data types
36
+ * @param fieldName The name of the field
37
+ * @param value The value to check
38
+ * @returns true if the field should be considered empty
39
+ */
40
+ isFieldEmpty?(fieldName: string, value: unknown): boolean;
41
+ }
42
+ /**
43
+ * Type guard to check if a tool implements FormValidatable
44
+ */
45
+ export declare function isFormValidatable(tool: unknown): tool is FormValidatable;
@@ -0,0 +1 @@
1
+ export * from './FormValidatable';
@@ -0,0 +1 @@
1
+ export * from './zod-render';
@@ -0,0 +1,71 @@
1
+ import { ZodType } from 'zod';
2
+ import { RenderConfigSchema, ExtractedRenderConfig, FieldMetadata, FormFieldType } from './types';
3
+ /**
4
+ * Type definition for field config map entries
5
+ */
6
+ interface FieldConfigMapEntry {
7
+ renderConfig: RenderConfigSchema;
8
+ metadata: FieldMetadata;
9
+ path: string[];
10
+ }
11
+ /**
12
+ * Type definition for validation rules entries
13
+ */
14
+ interface ValidationRulesEntry {
15
+ required: boolean;
16
+ type: FormFieldType;
17
+ constraints: Record<string, unknown>;
18
+ customMessages?: Record<string, string>;
19
+ }
20
+ /**
21
+ * Type definition for simple field configuration
22
+ */
23
+ interface SimpleFieldConfig {
24
+ name: string;
25
+ type: FormFieldType;
26
+ label: string;
27
+ required: boolean;
28
+ placeholder?: string;
29
+ options?: Array<{
30
+ value: unknown;
31
+ label: string;
32
+ }>;
33
+ }
34
+ /**
35
+ * Extracts render configurations from a Zod schema and all nested schemas
36
+ */
37
+ export declare function extractRenderConfigs(schema: ZodType<unknown>): ExtractedRenderConfig;
38
+ /**
39
+ * Generates field ordering metadata for complex forms
40
+ */
41
+ export declare function generateFieldOrdering(schema: ZodType<unknown>): {
42
+ sections: Record<string, {
43
+ title: string;
44
+ fields: string[];
45
+ order: number;
46
+ }>;
47
+ fieldOrder: string[];
48
+ };
49
+ /**
50
+ * Creates a field configuration map for form builders
51
+ */
52
+ export declare function createFieldConfigMap(schema: ZodType<unknown>): Record<string, FieldConfigMapEntry>;
53
+ /**
54
+ * Generates validation rules from schema and render configs
55
+ */
56
+ export declare function extractValidationRules(schema: ZodType<unknown>): Record<string, ValidationRulesEntry>;
57
+ /**
58
+ * Merges render configurations from multiple schemas
59
+ */
60
+ export declare function mergeRenderConfigs(...configs: ExtractedRenderConfig[]): ExtractedRenderConfig;
61
+ /**
62
+ * Filters render configurations based on conditions
63
+ */
64
+ export declare function filterRenderConfigs(config: ExtractedRenderConfig, filter: (fieldPath: string, renderConfig: RenderConfigSchema) => boolean): ExtractedRenderConfig;
65
+ /**
66
+ * Creates a simplified configuration for basic form rendering
67
+ */
68
+ export declare function createSimpleConfig(schema: ZodType<unknown>): {
69
+ fields: Array<SimpleFieldConfig>;
70
+ };
71
+ export {};
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './schema-extension';
3
+ export * from './config-extractor';
4
+ export { extendZodSchema, hasRenderConfig, getRenderConfig, renderConfigs, createRenderConfig, schemaComposer } from './schema-extension';
5
+ export { extractRenderConfigs, generateFieldOrdering, createFieldConfigMap, extractValidationRules, mergeRenderConfigs, filterRenderConfigs, createSimpleConfig } from './config-extractor';
6
+ export type { FormFieldType, RenderContext, RenderFunction, RenderConfigSchema, ZodSchemaWithRender, FormGenerationOptions, ValidationError, FormState, FormActions, UseFormReturn, ComponentRegistry, FieldComponentProps, SelectOption, FileUploadResult, FieldMetadata, SchemaComposer, ExtractedRenderConfig } from './types';
@@ -0,0 +1,102 @@
1
+ import { ZodType } from 'zod';
2
+ import { RenderConfigSchema, EnhancedRenderConfig, ZodSchemaWithRender, FormFieldType, FieldMetadata, SelectOption, SchemaComposer } from './types';
3
+ /**
4
+ * Extends a Zod schema with render configuration capabilities
5
+ */
6
+ export declare function extendZodSchema<TSchema>(schema: ZodType<TSchema>): ZodSchemaWithRender<TSchema>;
7
+ /**
8
+ * Checks if a schema has render configuration
9
+ */
10
+ export declare function hasRenderConfig(schema: unknown): schema is ZodSchemaWithRender;
11
+ /**
12
+ * Extracts render configuration from a schema
13
+ */
14
+ export declare function getRenderConfig(schema: ZodType<unknown>): EnhancedRenderConfig | undefined;
15
+ /**
16
+ * Infers form field type from Zod schema type with enhanced field detection
17
+ */
18
+ export declare function inferFieldTypeFromSchema(schema: ZodType<unknown>): FormFieldType;
19
+ /**
20
+ * Extracts options from enum, union, or literal schemas
21
+ */
22
+ export declare function extractOptionsFromSchema(schema: ZodType<unknown>): SelectOption[] | undefined;
23
+ /**
24
+ * Checks if a schema is optional
25
+ */
26
+ export declare function isOptionalSchema(schema: ZodType<unknown>): boolean;
27
+ /**
28
+ * Gets the inner schema from optional/default wrappers
29
+ */
30
+ export declare function getInnerSchema(schema: ZodType<unknown>): ZodType<unknown>;
31
+ /**
32
+ * Extracts validation constraints from a schema with enhanced support
33
+ */
34
+ export declare function extractValidationConstraints(schema: ZodType<unknown>): Record<string, unknown>;
35
+ /**
36
+ * Gets default value from schema with comprehensive type support
37
+ */
38
+ export declare function getDefaultValue(schema: ZodType<unknown>): unknown;
39
+ /**
40
+ * Extracts field metadata from schema including render configuration
41
+ */
42
+ export declare function extractFieldMetadata(schema: ZodType<unknown>): FieldMetadata;
43
+ /**
44
+ * Schema composition utilities for building complex forms
45
+ */
46
+ export declare const schemaComposer: SchemaComposer;
47
+ /**
48
+ * Creates render configuration with sensible defaults
49
+ */
50
+ export declare function createRenderConfig(overrides?: Partial<EnhancedRenderConfig>): EnhancedRenderConfig;
51
+ /**
52
+ * Helper function to create common render configurations
53
+ */
54
+ export declare const renderConfigs: {
55
+ text: (label: string, placeholder?: string, priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
56
+ number: (label: string, min?: number, max?: number, priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
57
+ select: (label: string, options: SelectOption[], priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
58
+ textarea: (label: string, rows?: number, priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
59
+ currency: (label: string, symbol?: string, priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
60
+ array: (label: string, itemLabel?: string, priority?: "essential" | "common" | "advanced" | "expert") => EnhancedRenderConfig;
61
+ essential: {
62
+ text: (label: string, placeholder?: string) => EnhancedRenderConfig;
63
+ number: (label: string, min?: number, max?: number) => EnhancedRenderConfig;
64
+ select: (label: string, options: SelectOption[]) => EnhancedRenderConfig;
65
+ textarea: (label: string, rows?: number) => EnhancedRenderConfig;
66
+ };
67
+ advanced: {
68
+ text: (label: string, placeholder?: string) => EnhancedRenderConfig;
69
+ number: (label: string, min?: number, max?: number) => EnhancedRenderConfig;
70
+ select: (label: string, options: SelectOption[]) => EnhancedRenderConfig;
71
+ textarea: (label: string, rows?: number) => EnhancedRenderConfig;
72
+ array: (label: string, itemLabel?: string) => EnhancedRenderConfig;
73
+ };
74
+ expert: {
75
+ text: (label: string, placeholder?: string) => EnhancedRenderConfig;
76
+ number: (label: string, min?: number, max?: number) => EnhancedRenderConfig;
77
+ select: (label: string, options: SelectOption[]) => EnhancedRenderConfig;
78
+ textarea: (label: string, rows?: number) => EnhancedRenderConfig;
79
+ };
80
+ };
81
+ /**
82
+ * Extends Zod prototype to add withRender functionality globally
83
+ */
84
+ export declare function installZodRenderExtensions(): void;
85
+ /**
86
+ * Creates a progressive form schema with grouped fields
87
+ */
88
+ export declare function createProgressiveSchema<TSchema>(baseSchema: ZodType<TSchema>, groups: Record<string, {
89
+ priority: 'essential' | 'common' | 'advanced' | 'expert';
90
+ fields: string[];
91
+ }>): ZodSchemaWithRender<TSchema>;
92
+ /**
93
+ * Utility to convert legacy render configs to enhanced configs
94
+ */
95
+ export declare function enhanceRenderConfig(config: RenderConfigSchema): EnhancedRenderConfig;
96
+ /**
97
+ * Helper to extract progressive disclosure information from schema
98
+ */
99
+ export declare function extractProgressiveInfo(schema: ZodType<unknown>): {
100
+ priority: 'essential' | 'common' | 'advanced' | 'expert';
101
+ group?: string;
102
+ };
@@ -0,0 +1,286 @@
1
+ import { ZodType } from 'zod';
2
+ export type ReactNode = unknown;
3
+ export type ReactElement = unknown;
4
+ export type ComponentType<_TProps = Record<string, unknown>> = unknown;
5
+ /**
6
+ * Core form field types supported by the render system
7
+ */
8
+ export type FormFieldType = 'text' | 'number' | 'select' | 'checkbox' | 'textarea' | 'file' | 'array' | 'object' | 'currency' | 'percentage';
9
+ /**
10
+ * Context provided to render functions containing field state and callbacks
11
+ */
12
+ export type RenderContext = {
13
+ path: string[];
14
+ value: unknown;
15
+ setValue: (value: unknown) => void;
16
+ error?: string;
17
+ disabled?: boolean;
18
+ required?: boolean;
19
+ };
20
+ /**
21
+ * Function that renders a field component for a Zod schema
22
+ */
23
+ export type RenderFunction<TSchema = unknown> = (schema: ZodType<TSchema>, context: RenderContext) => ReactNode;
24
+ /**
25
+ * Configuration for rendering a form field
26
+ */
27
+ export type RenderConfigSchema = {
28
+ fieldType: FormFieldType;
29
+ component?: ComponentType<Record<string, unknown>>;
30
+ props?: Record<string, unknown>;
31
+ wrapper?: ComponentType<{
32
+ children: ReactNode;
33
+ }>;
34
+ validation?: {
35
+ customMessages?: Record<string, string>;
36
+ };
37
+ ui?: {
38
+ label?: string;
39
+ placeholder?: string;
40
+ helpText?: string;
41
+ group?: string;
42
+ order?: number;
43
+ hidden?: boolean;
44
+ readonly?: boolean;
45
+ width?: 'full' | 'half' | 'third' | 'quarter';
46
+ className?: string;
47
+ priority?: 'essential' | 'common' | 'advanced' | 'expert';
48
+ collapsible?: boolean;
49
+ expanded?: boolean;
50
+ icon?: string;
51
+ description?: string;
52
+ };
53
+ options?: Array<{
54
+ value: unknown;
55
+ label: string;
56
+ disabled?: boolean;
57
+ }>;
58
+ constraints?: {
59
+ min?: number;
60
+ max?: number;
61
+ step?: number;
62
+ minLength?: number;
63
+ maxLength?: number;
64
+ pattern?: string;
65
+ accept?: string;
66
+ multiple?: boolean;
67
+ };
68
+ };
69
+ /**
70
+ * Extended Zod schema with render configuration
71
+ */
72
+ export interface ZodSchemaWithRender<TSchema = unknown> extends ZodType<TSchema> {
73
+ _renderConfig?: EnhancedRenderConfig;
74
+ withRender: (config: EnhancedRenderConfig | RenderConfigSchema) => ZodSchemaWithRender<TSchema>;
75
+ withProgressive: (priority: 'essential' | 'common' | 'advanced' | 'expert', group?: string) => ZodSchemaWithRender<TSchema>;
76
+ withBlock: (blockId: string) => ZodSchemaWithRender<TSchema>;
77
+ }
78
+ /**
79
+ * Progressive disclosure configuration
80
+ */
81
+ export type ProgressiveDisclosureConfig = {
82
+ enabled?: boolean;
83
+ groups?: FormGroup[];
84
+ defaultExpanded?: string[];
85
+ showFieldCount?: boolean;
86
+ adaptiveLayout?: boolean;
87
+ essentialOnly?: boolean;
88
+ };
89
+ /**
90
+ * Form group configuration for progressive disclosure
91
+ */
92
+ export type FormGroup = {
93
+ name: string;
94
+ priority: 'essential' | 'common' | 'advanced' | 'expert';
95
+ collapsible?: boolean;
96
+ description?: string;
97
+ icon?: string;
98
+ defaultExpanded?: boolean;
99
+ };
100
+ /**
101
+ * Options for generating forms from schemas
102
+ */
103
+ export type FormGenerationOptions = {
104
+ fieldOrder?: string[];
105
+ fieldConfigs?: Record<string, RenderConfigSchema>;
106
+ onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
107
+ onValueChange?: (path: string[], value: unknown) => void;
108
+ className?: string;
109
+ disabled?: boolean;
110
+ showSubmitButton?: boolean;
111
+ submitButtonText?: string;
112
+ resetButtonText?: string;
113
+ showResetButton?: boolean;
114
+ groupBy?: 'none' | 'group' | 'section';
115
+ layout?: 'vertical' | 'horizontal' | 'grid';
116
+ progressiveDisclosure?: ProgressiveDisclosureConfig;
117
+ };
118
+ /**
119
+ * Form validation error
120
+ */
121
+ export type ValidationError = {
122
+ path: string[];
123
+ message: string;
124
+ code: string;
125
+ };
126
+ /**
127
+ * Form state management
128
+ */
129
+ export type FormState<TValues = Record<string, unknown>> = {
130
+ values: TValues;
131
+ errors: ValidationError[];
132
+ isValidating: boolean;
133
+ isSubmitting: boolean;
134
+ isDirty: boolean;
135
+ touchedFields: Set<string>;
136
+ };
137
+ /**
138
+ * Form action handlers
139
+ */
140
+ export type FormActions<TValues = Record<string, unknown>> = {
141
+ setValue: (path: string[], value: unknown) => void;
142
+ setValues: (values: Partial<TValues>) => void;
143
+ setError: (path: string[], error: string) => void;
144
+ clearError: (path: string[]) => void;
145
+ clearErrors: () => void;
146
+ reset: () => void;
147
+ submit: () => Promise<void>;
148
+ validate: () => Promise<boolean>;
149
+ touchField: (path: string[]) => void;
150
+ };
151
+ /**
152
+ * Complete form hook return type
153
+ */
154
+ export type UseFormReturn<TValues = Record<string, unknown>> = {
155
+ state: FormState<TValues>;
156
+ actions: FormActions<TValues>;
157
+ };
158
+ /**
159
+ * Registry mapping field types to React components
160
+ */
161
+ export type ComponentRegistry = Record<FormFieldType, ComponentType<FieldComponentProps>>;
162
+ /**
163
+ * Props passed to field components
164
+ */
165
+ export type FieldComponentProps = {
166
+ value: unknown;
167
+ onChange: (value: unknown) => void;
168
+ error?: string;
169
+ disabled?: boolean;
170
+ required?: boolean;
171
+ placeholder?: string;
172
+ options?: Array<{
173
+ value: unknown;
174
+ label: string;
175
+ disabled?: boolean;
176
+ }>;
177
+ multiple?: boolean;
178
+ accept?: string;
179
+ rows?: number;
180
+ min?: number;
181
+ max?: number;
182
+ step?: number;
183
+ className?: string;
184
+ };
185
+ /**
186
+ * Option for select fields
187
+ */
188
+ export type SelectOption = {
189
+ value: unknown;
190
+ label: string;
191
+ disabled?: boolean;
192
+ };
193
+ /**
194
+ * File upload result
195
+ */
196
+ export type FileUploadResult = {
197
+ name: string;
198
+ data: string;
199
+ type: string;
200
+ size: number;
201
+ };
202
+ /**
203
+ * Field metadata extracted from schema
204
+ */
205
+ export type FieldMetadata = {
206
+ type: FormFieldType;
207
+ required: boolean;
208
+ optional: boolean;
209
+ default?: unknown;
210
+ options?: SelectOption[];
211
+ constraints?: Record<string, unknown>;
212
+ description?: string;
213
+ validation?: {
214
+ minLength?: number;
215
+ maxLength?: number;
216
+ min?: number;
217
+ max?: number;
218
+ pattern?: RegExp;
219
+ };
220
+ };
221
+ /**
222
+ * Schema composition utilities
223
+ */
224
+ export type SchemaComposer = {
225
+ merge: <TSchema1, TSchema2>(schema1: ZodType<TSchema1>, schema2: ZodType<TSchema2>) => ZodType<TSchema1 & TSchema2>;
226
+ extend: <TSchema>(schema: ZodType<TSchema>, extensions: Record<string, ZodType<unknown>>) => ZodType<TSchema>;
227
+ pick: <TSchema>(schema: ZodType<TSchema>, keys: string[]) => ZodType<Partial<TSchema>>;
228
+ omit: <TSchema>(schema: ZodType<TSchema>, keys: string[]) => ZodType<Omit<TSchema, string>>;
229
+ };
230
+ /**
231
+ * Render config extraction result
232
+ */
233
+ export type ExtractedRenderConfig = {
234
+ fields: Record<string, RenderConfigSchema>;
235
+ groups: Record<string, string[]>;
236
+ order: string[];
237
+ metadata: Record<string, FieldMetadata>;
238
+ progressiveDisclosure?: ProgressiveDisclosureConfig;
239
+ };
240
+ /**
241
+ * Block-based form architecture types
242
+ */
243
+ export type FormBlock<TSchema = unknown> = {
244
+ id: string;
245
+ name: string;
246
+ schema: ZodType<TSchema>;
247
+ renderConfig?: RenderConfigSchema;
248
+ validate?: (data: unknown) => ValidationError[];
249
+ getDefaultValue?: () => unknown;
250
+ metadata?: {
251
+ category?: string;
252
+ reusable?: boolean;
253
+ description?: string;
254
+ version?: string;
255
+ };
256
+ };
257
+ /**
258
+ * Block registry for reusable form components
259
+ */
260
+ export type BlockRegistry = {
261
+ register: <TSchema>(block: FormBlock<TSchema>) => void;
262
+ get: <TSchema>(id: string) => FormBlock<TSchema> | undefined;
263
+ list: () => FormBlock[];
264
+ listByCategory: (category: string) => FormBlock[];
265
+ unregister: (id: string) => void;
266
+ };
267
+ /**
268
+ * Enhanced render configuration with block support
269
+ */
270
+ export type EnhancedRenderConfig = RenderConfigSchema & {
271
+ block?: {
272
+ id?: string;
273
+ type?: 'field' | 'group' | 'section' | 'array-item' | 'union-variant';
274
+ reusable?: boolean;
275
+ composition?: {
276
+ blocks?: string[];
277
+ layout?: 'stack' | 'grid' | 'flex';
278
+ };
279
+ };
280
+ progressive?: {
281
+ priority: 'essential' | 'common' | 'advanced' | 'expert';
282
+ group?: string;
283
+ showWhen?: (values: Record<string, unknown>) => boolean;
284
+ hideWhen?: (values: Record<string, unknown>) => boolean;
285
+ };
286
+ };