create-harness-vibe-coding 0.8.19 → 0.9.3

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 (656) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README-CN.md +4 -2
  3. package/README.md +23 -4
  4. package/package.json +17 -2
  5. package/src/generator.js +19 -6
  6. package/src/index.js +531 -38
  7. package/src/prompts.js +4 -4
  8. package/src/ui/dist/assets/AgentsRoute-BGGs90wH.js +7 -0
  9. package/src/ui/dist/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
  10. package/src/ui/dist/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
  11. package/src/ui/dist/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
  12. package/src/ui/dist/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
  13. package/src/ui/dist/assets/Combination-DhBLEmof.js +42 -0
  14. package/src/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  15. package/src/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  16. package/src/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  17. package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  18. package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  19. package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  20. package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  21. package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  22. package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  23. package/src/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  24. package/src/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  25. package/src/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  26. package/src/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  27. package/src/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  28. package/src/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  29. package/src/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  30. package/src/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  31. package/src/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  32. package/src/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  33. package/src/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  34. package/src/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  35. package/src/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  36. package/src/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  37. package/src/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  38. package/src/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  39. package/src/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  40. package/src/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  41. package/src/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  42. package/src/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  43. package/src/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  44. package/src/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  45. package/src/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  46. package/src/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  47. package/src/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  48. package/src/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  49. package/src/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  50. package/src/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  51. package/src/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  52. package/src/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  53. package/src/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  54. package/src/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  55. package/src/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  56. package/src/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  57. package/src/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  58. package/src/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  59. package/src/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  60. package/src/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  61. package/src/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  62. package/src/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  63. package/src/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  64. package/src/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  65. package/src/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  66. package/src/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  67. package/src/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  68. package/src/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  69. package/src/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  70. package/src/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  71. package/src/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  72. package/src/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  73. package/src/ui/dist/assets/RolesRoute-DnodCSz0.js +2 -0
  74. package/src/ui/dist/assets/RuntimePicker-CucD8TGn.js +7 -0
  75. package/src/ui/dist/assets/SettingsRoute-DquMWjac.js +2 -0
  76. package/src/ui/dist/assets/TaskList-Bxc0Uktx.js +7 -0
  77. package/src/ui/dist/assets/TerminalDrawer-CDusYltc.js +36 -0
  78. package/src/ui/dist/assets/WorkflowRoute-BN8yHmUs.css +1 -0
  79. package/src/ui/dist/assets/WorkflowRoute-D-0wVDpY.js +334 -0
  80. package/src/ui/dist/assets/abnfDiagram-VRR7QNED-zkRKkaxO.js +2 -0
  81. package/src/ui/dist/assets/apl-B4CMkyY2.js +2 -0
  82. package/src/ui/dist/assets/ar-SA-G6X2FPQ2-BiHaArx5.js +11 -0
  83. package/src/ui/dist/assets/arc-CBnLtOFO.js +2 -0
  84. package/src/ui/dist/assets/architectureDiagram-ZJ3FMSHR-DWXRXsh1.js +37 -0
  85. package/src/ui/dist/assets/asciiarmor-Df11BRmG.js +2 -0
  86. package/src/ui/dist/assets/asn1-EdZsLKOL.js +2 -0
  87. package/src/ui/dist/assets/asterisk-B-8jnY81.js +2 -0
  88. package/src/ui/dist/assets/az-AZ-76LH7QW2-CiT05voO.js +2 -0
  89. package/src/ui/dist/assets/bg-BG-XCXSNQG7-L-UM9tNf.js +6 -0
  90. package/src/ui/dist/assets/blockDiagram-677ZJIJ3-BIyh3Bry.js +133 -0
  91. package/src/ui/dist/assets/bn-BD-2XOGV67Q-NdgbA0bC.js +6 -0
  92. package/src/ui/dist/assets/brainfuck-C4LP7Hcl.js +2 -0
  93. package/src/ui/dist/assets/c4Diagram-LMCZKHZV-CA54vWWM.js +11 -0
  94. package/src/ui/dist/assets/ca-ES-6MX7JW3Y-BKZZsQ5J.js +9 -0
  95. package/src/ui/dist/assets/channel-Da_-zcAu.js +2 -0
  96. package/src/ui/dist/assets/chunk-2Q5K7J3B-DE4cxr1v.js +2 -0
  97. package/src/ui/dist/assets/chunk-32BRIVSS-i7FwbEU9.js +2 -0
  98. package/src/ui/dist/assets/chunk-5VM5RSS4-BhIcOYSu.js +16 -0
  99. package/src/ui/dist/assets/chunk-EX3LRPZG-Ci9zZRIs.js +232 -0
  100. package/src/ui/dist/assets/chunk-JWPE2WC7-BFdkcz-G.js +2 -0
  101. package/src/ui/dist/assets/chunk-MOJQB5TN-Dzmapl_S.js +89 -0
  102. package/src/ui/dist/assets/chunk-RYQCIY6F-RTmp7FOy.js +2 -0
  103. package/src/ui/dist/assets/chunk-V7JOEXUC-DInU3v3D.js +207 -0
  104. package/src/ui/dist/assets/chunk-VR4S4FIN-BHoyGBQO.js +2 -0
  105. package/src/ui/dist/assets/chunk-XXDRQBXY-DfeLZNZx.js +2 -0
  106. package/src/ui/dist/assets/classDiagram-OUVF2IWQ-FKbUS0bu.js +2 -0
  107. package/src/ui/dist/assets/classDiagram-v2-EOCWNBFH-FKbUS0bu.js +2 -0
  108. package/src/ui/dist/assets/clike-B9uivgTg.js +2 -0
  109. package/src/ui/dist/assets/clojure-BMjYHr_A.js +2 -0
  110. package/src/ui/dist/assets/cmake-BQqOBYOt.js +2 -0
  111. package/src/ui/dist/assets/cobol-CWcv1MsR.js +2 -0
  112. package/src/ui/dist/assets/coffeescript-S37ZYGWr.js +2 -0
  113. package/src/ui/dist/assets/commonlisp-DBKNyK5s.js +2 -0
  114. package/src/ui/dist/assets/cose-bilkent-JH36ORCC-_5PUJ615.js +2 -0
  115. package/src/ui/dist/assets/crystal-SjHAIU92.js +2 -0
  116. package/src/ui/dist/assets/cs-CZ-2BRQDIVT-DnkfnhDU.js +12 -0
  117. package/src/ui/dist/assets/css-BnMrqG3P.js +2 -0
  118. package/src/ui/dist/assets/cynefin-VYW2F7L2-CmkcFv-b.js +179 -0
  119. package/src/ui/dist/assets/cynefinDiagram-TSTJHNR4-D72VZn8H.js +63 -0
  120. package/src/ui/dist/assets/cypher-C_CwsFkJ.js +2 -0
  121. package/src/ui/dist/assets/cytoscape.esm-DTSO7Bv0.js +332 -0
  122. package/src/ui/dist/assets/d-pRatUO7H.js +2 -0
  123. package/src/ui/dist/assets/da-DK-5WZEPLOC-C54tQUgd.js +6 -0
  124. package/src/ui/dist/assets/dagre-VKFMJZFB-0BsAkrmo.js +5 -0
  125. package/src/ui/dist/assets/de-DE-XR44H4JA-DGfZlR10.js +9 -0
  126. package/src/ui/dist/assets/defaultLocale-DX6XiGOO.js +2 -0
  127. package/src/ui/dist/assets/diagram-FQU43EPY-C1ZJDOca.js +4 -0
  128. package/src/ui/dist/assets/diagram-G47NLZAW-D3pr3FSP.js +25 -0
  129. package/src/ui/dist/assets/diagram-NH7WQ7WH-Bwry0NV-.js +25 -0
  130. package/src/ui/dist/assets/diagram-OA4YK3LP-L6g09cmV.js +31 -0
  131. package/src/ui/dist/assets/diagram-WEI45ONY-Bh1puYVX.js +42 -0
  132. package/src/ui/dist/assets/diff-DbItnlRl.js +2 -0
  133. package/src/ui/dist/assets/directory-open-01563666-DWU9wJ6I.js +2 -0
  134. package/src/ui/dist/assets/directory-open-4ed118d0-CunoC1EB.js +2 -0
  135. package/src/ui/dist/assets/dockerfile-BKs6k2Af.js +2 -0
  136. package/src/ui/dist/assets/dtd-DF_7sFjM.js +2 -0
  137. package/src/ui/dist/assets/dylan-DwRh75JA.js +2 -0
  138. package/src/ui/dist/assets/ebnf-CDyGwa7X.js +2 -0
  139. package/src/ui/dist/assets/ebnfDiagram-CCIWWBDH-BC_mBRR5.js +2 -0
  140. package/src/ui/dist/assets/ecl-Cabwm37j.js +2 -0
  141. package/src/ui/dist/assets/eiffel-CnydiIhH.js +2 -0
  142. package/src/ui/dist/assets/el-GR-BZB4AONW-DsnwWweL.js +11 -0
  143. package/src/ui/dist/assets/elm-vLlmbW-K.js +2 -0
  144. package/src/ui/dist/assets/erDiagram-Q63AITRT-Bkxam36l.js +86 -0
  145. package/src/ui/dist/assets/erlang-BNw1qcRV.js +2 -0
  146. package/src/ui/dist/assets/es-ES-U4NZUMDT-CRxBcQgC.js +10 -0
  147. package/src/ui/dist/assets/eu-ES-A7QVB2H4-CTd_E7YR.js +12 -0
  148. package/src/ui/dist/assets/excalidraw-default-bMWIgNCy.svg +1 -0
  149. package/src/ui/dist/assets/fa-IR-HGAKTJCU-DO56k7eG.js +9 -0
  150. package/src/ui/dist/assets/factor-kuTfRLto.js +2 -0
  151. package/src/ui/dist/assets/fcl-Kvtd6kyn.js +2 -0
  152. package/src/ui/dist/assets/fi-FI-Z5N7JZ37-DEDCF9WB.js +7 -0
  153. package/src/ui/dist/assets/file-open-002ab408-DIuFHtCF.js +2 -0
  154. package/src/ui/dist/assets/file-open-7c801643-684qeFg4.js +2 -0
  155. package/src/ui/dist/assets/file-save-3189631c-C1wFhQhH.js +2 -0
  156. package/src/ui/dist/assets/file-save-745eba88-Bb9F9Kg7.js +2 -0
  157. package/src/ui/dist/assets/flowDiagram-23GEKE2U-C3SAEao7.js +157 -0
  158. package/src/ui/dist/assets/forth-Ffai-XNe.js +2 -0
  159. package/src/ui/dist/assets/fortran-DYz_wnZ1.js +2 -0
  160. package/src/ui/dist/assets/fr-FR-RHASNOE6-DE2nPyDt.js +10 -0
  161. package/src/ui/dist/assets/ganttDiagram-NO4QXBWP-U-J_Xi-_.js +293 -0
  162. package/src/ui/dist/assets/gas-Bneqetm1.js +2 -0
  163. package/src/ui/dist/assets/gherkin-heZmZLOM.js +2 -0
  164. package/src/ui/dist/assets/gitGraphDiagram-IHSO6WYX-BADVbD-a.js +107 -0
  165. package/src/ui/dist/assets/gl-ES-HMX3MZ6V-mCqVgQHC.js +11 -0
  166. package/src/ui/dist/assets/graph-C9eacEi8.js +2 -0
  167. package/src/ui/dist/assets/groovy-D9Dt4D0W.js +2 -0
  168. package/src/ui/dist/assets/haskell-Cw1EW3IL.js +2 -0
  169. package/src/ui/dist/assets/haxe-H-WmDvRZ.js +2 -0
  170. package/src/ui/dist/assets/he-IL-6SHJWFNN-KnaLrCzw.js +11 -0
  171. package/src/ui/dist/assets/hi-IN-IWLTKZ5I-wuqiaaWt.js +5 -0
  172. package/src/ui/dist/assets/http-DBlCnlav.js +2 -0
  173. package/src/ui/dist/assets/hu-HU-A5ZG7DT2-DLg_zm22.js +8 -0
  174. package/src/ui/dist/assets/id-ID-SAP4L64H-MB2mXqcR.js +11 -0
  175. package/src/ui/dist/assets/idl-BEugSyMb.js +2 -0
  176. package/src/ui/dist/assets/image-blob-reduce.esm-HwCm7IZ0.js +8 -0
  177. package/src/ui/dist/assets/index-39SJtrt0.js +2 -0
  178. package/src/ui/dist/assets/index-BQ0LIrW-.js +2 -0
  179. package/src/ui/dist/assets/index-BcAUh2Nm.css +1 -0
  180. package/src/ui/dist/assets/index-BcThOK-i.js +331 -0
  181. package/src/ui/dist/assets/index-BnxV3k_S.js +3 -0
  182. package/src/ui/dist/assets/index-C7MZBHbT.js +117 -0
  183. package/src/ui/dist/assets/index-CCvKI2rM.js +2 -0
  184. package/src/ui/dist/assets/index-CZvmcCab.js +8 -0
  185. package/src/ui/dist/assets/index-Cp3hLKNl.js +2 -0
  186. package/src/ui/dist/assets/index-D7ayFxcx.js +2 -0
  187. package/src/ui/dist/assets/index-DAYxSQGU.js +2 -0
  188. package/src/ui/dist/assets/index-DD-HeMV0.css +1 -0
  189. package/src/ui/dist/assets/index-DPMxd3Qn.js +2 -0
  190. package/src/ui/dist/assets/index-DSe2jx3k.js +4 -0
  191. package/src/ui/dist/assets/index-DUirCkgW.js +2 -0
  192. package/src/ui/dist/assets/index-DaKPQ2hN.js +159 -0
  193. package/src/ui/dist/assets/index-DzpuR0Jg.js +2 -0
  194. package/src/ui/dist/assets/index-POndwsCI.js +2 -0
  195. package/src/ui/dist/assets/index-R8NM9I_9.js +2 -0
  196. package/src/ui/dist/assets/index-TCDuDhBj.js +2 -0
  197. package/src/ui/dist/assets/index-TckzASdM.js +2 -0
  198. package/src/ui/dist/assets/index-Yi5ytFFr.js +2 -0
  199. package/src/ui/dist/assets/infoDiagram-FWYZ7A6U-CiGBlFqH.js +3 -0
  200. package/src/ui/dist/assets/init-Gi6I4Gst.js +2 -0
  201. package/src/ui/dist/assets/ishikawaDiagram-FXEZZL3T-B1aheRbz.js +71 -0
  202. package/src/ui/dist/assets/it-IT-JPQ66NNP-DT3HSU7X.js +12 -0
  203. package/src/ui/dist/assets/ja-JP-DBVTYXUO-CsfJjjWt.js +9 -0
  204. package/src/ui/dist/assets/javascript-iXu5QeM3.js +2 -0
  205. package/src/ui/dist/assets/journeyDiagram-5HDEW3XC-DtnJPxub.js +140 -0
  206. package/src/ui/dist/assets/julia-DuME0IfC.js +2 -0
  207. package/src/ui/dist/assets/kaa-6HZHGXH3-DQz-1-Gn.js +2 -0
  208. package/src/ui/dist/assets/kab-KAB-ZGHBKWFO-CaH-LSoK.js +9 -0
  209. package/src/ui/dist/assets/kanban-definition-HUTT4EX6-CZatSm3e.js +90 -0
  210. package/src/ui/dist/assets/katex-C5jXJg4s.js +258 -0
  211. package/src/ui/dist/assets/kk-KZ-P5N5QNE5-BMXmcm55.js +2 -0
  212. package/src/ui/dist/assets/km-KH-HSX4SM5Z-ZeoJNBpN.js +12 -0
  213. package/src/ui/dist/assets/ko-KR-MTYHY66A-BeaLRKph.js +10 -0
  214. package/src/ui/dist/assets/ku-TR-6OUDTVRD-B_28KrkR.js +10 -0
  215. package/src/ui/dist/assets/layout-DEXfKzaS.js +2 -0
  216. package/src/ui/dist/assets/linear-CpEDnQRC.js +2 -0
  217. package/src/ui/dist/assets/livescript-BwQOo05w.js +2 -0
  218. package/src/ui/dist/assets/lt-LT-XHIRWOB4-BxDcnUhp.js +4 -0
  219. package/src/ui/dist/assets/lua-VAEuO923.js +2 -0
  220. package/src/ui/dist/assets/lv-LV-5QDEKY6T-DpKDl1_y.js +8 -0
  221. package/src/ui/dist/assets/map-Czzmt4hB.js +2 -0
  222. package/src/ui/dist/assets/mathematica-DTrFuWx2.js +2 -0
  223. package/src/ui/dist/assets/mbox-CNhZ1qSd.js +2 -0
  224. package/src/ui/dist/assets/mermaidLoader-CBO31t0J.js +305 -0
  225. package/src/ui/dist/assets/mermaidLoader-CEK31ho9.css +1 -0
  226. package/src/ui/dist/assets/mindmap-definition-LN4V7U3C-CQ0TccEr.js +97 -0
  227. package/src/ui/dist/assets/mirc-CjQqDB4T.js +2 -0
  228. package/src/ui/dist/assets/mllike-CXdrOF99.js +2 -0
  229. package/src/ui/dist/assets/modelica-Dc1JOy9r.js +2 -0
  230. package/src/ui/dist/assets/mr-IN-CRQNXWMA-BKCZT58p.js +14 -0
  231. package/src/ui/dist/assets/mscgen-BA5vi2Kp.js +2 -0
  232. package/src/ui/dist/assets/mumps-BT43cFF4.js +2 -0
  233. package/src/ui/dist/assets/my-MM-5M5IBNSE-D34k0G9T.js +2 -0
  234. package/src/ui/dist/assets/nb-NO-T6EIAALU-DXr_KW8J.js +11 -0
  235. package/src/ui/dist/assets/nginx-DdIZxoE0.js +2 -0
  236. package/src/ui/dist/assets/nl-NL-IS3SIHDZ-C1L0aVDR.js +9 -0
  237. package/src/ui/dist/assets/nn-NO-6E72VCQL-CLWVSxbZ.js +9 -0
  238. package/src/ui/dist/assets/nsis-LdVXkNf5.js +2 -0
  239. package/src/ui/dist/assets/ntriples-BfvgReVJ.js +2 -0
  240. package/src/ui/dist/assets/oc-FR-POXYY2M6-nf8_J3eR.js +9 -0
  241. package/src/ui/dist/assets/octave-Ck1zUtKM.js +2 -0
  242. package/src/ui/dist/assets/ordinal-Cboi1Yqb.js +2 -0
  243. package/src/ui/dist/assets/oz-BzwKVEFT.js +2 -0
  244. package/src/ui/dist/assets/pa-IN-N4M65BXN-CAMJ-xd6.js +5 -0
  245. package/src/ui/dist/assets/pascal--L3eBynH.js +2 -0
  246. package/src/ui/dist/assets/pegDiagram-2B236MQR-Bj2RcmRd.js +2 -0
  247. package/src/ui/dist/assets/percentages-BXMCSKIN-s9yWFdr6.js +160 -0
  248. package/src/ui/dist/assets/perl-CdXCOZ3F.js +2 -0
  249. package/src/ui/dist/assets/pica-BGv_AhAB.js +8 -0
  250. package/src/ui/dist/assets/pieDiagram-ENE6RG2P-obpzz8dC.js +40 -0
  251. package/src/ui/dist/assets/pig-CevX1Tat.js +2 -0
  252. package/src/ui/dist/assets/pl-PL-T2D74RX3-DKJ5H85v.js +10 -0
  253. package/src/ui/dist/assets/powershell-CFHJl5sT.js +2 -0
  254. package/src/ui/dist/assets/properties-C78fOPTZ.js +2 -0
  255. package/src/ui/dist/assets/protobuf-ChK-085T.js +2 -0
  256. package/src/ui/dist/assets/{proxy-D0vUbds5.js → proxy-BSmwef4H.js} +2 -2
  257. package/src/ui/dist/assets/pt-BR-5N22H2LF-B5kow-kN.js +10 -0
  258. package/src/ui/dist/assets/pt-PT-UZXXM6DQ-B2G34fso.js +10 -0
  259. package/src/ui/dist/assets/pug-DeIclll2.js +2 -0
  260. package/src/ui/dist/assets/puppet-DMA9R1ak.js +2 -0
  261. package/src/ui/dist/assets/python-BuPzkPfP.js +2 -0
  262. package/src/ui/dist/assets/q-pXgVlZs6.js +2 -0
  263. package/src/ui/dist/assets/quadrantDiagram-ABIIQ3AL-Cl-T7NkJ.js +8 -0
  264. package/src/ui/dist/assets/r-B6wPVr8A.js +2 -0
  265. package/src/ui/dist/assets/railroadDiagram-RFXS5EU6-DMq82RHg.js +2 -0
  266. package/src/ui/dist/assets/{refresh-cw-JNmExijd.js → refresh-cw-CbFd7guV.js} +2 -2
  267. package/src/ui/dist/assets/requirementDiagram-TGXJPOKE-tGInMDgU.js +85 -0
  268. package/src/ui/dist/assets/ro-RO-JPDTUUEW-BwLdZW91.js +12 -0
  269. package/src/ui/dist/assets/roundRect-0PYZxl1G.js +2 -0
  270. package/src/ui/dist/assets/rpm-CTu-6PCP.js +2 -0
  271. package/src/ui/dist/assets/ru-RU-B4JR7IUQ-DpdAgIJc.js +10 -0
  272. package/src/ui/dist/assets/ruby-B2Rjki9n.js +2 -0
  273. package/src/ui/dist/assets/runtimeBrand-BoKPimsz.js +2 -0
  274. package/src/ui/dist/assets/sankeyDiagram-HTMAVEWB-C7X-ET4m.js +41 -0
  275. package/src/ui/dist/assets/sas-B4kiWyti.js +2 -0
  276. package/src/ui/dist/assets/save-D1CXHwBw.js +12 -0
  277. package/src/ui/dist/assets/scheme-C41bIUwD.js +2 -0
  278. package/src/ui/dist/assets/sequenceDiagram-DBY2YBRQ-Bn24i_nY.js +163 -0
  279. package/src/ui/dist/assets/settings-2-DtSNAAcU.js +22 -0
  280. package/src/ui/dist/assets/shell-CjFT_Tl9.js +2 -0
  281. package/src/ui/dist/assets/shield-check-BVbJ8T_N.js +7 -0
  282. package/src/ui/dist/assets/si-LK-N5RQ5JYF-naJaUy5u.js +2 -0
  283. package/src/ui/dist/assets/sieve-C3Gn_uJK.js +2 -0
  284. package/src/ui/dist/assets/simple-mode-GW_nhZxv.js +2 -0
  285. package/src/ui/dist/assets/sizeCapture-X5ZJPWSS-DAQHfm82.js +2 -0
  286. package/src/ui/dist/assets/sk-SK-C5VTKIMK-1NPz1J_d.js +7 -0
  287. package/src/ui/dist/assets/sl-SI-NN7IZMDC-D8RfmNQw.js +7 -0
  288. package/src/ui/dist/assets/smalltalk-CnHTOXQT.js +2 -0
  289. package/src/ui/dist/assets/solr-DehyRSwq.js +2 -0
  290. package/src/ui/dist/assets/sparql-DkYu6x3z.js +2 -0
  291. package/src/ui/dist/assets/spreadsheet-BCZA_wO0.js +2 -0
  292. package/src/ui/dist/assets/sql-D0XecflT.js +2 -0
  293. package/src/ui/dist/assets/stateDiagram-2N3HPSRC-Ck48D1ck.js +2 -0
  294. package/src/ui/dist/assets/stateDiagram-v2-6OUMAXLB-CdfRCJAJ.js +2 -0
  295. package/src/ui/dist/assets/stex-C3f8Ysf7.js +2 -0
  296. package/src/ui/dist/assets/style-C3QI7VPf.css +1 -0
  297. package/src/ui/dist/assets/stylus-B533Al4x.js +2 -0
  298. package/src/ui/dist/assets/subset-shared.chunk-eAtLHmbi.js +85 -0
  299. package/src/ui/dist/assets/subset-worker.chunk-DeHCTnTk.js +2 -0
  300. package/src/ui/dist/assets/sv-SE-XGPEYMSR-BeOYCU-8.js +11 -0
  301. package/src/ui/dist/assets/swift-BzpIVaGY.js +2 -0
  302. package/src/ui/dist/assets/swimlanes-5IMT3BWC-DOy22UjP.js +3 -0
  303. package/src/ui/dist/assets/swimlanesDiagram-G3AALYLV-sicPbVOg.js +9 -0
  304. package/src/ui/dist/assets/ta-IN-2NMHFXQM-CtS68WDd.js +10 -0
  305. package/src/ui/dist/assets/tcl-DVfN8rqt.js +2 -0
  306. package/src/ui/dist/assets/{terminal-BBQvnOAK.js → terminal-DEby5Y_P.js} +2 -2
  307. package/src/ui/dist/assets/terminalControl-BkFeDVXo.js +134 -0
  308. package/src/ui/dist/assets/textile-CnDTJFAw.js +2 -0
  309. package/src/ui/dist/assets/th-TH-HPSO5L25-DCHY9-Co.js +3 -0
  310. package/src/ui/dist/assets/tiddlywiki-DO-Gjzrf.js +2 -0
  311. package/src/ui/dist/assets/tiki-DGYXhP31.js +2 -0
  312. package/src/ui/dist/assets/timeline-definition-FHXFAJF6-DVkG72qO.js +121 -0
  313. package/src/ui/dist/assets/toml-Bm5Em-hy.js +2 -0
  314. package/src/ui/dist/assets/tr-TR-DEFEU3FU-y5-vjTv8.js +8 -0
  315. package/src/ui/dist/assets/troff-wAsdV37c.js +2 -0
  316. package/src/ui/dist/assets/ttcn-CfJYG6tj.js +2 -0
  317. package/src/ui/dist/assets/ttcn-cfg-B9xdYoR4.js +2 -0
  318. package/src/ui/dist/assets/turtle-B1tBg_DP.js +2 -0
  319. package/src/ui/dist/assets/uk-UA-QMV73CPH-BRbR5It6.js +7 -0
  320. package/src/ui/dist/assets/useReducedMotion-D07XP52Q.js +12 -0
  321. package/src/ui/dist/assets/vb-CmGdzxic.js +2 -0
  322. package/src/ui/dist/assets/vbscript-BuJXcnF6.js +2 -0
  323. package/src/ui/dist/assets/velocity-D8B20fx6.js +2 -0
  324. package/src/ui/dist/assets/vennDiagram-L72KCM5P-DwMwBlf-.js +35 -0
  325. package/src/ui/dist/assets/verilog-C6RDOZhf.js +2 -0
  326. package/src/ui/dist/assets/vhdl-lSbBsy5d.js +2 -0
  327. package/src/ui/dist/assets/vi-VN-M7AON7JQ-s6wSBv2s.js +6 -0
  328. package/src/ui/dist/assets/wardleyDiagram-EHGQE667-CNuuvzEg.js +79 -0
  329. package/src/ui/dist/assets/webidl-ZXfAyPTL.js +2 -0
  330. package/src/ui/dist/assets/{x-DoIOGAJz.js → x-B84wq78k.js} +2 -2
  331. package/src/ui/dist/assets/xquery-DzFWVndE.js +2 -0
  332. package/src/ui/dist/assets/xychartDiagram-FW5EYKEG-dUpZxmn6.js +8 -0
  333. package/src/ui/dist/assets/yacas-BJ4BC0dw.js +2 -0
  334. package/src/ui/dist/assets/z80-Hz9HOZM7.js +2 -0
  335. package/src/ui/dist/assets/zh-CN-LNUGB5OW-Cu_-POQN.js +11 -0
  336. package/src/ui/dist/assets/zh-HK-E62DVLB3-BCx4W4qZ.js +2 -0
  337. package/src/ui/dist/assets/zh-TW-RAJ6MFWO-02wx_Mrj.js +10 -0
  338. package/src/ui/dist/icons/excalidraw.svg +1 -0
  339. package/src/ui/dist/icons/markdown.svg +1 -0
  340. package/src/ui/dist/index.html +2 -2
  341. package/src/ui/package.json +10 -0
  342. package/src/ui/playwright.config.ts +36 -0
  343. package/src/ui/pnpm-workspace.yaml +2 -0
  344. package/src/ui/public/icons/excalidraw.svg +1 -0
  345. package/src/ui/public/icons/markdown.svg +1 -0
  346. package/src/ui/tsconfig.json +2 -1
  347. package/src/ui/vite.config.ts +1 -0
  348. package/src/wf-ui-server/__tests__/a2a-store.test.mjs +432 -15
  349. package/src/wf-ui-server/__tests__/action-registry-loader.test.mjs +156 -0
  350. package/src/wf-ui-server/__tests__/claude-stream-json.test.mjs +397 -0
  351. package/src/wf-ui-server/__tests__/codex-appserver.test.mjs +392 -0
  352. package/src/wf-ui-server/__tests__/component-node-api.test.mjs +881 -0
  353. package/src/wf-ui-server/__tests__/component-node-store.test.mjs +401 -0
  354. package/src/wf-ui-server/__tests__/control-plane-acceptance.test.mjs +2027 -0
  355. package/src/wf-ui-server/__tests__/control-plane-cli-smoke.test.mjs +1014 -0
  356. package/src/wf-ui-server/__tests__/dispatch-lifecycle.test.mjs +330 -0
  357. package/src/wf-ui-server/__tests__/effort-compatibility-red-092.test.mjs +151 -0
  358. package/src/wf-ui-server/__tests__/graph-layout-agent-tree.test.mjs +254 -0
  359. package/src/wf-ui-server/__tests__/graph-layout-tidy.test.mjs +260 -0
  360. package/src/wf-ui-server/__tests__/graph-layout.test.mjs +84 -0
  361. package/src/wf-ui-server/__tests__/node-config-api.test.mjs +384 -0
  362. package/src/wf-ui-server/__tests__/opencode-server.test.mjs +526 -0
  363. package/src/wf-ui-server/__tests__/peer-capsule.test.mjs +2 -2
  364. package/src/wf-ui-server/__tests__/pty-adapter.test.mjs +71 -1
  365. package/src/wf-ui-server/__tests__/runtime-config.test.mjs +3 -3
  366. package/src/wf-ui-server/__tests__/runtime-detector.test.mjs +21 -0
  367. package/src/wf-ui-server/__tests__/runtime-review.test.mjs +828 -0
  368. package/src/wf-ui-server/__tests__/server.integration.test.mjs +1463 -11
  369. package/src/wf-ui-server/__tests__/session-cleanup.test.mjs +159 -0
  370. package/src/wf-ui-server/__tests__/session-registry.test.mjs +52 -3
  371. package/src/wf-ui-server/__tests__/settings.test.mjs +12 -2
  372. package/src/wf-ui-server/__tests__/spawn-gate.test.mjs +78 -0
  373. package/src/wf-ui-server/__tests__/task-group-parser.test.mjs +120 -0
  374. package/src/wf-ui-server/__tests__/task-group-tag.test.mjs +264 -0
  375. package/src/wf-ui-server/__tests__/task-parser.test.mjs +49 -3
  376. package/src/wf-ui-server/__tests__/terminal-context-hardening.test.mjs +122 -0
  377. package/src/wf-ui-server/__tests__/terminal-context.test.mjs +164 -0
  378. package/src/wf-ui-server/__tests__/terminal-store.test.mjs +4 -4
  379. package/src/wf-ui-server/__tests__/wf-browser-api.test.mjs +599 -0
  380. package/src/wf-ui-server/__tests__/wf-browser-store.test.mjs +184 -0
  381. package/src/wf-ui-server/__tests__/workflow-action-registry.test.mjs +282 -0
  382. package/src/wf-ui-server/__tests__/workflow-agent-communication.test.mjs +411 -0
  383. package/src/wf-ui-server/__tests__/workflow-agent-context.test.mjs +323 -0
  384. package/src/wf-ui-server/__tests__/workflow-agent-cooperation-permissions.test.mjs +318 -0
  385. package/src/wf-ui-server/__tests__/workflow-agent-messages-structured.test.mjs +458 -0
  386. package/src/wf-ui-server/__tests__/workflow-agent-routing.test.mjs +434 -0
  387. package/src/wf-ui-server/__tests__/workflow-agent-runtime.test.mjs +324 -0
  388. package/src/wf-ui-server/__tests__/workflow-api-integration.test.mjs +263 -0
  389. package/src/wf-ui-server/__tests__/workflow-api-phase3.test.mjs +1213 -0
  390. package/src/wf-ui-server/__tests__/workflow-claude-materialize.test.mjs +209 -0
  391. package/src/wf-ui-server/__tests__/workflow-cli-registry-manuals.test.mjs +173 -0
  392. package/src/wf-ui-server/__tests__/workflow-cli-surface.test.mjs +176 -0
  393. package/src/wf-ui-server/__tests__/workflow-codex-resume-id.test.mjs +556 -0
  394. package/src/wf-ui-server/__tests__/workflow-cooperation-enforcement.test.mjs +553 -0
  395. package/src/wf-ui-server/__tests__/workflow-depth-resume-dock.test.mjs +846 -0
  396. package/src/wf-ui-server/__tests__/workflow-display-node.test.mjs +150 -0
  397. package/src/wf-ui-server/__tests__/workflow-edge-update.test.mjs +296 -0
  398. package/src/wf-ui-server/__tests__/workflow-file-cache-lock-watch.test.mjs +380 -0
  399. package/src/wf-ui-server/__tests__/workflow-file-formats.test.mjs +994 -0
  400. package/src/wf-ui-server/__tests__/workflow-file-node-actions.test.mjs +294 -0
  401. package/src/wf-ui-server/__tests__/workflow-goal-actions.test.mjs +357 -0
  402. package/src/wf-ui-server/__tests__/workflow-goal-task-autoclose.test.mjs +256 -0
  403. package/src/wf-ui-server/__tests__/workflow-graceful-stop.test.mjs +108 -0
  404. package/src/wf-ui-server/__tests__/workflow-graph-undo.test.mjs +524 -0
  405. package/src/wf-ui-server/__tests__/workflow-layout.test.mjs +732 -0
  406. package/src/wf-ui-server/__tests__/workflow-magnetic-topology.test.mjs +222 -0
  407. package/src/wf-ui-server/__tests__/workflow-markdown-lock.test.mjs +359 -0
  408. package/src/wf-ui-server/__tests__/workflow-mcp-hub.test.mjs +174 -0
  409. package/src/wf-ui-server/__tests__/workflow-node-manual-schema.test.mjs +241 -0
  410. package/src/wf-ui-server/__tests__/workflow-node-runtime.test.mjs +1991 -0
  411. package/src/wf-ui-server/__tests__/workflow-node-store-utils.test.mjs +125 -0
  412. package/src/wf-ui-server/__tests__/workflow-registry-drift.test.mjs +296 -0
  413. package/src/wf-ui-server/__tests__/workflow-resource-handle-four-side.test.mjs +217 -0
  414. package/src/wf-ui-server/__tests__/workflow-role-profile.test.mjs +234 -0
  415. package/src/wf-ui-server/__tests__/workflow-set-model.test.mjs +261 -0
  416. package/src/wf-ui-server/__tests__/workflow-skill-group-context-enabled.test.mjs +131 -0
  417. package/src/wf-ui-server/__tests__/workflow-skill-group-enable-disable.test.mjs +186 -0
  418. package/src/wf-ui-server/__tests__/workflow-skills-hub.test.mjs +125 -0
  419. package/src/wf-ui-server/__tests__/workflow-state-reconcile.test.mjs +139 -0
  420. package/src/wf-ui-server/__tests__/workflow-subagent-strategy-matrix.test.mjs +529 -0
  421. package/src/wf-ui-server/__tests__/workflow-team-flow.test.mjs +278 -0
  422. package/src/wf-ui-server/__tests__/workflow-terminal-control-live.test.mjs +294 -0
  423. package/src/wf-ui-server/__tests__/workflow-terminal-control.test.mjs +631 -0
  424. package/src/wf-ui-server/__tests__/workflow-timer-wakeup.test.mjs +318 -0
  425. package/src/wf-ui-server/__tests__/workflow-unified-resume.test.mjs +537 -0
  426. package/src/wf-ui-server/__tests__/workspace-api-hardening.test.mjs +187 -0
  427. package/src/wf-ui-server/__tests__/workspace-api.test.mjs +382 -0
  428. package/src/wf-ui-server/__tests__/workspace-reveal.test.mjs +138 -0
  429. package/src/wf-ui-server/__tests__/workspace-store-hardening.test.mjs +255 -0
  430. package/src/wf-ui-server/__tests__/workspace-store.test.mjs +208 -0
  431. package/src/wf-ui-server/__tests__/ws-events.integration.test.mjs +52 -25
  432. package/src/wf-ui-server/__tests__/ws-terminal.integration.test.mjs +12 -6
  433. package/src/wf-ui-server/__tests__/ws-wf-browser.integration.test.mjs +488 -0
  434. package/src/wf-ui-server/a2a-store.mjs +3007 -89
  435. package/src/wf-ui-server/action-registry.mjs +277 -0
  436. package/src/wf-ui-server/bridge-store.mjs +276 -0
  437. package/src/wf-ui-server/chat-driver.mjs +220 -0
  438. package/src/wf-ui-server/chat-store.mjs +109 -0
  439. package/src/wf-ui-server/claude-transcript-materializer.mjs +235 -0
  440. package/src/wf-ui-server/codex-update-prompt.mjs +53 -0
  441. package/src/wf-ui-server/component-node-store.mjs +689 -0
  442. package/src/wf-ui-server/composition-api.mjs +436 -0
  443. package/src/wf-ui-server/control-plane-token.mjs +17 -0
  444. package/src/wf-ui-server/dispatch-contract.mjs +150 -0
  445. package/src/wf-ui-server/drivers/claude-stream-json.mjs +371 -0
  446. package/src/wf-ui-server/drivers/codex-appserver.mjs +513 -0
  447. package/src/wf-ui-server/drivers/opencode-server.mjs +486 -0
  448. package/src/wf-ui-server/excalidraw-svg.mjs +141 -0
  449. package/src/wf-ui-server/file-format-adapters.mjs +511 -0
  450. package/src/wf-ui-server/file-watcher.mjs +215 -0
  451. package/src/wf-ui-server/graph-layout.mjs +778 -0
  452. package/src/wf-ui-server/harness-env.mjs +46 -0
  453. package/src/wf-ui-server/json-store-utils.mjs +48 -0
  454. package/src/wf-ui-server/model-capability.mjs +773 -0
  455. package/src/wf-ui-server/node-config-store.mjs +233 -0
  456. package/src/wf-ui-server/node-store-utils.mjs +88 -0
  457. package/src/wf-ui-server/peer-capsule.mjs +56 -1
  458. package/src/wf-ui-server/pty-adapter.mjs +513 -11
  459. package/src/wf-ui-server/reveal-foreground.mjs +69 -0
  460. package/src/wf-ui-server/runtime-detector.mjs +52 -6
  461. package/src/wf-ui-server/server.mjs +5613 -403
  462. package/src/wf-ui-server/session-cleanup.mjs +363 -0
  463. package/src/wf-ui-server/session-registry.mjs +179 -3
  464. package/src/wf-ui-server/settings.mjs +25 -0
  465. package/src/wf-ui-server/spawn-gate.mjs +46 -0
  466. package/src/wf-ui-server/task-parser.mjs +88 -3
  467. package/src/wf-ui-server/terminal-store.mjs +225 -11
  468. package/src/wf-ui-server/timer-wakeup-scheduler.mjs +226 -0
  469. package/src/wf-ui-server/wf-browser-store.mjs +733 -0
  470. package/src/wf-ui-server/workflow-agent-context.mjs +1731 -0
  471. package/src/wf-ui-server/workflow-capability-node-store.mjs +676 -0
  472. package/src/wf-ui-server/workflow-event-node-store.mjs +623 -0
  473. package/src/wf-ui-server/workflow-goal-node-store.mjs +328 -0
  474. package/src/wf-ui-server/workflow-graph-store.mjs +623 -0
  475. package/src/wf-ui-server/workflow-mcp-hub.mjs +286 -0
  476. package/src/wf-ui-server/workflow-node-runtime.mjs +1767 -0
  477. package/src/wf-ui-server/workflow-node-settings-store.mjs +339 -0
  478. package/src/wf-ui-server/workflow-node-types/agent-node.mjs +920 -0
  479. package/src/wf-ui-server/workflow-node-types/display-node.mjs +151 -0
  480. package/src/wf-ui-server/workflow-node-types/excalidraw-node.mjs +145 -0
  481. package/src/wf-ui-server/workflow-node-types/file-node.mjs +484 -0
  482. package/src/wf-ui-server/workflow-node-types/github-trigger-node.mjs +207 -0
  483. package/src/wf-ui-server/workflow-node-types/goal-node.mjs +491 -0
  484. package/src/wf-ui-server/workflow-node-types/markdown-node.mjs +225 -0
  485. package/src/wf-ui-server/workflow-node-types/mcp-connector-node.mjs +71 -0
  486. package/src/wf-ui-server/workflow-node-types/role-profile-store.mjs +191 -0
  487. package/src/wf-ui-server/workflow-node-types/skill-group-node.mjs +98 -0
  488. package/src/wf-ui-server/workflow-node-types/timer-node.mjs +607 -0
  489. package/src/wf-ui-server/workflow-ontology.mjs +681 -0
  490. package/src/wf-ui-server/workflow-operation-store.mjs +115 -0
  491. package/src/wf-ui-server/workflow-skills-hub.mjs +366 -0
  492. package/src/wf-ui-server/workflow-skills-market.mjs +723 -0
  493. package/src/wf-ui-server/workspace-store.mjs +951 -0
  494. package/src/wf-ui-server/ws-chat.mjs +299 -0
  495. package/src/wf-ui-server/ws-events.mjs +45 -20
  496. package/src/wf-ui-server/ws-terminal.mjs +165 -22
  497. package/src/wf-ui-server/ws-wf-browser.mjs +419 -0
  498. package/templates/common/.claude/agents/review-manager.md +33 -29
  499. package/templates/common/.claude/commands/wf-browser.md +1 -1
  500. package/templates/common/.claude/commands/wf-help.md +5 -3
  501. package/templates/common/.claude/commands/wf-init.md +44 -0
  502. package/templates/common/.claude/commands/wf-learn.md +34 -8
  503. package/templates/common/.claude/commands/wf-max.md +19 -9
  504. package/templates/common/.claude/commands/wf-review.md +3 -3
  505. package/templates/common/.claude/commands/wf-search.md +55 -0
  506. package/templates/common/.claude/commands/wf-task-archive.md +5 -4
  507. package/templates/common/.claude/commands/wf-task-list.md +6 -3
  508. package/templates/common/.claude/commands/wf-task-record.md +10 -2
  509. package/templates/common/.claude/commands/wf-ui.md +12 -5
  510. package/templates/common/.claude/commands/wf-update.md +4 -0
  511. package/templates/common/.claude/commands/wf.md +12 -1
  512. package/templates/common/.claude/rules/ecc/common.md +10 -1
  513. package/templates/common/.claude/skills/wf/SKILL.md +36 -0
  514. package/templates/common/.claude/skills/wf-browser/SKILL.md +427 -122
  515. package/templates/common/.claude/skills/wf-browser/references/BROWSER_CONTROL_PATTERNS.md +43 -0
  516. package/templates/common/.claude/skills/wf-init/SKILL.md +33 -0
  517. package/templates/common/.claude/skills/wf-learn/SKILL.md +106 -26
  518. package/templates/common/.claude/skills/wf-max/SKILL.md +45 -11
  519. package/templates/common/.claude/skills/wf-review/SKILL.md +26 -54
  520. package/templates/common/.claude/skills/wf-search/SKILL.md +122 -0
  521. package/templates/common/.claude/skills/wf-search/references/evidence-contract.md +77 -0
  522. package/templates/common/.claude/skills/wf-search/references/policies/compare.md +38 -0
  523. package/templates/common/.claude/skills/wf-search/references/policies/fact.md +39 -0
  524. package/templates/common/.claude/skills/wf-search/references/policies/troubleshoot.md +39 -0
  525. package/templates/common/.claude/skills/wf-search/references/policies/verify.md +44 -0
  526. package/templates/common/.claude/skills/wf-search/references/source-routing.md +40 -0
  527. package/templates/common/.claude/skills/wf-search/references/tool-adapters.md +38 -0
  528. package/templates/common/.claude/skills/wf-ui/SKILL.md +146 -12
  529. package/templates/common/.claude/skills/wf-update/SKILL.md +5 -1
  530. package/templates/common/.harness-version +188 -85
  531. package/templates/common/.opencode/agents/review-manager.md +31 -27
  532. package/templates/common/.opencode/commands/wf-browser.md +1 -1
  533. package/templates/common/.opencode/commands/wf-help.md +5 -3
  534. package/templates/common/.opencode/commands/wf-init.md +44 -0
  535. package/templates/common/.opencode/commands/wf-learn.md +34 -8
  536. package/templates/common/.opencode/commands/wf-max.md +19 -9
  537. package/templates/common/.opencode/commands/wf-review.md +3 -3
  538. package/templates/common/.opencode/commands/wf-search.md +55 -0
  539. package/templates/common/.opencode/commands/wf-task-archive.md +5 -7
  540. package/templates/common/.opencode/commands/wf-task-list.md +6 -6
  541. package/templates/common/.opencode/commands/wf-task-record.md +10 -5
  542. package/templates/common/.opencode/commands/wf-ui.md +12 -5
  543. package/templates/common/.opencode/commands/wf-update.md +4 -0
  544. package/templates/common/.opencode/commands/wf.md +12 -1
  545. package/templates/common/CLAUDE.md +61 -3
  546. package/templates/common/Harness/MEMORY.md +8 -5
  547. package/templates/common/Harness/README.md +14 -10
  548. package/templates/common/Harness/a2a/action-registry.json +4397 -0
  549. package/templates/common/Harness/a2a/role-graph.json +16 -3
  550. package/templates/common/Harness/a2a/skills/terminal-control.json +45 -1
  551. package/templates/common/Harness/a2a/skills/wf-ui-map.json +50 -0
  552. package/templates/common/Harness/a2a/skills/workflow-agent-node.json +143 -0
  553. package/templates/common/Harness/a2a/skills/workflow-context.json +95 -0
  554. package/templates/common/Harness/a2a/skills/workflow-diagram-node.json +60 -0
  555. package/templates/common/Harness/a2a/skills/workflow-display-node.json +69 -0
  556. package/templates/common/Harness/a2a/skills/workflow-file-node.json +92 -0
  557. package/templates/common/Harness/a2a/skills/workflow-goal-node.json +76 -0
  558. package/templates/common/Harness/a2a/skills/workflow-markdown-node.json +79 -0
  559. package/templates/common/Harness/a2a/skills/workflow-mcp-connector-node.json +59 -0
  560. package/templates/common/Harness/a2a/skills/workflow-node-actions.json +105 -0
  561. package/templates/common/Harness/a2a/skills/workflow-node-map.json +71 -0
  562. package/templates/common/Harness/a2a/skills/workflow-ontology.json +54 -0
  563. package/templates/common/Harness/a2a/skills/workflow-resource-node.json +68 -0
  564. package/templates/common/Harness/a2a/skills/workflow-skill-group-node.json +56 -0
  565. package/templates/common/Harness/a2a/skills/workflow-timer-node.json +81 -0
  566. package/templates/common/Harness/a2a/workflows.json +33 -0
  567. package/templates/common/Harness/ownership.manifest.json +263 -2
  568. package/templates/common/Harness/project/architecture.md +499 -0
  569. package/templates/common/Harness/research/README.md +20 -0
  570. package/templates/common/Harness/scripts/README.md +70 -6
  571. package/templates/common/Harness/scripts/a2a-terminal.mjs +12 -4
  572. package/templates/common/Harness/scripts/context-budget.mjs +7 -3
  573. package/templates/common/Harness/scripts/lib/memory-context.mjs +400 -0
  574. package/templates/common/Harness/scripts/lib/path-scope.mjs +77 -0
  575. package/templates/common/Harness/scripts/lib/research-policy.mjs +99 -0
  576. package/templates/common/Harness/scripts/lib/wf-search.mjs +189 -0
  577. package/templates/common/Harness/scripts/memory-context.mjs +63 -0
  578. package/templates/common/Harness/scripts/research-policy.mjs +27 -0
  579. package/templates/common/Harness/scripts/task-context.mjs +547 -0
  580. package/templates/common/Harness/scripts/task-group-index.mjs +242 -0
  581. package/templates/common/Harness/scripts/task-state.mjs +659 -95
  582. package/templates/common/Harness/scripts/validate-harness.mjs +70 -28
  583. package/templates/common/Harness/scripts/wf-auto-update-prompt.mjs +24 -0
  584. package/templates/common/Harness/scripts/wf-remove.mjs +10 -0
  585. package/templates/common/Harness/scripts/wf-search.mjs +10 -0
  586. package/templates/common/Harness/scripts/wf-ui-control.mjs +3144 -0
  587. package/templates/common/Harness/scripts/wf-update-check.mjs +274 -51
  588. package/templates/common/Harness/scripts/wf-update-runner.mjs +53 -16
  589. package/templates/common/Harness/settings.json +10 -0
  590. package/templates/common/Harness/specs/guides/SETUP.md +4 -3
  591. package/templates/common/Harness/specs/protocols/HARNESS_BRIDGE.md +429 -48
  592. package/templates/common/Harness/specs/protocols/MEMORY_PROTOCOL.md +24 -0
  593. package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +14 -11
  594. package/templates/common/Harness/specs/runtime/command-surface.json +28 -0
  595. package/templates/common/Harness/specs/runtime/context-loading.md +6 -0
  596. package/templates/common/Harness/specs/runtime/dispatch.md +9 -1
  597. package/templates/common/Harness/specs/runtime/subagents.md +20 -5
  598. package/templates/common/Harness/specs/workflows/WF-AUTO-SPARK.md +19 -0
  599. package/templates/common/Harness/specs/workflows/WF-AUTO.md +21 -0
  600. package/templates/common/Harness/specs/workflows/WF-KERNEL.md +4 -2
  601. package/templates/common/Harness/specs/workflows/WF-MAX.md +39 -12
  602. package/templates/common/Harness/specs/workflows/WF-STATE.md +62 -14
  603. package/templates/common/Harness/specs/workflows/WF.md +32 -0
  604. package/templates/common/Harness/tasks/INDEX.json +7 -0
  605. package/templates/common/Harness/tasks/INDEX.md +12 -0
  606. package/templates/common/Harness/tasks/_template/PLAN.md +6 -0
  607. package/templates/common/Harness/tasks/_template/PROGRESS.md +5 -0
  608. package/templates/common/Harness/tasks/_template/STATE.json +22 -0
  609. package/templates/common/Harness/templates/TEST_PLAN.template.md +5 -4
  610. package/templates/common/Harness/templates/UI_CONTRACT.template.md +7 -5
  611. package/templates/common/Harness/wf-browser/README.md +69 -0
  612. package/templates/common/README.md +17 -0
  613. package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js +0 -17
  614. package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js.map +0 -1
  615. package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js +0 -7
  616. package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js.map +0 -1
  617. package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js +0 -12
  618. package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js.map +0 -1
  619. package/src/ui/dist/assets/TaskList-BN4r8s1i.js +0 -50
  620. package/src/ui/dist/assets/TaskList-BN4r8s1i.js.map +0 -1
  621. package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js +0 -74
  622. package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js.map +0 -1
  623. package/src/ui/dist/assets/WorkflowRoute-BnuhLJ6X.css +0 -1
  624. package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js +0 -39
  625. package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js.map +0 -1
  626. package/src/ui/dist/assets/index-BOVYWntB.js +0 -117
  627. package/src/ui/dist/assets/index-BOVYWntB.js.map +0 -1
  628. package/src/ui/dist/assets/index-DaUObq0H.css +0 -1
  629. package/src/ui/dist/assets/maximize-2-LNrr_rKr.js +0 -7
  630. package/src/ui/dist/assets/maximize-2-LNrr_rKr.js.map +0 -1
  631. package/src/ui/dist/assets/plus-QuTJyoT3.js +0 -7
  632. package/src/ui/dist/assets/plus-QuTJyoT3.js.map +0 -1
  633. package/src/ui/dist/assets/proxy-D0vUbds5.js.map +0 -1
  634. package/src/ui/dist/assets/refresh-cw-JNmExijd.js.map +0 -1
  635. package/src/ui/dist/assets/terminal-BBQvnOAK.js.map +0 -1
  636. package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js +0 -7
  637. package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js.map +0 -1
  638. package/src/ui/dist/assets/x-DoIOGAJz.js.map +0 -1
  639. package/src/ui/pnpm-lock.yaml +0 -1582
  640. package/src/ui/src/App.tsx +0 -86
  641. package/src/ui/src/api.ts +0 -93
  642. package/src/ui/src/components/AgentsRoute.tsx +0 -503
  643. package/src/ui/src/components/Footer.tsx +0 -69
  644. package/src/ui/src/components/Header.tsx +0 -175
  645. package/src/ui/src/components/LoadingView.tsx +0 -22
  646. package/src/ui/src/components/RolesRoute.tsx +0 -169
  647. package/src/ui/src/components/SettingsRoute.tsx +0 -166
  648. package/src/ui/src/components/TaskList.tsx +0 -388
  649. package/src/ui/src/components/TerminalDrawer.tsx +0 -611
  650. package/src/ui/src/components/WorkflowRoute.tsx +0 -670
  651. package/src/ui/src/hooks/useReducedMotion.ts +0 -17
  652. package/src/ui/src/hooks/useServerConnection.ts +0 -114
  653. package/src/ui/src/index.css +0 -281
  654. package/src/ui/src/main.tsx +0 -11
  655. package/src/ui/src/types.ts +0 -108
  656. /package/src/ui/dist/assets/{TerminalDrawer-6GBZ9nXN.css → terminalControl-6GBZ9nXN.css} +0 -0
