hazo_collab_forms 3.1.7 → 5.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 (284) hide show
  1. package/CHANGE_LOG.md +201 -0
  2. package/README.md +3 -0
  3. package/dist/components/clarification/clarification_item_body.d.ts +19 -1
  4. package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
  5. package/dist/components/clarification/clarification_item_body.js +114 -6
  6. package/dist/components/clarification/clarification_item_body.js.map +1 -1
  7. package/dist/components/clarification/clarification_thread.js +1 -1
  8. package/dist/components/clarification/clarification_thread.js.map +1 -1
  9. package/dist/components/clarification/index.d.ts +2 -0
  10. package/dist/components/clarification/index.d.ts.map +1 -1
  11. package/dist/components/clarification/index.js +1 -0
  12. package/dist/components/clarification/index.js.map +1 -1
  13. package/dist/components/clarification/resolution_status_strip.d.ts +18 -0
  14. package/dist/components/clarification/resolution_status_strip.d.ts.map +1 -0
  15. package/dist/components/clarification/resolution_status_strip.js +20 -0
  16. package/dist/components/clarification/resolution_status_strip.js.map +1 -0
  17. package/dist/components/hazo_fb_form/context.d.ts +1 -1
  18. package/dist/components/hazo_fb_form/context.d.ts.map +1 -1
  19. package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +1 -1
  20. package/dist/components/hazo_fb_form/hazo_fb_form.js +330 -113
  21. package/dist/components/hazo_fb_form/hazo_fb_form.js.map +1 -1
  22. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts +3 -3
  23. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts.map +1 -1
  24. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js +339 -46
  25. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js.map +1 -1
  26. package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts +3 -1
  27. package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts.map +1 -1
  28. package/dist/components/hazo_fb_form/hooks/use_llm_run.js +89 -11
  29. package/dist/components/hazo_fb_form/hooks/use_llm_run.js.map +1 -1
  30. package/dist/components/hazo_fb_form/shared/agent_stepper.js +1 -1
  31. package/dist/components/hazo_fb_form/shared/agent_stepper.js.map +1 -1
  32. package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts +9 -0
  33. package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts.map +1 -0
  34. package/dist/components/hazo_fb_form/shared/file_status_accordion.js +39 -0
  35. package/dist/components/hazo_fb_form/shared/file_status_accordion.js.map +1 -0
  36. package/dist/components/hazo_fb_form/shared/format.d.ts.map +1 -1
  37. package/dist/components/hazo_fb_form/shared/format.js +8 -3
  38. package/dist/components/hazo_fb_form/shared/format.js.map +1 -1
  39. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +7 -1
  40. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +1 -1
  41. package/dist/components/hazo_fb_form/shared/send_back_item_card.js +6 -3
  42. package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +1 -1
  43. package/dist/components/hazo_fb_form/types.d.ts +3 -1
  44. package/dist/components/hazo_fb_form/types.d.ts.map +1 -1
  45. package/dist/components/hazo_fb_form/views/back_office_view.js +1 -1
  46. package/dist/components/hazo_fb_form/views/back_office_view.js.map +1 -1
  47. package/dist/components/hazo_fb_form/views/clarifications_view.js +2 -2
  48. package/dist/components/hazo_fb_form/views/clarifications_view.js.map +1 -1
  49. package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +1 -1
  50. package/dist/components/hazo_fb_form/views/front_office_view.js +62 -41
  51. package/dist/components/hazo_fb_form/views/front_office_view.js.map +1 -1
  52. package/dist/components/hazo_fb_form/views/interim_view.js +3 -3
  53. package/dist/components/hazo_fb_form/views/interim_view.js.map +1 -1
  54. package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +1 -1
  55. package/dist/components/hazo_fb_form/views/review_queue_view.js +22 -9
  56. package/dist/components/hazo_fb_form/views/review_queue_view.js.map +1 -1
  57. package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
  58. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +32 -3
  59. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -1
  60. package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts +20 -0
  61. package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts.map +1 -0
  62. package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.js +34 -0
  63. package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.js.map +1 -0
  64. package/dist/components/hazo_validation_rule_editor/context.d.ts +3 -2
  65. package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
  66. package/dist/components/hazo_validation_rule_editor/context.js +15 -3
  67. package/dist/components/hazo_validation_rule_editor/context.js.map +1 -1
  68. package/dist/components/hazo_validation_rule_editor/types.d.ts +7 -1
  69. package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -1
  70. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +1 -1
  71. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
  72. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +2 -2
  73. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -1
  74. package/dist/components/index.d.ts +2 -0
  75. package/dist/components/index.d.ts.map +1 -1
  76. package/dist/components/index.js +2 -0
  77. package/dist/components/index.js.map +1 -1
  78. package/dist/components/shared/document_type_editor.d.ts +31 -0
  79. package/dist/components/shared/document_type_editor.d.ts.map +1 -0
  80. package/dist/components/shared/document_type_editor.js +60 -0
  81. package/dist/components/shared/document_type_editor.js.map +1 -0
  82. package/dist/components/shared/file_bar/file_bar.d.ts +7 -1
  83. package/dist/components/shared/file_bar/file_bar.d.ts.map +1 -1
  84. package/dist/components/shared/file_bar/file_bar.js +5 -3
  85. package/dist/components/shared/file_bar/file_bar.js.map +1 -1
  86. package/dist/components/shared/file_bar/file_bar_validation_dialog.js +4 -4
  87. package/dist/components/shared/file_bar/file_bar_validation_dialog.js.map +1 -1
  88. package/dist/components/shared/file_status_icon.d.ts +23 -0
  89. package/dist/components/shared/file_status_icon.d.ts.map +1 -0
  90. package/dist/components/shared/file_status_icon.js +38 -0
  91. package/dist/components/shared/file_status_icon.js.map +1 -0
  92. package/dist/components/shared/json_data_panel/json_data_panel.d.ts +1 -1
  93. package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +1 -1
  94. package/dist/components/shared/json_data_panel/json_data_panel.js +27 -2
  95. package/dist/components/shared/json_data_panel/json_data_panel.js.map +1 -1
  96. package/dist/components/shared/rule_result_card.d.ts.map +1 -1
  97. package/dist/components/shared/rule_result_card.js +5 -4
  98. package/dist/components/shared/rule_result_card.js.map +1 -1
  99. package/dist/components/thread_form/components/add_question_dialog.d.ts +12 -0
  100. package/dist/components/thread_form/components/add_question_dialog.d.ts.map +1 -0
  101. package/dist/components/thread_form/components/add_question_dialog.js +36 -0
  102. package/dist/components/thread_form/components/add_question_dialog.js.map +1 -0
  103. package/dist/components/thread_form/components/agent_compose_dialog.d.ts +30 -0
  104. package/dist/components/thread_form/components/agent_compose_dialog.d.ts.map +1 -0
  105. package/dist/components/thread_form/components/agent_compose_dialog.js +45 -0
  106. package/dist/components/thread_form/components/agent_compose_dialog.js.map +1 -0
  107. package/dist/components/thread_form/components/clarification.d.ts +14 -0
  108. package/dist/components/thread_form/components/clarification.d.ts.map +1 -0
  109. package/dist/components/thread_form/components/clarification.js +12 -0
  110. package/dist/components/thread_form/components/clarification.js.map +1 -0
  111. package/dist/components/thread_form/components/collected_data_view.d.ts +15 -0
  112. package/dist/components/thread_form/components/collected_data_view.d.ts.map +1 -0
  113. package/dist/components/thread_form/components/collected_data_view.js +121 -0
  114. package/dist/components/thread_form/components/collected_data_view.js.map +1 -0
  115. package/dist/components/thread_form/components/coverage_card.d.ts +11 -0
  116. package/dist/components/thread_form/components/coverage_card.d.ts.map +1 -0
  117. package/dist/components/thread_form/components/coverage_card.js +60 -0
  118. package/dist/components/thread_form/components/coverage_card.js.map +1 -0
  119. package/dist/components/thread_form/components/file_bar.d.ts +93 -0
  120. package/dist/components/thread_form/components/file_bar.d.ts.map +1 -0
  121. package/dist/components/thread_form/components/file_bar.js +251 -0
  122. package/dist/components/thread_form/components/file_bar.js.map +1 -0
  123. package/dist/components/thread_form/components/file_info_dialog.d.ts +15 -0
  124. package/dist/components/thread_form/components/file_info_dialog.d.ts.map +1 -0
  125. package/dist/components/thread_form/components/file_info_dialog.js +64 -0
  126. package/dist/components/thread_form/components/file_info_dialog.js.map +1 -0
  127. package/dist/components/thread_form/components/issue_group_tree.d.ts +20 -0
  128. package/dist/components/thread_form/components/issue_group_tree.d.ts.map +1 -0
  129. package/dist/components/thread_form/components/issue_group_tree.js +164 -0
  130. package/dist/components/thread_form/components/issue_group_tree.js.map +1 -0
  131. package/dist/components/thread_form/components/pdf_side_panel.d.ts +20 -0
  132. package/dist/components/thread_form/components/pdf_side_panel.d.ts.map +1 -0
  133. package/dist/components/thread_form/components/pdf_side_panel.js +63 -0
  134. package/dist/components/thread_form/components/pdf_side_panel.js.map +1 -0
  135. package/dist/components/thread_form/components/rule_decision_row.d.ts +31 -0
  136. package/dist/components/thread_form/components/rule_decision_row.d.ts.map +1 -0
  137. package/dist/components/thread_form/components/rule_decision_row.js +20 -0
  138. package/dist/components/thread_form/components/rule_decision_row.js.map +1 -0
  139. package/dist/components/thread_form/components/send_back_message.d.ts +32 -0
  140. package/dist/components/thread_form/components/send_back_message.d.ts.map +1 -0
  141. package/dist/components/thread_form/components/send_back_message.js +82 -0
  142. package/dist/components/thread_form/components/send_back_message.js.map +1 -0
  143. package/dist/components/thread_form/components/shared.d.ts +54 -0
  144. package/dist/components/thread_form/components/shared.d.ts.map +1 -0
  145. package/dist/components/thread_form/components/shared.js +136 -0
  146. package/dist/components/thread_form/components/shared.js.map +1 -0
  147. package/dist/components/thread_form/components/task_card.d.ts +90 -0
  148. package/dist/components/thread_form/components/task_card.d.ts.map +1 -0
  149. package/dist/components/thread_form/components/task_card.js +63 -0
  150. package/dist/components/thread_form/components/task_card.js.map +1 -0
  151. package/dist/components/thread_form/components/text_doc_check.d.ts +15 -0
  152. package/dist/components/thread_form/components/text_doc_check.d.ts.map +1 -0
  153. package/dist/components/thread_form/components/text_doc_check.js +16 -0
  154. package/dist/components/thread_form/components/text_doc_check.js.map +1 -0
  155. package/dist/components/thread_form/components/text_extraction.d.ts +14 -0
  156. package/dist/components/thread_form/components/text_extraction.d.ts.map +1 -0
  157. package/dist/components/thread_form/components/text_extraction.js +16 -0
  158. package/dist/components/thread_form/components/text_extraction.js.map +1 -0
  159. package/dist/components/thread_form/components/thread_composer.d.ts +15 -0
  160. package/dist/components/thread_form/components/thread_composer.d.ts.map +1 -0
  161. package/dist/components/thread_form/components/thread_composer.js +93 -0
  162. package/dist/components/thread_form/components/thread_composer.js.map +1 -0
  163. package/dist/components/thread_form/components/thread_timeline.d.ts +65 -0
  164. package/dist/components/thread_form/components/thread_timeline.d.ts.map +1 -0
  165. package/dist/components/thread_form/components/thread_timeline.js +225 -0
  166. package/dist/components/thread_form/components/thread_timeline.js.map +1 -0
  167. package/dist/components/thread_form/hooks/use_file_pipeline.d.ts +126 -0
  168. package/dist/components/thread_form/hooks/use_file_pipeline.d.ts.map +1 -0
  169. package/dist/components/thread_form/hooks/use_file_pipeline.js +760 -0
  170. package/dist/components/thread_form/hooks/use_file_pipeline.js.map +1 -0
  171. package/dist/components/thread_form/hooks/use_thread_form.d.ts +36 -0
  172. package/dist/components/thread_form/hooks/use_thread_form.d.ts.map +1 -0
  173. package/dist/components/thread_form/hooks/use_thread_form.js +126 -0
  174. package/dist/components/thread_form/hooks/use_thread_form.js.map +1 -0
  175. package/dist/components/thread_form/index.d.ts +33 -0
  176. package/dist/components/thread_form/index.d.ts.map +1 -0
  177. package/dist/components/thread_form/index.js +30 -0
  178. package/dist/components/thread_form/index.js.map +1 -0
  179. package/dist/components/thread_form/sample_data.d.ts +8 -0
  180. package/dist/components/thread_form/sample_data.d.ts.map +1 -0
  181. package/dist/components/thread_form/sample_data.js +658 -0
  182. package/dist/components/thread_form/sample_data.js.map +1 -0
  183. package/dist/components/thread_form/thread_form.d.ts +7 -0
  184. package/dist/components/thread_form/thread_form.d.ts.map +1 -0
  185. package/dist/components/thread_form/thread_form.js +1385 -0
  186. package/dist/components/thread_form/thread_form.js.map +1 -0
  187. package/dist/components/thread_form/types.d.ts +402 -0
  188. package/dist/components/thread_form/types.d.ts.map +1 -0
  189. package/dist/components/thread_form/types.js +23 -0
  190. package/dist/components/thread_form/types.js.map +1 -0
  191. package/dist/components/thread_form/utils/file_decision_state.d.ts +22 -0
  192. package/dist/components/thread_form/utils/file_decision_state.d.ts.map +1 -0
  193. package/dist/components/thread_form/utils/file_decision_state.js +37 -0
  194. package/dist/components/thread_form/utils/file_decision_state.js.map +1 -0
  195. package/dist/components/thread_form/utils/merge_send_back.d.ts +13 -0
  196. package/dist/components/thread_form/utils/merge_send_back.d.ts.map +1 -0
  197. package/dist/components/thread_form/utils/merge_send_back.js +23 -0
  198. package/dist/components/thread_form/utils/merge_send_back.js.map +1 -0
  199. package/dist/lib/autofill_handler.d.ts.map +1 -1
  200. package/dist/lib/autofill_handler.js +5 -44
  201. package/dist/lib/autofill_handler.js.map +1 -1
  202. package/dist/lib/classification_handler.d.ts +105 -0
  203. package/dist/lib/classification_handler.d.ts.map +1 -0
  204. package/dist/lib/classification_handler.js +342 -0
  205. package/dist/lib/classification_handler.js.map +1 -0
  206. package/dist/lib/content_gate_handler.d.ts +37 -0
  207. package/dist/lib/content_gate_handler.d.ts.map +1 -0
  208. package/dist/lib/content_gate_handler.js +126 -0
  209. package/dist/lib/content_gate_handler.js.map +1 -0
  210. package/dist/lib/index.d.ts +10 -0
  211. package/dist/lib/index.d.ts.map +1 -1
  212. package/dist/lib/index.js +5 -0
  213. package/dist/lib/index.js.map +1 -1
  214. package/dist/lib/periodic_coverage_runner.d.ts +24 -0
  215. package/dist/lib/periodic_coverage_runner.d.ts.map +1 -0
  216. package/dist/lib/periodic_coverage_runner.js +121 -0
  217. package/dist/lib/periodic_coverage_runner.js.map +1 -0
  218. package/dist/lib/resolution_handler.d.ts +150 -0
  219. package/dist/lib/resolution_handler.d.ts.map +1 -0
  220. package/dist/lib/resolution_handler.js +597 -0
  221. package/dist/lib/resolution_handler.js.map +1 -0
  222. package/dist/lib/resolve_variable.d.ts +25 -0
  223. package/dist/lib/resolve_variable.d.ts.map +1 -0
  224. package/dist/lib/resolve_variable.js +77 -0
  225. package/dist/lib/resolve_variable.js.map +1 -0
  226. package/dist/lib/validation_handler.d.ts +27 -3
  227. package/dist/lib/validation_handler.d.ts.map +1 -1
  228. package/dist/lib/validation_handler.js +338 -288
  229. package/dist/lib/validation_handler.js.map +1 -1
  230. package/dist/types/clarification.d.ts +54 -0
  231. package/dist/types/clarification.d.ts.map +1 -1
  232. package/dist/types/fb_form_data.d.ts +273 -123
  233. package/dist/types/fb_form_data.d.ts.map +1 -1
  234. package/dist/types/fb_form_data.js +44 -58
  235. package/dist/types/fb_form_data.js.map +1 -1
  236. package/dist/types/fb_form_data_v1.d.ts +250 -0
  237. package/dist/types/fb_form_data_v1.d.ts.map +1 -0
  238. package/dist/types/fb_form_data_v1.js +117 -0
  239. package/dist/types/fb_form_data_v1.js.map +1 -0
  240. package/dist/types/fb_form_instance.d.ts +1 -1
  241. package/dist/types/fb_form_instance.d.ts.map +1 -1
  242. package/dist/types/index.d.ts +5 -3
  243. package/dist/types/index.d.ts.map +1 -1
  244. package/dist/types/index.js +2 -1
  245. package/dist/types/index.js.map +1 -1
  246. package/dist/types/validation.d.ts +134 -12
  247. package/dist/types/validation.d.ts.map +1 -1
  248. package/dist/utils/expectation_extractor.d.ts +31 -0
  249. package/dist/utils/expectation_extractor.d.ts.map +1 -0
  250. package/dist/utils/expectation_extractor.js +142 -0
  251. package/dist/utils/expectation_extractor.js.map +1 -0
  252. package/dist/utils/fb_data_adapter.d.ts +7 -2
  253. package/dist/utils/fb_data_adapter.d.ts.map +1 -1
  254. package/dist/utils/fb_data_adapter.js +58 -7
  255. package/dist/utils/fb_data_adapter.js.map +1 -1
  256. package/dist/utils/fb_data_adapter_v2.d.ts +17 -0
  257. package/dist/utils/fb_data_adapter_v2.d.ts.map +1 -0
  258. package/dist/utils/fb_data_adapter_v2.js +483 -0
  259. package/dist/utils/fb_data_adapter_v2.js.map +1 -0
  260. package/dist/utils/fb_data_helpers.d.ts +1 -1
  261. package/dist/utils/fb_data_helpers.d.ts.map +1 -1
  262. package/dist/utils/fb_data_mutations.d.ts +1 -1
  263. package/dist/utils/fb_data_mutations.d.ts.map +1 -1
  264. package/dist/utils/fb_data_mutations_v2.d.ts +46 -0
  265. package/dist/utils/fb_data_mutations_v2.d.ts.map +1 -0
  266. package/dist/utils/fb_data_mutations_v2.js +341 -0
  267. package/dist/utils/fb_data_mutations_v2.js.map +1 -0
  268. package/dist/utils/fb_data_queries.d.ts +81 -0
  269. package/dist/utils/fb_data_queries.d.ts.map +1 -0
  270. package/dist/utils/fb_data_queries.js +354 -0
  271. package/dist/utils/fb_data_queries.js.map +1 -0
  272. package/dist/utils/index.d.ts +4 -0
  273. package/dist/utils/index.d.ts.map +1 -1
  274. package/dist/utils/index.js +6 -0
  275. package/dist/utils/index.js.map +1 -1
  276. package/dist/utils/issue_bucketing.d.ts +36 -0
  277. package/dist/utils/issue_bucketing.d.ts.map +1 -0
  278. package/dist/utils/issue_bucketing.js +107 -0
  279. package/dist/utils/issue_bucketing.js.map +1 -0
  280. package/dist/utils/validation_result.d.ts +32 -0
  281. package/dist/utils/validation_result.d.ts.map +1 -0
  282. package/dist/utils/validation_result.js +55 -0
  283. package/dist/utils/validation_result.js.map +1 -0
  284. package/package.json +16 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification_handler.js","sourceRoot":"","sources":["../../src/lib/classification_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4FzC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,OAAO,SAAS,KAAK,iBAAiB,CAAC;AACzC,CAAC;AAED,qFAAqF;AACrF,SAAS,qBAAqB,CAAC,IAA8C;IAC3E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,OAAO,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,EAAE,CAAC,OAAO,KAAK,KAAK,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,mFAAmF;AACnF,SAAS,eAAe,CAAC,IAA4C;IACnE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,8CAA8C,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,GAAG,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,SAAS,oBAAoB,CAAC,MAAc,EAAE,SAAiC;IAC7E,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;AACtF,CAAC;AAYD;;;;;GAKG;AACH,SAAS,6BAA6B,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxE,IAAI,WAAW;QAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,WAAW;QAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,YAAY;QAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,IAAI;gBAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAQ,MAAM,CAAC,CAAC,CAA6B,IAAI,IAAI,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,MAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA+B;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,WAAW,GAA8B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,CAAE,CAA6B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,MAAM,MAAM,GAAI,CAA6B,CAAC,MAAM,CAAC;YACrD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,aAAa,GAAG,SAAS,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;IACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvF,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAChD,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAChF,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACnF,IAAI,UAAU,GAAG,CAAC;YAAE,UAAU,GAAG,CAAC,CAAC;QACnC,IAAI,UAAU,GAAG,CAAC;YAAE,UAAU,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAC3F,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QACjG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,0EAA0E;IAC1E,4EAA4E;IAC5E,mEAAmE;IACnE,gDAAgD;IAChD,IAAI,gBAA2G,CAAC;IAChH,MAAM,SAAS,GAA4B,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,CAAC;QACjH,CAAC,CAAC,MAAM,CAAC,gBAA2C;QACpD,CAAC,CAAC,MAAM,CAAC;IAEX,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC;IACjF,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAE,SAAqC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzJ,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC;IAC7E,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC;IAE9F,IAAI,KAAyB,CAAC;IAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,MAAM,WAAW,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3G,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;QACjE,gBAAgB,GAAG;YACjB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;AAC5G,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAoC;IAC9E,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,4BAA4B,CAAC;IAC7H,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAY,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtH,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,gBAAgB,CAAC;IAE3D,2BAA2B;IAC3B,IAAI,cAAc,GAkBP,IAAI,CAAC;IAEhB,IAAI,YAAY,GAAyB,IAAI,CAAC;IAE9C,KAAK,UAAU,WAAW;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,qBAAqB,CAAC;gBACxC,cAAc,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAA0B,CAAC;YAC9F,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,cAAe,CAAC;IACzB,CAAC;IAED,KAAK,UAAU,kBAAkB;QAC/B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,oBAAoB;oBACtC,CAAC,CAAC,EAAE,oBAAoB,EAAE;oBAC1B,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACpB,YAAY,GAAG,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,YAAY,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,UAAU,IAAI,CAAC,OAAgB;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,GAA0B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YAEvG,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1C,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iDAAiD,EAAmC,EAC7G,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,qBAAqB;YACrB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;YAEhC,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oFAAoF,EAAmC,EAChJ,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,WAAW,IAAI,UAAU,gEAAgE,EAAmC,EAC/J,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,+DAA+D;YAC/D,MAAM,cAAc,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,QAAQ,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,EAAE;gBAClD,cAAc,EAAE,cAAc;gBAC9B,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,WAAW,IAAI,QAAQ;gBACpC,kEAAkE;gBAClE,iEAAiE;gBACjE,SAAS,EAAE,KAAK,SAAS,EAAE;aAC5B,CAAC,CAAC;YAEH,8BAA8B;YAC9B,IAAI,YAAY,CAAC;YACjB,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,YAAY,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC;oBAC3C,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,QAAQ;oBACnB,eAAe,EAAE,SAAS;iBAC3B,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,YAAY,GAAG,MAAM,GAAG,CAAC,sBAAsB,CAAC;oBAC9C,MAAM,EAAE,WAAW;oBACnB,YAAY,EAAE,QAAQ;oBACtB,kBAAkB,EAAE,SAAS;iBAC9B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,YAAY,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC;oBAC3C,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,QAAQ;oBACnB,eAAe,EAAE,SAAS;iBAC3B,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAChD,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,iBAAiB,EAAmC,EACnG,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,8BAA8B;YAC9B,MAAM,MAAM,GAAG,6BAA6B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEhE,yEAAyE;YACzE,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,4DAA4D;YAC5D,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACzC,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,QAAQ,CACN,IAAI,KAAK,CACP,+BAA+B,aAAa,gDAAgD,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CACnJ,EACD,iCAAiC,CAClC,CAAC;oBACF,aAAa,GAAG,SAAS,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,oEAAoE;YACpE,qEAAqE;YACrE,qCAAqC;YACrC,IACE,aAAa,KAAK,SAAS;gBAC3B,MAAM,CAAC,UAAU,KAAK,CAAC;gBACvB,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAChD,CAAC;gBACD,MAAM,GAAG,GACP,oHAAoH;oBACpH,oHAAoH;oBACpH,0HAA0H,CAAC;gBAC7H,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,iCAAiC,CAAC,CAAC;YAC9D,CAAC;YAED,6CAA6C;YAC7C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACrC,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,QAAQ,GAA2B;gBACvC,OAAO,EAAE,IAAI;gBACb,aAAa;gBACb,IAAI;gBACJ,WAAW;gBACX,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClF,CAAC;YAEF,0EAA0E;YAC1E,0EAA0E;YAC1E,mEAAmE;YACnE,kBAAkB;YAClB,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,aAAa,CAAC,EAAE,CAAC;gBAC/H,QAAkE,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC;YAC1G,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACnC,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAmC,EACpH,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Server-side content-gate route handler factory.
