@shwfed/config 3.0.7 → 3.0.8

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 (246) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/ai-l1.md +24 -0
  3. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.prototype/schema.d.ts +1 -0
  4. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.prototype/schema.js +2 -1
  5. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/prompt.md +8 -0
  6. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.d.ts +6 -0
  7. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.js +4 -0
  8. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/prompt.md +8 -0
  9. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.d.ts +1 -0
  10. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.js +2 -1
  11. package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/prompt.md +9 -0
  12. package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/schema.d.ts +1 -0
  13. package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/schema.js +2 -1
  14. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/prompt.md +8 -0
  15. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.d.ts +1 -0
  16. package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.js +2 -1
  17. package/dist/runtime/components/actions/items/2026-05-21/com.shwfed.actions.item.markdown/schema.d.ts +1 -0
  18. package/dist/runtime/components/actions/items/2026-05-21/com.shwfed.actions.item.markdown/schema.js +2 -1
  19. package/dist/runtime/components/actions/utils/ai-button-tools.d.ts +29 -0
  20. package/dist/runtime/components/actions/utils/ai-button-tools.js +664 -0
  21. package/dist/runtime/components/actions/utils/resolve.d.ts +22 -0
  22. package/dist/runtime/components/actions/utils/resolve.js +23 -1
  23. package/dist/runtime/components/config/ai-generate.d.vue.ts +7 -0
  24. package/dist/runtime/components/config/ai-generate.system.md +39 -0
  25. package/dist/runtime/components/{table → config}/ai-generate.vue +55 -32
  26. package/dist/runtime/components/config/ai-generate.vue.d.ts +7 -0
  27. package/dist/runtime/components/config/ai-page-slot.l1.md +25 -0
  28. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.actions/schema.d.ts +6 -0
  29. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.actions/schema.js +4 -0
  30. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.d.ts +6 -0
  31. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.js +4 -0
  32. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.markdown/schema.d.ts +1 -0
  33. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.markdown/schema.js +1 -0
  34. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +58 -58
  35. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +58 -58
  36. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +58 -58
  37. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +58 -58
  38. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +35 -29
  39. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.js +4 -0
  40. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/schema.d.ts +7 -0
  41. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/schema.js +4 -0
  42. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.xy/schema.d.ts +1 -0
  43. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.xy/schema.js +1 -0
  44. package/dist/runtime/components/config/blocks/2026-06-01/com.shwfed.block.animated.number/schema.d.ts +1 -0
  45. package/dist/runtime/components/config/blocks/2026-06-01/com.shwfed.block.animated.number/schema.js +1 -0
  46. package/dist/runtime/components/config/blocks/2026-06-02/com.shwfed.block.card/schema.d.ts +6 -0
  47. package/dist/runtime/components/config/blocks/2026-06-02/com.shwfed.block.card/schema.js +4 -0
  48. package/dist/runtime/components/config/blocks/2026-06-02/com.shwfed.block.icon/schema.d.ts +1 -0
  49. package/dist/runtime/components/config/blocks/2026-06-02/com.shwfed.block.icon/schema.js +1 -0
  50. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/config.d.vue.ts +18 -18
  51. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/config.vue.d.ts +18 -18
  52. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/runtime.d.vue.ts +18 -18
  53. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/runtime.vue.d.ts +18 -18
  54. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/schema.d.ts +6 -0
  55. package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/schema.js +4 -0
  56. package/dist/runtime/components/config/blocks/2026-06-25/com.shwfed.block.loop/schema.d.ts +7 -0
  57. package/dist/runtime/components/config/blocks/2026-06-25/com.shwfed.block.loop/schema.js +4 -0
  58. package/dist/runtime/components/config/config.vue +24 -3
  59. package/dist/runtime/components/config/use-editor.d.ts +1 -0
  60. package/dist/runtime/components/config/use-editor.js +18 -0
  61. package/dist/runtime/components/config/utils/ai-cursor.d.ts +21 -0
  62. package/dist/runtime/components/config/utils/ai-cursor.js +827 -0
  63. package/dist/runtime/components/config/utils/ai-host-manuals.d.ts +2 -0
  64. package/dist/runtime/components/config/utils/ai-host-manuals.js +19 -0
  65. package/dist/runtime/components/config/utils/linkage.d.ts +15 -6
  66. package/dist/runtime/components/config/utils/linkage.js +23 -7
  67. package/dist/runtime/components/config/utils/resolve.d.ts +19 -0
  68. package/dist/runtime/components/config/utils/resolve.js +25 -2
  69. package/dist/runtime/components/form/ai-l1.md +22 -0
  70. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.markdown/schema.d.ts +1 -0
  71. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.markdown/schema.js +1 -0
  72. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.d.ts +1 -0
  73. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +1 -0
  74. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.d.ts +1 -0
  75. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.js +1 -0
  76. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.actions/schema.d.ts +7 -0
  77. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.actions/schema.js +4 -0
  78. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.d.ts +1 -0
  79. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.js +1 -0
  80. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.d.ts +1 -0
  81. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.js +1 -0
  82. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.d.ts +1 -0
  83. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.js +1 -0
  84. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.d.ts +1 -0
  85. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.js +1 -0
  86. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.d.ts +1 -0
  87. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.js +1 -0
  88. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.d.ts +1 -0
  89. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.js +1 -0
  90. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.d.ts +1 -0
  91. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +1 -0
  92. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.d.ts +1 -0
  93. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.js +1 -0
  94. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.d.ts +1 -0
  95. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.js +1 -0
  96. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.d.ts +1 -0
  97. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.js +1 -0
  98. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/prompt.md +8 -0
  99. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.d.ts +7 -0
  100. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.js +4 -0
  101. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.d.ts +1 -0
  102. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.js +1 -0
  103. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.d.ts +1 -0
  104. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.js +1 -0
  105. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/prompt.md +12 -0
  106. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.d.ts +6 -0
  107. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.js +4 -0
  108. package/dist/runtime/components/form/fields/2026-05-20/com.shwfed.form.field.collapsible/schema.d.ts +6 -0
  109. package/dist/runtime/components/form/fields/2026-05-20/com.shwfed.form.field.collapsible/schema.js +4 -0
  110. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +26 -26
  111. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +26 -26
  112. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.d.ts +1 -0
  113. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.js +1 -0
  114. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.d.ts +1 -0
  115. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.js +1 -0
  116. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +26 -26
  117. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +26 -26
  118. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +26 -26
  119. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +26 -26
  120. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +26 -26
  121. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +26 -26
  122. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/prompt.md +7 -0
  123. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +1 -0
  124. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +1 -0
  125. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +26 -26
  126. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +26 -26
  127. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/prompt.md +7 -0
  128. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +1 -0
  129. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +1 -0
  130. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +26 -26
  131. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +26 -26
  132. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/prompt.md +9 -0
  133. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +1 -0
  134. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +1 -0
  135. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +26 -26
  136. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +26 -26
  137. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/prompt.md +11 -0
  138. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +1 -0
  139. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +1 -0
  140. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/prompt.md +12 -0
  141. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.d.ts +1 -0
  142. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.js +1 -0
  143. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/prompt.md +14 -0
  144. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.d.ts +1 -0
  145. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.js +1 -0
  146. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/prompt.md +19 -0
  147. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.d.ts +1 -0
  148. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.js +1 -0
  149. package/dist/runtime/components/form/fields/2026-06-20/com.shwfed.form.field.tabs/schema.d.ts +7 -0
  150. package/dist/runtime/components/form/fields/2026-06-20/com.shwfed.form.field.tabs/schema.js +4 -0
  151. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/prompt.md +14 -0
  152. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.d.ts +1 -0
  153. package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.js +1 -0
  154. package/dist/runtime/components/form/utils/ai-field-tools.d.ts +2 -2
  155. package/dist/runtime/components/form/utils/ai-field-tools.js +47 -30
  156. package/dist/runtime/components/form/utils/resolve.d.ts +11 -0
  157. package/dist/runtime/components/form/utils/resolve.js +13 -1
  158. package/dist/runtime/components/operations/2026-06-09/com.shwfed.operation.alert/schema.d.ts +1 -0
  159. package/dist/runtime/components/operations/2026-06-09/com.shwfed.operation.alert/schema.js +2 -1
  160. package/dist/runtime/components/operations/2026-06-11/com.shwfed.operation.http.request.json/schema.d.ts +1 -0
  161. package/dist/runtime/components/operations/2026-06-11/com.shwfed.operation.http.request.json/schema.js +1 -0
  162. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.d.ts +1 -0
  163. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.js +2 -1
  164. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.d.ts +1 -0
  165. package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.js +2 -1
  166. package/dist/runtime/components/operations/2026-07-06/com.shwfed.operation.table.add-row/schema.d.ts +1 -0
  167. package/dist/runtime/components/operations/2026-07-06/com.shwfed.operation.table.add-row/schema.js +2 -1
  168. package/dist/runtime/components/operations/utils/resolve.d.ts +17 -0
  169. package/dist/runtime/components/operations/utils/resolve.js +18 -1
  170. package/dist/runtime/components/table/ai-l1.md +38 -0
  171. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.actions/schema.d.ts +7 -0
  172. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.actions/schema.js +5 -1
  173. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.d.ts +1 -0
  174. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.date/schema.js +2 -1
  175. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.d.ts +1 -0
  176. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/schema.js +2 -1
  177. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.markdown/schema.d.ts +1 -0
  178. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.markdown/schema.js +2 -1
  179. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.d.ts +1 -0
  180. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.number/schema.js +2 -1
  181. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.d.ts +1 -0
  182. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.js +2 -1
  183. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.d.ts +1 -0
  184. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/schema.js +2 -1
  185. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.d.ts +1 -0
  186. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/schema.js +2 -1
  187. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.d.ts +1 -0
  188. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/schema.js +2 -1
  189. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.d.ts +1 -0
  190. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/schema.js +2 -1
  191. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.d.ts +1 -0
  192. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/schema.js +2 -1
  193. package/dist/runtime/components/table/columns/2026-05-21/com.shwfed.table.column.drag-handle/schema.d.ts +1 -0
  194. package/dist/runtime/components/table/columns/2026-05-21/com.shwfed.table.column.drag-handle/schema.js +2 -1
  195. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  196. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  197. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  198. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  199. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  200. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  201. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  202. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  203. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/prompt.md +12 -0
  204. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.d.ts +1 -0
  205. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.js +1 -0
  206. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/prompt.md +16 -0
  207. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.d.ts +1 -0
  208. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.js +1 -0
  209. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  210. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  211. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +1 -0
  212. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.js +1 -0
  213. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  214. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  215. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.d.ts +1 -0
  216. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.js +1 -0
  217. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.d.ts +1 -0
  218. package/dist/runtime/components/table/columns/2026-06-17/com.shwfed.table.column.date-input/schema.js +2 -1
  219. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.d.ts +1 -0
  220. package/dist/runtime/components/table/columns/2026-06-22/com.shwfed.table.column.date-range-input/schema.js +2 -1
  221. package/dist/runtime/components/table/columns/2026-07-12/com.shwfed.table.column.dynamic/prompt.md +15 -0
  222. package/dist/runtime/components/table/config.d.vue.ts +3 -3
  223. package/dist/runtime/components/table/config.vue +1 -33
  224. package/dist/runtime/components/table/config.vue.d.ts +3 -3
  225. package/dist/runtime/components/table/row-provider.vue +7 -1
  226. package/dist/runtime/components/table/schema.d.ts +58 -58
  227. package/dist/runtime/components/table/utils/ai-tools.js +16 -7
  228. package/dist/runtime/components/table/utils/resolve.d.ts +5 -0
  229. package/dist/runtime/components/table/utils/resolve.js +12 -1
  230. package/dist/runtime/share/define-registry.d.ts +66 -0
  231. package/dist/runtime/share/define-registry.js +37 -1
  232. package/dist/runtime/share/use-persisted-chat.d.ts +11 -9
  233. package/dist/runtime/share/use-persisted-chat.js +3 -3
  234. package/dist/runtime/utils/ai/index.d.ts +1 -1
  235. package/dist/runtime/utils/ai/index.js +18 -11
  236. package/dist/runtime/utils/cel-catalog.d.ts +1 -0
  237. package/dist/runtime/utils/cel-catalog.js +10 -0
  238. package/dist/runtime/utils/cel-catalog.md +42 -0
  239. package/dist/runtime/utils/cel-context.d.ts +15 -0
  240. package/dist/runtime/utils/cel-context.js +8 -0
  241. package/package.json +1 -1
  242. package/dist/runtime/components/table/ai-generate.d.vue.ts +0 -16
  243. package/dist/runtime/components/table/ai-generate.system.md +0 -101
  244. package/dist/runtime/components/table/ai-generate.vue.d.ts +0 -16
  245. /package/dist/runtime/components/{table → config}/ai-generate.system.d.ts +0 -0
  246. /package/dist/runtime/components/{table → config}/ai-generate.system.js +0 -0