@@ -224,6 +224,34 @@
224
224
  "codexSkill": true,
225
225
  "helpRow": true
226
226
  }
227
+ },
228
+ {
229
+ "id": "wf-init",
230
+ "classification": "direct",
231
+ "aliases": ["/wf-init", "$wf-init", "/skills wf-init"],
232
+ "entersWf": false,
233
+ "taskCapsulePolicy": "none",
234
+ "surfaces": {
235
+ "claudeCommand": true,
236
+ "opencodeCommand": true,
237
+ "claudeSkill": true,
238
+ "codexSkill": true,
239
+ "helpRow": true
240
+ }
241
+ },
242
+ {
243
+ "id": "wf-search",
244
+ "classification": "direct",
245
+ "aliases": ["/wf-search", "$wf-search", "/skills wf-search"],
246
+ "entersWf": false,
247
+ "taskCapsulePolicy": "none",
248
+ "surfaces": {
249
+ "claudeCommand": true,
250
+ "opencodeCommand": true,
251
+ "claudeSkill": true,
252
+ "codexSkill": true,
253
+ "helpRow": true
254
+ }
227
255
  }
228
256
  ]
229
257
  }
@@ -31,6 +31,12 @@ files, contracts, tests, or evidence to stay under budget.
31
31
 
32
32
  After the tier is selected, load other docs only by trigger.
