@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,299 +0,0 @@
1
- # SmartEditor — unused LSP methods
2
-
3
- Follow-up to the `0.10.0` UX batch (see
4
- [`SMART_EDITOR_UX_POLISH.md`](./SMART_EDITOR_UX_POLISH.md)). The Qorus
5
- LSP server advertises 13+ standard LSP methods we don't consume from
6
- the client. This task triages each, lands the ones with real value
7
- for DPQL / Qonsole today, and documents why the rest are deferred or
8
- permanently out of scope.
9
-
10
- **Status:** done — committed in `d54597e`. Wires `textDocument/signatureHelp`; other 12 LSP methods deferred per the per-method rationale below. **Awaiting browser verification (mock + live story exist; live story confirmed against the real Qorus DPQL LSP).**
11
-
12
- **Live-verification notes (captured after the initial implementation):**
13
-
14
- - Real server signature shape differs from the hypothetical one
15
- documented in §"Design decisions → 1." below. The Qorus DPQL handler
16
- emits a single `→ <type>` return annotation in the `label`, and uses
17
- **human-friendly capitalized parameter names** (`"String Value"`,
18
- `"Start Character"`) rather than identifier-style (`"value1"`,
19
- `"start"`). Both are valid LSP `SignatureInformation`; the render
20
- path handles both.
21
- - **`coalesce` and `concat` are single-variadic-parameter on the
22
- server.** Both return one parameter (`"Value"`). Typing more commas
23
- does NOT advance the active parameter — the server semantically
24
- treats all args as the same conceptual slot. The original task plan
25
- used `coalesce` as the demo case; the live story uses `substr`
26
- instead because it has three distinct positional parameters and
27
- visibly demos active-parameter advancement.
28
- - Server-probed shapes for functions with distinct positional params:
29
- - `substr(String Value, Start Character, Length) → string`
30
- - `round(Number, Precision) → auto`
31
- - `format_date(Date To Format, Format String) → string`
32
- - `nullif(Value, Compare Value) → auto`
33
- - `split(String To Split, Separator) → list<auto>`
34
- - Real server **also pushes a `textDocument/publishDiagnostics`** for
35
- incomplete input — `substr("hello", ` flags as "Unexpected token ''
36
- in value position". The diagnostic clears once the syntax is
37
- complete. The editor's existing diagnostic panel renders it.
38
- Expected behavior.
39
- - Capability advertisement: real server advertises 22 LSP providers
40
- in `initialize`, but per the per-method rationale below, most return
41
- null/empty for `languageId: 'dpql'`. The capability gate on
42
- `session.capabilities?.signatureHelpProvider` is the right check
43
- before wiring features.
44
- **Scope:** one new feature (signatureHelp), one capability-detection
45
- helper, eight explicit "rejected — defer" decisions.
46
- **Estimated size:** ~250 lines + tests, ~1.5 days.
47
-
48
- ## Goal
49
-
50
- The DpqlEditor should feel like a real code editor when you're inside
51
- a function call — typing `coalesce(@a, ` should show a popover with
52
- the signature `coalesce(value1, value2, …, default)`, the current
53
- argument highlighted. This is the single highest-leverage LSP feature
54
- we don't yet use.
55
-
56
- ## Research findings (server)
57
-
58
- Full audit at the foot of this file. Summary:
59
-
60
- The server (`qorus/Classes/QorusLspWebSocketHandler.qc`)
61
- unconditionally advertises every LSP provider it knows about in the
62
- `initialize` response (line 841-907), but **most of them early-return
63
- `[]` or `null` for DPQL and Qonsole** — the handlers branch by
64
- `languageId` and only the Qore / TypeScript / Python paths do
65
- meaningful work. DPQL is implemented only for `completion`, `hover`,
66
- `semanticTokens`, `formatting`, `signatureHelp`. Qonsole is
67
- implemented for `completion`, `hover`, `semanticTokens`, `codeAction`.
68
-
69
- | Method | DPQL | Qonsole | Value for DPQL |
70
- |---|---|---|---|
71
- | `textDocument/signatureHelp` | **yes** (`dpql-get-signature-help`) | yes | **HIGH** ← this task lands this |
72
- | `textDocument/codeAction` | no | yes | LOW (no DPQL impl) |
73
- | `textDocument/documentHighlight` | no | no | LOW |
74
- | `textDocument/inlayHint` | no | no | LOW |
75
- | `textDocument/prepareRename` + `rename` | no | no | LOW |
76
- | `textDocument/selectionRange` | no | no | LOW today; MEDIUM if DPQL gains AST-driven |
77
- | `textDocument/onTypeFormatting` | no | no | LOW (single-line) |
78
- | `textDocument/definition` | no | no | LOW (hover covers it) |
79
- | `textDocument/references` | no | no | LOW (single-line) |
80
- | `textDocument/foldingRange` | no | no | LOW (single-line) |
81
- | `textDocument/documentSymbol` | no | no | LOW (no symbols) |
82
- | `textDocument/codeLens` | no | no | LOW (no top-level decls) |
83
- | `workspace/executeCommand` | no | no (rejects `qonsole.*`) | LOW |
84
-
85
- **Only one method is worth implementing now for the DPQL story we
86
- ship.** The rest are documented as known not-supported-server-side
87
- and revisited if/when the server gains support.
88
-
89
- ## Design decisions
90
-
91
- ### 1. `textDocument/signatureHelp` — implement
92
-
93
- **Server contract:**
94
- - Triggers: `(`, `,`, ` `, `-`, `=` (advertised by
95
- `signatureHelpProvider.triggerCharacters`)
96
- - Response shape:
97
- ```json
98
- {
99
- "signatures": [
100
- {
101
- "label": "coalesce(value1, value2, ..., default)",
102
- "documentation": { "kind": "markdown", "value": "..." },
103
- "parameters": [
104
- { "label": "value1", "documentation": {"kind":"markdown","value":"..."} },
105
- ...
106
- ]
107
- }
108
- ],
109
- "activeSignature": 0,
110
- "activeParameter": 1
111
- }
112
- ```
113
- - Empty case: `{ "signatures": [], "activeSignature": 0, "activeParameter": 0 }`
114
-
115
- **Client UX:**
116
- - Small pinned pill **above** the caret (above, not below, so the
117
- completion popover and signature pill don't overlap; they coexist
118
- side-by-side or stacked)
119
- - Shows the active signature's `label` with the parameter at
120
- `activeParameter` highlighted (bold + accent color from the
121
- `info` intent)
122
- - Below the label: the active parameter's `documentation.value` as
123
- markdown (capped at ~2 lines, scrollable past)
124
- - Dismisses on: Escape, closing paren, cursor moves outside the
125
- call (heuristic: cursor offset < open-paren position), or
126
- `session.diagnostics` reports an error covering the call site
127
-
128
- **Trigger logic:**
129
- - Fire on the server-advertised triggers via the existing
130
- `onSlateChangeImpl` path (`useLspAutocomplete.ts:443`)
131
- - Also re-fire on any cursor move while a signature is currently
132
- open — `activeParameter` advances when the user types a comma or
133
- moves between args
134
- - Debounce ~100ms (a bit faster than completions — feels snappier
135
- for "where is my cursor inside this call")
136
-
137
- **Position:**
138
- - Anchor at the caret's DOM rect like the completion popover, but
139
- `top: rect.top - 4` (above the line, with a 4px gap)
140
- - Re-use the same "measure-after-debounce" pattern that fixed the
141
- completion popover positioning bug from Phase 5
142
-
143
- ### 2. Generic LSP capability detection
144
-
145
- The completion handler already captures the semantic-tokens legend
146
- from initialize. Extend the same pattern so consumers can check
147
- whether the server supports a given provider:
148
-
149
- ```ts
150
- // lspClient.ts
151
- public capabilities: ILspServerCapabilities | null = null;
152
- // ILspServerCapabilities — minimal shape; just the providers we care about
153
- // signatureHelpProvider?: { triggerCharacters?, retriggerCharacters? }
154
- // hoverProvider?: boolean
155
- // completionProvider?: { triggerCharacters? }
156
- // semanticTokensProvider?: { legend, full?, range? }
157
- // codeActionProvider?: { codeActionKinds? }
158
- // ... (only what we read)
159
- ```
160
-
161
- Surface as `session.capabilities` (and `session.semanticTokensLegend`
162
- becomes a thin alias for `capabilities?.semanticTokensProvider?.legend`).
163
-
164
- This gives wrappers a clean way to test "does this server support
165
- signature help?" before wiring the trigger — no hardcoded server
166
- assumptions.
167
-
168
- ### 3. Rejected — defer with rationale
169
-
170
- For each LOW-value method, explicitly land a "we considered this and
171
- declined" note in the README or design doc rather than leaving them
172
- silently unimplemented. Future contributors should not have to redo
173
- this research.
174
-
175
- The rationale per method is in §research-findings below. The README's
176
- Components section gains a short subsection "LSP methods supported"
177
- that lists `completion`, `hover`, `formatting`, `semanticTokens`,
178
- `diagnostics`, `signatureHelp` (after this task) and a one-line "Why
179
- not X / Y" pointer.
180
-
181
- ## Surface area
182
-
183
- | File | Change |
184
- |---|---|
185
- | `src/utils/lspClient.types.ts` | new `ILspSignatureHelp`, `ILspSignatureInformation`, `ILspParameterInformation`, `ILspServerCapabilities` types |
186
- | `src/utils/lspClient.ts` | capture full `initialize` `capabilities` (not just the semantic-tokens legend); new `getSignatureHelp(line, character): Promise<ILspSignatureHelp \| null>` |
187
- | `src/components/smartEditor/useLspSession.ts` | surface `capabilities: ILspServerCapabilities \| null` in the result |
188
- | `src/components/smartEditor/useLspSignatureHelp.ts` | **new** — hook returning `{ signature, activePill, position, clear }`. Same skeleton as `useLspHover` (mousemove → here it's cursor-position-aware) |
189
- | `src/components/smartEditor/SmartEditor.tsx` | render the signature pill `<ReqorePopover>` above the caret; trigger via the existing `onSlateChangeImpl` based on capability's `triggerCharacters` |
190
- | `src/components/smartEditor/types.ts` | new `enableSignatureHelp?: boolean` prop (default `true`) |
191
- | `__tests__/smartEditor/signatureHelp.test.ts` | **new** — unit tests for position mapping + active-parameter advancement |
192
- | `src/components/dpqlEditor/DpqlEditor.stories.tsx` | mock `textDocument/signatureHelp` handler (return a synthetic `coalesce(...)` signature); new `WithSignatureHelp` story |
193
- | `README.md` | document `enableSignatureHelp`; "LSP methods supported" subsection |
194
-
195
- ## Tasks
196
-
197
- ### Setup
198
-
199
- - [ ] Read the Qore-spec dpql signature-help test fixtures to capture
200
- a realistic signature shape (`/Users/nick/Projects/QoreTechnologies/qore-2/test/...` if any) — falls back to the `coalesce` example if no fixture exists
201
-
202
- ### Types + LspClient
203
-
204
- - [ ] `src/utils/lspClient.types.ts` — add `ILspParameterInformation`,
205
- `ILspSignatureInformation`, `ILspSignatureHelp`,
206
- `ILspServerCapabilities` (minimal — only fields we read)
207
- - [ ] `src/utils/lspClient.ts` — store the full `capabilities` hash
208
- from `initialize` response (currently we only extract the
209
- semantic-tokens legend). Backwards-compat: keep the existing
210
- `semanticTokensLegend` field as a derived getter
211
- - [ ] `LspClient.getSignatureHelp(line, character)` — sends
212
- `textDocument/signatureHelp` with the URI + position; returns
213
- the response or `null` on no signatures
214
-
215
- ### Session hook
216
-
217
- - [ ] `useLspSession` — expose `capabilities` in the result
218
- - [ ] Re-capture in the connect-effect alongside the existing legend
219
- capture
220
-
221
- ### `useLspSignatureHelp` hook
222
-
223
- - [ ] New file: `src/components/smartEditor/useLspSignatureHelp.ts`
224
- - [ ] Signature: `useLspSignatureHelp(session, editorRef, converter, options?)`
225
- - [ ] State: `{ signature: ILspSignatureHelp | null, position: { left, top } | null, clear: () => void }`
226
- - [ ] Debounce 100ms; cancel on cursor moves outside any open paren
227
- - [ ] Stale-response guard via `requestIdRef` (same pattern as hover)
228
- - [ ] Skips if `!session.capabilities?.signatureHelpProvider`
229
-
230
- ### SmartEditor wiring
231
-
232
- - [ ] New prop `enableSignatureHelp?: boolean` (default `true`)
233
- - [ ] Call `useLspSignatureHelp(...)` alongside the other LSP hooks
234
- - [ ] Trigger from `onSlateChangeImpl` when the typed character is in
235
- the server's advertised `signatureHelpProvider.triggerCharacters`
236
- AND `enableSignatureHelp` is true
237
- - [ ] Render the signature pill `<ReqorePopover>` anchored at
238
- `{ top: rect.top - 4, left: rect.left }` with `placement='top-start'`
239
- - [ ] Pill content: signature label with active parameter bolded,
240
- below it the active parameter's documentation rendered via
241
- `react-markdown`
242
- - [ ] Dismiss on Escape (extend the existing keyboard handler), on
243
- cursor moves out of the call, on close-paren
244
-
245
- ### Stories + tests
246
-
247
- - [ ] DpqlEditor mock: handle `textDocument/signatureHelp` by
248
- returning a synthetic `coalesce(value1, value2, default)`
249
- signature
250
- - [ ] New story `Components/DpqlEditor → WithSignatureHelp` — initial
251
- value `coalesce(@name, ` so the pill is visible on mount
252
- - [ ] Play test: assert the pill appears, `activeParameter` is 1
253
- (`value2`), advances to 2 (`default`) on typing a comma
254
- - [ ] Unit tests for `getSignatureHelp` request shape, the
255
- capability gate (no request when provider absent)
256
-
257
- ### Documentation
258
-
259
- - [ ] README.md — add `enableSignatureHelp` to SmartEditor props
260
- table; add an "LSP methods supported" subsection that lists
261
- what's wired and includes a one-line "Why not X" entry for
262
- each of the 12 deferred methods
263
- - [ ] Inline TSDoc on `enableSignatureHelp` explains it's gated on
264
- server capability — turning it on with a non-supporting server
265
- is a silent no-op
266
-
267
- ### Checks
268
-
269
- - [ ] Typecheck, lint, jest, storybook play tests all pass
270
- - [ ] **STOP — user verifies in browser** before commit
271
-
272
- ## Research findings — per-method deferral rationale
273
-
274
- (For the README's "Why not X" pointers. Sourced from the deep server
275
- audit; full notes in research transcript.)
276
-
277
- | Method | Why deferred |
278
- |---|---|
279
- | `textDocument/codeAction` | Server has no DPQL handler. For Qonsole it works but our editor primitive isn't where quick-fix UI belongs — that's qorus-ide-side. Add later if a Qonsole-specific consumer needs it. |
280
- | `textDocument/documentHighlight` | Server returns `[]` for both DPQL and Qonsole. |
281
- | `textDocument/inlayHint` | Server returns `[]`. Single-line DPQL would crowd ghost-text. |
282
- | `textDocument/prepareRename` + `rename` | Server returns `null`. DPQL field names aren't user-renameable (server-owned schema). |
283
- | `textDocument/selectionRange` | Server returns `[]`. Could become useful if DPQL parser exposes AST ranges, but no current consumer asks for it. |
284
- | `textDocument/onTypeFormatting` | Server returns `[]`. DPQL is single-line, no `{}` blocks. |
285
- | `textDocument/definition` | Server returns `[]`. Field "definitions" already surfaced via hover. |
286
- | `textDocument/references` | Server returns `[]`. Short expressions; no cross-reference scope. |
287
- | `textDocument/foldingRange` | Server returns `[]`. Single-line. |
288
- | `textDocument/documentSymbol` | Server returns `[]`. Server comment: "command buffers are single-line and do not expose symbols". |
289
- | `textDocument/codeLens` | Server returns `[]`. No top-level declarations in DPQL/Qonsole input. |
290
- | `workspace/executeCommand` | Server rejects `qonsole.*` (wizard launch is REST-based — see Qonsole task). No other commands defined. |
291
-
292
- ## Out of scope
293
-
294
- - Wiring code-actions for Qonsole only (would land in the Qonsole
295
- features task, not here)
296
- - Implementing client-side rename UI even if the server stays no-op
297
- - Adding signature help to QonsoleSmartInput (covered by the
298
- Qonsole-features task; signature help for natural-language input
299
- doesn't make sense the same way it does for DPQL function calls)
@@ -1,280 +0,0 @@
1
- # SmartEditor / DpqlEditor — review follow-ups (PR #62)
2
-
3
- Source: reviewer feedback on toolkit-react PR #62 (the `0.10.0` editor batch).
4
- Four work items.
5
-
6
- **Status:** all 4 items done pending user verify (uncommitted)
7
-
8
- - **Task 1** ✅ removed the client "Templates" button + `templates`/`stateId`
9
- props (our work, unreleased, server-redundant). Mock now position-aware:
10
- `$`→templates, `@`→fields. `WithTemplates` story reworked to demo the
11
- `$`-server flow.
12
- - **Task 2** ✅ play tests added: DPQL `WithSignatureHelp` (pill on mount),
13
- `WithTemplates` (`$`/`@` routing), Qonsole `WithCommitCharacters`
14
- (`=` commit, no `==`), `WithWizardItems` (`onWizardStart` fires),
15
- SmartEditor `WithMarkdownDocs` + `WithGroupedKinds` (open dropdowns).
16
- - **Task 3** ✅ theme-transparency: popovers inherit the ambient theme
17
- (no more hardcoded `#1a1a1a`); focused row uses `custom1` (QorusPurple);
18
- `#160437` → semantic `pending:darken`. Storybook decorator applies
19
- qorus-ide's theme (`#121212` + Qorus intents) so snapshots show the
20
- in-IDE look.
21
- - **Task 4** ✅ the look-alike SmartEditor stories now open their
22
- dropdowns via `play` (combined with Task 2).
23
- - **Bonus** ✅ two live stories: `LiveDpqlEditorWithAlertPayload` (verify
24
- `@` fields live) + `LiveDpqlEditorWithFsmContext` (verify `$data:`).
25
-
26
- **Verification:** 263 jest pass; 161/162 storybook play tests pass (the 1
27
- is the pre-existing unrelated `FormEngine.OnValidityChange` flake). Design
28
- verified in browser — dropdown on `#121212`, purple focused row.
29
-
30
- ---
31
-
32
- Reviewer's message (verbatim):
33
- > Because I think the idea was that when you type `$` it should show you
34
- > templates, when you write `@` it should show you fields etc.
35
- >
36
- > can you please go back and also add more storybook play tests, so that
37
- > if the story is wrong we can detect it in the CI?
38
- > Also the design could be improved I think as well, so that it matches
39
- > the IDE more (eg the screenshot)
40
- > There are multiple stories that look the same in the SmartEditor (just
41
- > an empty input box)
42
-
43
- ---
44
-
45
- ## Task 1 — `$` → templates, `@` → fields (fix the trigger model)
46
-
47
- **Intended UX (per reviewer):** typing `$` surfaces templates; typing `@`
48
- surfaces field references. Both through the same on-typing completion
49
- dropdown — NOT a separate button, NOT on-focus.
50
-
51
- **Current state (the mismatch):**
52
- - `$` IS already a trigger char: `DPQL_TRIGGERS = new Set(['@', '$', '.', ':'])`
53
- (`DpqlEditor.tsx:52`). So typing `$` fires `getCompletions` → the LSP
54
- **server**. Whether the server returns templates for a `$` context is a
55
- server-side question we haven't confirmed.
56
- - The client-supplied `templates` prop (static items like `$local:input`,
57
- `$timestamp:now`) is rendered as a **separate "Templates" dropdown
58
- button above the editor** (`DpqlEditor.tsx:241` `topActions` →
59
- `ReqoreDropdown`). This is redundant with the `$`-trigger idea and is
60
- the thing the reviewer is questioning.
61
-
62
- **Important nuance discovered while scoping** — there are *two different*
63
- trigger models in play, and they're not the same:
64
- - **Native `ReqoreTextarea`/`ReqoreRichTextEditor` `templates` prop**
65
- (inherited via `IReqoreRichTextEditorProps extends IReqoreTextareaProps`)
66
- → opens the templates popover on **click/focus** of the editor
67
- (`ReqoreDropdown` with `closeOnTargetClick: false`). This is the "click
68
- in → popup shows" behaviour the reviewer first referenced for the other
69
- fields.
70
- - **Reviewer's stated intent now** → `$` (typing) shows templates.
71
-
72
- These differ. For an LSP-backed editor where `@` already opens fields
73
- **on typing**, the **`$`-on-typing** model is the consistent one — a
74
- click/focus popup would compete with the `@` completion overlay and
75
- reverse the deliberate "trigger-on-typing-only" design (commit
76
- `6fb9bf3`). So Task 1 = the `$`-on-typing model, not the native
77
- click-popup.
78
-
79
- **ANSWER — confirmed from the qorus server source** (`Classes/QorusLspWebSocketHandler.qc`):
80
-
81
- The server is the **single authoritative source for both** `@` fields and
82
- `$` templates. It is **position-aware** — one `dpql-get-completions` call
83
- returns the right items based on the cursor context. So `$`→templates and
84
- `@`→fields is **already the server's design**; the client does NOT branch.
85
-
86
- Evidence:
87
- - Triggers advertised: `"dpql": {"@": True, "$": True, ".": True, " ": True}`
88
- (`:269`).
89
- - The completion handler (`:1260-1294`) calls a single
90
- `DpqlActionSession.handleAction("dpql-get-completions", {text, position,
91
- template_context, fields})` and maps the unified result to LSP items. The
92
- server parses text+position and returns fields after `@`, templates after
93
- `$`, plus functions/keywords/operators (`:7910` fallback comment:
94
- "functions, keywords, operators, templates").
95
- - **Templates are server-derived, NOT client-supplied.**
96
- `buildDpqlTemplateContext` (`:8648`) builds the template context from:
97
- - `state_data` from the **FSM context** (set via `dpql/setFsmContext` →
98
- `uriToFsmContext`), and
99
- - `record_fields` from the provider/recordType fields, and
100
- - global Qorus template namespaces via `QorusExpressionHandler::QorusExpressionMap`
101
- (`:7916` fallback path) — this is very likely where `$local:` /
102
- `$timestamp:` / `$config:` come from (the exact items our static
103
- `templates` prop hard-codes). **[verify: confirm QorusExpressionMap
104
- yields those namespaces]**
105
-
106
- **Conclusion: it is NOT "both" — the proper source is the server.**
107
- `$`→templates already works **today** via the existing `$` trigger +
108
- `getCompletions`, *provided the editor's context is set* (`fsmContext`
109
- and/or `provider`/`recordType`). The static client `templates` prop +
110
- the "Templates" button **duplicate** what the server already returns on
111
- `$`, and worse, present it as a button instead of the `$`-trigger flow.
112
-
113
- **The most correct + proper implementation:**
114
- 1. **Remove the `topActions` "Templates" button** from `DpqlEditor`
115
- (`:241`). It duplicates the server's `$` completions.
116
- 2. Rely on the existing `$` trigger → `getCompletions` → server returns
117
- templates. No client branching, no injection in the normal path.
118
- 3. The `WithTemplates` story is demonstrating the **wrong mechanism** (the
119
- static button). Rework it to set an `fsmContext` (or provider) and a
120
- mock that returns templates on `$`, so it shows the real `$`→templates
121
- flow.
122
- 4. **Remove the static `templates` prop entirely (the "clean" version) —
123
- confirmed SAFE, no reviewer sign-off needed.** Rationale:
124
- - The prop is **our** addition (commit `6e11c7b`, this batch), not a
125
- reqore feature. Only the *type* `IReqoreFormTemplates` is reqore's.
126
- - `DpqlEditor` is **brand-new in the unreleased `0.10.0`** — the
127
- published `0.8.11` doesn't even export it, so there is **no external
128
- consumer** of the prop.
129
- - The qorus-ide wrapper does **not** pass `templates`.
130
- - **Server-confirmed redundant**: live `$` returned `$autovar:`,
131
- `$config:`, `$data:`, `$env:`, `$for:`, `$foreach:`, … — a *fuller*
132
- set than the prop's hard-coded `$local`/`$timestamp`/`$config`. The
133
- server (QorusExpressionMap + FSM `state_data` + record fields) is
134
- strictly better and always present for an LSP-backed editor.
135
- - No realistic DPQL case needs client-supplied templates.
136
- → Drop the prop + the button. (`IReqoreFormTemplates` import goes too.)
137
-
138
- **EMPIRICALLY VERIFIED (live server):**
139
- - `$` in `LiveDpqlEditorWithSignatureHelp` (no context) → server returns the
140
- global namespaces (`$autovar:`, `$config:`, `$data:`, `$env:`, `$for:`,
141
- `$foreach:`, …). ✓ confirms `$`→templates is server-driven + context-free.
142
- - `@` in the same (no-context) story → **nothing**, which is **correct**:
143
- field refs come from `getDpqlFields(uri)`, which only exist once a context
144
- is bound (`provider`/`recordType`, `alertPayloadContext`, or FSM). The
145
- server's NO-CONTEXT fallback returns "functions, keywords, operators,
146
- templates" — **fields are deliberately not in that list**. So `@`-empty
147
- without a context is by design, not a bug.
148
- - **Still to verify (needs a new live story with a real context):** `@`
149
- returning actual fields. Add `LiveDpqlEditorWithAlertPayload`
150
- (`alertPayloadContext: true`) and type `@` → expect real alert-payload
151
- fields. Optionally `LiveDpqlEditorWithFsmContext` for `$data:` state
152
- templates beyond the globals.
153
-
154
- ---
155
-
156
- ## Task 2 — Storybook play tests for CI regression detection
157
-
158
- Reviewer wants CI to catch a broken story. Current coverage:
159
- - 26 stories across DpqlEditor / SmartEditor / QonsoleSmartInput.
160
- - Only **4 explicit `play` tests** (`CanTypeText`, `LspCompletionRoundtrip`,
161
- SmartEditor `BasicMock`, QonsoleSmartInput `BasicMock`). The rest are
162
- smoke-only (render-without-throw) — which is why "158/159 pass" sounded
163
- like more behavioural coverage than it is.
164
-
165
- **Add deterministic play tests to the MOCK stories** (live stories stay
166
- smoke-only — non-deterministic against real `/lsp`):
167
- - DpqlEditor `WithSignatureHelp` (mock): pill on mount with `Start Character`
168
- highlighted → type `0, ` → `Length` highlighted → type `)` → pill gone.
169
- - DpqlEditor `$`→templates and `@`→fields (after Task 1): assert the right
170
- dropdown opens per trigger.
171
- - QonsoleSmartInput `WithCommitCharacters`: type `-`,`-`,`l`,`=` → no `==` dup.
172
- - QonsoleSmartInput `WithWizardItems`: select wizard item → `onWizardStart`
173
- spy called with the descriptor.
174
- - QonsoleSmartInput `BasicMock`: already has the `/l`→`/list` no-dup +
175
- slot-grammar assertions — keep / extend.
176
-
177
- **Constraint already learned:** programmatic `execCommand`/synthetic
178
- `InputEvent` do NOT reliably go through Slate's `beforeinput` pipeline —
179
- use `@storybook/test` `userEvent.type` (the existing 4 play tests do this
180
- successfully). Some assertions (signature param advance) were only verified
181
- manually; codifying them is the point of this task.
182
-
183
- ---
184
-
185
- ## Task 3 — Design polish to match the IDE
186
-
187
- Reviewer: "the design could be improved … so that it matches the IDE more
188
- (eg the screenshot)".
189
-
190
- **The IDE's design tokens (confirmed — `qorus-ide/src/constants/util.ts`
191
- `defaultReqoreTheme`, applied app-wide via `ReqoreUIProvider` in
192
- `src/index.tsx`):**
193
- - `main: '#121212'` (app surface)
194
- - `header.background: '#000000'`
195
- - intents: `success: '#4a7110'`, **`custom1: '#762f7e'` (QorusPurple)**,
196
- `custom2: '#b34e1d'` (Attention/orange)
197
- - theme name `vscode`; options: button/dialog animations off, `glowingIcons`,
198
- tooltip delay 300, `closePopoversOnEscPress`.
199
-
200
- **The mismatch:** our `styling.ts` **hardcodes** its own surfaces instead
201
- of inheriting the ambient theme:
202
- - `SMART_EDITOR_POPOVER_CUSTOM_THEME.main = '#1a1a1a'` (vs the IDE's
203
- `#121212`)
204
- - gradient `#160437` etc.
205
- - focused row / chips use generic `info` (blue) — the IDE's brand accent is
206
- **QorusPurple `#762f7e` (custom1)**, which is why our blue-accented
207
- dropdown reads as "not quite the IDE".
208
-
209
- **The correct approach (per `qorus-ide/design/REQORE_REQRAFT.md`: "use
210
- customTheme/effect/intent, don't hardcode"):** the editor is a **library**
211
- component — it must NOT bake in qorus-ide's brand hexes (that couples
212
- reqraft to one consumer). Instead:
213
-
214
- 1. **Make the editor theme-transparent** — stop forcing `#1a1a1a`; use
215
- `transparent` + inherit the ambient Reqore theme so the popover surface
216
- becomes whatever the host app's `main` is. Embedded in qorus-ide →
217
- automatically `#121212`; embedded elsewhere → that app's surface. This is
218
- the "matches the IDE" win AND keeps reqraft consumer-agnostic.
219
- 2. **Use semantic intents, not hexes** — let the focused-row / chip accent
220
- resolve through the theme's intent palette (so qorus-ide colours it with
221
- its `custom1` purple; the library ships a sensible default).
222
- 3. **Storybook preview** — add a decorator that wraps the editor stories in
223
- a qorus-ide-like theme (`main: '#121212'`, `intents.custom1 = '#762f7e'`,
224
- `custom2 = '#b34e1d'`) so the Chromatic snapshots show the in-IDE look.
225
- This is how we "see the match" without running the whole IDE — and it's
226
- what the reviewer's screenshot compares against.
227
-
228
- **To do:**
229
- - `styling.ts`: replace hardcoded `#1a1a1a`/`#160437` popover surfaces with
230
- `transparent` + ambient-theme inheritance; keep `backgroundBlur`.
231
- - Audit `COMPLETION_KIND_INTENTS` + focused-row + chip intents → semantic
232
- intents that the host theme colours (not literal blue).
233
- - Add the qorus-ide-theme Storybook decorator (global, in `.storybook` or a
234
- per-editor-story decorator) so stories render on `#121212` with the Qorus
235
- intents.
236
- - Then eyeball row padding/height, chip style, type-caption treatment
237
- against the screenshot and nudge spacing.
238
-
239
- **Why we can do this without reviewer back-and-forth:** the design target is
240
- the IDE's own published theme tokens (`defaultReqoreTheme`) — not a
241
- subjective choice. "Match the IDE" = "inherit the IDE's theme + use its
242
- intent palette", which is objectively defined in `constants/util.ts`. The
243
- only subjective polish (exact padding/row height) we tune against the
244
- screenshot.
245
-
246
- ---
247
-
248
- ## Task 4 — Deduplicate / differentiate empty-looking SmartEditor stories
249
-
250
- Reviewer: "multiple stories that look the same in the SmartEditor (just an
251
- empty input box)".
252
-
253
- **Confirmed:** the 3 SmartEditor mock stories all seed `initialValue: ''`:
254
- - `BasicMock`, `WithMarkdownDocs`, `WithGroupedKinds` → all render as an
255
- identical empty box at rest, so their Chromatic snapshots are
256
- indistinguishable. (`LiveQonsole` seeds `/list services ` so it differs.)
257
-
258
- **Options (pick per story):**
259
- - Seed a representative `initialValue` so each looks distinct at rest, OR
260
- - Add a `play` that opens the dropdown so the Chromatic snapshot captures
261
- the differentiated content (this doubles as Task 2 coverage), OR
262
- - Consolidate stories that genuinely demo the same thing.
263
-
264
- Recommendation: combine with Task 2 — give each a `play` that opens its
265
- characteristic dropdown state, which both differentiates the snapshot AND
266
- adds the CI assertion. Net: one pass covers Tasks 2 + 4 for SmartEditor.
267
-
268
- ---
269
-
270
- ## Suggested order
271
-
272
- 1. **Task 1** decision (ask reviewer: server `$` templates vs client-injected
273
- vs both) — blocks the implementation but not the others.
274
- 2. **Tasks 2 + 4 together** — play tests that open dropdowns differentiate
275
- the snapshots AND give CI coverage. Do the non-`$` ones now; add the
276
- `$`→templates assertion after Task 1 lands.
277
- 3. **Task 3** — needs the reviewer's design target; iterative.
278
-
279
- All on `feature/dpql-editor` (PR #62) as follow-up commits **after** the
280
- user verifies — no commits without explicit OK.