@@ -3,6 +3,7 @@ import type { Schema } from 'effect';
3
3
  import { Effect } from 'effect';
4
4
  import type { Fetch } from 'fx-fetch';
5
5
  import type { Environment } from '../../../vendor/cel-js/lib/index.js';
6
+ import { type RegistryEdge } from '../../../share/define-registry.js';
6
7
  import type { EventChannel, OperationDescriptor, TriggerValue } from '../../../share/event-bus.js';
7
8
  type CelEvaluator = <T>(expression: string, context?: Record<string, unknown>) => Effect.Effect<T, any>;
8
9
  type AnySchema = Schema.Schema<any, any, never>;
@@ -37,6 +38,12 @@ export type MigrateSource = Readonly<{
37
38
  export type ButtonMetadata = Readonly<{
38
39
  name: string;
39
40
  icon: string;
41
+ /**
42
+ * 一句话说明该按钮的适用场景;AI 在 `list_available_button_types` 类工具里看到。
43
+ * **可选** —— 缺失时省略(人类 picker / 旧调用点不受影响)。镜像
44
+ * `ColumnMetadata.description`。
45
+ */
46
+ description?: string;
40
47
  drillable?: boolean;
41
48
  operations?: ReadonlyArray<OperationDescriptor>;
42
49
  deprecated?: string;
@@ -62,6 +69,10 @@ export type ButtonEntry = Readonly<{
62
69
  migrate?: MigrateFn;
63
70
  /** Source schemas this entry accepts migration from. See module field. */
64
71
  migrateFrom?: ReadonlyArray<MigrateSource>;
72
+ /** Recursion edges the AI scope cursor walks (empty for leaf buttons). */
73
+ edges: ReadonlyArray<RegistryEdge>;
74
+ /** The button's `prompt.md` (L2 fragment) raw text, surfaced by the AI describe tool. */
75
+ prompt?: string;
65
76
  }>;
66
77
  export declare const BUTTONS: ReadonlyArray<ButtonEntry>;
67
78
  /**
@@ -78,9 +89,20 @@ export declare const BUTTONS: ReadonlyArray<ButtonEntry>;
78
89
  export declare function findMigrationTarget(type: string, compatibilityDate: string): ButtonEntry | undefined;
79
90
  export declare function allButtonSchemas(configure: (env: Environment) => void): ReadonlyArray<AnySchema>;
80
91
  export declare function findButton(type: string, compatibilityDate: string): ButtonEntry | undefined;
92
+ export declare function latestButtonByType(): ReadonlyArray<ButtonEntry>;
93
+ /**
94
+ * AI 工具可见的按钮集合:按 `type` 取最新版本 + 排除 `deprecated`。镜像
95
+ * `activeColumns()` / `activeFields()`。人类 picker 走 `BUTTONS`(含废弃,供迁移)。
96
+ */
97
+ export declare function activeButtons(): ReadonlyArray<ButtonEntry>;
81
98
  export type ItemMetadata = Readonly<{
82
99
  name: string;
83
100
  icon: string;
101
+ /**
102
+ * 一句话说明该项的适用场景;供 AI 工具显示。**可选** —— 缺失时省略。镜像
103
+ * `ColumnMetadata.description`。
104
+ */
105
+ description?: string;
84
106
  }>;
85
107
  export type ItemEntry = Readonly<{
86
108
  type: string;
@@ -9,6 +9,10 @@ const schemaModules = import.meta.glob(
9
9
  "../buttons/*/*/schema.{ts,js}",
10
10
  { eager: true, exhaustive: true }
11
11
  );
12
+ const promptModules = import.meta.glob(
13
+ "../buttons/*/*/prompt.md",
14
+ { eager: true, query: "?raw", import: "default", exhaustive: true }
15
+ );
12
16
  const configModuleLoaders = import.meta.glob(
13
17
  "../buttons/*/*/config.vue",
14
18
  { exhaustive: true }
@@ -35,6 +39,11 @@ const registry = defineRegistry({
35
39
  schemaModules,
36
40
  configModules,
37
41
  runtimeModules,
42
+ promptModules,
43
+ // Validate declared `edges` keys against the built schema (only modal.layout
44
+ // declares one today). Inert configure — the edge check only reads field names.
45
+ buildSchemaForEdges: (mod) => mod.schema(() => {
46
+ }),
38
47
  // A button is deprecated by one of three rules, in precedence order:
39
48
  // (1) another entry declares this one in its `migrateFrom` — explicit
40
49
  // cross-type supersession with a structured `supersededBy` target the
@@ -101,7 +110,9 @@ export const BUTTONS = registry.ENTRIES.map((e) => ({
101
110
  ...e.deprecationNote !== void 0 ? { deprecationNote: e.deprecationNote } : {},
102
111
  ...e.supersededBy !== void 0 ? { supersededBy: e.supersededBy } : {},
103
112
  migrate: e.module.migrate,
104
- ...e.module.migrateFrom !== void 0 ? { migrateFrom: e.module.migrateFrom } : {}
113
+ ...e.module.migrateFrom !== void 0 ? { migrateFrom: e.module.migrateFrom } : {},
114
+ edges: e.module.edges ?? [],
115
+ ...e.prompt !== void 0 ? { prompt: e.prompt } : {}
105
116
  }));
106
117
  let _migrationTargets = null;
107
118
  function getMigrationTargets() {
@@ -132,6 +143,17 @@ export function allButtonSchemas(configure) {
132
143
  export function findButton(type, compatibilityDate) {
133
144
  return BUTTONS.find((a) => a.type === type && a.compatibilityDate === compatibilityDate);
134
145
  }
146
+ export function latestButtonByType() {
147
+ const byType = /* @__PURE__ */ new Map();
148
+ for (const a of BUTTONS) {
149
+ const prev = byType.get(a.type);
150
+ if (!prev || a.compatibilityDate > prev.compatibilityDate) byType.set(a.type, a);
151
+ }
152
+ return [...byType.values()];
153
+ }
154
+ export function activeButtons() {
155
+ return latestButtonByType().filter((e) => !e.deprecated);
156
+ }
135
157
  const itemSchemaModules = import.meta.glob(
136
158
  "../items/*/*/schema.{ts,js}",
137
159
  { eager: true, exhaustive: true }
@@ -0,0 +1,7 @@
1
+ import type { ConfigEditorState } from './use-editor.js';
2
+ type __VLS_Props = {
3
+ state: ConfigEditorState;
4
+ };
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
@@ -0,0 +1,39 @@
1
+ 你是页面配置代理。用户用自然语言描述想要的功能,你通过工具把整个页面配出来;用户随后在编辑器里查看、微调。回复可用 CommonMark,语言与用户保持一致(默认中文)。
2
+
3
+ ## 工作流
4
+
5
+ 按「澄清 → 搭骨架 → 逐块 drift in 配细节 → 校验收尾」推进:
6
+
7
+ 1. **澄清需求**:先弄清页面要哪些功能模块(一个订单表格?一个搜索表单?几张统计卡片?)。信息不足时向用户提问,不要臆造——尤其是接口地址、字段含义、下拉选项等你无从得知的信息。
8
+ 2. **搭页面骨架**:用 `insert_block` 逐个新增所需的块(表格、表单、卡片、图表、标签页……),块会被自动放置到默认布局;再用 `place_block` 按需调整它们在网格上的位置。
9
+ 3. **逐块 drift in 配细节**:用 `enter_node` 钻进某个块,该作用域的工具族随即激活;配完用 `leave_node` 退回上一层,再进入下一个块。
10
+ 4. **校验收尾**:向用户复述你配了什么,请其在编辑器里核对。编辑器画布就是配置的实时预览。
11
+
12
+ ## 作用域游标(drift in / out)
13
+
14
+ - 你始终站在一个「作用域」里。根作用域是**页面**,工具族是 page-slot(增删块、布局)。
15
+ - **每条新的用户消息开始时,游标都回到页面根**——上一条消息里进入的作用域不会延续。若要继续配置某个块,先 `enter_node` 进去再操作。
16
+ - `enter_node({ id })`:钻进一个直接子块,一次只下一层;深层目标靠连续 `enter_node`(像人一样逐层 drill)。可钻入的块:表格块(进入其 Table)、表单块(进入其 Form)、容器块(卡片 / 循环,进入其内部页面槽,可再往里搭块)。返回的定向信息**刻意精简**——面包屑、节点身份、简短摘要、激活的工具族;细节请用发现式工具自取。
17
+ - `leave_node()`:退回上一层。
18
+ - 每个导航结果都带一行 `scope` 面包屑(如「页面 > 订单表格」),据此判断你现在在哪。
19
+ - **发现式,别一上来就要全量**:每个作用域都提供三段式渐进披露——`list_available_*_types`(一句话目录)→ `describe_specific_*_type`(某类型的完整契约、默认值、可能的 `guide` 使用指南)→ `describe_*_settings`(当前值 + 该作用域的 CEL 变量表与函数目录)。先 list 看目录,需要时再 describe,不要在没弄清需求前倾倒细节。
20
+
21
+ ## id 与本地化规则
22
+
23
+ - **所有 id 由 harness 铸造**:新增块 / 列 / 字段时,你**永远不要**提供 `id` 或 `compatibilityDate`;工具会自动分配。要引用某个块 / 列 / 字段时,用 `list_*` 工具拿到它的 id。
24
+ - **本地化文本 zh 打头**:标题等 Locale 文本用 `[{ locale: 'zh', message: '…' }]` 形式,中文在前。
25
+
26
+ ## 栅格约定
27
+
28
+ - 块与字段都放在网格上,`area` 为 `[[x1,y1],[x2,y2]]`(1 基网格线,右下不含);例如占据第 1–32 列、第 1–8 行是 `[[1,1],[33,9]]`。
29
+ - `insert_block` 已按块默认尺寸自动放置一次,你可再 `place_block` 微调;表单字段则 `insert_field` 后必须 `place_field` 才会渲染。
30
+ - 放置不要重叠;harness 会拒绝重叠并让你重试。网格会自动生长以容纳你的放置。
31
+
32
+ ## CEL
33
+
34
+ 配置里许多字段是 CEL 表达式(数据源、访问器、样式、可见性、默认值……)。CEL 是**单表达式**语言:无语句 / 赋值 / 循环,整段求值为一个值。几条通识:
35
+
36
+ - 可选访问用 `.?`,配 `.orValue(默认)` 兜底;这在读取可能缺失的响应字段时几乎必用——例如在存在 `json` 变量的作用域里写 `json.?data.?list`。
37
+ - 逻辑 `&& || !`、三元 `cond ? a : b`、成员 `x in [...]`;字符串 / 列表用 `+` 拼接。
38
+ - HTTP 请求用 `http.get(url)` / `http.post(url).body({...})` 链式构建,端点须为绝对 URL(用 `hostname` 变量拼接,勿写文档里的 `{{env}}` 占位)。
39
+ - **可用变量与函数是上下文相关的**:进入某作用域后,用该作用域的 `describe_*_settings` 工具查看当前可用的变量表与完整函数目录,再据此书写——不要凭空假设某个变量存在。
@@ -8,13 +8,11 @@ import { usePersistedChat } from "../../share/use-persisted-chat";
8
8
  import { ChatMessages, ChatPrompt } from "../ui/chat";
9
9
  import { Button } from "../ui/button";
10
10
  import { getSystemTemplate } from "./ai-generate.system";
11
- import { createTableAiTools } from "./utils/ai-tools";
12
- defineOptions({ name: "ShwfedTableAiGenerate" });
13
- const config = defineModel({ type: Object, ...{ required: true } });
11
+ import { createConfigAiCursor } from "./utils/ai-cursor";
12
+ import { getHostManual } from "./utils/ai-host-manuals";
13
+ defineOptions({ name: "ShwfedConfigAiGenerate" });
14
14
  const props = defineProps({
15
- configure: { type: Function, required: false }
16
- });
17
- const configure = props.configure ?? (() => {
15
+ state: { type: Object, required: true }
18
16
  });
19
17
  const messages = ref([]);
20
18
  const streaming = shallowRef(null);
@@ -22,27 +20,61 @@ const input = ref("");
22
20
  const busy = ref(false);
23
21
  let controller = null;
24
22
  const { restore: restoreChat, clear: clearChat } = usePersistedChat(
25
- () => config.value.id,
26
- messages
23
+ () => typeof location !== "undefined" ? location.pathname : void 0,
24
+ messages,
25
+ "shwfed.config.ai-chat."
27
26
  );
28
27
  onMounted(restoreChat);
29
- const working = shallowRef(config.value);
30
- const tools = createTableAiTools({
28
+ const working = shallowRef(toRaw(props.state.draft.value));
29
+ const manualsKey = () => `shwfed.config.ai-chat.manuals.${typeof location !== "undefined" ? location.pathname : ""}`;
30
+ function readManualKinds() {
31
+ if (typeof window === "undefined") return [];
32
+ try {
33
+ const parsed = JSON.parse(window.sessionStorage.getItem(manualsKey()) ?? "[]");
34
+ return Array.isArray(parsed) ? parsed.filter((k) => typeof k === "string") : [];
35
+ } catch {
36
+ return [];
37
+ }
38
+ }
39
+ const manualsDelivered = {
40
+ has: (kind) => readManualKinds().includes(kind),
41
+ add: (kind) => {
42
+ if (typeof window === "undefined") return;
43
+ try {
44
+ const next = new Set(readManualKinds());
45
+ next.add(kind);
46
+ window.sessionStorage.setItem(manualsKey(), JSON.stringify([...next]));
47
+ } catch {
48
+ }
49
+ },
50
+ clear: () => {
51
+ if (typeof window === "undefined") return;
52
+ try {
53
+ window.sessionStorage.removeItem(manualsKey());
54
+ } catch {
55
+ }
56
+ }
57
+ };
58
+ const cursor = createConfigAiCursor({
31
59
  read: () => working.value,
32
60
  write: (next) => {
33
61
  const fresh = { ...next };
34
62
  working.value = fresh;
35
- config.value = fresh;
63
+ props.state.replaceDraft(fresh);
36
64
  },
37
- // `configure` is threaded into each tool's schema factory so the AI sees
38
- // the same CEL scope the inline UI validates against. Replaces the old
39
- // `schema` field (a full `TableConfig` Schema); per-tool schemas are now
40
- // built internally from `configure`.
41
- configure,
42
- genUuid: () => crypto.randomUUID()
65
+ configure: props.state.configure,
66
+ genUuid: () => crypto.randomUUID(),
67
+ manualsDelivered
43
68
  });
69
+ function tools() {
70
+ return cursor.tools();
71
+ }
44
72
  function buildSystem() {
45
- return getSystemTemplate();
73
+ const pageSlot = getHostManual("page-slot");
74
+ const l0 = getSystemTemplate();
75
+ return pageSlot ? `${l0}
76
+
77
+ ${pageSlot}` : l0;
46
78
  }
47
79
  function snapshot(m) {
48
80
  return { id: m.id, role: m.role, parts: m.parts.map((p) => ({ ...p })) };
@@ -63,6 +95,7 @@ function newConversation() {
63
95
  if (!canClear.value) return;
64
96
  messages.value = [];
65
97
  clearChat();
98
+ manualsDelivered.clear();
66
99
  input.value = "";
67
100
  }
68
101
  function commitPartial(partial) {
@@ -79,10 +112,11 @@ async function send() {
79
112
  { id: createMessageId(), role: "user", parts: [{ type: "text", text }] }
80
113
  ];
81
114
  try {
82
- working.value = structuredClone(toRaw(config.value));
115
+ working.value = structuredClone(toRaw(props.state.draft.value));
83
116
  } catch {
84
- working.value = config.value;
117
+ working.value = toRaw(props.state.draft.value);
85
118
  }
119
+ cursor.reset();
86
120
  busy.value = true;
87
121
  streaming.value = null;
88
122
  controller = new AbortController();
@@ -92,7 +126,6 @@ async function send() {
92
126
  system: buildSystem(),
93
127
  tools,
94
128
  signal: controller.signal,
95
- // Re-publish a fresh snapshot per part mutation so the stream renders.
96
129
  onMessageUpdate: (assistant) => {
97
130
  streaming.value = snapshot(assistant);
98
131
  }
@@ -118,12 +151,6 @@ function stop() {
118
151
 
119
152
  <template>
120
153
  <div class="p-3">
121
- <!-- Frameless chat: a scrolling message area flows directly in the pane over
122
- a floating, shadowed composer — no outer border and no divider line, so
123
- nothing visually boxes the conversation (matches the reference composer).
124
- Fixed 48rem so the messages scroll internally (auto-scroll-to-bottom)
125
- rather than growing the editor pane; the fixed outer height is what lets
126
- the inner `flex-1` message area bound and scroll. -->
127
154
  <div class="flex h-[48rem] flex-col bg-transparent">
128
155
  <ChatMessages
129
156
  :messages="displayMessages"
@@ -137,7 +164,7 @@ function stop() {
137
164
  class="size-24"
138
165
  />
139
166
  <p class="text-xl">
140
- 对话开始配置
167
+ 对话生成整页配置
141
168
  </p>
142
169
  </div>
143
170
  </template>
@@ -150,10 +177,6 @@ function stop() {
150
177
  @submit="send"
151
178
  @stop="stop"
152
179
  >
153
- <!-- New-conversation control lives at the composer's block-end left
154
- edge (beside the send button): a quiet ghost button that clears
155
- the dialogue (and its sessionStorage). Disabled while a turn
156
- streams or when there's nothing to clear. -->
157
180
  <template #actions>
158
181
  <Button
159
182
  type="button"
@@ -0,0 +1,7 @@
1
+ import type { ConfigEditorState } from './use-editor.js';
2
+ type __VLS_Props = {
3
+ state: ConfigEditorState;
4
+ };
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
@@ -0,0 +1,25 @@
1
+ ## 页面块与布局(page-slot 作用域)
2
+
3
+ 页面根作用域的工具族是 page-slot:增删块、在网格上布局、钻入块配细节。容器块(卡片、循环)内部同样是一个 page-slot——`enter_node` 进入后用同一套工具在其内部继续搭块。
4
+
5
+ ### 块家族总览
6
+
7
+ - **表格**:内嵌 Table,展示远端列表数据,含列与搜索条件(`enter_node` 后用表格工具族配置)。
8
+ - **表单**:内嵌 Form,一组输入字段(`enter_node` 后用表单字段工具族配置)。
9
+ - **卡片** / **循环**:容器块,内部是一个可放任意块的 page-slot(循环额外对一个 CEL 列表逐项渲染)。可 `enter_node` 递归钻入。**循环内部 `item`(当前项)/ `index`(序号)已进入 CEL 作用域**——钻入循环后新建的表格 / 表单 / 字段里的表达式可以直接引用它们,会正常通过 `set_data_source` / `insert_field` 等工具的校验。
10
+ - **标签页**:多个带标签的子 Slot。`enter_node` 进入后用 `list_panes` 查看各标签页,再 `enter_node` 一个标签页 id 钻入其内容。
11
+ - **Markdown** / **图标** / **动画数字** / **笛卡尔坐标图表**:叶子展示块,直接用 `describe_specific_block_type` 看契约后 `insert_block` 配置,无需钻入。
12
+ - **操作按钮**:内嵌一组按钮,`enter_node` 后用操作按钮工具族配置(增删按钮 / 组、接线触发、模态窗口按钮可再钻入其弹窗内容)。
13
+ - **树(单选)**:单选导航块,其节点操作是一组操作按钮,`enter_node` 后同样用操作按钮工具族配置。
14
+
15
+ 先 `list_available_block_types` 看目录(type + name + 一句话),需要某类型完整契约时再 `describe_specific_block_type`(含 JSON Schema、默认值、可能的 `guide`)。
16
+
17
+ ### 布局
18
+
19
+ - `insert_block` 会按块默认尺寸自动放进第一套布局的空位;随后可 `place_block` 微调。
20
+ - `area` 为 `[[x1,y1],[x2,y2]]`(1 基网格线,右下不含)。放置不要重叠,harness 会拒绝并让你重试;网格自动生长以容纳放置。
21
+ - `list_blocks` 查看现有块(id / 名称 / 是否可钻入 `drillable` / 当前放置),据此拿 id、找空位。
22
+
23
+ ### 跨层作用域寻址(`__scopes__`)
24
+
25
+ 深层嵌套里,内层作用域会**遮蔽**外层的同名变量:一个表格弹窗里再放一个表格,内表的 `row` 指内表当前行,外表的 `row` 被挡住。要在被遮蔽处引用外层作用域,用 `__scopes__` 按 UUID 绝对寻址——`__scopes__["<外层实例 uuid>"].row`(`.index` / `.selected` 同理)。只有**词法上包住当前位置**的作用域才命中;写错 uuid 会在该处报 `No such key`。弹窗**继承**打开处的作用域(行操作弹窗内直接用 `row` 即可);只有当弹窗内又嵌套了重新绑定 `row` 的表格等作用域、外层被遮蔽时,才需要 `__scopes__` 指名外层。相对的 `row` / `item` 等短名仍照常可用,`__scopes__` 只在被遮蔽时才需要。
@@ -3,9 +3,15 @@ import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
3
3
  type AnySchema = Schema.Schema<any, any, never>;
4
4
  export declare const type: "com.shwfed.block.actions";
5
5
  export declare const compatibilityDate: "2026-05-06";
6
+ export declare const edges: readonly [{
7
+ readonly key: "actions";
8
+ readonly host: "actions";
9
+ readonly label: "操作按钮";
10
+ }];
6
11
  export declare const metadata: {
7
12
  readonly name: "操作按钮";
8
13
  readonly icon: "fluent:cursor-click-20-regular";
14
+ readonly description: "将一组 Actions 按钮作为页面块嵌入";
9
15
  readonly w: {
10
16
  readonly initial: 8;
11
17
  readonly min: 8;
@@ -2,9 +2,13 @@ import { Schema } from "effect";
2
2
  import { ActionsConfig, defaultActionsConfig } from "../../../../actions/schema.js";
3
3
  export const type = "com.shwfed.block.actions";
4
4
  export const compatibilityDate = "2026-05-06";
5
+ export const edges = [
6
+ { key: "actions", host: "actions", label: "\u64CD\u4F5C\u6309\u94AE" }
7
+ ];
5
8
  export const metadata = {
6
9
  name: "\u64CD\u4F5C\u6309\u94AE",
7
10
  icon: "fluent:cursor-click-20-regular",
11
+ description: "\u5C06\u4E00\u7EC4 Actions \u6309\u94AE\u4F5C\u4E3A\u9875\u9762\u5757\u5D4C\u5165",
8
12
  w: { initial: 8, min: 8, max: Infinity },
9
13
  h: { initial: 2, min: 2, max: Infinity }
10
14
  };
@@ -3,9 +3,15 @@ import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
3
3
  type AnySchema = Schema.Schema<any, any, never>;
4
4
  export declare const type: "com.shwfed.block.form";
5
5
  export declare const compatibilityDate: "2026-05-06";
6
+ export declare const edges: readonly [{
7
+ readonly key: "form";
8
+ readonly host: "form";
9
+ readonly label: "表单";
10
+ }];
6
11
  export declare const metadata: {
7
12
  readonly name: "表单";
8
13
  readonly icon: "fluent:form-20-regular";
14
+ readonly description: "将一个 Form 组件作为页面块嵌入";
9
15
  readonly w: {
10
16
  readonly initial: 32;
11
17
  readonly min: 12;
@@ -2,9 +2,13 @@ import { Schema } from "effect";
2
2
  import { FormConfig, defaultFormConfig } from "../../../../form/schema.js";
3
3
  export const type = "com.shwfed.block.form";
4
4
  export const compatibilityDate = "2026-05-06";
5
+ export const edges = [
6
+ { key: "form", host: "form", label: "\u8868\u5355" }
7
+ ];
5
8
  export const metadata = {
6
9
  name: "\u8868\u5355",
7
10
  icon: "fluent:form-20-regular",
11
+ description: "\u5C06\u4E00\u4E2A Form \u7EC4\u4EF6\u4F5C\u4E3A\u9875\u9762\u5757\u5D4C\u5165",
8
12
  w: { initial: 32, min: 12, max: Infinity },
9
13
  h: { initial: 8, min: 3, max: Infinity }
10
14
  };
@@ -5,6 +5,7 @@ export declare const type: "com.shwfed.block.markdown";
5
5
  export declare const compatibilityDate: "2026-05-06";
6
6
  export declare const metadata: {
7
7
  readonly name: "Markdown";
8
+ readonly description: "渲染一段 Markdown 文本作为页面块";
8
9
  readonly icon: "fluent:markdown-20-regular";
9
10
  readonly w: {
10
11
  readonly initial: 8;
@@ -5,6 +5,7 @@ export const type = "com.shwfed.block.markdown";
5
5
  export const compatibilityDate = "2026-05-06";
6
6
  export const metadata = {
7
7
  name: "Markdown",
8
+ description: "\u6E32\u67D3\u4E00\u6BB5 Markdown \u6587\u672C\u4F5C\u4E3A\u9875\u9762\u5757",
8
9
  icon: "fluent:markdown-20-regular",
9
10
  w: { initial: 8, min: 2, max: Infinity },
10
11
  h: { initial: 2, min: 2, max: Infinity }
@@ -17,6 +17,35 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
17
17
  readonly displayName?: string | undefined;
18
18
  readonly columns: readonly any[];
19
19
  readonly kind: "shwfed.component.table";
20
+ readonly query?: {
21
+ readonly style?: string | undefined;
22
+ readonly id?: string | undefined;
23
+ readonly initial?: {
24
+ readonly data: string;
25
+ readonly request?: string | undefined;
26
+ } | undefined;
27
+ readonly displayName?: string | undefined;
28
+ readonly kind: "shwfed.component.form";
29
+ readonly fields: readonly any[];
30
+ readonly layouts: readonly {
31
+ readonly name: string;
32
+ readonly layout: {
33
+ readonly style?: string | undefined;
34
+ readonly columns: number;
35
+ readonly gap?: number | undefined;
36
+ readonly rows?: number | undefined;
37
+ readonly placements: {
38
+ readonly [x: string]: {
39
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
40
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
41
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
42
+ };
43
+ };
44
+ };
45
+ readonly media?: string | undefined;
46
+ }[];
47
+ readonly readonly?: string | undefined;
48
+ } | undefined;
20
49
  readonly groups: readonly {
21
50
  readonly id: string;
22
51
  readonly title?: readonly [{
@@ -101,35 +130,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
101
130
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
102
131
  }[];
103
132
  } | undefined;
104
- readonly query?: {
105
- readonly style?: string | undefined;
106
- readonly id?: string | undefined;
107
- readonly initial?: {
108
- readonly data: string;
109
- readonly request?: string | undefined;
110
- } | undefined;
111
- readonly displayName?: string | undefined;
112
- readonly kind: "shwfed.component.form";
113
- readonly fields: readonly any[];
114
- readonly layouts: readonly {
115
- readonly name: string;
116
- readonly layout: {
117
- readonly style?: string | undefined;
118
- readonly columns: number;
119
- readonly gap?: number | undefined;
120
- readonly rows?: number | undefined;
121
- readonly placements: {
122
- readonly [x: string]: {
123
- readonly area: readonly [readonly [number, number], readonly [number, number]];
124
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
125
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
126
- };
127
- };
128
- };
129
- readonly media?: string | undefined;
130
- }[];
131
- readonly readonly?: string | undefined;
132
- } | undefined;
133
133
  readonly dataSource?: {
134
134
  readonly data: string;
135
135
  readonly total?: string | undefined;
@@ -265,6 +265,35 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
265
265
  readonly displayName?: string | undefined;
266
266
  readonly columns: readonly any[];
267
267
  readonly kind: "shwfed.component.table";
268
+ readonly query?: {
269
+ readonly style?: string | undefined;
270
+ readonly id?: string | undefined;
271
+ readonly initial?: {
272
+ readonly data: string;
273
+ readonly request?: string | undefined;
274
+ } | undefined;
275
+ readonly displayName?: string | undefined;
276
+ readonly kind: "shwfed.component.form";
277
+ readonly fields: readonly any[];
278
+ readonly layouts: readonly {
279
+ readonly name: string;
280
+ readonly layout: {
281
+ readonly style?: string | undefined;
282
+ readonly columns: number;
283
+ readonly gap?: number | undefined;
284
+ readonly rows?: number | undefined;
285
+ readonly placements: {
286
+ readonly [x: string]: {
287
+ readonly area: readonly [readonly [number, number], readonly [number, number]];
288
+ readonly v?: "stretch" | "center" | "end" | "start" | undefined;
289
+ readonly h?: "stretch" | "center" | "end" | "start" | undefined;
290
+ };
291
+ };
292
+ };
293
+ readonly media?: string | undefined;
294
+ }[];
295
+ readonly readonly?: string | undefined;
296
+ } | undefined;
268
297
  readonly groups: readonly {
269
298
  readonly id: string;
270
299
  readonly title?: readonly [{
@@ -349,35 +378,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
349
378
  readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
350
379
  }[];
351
380
  } | undefined;
352
- readonly query?: {
353
- readonly style?: string | undefined;
354
- readonly id?: string | undefined;
355
- readonly initial?: {
356
- readonly data: string;
357
- readonly request?: string | undefined;
358
- } | undefined;
359
- readonly displayName?: string | undefined;
360
- readonly kind: "shwfed.component.form";
361
- readonly fields: readonly any[];
362
- readonly layouts: readonly {
363
- readonly name: string;
364
- readonly layout: {
365
- readonly style?: string | undefined;
366
- readonly columns: number;
367
- readonly gap?: number | undefined;
368
- readonly rows?: number | undefined;
369
- readonly placements: {
370
- readonly [x: string]: {
371
- readonly area: readonly [readonly [number, number], readonly [number, number]];
372
- readonly v?: "stretch" | "center" | "end" | "start" | undefined;
373
- readonly h?: "stretch" | "center" | "end" | "start" | undefined;
374
- };
375
- };
376
- };
377
- readonly media?: string | undefined;
378
- }[];
379
- readonly readonly?: string | undefined;
380
- } | undefined;
381
381
  readonly dataSource?: {
382
382
  readonly data: string;
383
383
  readonly total?: string | undefined;