@qoretechnologies/reqraft 0.8.12-canary.20260609082134.0 → 0.10.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 (591) hide show
  1. package/.tasks/EXPRESSION_BUILDER_REPORT.md +149 -0
  2. package/.tasks/FIELD_STACK_REPORT.md +234 -0
  3. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +558 -0
  4. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +197 -0
  5. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +95 -0
  6. package/.tasks/FORM_FIELD_EXTRAS.md +72 -0
  7. package/.tasks/INDEX.md +107 -0
  8. package/.tasks/LSP_SHARED_CONNECTION.md +75 -0
  9. package/.tasks/QONSOLE_ASSIST_FEATURES.md +306 -0
  10. package/.tasks/RENDER_EXPRESSION_LSP.md +159 -0
  11. package/.tasks/REQRAFT_AUTO_FIELD.md +176 -0
  12. package/.tasks/SCHEMA_DEFINITION_FIELD.md +250 -0
  13. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +340 -0
  14. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +299 -0
  15. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +280 -0
  16. package/.tasks/SMART_EDITOR_UX_POLISH.md +383 -0
  17. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +246 -0
  18. package/README.md +129 -0
  19. package/design/COMPACT_INFO_DISPLAY.md +87 -0
  20. package/design/COMPACT_PARITY.md +85 -0
  21. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +81 -0
  22. package/design/FORM_ENGINE_COMPACT.md +113 -12
  23. package/design/FORM_ENGINE_EXPRESSIONS.md +147 -0
  24. package/design/FORM_ENGINE_FIELD_MIGRATION.md +259 -0
  25. package/design/IDE_INTEGRATION.md +39 -0
  26. package/design/RENDER_EXPRESSION_TRANSPORT.md +90 -0
  27. package/design/SMART_EDITOR_UX.md +417 -0
  28. package/dist/components/dpqlEditor/DpqlEditor.d.ts +5 -0
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -0
  30. package/dist/components/dpqlEditor/DpqlEditor.js +206 -0
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -0
  32. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +40 -0
  33. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlHelpers.js +244 -0
  35. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlInserter.d.ts +13 -0
  37. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -0
  38. package/dist/components/dpqlEditor/dpqlInserter.js +121 -0
  39. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -0
  40. package/dist/components/dpqlEditor/dpqlTags.d.ts +39 -0
  41. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -0
  42. package/dist/components/dpqlEditor/dpqlTags.js +84 -0
  43. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -0
  44. package/dist/components/dpqlEditor/index.d.ts +8 -0
  45. package/dist/components/dpqlEditor/index.d.ts.map +1 -0
  46. package/dist/components/dpqlEditor/index.js +27 -0
  47. package/dist/components/dpqlEditor/index.js.map +1 -0
  48. package/dist/components/dpqlEditor/types.d.ts +166 -0
  49. package/dist/components/dpqlEditor/types.d.ts.map +1 -0
  50. package/dist/components/dpqlEditor/types.js +7 -0
  51. package/dist/components/dpqlEditor/types.js.map +1 -0
  52. package/dist/components/dpqlEditor/useDpqlSession.d.ts +60 -0
  53. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -0
  54. package/dist/components/dpqlEditor/useDpqlSession.js +386 -0
  55. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -0
  56. package/dist/components/form/engine/CompactRow.d.ts +11 -0
  57. package/dist/components/form/engine/CompactRow.d.ts.map +1 -0
  58. package/dist/components/form/engine/CompactRow.js +605 -0
  59. package/dist/components/form/engine/CompactRow.js.map +1 -0
  60. package/dist/components/form/engine/CompactToolbar.d.ts +12 -0
  61. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -0
  62. package/dist/components/form/engine/CompactToolbar.js +155 -0
  63. package/dist/components/form/engine/CompactToolbar.js.map +1 -0
  64. package/dist/components/form/engine/FormEngine.d.ts +66 -25
  65. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  66. package/dist/components/form/engine/FormEngine.js +728 -316
  67. package/dist/components/form/engine/FormEngine.js.map +1 -1
  68. package/dist/components/form/engine/OptionFieldMessages.d.ts +7 -0
  69. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  70. package/dist/components/form/engine/OptionFieldMessages.js +43 -40
  71. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  72. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts +73 -0
  73. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts.map +1 -0
  74. package/dist/components/form/engine/__fixtures__/basicFormOptions.js +317 -0
  75. package/dist/components/form/engine/__fixtures__/basicFormOptions.js.map +1 -0
  76. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts +41 -0
  77. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts.map +1 -0
  78. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js +45 -0
  79. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js.map +1 -0
  80. package/dist/components/form/engine/_structuredData/StructuredDataView.d.ts +19 -0
  81. package/dist/components/form/engine/_structuredData/StructuredDataView.d.ts.map +1 -0
  82. package/dist/components/form/engine/_structuredData/StructuredDataView.js +28 -0
  83. package/dist/components/form/engine/_structuredData/StructuredDataView.js.map +1 -0
  84. package/dist/components/form/engine/_structuredData/structuredData.d.ts +19 -0
  85. package/dist/components/form/engine/_structuredData/structuredData.d.ts.map +1 -0
  86. package/dist/components/form/engine/_structuredData/structuredData.js +115 -0
  87. package/dist/components/form/engine/_structuredData/structuredData.js.map +1 -0
  88. package/dist/components/form/engine/compactRowContext.d.ts +61 -0
  89. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -0
  90. package/dist/components/form/engine/compactRowContext.js +6 -0
  91. package/dist/components/form/engine/compactRowContext.js.map +1 -0
  92. package/dist/components/form/engine/compactRowStyles.d.ts +33 -0
  93. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -0
  94. package/dist/components/form/engine/compactRowStyles.js +181 -0
  95. package/dist/components/form/engine/compactRowStyles.js.map +1 -0
  96. package/dist/components/form/engine/compactToolbarContext.d.ts +51 -0
  97. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -0
  98. package/dist/components/form/engine/compactToolbarContext.js +6 -0
  99. package/dist/components/form/engine/compactToolbarContext.js.map +1 -0
  100. package/dist/components/form/engine/readFirst.d.ts +43 -28
  101. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  102. package/dist/components/form/engine/readFirst.js +252 -59
  103. package/dist/components/form/engine/readFirst.js.map +1 -1
  104. package/dist/components/form/expressions/ExpressionField.d.ts +34 -0
  105. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -0
  106. package/dist/components/form/expressions/ExpressionField.js +207 -0
  107. package/dist/components/form/expressions/ExpressionField.js.map +1 -0
  108. package/dist/components/form/expressions/builder/argumentDetail.d.ts +6 -0
  109. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -0
  110. package/dist/components/form/expressions/builder/argumentDetail.js +21 -0
  111. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -0
  112. package/dist/components/form/expressions/builder/argumentLabel.d.ts +10 -0
  113. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -0
  114. package/dist/components/form/expressions/builder/argumentLabel.js +71 -0
  115. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -0
  116. package/dist/components/form/expressions/builder/argumentWrapper.d.ts +15 -0
  117. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -0
  118. package/dist/components/form/expressions/builder/argumentWrapper.js +16 -0
  119. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -0
  120. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +11 -0
  121. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -0
  122. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +88 -0
  123. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -0
  124. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +8 -0
  125. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -0
  126. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +40 -0
  127. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -0
  128. package/dist/components/form/expressions/builder/index.d.ts +43 -0
  129. package/dist/components/form/expressions/builder/index.d.ts.map +1 -0
  130. package/dist/components/form/expressions/builder/index.js +698 -0
  131. package/dist/components/form/expressions/builder/index.js.map +1 -0
  132. package/dist/components/form/expressions/builder/item.d.ts +11 -0
  133. package/dist/components/form/expressions/builder/item.d.ts.map +1 -0
  134. package/dist/components/form/expressions/builder/item.js +81 -0
  135. package/dist/components/form/expressions/builder/item.js.map +1 -0
  136. package/dist/components/form/expressions/builder/renderTemplate.d.ts +7 -0
  137. package/dist/components/form/expressions/builder/renderTemplate.d.ts.map +1 -0
  138. package/dist/components/form/expressions/builder/renderTemplate.js +81 -0
  139. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -0
  140. package/dist/components/form/expressions/dpqlMockLsp.d.ts +3 -0
  141. package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +1 -0
  142. package/dist/components/form/expressions/dpqlMockLsp.js +91 -0
  143. package/dist/components/form/expressions/dpqlMockLsp.js.map +1 -0
  144. package/dist/components/form/expressions/mockExpressions.d.ts +3 -0
  145. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -0
  146. package/dist/components/form/expressions/mockExpressions.js +286 -0
  147. package/dist/components/form/expressions/mockExpressions.js.map +1 -0
  148. package/dist/components/form/expressions/renderExpressionToText.d.ts +7 -0
  149. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -0
  150. package/dist/components/form/expressions/renderExpressionToText.js +46 -0
  151. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -0
  152. package/dist/components/form/expressions/types.d.ts +74 -0
  153. package/dist/components/form/expressions/types.d.ts.map +1 -0
  154. package/dist/components/form/expressions/types.js +9 -0
  155. package/dist/components/form/expressions/types.js.map +1 -0
  156. package/dist/components/form/expressions/useExpressions.d.ts +21 -0
  157. package/dist/components/form/expressions/useExpressions.d.ts.map +1 -0
  158. package/dist/components/form/expressions/useExpressions.js +85 -0
  159. package/dist/components/form/expressions/useExpressions.js.map +1 -0
  160. package/dist/components/form/expressions/useRenderExpression.d.ts +35 -0
  161. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -0
  162. package/dist/components/form/expressions/useRenderExpression.js +281 -0
  163. package/dist/components/form/expressions/useRenderExpression.js.map +1 -0
  164. package/dist/components/form/fields/Field.d.ts +1 -1
  165. package/dist/components/form/fields/Field.d.ts.map +1 -1
  166. package/dist/components/form/fields/Field.js +37 -2
  167. package/dist/components/form/fields/Field.js.map +1 -1
  168. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +23 -0
  169. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -0
  170. package/dist/components/form/fields/allowed-values/AllowedValues.js +115 -0
  171. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -0
  172. package/dist/components/form/fields/array/ArrayAuto.d.ts +12 -0
  173. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -0
  174. package/dist/components/form/fields/array/ArrayAuto.js +123 -0
  175. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -0
  176. package/dist/components/form/fields/auto/AutoFormField.d.ts +62 -0
  177. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -0
  178. package/dist/components/form/fields/auto/AutoFormField.js +524 -0
  179. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -0
  180. package/dist/components/form/fields/byte-size/ByteSize.d.ts +21 -0
  181. package/dist/components/form/fields/byte-size/ByteSize.d.ts.map +1 -0
  182. package/dist/components/form/fields/byte-size/ByteSize.js +52 -0
  183. package/dist/components/form/fields/byte-size/ByteSize.js.map +1 -0
  184. package/dist/components/form/fields/cron/Cron.d.ts +3 -1
  185. package/dist/components/form/fields/cron/Cron.d.ts.map +1 -1
  186. package/dist/components/form/fields/cron/Cron.js +7 -7
  187. package/dist/components/form/fields/cron/Cron.js.map +1 -1
  188. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts +8 -2
  189. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  190. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +35 -8
  191. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  192. package/dist/components/form/fields/number/Number.d.ts +4 -1
  193. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  194. package/dist/components/form/fields/number/Number.js +10 -1
  195. package/dist/components/form/fields/number/Number.js.map +1 -1
  196. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  197. package/dist/components/form/fields/rich-text/RichText.js +23 -15
  198. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  199. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts +28 -0
  200. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -0
  201. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +167 -0
  202. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -0
  203. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts +43 -0
  204. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -0
  205. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +390 -0
  206. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -0
  207. package/dist/components/form/fields/schema-definition/Hint.d.ts +11 -0
  208. package/dist/components/form/fields/schema-definition/Hint.d.ts.map +1 -0
  209. package/dist/components/form/fields/schema-definition/Hint.js +16 -0
  210. package/dist/components/form/fields/schema-definition/Hint.js.map +1 -0
  211. package/dist/components/form/fields/schema-definition/InlineValidationBanner.d.ts +16 -0
  212. package/dist/components/form/fields/schema-definition/InlineValidationBanner.d.ts.map +1 -0
  213. package/dist/components/form/fields/schema-definition/InlineValidationBanner.js +39 -0
  214. package/dist/components/form/fields/schema-definition/InlineValidationBanner.js.map +1 -0
  215. package/dist/components/form/fields/schema-definition/Loader.d.ts +8 -0
  216. package/dist/components/form/fields/schema-definition/Loader.d.ts.map +1 -0
  217. package/dist/components/form/fields/schema-definition/Loader.js +37 -0
  218. package/dist/components/form/fields/schema-definition/Loader.js.map +1 -0
  219. package/dist/components/form/fields/schema-definition/MigrationsTab.d.ts +13 -0
  220. package/dist/components/form/fields/schema-definition/MigrationsTab.d.ts.map +1 -0
  221. package/dist/components/form/fields/schema-definition/MigrationsTab.js +111 -0
  222. package/dist/components/form/fields/schema-definition/MigrationsTab.js.map +1 -0
  223. package/dist/components/form/fields/schema-definition/TableEditor.d.ts +17 -0
  224. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -0
  225. package/dist/components/form/fields/schema-definition/TableEditor.js +73 -0
  226. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -0
  227. package/dist/components/form/fields/schema-definition/TablesTab.d.ts +11 -0
  228. package/dist/components/form/fields/schema-definition/TablesTab.d.ts.map +1 -0
  229. package/dist/components/form/fields/schema-definition/TablesTab.js +63 -0
  230. package/dist/components/form/fields/schema-definition/TablesTab.js.map +1 -0
  231. package/dist/components/form/fields/schema-definition/catalog.d.ts +67 -0
  232. package/dist/components/form/fields/schema-definition/catalog.d.ts.map +1 -0
  233. package/dist/components/form/fields/schema-definition/catalog.js +215 -0
  234. package/dist/components/form/fields/schema-definition/catalog.js.map +1 -0
  235. package/dist/components/form/fields/schema-definition/helpers.d.ts +28 -0
  236. package/dist/components/form/fields/schema-definition/helpers.d.ts.map +1 -0
  237. package/dist/components/form/fields/schema-definition/helpers.js +115 -0
  238. package/dist/components/form/fields/schema-definition/helpers.js.map +1 -0
  239. package/dist/components/form/fields/schema-definition/index.d.ts +10 -0
  240. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -0
  241. package/dist/components/form/fields/schema-definition/index.js +200 -0
  242. package/dist/components/form/fields/schema-definition/index.js.map +1 -0
  243. package/dist/components/form/fields/schema-definition/mockCatalog.d.ts +17 -0
  244. package/dist/components/form/fields/schema-definition/mockCatalog.d.ts.map +1 -0
  245. package/dist/components/form/fields/schema-definition/mockCatalog.js +255 -0
  246. package/dist/components/form/fields/schema-definition/mockCatalog.js.map +1 -0
  247. package/dist/components/form/fields/schema-definition/mockDefinition.d.ts +9 -0
  248. package/dist/components/form/fields/schema-definition/mockDefinition.d.ts.map +1 -0
  249. package/dist/components/form/fields/schema-definition/mockDefinition.js +107 -0
  250. package/dist/components/form/fields/schema-definition/mockDefinition.js.map +1 -0
  251. package/dist/components/form/fields/schema-definition/referenceSuggestions.d.ts +70 -0
  252. package/dist/components/form/fields/schema-definition/referenceSuggestions.d.ts.map +1 -0
  253. package/dist/components/form/fields/schema-definition/referenceSuggestions.js +81 -0
  254. package/dist/components/form/fields/schema-definition/referenceSuggestions.js.map +1 -0
  255. package/dist/components/form/fields/schema-definition/starterTemplate.d.ts +19 -0
  256. package/dist/components/form/fields/schema-definition/starterTemplate.d.ts.map +1 -0
  257. package/dist/components/form/fields/schema-definition/starterTemplate.js +59 -0
  258. package/dist/components/form/fields/schema-definition/starterTemplate.js.map +1 -0
  259. package/dist/components/form/fields/schema-definition/types.d.ts +167 -0
  260. package/dist/components/form/fields/schema-definition/types.d.ts.map +1 -0
  261. package/dist/components/form/fields/schema-definition/types.js +17 -0
  262. package/dist/components/form/fields/schema-definition/types.js.map +1 -0
  263. package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.d.ts +17 -0
  264. package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.d.ts.map +1 -0
  265. package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.js +37 -0
  266. package/dist/components/form/fields/schema-definition/useSchemaOptionCatalog.js.map +1 -0
  267. package/dist/components/form/fields/select/Select.d.ts +2 -1
  268. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  269. package/dist/components/form/fields/select/Select.js +32 -18
  270. package/dist/components/form/fields/select/Select.js.map +1 -1
  271. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +20 -0
  272. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -0
  273. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +34 -0
  274. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -0
  275. package/dist/components/form/fields/template/TemplateField.d.ts +51 -24
  276. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  277. package/dist/components/form/fields/template/TemplateField.js +234 -97
  278. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  279. package/dist/components/form/fields/url/Url.d.ts +12 -0
  280. package/dist/components/form/fields/url/Url.d.ts.map +1 -0
  281. package/dist/components/form/fields/url/Url.js +71 -0
  282. package/dist/components/form/fields/url/Url.js.map +1 -0
  283. package/dist/components/form/index.d.ts +11 -0
  284. package/dist/components/form/index.d.ts.map +1 -1
  285. package/dist/components/form/index.js +15 -0
  286. package/dist/components/form/index.js.map +1 -1
  287. package/dist/components/qonsoleSmartInput/QonsoleSmartInput.d.ts +5 -0
  288. package/dist/components/qonsoleSmartInput/QonsoleSmartInput.d.ts.map +1 -0
  289. package/dist/components/qonsoleSmartInput/QonsoleSmartInput.js +62 -0
  290. package/dist/components/qonsoleSmartInput/QonsoleSmartInput.js.map +1 -0
  291. package/dist/components/qonsoleSmartInput/index.d.ts +5 -0
  292. package/dist/components/qonsoleSmartInput/index.d.ts.map +1 -0
  293. package/dist/components/qonsoleSmartInput/index.js +10 -0
  294. package/dist/components/qonsoleSmartInput/index.js.map +1 -0
  295. package/dist/components/qonsoleSmartInput/qonsoleInserter.d.ts +7 -0
  296. package/dist/components/qonsoleSmartInput/qonsoleInserter.d.ts.map +1 -0
  297. package/dist/components/qonsoleSmartInput/qonsoleInserter.js +70 -0
  298. package/dist/components/qonsoleSmartInput/qonsoleInserter.js.map +1 -0
  299. package/dist/components/qonsoleSmartInput/types.d.ts +123 -0
  300. package/dist/components/qonsoleSmartInput/types.d.ts.map +1 -0
  301. package/dist/components/qonsoleSmartInput/types.js +6 -0
  302. package/dist/components/qonsoleSmartInput/types.js.map +1 -0
  303. package/dist/components/qonsoleSmartInput/useQonsoleSession.d.ts +35 -0
  304. package/dist/components/qonsoleSmartInput/useQonsoleSession.d.ts.map +1 -0
  305. package/dist/components/qonsoleSmartInput/useQonsoleSession.js +150 -0
  306. package/dist/components/qonsoleSmartInput/useQonsoleSession.js.map +1 -0
  307. package/dist/components/smartEditor/MarkdownDoc.d.ts +16 -0
  308. package/dist/components/smartEditor/MarkdownDoc.d.ts.map +1 -0
  309. package/dist/components/smartEditor/MarkdownDoc.js +53 -0
  310. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -0
  311. package/dist/components/smartEditor/SmartEditor.d.ts +5 -0
  312. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -0
  313. package/dist/components/smartEditor/SmartEditor.js +493 -0
  314. package/dist/components/smartEditor/SmartEditor.js.map +1 -0
  315. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +55 -0
  316. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +1 -0
  317. package/dist/components/smartEditor/__fixtures__/mockLspServer.js +126 -0
  318. package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +1 -0
  319. package/dist/components/smartEditor/helpers.d.ts +64 -0
  320. package/dist/components/smartEditor/helpers.d.ts.map +1 -0
  321. package/dist/components/smartEditor/helpers.js +207 -0
  322. package/dist/components/smartEditor/helpers.js.map +1 -0
  323. package/dist/components/smartEditor/index.d.ts +8 -0
  324. package/dist/components/smartEditor/index.d.ts.map +1 -0
  325. package/dist/components/smartEditor/index.js +20 -0
  326. package/dist/components/smartEditor/index.js.map +1 -0
  327. package/dist/components/smartEditor/styling.d.ts +20 -0
  328. package/dist/components/smartEditor/styling.d.ts.map +1 -0
  329. package/dist/components/smartEditor/styling.js +44 -0
  330. package/dist/components/smartEditor/styling.js.map +1 -0
  331. package/dist/components/smartEditor/types.d.ts +172 -0
  332. package/dist/components/smartEditor/types.d.ts.map +1 -0
  333. package/dist/components/smartEditor/types.js +5 -0
  334. package/dist/components/smartEditor/types.js.map +1 -0
  335. package/dist/components/smartEditor/useLspAutocomplete.d.ts +62 -0
  336. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -0
  337. package/dist/components/smartEditor/useLspAutocomplete.js +625 -0
  338. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -0
  339. package/dist/components/smartEditor/useLspDiagnosticDecorations.d.ts +42 -0
  340. package/dist/components/smartEditor/useLspDiagnosticDecorations.d.ts.map +1 -0
  341. package/dist/components/smartEditor/useLspDiagnosticDecorations.js +102 -0
  342. package/dist/components/smartEditor/useLspDiagnosticDecorations.js.map +1 -0
  343. package/dist/components/smartEditor/useLspHover.d.ts +44 -0
  344. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -0
  345. package/dist/components/smartEditor/useLspHover.js +224 -0
  346. package/dist/components/smartEditor/useLspHover.js.map +1 -0
  347. package/dist/components/smartEditor/useLspSemanticTokens.d.ts +45 -0
  348. package/dist/components/smartEditor/useLspSemanticTokens.d.ts.map +1 -0
  349. package/dist/components/smartEditor/useLspSemanticTokens.js +293 -0
  350. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -0
  351. package/dist/components/smartEditor/useLspSession.d.ts +74 -0
  352. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -0
  353. package/dist/components/smartEditor/useLspSession.js +168 -0
  354. package/dist/components/smartEditor/useLspSession.js.map +1 -0
  355. package/dist/components/smartEditor/useLspSignatureHelp.d.ts +26 -0
  356. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -0
  357. package/dist/components/smartEditor/useLspSignatureHelp.js +192 -0
  358. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -0
  359. package/dist/helpers/common.d.ts +18 -0
  360. package/dist/helpers/common.d.ts.map +1 -1
  361. package/dist/helpers/common.js +86 -2
  362. package/dist/helpers/common.js.map +1 -1
  363. package/dist/helpers/expressions.d.ts +6 -0
  364. package/dist/helpers/expressions.d.ts.map +1 -0
  365. package/dist/helpers/expressions.js +79 -0
  366. package/dist/helpers/expressions.js.map +1 -0
  367. package/dist/helpers/templates.d.ts +32 -0
  368. package/dist/helpers/templates.d.ts.map +1 -1
  369. package/dist/helpers/templates.js +117 -18
  370. package/dist/helpers/templates.js.map +1 -1
  371. package/dist/helpers/validations.d.ts +4 -0
  372. package/dist/helpers/validations.d.ts.map +1 -1
  373. package/dist/helpers/validations.js +126 -7
  374. package/dist/helpers/validations.js.map +1 -1
  375. package/dist/hooks/useTemplates.d.ts +6 -3
  376. package/dist/hooks/useTemplates.d.ts.map +1 -1
  377. package/dist/hooks/useTemplates.js +114 -10
  378. package/dist/hooks/useTemplates.js.map +1 -1
  379. package/dist/index.d.ts +6 -0
  380. package/dist/index.d.ts.map +1 -1
  381. package/dist/index.js +6 -1
  382. package/dist/index.js.map +1 -1
  383. package/dist/stories/Data/fileFieldArgSchema.json +86 -0
  384. package/dist/stories/Tests/utils.d.ts.map +1 -1
  385. package/dist/stories/Tests/utils.js +16 -7
  386. package/dist/stories/Tests/utils.js.map +1 -1
  387. package/dist/types/Form.d.ts +2 -2
  388. package/dist/types/Form.d.ts.map +1 -1
  389. package/dist/utils/lspClient.d.ts +150 -0
  390. package/dist/utils/lspClient.d.ts.map +1 -0
  391. package/dist/utils/lspClient.js +645 -0
  392. package/dist/utils/lspClient.js.map +1 -0
  393. package/dist/utils/lspClient.types.d.ts +198 -0
  394. package/dist/utils/lspClient.types.d.ts.map +1 -0
  395. package/dist/utils/lspClient.types.js +7 -0
  396. package/dist/utils/lspClient.types.js.map +1 -0
  397. package/package.json +8 -4
  398. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +1227 -0
  399. package/src/components/dpqlEditor/DpqlEditor.tsx +214 -0
  400. package/src/components/dpqlEditor/dpqlHelpers.ts +261 -0
  401. package/src/components/dpqlEditor/dpqlInserter.ts +121 -0
  402. package/src/components/dpqlEditor/dpqlTags.ts +101 -0
  403. package/src/components/dpqlEditor/index.ts +36 -0
  404. package/src/components/dpqlEditor/types.ts +157 -0
  405. package/src/components/dpqlEditor/useDpqlSession.ts +386 -0
  406. package/src/components/form/engine/CompactRow.tsx +1219 -0
  407. package/src/components/form/engine/CompactToolbar.tsx +268 -0
  408. package/src/components/form/engine/FormEngine.stories.tsx +2343 -479
  409. package/src/components/form/engine/FormEngine.tsx +1114 -740
  410. package/src/components/form/engine/FormEngineRemote.stories.tsx +302 -0
  411. package/src/components/form/engine/OptionFieldMessages.tsx +70 -59
  412. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +309 -0
  413. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +45 -0
  414. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +77 -0
  415. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +75 -0
  416. package/src/components/form/engine/_structuredData/structuredData.ts +125 -0
  417. package/src/components/form/engine/compactRowContext.ts +92 -0
  418. package/src/components/form/engine/compactRowStyles.ts +531 -0
  419. package/src/components/form/engine/compactToolbarContext.ts +60 -0
  420. package/src/components/form/engine/readFirst.ts +299 -59
  421. package/src/components/form/expressions/ExpressionField.stories.tsx +440 -0
  422. package/src/components/form/expressions/ExpressionField.tsx +260 -0
  423. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +672 -0
  424. package/src/components/form/expressions/builder/argumentDetail.tsx +17 -0
  425. package/src/components/form/expressions/builder/argumentLabel.tsx +140 -0
  426. package/src/components/form/expressions/builder/argumentWrapper.tsx +87 -0
  427. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +120 -0
  428. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +69 -0
  429. package/src/components/form/expressions/builder/index.tsx +1265 -0
  430. package/src/components/form/expressions/builder/item.tsx +89 -0
  431. package/src/components/form/expressions/builder/renderTemplate.tsx +75 -0
  432. package/src/components/form/expressions/dpqlMockLsp.ts +100 -0
  433. package/src/components/form/expressions/mockExpressions.ts +295 -0
  434. package/src/components/form/expressions/renderExpressionToText.ts +47 -0
  435. package/src/components/form/expressions/types.ts +85 -0
  436. package/src/components/form/expressions/useExpressions.ts +94 -0
  437. package/src/components/form/expressions/useRenderExpression.ts +249 -0
  438. package/src/components/form/fields/Field.stories.tsx +103 -0
  439. package/src/components/form/fields/Field.tsx +91 -2
  440. package/src/components/form/fields/allowed-values/AllowedValues.tsx +194 -0
  441. package/src/components/form/fields/array/ArrayAuto.tsx +191 -0
  442. package/src/components/form/fields/auto/AutoFormField.stories.tsx +340 -0
  443. package/src/components/form/fields/auto/AutoFormField.tsx +890 -0
  444. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +63 -0
  445. package/src/components/form/fields/byte-size/ByteSize.tsx +58 -0
  446. package/src/components/form/fields/cron/Cron.tsx +7 -4
  447. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +38 -14
  448. package/src/components/form/fields/number/Number.tsx +33 -1
  449. package/src/components/form/fields/rich-text/RichText.tsx +25 -7
  450. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +242 -0
  451. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +758 -0
  452. package/src/components/form/fields/schema-definition/Hint.tsx +22 -0
  453. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +138 -0
  454. package/src/components/form/fields/schema-definition/Loader.tsx +20 -0
  455. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +187 -0
  456. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +209 -0
  457. package/src/components/form/fields/schema-definition/TableEditor.tsx +155 -0
  458. package/src/components/form/fields/schema-definition/TablesTab.tsx +138 -0
  459. package/src/components/form/fields/schema-definition/catalog.ts +237 -0
  460. package/src/components/form/fields/schema-definition/helpers.ts +99 -0
  461. package/src/components/form/fields/schema-definition/index.tsx +418 -0
  462. package/src/components/form/fields/schema-definition/mockCatalog.ts +325 -0
  463. package/src/components/form/fields/schema-definition/mockDefinition.ts +111 -0
  464. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +152 -0
  465. package/src/components/form/fields/schema-definition/starterTemplate.ts +68 -0
  466. package/src/components/form/fields/schema-definition/types.ts +185 -0
  467. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +49 -0
  468. package/src/components/form/fields/select/Select.tsx +50 -16
  469. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +41 -0
  470. package/src/components/form/fields/template/TemplateField.stories.tsx +494 -0
  471. package/src/components/form/fields/template/TemplateField.tsx +405 -135
  472. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +147 -0
  473. package/src/components/form/fields/template/__fixtures__/templates.json +83 -0
  474. package/src/components/form/fields/url/Url.stories.tsx +70 -0
  475. package/src/components/form/fields/url/Url.tsx +85 -0
  476. package/src/components/form/index.tsx +16 -0
  477. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +751 -0
  478. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +105 -0
  479. package/src/components/qonsoleSmartInput/index.ts +16 -0
  480. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +77 -0
  481. package/src/components/qonsoleSmartInput/types.ts +133 -0
  482. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +124 -0
  483. package/src/components/smartEditor/MarkdownDoc.tsx +190 -0
  484. package/src/components/smartEditor/SmartEditor.stories.tsx +443 -0
  485. package/src/components/smartEditor/SmartEditor.tsx +752 -0
  486. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +156 -0
  487. package/src/components/smartEditor/helpers.ts +217 -0
  488. package/src/components/smartEditor/index.ts +35 -0
  489. package/src/components/smartEditor/styling.ts +45 -0
  490. package/src/components/smartEditor/types.ts +211 -0
  491. package/src/components/smartEditor/useLspAutocomplete.ts +731 -0
  492. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +125 -0
  493. package/src/components/smartEditor/useLspHover.ts +230 -0
  494. package/src/components/smartEditor/useLspSemanticTokens.ts +298 -0
  495. package/src/components/smartEditor/useLspSession.ts +205 -0
  496. package/src/components/smartEditor/useLspSignatureHelp.ts +198 -0
  497. package/src/helpers/common.ts +103 -1
  498. package/src/helpers/expressions.ts +88 -0
  499. package/src/helpers/templates.ts +199 -16
  500. package/src/helpers/validations.ts +150 -1
  501. package/src/hooks/useTemplates.ts +65 -10
  502. package/src/index.tsx +20 -0
  503. package/src/stories/Tests/utils.ts +17 -7
  504. package/src/types/Form.ts +11 -3
  505. package/src/utils/lspClient.ts +654 -0
  506. package/src/utils/lspClient.types.ts +211 -0
  507. package/storybook-static/122.5aa94755.iframe.bundle.js +0 -1
  508. package/storybook-static/227.c84ea265.iframe.bundle.js +0 -1
  509. package/storybook-static/266.56591e2d.iframe.bundle.js +0 -95
  510. package/storybook-static/266.56591e2d.iframe.bundle.js.LICENSE.txt +0 -16
  511. package/storybook-static/266.56591e2d.iframe.bundle.js.map +0 -1
  512. package/storybook-static/280.20fd006a.iframe.bundle.js +0 -405
  513. package/storybook-static/280.20fd006a.iframe.bundle.js.LICENSE.txt +0 -145
  514. package/storybook-static/280.20fd006a.iframe.bundle.js.map +0 -1
  515. package/storybook-static/364.9ae230ee.iframe.bundle.js +0 -1
  516. package/storybook-static/644.b37c323a.iframe.bundle.js +0 -1
  517. package/storybook-static/648.6384ef03.iframe.bundle.js +0 -1
  518. package/storybook-static/735.a09ba9c6.iframe.bundle.js +0 -1
  519. package/storybook-static/components-form-engine-FormEngine-stories.cf6666c4.iframe.bundle.js +0 -1
  520. package/storybook-static/components-form-fields-array-ArrayAutoField-stories.8715e1fd.iframe.bundle.js +0 -1
  521. package/storybook-static/components-form-fields-boolean-Boolean-stories.332a6cd4.iframe.bundle.js +0 -1
  522. package/storybook-static/components-form-fields-color-Color-stories.0941f323.iframe.bundle.js +0 -1
  523. package/storybook-static/components-form-fields-cron-Cron-stories.22f8fed8.iframe.bundle.js +0 -1
  524. package/storybook-static/components-form-fields-date-Date-stories.b8eb9100.iframe.bundle.js +0 -1
  525. package/storybook-static/components-form-fields-file-File-stories.f567bb7a.iframe.bundle.js +0 -1
  526. package/storybook-static/components-form-fields-long-string-LongString-stories.3c8eea32.iframe.bundle.js +0 -1
  527. package/storybook-static/components-form-fields-markdown-Markdown-stories.a6eca534.iframe.bundle.js +0 -1
  528. package/storybook-static/components-form-fields-number-Number-stories.9b6e0900.iframe.bundle.js +0 -1
  529. package/storybook-static/components-form-fields-object-Object-stories.89e744a5.iframe.bundle.js +0 -1
  530. package/storybook-static/components-form-fields-radio-group-RadioGroup-stories.78cc8e26.iframe.bundle.js +0 -1
  531. package/storybook-static/components-form-fields-rich-text-RichText-stories.831ea017.iframe.bundle.js +0 -1
  532. package/storybook-static/components-form-fields-select-Select-stories.19ba2e17.iframe.bundle.js +0 -1
  533. package/storybook-static/components-form-fields-string-String-stories.d5ae74a8.iframe.bundle.js +0 -1
  534. package/storybook-static/components-log-Log-stories.47dfecd3.iframe.bundle.js +0 -1
  535. package/storybook-static/components-menu-Menu-stories.4bc9621d.iframe.bundle.js +0 -1
  536. package/storybook-static/favicon.svg +0 -1
  537. package/storybook-static/hooks-useFetch-useFetch-stories.10004a22.iframe.bundle.js +0 -1
  538. package/storybook-static/hooks-useStorage-useStorage-stories.e777439a.iframe.bundle.js +0 -1
  539. package/storybook-static/hooks-useWebSocket-useWebsocket-stories.58c550e6.iframe.bundle.js +0 -1
  540. package/storybook-static/iframe.html +0 -516
  541. package/storybook-static/index.html +0 -190
  542. package/storybook-static/index.json +0 -1
  543. package/storybook-static/main.2b092d36.iframe.bundle.js +0 -199
  544. package/storybook-static/main.2b092d36.iframe.bundle.js.map +0 -1
  545. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  546. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  547. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  548. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  549. package/storybook-static/project.json +0 -1
  550. package/storybook-static/runtime~main.4993c645.iframe.bundle.js +0 -1
  551. package/storybook-static/sb-addons/chromatic-com-storybook-10/manager-bundle.js +0 -333
  552. package/storybook-static/sb-addons/chromatic-com-storybook-10/manager-bundle.js.LEGAL.txt +0 -40
  553. package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js +0 -151
  554. package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js.LEGAL.txt +0 -0
  555. package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js +0 -12
  556. package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js.LEGAL.txt +0 -0
  557. package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js +0 -394
  558. package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js.LEGAL.txt +0 -0
  559. package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js +0 -3
  560. package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js.LEGAL.txt +0 -0
  561. package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js +0 -3
  562. package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js.LEGAL.txt +0 -0
  563. package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js +0 -3
  564. package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js.LEGAL.txt +0 -0
  565. package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js +0 -3
  566. package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js.LEGAL.txt +0 -0
  567. package/storybook-static/sb-addons/interactions-9/manager-bundle.js +0 -361
  568. package/storybook-static/sb-addons/interactions-9/manager-bundle.js.LEGAL.txt +0 -0
  569. package/storybook-static/sb-addons/links-1/manager-bundle.js +0 -3
  570. package/storybook-static/sb-addons/links-1/manager-bundle.js.LEGAL.txt +0 -0
  571. package/storybook-static/sb-addons/mock-esm-preset-11/manager-bundle.js +0 -464
  572. package/storybook-static/sb-addons/mock-esm-preset-11/manager-bundle.js.LEGAL.txt +0 -35
  573. package/storybook-static/sb-addons/storybook-12/manager-bundle.js +0 -3
  574. package/storybook-static/sb-addons/storybook-12/manager-bundle.js.LEGAL.txt +0 -0
  575. package/storybook-static/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js +0 -3
  576. package/storybook-static/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js.LEGAL.txt +0 -0
  577. package/storybook-static/sb-common-assets/favicon.svg +0 -1
  578. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  579. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  580. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  581. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  582. package/storybook-static/sb-manager/globals-module-info.js +0 -1006
  583. package/storybook-static/sb-manager/globals-runtime.js +0 -54400
  584. package/storybook-static/sb-manager/globals.js +0 -48
  585. package/storybook-static/sb-manager/runtime.js +0 -12089
  586. package/storybook-static/sb-preview/globals.js +0 -33
  587. package/storybook-static/sb-preview/runtime.js +0 -9498
  588. package/storybook-static/static/media/java-96x128.eead35f3.png +0 -0
  589. package/storybook-static/static/media/python-129x128.6540a4e1.png +0 -0
  590. package/storybook-static/static/media/qore-106x128.72595921.png +0 -0
  591. package/storybook-static/stores-currentUser-currentUser-stories.d3bd17cb.iframe.bundle.js +0 -1
@@ -0,0 +1,149 @@
1
+ # TASK — Expression Builder verbatim re-port
2
+
3
+ **Status:** Phases A + B + C DONE & verified (uncommitted), including the
4
+ follow-ups (shell-chrome polish, the `validations` `'expression'` case — both
5
+ ticked in Phase C below; the `'expression'` validator gained jest coverage
6
+ 2026-06-11). The ported, IDE-matching builder is live in `ExpressionField` /
7
+ FormEngine. Phase D (server render-expression) + E (IDE consumes reqraft) are
8
+ out of scope.
9
+ Design:
10
+ `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md`. Supersedes the from-scratch
11
+ visual builder in `.tasks/FORM_ENGINE_EXPRESSIONS.md` (plumbing retained).
12
+
13
+ Method (Filip): copy IDE components **and their tests** verbatim → get them
14
+ 1:1 + green → then improve. Compare to qorus-ide Storybook **:6007** between
15
+ phases. **No commits until user verifies.**
16
+
17
+ ## Surface area
18
+
19
+ | Area | reqraft path | IDE source |
20
+ |---|---|---|
21
+ | Type-compat helpers | `src/helpers/expressions.ts` (NEW) | `qorus-ide/src/helpers/expressions.ts` |
22
+ | `areQorusTypesCompatible` | `src/helpers/…` | `qorus-ide/src/helpers/functions.tsx` |
23
+ | `validateField` export | `src/helpers/validations.ts` | (export the existing `_validateField`) |
24
+ | Select flat/intent | `src/components/form/fields/select/Select.tsx` | `qorus-ide` Field/select |
25
+ | TemplateField expr path | `src/components/form/fields/template/TemplateField.tsx` | `qorus-ide` Field/template |
26
+ | ExpressionBuilder | `src/components/form/expressions/builder/**` (NEW) | `qorus-ide/src/components/ExpressionBuilder/**` |
27
+ | Builder tests | `…/builder/*.stories.tsx` | `qorus-ide/src/stories/Components/ExpressionBuilder.stories.tsx` |
28
+
29
+ ## Phase A — Field-stack parity (leaf) — DONE & verified (2026-06-10)
30
+
31
+ - [x] `src/helpers/expressions.ts` — verbatim port of getArgumentType,
32
+ argumentMatchesType (from IDE expressions.ts) + areQorusTypesCompatible
33
+ (from IDE functions.tsx); imports adapted (getQorusTypes/defaultQorusTypes
34
+ from reqraft `useQorusTypes`). Typechecks.
35
+ - [x] `validateField` — already exported from validations.ts (no change needed)
36
+ - [x] `SelectFormField` — `flat` + `intent` now forwarded (additive; defaults
37
+ preserve current look). This is the fix Filip named: "make it flat and
38
+ small and it looks the same." The chip can now go borderless.
39
+ - [x] **GATE:** jest 267/267, full storybook **188/189** (pre-existing flaky
40
+ only). No regression from the shared Select change.
41
+ - Note: `TemplateField`'s `allowFunctions`/`isFunction` mechanism moved to
42
+ Phase B — it's circularly dependent with the ExpressionBuilder (TemplateField
43
+ renders the builder; the builder renders TemplateField), so they land
44
+ together. Phase B builds in a NEW dir so the current build stays green.
45
+
46
+ ## Phase B — Verbatim ExpressionBuilder + tests — DONE & verified (2026-06-10)
47
+
48
+ - [x] 9 IDE files copied verbatim into `src/components/form/expressions/builder/`
49
+ (index.tsx ~1260 LOC + item/argumentWrapper/argumentLabel/argumentDetail/
50
+ argumentInfo + the two confirm modals + renderTemplate). JSX/markup/props
51
+ preserved; only imports/hooks/types/seams changed.
52
+ - [x] Seams: AiAssistanceAction **removed**; `renderTemplate` rewritten to use
53
+ reqraft `useRenderExpression` (client-side, no Creator-WS);
54
+ `useRegisterHintView` **stubbed**.
55
+ - [x] `TemplateField` — additive `allowFunctions`/`isFunction`; when set, renders
56
+ the ported builder. Absent → unchanged (field migration safe).
57
+ - [x] Adaptations: `Select` `defaultItems`→`items`; `Select.onChange` single-arg;
58
+ catalogue passed as `override` (replaces fetch) **and threaded through the
59
+ group recursion** so offline/CI is deterministic (badge = mock count, not
60
+ the live 121). `auto`/`Select`/`TemplateField` import aliases.
61
+ - [x] Ported `ExpressionBuilder.stories.tsx` (the IDE play tests) — offline via
62
+ `mockExpressions`. **10/10 pass.**
63
+ - [x] **GATE:** renders **1:1 vs :6007** (verified by screenshot — chips, underline
64
+ fields, operator words, group nesting, type-pickers, collapse/Explain all
65
+ match). eslint clean, jest 267/267, full suite **198/199** (pre-existing
66
+ flaky only). Old from-scratch builder left intact; build green.
67
+ - Open follow-ups (Phase C / refinements): wire into `ExpressionField`;
68
+ `validations` has no `'expression'` type case yet (per-expression validity
69
+ tag always "valid"); `useRenderExpression` is the client-side approximation.
70
+
71
+ ## Phase C — Re-wrap reqraft features — DONE & verified (2026-06-10)
72
+
73
+ - [x] `ExpressionField` Visual mode now renders the **ported** builder
74
+ (`./builder`); Text = `DpqlEditor`; Explain/Preview from the shell.
75
+ Adapted: `onChange (value, remove?)`, `returnType` cast, and
76
+ **`localTemplates={{ items: [] }}`** (the builder's `filterTemplatesFunc`
77
+ does `templates.items.filter(...)` — undefined templates crashed it;
78
+ caught via the error boundary during verify and fixed).
79
+ - [x] From-scratch `ExpressionBuilder.tsx` + its stories **retired** (deleted);
80
+ no remaining references.
81
+ - [x] **GATE:** FormEngine field → ExpressionField → ported builder verified
82
+ (ViaFormEngine + the toggle path). jest 267/267, full suite **193/193**
83
+ (the flaky `OnValidityChange` even passed). HEAD unchanged.
84
+ - [x] **Shell cleanup (done 2026-06-10):** Visual mode now renders ONLY the
85
+ ported builder (it has its own Explain). The shell's Explain + Preview +
86
+ Explanation are scoped to **Text mode** (where the DpqlEditor has none).
87
+ ExpressionField play tests updated to assert the builder rendered.
88
+ - [x] **Danger-border fix (done 2026-06-10):** three parts —
89
+ (1) ported the IDE's `validations` **`'expression'` case** (reads the
90
+ catalogue from `field.expressions`); (2) `FormEngine.isOptionValid` now
91
+ passes `isFunction` from the field value's `is_expression` (the per-field
92
+ red intent used the base-type check); (3) `ExpressionField` defaults
93
+ `returnType` to `'auto'` so a valid expression card renders `muted` not
94
+ `danger`. Verified: the FormEngine expression field is no longer red.
95
+ eslint clean, jest 267/267, full suite 192/193 (pre-existing flaky only).
96
+ - [x] **Oversized chips/pickers fix (2026-06-10):** root cause — the IDE's
97
+ `Select` spreads `{...rest}` into its rendered ReqoreButton/Dropdown/Tag,
98
+ so the builder's verbatim `size='tiny'` reaches ReQore; reqraft's
99
+ `SelectFormField` accepted `size` in its interface but **never forwarded
100
+ it** (same class of bug as `flat`/`intent`). Forwarded `size` to all four
101
+ render branches (bound as `componentSize` — plain `size` would shadow
102
+ lodash's `size(items)` badge count). Chips now tiny, type pickers
103
+ compact, operand rows no longer wrap — density matches the IDE.
104
+ jest 267/267, full suite 192/193 (pre-existing flaky only).
105
+ - Known seam: reqraft's `SelectFormField` still doesn't rest-spread like the
106
+ IDE's — `flat`/`intent`/`size` are forwarded explicitly; any other
107
+ pass-through prop the verbatim IDE markup relies on needs the same
108
+ treatment if a gap shows up.
109
+ - [x] **Type-picker parity (2026-06-10):** `AutoFormField` now matches the
110
+ IDE's AutoField — unresolved type shows **`auto`** as the selected picker
111
+ label (not a "Select a type" placeholder; `auto` is not a pickable item
112
+ so the badge count stays identical to the IDE's 9/14), and the hint is
113
+ the IDE's orange minimal `ReqoreTag` **"Please select data type"**
114
+ (was a grey info tag). The 3 AutoFormField story assertions updated.
115
+ - [x] **AI-assist slot (2026-06-10):** the IDE's purple hover button on each
116
+ expression card is `AiAssistanceAction` → `AiButton` (sends the selected
117
+ expression's context to the IDE's AI chat). It was one of the three
118
+ deliberate port seams — `AiButton` depends on IDE-only infrastructure
119
+ (AI context, SystemStore, QonsoleStore, Creator-WS) that reqraft doesn't
120
+ have. Added **`extraActions?: IReqorePanelAction[]`** to the ported
121
+ builder (threaded through the group recursion, prepended exactly where
122
+ the IDE renders the AI action) so the IDE injects its AiButton at
123
+ Phase E. jest 267/267, full suite 192/193 (pre-existing flaky only).
124
+ - [x] **`extraActions` upgraded to a factory (2026-06-10):** a static array
125
+ could not reproduce the IDE's button — the IDE builds
126
+ `AiAssistanceAction({ context: selectedExpression })` *inline per card*.
127
+ The seam now also accepts
128
+ `(ctx: { selectedExpression?, value? }) => IReqorePanelAction[]`,
129
+ resolved inside each `Expression` with that card's selected schema —
130
+ so Phase E restores the AI button 1:1, per-card context included.
131
+ Proven by the new `WithInjectedExtraActions` story (hover → injected
132
+ action present; 11/11 ported play tests). Full suite **194/194**
133
+ (even the flaky `OnValidityChange` passed), jest 267/267.
134
+ - Ops note: the Storybook dev server reliably wedges on HMR after edits to
135
+ these files (symptom: play tests fail in ~2ms with
136
+ `ReferenceError: __test is not defined`, preview stuck on spinner).
137
+ A clean restart fixes it every time — restart before trusting failures.
138
+
139
+ ## Phase D — Server (tracked, not in reqraft)
140
+
141
+ - [x] `render-expression` over LSP/REST; swap `useRenderExpression` —
142
+ picked up 2026-06-10 in `.tasks/RENDER_EXPRESSION_LSP.md` (branch
143
+ `feature/render-expression-lsp`): new LSP `dpql/renderExpression`
144
+ (server code written, deploy pending) + server-first hook with
145
+ client-side fallback. Design: `design/RENDER_EXPRESSION_TRANSPORT.md`.
146
+
147
+ ## Phase E — Dedupe (not now)
148
+
149
+ - [ ] IDE consumes reqraft's builder
@@ -0,0 +1,234 @@
1
+ # TASK — TemplateField + auto verbatim re-port
2
+
3
+ **Status:** done pending user verify (uncommitted), branch
4
+ `feature/dpql-editor` — stacked on the uncommitted
5
+ EXPRESSION_BUILDER_REPORT batch (user chose to proceed without
6
+ committing the baseline first, 2026-06-10). Full storybook suite
7
+ **232/232**, jest 268/268, `yarn precheck` clean. Click-through in
8
+ `VERIFY.local.md`.
9
+
10
+ Continuation of the field-stack re-faithful-ization started in
11
+ [EXPRESSION_BUILDER_REPORT](./EXPRESSION_BUILDER_REPORT.md) Phase A.
12
+ Design rationale: `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md`
13
+ (Filip's method: copy IDE components **and their tests** verbatim →
14
+ 1:1 + green → then improve). reqraft's `TemplateField` and
15
+ `AutoFormField` are from-scratch reimplementations — the operand layer
16
+ under the ported ExpressionBuilder — and this task replaces them with
17
+ verbatim ports of `qorus-ide/src/components/Field/template.tsx` (774
18
+ LOC) and `Field/auto.tsx` (1017 LOC).
19
+
20
+ **No commits, no pushes. STOP for user browser verification at the end.**
21
+
22
+ ## Surface area
23
+
24
+ | Area | reqraft path | IDE source |
25
+ |---|---|---|
26
+ | TemplateField | `src/components/form/fields/template/TemplateField.tsx` (REPLACED) | `Field/template.tsx` |
27
+ | Auto field | `src/components/form/fields/auto/AutoFormField.tsx` (REPLACED) | `Field/auto.tsx` |
28
+ | AllowedValues | `src/components/form/fields/allowed-values/AllowedValues.tsx` (NEW) | `components/AllowedValues/index.tsx` |
29
+ | `getValueOrDefaultValue` | `src/helpers/validations.ts` (ADD export) | `helpers/validations.ts:1353` |
30
+ | FormEngine expression model | `src/components/form/engine/FormEngine.tsx` | `Field/systemOptions.tsx` (4-arg `handleValueChange`) |
31
+ | Field dispatch | `src/components/form/fields/Field.tsx` (auto/any call site) | — |
32
+ | Template stories | `…/template/TemplateField.stories.tsx` (NEW) + fixtures | `stories/Fields/Template.stories.tsx` |
33
+ | Auto stories | `…/auto/AutoFormField.stories.tsx` (extended) | `stories/Fields/Auto.stories.tsx` |
34
+
35
+ ## Seam map (replace, don't copy — same classes as the builder port)
36
+
37
+ **template.tsx:**
38
+ - `useGetAppActionData` (app-action badge on the template dropdown) —
39
+ IDE-only app catalogue; **dropped** (badge omitted).
40
+ - `SaveValueButton` (`canSaveValue` menu item) — depends on IDE
41
+ saved-values/modal infra; **dropped**. `menuItems` seam remains for
42
+ consumers needing extra menu entries.
43
+ - `useExpressions(allow, {url, expressions})` → reqraft
44
+ `useExpressions({allow, expressionsUrl, extraExpressions})`;
45
+ `.value/.valueForSelect` dep keys → `.expressions`.
46
+ - `ExpressionBuilder` import → `../../expressions/builder` (the ported
47
+ builder). `effectiveIsFunction` renders the **bare builder** like the
48
+ IDE — the Phase-1 `supports_expressions`/`is_expression`-prop toggle
49
+ mechanism (which rendered `ExpressionField`) is **removed**; the IDE
50
+ model wins (accepted drawback #2 in the strategy doc).
51
+ - `TemplatesListProps` defined locally (IDE keeps it in `Field/richText`).
52
+ - ComponentMap leafs (`LongStringField`, `Number`, `BooleanField`,
53
+ `DateField`, `RichTextField`, `FileField`) — local 2-arg
54
+ (`onChange(name, value)`) wrappers around reqraft's leaf fields.
55
+ - `isValueTemplate`/`getTemplateKey`/`getTemplateValue` — re-exported
56
+ from `helpers/templates` (IDE defines them inline).
57
+
58
+ **auto.tsx:**
59
+ - **Dropped IDE-only types** (fall through to the verbatim `default:`
60
+ "Unknown type!" tag, recoverable via `componentOverrides`):
61
+ `processor-mappings`, `tool-catalog`, `test-cases`, `active-windows`,
62
+ `collection-documents`, `data-provider` (ConnectorField), the
63
+ InterfaceSelector family (`mapper`…`value-map`), `connection` (+
64
+ `renderConnectionManagement` removed), `option_hash`, `code-editor`
65
+ (SmartEditor needs an LSP `session` — too heavy for this seam).
66
+ - **`componentOverrides?: Record<string, React.FC>`** — one additive
67
+ seam prop (same class as the builder's `extraActions`): checked
68
+ before the switch so the IDE can re-inject its own editors at
69
+ Phase E (dedupe).
70
+ - `fetchData('/dataprovider/arg_schemas/…')` → reqraft `query()`
71
+ (same `{data, ok, error}` shape).
72
+ - `FieldAllowedValues`/`CheckGroup` → NEW port (see below).
73
+ - `Options` (hash + arg_schema) → `FormEngine` (it IS the ported Options).
74
+ - Leaf fields → reqraft equivalents with inline `onChange` adaptation
75
+ per call site (reqraft leafs are single-arg `onChange(value)`; the
76
+ builder port set this precedent): LongString, RichText, Boolean
77
+ (`checked` prop), Date, Number, ByteSize, Url, Select, MultiSelect,
78
+ Color, File, Object(hash/list), RadioGroup (enum), ArrayAutoField
79
+ (renderItem = `TemplateField component={auto}` — mirrors IDE
80
+ arrayAuto internals), SchemaDefinitionEditor, DpqlEditor.
81
+ - `Loader` → minimal `ReqoreSpinner` (same stand-in as schema-definition's).
82
+ - `IField` (FieldWrapper) → folded into `IAutoFieldProps` locally
83
+ (`requestFieldData` kept — drives `type-depends-on`).
84
+ - `console.log` debug calls removed; `useWhyDidYouUpdate` kept
85
+ (reqraft has the hook).
86
+ - `allowSaving`/`showSavedValues` props **kept in the interface** but
87
+ inert (saved-values infra is IDE-only) — documented as a seam.
88
+
89
+ **AllowedValues port seams:** `useSavedValues` → empty list (prop kept,
90
+ inert); `useSubscriptionEvents` (CONNECTION_DELETED) → dropped;
91
+ `ConnectionManagement` per-item actions → dropped (actions = []);
92
+ `Select` → `SelectFormField` (`items`, single-arg onChange adapter).
93
+
94
+ ## Consumer reconciliation (the swap's blast radius)
95
+
96
+ - `Field.tsx` auto/any case → new API (`defaultType`, 2-arg onChange
97
+ adapter).
98
+ - `FormEngine` → IDE Options model: `allowFunctions` from
99
+ `supports_expressions`, `isFunction={other.is_expression}`,
100
+ `isDefaultFunction` from `default_view`, 4-arg `handleValueChange`
101
+ where the **4th arg** (not a value wrapper) drives `is_expression`.
102
+ - `builder/index.tsx` — call sites already verbatim-IDE-shaped
103
+ (`component={auto}`, 4-arg onChange); stale `as any` casts removed
104
+ where signatures now match.
105
+ - `ExpressionField` stays exported with its stories (the NET-NEW DPQL
106
+ text mode shell) but is no longer rendered by TemplateField.
107
+ **Follow-up decision for verification:** whether FormEngine-level
108
+ expression fields should regain the Text/DPQL mode via ExpressionField
109
+ chrome, or stay IDE-verbatim (bare builder).
110
+
111
+ ## Phases
112
+
113
+ ### Phase 1 — verbatim port + ported tests — DONE (2026-06-10)
114
+
115
+ - [x] `getValueOrDefaultValue` exported from validations
116
+ - [x] AllowedValues ported
117
+ - [x] auto.tsx ported verbatim (seams above)
118
+ - [x] template.tsx ported verbatim (seams above)
119
+ - [x] Field.tsx + FormEngine + builder reconciled
120
+ - [x] IDE Template stories ported (offline: `templates.json` +
121
+ `multiLevelTemplates.json` fixtures copied; `_tests*` helpers
122
+ inlined per the builder-stories pattern)
123
+ - [x] IDE Auto stories ported (offline; saved-values/connection
124
+ stories adapted or dropped per seams)
125
+ - [x] **Drift fixes surfaced by the ported tests** (the whole point of
126
+ porting the IDE tests):
127
+ - `filterTemplatesByType` — reqraft used naive badge equality;
128
+ replaced with the IDE verbatim (`areQorusTypesCompatible`
129
+ compat + top-level groups always kept). String fields now see
130
+ ALL templates (string accepts `any`), int sees int, etc.
131
+ - `NumberFormField` — gained the IDE's templates-dropdown wrap
132
+ (focus-opened template list); plain input unchanged without
133
+ templates.
134
+ - IDE `arrayAuto` ported verbatim as `ArrayAuto`
135
+ (`fields/array/ArrayAuto.tsx`) — panel-per-item with
136
+ `TemplateField component={auto}` per item + "Add new item"
137
+ button; the ported auto uses it. reqraft's compact
138
+ `ArrayAutoField` (renderItem seam) stays for `Field.tsx`.
139
+ - [x] GATE: ported play tests **37/37**; 1:1 screenshots vs :6007
140
+ (TemplateWithFunctionValue, nested-function, type-picker 14,
141
+ ListWithElementType, allowed values — differences are
142
+ mock-vs-live catalogue content only). jest 268/268, eslint
143
+ clean, `build:test:prod` clean.
144
+
145
+ ### Phase 2 — regression reconciliation — DONE (2026-06-10)
146
+
147
+ - [x] jest suite green (268/268)
148
+ - [x] full storybook suite green — **230/230, including the usually
149
+ flaky `OnValidityChange`** (the 14/9 type-picker badges and
150
+ `auto` + "Please select data type" assertions kept)
151
+ - [x] Reconciliation fixes:
152
+ - auto gained a `long-string` alias in the string case (reqraft
153
+ FormField vocabulary; the only reqraft-only `ui_type` in real
154
+ use — evidence: story grep).
155
+ - `OnValidityChange` play now awaits the textarea (the IDE-style
156
+ auto resolves its type in a mount effect, one tick after
157
+ validity is first reported) — also de-flakes the known flake.
158
+ - Ported builder: `?.` hardening on `filterTemplatesFunc`'s
159
+ `items.filter` — with no templates at all (FormEngine,
160
+ templates off) the IDE original crashes on `{}.items.filter`
161
+ (latent IDE bug; it always has fetched templates).
162
+ - `ExpressionField` stays exported with its stories (DPQL text
163
+ mode); FormEngine now routes expressions through the IDE
164
+ model (bare builder via TemplateField `isFunction`) — its
165
+ `ViaFormEngine` story passes through the new path.
166
+
167
+ ### Phase 3 — small-fields audit — DONE (2026-06-10)
168
+
169
+ - [x] `byte-size` — already structurally verbatim (Number + unit
170
+ Select); aligned the unit list to the IDE's exact `KiB`/`MiB`
171
+ (GiB/TiB were a FORM_FIELD_EXTRAS addition — trimmed for 1:1,
172
+ can be re-added post-parity) and unfixed the unit select so it
173
+ stretches like the IDE's. The IDE's field-level `useMount`
174
+ default-value push stays out (defaults are FormEngine-level in
175
+ reqraft). IDE ByteSize stories are smoke-only — no play tests
176
+ to port.
177
+ - [x] `url` — **replaced verbatim**: protocol Select + `://` + address
178
+ (with the IDE's `getProtocol`/`getAddress` splitting). The
179
+ FORM_FIELD_EXTRAS single-input version is superseded per this
180
+ batch's mandate. Seams: the `qorus_instance`-gated remote
181
+ protocols fetch dropped (`protocols` prop kept, IDE default
182
+ list); the `://` label rendered as the muted paragraph the IDE's
183
+ StringField produces. `Field.stories` Url play updated to the
184
+ new structure. No IDE play tests exist for url.
185
+ - [x] `multi-select` — portable IDE behaviours brought over: selected
186
+ values missing from the allowed list still render as chips, `*`
187
+ wildcard collapses the selection + disables other items,
188
+ wrap/tooltip item props, `showNoItemsMessage={false}`,
189
+ `selectorProps={{useTargetWidth:false}}`, `selectedItemSize`.
190
+ The IDE's editor dialog / FieldEnhancer `reference` machinery is
191
+ app-coupled — not ported. IDE MultiSelect stories are smoke-only.
192
+ - [x] `schema-definition` — drift-checked; the Options→FormEngine
193
+ adaptation stays. Ported the two applicable IDE play tests:
194
+ **Sandboxed** (untrusted caller → no Advanced tab) and
195
+ **WithValidationBanner** (name mismatch banner + "Sync name").
196
+ - [x] GATE: full storybook suite **232/232**, jest 268/268, eslint +
197
+ `build:test:prod` clean.
198
+
199
+ ### Follow-up — top-level ExpressionField re-wrap — DONE (2026-06-11)
200
+
201
+ Resolves the "DPQL text mode unrouted" open decision (user picked
202
+ re-wrap). One additive seam, default = IDE-verbatim:
203
+
204
+ - [x] `TemplateField` gained **`allowTextExpressions`** — when set, the
205
+ expression branch renders the `ExpressionField` shell (Visual =
206
+ the same ported builder, Text = the DPQL editor) instead of the
207
+ IDE's bare builder. `handleExpressionChange` serves both (the
208
+ shell now emits the identical `(value, remove)` contract).
209
+ - [x] `FormEngine` sets it on its TemplateField (opt out per form via
210
+ `templateFieldProps={{ allowTextExpressions: false }}`). Nested
211
+ operands (builder arguments, ArrayAuto items) never receive the
212
+ prop — they stay IDE-verbatim bare builder, so the ported
213
+ Template/Auto stories remain 1:1 vs :6007.
214
+ - [x] `ExpressionField` upgrades: `onChange` threads the builder's
215
+ `remove` (exit-expression-mode now works from the shell);
216
+ `localTemplates` + `serverHandled` pass through to the builder.
217
+ - [x] **Live stories** (mock LSP): `ViaFormEngineTextMode` (serialize
218
+ direction — switching to Text seeds the editor from the stored
219
+ AST) and `ViaFormEngineTextTyping` (parse direction — typing
220
+ DPQL lands in the form value with `is_expression` via the 4-arg
221
+ flow). `ViaFormEngine` extended to assert the Visual/Text toggle.
222
+ Play-test note: synthetic keystrokes only land in an EMPTY Slate
223
+ document — hence the typing story starts from an empty
224
+ expression; the seeded story asserts content, not keystrokes.
225
+ - [x] GATE: full storybook suite **234/234 twice in a row**, jest
226
+ 268/268, eslint + `build:test:prod` clean. Mock-fidelity note:
227
+ entering Text mode re-parses the serialized text (parse-on-edit
228
+ design); the mock's echo-parse makes the preview look degraded —
229
+ the real `dpql/parse` round-trips the AST losslessly.
230
+
231
+ ### STOP — user verifies in browser before commit
232
+
233
+ `VERIFY.local.md` gets the story-by-story click-through; reqraft
234
+ storybook on :6011 side-by-side with qorus-ide :6007.