3
+ *
4
+ * A lightweight LLM gate that decides whether a piece of client text is worth
5
+ * running through document-style validation rules. Used by the thread form to
6
+ * suppress validation noise on conversational client replies ("I don't have
7
+ * those receipts") while still running validation when the client actually
8
+ * submits document-like content.
9
+ *
10
+ * The gate response is never shown to the client — it only controls whether
11
+ * the full validation pipeline fires.
12
+ *
13
+ * Usage:
14
+ * import { create_content_gate_route } from 'hazo_collab_forms/lib';
15
+ * export const POST = create_content_gate_route({ hazo_connect_adapter: getHazoConnect() });
16
+ */
17
+ import 'server-only';
18
+ export interface ContentGateRouteOptions {
19
+ sqlite_path?: string;
20
+ hazo_connect_adapter?: unknown;
21
+ on_error?: (err: unknown, ctx: string) => void;
22
+ /** Default: 'thread_form' */
23
+ prompt_area?: string;
24
+ /** Default: 'gate_meaningful_content' */
25
+ prompt_key?: string;
26
+ }
27
+ export interface ContentGateRequest {
28
+ text: string;
29
+ }
30
+ export interface ContentGateResponse {
31
+ success: boolean;
32
+ has_content?: boolean;
33
+ reason?: string;
34
+ error?: string;
35
+ }
36
+ export declare function create_content_gate_route(options?: ContentGateRouteOptions): (request: Request) => Promise<Response>;
37
+ //# sourceMappingURL=content_gate_handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content_gate_handler.d.ts","sourceRoot":"","sources":["../../src/lib/content_gate_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,aAAa,CAAC;AAQrB,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+CD,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,uBAAuB,IAmD9C,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAkDhE"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Server-side content-gate route handler factory.
3
+ *
4
+ * A lightweight LLM gate that decides whether a piece of client text is worth
5
+ * running through document-style validation rules. Used by the thread form to
6
+ * suppress validation noise on conversational client replies ("I don't have
7
+ * those receipts") while still running validation when the client actually
8
+ * submits document-like content.
9
+ *
10
+ * The gate response is never shown to the client — it only controls whether
11
+ * the full validation pipeline fires.
12
+ *
13
+ * Usage:
14
+ * import { create_content_gate_route } from 'hazo_collab_forms/lib';
15
+ * export const POST = create_content_gate_route({ hazo_connect_adapter: getHazoConnect() });
16
+ */
17
+ import 'server-only';
18
+ import { get_config } from './config.js';
19
+ // ============================================================================
20
+ // Helpers
21
+ // ============================================================================
22
+ function substitute_variables(prompt, variables) {
23
+ return prompt.replace(/\{\{(\w+)\}\}/g, (_, key) => variables[key] ?? `{{${key}}}`);
24
+ }
25
+ function parse_gate_response(text) {
26
+ const cleaned = text.trim();
27
+ const try_parse = (candidate) => {
28
+ try {
29
+ const parsed = JSON.parse(candidate);
30
+ return {
31
+ has_content: parsed?.has_content === true,
32
+ reason: typeof parsed?.reason === 'string' ? parsed.reason : '',
33
+ };
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ };
39
+ const direct = try_parse(cleaned);
40
+ if (direct)
41
+ return direct;
42
+ const fence = cleaned.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
43
+ if (fence) {
44
+ const parsed = try_parse(fence[1].trim());
45
+ if (parsed)
46
+ return parsed;
47
+ }
48
+ const braces = cleaned.match(/\{[\s\S]*\}/);
49
+ if (braces) {
50
+ const parsed = try_parse(braces[0]);
51
+ if (parsed)
52
+ return parsed;
53
+ }
54
+ // Fail-closed: if we can't parse, assume no content — keeps AI invisible
55
+ return { has_content: false, reason: 'gate response unparseable; defaulting to false' };
56
+ }
57
+ // ============================================================================
58
+ // Route Handler Factory
59
+ // ============================================================================
60
+ export function create_content_gate_route(options) {
61
+ const sqlite_path = options?.sqlite_path ?? get_config('hazo_connect', 'prompt_sqlite_path') ?? 'data/prompt_library.sqlite';
62
+ const hazo_connect_adapter = options?.hazo_connect_adapter;
63
+ const on_error = options?.on_error ?? ((err, ctx) => console.error(`[content-gate] ${ctx}:`, err));
64
+ const prompt_area = options?.prompt_area ?? 'thread_form';
65
+ const prompt_key = options?.prompt_key ?? 'gate_meaningful_content';
66
+ let llm_api_module = null;
67
+ let init_promise = null;
68
+ async function get_llm_api() {
69
+ if (!llm_api_module) {
70
+ try {
71
+ const module_id = 'hazo_llm_api/server';
72
+ llm_api_module = await import(/* webpackIgnore: true */ module_id);
73
+ }
74
+ catch {
75
+ throw new Error('hazo_llm_api is required for the content gate. Install it: npm install hazo_llm_api');
76
+ }
77
+ }
78
+ return llm_api_module;
79
+ }
80
+ async function ensure_initialized() {
81
+ const api = await get_llm_api();
82
+ if (!api.is_initialized()) {
83
+ if (!init_promise) {
84
+ const init_config = {};
85
+ if (hazo_connect_adapter)
86
+ init_config.hazo_connect_adapter = hazo_connect_adapter;
87
+ else
88
+ init_config.sqlite_path = sqlite_path;
89
+ init_promise = api.initialize_llm_api(init_config).then(() => { });
90
+ }
91
+ await init_promise;
92
+ }
93
+ }
94
+ return async function POST(request) {
95
+ try {
96
+ const body = await request.json();
97
+ const { text } = body;
98
+ if (!text || typeof text !== 'string') {
99
+ return Response.json({ success: false, error: 'text is required' }, { status: 400 });
100
+ }
101
+ await ensure_initialized();
102
+ const api = await get_llm_api();
103
+ const connect = api.get_hazo_connect?.() ?? null;
104
+ if (!connect) {
105
+ return Response.json({ success: false, error: 'hazo_llm_api hazo_connect is not available — cannot load prompts from hazo_prompts' }, { status: 500 });
106
+ }
107
+ const lookup = await connect.get_by_area_key(prompt_area, prompt_key);
108
+ const db_prompt = lookup.success ? lookup.data?.prompt_text_full : undefined;
109
+ if (!db_prompt) {
110
+ return Response.json({ success: false, error: `Prompt ${prompt_area}/${prompt_key} not found in hazo_prompts. Seed it before calling this route (see test-app/scripts/seed-prompts.mjs).` }, { status: 500 });
111
+ }
112
+ const prompt_text = substitute_variables(db_prompt, { text });
113
+ const llm_response = await api.hazo_llm_text_text({ prompt: prompt_text });
114
+ if (!llm_response.success || !llm_response.text) {
115
+ return Response.json({ success: false, error: llm_response.error ?? 'LLM call failed' }, { status: 500 });
116
+ }
117
+ const { has_content, reason } = parse_gate_response(llm_response.text);
118
+ return Response.json({ success: true, has_content, reason });
119
+ }
120
+ catch (error) {
121
+ on_error(error, 'unhandled error');
122
+ return Response.json({ success: false, error: error instanceof Error ? error.message : 'Unknown error' }, { status: 500 });
123
+ }
124
+ };
125
+ }
126
+ //# sourceMappingURL=content_gate_handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content_gate_handler.js","sourceRoot":"","sources":["../../src/lib/content_gate_handler.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,16 @@ export { DEFAULT_CLARIFICATION_TEMPLATES } from '../config/clarification_templat
15
15
  export { create_fb_form_route } from './fb_form_handler.js';
16
16
  export type { FbFormRouteOptions } from './fb_form_handler.js';
17
17
  export { create_validation_route } from './validation_handler.js';
18
+ export { create_classification_route } from './classification_handler.js';
19
+ export type { ClassificationRouteOptions, ClassificationRequest, ClassificationResponse } from './classification_handler.js';
20
+ export { create_content_gate_route } from './content_gate_handler.js';
21
+ export type { ContentGateRouteOptions, ContentGateRequest, ContentGateResponse } from './content_gate_handler.js';
22
+ export { create_resolution_route, run_resolution, create_llm_commentary_fn } from './resolution_handler.js';
23
+ export type { ResolutionRouteOptions, ResolutionRequestBody, ResolutionInput, ResolutionHandlerOptions, ResolutionResponseFile, CommentaryInput, CommentaryOutput, FileRelevance, RelevanceVerdict, LlmCommentaryFnOptions, } from './resolution_handler.js';
18
24
  export type { ValidationRouteOptions, ValidationRequest, ValidationResponse, ValidationRuleExecution, ValidationRuleResult, ValidationRule, ValidationRuleRecord, PromptCommand, PromptVariable, PromptEditorConfig, } from '../types/validation.js';
19
25
  export { DEFAULT_PROMPT_COMMANDS, DEFAULT_PROMPT_VARIABLES, DEFAULT_PROMPT_EDITOR_CONFIG, } from '../config/validation_rule_commands.js';
26
+ export { compute_coverage_gaps, } from './periodic_coverage_runner.js';
27
+ export type { FilePeriod, ComputeGapsInput, } from './periodic_coverage_runner.js';
28
+ export { resolve_variable, resolve_variable_chain, } from './resolve_variable.js';
29
+ export type { SessionVars, ResolveContext, } from './resolve_variable.js';
20
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAGvH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAGvH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE7H,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAElH,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC5G,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,UAAU,EACV,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAC"}
package/dist/lib/index.js CHANGED
@@ -9,5 +9,10 @@ export { DEFAULT_CLARIFICATION_TEMPLATES } from '../config/clarification_templat
9
9
  // Validation route handler (for server-side use)
10
10
  export { create_fb_form_route } from './fb_form_handler.js';
11
11
  export { create_validation_route } from './validation_handler.js';
12
+ export { create_classification_route } from './classification_handler.js';
13
+ export { create_content_gate_route } from './content_gate_handler.js';
14
+ export { create_resolution_route, run_resolution, create_llm_commentary_fn } from './resolution_handler.js';
12
15
  export { DEFAULT_PROMPT_COMMANDS, DEFAULT_PROMPT_VARIABLES, DEFAULT_PROMPT_EDITOR_CONFIG, } from '../config/validation_rule_commands.js';
16
+ export { compute_coverage_gaps, } from './periodic_coverage_runner.js';
17
+ export { resolve_variable, resolve_variable_chain, } from './resolve_variable.js';
13
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmB3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,iDAAiD;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAalE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmB3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,iDAAiD;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAyB5G,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Pure deterministic computation of coverage gaps for periodic_coverage validation rules.
3
+ * No external dependencies, no I/O. Given expected period bounds and a list of file periods,
4
+ * returns the gaps where no file claims coverage.
5
+ */
6
+ import type { Cadence, Alignment, ValidationGap } from '../types/validation.js';
7
+ /** A file's claimed period (extracted from per-file validation results) */
8
+ export interface FilePeriod {
9
+ id: string;
10
+ period_start: string | null;
11
+ period_end: string | null;
12
+ }
13
+ export interface ComputeGapsInput {
14
+ files: FilePeriod[];
15
+ /** Resolved expected start (ISO YYYY-MM-DD) */
16
+ expected_start: string;
17
+ /** Resolved expected end (ISO YYYY-MM-DD) */
18
+ expected_end: string;
19
+ cadence: Cadence;
20
+ alignment: Alignment;
21
+ }
22
+ /** Compute coverage gaps. Returns gaps in chronological order. Empty array = full coverage. */
23
+ export declare function compute_coverage_gaps(input: ComputeGapsInput): ValidationGap[];
24
+ //# sourceMappingURL=periodic_coverage_runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periodic_coverage_runner.d.ts","sourceRoot":"","sources":["../../src/lib/periodic_coverage_runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEhF,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAc9E"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Pure deterministic computation of coverage gaps for periodic_coverage validation rules.
3
+ * No external dependencies, no I/O. Given expected period bounds and a list of file periods,
4
+ * returns the gaps where no file claims coverage.
5
+ */
6
+ /** Compute coverage gaps. Returns gaps in chronological order. Empty array = full coverage. */
7
+ export function compute_coverage_gaps(input) {
8
+ const expected_periods = enumerate_expected_periods(input.expected_start, input.expected_end, input.cadence, input.alignment);
9
+ const gaps = [];
10
+ for (const expected of expected_periods) {
11
+ if (!is_period_covered(expected, input.files)) {
12
+ gaps.push(expected);
13
+ }
14
+ }
15
+ return gaps;
16
+ }
17
+ function enumerate_expected_periods(start, end, cadence, alignment) {
18
+ const start_date = parse_iso_date(start);
19
+ const end_date = parse_iso_date(end);
20
+ if (start_date > end_date)
21
+ return [];
22
+ if (alignment === 'calendar_aligned' && cadence === 'monthly') {
23
+ return tile_calendar_months(start_date, end_date);
24
+ }
25
+ if (alignment === 'calendar_aligned' && cadence === 'quarterly') {
26
+ return tile_calendar_quarters(start_date, end_date);
27
+ }
28
+ const step_days = cadence_step_days(cadence);
29
+ return tile_flexible(start_date, end_date, step_days);
30
+ }
31
+ function cadence_step_days(cadence) {
32
+ switch (cadence) {
33
+ case 'biweekly':
34
+ case 'fortnightly':
35
+ return 14;
36
+ case 'monthly':
37
+ return 30;
38
+ case 'quarterly':
39
+ return 91;
40
+ }
41
+ }
42
+ function tile_flexible(start, end, step_days) {
43
+ const periods = [];
44
+ // Strict `<` so we don't emit a degenerate single-day cycle when cursor lands
45
+ // exactly on `end`. Example: AU FY (2024-07-01 to 2025-06-30) at 14-day step
46
+ // produces 26 cycles, not 27.
47
+ let cursor = new Date(start);
48
+ while (cursor < end) {
49
+ const next = add_days(cursor, step_days);
50
+ const period_end = new Date(Math.min(next.getTime() - DAY_MS, end.getTime()));
51
+ periods.push({ start: format_iso_date(cursor), end: format_iso_date(period_end) });
52
+ cursor = next;
53
+ }
54
+ return periods;
55
+ }
56
+ function tile_calendar_months(start, end) {
57
+ const periods = [];
58
+ let cursor = new Date(start.getFullYear(), start.getMonth(), 1);
59
+ while (cursor <= end) {
60
+ const month_end = new Date(cursor.getFullYear(), cursor.getMonth() + 1, 0);
61
+ const period_end = month_end > end ? end : month_end;
62
+ const period_start = cursor < start ? start : cursor;
63
+ periods.push({ start: format_iso_date(period_start), end: format_iso_date(period_end) });
64
+ cursor = new Date(cursor.getFullYear(), cursor.getMonth() + 1, 1);
65
+ }
66
+ return periods;
67
+ }
68
+ function tile_calendar_quarters(start, end) {
69
+ const periods = [];
70
+ const quarter_start_month = Math.floor(start.getMonth() / 3) * 3;
71
+ let cursor = new Date(start.getFullYear(), quarter_start_month, 1);
72
+ while (cursor <= end) {
73
+ const quarter_end = new Date(cursor.getFullYear(), cursor.getMonth() + 3, 0);
74
+ const period_end = quarter_end > end ? end : quarter_end;
75
+ const period_start = cursor < start ? start : cursor;
76
+ periods.push({ start: format_iso_date(period_start), end: format_iso_date(period_end) });
77
+ cursor = new Date(cursor.getFullYear(), cursor.getMonth() + 3, 1);
78
+ }
79
+ return periods;
80
+ }
81
+ /**
82
+ * A cycle is "covered" when some file's period_start falls within the cycle's
83
+ * range. Each file claims exactly one cycle — the one its start date lands in.
84
+ *
85
+ * This is stricter than "any overlap": a Jan 15 statement covering Jan 15–28
86
+ * does NOT count as covering the next cycle (Jan 27 – Feb 9) just because the
87
+ * tail of one overlaps the head of the other. That kind of "tail-touch" hides
88
+ * genuinely missing files — e.g. when the Feb 1 statement is missing, the Jan
89
+ * 15 statement's last 2 days would otherwise mask the gap.
90
+ *
91
+ * Edge case: a long file (an annual summary instead of monthly bills) claims
92
+ * the cycle its start date falls in, and only that one. The other 11 cycles
93
+ * register as missing — usually the desired behaviour.
94
+ */
95
+ function is_period_covered(expected, files) {
96
+ const exp_start = parse_iso_date(expected.start);
97
+ const exp_end = parse_iso_date(expected.end);
98
+ return files.some(file => {
99
+ if (!file.period_start)
100
+ return false;
101
+ const f_start = parse_iso_date(file.period_start);
102
+ return f_start >= exp_start && f_start <= exp_end;
103
+ });
104
+ }
105
+ const DAY_MS = 24 * 60 * 60 * 1000;
106
+ function parse_iso_date(s) {
107
+ const matched = s.match(/^(\d{4})-(\d{2})-(\d{2})/);
108
+ if (!matched)
109
+ throw new Error(`Invalid ISO date: ${s}`);
110
+ return new Date(parseInt(matched[1], 10), parseInt(matched[2], 10) - 1, parseInt(matched[3], 10));
111
+ }
112
+ function format_iso_date(d) {
113
+ const yyyy = d.getFullYear();
114
+ const mm = String(d.getMonth() + 1).padStart(2, '0');
115
+ const dd = String(d.getDate()).padStart(2, '0');
116
+ return `${yyyy}-${mm}-${dd}`;
117
+ }
118
+ function add_days(d, days) {
119
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate() + days);
120
+ }
121
+ //# sourceMappingURL=periodic_coverage_runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periodic_coverage_runner.js","sourceRoot":"","sources":["../../src/lib/periodic_coverage_runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Aggregate-level resolver for clarification responses.
3
+ *
4
+ * Step 1 (deterministic, mandatory): sum_match math + date-range check
5
+ * Step 2 (LLM commentary, best-effort): per-file plain-English notes
6
+ *
7
+ * Step 1 is the source of truth. Step 2 enriches with qualitative commentary
8
+ * but never overrides the verdict — if the LLM step fails, file_notes is empty
9
+ * and the deterministic summary still flows through.
10
+ */
11
+ import 'server-only';
12
+ import type { ClarificationExpectation } from '../types/clarification.js';
13
+ import type { ExtractedResponseFields, ResolutionCheck } from '../types/fb_form_data.js';
14
+ export interface ResolutionResponseFile {
15
+ /** hazo_files file ID */
16
+ file_id: string;
17
+ /** Display filename — used in commentary prompts */
18
+ file_name?: string;
19
+ /** MIME type (e.g. 'application/pdf'). Required when sending file_b64. */
20
+ mime_type?: string;
21
+ /** Document type from classification (e.g. 'invoice', 'bank_statement'). */
22
+ document_type?: string;
23
+ /**
24
+ * Plain-language description of the document from classification — e.g.
25
+ * "settlement adjustment sheet for property purchase". Drives both the
26
+ * deterministic content denylist and the LLM's file summary.
27
+ */
28
+ document_nature?: string;
29
+ /** Structured fields pulled by autofill */
30
+ extracted_fields?: ExtractedResponseFields;
31
+ /**
32
+ * Base64-encoded file bytes. When present, the LLM commentary step can
33
+ * inspect the actual document for the relevance check (richer than
34
+ * extracted_fields alone). Optional — falls back to extracted_fields-only
35
+ * relevance assessment when omitted.
36
+ */
37
+ file_b64?: string;
38
+ /** Optional OCR text the commentary step can reference */
39
+ ocr_text?: string;
40
+ }
41
+ /** Per-file relevance verdict from the LLM commentary step. */
42
+ export type RelevanceVerdict = 'matches' | 'mismatch' | 'unclear';
43
+ export interface FileRelevance {
44
+ verdict: RelevanceVerdict;
45
+ reason: string;
46
+ }
47
+ export interface ResolutionInput {
48
+ expectation: ClarificationExpectation;
49
+ response_files: ResolutionResponseFile[];
50
+ }
51
+ export interface ResolutionHandlerOptions {
52
+ /** Tolerance in major units (default 0.05 — five cents). */
53
+ tolerance?: number;
54
+ /** Per-attempt timeout for the LLM commentary step in ms (default 5000). */
55
+ commentary_timeout_ms?: number;
56
+ /** Optional LLM commentary callback. When omitted, file_notes stays empty. */
57
+ commentary_fn?: (input: CommentaryInput) => Promise<CommentaryOutput | null>;
58
+ /** Error sink — defaults to console.error */
59
+ on_error?: (error: unknown, context: string) => void;
60
+ }
61
+ export interface CommentaryInput {
62
+ expectation: ClarificationExpectation;
63
+ files: Array<{
64
+ file_id: string;
65
+ file_name?: string;
66
+ mime_type?: string;
67
+ document_type?: string;
68
+ document_nature?: string;
69
+ extracted_fields?: ExtractedResponseFields;
70
+ /** Base64 bytes when available — gives the LLM access to the document content. */
71
+ file_b64?: string;
72
+ ocr_text?: string;
73
+ }>;
74
+ /** Pre-deterministic verdict so the LLM can frame its commentary around it. */
75
+ verdict: {
76
+ sum_actual: number;
77
+ sum_expected: number;
78
+ delta: number;
79
+ };
80
+ }
81
+ export interface CommentaryOutput {
82
+ file_notes: Record<string, string>;
83
+ /**
84
+ * Per-file relevance verdict — keyed by file_id. The deterministic step
85
+ * uses this to exclude mismatch files from the sum and flag unclear ones.
86
+ * Files missing from this map default to 'matches' (no signal = trust).
87
+ */
88
+ relevance?: Record<string, FileRelevance>;
89
+ overall_note?: string;
90
+ }
91
+ /**
92
+ * Run the two-step resolver.
93
+ *
94
+ * Step 1 — LLM commentary + relevance (best-effort, optional)
95
+ * Step 2 — deterministic math, gated by relevance verdicts
96
+ *
97
+ * Commentary runs first so its per-file relevance can influence which files
98
+ * count toward the sum. When the LLM is unavailable or fails, relevance is
99
+ * empty and the deterministic step runs with type-filter only — preserving
100
+ * the prior behaviour as a graceful fallback.
101
+ */
102
+ export declare function run_resolution(input: ResolutionInput, options?: ResolutionHandlerOptions): Promise<ResolutionCheck>;
103
+ export interface ResolutionRouteOptions extends ResolutionHandlerOptions {
104
+ }
105
+ export interface ResolutionRequestBody {
106
+ expectation: ClarificationExpectation;
107
+ response_files: ResolutionResponseFile[];
108
+ }
109
+ /**
110
+ * Creates a POST route handler that wraps run_resolution. Mirrors the factory
111
+ * pattern used by validation_handler / classification_handler / autofill_handler.
112
+ */
113
+ export declare function create_resolution_route(options?: ResolutionRouteOptions): (request: Request) => Promise<Response>;
114
+ /** Minimal adapter shape — same as classification/validation handlers expect. */
115
+ interface HazoConnectAdapterLike {
116
+ query(builder: unknown, method?: string, body?: unknown): Promise<unknown>;
117
+ rawQuery(endpoint: string, options?: RequestInit): Promise<unknown>;
118
+ getConfig(): Promise<unknown>;
119
+ }
120
+ export interface LlmCommentaryFnOptions {
121
+ /** prompt area in hazo_prompts (e.g. 'thread_form'). */
122
+ prompt_area: string;
123
+ /** prompt key in hazo_prompts (e.g. 'resolve_clarification_relevance'). */
124
+ prompt_key: string;
125
+ /**
126
+ * HazoConnectAdapter from the consuming app — passed to hazo_llm_api so it
127
+ * can fetch the prompt text. Same adapter the classification/validation
128
+ * handlers use.
129
+ */
130
+ hazo_connect_adapter?: HazoConnectAdapterLike;
131
+ /**
132
+ * Path to a SQLite DB for prompt lookup. Used when no adapter is provided.
133
+ * Mirrors the classification handler's fallback.
134
+ */
135
+ sqlite_path?: string;
136
+ /** Error sink — defaults to console.error. */
137
+ on_error?: (err: unknown, ctx: string) => void;
138
+ }
139
+ /**
140
+ * Build a commentary_fn that calls hazo_llm_api with the resolve_clarification_relevance
141
+ * prompt, attaching every inspectable response file inline. Wire this into
142
+ * `create_resolution_route({ commentary_fn: create_llm_commentary_fn(...) })`.
143
+ *
144
+ * The returned function is best-effort: any failure (LLM error, JSON parse
145
+ * fail, missing prompt) returns `null` so the resolver falls back to the
146
+ * deterministic-only verdict.
147
+ */
148
+ export declare function create_llm_commentary_fn(options: LlmCommentaryFnOptions): (input: CommentaryInput) => Promise<CommentaryOutput | null>;
149
+ export {};
150
+ //# sourceMappingURL=resolution_handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution_handler.d.ts","sourceRoot":"","sources":["../../src/lib/resolution_handler.ts"],"names":[],"mappings":"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"}