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.
- package/CHANGE_LOG.md +49 -0
- package/README.md +406 -0
- package/dist/components/_internal_form_set.d.ts +13 -0
- package/dist/components/_internal_form_set.d.ts.map +1 -1
- package/dist/components/_internal_form_set.js +49 -3
- package/dist/components/_internal_form_set.js.map +1 -1
- package/dist/components/clarification/clarification_badge.d.ts +16 -0
- package/dist/components/clarification/clarification_badge.d.ts.map +1 -0
- package/dist/components/clarification/clarification_badge.js +15 -0
- package/dist/components/clarification/clarification_badge.js.map +1 -0
- package/dist/components/clarification/clarification_card.d.ts +48 -0
- package/dist/components/clarification/clarification_card.d.ts.map +1 -0
- package/dist/components/clarification/clarification_card.js +46 -0
- package/dist/components/clarification/clarification_card.js.map +1 -0
- package/dist/components/clarification/clarification_dialog.d.ts +32 -0
- package/dist/components/clarification/clarification_dialog.d.ts.map +1 -0
- package/dist/components/clarification/clarification_dialog.js +63 -0
- package/dist/components/clarification/clarification_dialog.js.map +1 -0
- package/dist/components/clarification/clarification_doc_reference.d.ts +18 -0
- package/dist/components/clarification/clarification_doc_reference.d.ts.map +1 -0
- package/dist/components/clarification/clarification_doc_reference.js +22 -0
- package/dist/components/clarification/clarification_doc_reference.js.map +1 -0
- package/dist/components/clarification/clarification_response_form.d.ts +32 -0
- package/dist/components/clarification/clarification_response_form.d.ts.map +1 -0
- package/dist/components/clarification/clarification_response_form.js +38 -0
- package/dist/components/clarification/clarification_response_form.js.map +1 -0
- package/dist/components/clarification/clarification_section.d.ts +26 -0
- package/dist/components/clarification/clarification_section.d.ts.map +1 -0
- package/dist/components/clarification/clarification_section.js +46 -0
- package/dist/components/clarification/clarification_section.js.map +1 -0
- package/dist/components/clarification/index.d.ts +18 -0
- package/dist/components/clarification/index.d.ts.map +1 -0
- package/dist/components/clarification/index.js +13 -0
- package/dist/components/clarification/index.js.map +1 -0
- package/dist/components/clarification/use_clarifications.d.ts +49 -0
- package/dist/components/clarification/use_clarifications.d.ts.map +1 -0
- package/dist/components/clarification/use_clarifications.js +160 -0
- package/dist/components/clarification/use_clarifications.js.map +1 -0
- package/dist/components/collab_form_file_upload.d.ts +16 -1
- package/dist/components/collab_form_file_upload.d.ts.map +1 -1
- package/dist/components/collab_form_file_upload.js +44 -10
- package/dist/components/collab_form_file_upload.js.map +1 -1
- package/dist/components/hazo_collab_form_base.d.ts +32 -2
- package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_base.js +11 -5
- package/dist/components/hazo_collab_form_base.js.map +1 -1
- package/dist/components/hazo_collab_form_group.d.ts +12 -0
- package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_group.js +27 -4
- package/dist/components/hazo_collab_form_group.js.map +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/context.js +19 -1
- package/dist/components/hazo_collab_form_view/context.js.map +1 -1
- package/dist/components/hazo_collab_form_view/index.d.ts +1 -1
- package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/index.js +8 -0
- package/dist/components/hazo_collab_form_view/index.js.map +1 -1
- package/dist/components/hazo_collab_form_view/types.d.ts +32 -2
- package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.js +74 -8
- package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
- package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/summary_view.js +187 -10
- package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/index.d.ts +6 -0
- package/dist/components/hazo_data_form/field_renderers/index.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/index.js +22 -1
- package/dist/components/hazo_data_form/field_renderers/index.js.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.d.ts.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.js +2 -1
- package/dist/components/hazo_data_form/group_renderer.js.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts +1 -1
- package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_field_layout.js +3 -3
- package/dist/components/hazo_data_form/shared/data_form_field_layout.js.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts +3 -1
- package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_reference_value.js +5 -2
- package/dist/components/hazo_data_form/shared/data_form_reference_value.js.map +1 -1
- package/dist/components/hazo_data_form/types.d.ts +2 -0
- package/dist/components/hazo_data_form/types.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +10 -0
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js +57 -0
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts +11 -0
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.js +145 -0
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts +6 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +149 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts +6 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_list.js +57 -0
- package/dist/components/hazo_validation_rule_editor/components/rule_list.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/context.d.ts +19 -0
- package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/context.js +95 -0
- package/dist/components/hazo_validation_rule_editor/context.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.d.ts +20 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.js +127 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_file_validation.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.d.ts +30 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.js +216 -0
- package/dist/components/hazo_validation_rule_editor/hooks/use_validation_rules.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/index.d.ts +14 -0
- package/dist/components/hazo_validation_rule_editor/index.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/index.js +12 -0
- package/dist/components/hazo_validation_rule_editor/index.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/types.d.ts +53 -0
- package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/types.js +5 -0
- package/dist/components/hazo_validation_rule_editor/types.js.map +1 -0
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +3 -0
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -0
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +14 -0
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -0
- package/dist/components/index.d.ts +9 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +9 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/field_state/normalize.d.ts.map +1 -1
- package/dist/components/shared/field_state/normalize.js +1 -0
- package/dist/components/shared/field_state/normalize.js.map +1 -1
- package/dist/components/shared/field_state/types.d.ts +6 -0
- package/dist/components/shared/field_state/types.d.ts.map +1 -1
- package/dist/components/shared/field_utils/types.d.ts +1 -1
- package/dist/components/shared/field_utils/types.d.ts.map +1 -1
- package/dist/components/shared/strip_base_props.d.ts.map +1 -1
- package/dist/components/shared/strip_base_props.js +2 -0
- package/dist/components/shared/strip_base_props.js.map +1 -1
- package/dist/components/shared/summary_files/summary_files.d.ts +9 -1
- package/dist/components/shared/summary_files/summary_files.d.ts.map +1 -1
- package/dist/components/shared/summary_files/summary_files.js +11 -5
- package/dist/components/shared/summary_files/summary_files.js.map +1 -1
- package/dist/components/shared/unified_field_controls/types.d.ts +8 -0
- package/dist/components/shared/unified_field_controls/types.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts +1 -1
- package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/unified_field_controls.js +3 -2
- package/dist/components/shared/unified_field_controls/unified_field_controls.js.map +1 -1
- package/dist/components/shared/use_base_form_field.d.ts +14 -0
- package/dist/components/shared/use_base_form_field.d.ts.map +1 -1
- package/dist/components/shared/use_base_form_field.js +41 -2
- package/dist/components/shared/use_base_form_field.js.map +1 -1
- package/dist/components/status_badges.d.ts +33 -0
- package/dist/components/status_badges.d.ts.map +1 -1
- package/dist/components/status_badges.js +27 -2
- package/dist/components/status_badges.js.map +1 -1
- package/dist/config/clarification_templates.d.ts +24 -0
- package/dist/config/clarification_templates.d.ts.map +1 -0
- package/dist/config/clarification_templates.js +66 -0
- package/dist/config/clarification_templates.js.map +1 -0
- package/dist/config/defaults.d.ts +4 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +4 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +3 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/validation_rule_commands.d.ts +12 -0
- package/dist/config/validation_rule_commands.d.ts.map +1 -0
- package/dist/config/validation_rule_commands.js +106 -0
- package/dist/config/validation_rule_commands.js.map +1 -0
- package/dist/lib/autofill_handler.d.ts +34 -0
- package/dist/lib/autofill_handler.d.ts.map +1 -0
- package/dist/lib/autofill_handler.js +330 -0
- package/dist/lib/autofill_handler.js.map +1 -0
- package/dist/lib/index.d.ts +9 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/validation_handler.d.ts +27 -0
- package/dist/lib/validation_handler.d.ts.map +1 -0
- package/dist/lib/validation_handler.js +341 -0
- package/dist/lib/validation_handler.js.map +1 -0
- package/dist/types/clarification.d.ts +126 -0
- package/dist/types/clarification.d.ts.map +1 -0
- package/dist/types/clarification.js +8 -0
- package/dist/types/clarification.js.map +1 -0
- package/dist/types/file_attachment.d.ts +2 -0
- package/dist/types/file_attachment.d.ts.map +1 -1
- package/dist/types/file_attachment.js.map +1 -1
- package/dist/types/file_manager.d.ts +36 -0
- package/dist/types/file_manager.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/validation.d.ts +192 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +9 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/utils/build_rule_field_map.d.ts +31 -0
- package/dist/utils/build_rule_field_map.d.ts.map +1 -0
- package/dist/utils/build_rule_field_map.js +53 -0
- package/dist/utils/build_rule_field_map.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/slugify.d.ts +10 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +17 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +15 -3
- package/templates/config/hazo_collab_forms_config.ini +7 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side validation route handler factory.
|
|
3
|
+
*
|
|
4
|
+
* Creates a POST handler that executes validation rules against uploaded documents
|
|
5
|
+
* using LLM analysis, and returns ClarificationItems for any issues found.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { create_validation_route } from 'hazo_collab_forms/lib';
|
|
9
|
+
* export const POST = create_validation_route();
|
|
10
|
+
*
|
|
11
|
+
* Uses standard Web API Request/Response for portability.
|
|
12
|
+
* hazo_llm_api is dynamically imported so it's only required at runtime.
|
|
13
|
+
*/
|
|
14
|
+
import 'server-only';
|
|
15
|
+
import { DEFAULT_CLARIFICATION_TEMPLATES } from '../config/clarification_templates.js';
|
|
16
|
+
import { DEFAULT_VALIDATION_PROMPT_SUFFIX } from '../config/defaults.js';
|
|
17
|
+
import { get_config } from './config.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Helpers
|
|
20
|
+
// ============================================================================
|
|
21
|
+
function generate_clarification_id() {
|
|
22
|
+
return `clr_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Extract has_issue and issue_description from a parsed JSON object.
|
|
26
|
+
* Supports both new format (validation_passed, validation_details) and
|
|
27
|
+
* legacy format (has_issue, issue_description).
|
|
28
|
+
*/
|
|
29
|
+
function extract_validation_fields(parsed) {
|
|
30
|
+
// Determine has_issue: prefer new `validation_passed` (inverted), fall back to legacy `has_issue`
|
|
31
|
+
const has_issue = 'validation_passed' in parsed
|
|
32
|
+
? !parsed.validation_passed
|
|
33
|
+
: !!parsed.has_issue;
|
|
34
|
+
// Determine issue_description: prefer new `validation_details`, fall back to legacy names
|
|
35
|
+
const issue_description = parsed.validation_details ||
|
|
36
|
+
parsed.issue_description ||
|
|
37
|
+
parsed.description ||
|
|
38
|
+
parsed.issue ||
|
|
39
|
+
undefined;
|
|
40
|
+
return {
|
|
41
|
+
has_issue,
|
|
42
|
+
issue_description,
|
|
43
|
+
confidence: typeof parsed.confidence === 'number' ? parsed.confidence : undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse LLM response for validation results.
|
|
48
|
+
* Supports new format: { validation_passed, validation_details, confidence }
|
|
49
|
+
* and legacy format: { has_issue, issue_description, confidence }
|
|
50
|
+
*/
|
|
51
|
+
function parse_validation_response(text) {
|
|
52
|
+
const cleaned = text.trim();
|
|
53
|
+
// Try direct parse
|
|
54
|
+
try {
|
|
55
|
+
const parsed = JSON.parse(cleaned);
|
|
56
|
+
return extract_validation_fields(parsed);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Continue
|
|
60
|
+
}
|
|
61
|
+
// Strip markdown code fences
|
|
62
|
+
const fence_match = cleaned.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
63
|
+
if (fence_match) {
|
|
64
|
+
try {
|
|
65
|
+
const parsed = JSON.parse(fence_match[1].trim());
|
|
66
|
+
return extract_validation_fields(parsed);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Continue
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Try to find JSON in text
|
|
73
|
+
const json_match = cleaned.match(/\{[\s\S]*\}/);
|
|
74
|
+
if (json_match) {
|
|
75
|
+
try {
|
|
76
|
+
const parsed = JSON.parse(json_match[0]);
|
|
77
|
+
return extract_validation_fields(parsed);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Continue
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Heuristic: if the text mentions "issue", "problem", "invalid", etc., consider it an issue
|
|
84
|
+
const issue_keywords = ['issue', 'problem', 'invalid', 'missing', 'incomplete', 'error', 'incorrect'];
|
|
85
|
+
const lower = cleaned.toLowerCase();
|
|
86
|
+
const has_issue = issue_keywords.some(k => lower.includes(k));
|
|
87
|
+
return {
|
|
88
|
+
has_issue,
|
|
89
|
+
issue_description: has_issue ? cleaned.slice(0, 500) : undefined,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function is_image_mime(mime_type) {
|
|
93
|
+
return mime_type.startsWith('image/');
|
|
94
|
+
}
|
|
95
|
+
function is_document_mime(mime_type) {
|
|
96
|
+
return mime_type === 'application/pdf';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Substitute {{variable}} placeholders in prompt text.
|
|
100
|
+
*/
|
|
101
|
+
function substitute_variables(prompt, variables) {
|
|
102
|
+
return prompt.replace(/\{\{(\w+)\}\}/g, (_, key) => {
|
|
103
|
+
return variables[key] ?? `{{${key}}}`;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Build a validation prompt that wraps the rule prompt with a configurable response format suffix.
|
|
108
|
+
* Reads `[validation] prompt_suffix` from INI config, falling back to DEFAULT_VALIDATION_PROMPT_SUFFIX.
|
|
109
|
+
*/
|
|
110
|
+
function build_validation_prompt(rule_prompt) {
|
|
111
|
+
const suffix = get_config('validation', 'prompt_suffix') ?? DEFAULT_VALIDATION_PROMPT_SUFFIX;
|
|
112
|
+
return `You are a document validation assistant. Analyze the provided document according to the following rule and determine if there is an issue.
|
|
113
|
+
|
|
114
|
+
VALIDATION RULE:
|
|
115
|
+
${rule_prompt}
|
|
116
|
+
|
|
117
|
+
${suffix}`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a ClarificationItem from a validation rule result.
|
|
121
|
+
*/
|
|
122
|
+
function create_clarification_from_result(rule, result, doc_info) {
|
|
123
|
+
const template = rule.clarification_type !== 'none'
|
|
124
|
+
? DEFAULT_CLARIFICATION_TEMPLATES[rule.clarification_type]
|
|
125
|
+
: null;
|
|
126
|
+
const response_options = rule.custom_response_options ??
|
|
127
|
+
template?.response_options ??
|
|
128
|
+
[];
|
|
129
|
+
return {
|
|
130
|
+
id: generate_clarification_id(),
|
|
131
|
+
type: rule.clarification_type,
|
|
132
|
+
status: 'pending',
|
|
133
|
+
target_field_id: rule.target_field_id,
|
|
134
|
+
target_label: rule.target_label,
|
|
135
|
+
rule_name: rule.name,
|
|
136
|
+
rule_id: rule.rule_id,
|
|
137
|
+
issue_description: rule.custom_issue_description ??
|
|
138
|
+
result.issue_description ??
|
|
139
|
+
template?.default_issue_description ??
|
|
140
|
+
'A validation issue was detected.',
|
|
141
|
+
validation_details: result.issue_description,
|
|
142
|
+
doc_references: doc_info ? [{
|
|
143
|
+
file_id: '', // Client enriches with actual file_id
|
|
144
|
+
file_name: doc_info.file_name,
|
|
145
|
+
mime_type: doc_info.mime_type,
|
|
146
|
+
}] : [],
|
|
147
|
+
action_description: rule.custom_action_description ??
|
|
148
|
+
template?.default_action_description,
|
|
149
|
+
response_options,
|
|
150
|
+
response_files: [],
|
|
151
|
+
created_at: new Date().toISOString(),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// Route Handler Factory
|
|
156
|
+
// ============================================================================
|
|
157
|
+
/**
|
|
158
|
+
* Creates a POST route handler for document validation.
|
|
159
|
+
*
|
|
160
|
+
* The handler:
|
|
161
|
+
* 1. Validates the request payload
|
|
162
|
+
* 2. Fetches the file (inline or from URL)
|
|
163
|
+
* 3. Executes each validation rule against the document via LLM
|
|
164
|
+
* 4. Creates ClarificationItems for rules that find issues
|
|
165
|
+
* 5. Returns the results
|
|
166
|
+
*/
|
|
167
|
+
export function create_validation_route(options) {
|
|
168
|
+
const sqlite_path = options?.sqlite_path ?? 'data/prompt_library.sqlite';
|
|
169
|
+
const on_error = options?.on_error ?? ((err, ctx) => console.error(`[validation] ${ctx}:`, err));
|
|
170
|
+
// Cache the dynamic import
|
|
171
|
+
let llm_api_module = null;
|
|
172
|
+
let init_promise = null;
|
|
173
|
+
async function get_llm_api() {
|
|
174
|
+
if (!llm_api_module) {
|
|
175
|
+
try {
|
|
176
|
+
const module_id = 'hazo_llm_api/server';
|
|
177
|
+
llm_api_module = await import(/* webpackIgnore: true */ module_id);
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
throw new Error('hazo_llm_api is required for validation. Install it: npm install hazo_llm_api');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return llm_api_module;
|
|
184
|
+
}
|
|
185
|
+
async function ensure_initialized() {
|
|
186
|
+
const api = await get_llm_api();
|
|
187
|
+
if (!api.is_initialized()) {
|
|
188
|
+
if (!init_promise) {
|
|
189
|
+
init_promise = api.initialize_llm_api({ sqlite_path }).then(() => { });
|
|
190
|
+
}
|
|
191
|
+
await init_promise;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Execute a single validation rule against a document.
|
|
196
|
+
*/
|
|
197
|
+
async function execute_rule(rule, file_b64, mime_type, variables) {
|
|
198
|
+
const api = await get_llm_api();
|
|
199
|
+
// Substitute variables in the prompt
|
|
200
|
+
const resolved_prompt = substitute_variables(rule.prompt, variables);
|
|
201
|
+
const full_prompt = build_validation_prompt(resolved_prompt);
|
|
202
|
+
// Call LLM
|
|
203
|
+
let llm_response;
|
|
204
|
+
if (is_image_mime(mime_type)) {
|
|
205
|
+
llm_response = await api.hazo_llm_image_text({
|
|
206
|
+
prompt: full_prompt,
|
|
207
|
+
image_b64: file_b64,
|
|
208
|
+
image_mime_type: mime_type,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else if (is_document_mime(mime_type)) {
|
|
212
|
+
llm_response = await api.hazo_llm_document_text({
|
|
213
|
+
prompt: full_prompt,
|
|
214
|
+
document_b64: file_b64,
|
|
215
|
+
document_mime_type: mime_type,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// Fallback: treat as image
|
|
220
|
+
llm_response = await api.hazo_llm_image_text({
|
|
221
|
+
prompt: full_prompt,
|
|
222
|
+
image_b64: file_b64,
|
|
223
|
+
image_mime_type: mime_type,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (!llm_response.success || !llm_response.text) {
|
|
227
|
+
return {
|
|
228
|
+
rule_id: rule.rule_id,
|
|
229
|
+
has_issue: false,
|
|
230
|
+
raw_response: llm_response.error ?? 'LLM call failed',
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
// Parse response
|
|
234
|
+
const parsed = parse_validation_response(llm_response.text);
|
|
235
|
+
return {
|
|
236
|
+
rule_id: rule.rule_id,
|
|
237
|
+
has_issue: parsed.has_issue,
|
|
238
|
+
issue_description: parsed.issue_description,
|
|
239
|
+
confidence: parsed.confidence,
|
|
240
|
+
raw_response: llm_response.text,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
return async function POST(request) {
|
|
244
|
+
try {
|
|
245
|
+
const body = await request.json();
|
|
246
|
+
const { file_name, mime_type, download_url, file_b64: request_file_b64, rules, variables = {}, content_tag, } = body;
|
|
247
|
+
// Validate required fields
|
|
248
|
+
if (!rules?.length) {
|
|
249
|
+
return Response.json({
|
|
250
|
+
success: false,
|
|
251
|
+
clarifications: [],
|
|
252
|
+
rule_results: [],
|
|
253
|
+
errors: [{ rule_id: '', error: 'rules array is required and must not be empty' }],
|
|
254
|
+
}, { status: 400 });
|
|
255
|
+
}
|
|
256
|
+
// Initialize LLM API
|
|
257
|
+
await ensure_initialized();
|
|
258
|
+
// Get file as base64
|
|
259
|
+
let file_b64;
|
|
260
|
+
if (request_file_b64) {
|
|
261
|
+
file_b64 = request_file_b64;
|
|
262
|
+
}
|
|
263
|
+
else if (download_url) {
|
|
264
|
+
try {
|
|
265
|
+
const absolute_url = download_url.startsWith('http')
|
|
266
|
+
? download_url
|
|
267
|
+
: `${new URL(request.url).origin}${download_url}`;
|
|
268
|
+
const file_response = await fetch(absolute_url);
|
|
269
|
+
if (!file_response.ok) {
|
|
270
|
+
throw new Error(`Failed to fetch file: ${file_response.status}`);
|
|
271
|
+
}
|
|
272
|
+
const buffer = Buffer.from(await file_response.arrayBuffer());
|
|
273
|
+
file_b64 = buffer.toString('base64');
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
return Response.json({
|
|
277
|
+
success: false,
|
|
278
|
+
clarifications: [],
|
|
279
|
+
rule_results: [],
|
|
280
|
+
errors: [{ rule_id: '', error: `Failed to fetch file "${file_name}": ${err instanceof Error ? err.message : 'Unknown error'}` }],
|
|
281
|
+
}, { status: 500 });
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
return Response.json({
|
|
286
|
+
success: false,
|
|
287
|
+
clarifications: [],
|
|
288
|
+
rule_results: [],
|
|
289
|
+
errors: [{ rule_id: '', error: 'Either file_b64 or download_url is required' }],
|
|
290
|
+
}, { status: 400 });
|
|
291
|
+
}
|
|
292
|
+
// Add file context variables
|
|
293
|
+
const all_variables = {
|
|
294
|
+
...variables,
|
|
295
|
+
document_name: file_name,
|
|
296
|
+
...(content_tag ? { document_type: content_tag } : {}),
|
|
297
|
+
};
|
|
298
|
+
// Execute each rule
|
|
299
|
+
const rule_results = [];
|
|
300
|
+
const clarifications = [];
|
|
301
|
+
const errors = [];
|
|
302
|
+
for (const rule of rules) {
|
|
303
|
+
try {
|
|
304
|
+
const result = await execute_rule(rule, file_b64, mime_type, all_variables);
|
|
305
|
+
rule_results.push(result);
|
|
306
|
+
if (result.has_issue && rule.clarification_type !== 'none') {
|
|
307
|
+
const clarification = create_clarification_from_result(rule, result, { file_name, mime_type });
|
|
308
|
+
clarifications.push(clarification);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
313
|
+
on_error(err, `rule ${rule.rule_id}: ${rule.name}`);
|
|
314
|
+
errors.push({ rule_id: rule.rule_id, error: message });
|
|
315
|
+
rule_results.push({
|
|
316
|
+
rule_id: rule.rule_id,
|
|
317
|
+
has_issue: false,
|
|
318
|
+
raw_response: message,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const response = {
|
|
323
|
+
success: errors.length === 0,
|
|
324
|
+
clarifications,
|
|
325
|
+
rule_results,
|
|
326
|
+
...(errors.length > 0 ? { errors } : {}),
|
|
327
|
+
};
|
|
328
|
+
return Response.json(response);
|
|
329
|
+
}
|
|
330
|
+
catch (error) {
|
|
331
|
+
on_error(error, 'unhandled error');
|
|
332
|
+
return Response.json({
|
|
333
|
+
success: false,
|
|
334
|
+
clarifications: [],
|
|
335
|
+
rule_results: [],
|
|
336
|
+
errors: [{ rule_id: '', error: error instanceof Error ? error.message : 'Unknown error' }],
|
|
337
|
+
}, { status: 500 });
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=validation_handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation_handler.js","sourceRoot":"","sources":["../../src/lib/validation_handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Document Clarifications feature.
|
|
3
|
+
*
|
|
4
|
+
* Clarifications allow reviewers to flag document validation issues,
|
|
5
|
+
* reference relevant documents, and collect structured responses from clients.
|
|
6
|
+
*/
|
|
7
|
+
import type { FormFileAttachment } from './file_attachment.js';
|
|
8
|
+
/** Clarification type - maps to templates */
|
|
9
|
+
export type ClarificationType = 'none' | 'invalid_document' | 'additional_info_required';
|
|
10
|
+
/** Lifecycle status of a clarification */
|
|
11
|
+
export type ClarificationStatus = 'pending' | 'responded' | 'resolved' | 'dismissed';
|
|
12
|
+
/** Reference to a document relevant to the clarification */
|
|
13
|
+
export interface ClarificationDocReference {
|
|
14
|
+
/** hazo_files file ID */
|
|
15
|
+
file_id: string;
|
|
16
|
+
/** Display filename */
|
|
17
|
+
file_name: string;
|
|
18
|
+
/** MIME type for icon display */
|
|
19
|
+
mime_type: string;
|
|
20
|
+
/** Why this doc is referenced (optional reviewer comment) */
|
|
21
|
+
comment?: string;
|
|
22
|
+
/** Field this doc was originally uploaded to */
|
|
23
|
+
source_field_id?: string;
|
|
24
|
+
}
|
|
25
|
+
/** A radio option in the response (green) zone */
|
|
26
|
+
export interface ClarificationResponseOption {
|
|
27
|
+
/** Value key for this option */
|
|
28
|
+
value: string;
|
|
29
|
+
/** User-visible label */
|
|
30
|
+
label: string;
|
|
31
|
+
/** Show file upload dropzone when this option is selected */
|
|
32
|
+
shows_file_upload?: boolean;
|
|
33
|
+
/** Show additional text input when this option is selected */
|
|
34
|
+
shows_additional_input?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** A single clarification item */
|
|
37
|
+
export interface ClarificationItem {
|
|
38
|
+
/** Unique ID, prefixed 'clr_' */
|
|
39
|
+
id: string;
|
|
40
|
+
/** Clarification type (maps to template) */
|
|
41
|
+
type: ClarificationType;
|
|
42
|
+
/** Lifecycle status */
|
|
43
|
+
status: ClarificationStatus;
|
|
44
|
+
/** Field or group this clarification targets */
|
|
45
|
+
target_field_id: string;
|
|
46
|
+
/** Human-readable label for the target */
|
|
47
|
+
target_label: string;
|
|
48
|
+
/** Validation rule that triggered this (Phase 3) */
|
|
49
|
+
rule_name?: string;
|
|
50
|
+
/** Validation rule ID (Phase 3) */
|
|
51
|
+
rule_id?: string;
|
|
52
|
+
/** Description of the issue found */
|
|
53
|
+
issue_description: string;
|
|
54
|
+
/** Detailed validation result from LLM analysis (shown below issue_description) */
|
|
55
|
+
validation_details?: string;
|
|
56
|
+
/** Referenced documents relevant to this clarification */
|
|
57
|
+
doc_references: ClarificationDocReference[];
|
|
58
|
+
/** Description of what action the client should take */
|
|
59
|
+
action_description?: string;
|
|
60
|
+
/** Available response options (radio buttons) */
|
|
61
|
+
response_options: ClarificationResponseOption[];
|
|
62
|
+
/** Client's selected response option value */
|
|
63
|
+
response_choice?: string;
|
|
64
|
+
/** Client's free-text comment */
|
|
65
|
+
user_comment?: string;
|
|
66
|
+
/** Files uploaded as part of the response */
|
|
67
|
+
response_files: FormFileAttachment[];
|
|
68
|
+
/** ISO timestamp when created */
|
|
69
|
+
created_at: string;
|
|
70
|
+
/** ISO timestamp of last update */
|
|
71
|
+
updated_at?: string;
|
|
72
|
+
/** User ID who created this clarification */
|
|
73
|
+
created_by?: string;
|
|
74
|
+
/** User ID who responded */
|
|
75
|
+
responded_by?: string;
|
|
76
|
+
/** User ID who resolved */
|
|
77
|
+
resolved_by?: string;
|
|
78
|
+
}
|
|
79
|
+
/** Template definition for a clarification type */
|
|
80
|
+
export interface ClarificationTemplate {
|
|
81
|
+
/** Template type key */
|
|
82
|
+
type: ClarificationType;
|
|
83
|
+
/** Human-readable name */
|
|
84
|
+
display_name: string;
|
|
85
|
+
/** Default issue description (pre-filled in grey zone) */
|
|
86
|
+
default_issue_description?: string;
|
|
87
|
+
/** Default action description (pre-filled in green zone) */
|
|
88
|
+
default_action_description?: string;
|
|
89
|
+
/** Available response options for this template */
|
|
90
|
+
response_options: ClarificationResponseOption[];
|
|
91
|
+
/** Whether to show the comment textarea */
|
|
92
|
+
enable_comment: boolean;
|
|
93
|
+
/** Whether to show doc reference list */
|
|
94
|
+
show_doc_references: boolean;
|
|
95
|
+
}
|
|
96
|
+
/** Response payload when a client submits a clarification response */
|
|
97
|
+
export interface ClarificationResponse {
|
|
98
|
+
/** Selected response option value */
|
|
99
|
+
response_choice?: string;
|
|
100
|
+
/** Free-text comment */
|
|
101
|
+
user_comment?: string;
|
|
102
|
+
/** Uploaded response files */
|
|
103
|
+
response_files?: FormFileAttachment[];
|
|
104
|
+
}
|
|
105
|
+
/** Consumer-provided callbacks for clarification lifecycle */
|
|
106
|
+
export interface ClarificationCallbacks {
|
|
107
|
+
/** Called when client submits a response to a clarification */
|
|
108
|
+
on_respond?: (clarification_id: string, response: ClarificationResponse) => void;
|
|
109
|
+
/** Called when reviewer resolves a clarification */
|
|
110
|
+
on_resolve?: (clarification_id: string) => void;
|
|
111
|
+
/** Called when reviewer dismisses a clarification */
|
|
112
|
+
on_dismiss?: (clarification_id: string) => void;
|
|
113
|
+
/** Called when reviewer re-opens a resolved/dismissed clarification */
|
|
114
|
+
on_reopen?: (clarification_id: string) => void;
|
|
115
|
+
/** Called when a doc reference is deleted from a clarification */
|
|
116
|
+
on_doc_delete?: (clarification_id: string, file_id: string) => void;
|
|
117
|
+
}
|
|
118
|
+
/** Summary counts for clarifications */
|
|
119
|
+
export interface ClarificationCounts {
|
|
120
|
+
pending: number;
|
|
121
|
+
responded: number;
|
|
122
|
+
resolved: number;
|
|
123
|
+
dismissed: number;
|
|
124
|
+
total: number;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=clarification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clarification.d.ts","sourceRoot":"","sources":["../../src/types/clarification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Document Clarifications feature.
|
|
3
|
+
*
|
|
4
|
+
* Clarifications allow reviewers to flag document validation issues,
|
|
5
|
+
* reference relevant documents, and collect structured responses from clients.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=clarification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clarification.js","sourceRoot":"","sources":["../../src/types/clarification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -36,6 +36,8 @@ export interface FormFileAttachment {
|
|
|
36
36
|
status?: FileStatus;
|
|
37
37
|
/** Server file path (for download fallback when get_download_url is unavailable) */
|
|
38
38
|
file_path?: string;
|
|
39
|
+
/** Content tag classifying the document type (set by LLM via hazo_files content tagging) */
|
|
40
|
+
content_tag?: string | null;
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Type guard: checks whether an object is a FormFileAttachment (vs legacy FileData).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_attachment.d.ts","sourceRoot":"","sources":["../../src/types/file_attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE,6CAA6C;AAC7C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file_attachment.d.ts","sourceRoot":"","sources":["../../src/types/file_attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE,6CAA6C;AAC7C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,kBAAkB,CAIjF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,QAAQ,CAUhF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,QAAQ,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,CAepB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_attachment.js","sourceRoot":"","sources":["../../src/types/file_attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"file_attachment.js","sourceRoot":"","sources":["../../src/types/file_attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsCH;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,OAAO,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA8B;IACpE,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,EAAE;QACrC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7C,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAmB,EACnB,MAAe;IAEf,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,MAAM,EAAE,MAAM,IAAI,YAAY,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;QAC/D,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,QAAQ;QAC5C,WAAW,EAAE,SAAS,CAAC,WAAW,YAAY,IAAI;YAChD,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,OAAO,SAAS,CAAC,WAAW,KAAK,QAAQ;gBACzC,CAAC,CAAC,SAAS,CAAC,WAAW;gBACvB,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,24 @@
|
|
|
5
5
|
* bridge client-side React components with server-side hazo_files logic.
|
|
6
6
|
*/
|
|
7
7
|
import type { FormFileAttachment, FileStatus } from './file_attachment.js';
|
|
8
|
+
import type { ClarificationItem, ClarificationCallbacks } from './clarification.js';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for LLM-based content tagging at upload time.
|
|
11
|
+
* Mirrors hazo_files ContentTagConfig — when enabled, the LLM classifies
|
|
12
|
+
* the uploaded document and writes the result to content_tag.
|
|
13
|
+
*/
|
|
14
|
+
export interface ContentTagConfig {
|
|
15
|
+
/** Whether to enable LLM-based content tagging */
|
|
16
|
+
content_tag_set_by_llm: boolean;
|
|
17
|
+
/** Prompt area for hazo_llm_api lookup */
|
|
18
|
+
content_tag_prompt_area: string;
|
|
19
|
+
/** Prompt key within the area */
|
|
20
|
+
content_tag_prompt_key: string;
|
|
21
|
+
/** Field name to extract from the LLM response as the content tag */
|
|
22
|
+
content_tag_prompt_return_fieldname: string;
|
|
23
|
+
/** Optional variables to substitute in the prompt template */
|
|
24
|
+
content_tag_prompt_variables?: Record<string, string>;
|
|
25
|
+
}
|
|
8
26
|
/**
|
|
9
27
|
* Options passed to the upload callback.
|
|
10
28
|
*/
|
|
@@ -39,6 +57,8 @@ export interface FileManagerCallbacks {
|
|
|
39
57
|
get_status?: (file_ids: string[]) => Promise<Record<string, FileStatus>>;
|
|
40
58
|
/** Re-upload to replace a missing file. Optional — if absent, re-upload is disabled. */
|
|
41
59
|
reupload?: (file: File, original_file_id: string, options: FileUploadOptions) => Promise<FormFileAttachment>;
|
|
60
|
+
/** Query a file's content_tag after upload (for cases where tagging is async). */
|
|
61
|
+
get_content_tag?: (file_id: string) => Promise<string | null>;
|
|
42
62
|
}
|
|
43
63
|
/**
|
|
44
64
|
* Configuration object passed to form components to enable hazo_files integration.
|
|
@@ -56,5 +76,21 @@ export interface FileManagerConfig {
|
|
|
56
76
|
scope_id?: string;
|
|
57
77
|
/** User ID passed to all upload calls */
|
|
58
78
|
uploaded_by?: string;
|
|
79
|
+
/** Content tag configuration for LLM-based document classification at upload time */
|
|
80
|
+
content_tag_config?: ContentTagConfig;
|
|
81
|
+
/** Set of file IDs currently being validated by LLM (shows spinner overlay on file card) */
|
|
82
|
+
validating_file_ids?: Set<string>;
|
|
83
|
+
/** Set of file IDs that have validation errors (shows error badge on file card) */
|
|
84
|
+
error_file_ids?: Set<string>;
|
|
85
|
+
/** Set of file IDs that passed validation (shows green checkmark badge on file card) */
|
|
86
|
+
passed_file_ids?: Set<string>;
|
|
87
|
+
/** Map of file_id → array of issue descriptions for error popover */
|
|
88
|
+
error_file_details?: Record<string, string[]>;
|
|
89
|
+
/** Clarification items for file-level issue dialogs */
|
|
90
|
+
clarification_items?: ClarificationItem[];
|
|
91
|
+
/** Callbacks for clarification lifecycle (respond, resolve, dismiss, reopen) */
|
|
92
|
+
clarification_callbacks?: ClarificationCallbacks;
|
|
93
|
+
/** Custom className for the private files section background (default: 'bg-muted rounded-md p-3') */
|
|
94
|
+
private_files_class_name?: string;
|
|
59
95
|
}
|
|
60
96
|
//# sourceMappingURL=file_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file_manager.d.ts","sourceRoot":"","sources":["../../src/types/file_manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"file_manager.d.ts","sourceRoot":"","sources":["../../src/types/file_manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,10 +5,12 @@ export type { ControlName, RoleControlBehaviour, RoleBehaviour, IconsBehaviour,
|
|
|
5
5
|
export { DEFAULT_ICON_ORDER, DEFAULT_ROLE_CONTROL_BEHAVIOUR, EDIT_CONTROL_NAMES, CONTROL_ICON_NAMES, get_default_icons_behaviour, } from './icons_behaviour.js';
|
|
6
6
|
export type { FormFileAttachment, FileStatus, } from './file_attachment.js';
|
|
7
7
|
export { is_form_file_attachment, attachment_to_file_data, file_data_to_attachment, } from './file_attachment.js';
|
|
8
|
-
export type { FileUploadOptions, FileManagerCallbacks, FileManagerConfig, } from './file_manager.js';
|
|
8
|
+
export type { ContentTagConfig, FileUploadOptions, FileManagerCallbacks, FileManagerConfig, } from './file_manager.js';
|
|
9
9
|
export type { StyleLevel, StyleVariant, StyleTokens, StyleClassDefinition, StylesConfig, ResolvedStyle, } from './style_variant.js';
|
|
10
10
|
export { DEFAULT_STYLES_CONFIG } from './style_variant.js';
|
|
11
11
|
export type { BaseFieldType, FieldType, FieldTypeDefinition, FieldTypesConfig, } from './field_type_definition.js';
|
|
12
12
|
export { DEFAULT_FIELD_TYPES_CONFIG } from './field_type_definition.js';
|
|
13
13
|
export type { DocLinkType, DocLink, UploadedFile, DocLinkClickEvent, } from './doc_link.js';
|
|
14
|
+
export type { ClarificationType, ClarificationStatus, ClarificationDocReference, ClarificationResponseOption, ClarificationItem, ClarificationTemplate, ClarificationResponse, ClarificationCallbacks, ClarificationCounts, } from './clarification.js';
|
|
15
|
+
export type { ValidationRule, ValidationRuleRecord, PromptCommand, PromptVariable, PromptEditorConfig, ValidationRuleExecution, ValidationRequest, ValidationRuleResult, ValidationResponse, ValidationRouteOptions, UseFileValidationOptions, UseFileValidationReturn, } from './validation.js';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,YAAY,EACV,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAGxE,YAAY,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,kBAAkB,EAClB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,YAAY,EACV,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAGxE,YAAY,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAkB9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAS3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC"}
|