33
33
 
34
+ ## Task Context Pack and Research Gate
35
+
36
+ Use `task-context.mjs pack/show` for bounded role packs/pointers. Run
37
+ `research-policy.mjs decide` before web/GitHub/HF lookup; record source/adoption
38
+ evidence. Never preload full logs; structural, not semantic proof.
39
+
34
40
  Escalation rule: when unsure whether a file is required, prefer targeted
35
41
  keyword search or a one-file read over guessing from memory. Escalate from a
36
42
  smaller profile to the next targeted profile only when the new file directly
@@ -4,8 +4,16 @@ Purpose: coordinate a small set of subagents without building a scheduler.
4
4
 
5
5
  Use [subagents.md](subagents.md) for orchestration strategy. Use this file for the dispatch table, handoff format, and status protocol.
6
6
 
7
+ WF/WF-MAX: [context pack/research gate](context-loading.md#Task Context Pack and Research Gate).
8
+
7
9
  Use when work needs parallel reading, independent review, cross-layer analysis, or more than one bounded implementation pass.
8
10
 
11
+ ## Runtime model capability declarations
12
+
13
+ Native catalogs are authoritative. See [capability fallback](../../scripts/README.md#runtime-capability-declarations)
14
+ for exact operator config and HTTP rejection; fallback declarations are not
15
+ provider measurement.
16
+
9
17
  ## Principles
10
18
 
11
19
  - Main agent owns the final decision, integration, and verification.
@@ -13,7 +21,7 @@ Use when work needs parallel reading, independent review, cross-layer analysis,
13
21
  - Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/tasks/<task-id>/PROGRESS.md` and `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
14
22
  - Resumable state is governed by [WF-STATE.md](../workflows/WF-STATE.md). On session start, the controller reads STATE.json before building a fresh dispatch table.
15
23
  - PRD-derived Acceptance Criteria are the source of truth. Dispatch packets must carry the relevant AC IDs and contracts.
16
- - Agent count: default (non-WF) <=3 active agents; `/wf` selects a tier dynamically per [WF-KERNEL.md](../workflows/WF-KERNEL.md) (Light/Standard/Full); `/wf-max` inherits the selected tier and adds maximum safe fan-out (WF-Max-Useful default; WF-Max-Strict explicit only), removing the Harness default cap through the span formula. WF-MAX must attempt native subagent fan-out and record `fanoutAttempted: true` before any solo fallback. Real concurrency is still bounded by runtime thread budget, config, billing, and local resources. Use current runtime subagents first, close completed agents, then peer-CLI overflow (`claude -p`, `codex exec`, or `opencode run --agent <role> --dir .`). Do not scaffold Codex scalar `[agents]` capacity fields into project `.codex/config.toml`; probe the installed runtime and manage Codex caps through the dispatch ledger unless the installed version accepts the config shape. Generated OpenCode config defaults to `subagent_depth = 2` for manager -> worker nesting. See [WF.md](../workflows/WF.md) and [WF-MAX.md](../workflows/WF-MAX.md).
24
+ - Agent count: non-WF <=3; `/wf` selects tier; `/wf-max` defaults to Useful suppression with rationale, while explicit Strict attempts the span formula within runtime capacity; see [WF-MAX.md](../workflows/WF-MAX.md).
17
25
  - Read-only agents may run in parallel.
18
26
  - Writing agents run serially unless write sets are disjoint.
19
27
  - Use a worktree when two agents may touch overlapping files or long-running branches.
@@ -9,6 +9,21 @@ Cache-first discipline: subagent context packs follow
9
9
  docs and selected files, keep dispatch fields in deterministic order, defer
10
10
  unused skill/tool schemas, and return bounded summaries instead of transcripts.
11
11
 
12
+ For WF and WF-MAX dispatch, the controller first creates a bounded pack with
13
+ `node Harness/scripts/task-context.mjs pack <task-id> --project <absolutePath> --role <role>
14
+ --budget-bytes <n> --json`. The dispatch packet references the resulting hash,
15
+ budget, role/work-item filter, omitted sections, and evidence pointers. A
16
+ resumed agent consumes a new pack; it does not receive the full task transcript.
17
+ Pack structure is not semantic proof, so validators still run the behavior
18
+ checks required by the acceptance criteria.
19
+
20
+ External lookup is conditional. Run
21
+ `node Harness/scripts/research-policy.mjs decide --trigger <trigger>
22
+ --task-type <type> --json` only when a capability gap, volatile API, explicit
23
+ request, repeated failure, or benchmark gap is present. If search is allowed,
24
+ the assigned agent reads the source body and records URL, title, version,
25
+ license, date, and adopt/adapt/reject rationale; otherwise reuse local evidence.
26
+
12
27
  project files are the only durable communication channel; chat/subagent transcript state is non-authoritative. Important assumptions, decisions, blockers, evidence, and handoffs must be written to `Harness/tasks/<task-id>/PROGRESS.md` and `Harness/tasks/<task-id>/PLAN.md`, the current feature doc, `Harness/MEMORY.md`, or `Harness/memory/*` as appropriate.
13
28
 
14
29
  Subagent work is acceptance-driven. Use [AGENT_ISOLATION.md](../protocols/AGENT_ISOLATION.md)
@@ -202,11 +217,11 @@ matrix from running behavior and evidence, not from the implementer's summary.
202
217
  If either reviewer finds issues, the implementer or debugger fixes them and the same gate runs again. Do not move to final acceptance with open critical/high findings or without reflector PASS.
203
218
 
204
219
  For `/wf-review`, use the installed `reviewer` role before inventing any
205
- ad hoc review prompt. If no peer CLI is available, dispatch `reviewer` as an
206
- independent same-runtime subagent context; for broad WF-MAX review, dispatch
207
- `review-manager` when the runtime supports nested reviewer fan-out. Reviewer
208
- agents report suggestions only. The controller accepts, rejects, or escalates
209
- each finding and owns the final decision.
220
+ ad hoc review prompt. Dispatch it as an independent clean native subagent
221
+ context; peer CLIs are forbidden for this command. For broad reviews, dispatch
222
+ `review-manager` only when the runtime supports bounded native nested fan-out.
223
+ Reviewer agents report suggestions only. The controller accepts, rejects, or
224
+ escalates each finding and owns the final decision.
210
225
 
211
226
  ### OpenCode Reviewer Caveat
212
227
 
@@ -20,6 +20,25 @@ But perpetual search without direction = drift. The **Roadmap** is the anchor.
20
20
 
21
21
  ## Inherited Execution Chain
22
22
 
23
+ ### Context and Conditional Research
24
+
25
+ Spark discovery starts from the bounded role-scoped task pack:
26
+
27
+ ```text
28
+ node Harness/scripts/task-context.mjs pack <task-id> --project <absolutePath> --role <role> --budget-bytes <n> --json
29
+ ```
30
+
31
+ Workers and resumed cycles consume a fresh `show`/`pack`, not the full task
32
+ log. Before a spark search, ask:
33
+
34
+ ```text
35
+ node Harness/scripts/research-policy.mjs decide --trigger <trigger> --task-type <type> --json
36
+ ```
37
+
38
+ Search results must be read from the source body and recorded with URL, title,
39
+ version, license, date, and an adopt/adapt/reject rationale. This policy keeps
40
+ spark search conditional and does not require network access for every cycle.
41
+
23
42
  WF-AUTO-SPARK is a `/wf` variant layered on WF-AUTO: it inherits the WF-KERNEL contract via WF-AUTO and WF constraints, and does not define an independent heavy process. External spark search replaces discovery only; it does not replace acceptance, implementation, review, verification, reflection, or evidence.
24
43
 
25
44
  Accepted spark candidates re-enter the standard W2-W5 gates per [WF-KERNEL.md](WF-KERNEL.md): implementer (one file_claim, ≤3 files, ≤50 lines), verifier, reviewer(s), reflector. Spark searchers are read-only. Any implementation must use the dispatch packet from `Harness/specs/runtime/dispatch.md` with explicit write set, forbidden truth files, AC IDs, and verification commands. A candidate with no verifier evidence or no reflector PASS is not accepted, even if the idea is valuable.
@@ -17,6 +17,27 @@ This fills the gap between:
17
17
 
18
18
  ## Organization Model
19
19
 
20
+ ### Context and Conditional Research
21
+
22
+ Each bounded auto cycle uses a role-scoped task context pack for the controller,
23
+ probe, and worker inputs:
24
+
25
+ ```text
26
+ node Harness/scripts/task-context.mjs pack <task-id> --project <absolutePath> --role <role> --budget-bytes <n> --json
27
+ ```
28
+
29
+ Checkpoint and recovery consume `show`/`pack` rather than the complete cycle
30
+ log. External lookup begins only after:
31
+
32
+ ```text
33
+ node Harness/scripts/research-policy.mjs decide --trigger <trigger> --task-type <type> --json
34
+ ```
35
+
36
+ When `search: true`, record each source's URL, title, version, license, date,
37
+ and adopt/adapt/reject rationale. Auto cycles remain reuse-first when no
38
+ capability-gap, volatile-API, explicit-request, repeated-failure, or
39
+ benchmark-gap trigger exists.
40
+
20
41
  WF-AUTO uses the same acceptance-driven mother flow per cycle. Each selected
21
42
  optimization becomes a Mini PRD with AC IDs, a test/validation plan, bounded
22
43
  implementation, independent validation, review, debug if needed, and memory.
@@ -181,8 +181,10 @@ Delta from `/wf`:
181
181
  - Each write-unit = one file_claim = one implementer Worker
182
182
  - Managers coordinate per-domain fan-out (explore, architect, implement, review)
183
183
  - CEO/controller never writes source; delegates all production edits to Workers
184
- - WF-Max-Useful (default): fan-out only where writeSets are meaningfully independent
185
- - WF-Max-Strict (explicit `--strict`): unconditional fan-out per span formula
184
+ - WF-Max-Useful (default): fan-out only for independent writeSets/acceptance;
185
+ persist `fanoutSuppressed` with reason/capacity evidence on suppression.
186
+ - WF-Max-Strict (explicit `--strict`, `strict wf-max`, or `strict mode`): attempt
187
+ the span formula within runtime capacity.
186
188
  - Disjoint writeSets → parallel; overlapping → serial wave or worktree isolation
187
189
  - task-scribe continuously maintains dispatch ledger and heartbeat
188
190
  - `idleWorker -> nextReady` queue: dispatch immediately when a slot opens
@@ -16,27 +16,54 @@ WF-MAX is **explicit only**. Enter ONLY when the user explicitly types `/wf-max`
16
16
  | State | Controller or task-scribe | task-scribe continuously maintains dispatch ledger |
17
17
  | Source edits | Implementer writes | Workers write ONLY dispatch.writeSet; CEO never writes source |
18
18
 
19
+ The manager ranges above describe available role shapes, not a fixed headcount.
20
+ WF-Max-Useful chooses no spawn or a cheap role pass when dependency, acceptance,
21
+ coordination, budget, or runtime evidence makes fan-out uneconomic.
22
+
19
23
  ## Fan-Out Modes
20
24
 
21
- **WF-Max-Useful** (default): fan-out only where writeSets or review lenses are meaningfully independent. Overhead > 0.30 degrades a wave to flat role pass. This does not authorize CEO source edits: source implementation still goes through an implementer/Worker role, or the run records an honest downgrade before editing.
25
+ **WF-Max-Useful** (default): the CEO makes an evidence-based spawn decision
26
+ from dependency shape, independent acceptance, expected coordination benefit,
27
+ token/time budget, and actual runtime capacity. A dependency chain, no
28
+ independent acceptance, or coordination cost without measurable benefit is a
29
+ valid no-spawn outcome. Persist `fanoutSuppressed: true`, the reason, and the
30
+ budget/capacity evidence in the task ledger. This does not authorize CEO source edits;
31
+ required production changes still go through a Worker.
32
+
33
+ **WF-Max-Strict** (explicit `--strict`, `strict wf-max`, or `strict mode`):
34
+ unconditional fan-out per the span formula, bounded by real runtime capacity.
35
+ Strict mode attempts native fan-out first; on a failure record
36
+ `fanoutAttempted: true`, runtime/channel, requested roles, limits, failure, and
37
+ fallback in task state. Strict mode is never inferred from task size.
22
38
 
23
- **WF-Max-Strict** (explicit `--strict`, `strict wf-max`, or `strict mode`): unconditional fan-out per span formula. Every file gets a Worker.
39
+ ## Mandatory Fan-Out Contract (Strict mode only)
24
40
 
25
- ## Mandatory Fan-Out Contract
41
+ The mandatory portion of this contract applies only after an explicit
42
+ `--strict`, `strict wf-max`, or `strict mode` request. In that mode the
43
+ controller MUST attempt native subagent fan-out before implementation planning
44
+ is considered complete, bounded by the real runtime capacity. Useful mode may
45
+ record a no-spawn decision and does not inherit this requirement.
26
46
 
27
- `/wf-max` MUST attempt native subagent fan-out before implementation planning is considered complete. A solo controller path is allowed only after an explicit degradation record.
47
+ ## Context and Research Contract
28
48
 
29
- Minimum W0 attempt:
49
+ Before planning or dispatch, generate the bounded task input:
30
50
 
31
- - Start `task-scribe` when available to maintain task state and the dispatch ledger.
32
- - Start at least one independent read-only planning/exploration/review lane. For real multi-domain tasks, prefer `explore-manager` plus scoped researchers or codebase explorers.
33
- - Record `fanoutAttempted: true`, runtime, channel tried, agents requested, configured/runtime limit facts, result, and degradation reason in the task PLAN or PROGRESS.
51
+ ```text
52
+ node Harness/scripts/task-context.mjs pack <task-id> --project <absolutePath> --role <role> --budget-bytes <n> --json
53
+ ```
34
54
 
35
- Mode interaction:
55
+ The controller passes the role/work-item pack to each Worker. Resume consumes a
56
+ new `show`/`pack` instead of the full task log; `--input` is optional for pack.
57
+ Before any external lookup, run:
58
+
59
+ ```text
60
+ node Harness/scripts/research-policy.mjs decide --trigger <trigger> --task-type <type> --json
61
+ ```
36
62
 
37
- - WF-Max-Useful may shrink the fan-out after the first native attempt when write sets or review lenses are not meaningfully independent. It may not silently skip the attempt.
38
- - WF-Max-Strict continues through the span formula until the Harness caps, runtime caps, user budget, or safety gates stop dispatch.
39
- - If native manager fan-out is unavailable, the controller dispatches leaf agents directly with exact WF-MAX dispatch packets; if no independent channel exists, stop honestly and ask the user.
63
+ Search current web, GitHub, or Hugging Face primary sources only when the result
64
+ has `search: true`. Record URL, title, version, license, checked date, and an
65
+ `adopt`, `adapt`, or `reject` rationale. Reuse local evidence when no trigger
66
+ exists; do not force network research or full-memory loading.
40
67
 
41
68
  OpenCode-specific requirement: project `opencode.json` must set `subagent_depth >= 2` for manager -> worker nesting, and WF-MAX manager agents must expose `permission.task` allowlists for their child agents. Without those two settings, OpenCode may accept `/wf-max` but fail to fan out from manager subagents.
42
69
 
@@ -10,9 +10,23 @@ manager, async runtime, or graph framework.
10
10
  |------|------|
11
11
  | `Harness/PROGRESS.md` | Derived global active pointer and Task Index |
12
12
  | `Harness/tasks/<task-id>/STATE.json` | Canonical machine-readable resume truth |
13
+ | `Harness/tasks/INDEX.json` | Generated machine route for project/group/status/date queries |
14
+ | `Harness/tasks/INDEX.md` | Generated human route for the same task collection |
13
15
  | `Harness/tasks/<task-id>/PROGRESS.md` | Human-readable summary |
14
16
  | `Harness/tasks/<task-id>/PLAN.md` | Plan, decisions, scope context |
15
17
 
18
+ ## Task Context Packs
19
+
20
+ `STATE.json.context` is optional for legacy capsules. When present it contains
21
+ only `intent` (with immutable `original`, `current`, and append-only `changes`),
22
+ `constraints`, `facts`, `assumptions`, `decisions`, `evidence`, `attempts`, and
23
+ `handoff`. The root `STATE.json.nextAction` is the only next-action field.
24
+ Use `node Harness/scripts/task-context.mjs update|show|pack <task-id>` for
25
+ bounded context updates and role/work-item packs. Packs include evidence paths
26
+ or URLs and claims, never the body of a raw log; UTF-8 byte budgets fail
27
+ explicitly when mandatory intent, constraints, unresolved items, or nextAction
28
+ cannot fit. Legacy context is reconstructed from PLAN/STATE for read-only use.
29
+
16
30
  Task id convention: new task capsules MUST use
17
31
  `task-<verb>-<noun>[-detail]` (kebab-case, 2-5 words after the prefix), for
18
32
  example `task-fix-login-flow`. Do not create bare task names such as
@@ -22,9 +36,12 @@ example `task-fix-login-flow`. Do not create bare task names such as
22
36
 
23
37
  ### status
24
38
 
25
- `active`, `blocked`, `in_progress`, `running`, `pending`,
39
+ `active`, `blocked`, `closed`
40
+
41
+ Legacy repositories may still contain `in_progress`, `running`, `pending`,
26
42
  `needs-user-decision`, `complete`, `verified`, `archived`, `abandoned`,
27
- `obsolete`, `done`, `closed`, `closeout`, `skipped`, `failed`
43
+ `obsolete`, `done`, `closeout`, `skipped`, or `failed`. `task-state.mjs` reads
44
+ those values and normalizes them to the three lifecycle statuses on new writes.
28
45
 
29
46
  ### phase
30
47
 
@@ -44,6 +61,11 @@ Legacy aliases such as `Implementation`, `Validation`, and
44
61
  `direct`, `wf`, `wf-max`, `wf-auto`, `wf-auto-spark`, `wf-review`,
45
62
  `wf-browser`
46
63
 
64
+ Only `wf` and `wf-max` own the durable task lifecycle. The auto/spark modes
65
+ use their separate continuous capsule; review/browser are capability modes.
66
+ They remain valid explicit mode values for compatibility, but do not promote a
67
+ normal task into cross-session WF management.
68
+
47
69
  ### tier
48
70
 
49
71
  `none`, `light`, `standard`, `full`, `max-useful`, `max-strict`
@@ -65,12 +87,18 @@ Legacy aliases such as `Implementation`, `Validation`, and
65
87
  not.**
66
88
  7. **If STATE.json conflicts with PLAN/PROGRESS, controller stops and reconciles
67
89
  before continuing.**
90
+ 8. **Durable WF ownership is creation-time opt-in.** A task in `wf` or
91
+ `wf-max` remains WF-managed for its whole lifetime; its mode cannot be
92
+ downgraded or exited. `closed` is terminal for that capsule. Start the
93
+ next unit of work in a new capsule with an explicit mode.
68
94
 
69
95
  ## CLI Contract
70
96
 
71
97
  Use `Harness/scripts/task-state.mjs` as the deterministic state writer:
72
98
 
73
99
  - `node Harness/scripts/task-state.mjs list --json`
100
+ - `node Harness/scripts/task-state.mjs index`
101
+ - `node Harness/scripts/task-state.mjs query <keyword> --project <project> --json`
74
102
  - `node Harness/scripts/task-state.mjs validate --json`
75
103
  - `node Harness/scripts/task-state.mjs reconcile --dry-run --json`
76
104
  - `node Harness/scripts/task-state.mjs reconcile --apply`
@@ -79,8 +107,9 @@ Use `Harness/scripts/task-state.mjs` as the deterministic state writer:
79
107
  - `node Harness/scripts/task-state.mjs archive --keep 5 --dry-run --json`
80
108
  - `node Harness/scripts/task-state.mjs archive --keep 5 --apply`
81
109
 
82
- Do not rely on prompt instructions alone to keep active task, task `STATE.json`,
83
- task `PROGRESS.md`, and root `Harness/PROGRESS.md` synchronized.
110
+ Do not rely on prompt instructions alone to keep task `STATE.json`, task
111
+ `PROGRESS.md`, the generated task route, and root `Harness/PROGRESS.md`
112
+ synchronized.
84
113
 
85
114
  ## Links (Cross-Task Dependencies)
86
115
 
@@ -121,13 +150,15 @@ subagent dispatches.
121
150
 
122
151
  ## Open Tasks
123
152
 
124
- "Open tasks" are non-archived task capsules with status one of:
125
- `active`, `in_progress`, `running`, `pending`, `blocked`,
126
- `needs-user-decision`.
153
+ "Open tasks" are task capsules with lifecycle status `active` or `blocked`.
154
+ Legacy open values are accepted while an old repository is being migrated.
127
155
 
128
- The active pointer (`Harness/PROGRESS.md`) marks the single task the agent
129
- should resume. Other open tasks remain visible in the Task Index but are not
130
- automatically loaded.
156
+ The active pointer (`Harness/PROGRESS.md`) is a focus/resume pointer, not a
157
+ lock. Multiple open tasks are valid and remain visible in `INDEX.json`,
158
+ `INDEX.md`, and `list --by-group`; `set-active` only changes which open WF task
159
+ is loaded first on resume while a managed WF task is open. It cannot replace
160
+ that focus with a direct task. A direct task may coexist, but it never acquires
161
+ WF lifecycle ownership.
131
162
 
132
163
  ## Queue Entry Normalization
133
164
 
@@ -161,12 +192,16 @@ New window / session start:
161
192
  blocked (needs resolution), done.
162
193
  - nextAction (what to do next).
163
194
  - **links.dependsOn**: if non-empty, check whether any dependency tasks are
164
- still open (their STATE.json has a non-archived status). Report blocked
165
- dependencies to the user.
195
+ still open (their STATE.json status is `active` or `blocked`, after legacy
196
+ normalization). Report blocked dependencies to the user.
166
197
  - **workItems[]**: if non-empty, inspect items with status `running` or
167
198
  `ready` for parallel dispatch candidates.
168
- 4. Do NOT bulk-read `Harness/tasks/` to find context. Use the active pointer.
169
- 5. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says
199
+ 4. Do NOT bulk-read `Harness/tasks/` to find context. Use the active pointer
200
+ and `Harness/tasks/INDEX.json` for deterministic project/group lookup.
201
+ 5. If the active pointer targets an open `wf`/`wf-max` task, automatically
202
+ resume WF mode from that capsule even when the user does not repeat `/wf`.
203
+ If it targets a direct or capability-mode task, do not enter WF.
204
+ 6. Direct simple tasks may skip STATE/PLAN/PROGRESS unless the user says
170
205
  "continue"/"resume".
171
206
 
172
207
  ## State Transitions
@@ -181,6 +216,19 @@ intake -> clarify -> requirements -> prd -> acceptance -> plan
181
216
  Any phase may transition to `blocked` if a dependency, user decision, or external
182
217
  input is required.
183
218
 
219
+ Task lifecycle is deliberately smaller than phase state:
220
+
221
+ ```text
222
+ direct ------------------------------> closed
223
+ wf / wf-max (immutable ownership) ---> closed
224
+ active <-----------------------------> blocked
225
+ ```
226
+
227
+ An open managed task may move between `active` and `blocked`, then only to
228
+ `closed`. It cannot return from `closed`, change to `direct`, or be reused as a
229
+ new task. Multiple capsules may be open at once; the active pointer selects
230
+ one managed focus without collapsing the collection.
231
+
184
232
  ## Dispatch Ledger
185
233
 
186
234
  Every dispatch packet MUST have an `id`. On return, controller or task-scribe
@@ -32,6 +32,28 @@ These are NOT WF triggers:
32
32
  - Multi-step work, multi-file changes, complexity, uncertainty, architecture scope, browser/API behavior, repeated failure
33
33
  - Those may need planning, subagents, or tests — but not WF
34
34
 
35
+ ### Durable Task Lifecycle
36
+
37
+ The task lifecycle is separate from workflow capability routing:
38
+
39
+ - `/wf` or `/wf-max` explicitly creates or enters a task with durable WF
40
+ ownership. Its `STATE.json.mode` is immutable for the lifetime of that task.
41
+ - An open `wf`/`wf-max` task is automatically resumed by Harness on the next
42
+ session from `Harness/PROGRESS.md` plus `STATE.json`; repeating the trigger is
43
+ optional.
44
+ - A task that never explicitly used `/wf` or `/wf-max` remains outside the WF
45
+ lifecycle forever. Complexity, project membership, `wf-auto`, `wf-review`,
46
+ and UI activity do not promote it.
47
+ - Closing is terminal. To continue with a new WF unit, close the current task
48
+ and create a new capsule with an explicit WF trigger. Multiple task capsules
49
+ can remain open, but only a managed WF capsule can own the Harness resume
50
+ focus while one is active.
51
+
52
+ `wf-auto` and `wf-auto-spark` retain their explicit continuous workflows and
53
+ their `Harness/tasks/continuous/` capsule; they do not adopt ordinary task
54
+ capsules. `wf-review` remains native review capability and never invokes an
55
+ external CLI or recursively starts another review.
56
+
35
57
  ## Memory Preflight
36
58
 
37
59
  1. Load `CLAUDE.md`, `Harness/MEMORY.md` index only, then `Harness/README.md`.
@@ -45,6 +67,16 @@ listed router/workflow loads in stable order, load only routed skills/tools, and
45
67
  append task state, current runtime facts, and latest tool output after the
46
68
  stable docs. Do not bulk-load skill bodies, tool schemas, or `Harness/`.
47
69
 
70
+ ## Bounded Context and Conditional Research
71
+
72
+ The controller creates a role-scoped pack with
73
+ `task-context.mjs pack <task-id> --project <absolutePath> --role <role> --budget-bytes <n>
74
+ --json`; it carries intent, constraints, unresolved handoff, and filtered
75
+ evidence. Dispatch and resume consume `show`/`pack`, not the full task log.
76
+ Before lookup, ask `research-policy.mjs decide`; only `search: true` permits
77
+ current web/GitHub/Hugging Face reads with source metadata and an
78
+ adopt/adapt/reject rationale. No trigger means reuse-first.
79
+
48
80
  ## Standard Orchestration Loop
49
81
 
50
82
  The `/wf` kernel follows a dependency-driven ready-queue, NOT a fixed serial phase list.
@@ -0,0 +1,7 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": null,
4
+ "sourceOfTruth": "Harness/tasks/*/STATE.json",
5
+ "projects": {},
6
+ "tasks": []
7
+ }
@@ -0,0 +1,12 @@
1
+ # Task Index (generated)
2
+
3
+ Generated: not yet generated
4
+
5
+ This file is derived from task STATE.json files. Do not edit it directly.
6
+
7
+ | Task | Project | Status | Phase | Created | Updated |
8
+ |------|---------|--------|-------|---------|---------|
9
+
10
+ ## Projects
11
+
12
+ - (none)
@@ -30,6 +30,12 @@ Expanded evidence required when triggered by high-risk changes, broad cross-file
30
30
 
31
31
  - Add Given/When/Then, selector contracts, migration notes, or release evidence only when the task risk requires it.
32
32
 
33
+ ## Context Contract
34
+
35
+ - Keep the original intent immutable; record later changes under `STATE.json.context.intent.changes`.
36
+ - Store only compact constraints, facts, assumptions, decisions, evidence pointers, attempts, and handoff items. Keep raw logs outside `STATE.json`.
37
+ - The canonical next action lives at the root `STATE.json.nextAction`; context packs must reference it rather than add another next-action field.
38
+
33
39
  ## Risks
34
40
 
35
41
  | Risk | Mitigation | Status |
@@ -14,6 +14,11 @@ Phase heartbeat. Update on transitions, blockers, verification. Keep under 20 li
14
14
 
15
15
  - [ ] verification command
16
16
 
17
+ ## Context
18
+
19
+ - Context is loaded from canonical `STATE.json`; evidence entries are pointers, not log bodies.
20
+ - Record unresolved handoff items in `STATE.json.context.handoff.unresolved`.
21
+
17
22
  ## Log
18
23
 
19
24
  | Date | Phase | Note |
@@ -6,9 +6,31 @@
6
6
  "tier": "none",
7
7
  "phase": "intake",
8
8
  "gate": null,
9
+ "project": "default",
10
+ "tags": [],
11
+ "createdAt": "2026-07-16T00:00:00.000Z",
12
+ "startedAt": null,
13
+ "closedAt": null,
9
14
  "updatedAt": "2026-07-16T00:00:00.000Z",
10
15
  "activeQuestion": null,
11
16
  "nextAction": "Define goal and acceptance criteria",
17
+ "context": {
18
+ "intent": {
19
+ "original": "",
20
+ "current": "",
21
+ "changes": []
22
+ },
23
+ "constraints": [],
24
+ "facts": [],
25
+ "assumptions": [],
26
+ "decisions": [],
27
+ "evidence": [],
28
+ "attempts": [],
29
+ "handoff": {
30
+ "summary": "",
31
+ "unresolved": []
32
+ }
33
+ },
12
34
  "acceptance": [],
13
35
  "links": {
14
36
  "dependsOn": [],
@@ -2,13 +2,14 @@
2
2
 
3
3
  | AC ID | Test Level | File/Command | Evidence |
4
4
  | --- | --- | --- | --- |
5
- | AC-001 | Playwright + CDP | `npx playwright test {{SPEC_FILE}} --trace on` | trace + screenshot |
5
+ | AC-001 | wf-browser control run + fallback Playwright/CDP when needed | `Harness/wf-browser/runs/<runId>/...` or `npx playwright test {{SPEC_FILE}} --trace on` | run manifest, action log, screenshot, UI tree, logs, network, trace |
6
6
 
7
7
  Required checks:
8
8
 
9
9
  - unit tests for pure logic
10
10
  - API/integration tests for API contracts
11
- - Playwright for user-visible paths
12
- - CDP/network assertions for frontend-backend side effects
13
- - screenshot/trace/video on browser validation failure
11
+ - `wf-browser` control loop for browser-visible paths when the page can load the Harness Bridge
12
+ - fallback Playwright/CDP for third-party pages, native browser capabilities, or bridge gaps
13
+ - screenshot, UI tree, log, state, network, trace, or video artifact paths for browser validation
14
+ - multi-window/subagent lease evidence when validating concurrent UI work
14
15
  - syntax-only checks, shallow renders, imports, typecheck, lint, and build success do not satisfy browser-visible ACs
@@ -1,11 +1,13 @@
1
1
  # UI Contract: {{FEATURE_NAME}}
2
2
 
3
- | Element | data-testid | Accessible Role/Label | States | AC IDs |
4
- | --- | --- | --- | --- | --- |
5
- | {{ELEMENT}} | `{{TEST_ID}}` | {{ROLE_OR_LABEL}} | default, loading, error, disabled | AC-001 |
3
+ | Element | Capability ID | data-testid | Accessible Role/Label | Actions | Captures | States | AC IDs |
4
+ | --- | --- | --- | --- | --- | --- | --- | --- |
5
+ | {{ELEMENT}} | `{{CAPABILITY_ID}}` | `{{TEST_ID}}` | {{ROLE_OR_LABEL}} | `act.click`, `act.intent({{CAPABILITY_ID}})` | screenshot, ui-tree, state, logs | default, loading, error, disabled | AC-001 |
6
6
 
7
7
  Rules:
8
8
 
9
9
  - Prefer `data-testid` for critical automation selectors.
10
- - Accessible role/label may supplement but must not be unstable.
11
- - Cover inputs, buttons, rows/items, empty state, loading state, and error state.
10
+ - Use stable accessible labels/roles for controls and icon-only buttons.
11
+ - Add capability ids for first-party route, component, form, table, graph, canvas, and element targets.
12
+ - Declare supported `act.*` operations and `observe.*` captures for complex widgets.
13
+ - Cover inputs, buttons, filters, rows/items, empty state, loading state, and error state.
@@ -0,0 +1,69 @@
1
+ # wf-browser Runtime Artifacts
2
+
3
+ `Harness/wf-browser/` stores browser debug/control evidence created by
4
+ `wf-browser`, the Harness Bridge, and fallback browser drivers. Keep high-volume
5
+ runtime data here instead of in chat, task state, or long markdown logs.
6
+
7
+ ## Layout
8
+
9
+ ```text
10
+ Harness/wf-browser/
11
+ README.md
12
+ runs/
13
+ <runId>/
14
+ manifest.json
15
+ timeline.jsonl
16
+ sessions.json
17
+ windows/
18
+ <windowId>/
19
+ browser-launches.json
20
+ actions.jsonl
21
+ screenshots/
22
+ ui-tree/
23
+ state/
24
+ logs/
25
+ network/
26
+ ast/
27
+ replay/
28
+ analysis/
29
+ tmp/
30
+ cache/
31
+ ```
32
+
33
+ ## Rules
34
+
35
+ - Partition artifacts by `runId`, `sessionId`, `windowId`, and `agentId`.
36
+ - Store full screenshots, UI trees, app state, logs, network summaries, AST
37
+ dumps, replay data, and videos as files. WebSocket messages should carry only
38
+ bounded metadata, paths, hashes, sizes, and short summaries.
39
+ - A write/control lease is exclusive per window. Multiple subagents may run at
40
+ the same time only when they own different windows or hold explicit read-only
41
+ observation leases.
42
+ - `browser-allocate-many` creates one run with multiple window/lease/launch URL
43
+ assignments for concurrent subagent dispatch.
44
+ - `browser-open --context isolated` opens a visible Chrome/Edge/Chromium window
45
+ with a per-run/window profile under `tmp/browser-profiles/` and stores launch
46
+ metadata under the window `analysis/` artifacts and `browser-launches.json`.
47
+ - `browser-launches` lists recorded launches with process liveness, and
48
+ `browser-close --remove-profile true` closes selected launches and removes
49
+ their isolated profiles.
50
+ - `browser-wait` waits for the requested run/window/agent frontend to register
51
+ before a subagent dispatches `observe.*`, `act.*`, or snapshot commands.
52
+ - `browser-snapshot` captures the standard connected-window handoff bundle:
53
+ route, capabilities, UI tree, state, logs, network, replay, and diff.
54
+ - `actions.jsonl` records every `act.*` command, target resolution, before/after
55
+ observation ids, status, and artifact paths.
56
+ - `timeline.jsonl` records command lifecycle, route changes, console/runtime
57
+ errors, network events, mixed-control collisions, and cleanup.
58
+ - Default local debugging is trusted and open. Do not redact artifacts unless
59
+ project policy or user instruction asks for redaction.
60
+
61
+ ## Cleanup
62
+
63
+ Default retention is latest 20 runs or 7 days. Do not delete runs referenced by
64
+ an active task. `tmp/browser-profiles/` is per-window launch scratch data; keep
65
+ it only while the run is useful. Use
66
+ `node Harness/scripts/wf-ui-control.mjs browser-close --remove-profile true` for
67
+ per-window closeout, then `node Harness/scripts/wf-ui-control.mjs
68
+ browser-cleanup` to preview run cleanup. Add `--apply true` only when the
69
+ eligible run list is correct.