@hashgraphonline/standards-agent-kit 0.2.130 → 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.
- package/dist/cjs/builders/inscriber/inscriber-builder.d.ts +36 -5
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/interfaces/FormValidatable.d.ts +45 -0
- package/dist/cjs/interfaces/index.d.ts +1 -0
- package/dist/cjs/lib/index.d.ts +1 -0
- package/dist/cjs/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
- package/dist/cjs/lib/zod-render/config-extractor.d.ts +71 -0
- package/dist/cjs/lib/zod-render/index.d.ts +6 -0
- package/dist/cjs/lib/zod-render/schema-extension.d.ts +102 -0
- package/dist/cjs/lib/zod-render/types.d.ts +286 -0
- package/dist/cjs/standards-agent-kit.cjs +1 -1
- package/dist/cjs/standards-agent-kit.cjs.map +1 -1
- package/dist/cjs/tools/hcs10/natural-language-mapper.d.ts +6 -1
- package/dist/cjs/tools/hcs2/CreateRegistryTool.d.ts +1 -16
- package/dist/cjs/tools/hcs2/DeleteEntryTool.d.ts +1 -13
- package/dist/cjs/tools/hcs2/RegisterEntryTool.d.ts +1 -16
- package/dist/cjs/tools/hcs2/UpdateEntryTool.d.ts +1 -19
- package/dist/cjs/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
- package/dist/cjs/tools/hedera/HederaCreateNftTool.d.ts +72 -0
- package/dist/cjs/tools/hedera/index.d.ts +1 -0
- package/dist/cjs/tools/index.d.ts +1 -0
- package/dist/cjs/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
- package/dist/cjs/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
- package/dist/cjs/types/inscription-response.d.ts +172 -0
- package/dist/cjs/validation/hip412-schemas.d.ts +1 -1
- package/dist/es/builders/inscriber/inscriber-builder.d.ts +36 -5
- package/dist/es/index.d.ts +2 -0
- package/dist/es/interfaces/FormValidatable.d.ts +45 -0
- package/dist/es/interfaces/index.d.ts +1 -0
- package/dist/es/lib/index.d.ts +1 -0
- package/dist/es/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
- package/dist/es/lib/zod-render/config-extractor.d.ts +71 -0
- package/dist/es/lib/zod-render/index.d.ts +6 -0
- package/dist/es/lib/zod-render/schema-extension.d.ts +102 -0
- package/dist/es/lib/zod-render/types.d.ts +286 -0
- package/dist/es/standards-agent-kit.es.js +6248 -44
- package/dist/es/standards-agent-kit.es.js.map +1 -1
- package/dist/es/tools/hcs10/natural-language-mapper.d.ts +6 -1
- package/dist/es/tools/hcs2/CreateRegistryTool.d.ts +1 -16
- package/dist/es/tools/hcs2/DeleteEntryTool.d.ts +1 -13
- package/dist/es/tools/hcs2/RegisterEntryTool.d.ts +1 -16
- package/dist/es/tools/hcs2/UpdateEntryTool.d.ts +1 -19
- package/dist/es/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
- package/dist/es/tools/hedera/HederaCreateNftTool.d.ts +72 -0
- package/dist/es/tools/hedera/index.d.ts +1 -0
- package/dist/es/tools/index.d.ts +1 -0
- package/dist/es/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
- package/dist/es/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
- package/dist/es/types/inscription-response.d.ts +172 -0
- package/dist/es/validation/hip412-schemas.d.ts +1 -1
- package/dist/umd/builders/inscriber/inscriber-builder.d.ts +36 -5
- package/dist/umd/index.d.ts +2 -0
- package/dist/umd/interfaces/FormValidatable.d.ts +45 -0
- package/dist/umd/interfaces/index.d.ts +1 -0
- package/dist/umd/lib/index.d.ts +1 -0
- package/dist/umd/lib/zod-render/__tests__/withRender.test.d.ts +1 -0
- package/dist/umd/lib/zod-render/config-extractor.d.ts +71 -0
- package/dist/umd/lib/zod-render/index.d.ts +6 -0
- package/dist/umd/lib/zod-render/schema-extension.d.ts +102 -0
- package/dist/umd/lib/zod-render/types.d.ts +286 -0
- package/dist/umd/standards-agent-kit.umd.js +1 -1
- package/dist/umd/standards-agent-kit.umd.js.map +1 -1
- package/dist/umd/tools/hcs10/natural-language-mapper.d.ts +6 -1
- package/dist/umd/tools/hcs2/CreateRegistryTool.d.ts +1 -16
- package/dist/umd/tools/hcs2/DeleteEntryTool.d.ts +1 -13
- package/dist/umd/tools/hcs2/RegisterEntryTool.d.ts +1 -16
- package/dist/umd/tools/hcs2/UpdateEntryTool.d.ts +1 -19
- package/dist/umd/tools/hcs6/CreateDynamicRegistryTool.d.ts +1 -10
- package/dist/umd/tools/hedera/HederaCreateNftTool.d.ts +72 -0
- package/dist/umd/tools/hedera/index.d.ts +1 -0
- package/dist/umd/tools/index.d.ts +1 -0
- package/dist/umd/tools/inscriber/InscribeHashinalTool.d.ts +42 -132
- package/dist/umd/tools/inscriber/RetrieveInscriptionTool.d.ts +20 -1
- package/dist/umd/types/inscription-response.d.ts +172 -0
- package/dist/umd/validation/hip412-schemas.d.ts +1 -1
- package/package.json +29 -32
- package/src/builders/inscriber/inscriber-builder.ts +42 -6
- package/src/hcs10/HCS10Client.ts +2 -5
- package/src/hcs10/types.ts +1 -15
- package/src/index.ts +2 -0
- package/src/init/init.ts +7 -10
- package/src/interfaces/FormValidatable.ts +57 -0
- package/src/interfaces/index.ts +1 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/zod-render/__tests__/withRender.test.ts +205 -0
- package/src/lib/zod-render/config-extractor.ts +443 -0
- package/src/lib/zod-render/index.ts +42 -0
- package/src/lib/zod-render/schema-extension.ts +612 -0
- package/src/lib/zod-render/types.ts +333 -0
- package/src/plugins/PluginInterface.ts +1 -2
- package/src/plugins/PluginRegistry.ts +1 -1
- package/src/plugins/hedera/HbarPricePlugin.ts +1 -1
- package/src/plugins/weather/index.ts +15 -4
- package/src/state/open-convai-state.ts +1 -11
- package/src/tools/hcs10/FindRegistrationsTool.ts +1 -1
- package/src/tools/hcs10/RegisterAgentTool.ts +3 -3
- package/src/tools/hcs10/SendMessageToConnectionTool.ts +4 -1
- package/src/tools/hcs10/natural-language-mapper.ts +35 -53
- package/src/tools/hcs2/CreateRegistryTool.ts +1 -1
- package/src/tools/hcs2/DeleteEntryTool.ts +1 -1
- package/src/tools/hcs2/RegisterEntryTool.ts +1 -1
- package/src/tools/hcs2/UpdateEntryTool.ts +1 -1
- package/src/tools/hcs6/CreateDynamicRegistryTool.ts +2 -2
- package/src/tools/hcs6/QueryDynamicRegistryTool.ts +1 -1
- package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +1 -1
- package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +2 -2
- package/src/tools/hedera/HederaCreateNftTool.ts +294 -0
- package/src/tools/hedera/index.ts +1 -0
- package/src/tools/index.ts +2 -1
- package/src/tools/inscriber/InscribeFromFileTool.ts +2 -11
- package/src/tools/inscriber/InscribeFromUrlTool.ts +15 -19
- package/src/tools/inscriber/InscribeHashinalTool.ts +596 -155
- package/src/tools/inscriber/RetrieveInscriptionTool.ts +34 -12
- package/src/tools/inscriber/base-inscriber-tools.ts +2 -24
- package/src/types/content-resolver.ts +3 -3
- package/src/types/inscription-response.ts +234 -0
- package/src/utils/Encryption.ts +1 -1
- package/src/utils/HederaClient.ts +1 -2
- package/src/utils/metadata-defaults.ts +15 -4
- package/src/utils/state-tools.ts +1 -2
- package/src/validation/content-ref-schemas.ts +2 -2
- package/src/validation/hip412-schemas.ts +1 -1
- package/dist/es/standards-agent-kit.es10.js +0 -89
- package/dist/es/standards-agent-kit.es10.js.map +0 -1
- package/dist/es/standards-agent-kit.es11.js +0 -40
- package/dist/es/standards-agent-kit.es11.js.map +0 -1
- package/dist/es/standards-agent-kit.es12.js +0 -40
- package/dist/es/standards-agent-kit.es12.js.map +0 -1
- package/dist/es/standards-agent-kit.es13.js +0 -50
- package/dist/es/standards-agent-kit.es13.js.map +0 -1
- package/dist/es/standards-agent-kit.es14.js +0 -60
- package/dist/es/standards-agent-kit.es14.js.map +0 -1
- package/dist/es/standards-agent-kit.es15.js +0 -72
- package/dist/es/standards-agent-kit.es15.js.map +0 -1
- package/dist/es/standards-agent-kit.es16.js +0 -35
- package/dist/es/standards-agent-kit.es16.js.map +0 -1
- package/dist/es/standards-agent-kit.es17.js +0 -35
- package/dist/es/standards-agent-kit.es17.js.map +0 -1
- package/dist/es/standards-agent-kit.es18.js +0 -45
- package/dist/es/standards-agent-kit.es18.js.map +0 -1
- package/dist/es/standards-agent-kit.es19.js +0 -21
- package/dist/es/standards-agent-kit.es19.js.map +0 -1
- package/dist/es/standards-agent-kit.es2.js +0 -25
- package/dist/es/standards-agent-kit.es2.js.map +0 -1
- package/dist/es/standards-agent-kit.es20.js +0 -160
- package/dist/es/standards-agent-kit.es20.js.map +0 -1
- package/dist/es/standards-agent-kit.es21.js +0 -32
- package/dist/es/standards-agent-kit.es21.js.map +0 -1
- package/dist/es/standards-agent-kit.es22.js +0 -46
- package/dist/es/standards-agent-kit.es22.js.map +0 -1
- package/dist/es/standards-agent-kit.es23.js +0 -48
- package/dist/es/standards-agent-kit.es23.js.map +0 -1
- package/dist/es/standards-agent-kit.es24.js +0 -51
- package/dist/es/standards-agent-kit.es24.js.map +0 -1
- package/dist/es/standards-agent-kit.es25.js +0 -45
- package/dist/es/standards-agent-kit.es25.js.map +0 -1
- package/dist/es/standards-agent-kit.es26.js +0 -48
- package/dist/es/standards-agent-kit.es26.js.map +0 -1
- package/dist/es/standards-agent-kit.es27.js +0 -45
- package/dist/es/standards-agent-kit.es27.js.map +0 -1
- package/dist/es/standards-agent-kit.es28.js +0 -32
- package/dist/es/standards-agent-kit.es28.js.map +0 -1
- package/dist/es/standards-agent-kit.es29.js +0 -35
- package/dist/es/standards-agent-kit.es29.js.map +0 -1
- package/dist/es/standards-agent-kit.es3.js +0 -1572
- package/dist/es/standards-agent-kit.es3.js.map +0 -1
- package/dist/es/standards-agent-kit.es30.js +0 -48
- package/dist/es/standards-agent-kit.es30.js.map +0 -1
- package/dist/es/standards-agent-kit.es31.js +0 -46
- package/dist/es/standards-agent-kit.es31.js.map +0 -1
- package/dist/es/standards-agent-kit.es32.js +0 -48
- package/dist/es/standards-agent-kit.es32.js.map +0 -1
- package/dist/es/standards-agent-kit.es33.js +0 -90
- package/dist/es/standards-agent-kit.es33.js.map +0 -1
- package/dist/es/standards-agent-kit.es34.js +0 -245
- package/dist/es/standards-agent-kit.es34.js.map +0 -1
- package/dist/es/standards-agent-kit.es35.js +0 -229
- package/dist/es/standards-agent-kit.es35.js.map +0 -1
- package/dist/es/standards-agent-kit.es36.js +0 -187
- package/dist/es/standards-agent-kit.es36.js.map +0 -1
- package/dist/es/standards-agent-kit.es37.js +0 -260
- package/dist/es/standards-agent-kit.es37.js.map +0 -1
- package/dist/es/standards-agent-kit.es38.js +0 -45
- package/dist/es/standards-agent-kit.es38.js.map +0 -1
- package/dist/es/standards-agent-kit.es39.js +0 -249
- package/dist/es/standards-agent-kit.es39.js.map +0 -1
- package/dist/es/standards-agent-kit.es4.js +0 -95
- package/dist/es/standards-agent-kit.es4.js.map +0 -1
- package/dist/es/standards-agent-kit.es40.js +0 -141
- package/dist/es/standards-agent-kit.es40.js.map +0 -1
- package/dist/es/standards-agent-kit.es41.js +0 -33
- package/dist/es/standards-agent-kit.es41.js.map +0 -1
- package/dist/es/standards-agent-kit.es42.js +0 -28
- package/dist/es/standards-agent-kit.es42.js.map +0 -1
- package/dist/es/standards-agent-kit.es43.js +0 -7
- package/dist/es/standards-agent-kit.es43.js.map +0 -1
- package/dist/es/standards-agent-kit.es44.js +0 -57
- package/dist/es/standards-agent-kit.es44.js.map +0 -1
- package/dist/es/standards-agent-kit.es45.js +0 -6
- package/dist/es/standards-agent-kit.es45.js.map +0 -1
- package/dist/es/standards-agent-kit.es46.js +0 -43
- package/dist/es/standards-agent-kit.es46.js.map +0 -1
- package/dist/es/standards-agent-kit.es47.js +0 -15
- package/dist/es/standards-agent-kit.es47.js.map +0 -1
- package/dist/es/standards-agent-kit.es5.js +0 -113
- package/dist/es/standards-agent-kit.es5.js.map +0 -1
- package/dist/es/standards-agent-kit.es6.js +0 -56
- package/dist/es/standards-agent-kit.es6.js.map +0 -1
- package/dist/es/standards-agent-kit.es7.js +0 -332
- package/dist/es/standards-agent-kit.es7.js.map +0 -1
- package/dist/es/standards-agent-kit.es8.js +0 -32
- package/dist/es/standards-agent-kit.es8.js.map +0 -1
- package/dist/es/standards-agent-kit.es9.js +0 -240
- 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
|
|
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:
|
|
16
|
-
inscribe(request:
|
|
17
|
-
waitForInscription(txId: string, maxAttempts: number, intervalMs: number, checkCompletion: boolean, progressCallback?:
|
|
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(
|
|
59
|
+
protected getInscriptionSDK(_options: InscriptionOptions): Promise<InscriptionSDK | null>;
|
|
29
60
|
/**
|
|
30
61
|
* Inscribe content using server-side authentication
|
|
31
62
|
*/
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
+
};
|