hazo_collab_forms 1.12.0 → 2.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 (212) hide show
  1. package/CHANGE_LOG.md +49 -0
  2. package/README.md +406 -0
  3. package/dist/components/_internal_form_set.d.ts +13 -0
  4. package/dist/components/_internal_form_set.d.ts.map +1 -1
  5. package/dist/components/_internal_form_set.js +49 -3
  6. package/dist/components/_internal_form_set.js.map +1 -1
  7. package/dist/components/clarification/clarification_badge.d.ts +16 -0
  8. package/dist/components/clarification/clarification_badge.d.ts.map +1 -0
  9. package/dist/components/clarification/clarification_badge.js +15 -0
  10. package/dist/components/clarification/clarification_badge.js.map +1 -0
  11. package/dist/components/clarification/clarification_card.d.ts +48 -0
  12. package/dist/components/clarification/clarification_card.d.ts.map +1 -0
  13. package/dist/components/clarification/clarification_card.js +46 -0
  14. package/dist/components/clarification/clarification_card.js.map +1 -0
  15. package/dist/components/clarification/clarification_dialog.d.ts +32 -0
  16. package/dist/components/clarification/clarification_dialog.d.ts.map +1 -0
  17. package/dist/components/clarification/clarification_dialog.js +63 -0
  18. package/dist/components/clarification/clarification_dialog.js.map +1 -0
  19. package/dist/components/clarification/clarification_doc_reference.d.ts +18 -0
  20. package/dist/components/clarification/clarification_doc_reference.d.ts.map +1 -0
  21. package/dist/components/clarification/clarification_doc_reference.js +22 -0
  22. package/dist/components/clarification/clarification_doc_reference.js.map +1 -0
  23. package/dist/components/clarification/clarification_response_form.d.ts +32 -0
  24. package/dist/components/clarification/clarification_response_form.d.ts.map +1 -0
  25. package/dist/components/clarification/clarification_response_form.js +38 -0
  26. package/dist/components/clarification/clarification_response_form.js.map +1 -0
  27. package/dist/components/clarification/clarification_section.d.ts +26 -0
  28. package/dist/components/clarification/clarification_section.d.ts.map +1 -0
  29. package/dist/components/clarification/clarification_section.js +46 -0
  30. package/dist/components/clarification/clarification_section.js.map +1 -0
  31. package/dist/components/clarification/index.d.ts +18 -0
  32. package/dist/components/clarification/index.d.ts.map +1 -0
  33. package/dist/components/clarification/index.js +13 -0
  34. package/dist/components/clarification/index.js.map +1 -0
  35. package/dist/components/clarification/use_clarifications.d.ts +49 -0
  36. package/dist/components/clarification/use_clarifications.d.ts.map +1 -0
  37. package/dist/components/clarification/use_clarifications.js +160 -0
  38. package/dist/components/clarification/use_clarifications.js.map +1 -0
  39. package/dist/components/collab_form_file_upload.d.ts +16 -1
  40. package/dist/components/collab_form_file_upload.d.ts.map +1 -1
  41. package/dist/components/collab_form_file_upload.js +44 -10
  42. package/dist/components/collab_form_file_upload.js.map +1 -1
  43. package/dist/components/hazo_collab_form_base.d.ts +32 -2
  44. package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
  45. package/dist/components/hazo_collab_form_base.js +11 -5
  46. package/dist/components/hazo_collab_form_base.js.map +1 -1
  47. package/dist/components/hazo_collab_form_group.d.ts +12 -0
  48. package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
  49. package/dist/components/hazo_collab_form_group.js +27 -4
  50. package/dist/components/hazo_collab_form_group.js.map +1 -1
  51. package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
  52. package/dist/components/hazo_collab_form_view/context.js +19 -1
  53. package/dist/components/hazo_collab_form_view/context.js.map +1 -1
  54. package/dist/components/hazo_collab_form_view/index.d.ts +1 -1
  55. package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -1
  56. package/dist/components/hazo_collab_form_view/index.js +8 -0
  57. package/dist/components/hazo_collab_form_view/index.js.map +1 -1
  58. package/dist/components/hazo_collab_form_view/types.d.ts +32 -2
  59. package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
  60. package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
  61. package/dist/components/hazo_collab_form_view/views/edit_view.js +74 -8
  62. package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
  63. package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
  64. package/dist/components/hazo_collab_form_view/views/summary_view.js +187 -10
  65. package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
  66. package/dist/components/hazo_data_form/field_renderers/index.d.ts +6 -0
  67. package/dist/components/hazo_data_form/field_renderers/index.d.ts.map +1 -1
  68. package/dist/components/hazo_data_form/field_renderers/index.js +22 -1
  69. package/dist/components/hazo_data_form/field_renderers/index.js.map +1 -1
  70. package/dist/components/hazo_data_form/group_renderer.d.ts.map +1 -1
  71. package/dist/components/hazo_data_form/group_renderer.js +2 -1
  72. package/dist/components/hazo_data_form/group_renderer.js.map +1 -1
  73. package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts +1 -1
  74. package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts.map +1 -1
  75. package/dist/components/hazo_data_form/shared/data_form_field_layout.js +3 -3
  76. package/dist/components/hazo_data_form/shared/data_form_field_layout.js.map +1 -1
  77. package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts +3 -1
  78. package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts.map +1 -1
  79. package/dist/components/hazo_data_form/shared/data_form_reference_value.js +5 -2
  80. package/dist/components/hazo_data_form/shared/data_form_reference_value.js.map +1 -1
  81. package/dist/components/hazo_data_form/types.d.ts +2 -0
  82. package/dist/components/hazo_data_form/types.d.ts.map +1 -1
  83. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +10 -0
  84. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -0
  85. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js +57 -0
  86. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js.map +1 -0
  87. package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts +11 -0
  88. package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts.map +1 -0
  89. package/dist/components/hazo_validation_rule_editor/components/prompt_editor.js +145 -0
  90. package/dist/components/hazo_validation_rule_editor/components/prompt_editor.js.map +1 -0
  91. package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts +6 -0
  92. package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -0
  93. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +149 -0
  94. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -0
  95. package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts +6 -0
  96. package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts.map +1 -0
  97. package/dist/components/hazo_validation_rule_editor/components/rule_list.js +57 -0
  98. package/dist/components/hazo_validation_rule_editor/components/rule_list.js.map +1 -0
  99. package/dist/components/hazo_validation_rule_editor/context.d.ts +19 -0
  100. package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -0
  101. package/dist/components/hazo_validation_rule_editor/context.js +95 -0
  102. package/dist/components/hazo_validation_rule_editor/context.js.map +1 -0
  103. package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.d.ts +20 -0
  104. package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.d.ts.map +1 -0
  105. package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.js +127 -0
  106. package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.js.map +1 -0
  107. package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.d.ts +30 -0
  108. package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.d.ts.map +1 -0
  109. package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.js +216 -0
  110. package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.js.map +1 -0
  111. package/dist/components/hazo_validation_rule_editor/index.d.ts +14 -0
  112. package/dist/components/hazo_validation_rule_editor/index.d.ts.map +1 -0
  113. package/dist/components/hazo_validation_rule_editor/index.js +12 -0
  114. package/dist/components/hazo_validation_rule_editor/index.js.map +1 -0
  115. package/dist/components/hazo_validation_rule_editor/types.d.ts +53 -0
  116. package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -0
  117. package/dist/components/hazo_validation_rule_editor/types.js +5 -0
  118. package/dist/components/hazo_validation_rule_editor/types.js.map +1 -0
  119. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +3 -0
  120. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -0
  121. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +14 -0
  122. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -0
  123. package/dist/components/index.d.ts +9 -2
  124. package/dist/components/index.d.ts.map +1 -1
  125. package/dist/components/index.js +9 -1
  126. package/dist/components/index.js.map +1 -1
  127. package/dist/components/shared/field_state/normalize.d.ts.map +1 -1
  128. package/dist/components/shared/field_state/normalize.js +1 -0
  129. package/dist/components/shared/field_state/normalize.js.map +1 -1
  130. package/dist/components/shared/field_state/types.d.ts +6 -0
  131. package/dist/components/shared/field_state/types.d.ts.map +1 -1
  132. package/dist/components/shared/field_utils/types.d.ts +1 -1
  133. package/dist/components/shared/field_utils/types.d.ts.map +1 -1
  134. package/dist/components/shared/strip_base_props.d.ts.map +1 -1
  135. package/dist/components/shared/strip_base_props.js +2 -0
  136. package/dist/components/shared/strip_base_props.js.map +1 -1
  137. package/dist/components/shared/summary_files/summary_files.d.ts +9 -1
  138. package/dist/components/shared/summary_files/summary_files.d.ts.map +1 -1
  139. package/dist/components/shared/summary_files/summary_files.js +11 -5
  140. package/dist/components/shared/summary_files/summary_files.js.map +1 -1
  141. package/dist/components/shared/unified_field_controls/types.d.ts +8 -0
  142. package/dist/components/shared/unified_field_controls/types.d.ts.map +1 -1
  143. package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts +1 -1
  144. package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts.map +1 -1
  145. package/dist/components/shared/unified_field_controls/unified_field_controls.js +3 -2
  146. package/dist/components/shared/unified_field_controls/unified_field_controls.js.map +1 -1
  147. package/dist/components/shared/use_base_form_field.d.ts +14 -0
  148. package/dist/components/shared/use_base_form_field.d.ts.map +1 -1
  149. package/dist/components/shared/use_base_form_field.js +41 -2
  150. package/dist/components/shared/use_base_form_field.js.map +1 -1
  151. package/dist/components/status_badges.d.ts +33 -0
  152. package/dist/components/status_badges.d.ts.map +1 -1
  153. package/dist/components/status_badges.js +27 -2
  154. package/dist/components/status_badges.js.map +1 -1
  155. package/dist/config/clarification_templates.d.ts +24 -0
  156. package/dist/config/clarification_templates.d.ts.map +1 -0
  157. package/dist/config/clarification_templates.js +66 -0
  158. package/dist/config/clarification_templates.js.map +1 -0
  159. package/dist/config/defaults.d.ts +4 -0
  160. package/dist/config/defaults.d.ts.map +1 -1
  161. package/dist/config/defaults.js +4 -0
  162. package/dist/config/defaults.js.map +1 -1
  163. package/dist/config/index.d.ts +3 -1
  164. package/dist/config/index.d.ts.map +1 -1
  165. package/dist/config/index.js +3 -1
  166. package/dist/config/index.js.map +1 -1
  167. package/dist/config/validation_rule_commands.d.ts +12 -0
  168. package/dist/config/validation_rule_commands.d.ts.map +1 -0
  169. package/dist/config/validation_rule_commands.js +106 -0
  170. package/dist/config/validation_rule_commands.js.map +1 -0
  171. package/dist/lib/autofill_handler.d.ts +34 -0
  172. package/dist/lib/autofill_handler.d.ts.map +1 -0
  173. package/dist/lib/autofill_handler.js +330 -0
  174. package/dist/lib/autofill_handler.js.map +1 -0
  175. package/dist/lib/index.d.ts +9 -0
  176. package/dist/lib/index.d.ts.map +1 -1
  177. package/dist/lib/index.js +5 -0
  178. package/dist/lib/index.js.map +1 -1
  179. package/dist/lib/validation_handler.d.ts +27 -0
  180. package/dist/lib/validation_handler.d.ts.map +1 -0
  181. package/dist/lib/validation_handler.js +341 -0
  182. package/dist/lib/validation_handler.js.map +1 -0
  183. package/dist/types/clarification.d.ts +126 -0
  184. package/dist/types/clarification.d.ts.map +1 -0
  185. package/dist/types/clarification.js +8 -0
  186. package/dist/types/clarification.js.map +1 -0
  187. package/dist/types/file_attachment.d.ts +2 -0
  188. package/dist/types/file_attachment.d.ts.map +1 -1
  189. package/dist/types/file_attachment.js.map +1 -1
  190. package/dist/types/file_manager.d.ts +36 -0
  191. package/dist/types/file_manager.d.ts.map +1 -1
  192. package/dist/types/index.d.ts +3 -1
  193. package/dist/types/index.d.ts.map +1 -1
  194. package/dist/types/index.js.map +1 -1
  195. package/dist/types/validation.d.ts +192 -0
  196. package/dist/types/validation.d.ts.map +1 -0
  197. package/dist/types/validation.js +9 -0
  198. package/dist/types/validation.js.map +1 -0
  199. package/dist/utils/build_rule_field_map.d.ts +31 -0
  200. package/dist/utils/build_rule_field_map.d.ts.map +1 -0
  201. package/dist/utils/build_rule_field_map.js +53 -0
  202. package/dist/utils/build_rule_field_map.js.map +1 -0
  203. package/dist/utils/index.d.ts +3 -0
  204. package/dist/utils/index.d.ts.map +1 -1
  205. package/dist/utils/index.js +4 -0
  206. package/dist/utils/index.js.map +1 -1
  207. package/dist/utils/slugify.d.ts +10 -0
  208. package/dist/utils/slugify.d.ts.map +1 -0
  209. package/dist/utils/slugify.js +17 -0
  210. package/dist/utils/slugify.js.map +1 -0
  211. package/package.json +15 -3
  212. package/templates/config/hazo_collab_forms_config.ini +7 -0
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Type definitions for Document Validation Rules feature.
3
+ *
4
+ * Validation rules define automated checks that run when documents are uploaded.
5
+ * Each rule contains an LLM prompt that analyzes the document and may produce
6
+ * ClarificationItems when issues are found.
7
+ */
8
+ import type { ClarificationType, ClarificationResponseOption, ClarificationItem } from './clarification.js';
9
+ /** A validation rule definition stored in the database */
10
+ export interface ValidationRule {
11
+ /** Unique rule ID (auto-generated) */
12
+ id: string;
13
+ /** Human-readable rule name */
14
+ name: string;
15
+ /** Optional description of what this rule checks */
16
+ description?: string;
17
+ /** Document type / category this rule applies to (e.g., "payg_summary", "bank_statement") */
18
+ document_type: string;
19
+ /** @deprecated Assign rules via `validation_rules` on fields/groups instead. Kept as fallback. */
20
+ target_field_id?: string;
21
+ /** @deprecated Assign rules via `validation_rules` on fields/groups instead. Kept as fallback. */
22
+ target_label?: string;
23
+ /** LLM prompt with {{variable}} placeholders */
24
+ prompt: string;
25
+ /** Which clarification template to use when an issue is found */
26
+ clarification_type: ClarificationType;
27
+ /** Whether this rule is active */
28
+ enabled: boolean;
29
+ /** Execution priority (lower = earlier, default: 100) */
30
+ priority?: number;
31
+ /** Custom issue description (overrides template default) */
32
+ custom_issue_description?: string;
33
+ /** Custom action description (overrides template default) */
34
+ custom_action_description?: string;
35
+ /** Custom response options (overrides template defaults) */
36
+ custom_response_options?: ClarificationResponseOption[];
37
+ /** Scope filter for multi-tenant setups */
38
+ scope_id?: string | null;
39
+ /** ISO timestamp when created */
40
+ created_at: string;
41
+ /** ISO timestamp of last update */
42
+ changed_at: string;
43
+ }
44
+ /** Database record format for validation rules (element stored as JSON string) */
45
+ export interface ValidationRuleRecord {
46
+ /** Database primary key */
47
+ id: string;
48
+ /** Scope filter */
49
+ scope_id: string | null;
50
+ /** Document type / category */
51
+ document_type: string;
52
+ /** Rule name */
53
+ name: string;
54
+ /** JSON-serialized rule data (everything except id, scope_id, document_type, name, timestamps) */
55
+ rule_data: string;
56
+ /** ISO timestamp when created */
57
+ created_at: string;
58
+ /** ISO timestamp of last update */
59
+ changed_at: string;
60
+ }
61
+ /** A slash command for the prompt editor (e.g., /check_coverage) */
62
+ export interface PromptCommand {
63
+ /** The trigger text (e.g., "/check_coverage") */
64
+ trigger: string;
65
+ /** Display label */
66
+ label: string;
67
+ /** Prompt template that gets inserted */
68
+ template: string;
69
+ /** Optional description shown in autocomplete */
70
+ description?: string;
71
+ }
72
+ /** A variable reference for the prompt editor (e.g., @field_list) */
73
+ export interface PromptVariable {
74
+ /** The trigger text (e.g., "@field_list") */
75
+ trigger: string;
76
+ /** Display label */
77
+ label: string;
78
+ /** Description of what this variable resolves to */
79
+ description?: string;
80
+ }
81
+ /** Configuration for prompt editor commands and variables */
82
+ export interface PromptEditorConfig {
83
+ /** Slash commands available in the prompt editor */
84
+ commands: PromptCommand[];
85
+ /** Variable references available in the prompt editor */
86
+ variables: PromptVariable[];
87
+ }
88
+ /** A rule prepared for execution with resolved variables */
89
+ export interface ValidationRuleExecution {
90
+ /** Original rule ID */
91
+ rule_id: string;
92
+ /** Rule name for error reporting */
93
+ name: string;
94
+ /** Fully substituted prompt (variables resolved) */
95
+ prompt: string;
96
+ /** Target field ID for the resulting clarification */
97
+ target_field_id: string;
98
+ /** Target field label for display */
99
+ target_label: string;
100
+ /** Template to use for resulting clarification */
101
+ clarification_type: ClarificationType;
102
+ /** Custom issue description override */
103
+ custom_issue_description?: string;
104
+ /** Custom action description override */
105
+ custom_action_description?: string;
106
+ /** Custom response options override */
107
+ custom_response_options?: ClarificationResponseOption[];
108
+ }
109
+ /** Request payload for the validation route handler */
110
+ export interface ValidationRequest {
111
+ /** Base64-encoded file content (preferred over download_url) */
112
+ file_b64?: string;
113
+ /** File name for context */
114
+ file_name: string;
115
+ /** MIME type of the file */
116
+ mime_type: string;
117
+ /** URL to download the file (fallback if file_b64 not provided) */
118
+ download_url?: string;
119
+ /** Rules to execute against this document */
120
+ rules: ValidationRuleExecution[];
121
+ /** Additional variables for prompt substitution */
122
+ variables?: Record<string, string>;
123
+ /** Content tag from hazo_files (used for document_type matching and as {{document_type}} variable) */
124
+ content_tag?: string;
125
+ }
126
+ /** Result from a single rule execution */
127
+ export interface ValidationRuleResult {
128
+ /** Rule ID that was executed */
129
+ rule_id: string;
130
+ /** Whether an issue was found */
131
+ has_issue: boolean;
132
+ /** LLM-generated issue description (if issue found) */
133
+ issue_description?: string;
134
+ /** Confidence score (0-1) */
135
+ confidence?: number;
136
+ /** Raw LLM response for debugging */
137
+ raw_response?: string;
138
+ }
139
+ /** Response from the validation route handler */
140
+ export interface ValidationResponse {
141
+ /** Overall success status */
142
+ success: boolean;
143
+ /** Created clarification items for rules that found issues */
144
+ clarifications: ClarificationItem[];
145
+ /** Individual rule results */
146
+ rule_results: ValidationRuleResult[];
147
+ /** Errors encountered during execution */
148
+ errors?: Array<{
149
+ rule_id: string;
150
+ error: string;
151
+ }>;
152
+ }
153
+ /** Options for the validation route handler factory */
154
+ export interface ValidationRouteOptions {
155
+ /** Path to the SQLite database for prompt lookup */
156
+ sqlite_path?: string;
157
+ /** Error callback (defaults to console.error) */
158
+ on_error?: (error: unknown, context: string) => void;
159
+ }
160
+ /** Options for the use_file_validation hook */
161
+ export interface UseFileValidationOptions {
162
+ /** Whether validation is enabled */
163
+ enabled: boolean;
164
+ /** API endpoint URL for validation */
165
+ api_url: string;
166
+ /** Rules to execute (typically fetched from DB) */
167
+ rules: ValidationRule[];
168
+ /** Current form data (for variable resolution) */
169
+ form_data: Record<string, unknown>;
170
+ /** Callback when new clarifications are created */
171
+ on_clarifications_created?: (items: ClarificationItem[]) => void;
172
+ /** Additional variables for prompt substitution */
173
+ variables?: Record<string, string>;
174
+ /**
175
+ * Reverse map from rule ID to field info, built by build_rule_field_map().
176
+ * When provided, overrides rule.target_field_id with the field that references the rule.
177
+ */
178
+ rule_field_map?: Record<string, {
179
+ field_id: string;
180
+ field_label: string;
181
+ }>;
182
+ }
183
+ /** Return type for the use_file_validation hook */
184
+ export interface UseFileValidationReturn {
185
+ /** Trigger validation for a file. When content_tag is provided, only rules matching that document_type are executed. */
186
+ validate_file: (file_b64: string, file_name: string, mime_type: string, content_tag?: string) => Promise<ClarificationItem[]>;
187
+ /** Whether validation is currently in progress */
188
+ is_validating: boolean;
189
+ /** Last error message (if any) */
190
+ last_error?: string;
191
+ }
192
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Type definitions for Document Validation Rules feature.
3
+ *
4
+ * Validation rules define automated checks that run when documents are uploaded.
5
+ * Each rule contains an LLM prompt that analyzes the document and may produce
6
+ * ClarificationItems when issues are found.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Builds a reverse mapping from validation rule IDs to field info.
3
+ *
4
+ * Walks sections -> groups -> fields, reads `validation_rules` arrays,
5
+ * and produces a Record<rule_id, { field_id, field_label }>.
6
+ *
7
+ * Global validation IDs map to { field_id: '__document', field_label: 'Document' }.
8
+ */
9
+ export interface RuleFieldMapping {
10
+ field_id: string;
11
+ field_label: string;
12
+ }
13
+ interface FieldLike {
14
+ id: string;
15
+ label?: string;
16
+ fields?: FieldLike[];
17
+ validation_rules?: string[];
18
+ }
19
+ interface SectionLike {
20
+ groups?: FieldLike[];
21
+ }
22
+ /**
23
+ * Build a reverse map from validation rule IDs to the fields/groups that reference them.
24
+ *
25
+ * @param sections - Form sections containing groups and fields
26
+ * @param global_validations - Optional array of rule IDs that apply document-wide
27
+ * @returns Record mapping rule_id to { field_id, field_label }
28
+ */
29
+ export declare function build_rule_field_map(sections: SectionLike[], global_validations?: string[]): Record<string, RuleFieldMapping>;
30
+ export {};
31
+ //# sourceMappingURL=build_rule_field_map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_rule_field_map.d.ts","sourceRoot":"","sources":["../../src/utils/build_rule_field_map.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAwBD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAC5B,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAqBlC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Builds a reverse mapping from validation rule IDs to field info.
3
+ *
4
+ * Walks sections -> groups -> fields, reads `validation_rules` arrays,
5
+ * and produces a Record<rule_id, { field_id, field_label }>.
6
+ *
7
+ * Global validation IDs map to { field_id: '__document', field_label: 'Document' }.
8
+ */
9
+ /**
10
+ * Recursively walk fields and collect validation_rules mappings.
11
+ */
12
+ function walk_fields(fields, map) {
13
+ for (const field of fields) {
14
+ if (field.validation_rules) {
15
+ for (const rule_id of field.validation_rules) {
16
+ map[rule_id] = {
17
+ field_id: field.id,
18
+ field_label: field.label ?? field.id,
19
+ };
20
+ }
21
+ }
22
+ if (field.fields) {
23
+ walk_fields(field.fields, map);
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * Build a reverse map from validation rule IDs to the fields/groups that reference them.
29
+ *
30
+ * @param sections - Form sections containing groups and fields
31
+ * @param global_validations - Optional array of rule IDs that apply document-wide
32
+ * @returns Record mapping rule_id to { field_id, field_label }
33
+ */
34
+ export function build_rule_field_map(sections, global_validations) {
35
+ const map = {};
36
+ // Walk sections -> groups -> fields
37
+ for (const section of sections) {
38
+ if (section.groups) {
39
+ walk_fields(section.groups, map);
40
+ }
41
+ }
42
+ // Add global validations
43
+ if (global_validations) {
44
+ for (const rule_id of global_validations) {
45
+ map[rule_id] = {
46
+ field_id: '__document',
47
+ field_label: 'Document',
48
+ };
49
+ }
50
+ }
51
+ return map;
52
+ }
53
+ //# sourceMappingURL=build_rule_field_map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_rule_field_map.js","sourceRoot":"","sources":["../../src/utils/build_rule_field_map.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH;;GAEG;AACH,SAAS,WAAW,CAClB,MAAmB,EACnB,GAAqC;IAErC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,GAAG,CAAC,OAAO,CAAC,GAAG;oBACb,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAClB,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;iBACrC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,kBAA6B;IAE7B,MAAM,GAAG,GAAqC,EAAE,CAAC;IAEjD,oCAAoC;IACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,kBAAkB,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,GAAG;gBACb,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,UAAU;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -22,6 +22,9 @@ export { evaluate_formula } from './formula.js';
22
22
  export { use_computed_fields } from './use_computed_fields.js';
23
23
  export type { ComputedFieldDef, UseComputedFieldsOptions } from './use_computed_fields.js';
24
24
  export { get_uploads_key, get_field_uploads, has_field_uploads, generate_file_id, } from './data_form_uploads.js';
25
+ export { slugify } from './slugify.js';
26
+ export { build_rule_field_map } from './build_rule_field_map.js';
27
+ export type { RuleFieldMapping } from './build_rule_field_map.js';
25
28
  export { resolve_tokens, resolve_style_class, to_inline_style, create_style_resolver, merge_with_overrides, } from './style_resolver.js';
26
29
  export type { StyleResolver } from './style_resolver.js';
27
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAG3F,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAG3F,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -21,6 +21,10 @@ export { evaluate_formula } from './formula.js';
21
21
  export { use_computed_fields } from './use_computed_fields.js';
22
22
  // Data form upload helpers
23
23
  export { get_uploads_key, get_field_uploads, has_field_uploads, generate_file_id, } from './data_form_uploads.js';
24
+ // Slugify
25
+ export { slugify } from './slugify.js';
26
+ // Rule-to-field mapping
27
+ export { build_rule_field_map } from './build_rule_field_map.js';
24
28
  // Style resolver
25
29
  export { resolve_tokens, resolve_style_class, to_inline_style, create_style_resolver, merge_with_overrides, } from './style_resolver.js';
26
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,2BAA2B;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,iBAAiB;AACjB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,qBAAqB;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,uBAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,2BAA2B;AAC3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,wBAAwB;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,iBAAiB;AACjB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Converts text to a URL/ID-friendly slug.
3
+ * Lowercase, replaces spaces/hyphens with underscores, removes special chars, collapses underscores.
4
+ *
5
+ * @example
6
+ * slugify('Check PAYG Coverage') // 'check_payg_coverage'
7
+ * slugify('Hello--World!!') // 'hello_world'
8
+ */
9
+ export declare function slugify(text: string): string;
10
+ //# sourceMappingURL=slugify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slugify.d.ts","sourceRoot":"","sources":["../../src/utils/slugify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5C"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts text to a URL/ID-friendly slug.
3
+ * Lowercase, replaces spaces/hyphens with underscores, removes special chars, collapses underscores.
4
+ *
5
+ * @example
6
+ * slugify('Check PAYG Coverage') // 'check_payg_coverage'
7
+ * slugify('Hello--World!!') // 'hello_world'
8
+ */
9
+ export function slugify(text) {
10
+ return text
11
+ .toLowerCase()
12
+ .replace(/[\s-]+/g, '_') // spaces and hyphens to underscores
13
+ .replace(/[^a-z0-9_]/g, '') // remove special chars
14
+ .replace(/_+/g, '_') // collapse multiple underscores
15
+ .replace(/^_|_$/g, ''); // trim leading/trailing underscores
16
+ }
17
+ //# sourceMappingURL=slugify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slugify.js","sourceRoot":"","sources":["../../src/utils/slugify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAO,oCAAoC;SAClE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAI,uBAAuB;SACrD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAW,gCAAgC;SAC9D,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAQ,oCAAoC;AACvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_collab_forms",
3
- "version": "1.12.0",
3
+ "version": "2.0.0",
4
4
  "description": "Collaboration form elements",
5
5
  "type": "module",
6
6
  "main": "./dist/index.client.js",
@@ -21,6 +21,14 @@
21
21
  "./utils": {
22
22
  "import": "./dist/utils/index.js",
23
23
  "types": "./dist/utils/index.d.ts"
24
+ },
25
+ "./types": {
26
+ "import": "./dist/types/index.js",
27
+ "types": "./dist/types/index.d.ts"
28
+ },
29
+ "./config": {
30
+ "import": "./dist/config/index.js",
31
+ "types": "./dist/config/index.d.ts"
24
32
  }
25
33
  },
26
34
  "files": [
@@ -83,7 +91,7 @@
83
91
  "clsx": "^2.1.0",
84
92
  "hazo_auth": "^5.1.24",
85
93
  "hazo_config": "^1.4.2",
86
- "hazo_files": "^1.4.2",
94
+ "hazo_files": "^1.4.3",
87
95
  "hazo_notes": "^1.1.5",
88
96
  "hazo_ui": "^2.2.1",
89
97
  "react-resizable-panels": "^4.3.3",
@@ -100,7 +108,8 @@
100
108
  "react": "^18.0.0 || ^19.0.0",
101
109
  "react-dom": "^18.0.0 || ^19.0.0",
102
110
  "react-icons": "^5.0.0",
103
- "sonner": "^2.0.0"
111
+ "sonner": "^2.0.0",
112
+ "hazo_llm_api": ">=1.0.0"
104
113
  },
105
114
  "peerDependenciesMeta": {
106
115
  "lucide-react": {
@@ -108,6 +117,9 @@
108
117
  },
109
118
  "hazo_logs": {
110
119
  "optional": true
120
+ },
121
+ "hazo_llm_api": {
122
+ "optional": true
111
123
  }
112
124
  }
113
125
  }
@@ -51,6 +51,13 @@ icon_border_none=
51
51
  # Set to false to disable notes feature across all forms
52
52
  enable_notes=true
53
53
 
54
+ [validation]
55
+ # Suffix appended to each validation rule prompt to instruct the LLM on response format.
56
+ # This is appended after the VALIDATION RULE block.
57
+ # Must instruct the LLM to return JSON with at minimum: validation_passed (bool), validation_details (string).
58
+ # confidence (0-1 float) is also expected.
59
+ prompt_suffix=Returned data should be in json format with the fields: "validation_passed" - true/false, "validation_details" - description of why it failed, "confidence" - a number between 0 and 1 indicating how confident you are in the assessment.
60
+
54
61
  [date]
55
62
  # Date format for displaying dates in form fields and summaries
56
63
  # Available formats: