@qoretechnologies/reqraft 0.10.65 → 0.10.66-pr.137.ga1983bf

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 (873) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +413 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +322 -124
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +29 -3
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +66 -11
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +570 -176
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  68. package/dist/components/form/engine/OptionFieldMessages.js +25 -3
  69. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  70. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  72. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  73. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  77. package/dist/components/form/engine/compactRowContext.d.ts +30 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  79. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  80. package/dist/components/form/engine/compactRowStyles.d.ts +59 -22
  81. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  82. package/dist/components/form/engine/compactRowStyles.js +102 -55
  83. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  84. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  85. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  86. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  87. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  88. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  89. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  90. package/dist/components/form/engine/inheritProps.js +43 -0
  91. package/dist/components/form/engine/inheritProps.js.map +1 -0
  92. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  93. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  94. package/dist/components/form/engine/operatorSummary.js +35 -0
  95. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  96. package/dist/components/form/engine/readFirst.d.ts +24 -8
  97. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  98. package/dist/components/form/engine/readFirst.js +77 -109
  99. package/dist/components/form/engine/readFirst.js.map +1 -1
  100. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  101. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  102. package/dist/components/form/engine/readFirstColors.js +51 -0
  103. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  104. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  105. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  106. package/dist/components/form/engine/rowFocus.js +26 -3
  107. package/dist/components/form/engine/rowFocus.js.map +1 -1
  108. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  109. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  110. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  111. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  112. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  113. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  114. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  115. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  116. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  117. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  118. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  119. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  120. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  121. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/variantParts.js +25 -17
  123. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  124. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  125. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  126. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  127. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  128. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  129. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  130. package/dist/components/form/expressions/ExpressionField.js +536 -114
  131. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  132. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  133. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  134. package/dist/components/form/expressions/argumentPresence.js +16 -1
  135. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  136. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  137. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  138. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  139. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  141. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  142. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  144. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  145. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  146. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  148. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  150. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  152. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  154. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/index.js +170 -80
  156. package/dist/components/form/expressions/builder/index.js.map +1 -1
  157. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  158. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/item.js +19 -5
  160. package/dist/components/form/expressions/builder/item.js.map +1 -1
  161. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  162. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  163. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  164. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  165. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  166. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  167. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  168. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  169. package/dist/components/form/expressions/expressionOperands.js +97 -0
  170. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  171. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  172. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  173. package/dist/components/form/expressions/fieldPath.js +152 -0
  174. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  175. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  176. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  177. package/dist/components/form/expressions/loneValue.js +33 -0
  178. package/dist/components/form/expressions/loneValue.js.map +1 -0
  179. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  180. package/dist/components/form/expressions/mockExpressions.js +22 -5
  181. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  182. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  183. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  184. package/dist/components/form/expressions/renderExpressionToText.js +43 -10
  185. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  186. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  187. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  188. package/dist/components/form/expressions/textOfExpression.js +49 -0
  189. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  190. package/dist/components/form/expressions/types.d.ts +12 -0
  191. package/dist/components/form/expressions/types.d.ts.map +1 -1
  192. package/dist/components/form/expressions/types.js +6 -1
  193. package/dist/components/form/expressions/types.js.map +1 -1
  194. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  195. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  196. package/dist/components/form/expressions/useExpressionType.js +181 -0
  197. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  198. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  199. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  200. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  201. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  202. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  203. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  204. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  205. package/dist/components/form/fields/Field.d.ts.map +1 -1
  206. package/dist/components/form/fields/Field.js +43 -20
  207. package/dist/components/form/fields/Field.js.map +1 -1
  208. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  209. package/dist/components/form/fields/allowed-values/AllowedValues.js +39 -6
  210. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  211. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  212. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  213. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  214. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  215. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  216. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  217. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  218. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  219. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  220. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  221. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  222. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  223. package/dist/components/form/fields/auto/AutoFormField.js +119 -62
  224. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  225. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  226. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  227. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  228. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  229. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  230. package/dist/components/form/fields/binary/Binary.js +23 -3
  231. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  232. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  233. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  234. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  235. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  236. package/dist/components/form/fields/color/Color.d.ts +103 -16
  237. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  238. package/dist/components/form/fields/color/Color.js +616 -16
  239. package/dist/components/form/fields/color/Color.js.map +1 -1
  240. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  241. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  242. package/dist/components/form/fields/emittedValues.js +24 -1
  243. package/dist/components/form/fields/emittedValues.js.map +1 -1
  244. package/dist/components/form/fields/file/File.d.ts +1 -1
  245. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  246. package/dist/components/form/fields/file/File.js +4 -2
  247. package/dist/components/form/fields/file/File.js.map +1 -1
  248. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  249. package/dist/components/form/fields/long-string/LongString.js +29 -8
  250. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  251. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  252. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  253. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +13 -9
  254. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  255. package/dist/components/form/fields/number/Number.d.ts +6 -0
  256. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  257. package/dist/components/form/fields/number/Number.js +41 -6
  258. package/dist/components/form/fields/number/Number.js.map +1 -1
  259. package/dist/components/form/fields/object/Object.d.ts +1 -1
  260. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  261. package/dist/components/form/fields/object/Object.js +4 -2
  262. package/dist/components/form/fields/object/Object.js.map +1 -1
  263. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  264. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  265. package/dist/components/form/fields/pendingEdit.js +79 -0
  266. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  267. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  268. package/dist/components/form/fields/radio-group/RadioGroup.js +4 -3
  269. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  270. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  271. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  272. package/dist/components/form/fields/rich-text/RichText.js +382 -91
  273. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  274. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  275. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  276. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  277. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  278. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  279. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  280. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  281. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  282. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  283. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  284. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  286. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/index.js +8 -4
  289. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  290. package/dist/components/form/fields/select/Select.d.ts +10 -1
  291. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  292. package/dist/components/form/fields/select/Select.js +28 -14
  293. package/dist/components/form/fields/select/Select.js.map +1 -1
  294. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  295. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  296. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  297. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  298. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  299. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  300. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  301. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  302. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  303. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  304. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  305. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  306. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  307. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  308. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  309. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  310. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  311. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  312. package/dist/components/form/fields/template/TemplateField.js +678 -107
  313. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  314. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  315. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  316. package/dist/components/form/fields/template/TemplatePicker.js +451 -0
  317. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  318. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  319. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  320. package/dist/components/form/fields/template/TemplateText.js +22 -16
  321. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  322. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  323. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  324. package/dist/components/form/fields/template/referenceNames.js +69 -0
  325. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  326. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  327. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  328. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  329. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  330. package/dist/components/form/index.d.ts +12 -0
  331. package/dist/components/form/index.d.ts.map +1 -1
  332. package/dist/components/form/index.js +25 -1
  333. package/dist/components/form/index.js.map +1 -1
  334. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  335. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  336. package/dist/components/form/typeSentenceForm.js +54 -0
  337. package/dist/components/form/typeSentenceForm.js.map +1 -0
  338. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  339. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  340. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  341. package/dist/components/log/Log.d.ts.map +1 -1
  342. package/dist/components/log/Log.js +20 -8
  343. package/dist/components/log/Log.js.map +1 -1
  344. package/dist/components/menu/Menu.d.ts.map +1 -1
  345. package/dist/components/menu/Menu.js +19 -10
  346. package/dist/components/menu/Menu.js.map +1 -1
  347. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  348. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  349. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  350. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  351. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  352. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  353. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  354. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  355. package/dist/components/smartEditor/SmartEditor.js +584 -190
  356. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  357. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  358. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  359. package/dist/components/smartEditor/completionStyle.js +79 -0
  360. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  361. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  362. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  363. package/dist/components/smartEditor/contextTitle.js +21 -0
  364. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  365. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  366. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  367. package/dist/components/smartEditor/editingAids.js +213 -0
  368. package/dist/components/smartEditor/editingAids.js.map +1 -0
  369. package/dist/components/smartEditor/index.d.ts +6 -1
  370. package/dist/components/smartEditor/index.d.ts.map +1 -1
  371. package/dist/components/smartEditor/index.js +19 -1
  372. package/dist/components/smartEditor/index.js.map +1 -1
  373. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  374. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  375. package/dist/components/smartEditor/templateCompletions.js +380 -0
  376. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  377. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  378. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  379. package/dist/components/smartEditor/typedReferences.js +179 -0
  380. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  381. package/dist/components/smartEditor/types.d.ts +116 -2
  382. package/dist/components/smartEditor/types.d.ts.map +1 -1
  383. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  384. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  385. package/dist/components/smartEditor/useEditingAids.js +336 -0
  386. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  387. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  388. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useLspAutocomplete.js +562 -151
  390. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  391. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  392. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  393. package/dist/components/smartEditor/useLspHover.js +364 -35
  394. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  395. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  396. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  397. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  398. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspSession.js +7 -6
  400. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  402. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  403. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  404. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  405. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  406. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  407. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  408. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  409. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  410. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  411. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  412. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  413. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  414. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  415. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  416. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  417. package/dist/components/supportTicket/TicketHeader.js +20 -2
  418. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  419. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  420. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  421. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  422. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  423. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  424. package/dist/components/ticketThread/TicketThread.js +38 -13
  425. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  426. package/dist/helpers/allowedValues.d.ts +21 -0
  427. package/dist/helpers/allowedValues.d.ts.map +1 -1
  428. package/dist/helpers/allowedValues.js +40 -1
  429. package/dist/helpers/allowedValues.js.map +1 -1
  430. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  431. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  432. package/dist/helpers/descriptionTooltip.js +76 -0
  433. package/dist/helpers/descriptionTooltip.js.map +1 -0
  434. package/dist/helpers/domProps.d.ts +5 -0
  435. package/dist/helpers/domProps.d.ts.map +1 -0
  436. package/dist/helpers/domProps.js +47 -0
  437. package/dist/helpers/domProps.js.map +1 -0
  438. package/dist/helpers/expressions.d.ts +115 -4
  439. package/dist/helpers/expressions.d.ts.map +1 -1
  440. package/dist/helpers/expressions.js +247 -29
  441. package/dist/helpers/expressions.js.map +1 -1
  442. package/dist/helpers/hoveringPointer.d.ts +26 -0
  443. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  444. package/dist/helpers/hoveringPointer.js +29 -0
  445. package/dist/helpers/hoveringPointer.js.map +1 -0
  446. package/dist/helpers/markdownText.d.ts +14 -0
  447. package/dist/helpers/markdownText.d.ts.map +1 -0
  448. package/dist/helpers/markdownText.js +160 -0
  449. package/dist/helpers/markdownText.js.map +1 -0
  450. package/dist/helpers/noDescription.d.ts +9 -0
  451. package/dist/helpers/noDescription.d.ts.map +1 -0
  452. package/dist/helpers/noDescription.js +13 -0
  453. package/dist/helpers/noDescription.js.map +1 -0
  454. package/dist/helpers/optionUiTypes.d.ts +2 -2
  455. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  456. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  457. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  458. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  459. package/dist/helpers/readableColors.d.ts +36 -0
  460. package/dist/helpers/readableColors.d.ts.map +1 -0
  461. package/dist/helpers/readableColors.js +116 -0
  462. package/dist/helpers/readableColors.js.map +1 -0
  463. package/dist/helpers/recordFieldReference.d.ts +15 -0
  464. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  465. package/dist/helpers/recordFieldReference.js +89 -0
  466. package/dist/helpers/recordFieldReference.js.map +1 -0
  467. package/dist/helpers/templateCatalogue.d.ts +104 -0
  468. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  469. package/dist/helpers/templateCatalogue.js +116 -0
  470. package/dist/helpers/templateCatalogue.js.map +1 -0
  471. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  472. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  473. package/dist/helpers/templateCatalogueContext.js +31 -0
  474. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  475. package/dist/helpers/templateItems.d.ts +2 -2
  476. package/dist/helpers/templateItems.d.ts.map +1 -1
  477. package/dist/helpers/templateItems.js +6 -4
  478. package/dist/helpers/templateItems.js.map +1 -1
  479. package/dist/helpers/templateText.d.ts +1 -0
  480. package/dist/helpers/templateText.d.ts.map +1 -1
  481. package/dist/helpers/templateText.js +7 -3
  482. package/dist/helpers/templateText.js.map +1 -1
  483. package/dist/helpers/templateTree.d.ts +248 -0
  484. package/dist/helpers/templateTree.d.ts.map +1 -0
  485. package/dist/helpers/templateTree.js +892 -0
  486. package/dist/helpers/templateTree.js.map +1 -0
  487. package/dist/helpers/templateType.d.ts +28 -0
  488. package/dist/helpers/templateType.d.ts.map +1 -0
  489. package/dist/helpers/templateType.js +30 -0
  490. package/dist/helpers/templateType.js.map +1 -0
  491. package/dist/helpers/templates.d.ts +86 -16
  492. package/dist/helpers/templates.d.ts.map +1 -1
  493. package/dist/helpers/templates.js +305 -45
  494. package/dist/helpers/templates.js.map +1 -1
  495. package/dist/helpers/validations.d.ts +27 -0
  496. package/dist/helpers/validations.d.ts.map +1 -1
  497. package/dist/helpers/validations.js +169 -39
  498. package/dist/helpers/validations.js.map +1 -1
  499. package/dist/helpers/webLink.d.ts +8 -0
  500. package/dist/helpers/webLink.d.ts.map +1 -0
  501. package/dist/helpers/webLink.js +29 -0
  502. package/dist/helpers/webLink.js.map +1 -0
  503. package/dist/hooks/useQorusTypes.d.ts +12 -17
  504. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  505. package/dist/hooks/useQorusTypes.js +44 -172
  506. package/dist/hooks/useQorusTypes.js.map +1 -1
  507. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  508. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  509. package/dist/hooks/useReadableIntentShade.js +23 -0
  510. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  511. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  512. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  513. package/dist/hooks/useReadableOpacity.js +17 -0
  514. package/dist/hooks/useReadableOpacity.js.map +1 -0
  515. package/dist/index.d.ts +8 -0
  516. package/dist/index.d.ts.map +1 -1
  517. package/dist/index.js +24 -1
  518. package/dist/index.js.map +1 -1
  519. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  520. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  521. package/dist/tracking/ui/ExperimentCard.js +26 -10
  522. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  523. package/dist/tracking/ui/card.d.ts +2 -2
  524. package/dist/tracking/ui/card.d.ts.map +1 -1
  525. package/dist/tracking/ui/card.js +2 -2
  526. package/dist/tracking/ui/card.js.map +1 -1
  527. package/dist/tracking/ui/readable.d.ts +14 -0
  528. package/dist/tracking/ui/readable.d.ts.map +1 -0
  529. package/dist/tracking/ui/readable.js +60 -0
  530. package/dist/tracking/ui/readable.js.map +1 -0
  531. package/dist/utils/fetch.d.ts +9 -2
  532. package/dist/utils/fetch.d.ts.map +1 -1
  533. package/dist/utils/fetch.js +6 -5
  534. package/dist/utils/fetch.js.map +1 -1
  535. package/dist/utils/lspClient.types.d.ts +2 -0
  536. package/dist/utils/lspClient.types.d.ts.map +1 -1
  537. package/dist/utils/websocket.d.ts +65 -2
  538. package/dist/utils/websocket.d.ts.map +1 -1
  539. package/dist/utils/websocket.js +276 -44
  540. package/dist/utils/websocket.js.map +1 -1
  541. package/package.json +14 -6
  542. package/.claude/CLAUDE.md +0 -317
  543. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  544. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  545. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  546. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  547. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  548. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  549. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  550. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  551. package/.tasks/INDEX.md +0 -111
  552. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  553. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  554. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  555. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  556. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  557. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  558. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  559. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  560. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  561. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  562. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  563. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  564. package/CODE_OF_CONDUCT.md +0 -105
  565. package/CONTRIBUTING.MD +0 -78
  566. package/SECURITY.md +0 -3
  567. package/chromatic.config.json +0 -5
  568. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  569. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  570. package/design/COMPACT_PARITY.md +0 -85
  571. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  572. package/design/FORM_ENGINE_COMPACT.md +0 -300
  573. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  574. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  575. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  576. package/design/IDE_INTEGRATION.md +0 -64
  577. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  578. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  579. package/design/SMART_EDITOR_UX.md +0 -438
  580. package/design/TRACKING.md +0 -290
  581. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  582. package/src/components/Description/index.tsx +0 -254
  583. package/src/components/Description/markdownRendererContext.tsx +0 -29
  584. package/src/components/FocusedEditing/index.tsx +0 -50
  585. package/src/components/codeSize/index.tsx +0 -79
  586. package/src/components/composer/Composer.stories.tsx +0 -238
  587. package/src/components/composer/Composer.tsx +0 -554
  588. package/src/components/composer/helpers.ts +0 -74
  589. package/src/components/composer/index.ts +0 -2
  590. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  591. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  592. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  593. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  594. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  595. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  596. package/src/components/dpqlEditor/index.ts +0 -41
  597. package/src/components/dpqlEditor/types.ts +0 -203
  598. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  599. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  600. package/src/components/form/engine/CompactRow.tsx +0 -2620
  601. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  602. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  603. package/src/components/form/engine/FormEngine.tsx +0 -4569
  604. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  605. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  606. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  607. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  608. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  609. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  610. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  611. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  612. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  613. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  614. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  615. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  616. package/src/components/form/engine/compactRowContext.ts +0 -148
  617. package/src/components/form/engine/compactRowStyles.ts +0 -898
  618. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  619. package/src/components/form/engine/optionActions.ts +0 -128
  620. package/src/components/form/engine/optionsContext.ts +0 -24
  621. package/src/components/form/engine/readFirst.ts +0 -1077
  622. package/src/components/form/engine/rendererTypes.ts +0 -107
  623. package/src/components/form/engine/revealRow.ts +0 -123
  624. package/src/components/form/engine/rowFocus.ts +0 -101
  625. package/src/components/form/engine/rowMenuContext.ts +0 -159
  626. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  627. package/src/components/form/engine/typeChoices.ts +0 -63
  628. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  629. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  630. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  631. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  632. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  633. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  634. package/src/components/form/engine/variants/variantModel.ts +0 -223
  635. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  636. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  637. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  638. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  639. package/src/components/form/expressions/argumentPresence.ts +0 -213
  640. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  641. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  642. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  643. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  644. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  645. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  646. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  647. package/src/components/form/expressions/builder/index.tsx +0 -1545
  648. package/src/components/form/expressions/builder/item.tsx +0 -89
  649. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  650. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  651. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  652. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  653. package/src/components/form/expressions/mockExpressions.ts +0 -317
  654. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  655. package/src/components/form/expressions/types.ts +0 -110
  656. package/src/components/form/expressions/useExpressions.ts +0 -101
  657. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  658. package/src/components/form/fields/Field.stories.tsx +0 -143
  659. package/src/components/form/fields/Field.tsx +0 -732
  660. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  661. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  662. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  663. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  664. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  665. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  666. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  667. package/src/components/form/fields/binary/Binary.tsx +0 -91
  668. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  669. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  670. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  671. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  672. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  673. package/src/components/form/fields/color/Color.tsx +0 -46
  674. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  675. package/src/components/form/fields/cron/Cron.tsx +0 -80
  676. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  677. package/src/components/form/fields/date/Date.tsx +0 -55
  678. package/src/components/form/fields/emittedValues.ts +0 -70
  679. package/src/components/form/fields/file/File.stories.tsx +0 -161
  680. package/src/components/form/fields/file/File.tsx +0 -227
  681. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  682. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  683. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  684. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  685. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  686. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  687. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  688. package/src/components/form/fields/number/Number.tsx +0 -160
  689. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  690. package/src/components/form/fields/object/Object.tsx +0 -255
  691. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  692. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  693. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  694. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  695. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  696. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  697. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  698. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  699. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  700. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  701. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  702. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  703. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  704. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  705. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  706. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  707. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  708. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  709. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  710. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  711. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  712. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  713. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  714. package/src/components/form/fields/schema-definition/types.ts +0 -185
  715. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  716. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  717. package/src/components/form/fields/select/Select.tsx +0 -624
  718. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  719. package/src/components/form/fields/string/String.stories.tsx +0 -86
  720. package/src/components/form/fields/string/String.tsx +0 -43
  721. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  722. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  723. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  724. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  725. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  726. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  727. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  728. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  729. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  730. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  731. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  732. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  733. package/src/components/form/fields/url/Url.tsx +0 -85
  734. package/src/components/form/index.tsx +0 -47
  735. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  736. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  737. package/src/components/imageLightbox/index.ts +0 -1
  738. package/src/components/log/Log.stories.tsx +0 -333
  739. package/src/components/log/Log.tsx +0 -285
  740. package/src/components/menu/Menu.stories.tsx +0 -155
  741. package/src/components/menu/Menu.tsx +0 -312
  742. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  743. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  744. package/src/components/qonsoleSmartInput/index.ts +0 -16
  745. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  746. package/src/components/qonsoleSmartInput/types.ts +0 -133
  747. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  748. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  749. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  750. package/src/components/searchFilterBar/index.ts +0 -1
  751. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  752. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  753. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  754. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  755. package/src/components/smartEditor/helpers.ts +0 -217
  756. package/src/components/smartEditor/index.ts +0 -35
  757. package/src/components/smartEditor/styling.ts +0 -45
  758. package/src/components/smartEditor/types.ts +0 -211
  759. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  760. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  761. package/src/components/smartEditor/useLspHover.ts +0 -230
  762. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  763. package/src/components/smartEditor/useLspSession.ts +0 -231
  764. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  765. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  766. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  767. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  768. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  769. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  770. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  771. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  772. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  773. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  774. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  775. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  776. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  777. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  778. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  779. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  780. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  781. package/src/components/supportTicket/index.ts +0 -10
  782. package/src/components/supportTicket/meta.ts +0 -206
  783. package/src/components/supportTicket/ticketModel.ts +0 -131
  784. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  785. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  786. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  787. package/src/components/ticketReferences/index.ts +0 -2
  788. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  789. package/src/components/ticketThread/TicketThread.tsx +0 -719
  790. package/src/components/ticketThread/index.ts +0 -6
  791. package/src/contexts/FetchContext.tsx +0 -25
  792. package/src/contexts/ReqraftContext.tsx +0 -9
  793. package/src/contexts/StorageContext.tsx +0 -33
  794. package/src/global.d.ts +0 -4
  795. package/src/helpers/allowedValues.ts +0 -249
  796. package/src/helpers/choiceChip.ts +0 -227
  797. package/src/helpers/common.ts +0 -326
  798. package/src/helpers/dpqlDetection.ts +0 -209
  799. package/src/helpers/expressions.ts +0 -140
  800. package/src/helpers/optionUiTypes.ts +0 -199
  801. package/src/helpers/options.ts +0 -150
  802. package/src/helpers/providerValue.ts +0 -125
  803. package/src/helpers/scrollbar.ts +0 -32
  804. package/src/helpers/singleLineString.ts +0 -61
  805. package/src/helpers/templateItems.ts +0 -81
  806. package/src/helpers/templateText.ts +0 -350
  807. package/src/helpers/templates.ts +0 -602
  808. package/src/helpers/validations.ts +0 -2085
  809. package/src/hooks/useArgSchema.ts +0 -37
  810. package/src/hooks/useCoarsePointer.ts +0 -30
  811. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  812. package/src/hooks/useFetch/useFetch.tsx +0 -154
  813. package/src/hooks/usePhoneViewport.ts +0 -34
  814. package/src/hooks/useQorusTypes.ts +0 -233
  815. package/src/hooks/useReqraftProperty.ts +0 -16
  816. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  817. package/src/hooks/useStorage/useStorage.ts +0 -35
  818. package/src/hooks/useTemplates.ts +0 -123
  819. package/src/hooks/useValidation.ts +0 -9
  820. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  821. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  822. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  823. package/src/index.tsx +0 -86
  824. package/src/providers/FetchProvider.tsx +0 -40
  825. package/src/providers/ReqraftProvider.tsx +0 -52
  826. package/src/providers/StorageProvider.tsx +0 -131
  827. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  828. package/src/stores/currentUser/currentUser.tsx +0 -94
  829. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  830. package/src/stories/Tests/utils.ts +0 -320
  831. package/src/stories/storyNetwork.ts +0 -92
  832. package/src/stories/tracking.tsx +0 -206
  833. package/src/tracking/browser/attach.ts +0 -186
  834. package/src/tracking/browser/env.ts +0 -78
  835. package/src/tracking/core/consent.ts +0 -37
  836. package/src/tracking/core/engagement.ts +0 -47
  837. package/src/tracking/core/experiments.ts +0 -258
  838. package/src/tracking/core/hash.ts +0 -26
  839. package/src/tracking/core/ids.ts +0 -25
  840. package/src/tracking/core/observable.ts +0 -23
  841. package/src/tracking/core/queue.ts +0 -131
  842. package/src/tracking/core/sections.ts +0 -166
  843. package/src/tracking/core/storage.ts +0 -69
  844. package/src/tracking/core/tracker.ts +0 -417
  845. package/src/tracking/core/types.ts +0 -162
  846. package/src/tracking/core/utm.ts +0 -23
  847. package/src/tracking/index.ts +0 -72
  848. package/src/tracking/markup.ts +0 -17
  849. package/src/tracking/react/Experiment.tsx +0 -44
  850. package/src/tracking/react/TrackingProvider.tsx +0 -56
  851. package/src/tracking/react/hooks.ts +0 -106
  852. package/src/tracking/react/index.ts +0 -13
  853. package/src/tracking/testing.ts +0 -108
  854. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  855. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  856. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  857. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  858. package/src/tracking/ui/anchor.ts +0 -180
  859. package/src/tracking/ui/card.ts +0 -464
  860. package/src/tracking/ui/client.ts +0 -117
  861. package/src/tracking/ui/index.ts +0 -77
  862. package/src/tracking/ui/types.ts +0 -110
  863. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  864. package/src/types/Form.ts +0 -29
  865. package/src/types.ts +0 -14
  866. package/src/utils/datetime.ts +0 -10
  867. package/src/utils/fetch.ts +0 -457
  868. package/src/utils/lspClient.ts +0 -711
  869. package/src/utils/lspClient.types.ts +0 -211
  870. package/src/utils/queryUnlessCancelled.ts +0 -28
  871. package/src/utils/websocket.ts +0 -293
  872. package/vite.config.ts +0 -58
  873. package/vitest.config.ts +0 -69
@@ -1,419 +0,0 @@
1
- # Form engine — field migration from qorus-ide
2
-
3
- Locked design + rationale for closing the gap between Reqraft's form
4
- engine (`src/components/form/`) and qorus-ide's older `Field` system
5
- (`qorus-frontend/qorus-ide/src/components/Field/`). The first concrete
6
- deliverables are (1) a Reqraft **`auto` field** and (2) the migrated
7
- **DataSchema editor** (`schema-definition`).
8
-
9
- Execution checklists live at:
10
- - [`.tasks/REQRAFT_AUTO_FIELD.md`](../.tasks/REQRAFT_AUTO_FIELD.md) — phase 1
11
- - [`.tasks/SCHEMA_DEFINITION_FIELD.md`](../.tasks/SCHEMA_DEFINITION_FIELD.md) — phase 2
12
-
13
- ## Background — why fields are "missing"
14
-
15
- There are **two parallel field systems**:
16
-
17
- | | qorus-ide `Field/` | Reqraft `form/` |
18
- |---|---|---|
19
- | Origin | 2024-01 — the original | 2024-04 — a cleaner rebuild |
20
- | Field types | ~68 | ~15 |
21
- | Dispatcher | `Field/index.tsx` → `auto.tsx` | `form/fields/Field.tsx` (`FormField`) |
22
- | Polymorphic core | **`AutoField`** (1017 lines) | `TemplateField` → `FormField` (thin) |
23
-
24
- New field types land in **qorus-ide first** (that's the live product
25
- surface) and get migrated to Reqraft incrementally — the DPQL / Smart
26
- editors (`0.10.0`) were the most recent example. "Missing fields" =
27
- Reqraft is younger and still catching up, not a deliberate omission.
28
-
29
- The full gap (qorus-ide types absent from Reqraft) breaks into three
30
- buckets:
31
-
32
- 1. **Generic data fields** — portable, belong in a toolkit:
33
- `auto`, `schema-definition`, `data-provider`, `options`,
34
- `option_hash`, `byte-size`, `url`, `code-editor`, `array-of-pairs`,
35
- `multi-select`/`select-array`, `enum`-as-radio, `collection-documents`.
36
- 2. **Server-driven `ui_type` editors** — `tool-catalog`,
37
- `processor-mappings`, `test-cases`, `active-windows` (`dpql` already
38
- migrated).
39
- 3. **App-coupled / IDE-specific** — the ~20 `InterfaceSelector` types
40
- (`workflow`, `service`, `job`, `mapper`, `fsm`, the `schema`
41
- *interface picker*, …), plus `class-array`, `fsm-list`,
42
- `service-events`, `processor`, `api-manager`, `tree`, etc. These
43
- depend on qorus-ide app context (`InitialContext`, `TextContext`,
44
- `qorus_instance`, the `interfaceToPlural` domain map) and are **out
45
- of scope** for the generic toolkit.
46
-
47
- This batch tackles bucket 1, in the order dictated by the dependency
48
- below.
49
-
50
- ## The keystone — `auto` is a prerequisite, not an option
51
-
52
- qorus-ide's `AutoField` is the polymorphic renderer **most fields
53
- funnel through.** Reqraft has no equivalent: `FormField` /
54
- `TemplateField` collapse `auto`/`any`/`binary` → `long-string` (a
55
- plain textarea) via `mapQorusTypeToFormFieldType`
56
- ([`TemplateField.tsx:49-77`](../src/components/form/fields/template/TemplateField.tsx)),
57
- and there is no type-picker UI at all.
58
-
59
- This blocks the schema editor directly. The DataSchema catalogue's
60
- leaf-type adapter falls back to `auto` for anything that isn't a plain
61
- primitive ([`catalog.ts` `catalogTypeToFieldType`](../../qorus-ide/src/components/Field/schemaDefinition/catalog.ts)):
62
-
63
- ```ts
64
- default:
65
- // `*auto`, `auto`, and anything unrecognised fall back to the
66
- // free-form `auto` field so no catalogue value is ever undroppable.
67
- return { fieldType: 'auto' };
68
- ```
69
-
70
- So **"migrate the schema field" and "use the auto field for most
71
- fields" are the same thread.** Build the `auto` field first; the
72
- schema editor (and the rest of bucket 1) render their fields through
73
- it.
74
-
75
- ## Goal
76
-
77
- 1. Give Reqraft a real `auto` field: a type-picker + polymorphic
78
- dispatcher that mirrors qorus-ide's `AutoField`, wired into the
79
- existing `FormField` / `TemplateField` / `FormEngine` stack so every
80
- consumer (including `FormEngine`-driven nested forms) gains it for
81
- free.
82
- 2. Migrate `SchemaDefinitionEditor` onto Reqraft's `FormEngine` as the
83
- first complex, server-catalogue-driven field — proving the pattern
84
- for buckets 1 & 2.
85
-
86
- ## Phase 1 — the Reqraft `auto` field
87
-
88
- ### What `AutoField` does in qorus-ide (the spec to port)
89
-
90
- From [`qorus-ide/src/components/Field/auto.tsx`](../../qorus-ide/src/components/Field/auto.tsx):
91
-
92
- - **Type resolution.** Derives a `currentInternalType` from
93
- `defaultType`, or infers it from the value via `getTypeFromValue`
94
- (Reqraft already has this helper at `helpers/validations`). Handles
95
- `auto` / `any` by inference.
96
- - **Type picker.** When the type is `auto`/`any` (or `allowedTypes`
97
- has >1 entry), renders a `SelectField` of the types a typed-in value
98
- can have (`getImmediateValueTypes()`: True/False, Date, Text, Binary,
99
- Decimal, List, Key/Value {}, Integer, RGB Color), with no item count,
100
- letting the user pick the concrete type; the chosen type then renders
101
- the matching sub-field. No Qore soft type (`softint`, `softlist`, …) is
102
- offered: a soft type only declares a conversion for what a variable or
103
- parameter is given, which means nothing for a literal. A soft type in a
104
- caller's `allowedTypes` is offered once, as its base type, and a soft
105
- type that arrives as `defaultType` / `defaultInternalType` is edited
106
- with its base type's editor (`editorTypeOf()`) while the declared type
107
- is what `onChange` reports. (`noSoft` is deprecated and inert.)
108
- - **Concrete dispatch.** A switch over the resolved type → the right
109
- field component. In Reqraft this delegates back into the existing
110
- `FormField` switch (which already covers string/bool/int/float/
111
- rgbcolor/long-string/markdown/cron/richtext/date/file/select/hash/
112
- list) rather than duplicating it.
113
- - **Null handling.** A "Set as null" / "Unset null" toggle when the
114
- field `canBeNull`.
115
- - **Allowed values.** Already handled by `FormField.renderAllowedValues`
116
- — reuse it.
117
-
118
- ### Approach — a new `AutoFormField`, folded into the dispatcher
119
-
120
- Create `src/components/form/fields/auto/AutoFormField.tsx`:
121
-
122
- - Owns the type-picker UI and the `auto`/`any` → concrete-type
123
- resolution + null toggle.
124
- - For the resolved concrete type, **delegates to the existing
125
- `FormField`** (pass the resolved `type` + `value` + `onChange`). No
126
- re-implementation of the per-type rendering — `FormField` stays the
127
- single source of truth for "how to render type X".
128
- - Add `case 'auto': case 'any':` to `FormField`'s switch so the
129
- dispatcher routes to `AutoFormField` (mirrors how qorus-ide's
130
- `Field/index.tsx` routes `type="auto"` → `AutoField`). Because
131
- `FormEngine` → `TemplateField` → `FormField`, nested schema-driven
132
- forms gain `auto` automatically.
133
- - Update both `mapQorusTypeToFormFieldType` copies (in `Field.tsx` and
134
- `TemplateField.tsx`) so `auto`/`any` route to `'auto'` instead of
135
- collapsing to `'long-string'`. **This is the one behaviour change for
136
- existing consumers** — see Migration impact.
137
-
138
- **Revised 2026-09-14 — an untyped field is typed into, never asked for a
139
- type.** No field shows the type picker's *"Please select data type"*
140
- anymore. It asked a question about storage ("is this Text or a Number?")
141
- that an author writing a value often cannot answer, before they could write
142
- anything, and it replaced a typable field with a pick-only one.
143
-
144
- - **`AutoFormField`**, for a type that is still `auto` / `any`, renders the
145
- long-string editor and stores what is typed as untyped — exactly what
146
- template mode stores. The picker appears only where there is a real
147
- choice: the schema allows several concrete types (`allowed_types`), or
148
- the field already holds a value of a concrete type.
149
- - **An explicit type** is chosen from the field's ⋮ menu — the per-type
150
- entries under *Set Custom Value* (see `engine/typeChoices.ts`).
151
- - **`TemplateField`** opens an empty untyped field that may hold a custom
152
- value in template mode, whose editor is typable and offers the templates.
153
- It decides that from the field's props, not from whether the template list
154
- has arrived: on a cold load the type-filtered list does not exist at
155
- mount, and a landing chosen from it put every such field on the picker.
156
- - A field that may NOT hold a custom value (FormEngine passes
157
- `allowCustomValues={false}` for `any`) still opens on its template menu —
158
- a pick-only control because the schema made it one, not a type question.
159
- - Emptying that editor leaves the field in template mode, where an empty
160
- field lands. Switching to custom mode mounted a different editor in place
161
- of the one being typed in, so the last backspace lost the cursor.
162
-
163
- Guarded by `__tests__/untypedFieldNeverAsksForAType.test.tsx` and the
164
- `AutoFormField` / `TemplateField` stories (`Empty`, `ViaFormEngine`,
165
- `AutoComponent`, `EmptyAnyOpensOnTemplates`).
166
-
167
- **Revised 2026-09-15 — template mode draws references as named chips.**
168
- Template mode's typable editor (a string or untyped field that may also hold
169
- a custom value) is `RichTextFormField` with `valueFormat: 'text'`, not a
170
- textarea. The field still stores the plain string; each template reference in
171
- it (`TEMPLATE_TOKEN_SOURCE`) is drawn as a chip, so a chosen template reads as
172
- the name it was chosen by — in the Visual builder's operands and in every
173
- string field that takes templates. A textarea spelled it `$local:name`.
174
-
175
- - The chip's label is `templateChipLabel`: the catalogue's name for the
176
- reference, else the reference as the DPQL Text view labels it
177
- (`local: name`), so one reference reads alike in both views. Its hover and
178
- colour are the collapsed row's (`ReadOnlyTemplateTag`).
179
- - The editor keeps its own document and rebuilds it only when the stored
180
- string changes from outside: rebuilding from the echo of what was typed
181
- would hand the editor a new tree per keystroke, which moves the cursor.
182
- - `string` holds one line: Enter adds none, and a pasted break is flattened.
183
- - A value that is exactly one braced reference (`$data:{…}`, machine-written)
184
- keeps its pick-only chip selector, unchanged.
185
- - Only a value that STARTS with a reference enters template mode, so
186
- `AutoFormField`'s text editor — `string`, `long-string` and untyped — is the
187
- same chip editor whenever the field offers templates: text like
188
- `Interface $local:id failed` reads with its references named too. `data`
189
- and `binary` keep the textarea (encoded content), as does a field with no
190
- templates to offer. Guarded by `__tests__/textFieldDrawsTemplateChips.test.tsx`
191
- and the `TemplateField` stories *Template References In Text* (+ *On Phone*).
192
-
193
- This reverses the 2026-08-27 choice (`85ba6ec`) to keep plain tokens as raw
194
- text: that review rejected a *pick-only* chip because it could not be typed
195
- into, and this editor is both. Conversion lives in `helpers/templateText.ts`
196
- (`__tests__/templateText.test.ts`, `__tests__/richTextTextValue.test.tsx`).
197
-
198
- **Revised 2026-09-16 — a field offers a template list only when it has one,
199
- and template mode has a way out.** Two rules about the menu, both reported
200
- from the stories:
201
-
202
- - **No empty menu.** `TemplateField` hands its editor `undefined` — not an
203
- empty list — when there is nothing to offer: the field's schema does not
204
- allow templates (a `FormEngine` option without `supports_templates`), or the
205
- type filter emptied the catalogue. An editor GIVEN a list draws the control
206
- that opens it, so a list with no items opened a menu onto nothing. Guarded
207
- by `__tests__/noEmptyTemplateMenu.test.tsx`.
208
- - **A way back to a custom value.** Template mode's chip editor draws no `×`
209
- of its own, so a field that entered template mode from the ⋮ ("Use Template")
210
- offered nothing to leave it with. The ⋮ now carries "Use Custom Value"
211
- whenever the field is in template mode and accepts custom values; leaving
212
- clears the value only when it holds a reference (which would put the field
213
- straight back into template mode) and keeps anything the author typed.
214
- - **A lone group in the ⋮ opens itself.** Two of the menu's groups are
215
- collapsed sections (`MenuActionsSection`, `CustomMenuItems`), so a menu
216
- holding nothing but one of them asked for a click to reach the only thing on
217
- offer — on an untyped field, "Set Custom Value" hiding the data types behind
218
- it. It now starts expanded when it is the menu's only group; it keeps its
219
- label, so the rows still say what they are, and can still be collapsed. Where
220
- the menu holds more than one group the sections stay shut: there the click is
221
- the choice. The same rule the template list follows for a lone category, and
222
- the row menu already publishes these rows flat. Guarded by
223
- `__tests__/loneMenuSectionOpensItself.test.tsx` (the section's own contract)
224
- and the story *Auto · Via Form Engine Menu Opens Its Only Group* (the rule, in
225
- a real browser — the menu lives in a popover jsdom never opens).
226
- - **No document toolbar on a form field.** `RichTextFormField` asked Reqore
227
- for undo and redo but not styling, and Reqore draws that bar as a panel as
228
- wide as the tag list: an empty 600px box under the field holding two greyed
229
- icons — they are disabled until there is history to walk. It is off for every
230
- form use now; both still work from the keyboard, where every other text
231
- field's do. The `richtext` type (the "Text" row of the data-type submenu) is
232
- where this was reported. Guarded by
233
- `__tests__/richTextFieldHasNoToolbar.test.tsx`.
234
-
235
- **Revised 2026-09-16 — a field says what it takes, and an untyped one is
236
- checked as the type it was given.** Two rules from the same report (picking
237
- "Binary" and being told nothing about the value):
238
-
239
- - **A binary field names its encodings.** Its placeholder reads
240
- `Base64 — or 0x-prefixed hex, or a data:…;base64 URL`, which is what the
241
- server actually decodes: Qorus `lib/misc.ql`
242
- (`_priv_parse_ui_hash_value_intern`) reads base64 unless the value starts
243
- `0x` or `data:<mime>;base64,`, symmetric with the `toBase64()` it encodes
244
- with (`Classes/UserApi.qc`). Bare hex is the trap — it is not rejected, it is
245
- read as base64 and corrupts. `validateField`'s `binary` branch already
246
- accepted exactly these three spellings; the placeholder is that rule said
247
- before the fact instead of after. A caller's own placeholder still wins, and
248
- `data` is left alone — it is not base64. Guarded by
249
- `__tests__/binaryFieldSaysWhatItTakes.test.tsx`.
250
- - **An untyped option is validated as the type its VALUE carries.** `auto` and
251
- `any` declare no type: the author picks one and it is recorded beside the
252
- value. `getOptionFieldMessages` read the schema first, so a binary value was
253
- validated as `auto` — which auto-detects from the value and accepts whatever
254
- is there — while the form's own check prefers the stored type
255
- (`getOptionFieldStorageType`). The two disagreed, so the form said "a field
256
- is not valid and requires attention" while the field it meant gave no reason.
257
- The messages now use the same precedence; a schema that names a concrete type
258
- still wins, because the schema is what the field accepts.
259
- `isUntypedOptionType` (`helpers/optionUiTypes.ts`) is the shared spelling.
260
- Guarded by `__tests__/untypedFieldReportsItsChosenType.test.ts`.
261
-
262
- **Revised 2026-09-16 (audit pass) — three rules the review pulled out of the
263
- above.**
264
-
265
- - **Whatever the field's own ⋮ offers, its ROW menu offers too.** A field
266
- inside a compact row draws no menu of its own and publishes into the row's
267
- (`rowMenuContext`). "Use Custom Value" was added to the drawn menu only, so
268
- on the surface most options are actually edited from, template mode was still
269
- a one-way door. The published list now carries it on the same condition, with
270
- its own token in `publishedKey` — that key is what gates re-publication, so a
271
- row without one never re-publishes when template mode flips. Guarded by
272
- `__tests__/rowMenuOffersTheWayOutOfTemplateMode.test.tsx`.
273
- - **`RichTextFormField` takes `tags` and does not forward it.** The editor's
274
- `tags` is its template catalogue; a form field's `tags` is the chips to show.
275
- Two different things under one name, and `{...rest}` sat after the computed
276
- value, so a field spreading its props erased the template list — patched at
277
- two call sites with `omit(rest, 'tags')` and latent at two more. `rest` is now
278
- spread FIRST, `tags` is declared as the field's chips and dropped, and the
279
- patches are gone.
280
- - **One list of the untyped spellings.** `any`/`auto` was hand-rolled in eight
281
- places. `UNTYPED_OPTION_TYPES` / `isUntypedOptionType` in
282
- `helpers/optionUiTypes.ts` is now the one, and `engine/typeChoices`
283
- re-exports it as `BuiltInAnyLikeTypes` for its existing callers. It lives in
284
- helpers because a helper cannot import from a component.
285
-
286
- Note that a `FormEngine` option only offers templates when it declares
287
- `supports_templates` — a field with no ⋮ template entry is that option's
288
- schema speaking, not a defect.
289
-
290
- ### Out of scope for phase 1
291
-
292
- - The `type-depends-on` / `requestFieldData` cross-field type
293
- resolution (qorus-ide auto.tsx `234-261`) — IDE-specific; stub the
294
- prop, don't wire it.
295
- - `data-provider` / `connection` / `InterfaceSelector` branches inside
296
- qorus-ide's AutoField switch — those are bucket 3, not migrated.
297
- - Expression / template values (`is_expression`) beyond what
298
- `TemplateField` already does.
299
-
300
- ## Phase 2 — the DataSchema editor (`schema-definition`)
301
-
302
- ### Why it fits Reqraft's form engine
303
-
304
- `SchemaDefinitionEditor` is **a server-catalogue-driven nested form**,
305
- which is exactly what `FormEngine` is. Concretely, the editor:
306
-
307
- - Fetches one static catalogue: `GET schemas?action=options`
308
- ([`useSchemaOptionCatalog.ts`](../../qorus-ide/src/components/Field/schemaDefinition/useSchemaOptionCatalog.ts),
309
- uses Reqraft's own `useFetch`), shape `ISchemaOptionCatalog`. 100%
310
- server-driven — no FE field fallbacks.
311
- - Walks the catalogue recursively (`CatalogNodeEditor`,
312
- `CatalogGroupBody`), discriminating each node as leaf / group / map /
313
- list ([`catalog.ts`](../../qorus-ide/src/components/Field/schemaDefinition/catalog.ts)).
314
- - Renders each **leaf** by adapting it to an options-schema entry
315
- (`catalogLeafToFieldSchema` → `IOptionsSchema[string]`) and handing
316
- it to qorus-ide's `<Options>` field
317
- ([`CatalogLeafForm.tsx`](../../qorus-ide/src/components/Field/schemaDefinition/CatalogLeafForm.tsx)).
318
- **Reqraft's `FormEngine` consumes the same `IQorusFormSchema` shape**
319
- (`options` + `value` + `onChange`) — this is the single integration
320
- seam.
321
-
322
- So the bulk of the editor (catalogue machinery, types, map/list drawer
323
- editors, reference-suggestion logic) is generic code with zero
324
- qorus-ide coupling and copies over near-verbatim. The real work is the
325
- `<Options>` → `FormEngine` adapter and porting two bespoke tabs.
326
-
327
- ### Approach
328
-
329
- 1. Copy the catalogue-generic machinery into
330
- `src/components/form/fields/schema-definition/`: `types.ts`,
331
- `catalog.ts`, `helpers.ts`, `referenceSuggestions.tsx`,
332
- `catalogContext.tsx`, `useSchemaOptionCatalog.ts` (repoint `useFetch`
333
- import to the Reqraft barrel — already where qorus-ide imports it
334
- from).
335
- 2. **Replace the leaf renderer's `<Options>` with Reqraft `FormEngine`**
336
- in `CatalogLeafForm`. `catalogLeafToFieldSchema` already emits the
337
- right shape; the adapter wires `value`/`onChange`. This is where the
338
- phase-1 `auto` field pays off — leaves typed `auto` now render a
339
- real type-picker instead of a textarea. (Revised 2026-09-14: an empty
340
- `auto` leaf is a typable editor again, with the type on its ⋮ menu — see
341
- phase 1.)
342
- 3. Port `CatalogNodeEditor` (group/map/list dispatch + drawer editors),
343
- swapping qorus-ide's `QorusTable` for `ReqoreTable` (or a Reqraft
344
- table if one exists) and `Hint` for a Reqraft equivalent or nothing.
345
- 4. Port the two bespoke layout tabs — `TablesTab` (inline-expandable
346
- panels) + `TableEditor`, and `MigrationsTab` (version timeline) —
347
- plus `InlineValidationBanner`. These are presentation wrappers
348
- around the generic renderer.
349
- 5. Expose as a Reqraft form field: add `case 'schema-definition':` to
350
- `FormField` (and `ui_type === 'schema-definition'`), mirroring
351
- qorus-ide's `auto.tsx` ui_type branch.
352
- 6. Stories + tests, mock catalogue (port `mockCatalog.ts` /
353
- `mockDefinition.ts`).
354
-
355
- ### Open question (resolve during phase 2)
356
-
357
- - **`QorusTable` replacement.** qorus-ide's `QorusTable` adds search +
358
- sort over `ReqoreTable`. Decide: use `ReqoreTable` directly (and
359
- re-add search/sort only if a section is large), or port a thin table
360
- helper into Reqraft. Default: `ReqoreTable` directly; revisit if a
361
- catalogue map/list section is routinely large.
362
-
363
- ## Out of scope (whole batch)
364
-
365
- - Bucket 3 (interface selectors incl. the `schema` *interface picker*,
366
- and all IDE-specific fields). The `schema` the user asked about is the
367
- **DataSchema editor**, not the interface picker — confirmed.
368
- - The other bucket-2 editors (`tool-catalog`, `processor-mappings`,
369
- `test-cases`, `active-windows`). They follow the same pattern the
370
- schema editor establishes and can be separate task files later.
371
- - `data-provider` / `options` / `option_hash` / `byte-size` / `url` /
372
- `code-editor` fields. Tracked for a later batch; several become much
373
- cheaper once the `auto` field exists.
374
-
375
- ## Locked decisions
376
-
377
- - **`auto` first, schema editor second.** The schema editor's leaf
378
- adapter depends on `auto`; building the editor first would degrade
379
- every non-primitive leaf to a textarea.
380
- - **Delegate, don't duplicate.** `AutoFormField` resolves the type and
381
- delegates to `FormField`; `FormField` remains the only place that
382
- knows how to render a concrete type.
383
- - **One integration seam for the schema editor.** Everything funnels
384
- through `FormEngine` at the leaf — we do not port qorus-ide's
385
- `<Options>` (`systemOptions.tsx`, 1500+ lines, deeply IDE-coupled).
386
- - **No app context in Reqraft.** Anything needing `InitialContext` /
387
- `TextContext` / `qorus_instance` stays in qorus-ide. The schema
388
- editor qualifies because it needs none of these.
389
-
390
- ## Migration impact
391
-
392
- - **Phase 1 behaviour change.** Fields explicitly typed `auto` / `any`
393
- currently render as a `long-string` textarea. After phase 1 they
394
- render the type-picker + resolved sub-field. Any consumer relying on
395
- "auto == textarea" changes — but no existing Reqraft consumer sets
396
- `type="auto"` (Reqraft never advertised it), so the real-world blast
397
- radius is nil. New, additive `'auto'` handling otherwise; no other
398
- type's rendering changes.
399
- - **Phase 2 is purely additive** — a new field type, new files, no
400
- existing-field changes.
401
- - **Release.** Separate from the in-flight `0.10.0` SmartEditor batch;
402
- target a later minor (e.g. `0.11.0`). Tracked as new rows in
403
- [`.tasks/INDEX.md`](../.tasks/INDEX.md).
404
-
405
- ## Status
406
-
407
- **Design locked 2026-06-09.** First two phases scoped (auto field,
408
- schema editor). Buckets 2 (remaining `ui_type` editors) and the rest
409
- of bucket 1 are acknowledged but not yet scoped — they get their own
410
- task files when picked up. Revisions to this doc require an explicit
411
- "Revised &lt;date&gt;" note per the repo workflow.
412
-
413
- **Revised 2026-06-09 (same day, post-implementation).** Two items that
414
- were deferred during implementation were then completed in a follow-up
415
- pass and are no longer open: (a) bare `soft*` (and `binary`) types now
416
- render through `FormField` directly, not only via the auto field; (b)
417
- the `schema-definition` field is reachable via the `ui_type` /
418
- `FormEngine` path, not only the direct `type` path. Both verified by
419
- story play tests. Scope of the two phases is otherwise unchanged.
@@ -1,64 +0,0 @@
1
- # IDE → reqraft integration checklist
2
-
3
- When qorus-ide swaps its field stack to reqraft's ported components
4
- (the "Phase E" consumption that the FIELD_STACK / EXPRESSION_BUILDER
5
- batches were built for), the components are drop-in **except** for a set
6
- of features that reqraft deliberately did not absorb — each because it
7
- couples to an IDE-only system (app registry, live catalogues, per-user
8
- saved state). Every one of these has an **injection seam** already in the
9
- ported code; the IDE re-attaches its own implementation through that prop.
10
-
11
- Nothing here is broken in reqraft. The risk is **silent regression** — a
12
- feature disappearing because a seam wasn't wired. This file is the
13
- checklist the IDE-integration PR ticks off so that can't happen.
14
-
15
- ## The seams
16
-
17
- | Feature that regresses if skipped | Seam (reqraft prop) | What the IDE passes | If skipped |
18
- |---|---|---|---|
19
- | **Saved values** (Save-Value button + saved-value suggestions) | `TemplateField` / `AutoFormField` → `menuItems` | The IDE's existing `SaveValueButton` (it carries its own `useQorusStorage('savedValues')` context, so it works as-injected). The inert `allowSaving` / `showSavedValues` props stay for call-site parity. | Field renders, no save button, saved values unreadable — **silent** |
20
- | **IDE-only field editors** for types reqraft doesn't port: `data-provider` (ConnectorField), `processor-mappings`, `tool-catalog`, `test-cases`, `active-windows`, `collection-documents`, `code-editor`, `option_hash`, the InterfaceSelector family (`mapper`…`value-map`), `connection` | `AutoFormField` → `componentOverrides={{ <type>: Editor }}` (dispatch at AutoFormField.tsx:340) | The IDE's editor component per type | The type renders the `Unknown type!` danger tag — **loud-ish** (visible, not a crash) |
21
- | **Connection management** (inline create/edit on `connection` fields) | same `componentOverrides` entry for `connection` | The IDE's connection editor (it owns the CRUD/dialog/permissions) | No inline connection actions — **silent** |
22
- | **App-action badges** (app logos/icons on template dropdown rows) | `buildTemplates` payload (`logo` field flows through to `image:` — templates.ts:192) | Nothing extra — feed templates from `system/getContextData` through `buildTemplates`; logos ride along for free | Templates render without app logos — **silent, cosmetic** |
23
- | **AI assistance** in the ExpressionBuilder | `ExpressionField` → `extraActions` (panel-action array or `({selectedExpression, value}) => actions`) — forwarded to the builder and into every operand row. *Revised 2026-09-07:* the seam was declared on `ExpressionBuilder` only, but hosts mount the `ExpressionField` shell, and the builder's two operand `TemplateField` mounts did not pass it on — so it was unreachable from the component actually used and lost again inside any operand that was itself an expression. Both hops now forward it ([#116](https://github.com/qoretechnologies/toolkit-react/issues/116)). | The IDE's AI action button | No AI action on any expression card — **silent** (this is exactly what happened when qorus-ide adopted the shell) |
24
- | **Server-handled expressions** (server decides field/template acceptance per function) | `ExpressionField` → `serverHandled` + `expressionsUrl` (already plumbed) | The live `expressionsUrl`; set `serverHandled` | Offline catalogue only — **silent, degraded** |
25
-
26
- ## Notes
27
-
28
- - "Silent" markers are the dangerous ones — they compile clean and only
29
- surface as a missing feature in the running IDE. Tick each row.
30
- - Most seams are story-tested in reqraft EXCEPT `componentOverrides`,
31
- which has no coverage yet — worth a seam smoke-test before the IDE
32
- relies on it. *Revised 2026-09-07:* this used to point at B3 in
33
- `.tasks/BRANCH_REMEDIATION.md`, a file that no longer exists; the
34
- `extraActions` seam is now covered end to end by
35
- `ExpressionField.stories.tsx` › `NestedOperandKeepsInjectedActions`.
36
- - **Revised 2026-09-07 — the shell is the host's component.** Every seam in
37
- the table must be reachable through `ExpressionField`, not only through
38
- `ExpressionBuilder`; and anything meant for "every card" must also cross
39
- the operand `TemplateField` boundary, because an operand that is itself an
40
- expression mounts its own builder. A seam that stops one hop short reads
41
- as wired and is not — which is the silent-regression class this checklist
42
- exists to prevent.
43
- *Revised 2026-09-08:* a host that mirrors this rule needs the bare builder
44
- from the barrel; it is exported next to the shell as of 0.10.53 (#119) — no
45
- deep import of `dist/…/expressions/builder` required.
46
- - **`inheritedFromParent` is stable by identity.** A host editor (and any
47
- `arg_schema` sub-form) is handed the inheritance bag as a prop, and the
48
- engine guarantees the SAME object back for as long as nothing in it changed:
49
- a field that declares no `inherit_props` forwards the bag it was handed
50
- unwrapped, a form with no inherited scope forwards one shared frozen object,
51
- and a field that does declare `inherit_props` gets one merge per schema /
52
- sibling-value change (`inheritedScopeFor`, memoised per field). A host editor
53
- may therefore use it in a dependency list or a `memo` comparison. Built
54
- inline, as it was before 0.10.55, it re-rendered every field of every form on
55
- every render — the console read `Template field <name> Updated because:
56
- {inheritedFromParent}` forever. The same treatment exists in qorus-ide's
57
- `systemOptions.tsx`, which must stay in step until FormEngine replaces it.
58
-
59
- - **Open product call (B4):** whether reqraft should ALSO ship a *native*
60
- saved-values (so non-IDE consumers get it without wiring the seam). The
61
- storage primitive exists (`useReqraftStorage` mirrors the IDE's
62
- `useQorusStorage` exactly), so it's ~1 day if wanted — but the seam
63
- above already keeps the IDE whole, so native is a scope question, not a
64
- blocker.
@@ -1,156 +0,0 @@
1
- # Render-expression transport — server "Explain" over the LSP
2
-
3
- **Status:** locked 2026-06-10.
4
- **Task file:** `.tasks/RENDER_EXPRESSION_LSP.md`.
5
- **Background:** `/tmp/render-expression-exposure.md` (the original server
6
- ask), `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md` (the builder port that
7
- consumes this), `.tasks/LSP_SHARED_CONNECTION.md` (the shared-socket
8
- architecture this rides).
9
-
10
- ## Decision
11
-
12
- The "Explain" rendering (`DataProvider::renderExpression`) is delivered to
13
- reqraft over the **LSP** as a new custom method **`dpql/renderExpression`**,
14
- added to `QorusLspWebSocketHandler.qc` next to `dpql/serialize`. REST
15
- (`?action=render-expression`) is the recorded fallback if the server side
16
- prefers it; SSE was considered and rejected on the 2026-06-10 call
17
- (one-way). Rationale:
18
-
19
- - The server delta is tiny — the rendering engine already exists
20
- (`DataProvider::renderExpression`, qore `DataProvider.qc:834`); the
21
- creator-WS handler is a thin wrapper over it, and the new LSP handler is
22
- the same wrapper speaking JSON-RPC.
23
- - reqraft already speaks this protocol (`src/utils/lspClient.ts`) — no new
24
- transport, auth, or reconnect machinery.
25
- - JSON-RPC request ids natively solve response association (see below).
26
- - Explain updates live as the expression changes (confirmed on the team
27
- call), which suits a persistent socket + debounce.
28
- - Storybook bonus: REST fetches from storybook to `localhost:8012` are
29
- CORS-blocked; the LSP WebSocket is not.
30
-
31
- ### Why not the alternatives (verified live, 2026-06-10)
32
-
33
- The hoped-for shortcut — that `dpql/serialize`'s `richtext` or
34
- `dpql/toRichtext` already produce the rendering — was **disproven** against
35
- `localhost:8012`:
36
-
37
- | Source | Output for `starts-with("test","t")` |
38
- |---|---|
39
- | creator-WS `render-expression` | `"test".startsWith("t", true)` — semantic rendering |
40
- | LSP `dpql/serialize` | `dpql: "test" startsWith "t"` + `richtext` = the same DPQL string in paragraph nodes |
41
- | LSP `dpql/toRichtext` | takes a `text` (DPQL string) param, not an AST — syntactic highlighting only |
42
-
43
- `renderExpression` renders the *AST semantically*; `toRichtext` highlights
44
- the *DPQL source string*. Different things; the shortcut does not exist.
45
-
46
- ## The 20-builders question (Filip, 2026-06-10 call)
47
-
48
- > "you can have 20 [builders]… if one [message] comes, you need to
49
- > associate it with one of the 20 expression builders… would it have
50
- > different connections or how would you associate the message?"
51
-
52
- The answer has three parts:
53
-
54
- 1. **Association = JSON-RPC ids.** Each `useRenderExpression().render(value)`
55
- call sends a request with a unique id and resolves its OWN promise from
56
- the matching response (`LspSharedConnection.pending` map). No broadcast,
57
- no cross-wiring — 20 builders means 20 independent in-flight requests,
58
- each landing in the right component.
59
- 2. **Connections: ONE shared render socket, not 20.** All
60
- `useRenderExpression` consumers share a single lazy module-level
61
- `LspClient`, which itself rides the per-endpoint `LspSharedConnection`
62
- (see `.tasks/LSP_SHARED_CONNECTION.md`) — so render requests multiplex
63
- onto the *same* socket any open DPQL editors already use. Rendering is
64
- stateless server-side (no document session), so one connection serves
65
- everyone. Reconnect logic is the existing `ReqraftWebSocket` schedule.
66
- 3. **Debounce per builder (~300ms).** Each hook instance coalesces rapid
67
- re-renders (leading edge immediate, trailing edge collapses to the
68
- newest AST), so 20 builders typing don't flood the socket.
69
-
70
- ## Contract
71
-
72
- ```
73
- method: dpql/renderExpression (stateless — no uri/didOpen needed)
74
- params: { expression: <bare {exp,args} AST | {is_expression, value} wrapper>,
75
- expmap?: <expression info map override> }
76
- result: { rendered: "<readable string>", richtext: <richtext hash> }
77
- errors: -32602 missing/invalid expression; -32803 render failure;
78
- -32601 on servers predating the method
79
- ```
80
-
81
- ## Waiting, not approximating (reqraft)
82
-
83
- `useRenderExpression()` returns `{ render, renderRich }`; both resolve the
84
- server's rendering or `null`:
85
-
86
- - A render **waits for the connection** — there is no timer racing it. The
87
- connection has its own reconnect schedule and rejects once it gives up
88
- (see below), so a render never outlives a dead socket.
89
- - `null` means the server cannot render: the connection gave up, or the server
90
- predates the method (`-32601`, remembered for the page lifetime).
91
- - There is **no client-side stand-in**. A Qorus form does not work without
92
- Qorus, so the approximation only ever appeared while the page's first
93
- connection was still opening, marked "Approximate" on the first Explain of
94
- every page. `renderExpressionToText` survives only as the synchronous summary
95
- a collapsed row prints (`readFirst.ts`), and is never shown in place of a
96
- server rendering.
97
-
98
- ## How an expression is shown when it is not being edited
99
-
100
- Every read-only expression surface draws through **`DpqlRendering`**
101
- (`src/components/form/expressions/DpqlRendering.tsx`): the Explain panel, the
102
- Text view's Preview, the conversion a type-fit message suggests, and a collapsed
103
- expression row. It is a read-only `DpqlEditor` with diagnostics and hover off,
104
- so every one of them reads the same — monospace, coloured by the language
105
- server's semantic tokens (the canonical tokenizer; there is no client-side
106
- highlighter), template references as chips.
107
-
108
- - `ExpressionRendering` renders an AST: it waits in the form's one waiting shape
109
- (`FormFieldsSkeleton`, `data-wait="expression-rendering"`), then shows the
110
- server's rendering, or says "This expression could not be rendered." when the
111
- server cannot.
112
- - The Preview appears only once the server's rendering exists and differs from
113
- the typed text; it has no waiting state of its own.
114
- - A surface with a template catalogue passes it (`templates`): a reference the
115
- catalogue knows reads as the name it was chosen by, with the entry's
116
- description as its hover — the Discord assistant's Save Reply row reads
117
- `trim(Choices[0].message.content)`. One it does not know keeps its path
118
- (`data: dc_ai_reply.choices[0].message.content`). A collapsed row passes its
119
- field's own templates, else the form's; the builder's Explain passes its own.
120
- - A reference's path takes every dot except one that starts a method call, so
121
- the server's `$local:str.endsWith($local:p, true)` chips `$local:str`, not
122
- `str.endsWith`.
123
- - A new read-only expression surface uses `DpqlRendering`, never its own
124
- `<code>`, rich-text field or chip splitter.
125
-
126
- ## Lifetime of the shared render socket
127
-
128
- The module-level render client never releases its connection: the first
129
- expression rendered on a page holds the endpoint's `LspSharedConnection` for
130
- the rest of the page. Two consequences are designed for:
131
-
132
- - **A socket that gives up is forgotten.** When the socket exhausts its
133
- reconnect attempts, the connection fails any handshake still waiting and
134
- drops the socket; the next `connect()` from any client on that endpoint
135
- dials afresh. Without this, a first handshake that never completed held
136
- every later editor on "Connecting to language server…" for the life of the
137
- page, and one that had completed kept reporting the dead socket as ready.
138
- - **Storybook resets it per story.** Stories run in one page, so the
139
- connection an earlier story opened would otherwise serve a later story —
140
- including one that starts its own mock LSP, which is then never dialled.
141
- `.storybook/preview.tsx` runs `_resetRenderExpressionTransportForTests()`
142
- and `_resetSharedLspConnectionsForTests()` in a project-level `beforeEach`.
143
- - **Every story has a language server.** Because renderings wait rather than
144
- approximate, the same `beforeEach` starts the mock DPQL server
145
- (`dpqlMockLsp.ts`) for every story that is not `live`. Its answers follow the
146
- real server's (`dpqlMockLanguage.ts`, pinned in
147
- `__tests__/dpqlMockLanguage.test.ts`); a story that needs other answers starts
148
- its own server on the URL, which replaces the default.
149
- - **The rendering is spelled by the catalogue.** The server renders a function
150
- by name (`concat("a", $local:x)`), an expression with a `render_template` by
151
- that template (`$arg[0].startsWith($arg[1], $arg[2])`, a missing argument
152
- read as its `default_value`), and any other operator as its arguments joined
153
- by its symbol. A two-argument word comparison serializes infix
154
- (`"test" startsWith "t"`) and otherwise as a call by symbol. The story server
155
- reads `mockExpressions` by the same rules, which is why that fixture carries
156
- the live `render_template`s and groups.