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
@@ -1,5 +1,18 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
+ "roleVocabulary": {
4
+ "note": "Canonical roleTitle vocabulary for session role profiles (spec §3.1/§3.2). roleTitle is the session/profile vocabulary; this file remains the role graph vocabulary (agentId, kind, skills, permissions).",
5
+ "canonical": ["ceo", "manager", "implementer", "reviewer", "verifier", "planner", "terminal-controller"],
6
+ "kindToRoleTitle": {
7
+ "controller": "ceo",
8
+ "planner": "planner",
9
+ "architecture": "architect",
10
+ "implementer": "implementer",
11
+ "review": "reviewer",
12
+ "validation": "verifier",
13
+ "runtime": "terminal-controller"
14
+ }
15
+ },
3
16
  "rootAgentId": "ceo",
4
17
  "agents": [
5
18
  {
@@ -7,7 +20,7 @@
7
20
  "role": "CEO Leader",
8
21
  "level": 0,
9
22
  "kind": "controller",
10
- "skills": ["wf", "subagent-orchestrator", "terminal-control"],
23
+ "skills": ["wf", "subagent-orchestrator", "terminal-control", "workflow-node-map", "workflow-ontology", "workflow-context", "workflow-node-actions"],
11
24
  "permissions": ["plan", "dispatch", "read-terminals", "send-terminal-input"]
12
25
  },
13
26
  {
@@ -31,7 +44,7 @@
31
44
  "role": "Backend Expert",
32
45
  "level": 1,
33
46
  "kind": "implementer",
34
- "skills": ["runtime-detection", "terminal-control", "a2a-files"],
47
+ "skills": ["runtime-detection", "terminal-control", "workflow-node-map", "workflow-ontology", "workflow-context", "workflow-node-actions", "a2a-files"],
35
48
  "permissions": ["read-code", "write-backend", "terminal-io"]
36
49
  },
37
50
  {
@@ -63,7 +76,7 @@
63
76
  "role": "Terminal Controller",
64
77
  "level": 1,
65
78
  "kind": "runtime",
66
- "skills": ["terminal-control"],
79
+ "skills": ["terminal-control", "workflow-node-map", "workflow-ontology", "workflow-context", "workflow-node-actions"],
67
80
  "permissions": ["read-terminals", "send-terminal-input"]
68
81
  }
69
82
  ],
@@ -4,12 +4,56 @@
4
4
  "name": "Terminal Control",
5
5
  "source": "Harness/a2a/skills/terminal-control.json",
6
6
  "description": "Bounded A2A tools for listing terminal sessions, reading output ranges, globbing terminal events, and attach-gated input forwarding.",
7
+ "triggers": [
8
+ "list sessions",
9
+ "read terminal",
10
+ "read transcript",
11
+ "tail output",
12
+ "send input",
13
+ "send agent message",
14
+ "broadcast agent message",
15
+ "delegate agent",
16
+ "agent messages",
17
+ "read agent output",
18
+ "bridge messages",
19
+ "terminal events"
20
+ ],
7
21
  "tools": [
8
22
  { "name": "list-sessions", "reads": ["Harness/tasks/**/sessions/**/STATE.json"] },
9
23
  { "name": "read-range", "reads": ["Harness/tasks/**/sessions/**/terminal.jsonl"], "args": ["session", "from", "to", "tail"] },
10
24
  { "name": "glob-events", "reads": ["Harness/tasks/**/sessions/**/events.jsonl"], "args": ["pattern", "since", "limit"] },
11
- { "name": "send-input", "writes": ["Harness/tasks/**/sessions/**/input-requests.jsonl"], "args": ["session", "text"] }
25
+ { "name": "send-input", "writes": ["Harness/tasks/**/sessions/**/input-requests.jsonl"], "args": ["session", "text"] },
26
+ { "name": "send-agent-message", "writes": ["Harness/tasks/**/sessions/**/input-requests.jsonl", "Harness/a2a/bridges/**"], "args": ["to", "text"] },
27
+ { "name": "broadcast-agent-message", "writes": ["Harness/tasks/**/sessions/**/input-requests.jsonl", "Harness/a2a/bridges/**"], "args": ["to", "text", "topic"] },
28
+ { "name": "read-agent-messages", "reads": ["Harness/a2a/bridges/**"], "args": ["peer", "tail"] },
29
+ { "name": "delegate-agent", "writes": ["Harness/tasks/**/sessions/**/input-requests.jsonl", "Harness/a2a/bridges/**"], "args": ["node", "text"] },
30
+ { "name": "read-agent", "reads": ["Harness/tasks/**/sessions/**/terminal.jsonl"], "args": ["node", "action", "tail"] }
12
31
  ],
32
+ "tuiControl": {
33
+ "summary": "Rules for driving interactive TUI sessions (codex/claude) via send-input and send-key.",
34
+ "charByCharTyping": {
35
+ "rule": "TUI input must be typed char-by-char (~12ms/char). Bulk-writing a prompt and pressing Enter leaves the text unsubmitted.",
36
+ "backendHandled": true,
37
+ "note": "The backend send-input/envelope paths type char-by-char automatically; agents do not do it manually, but must not rely on bulk-paste behavior."
38
+ },
39
+ "sendKey": {
40
+ "command": "node Harness/scripts/wf-ui-control.mjs send-key <key>",
41
+ "keys": ["up", "down", "left", "right", "enter", "esc", "tab", "backspace"],
42
+ "usage": "Public primitive for TUI navigation (menus, pickers, model switcher)."
43
+ },
44
+ "modelPicker": {
45
+ "recipe": "send-input \"/model\", then send-key up/down to navigate, send-key enter to confirm, send-key esc to cancel.",
46
+ "verifiedAgainst": "codex 0.147.0 TUI picker"
47
+ },
48
+ "preferredModelSwitch": {
49
+ "action": "agent.setModel backend action",
50
+ "why": "Non-interactive alternative: writes the project-scoped runtime config (e.g. .codex/config.toml model field), then restartRequired."
51
+ },
52
+ "warnings": [
53
+ "Never send \\r\\n - double-submit risk.",
54
+ "A lone \\r can be interpreted as interrupt in some TUI states."
55
+ ]
56
+ },
13
57
  "defaultMode": "watch",
14
58
  "inputPolicy": "attach-mode-required"
15
59
  }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "wf-ui-map",
4
+ "name": "WF UI Map Legacy Alias",
5
+ "source": "Harness/a2a/skills/wf-ui-map.json",
6
+ "compatibilityAliasFor": "workflow-node-map",
7
+ "description": "Compatibility alias for workflow-node-map. Prefer workflow-node-map in new Agent prompts; node-map remains supported for older nodes.",
8
+ "environment": [
9
+ "HARNESS_PEER_SESSION_ID",
10
+ "HARNESS_PEER_RUNTIME",
11
+ "HARNESS_AGENT_KIND",
12
+ "HARNESS_WORKFLOW_MODE",
13
+ "HARNESS_WORKFLOW_NODE_ID",
14
+ "HARNESS_WORKFLOW_MAP",
15
+ "HARNESS_NODE_HOME",
16
+ "HARNESS_NODE_INIT",
17
+ "HARNESS_WF_UI_URL"
18
+ ],
19
+ "policy": {
20
+ "mainAgent": [
21
+ "api-only-node-map-control",
22
+ "no-direct-workflow-map-writes",
23
+ "workflow-node-map",
24
+ "read-workflow-map-diagnostic-only",
25
+ "agent.readGraph",
26
+ "agent.createNode",
27
+ "agent.connectNodes",
28
+ "agent.disconnectNodes",
29
+ "agent.moveNode",
30
+ "agent.deleteNode",
31
+ "agent.deleteNodes",
32
+ "create-subagent-node",
33
+ "connect-managed-nodes",
34
+ "delete-saved-node",
35
+ "stop-managed-node"
36
+ ],
37
+ "subagent": [
38
+ "read-workflow-map-diagnostic-only",
39
+ "return-evidence"
40
+ ],
41
+ "subagentDenied": [
42
+ "create-agent-node",
43
+ "create-task-node",
44
+ "workflow-node-map-control",
45
+ "node-map-control",
46
+ "workflow-map-file-mutation",
47
+ "spawn-pty-subagents"
48
+ ]
49
+ }
50
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "workflow-agent-node",
4
+ "name": "Workflow Agent Node",
5
+ "source": "Harness/a2a/skills/workflow-agent-node.json",
6
+ "description": "On-demand Agent guide for delegating to and reading connected Agent nodes through backend and wf-bridge actions.",
7
+ "nodeType": "agent",
8
+ "roleProfile": {
9
+ "howToRead": "Read your own profile with node Harness/scripts/wf-ui-control.mjs workflow-context --project . ; the context carries your roleProfile block with displayName, roleTitle, responsibility, capabilities, and roleProfileRef. roleProfileRef points at the markdown profile file under Harness/a2a/agent-roles/. Your roleTitle comes from the canonical vocabulary (ceo, manager, implementer, reviewer, verifier, planner, terminal-controller) or a free-form role. Act inside your responsibility; ask the coordinating agent before expanding scope."
10
+ },
11
+ "decisionFlow": [
12
+ "Understand the task from the user request.",
13
+ "Decide whether team collaboration is needed: simple requests are handled directly with no team; complex or multi-skill work gets a team.",
14
+ "Select the subagent mode per subagentModes: default to built-in-subagents; use wf-node-subagents only when the user explicitly asks for canvas Agent nodes.",
15
+ "Choose the required roles from the canonical roleTitle vocabulary: ceo, manager, implementer, reviewer, verifier, planner, terminal-controller.",
16
+ "Find existing agents by role, runtime, provider, capability, or title.",
17
+ "Exactly one unambiguous match: auto-connect that agent.",
18
+ "No match and the task target is clear: create an agent with a full role profile (displayName, roleTitle, responsibility, capabilities, roleProfileRef).",
19
+ "Multiple matches or an unclear target: ask the user; never blindly create or connect.",
20
+ "Share durable context through Markdown nodes, referenced by nodeId only.",
21
+ "Send structured requests with a requestId, wait via Timer wakeup messages, and aggregate replies per request.",
22
+ "Tick the connected Goal node's items as they finish; call goal.complete when every item is checked; report to the user in plain language."
23
+ ],
24
+ "goalPlanning": {
25
+ "guidance": "Plans, plan tables, and goal setting default to the workflow Goal node. Do not use runtime built-in goal/task tools for planning when a workflow map is present.",
26
+ "flow": [
27
+ "Before planning, read workflow-context to find the Goal node connected to you (direct edge or same Timer/Agent group).",
28
+ "Goal node found and connected: write the plan with goal.add / goal.replace, tick progress with goal.check / goal.uncheck, and call goal.complete when every item is checked.",
29
+ "Goal node found but not connected: connect it with node Harness/scripts/wf-ui-control.mjs connect --actor <your-graph-node-id> --from <your-graph-node-id> --to <goal-node-id> --relation goal, then move it above your node with node Harness/scripts/wf-ui-control.mjs node-map --action moveNode --node <goal-node-id> --x <your-x> --y <your-y-above>.",
30
+ "No Goal node exists: create one with node Harness/scripts/wf-ui-control.mjs node-map --action createNode --type goal --title '<task> goal' --x <your-x> --y <your-y-above>, then connect it as above and write the plan into it.",
31
+ "Respect singleGoalPerGroup: one Goal per Timer/Agent group; if goal_already_bound is returned, use the existing Goal."
32
+ ],
33
+ "preferGoalNodeOverBuiltins": true
34
+ },
35
+ "subagentModes": {
36
+ "note": "2x2 subagent strategy matrix. Mode is set via Agent node settings or detected from natural language; unspecified defaults to built-in-subagents.",
37
+ "default": "built-in-subagents",
38
+ "matrix": [
39
+ {
40
+ "mode": "built-in-subagents",
41
+ "behavior": "Use the current runtime's native subagent mechanism. Do NOT create WF canvas Agent nodes.",
42
+ "evidence": ["fanoutAttempted", "channel", "roles", "native subagent evidence"],
43
+ "nlTriggers": ["内部助手", "内置子代理", "不要开画布节点", "native subagent", "built-in"]
44
+ },
45
+ {
46
+ "mode": "wf-node-subagents",
47
+ "behavior": "Create/connect WF Agent nodes on canvas. Use mailbox for communication. Timer/Markdown/Goal nodes visible and collaborative.",
48
+ "evidence": ["WF Agent nodes", "edges", "mailbox evidence"],
49
+ "nlTriggers": ["画布Agent节点", "开Claude Code节点", "WF node协作", "可视化协作", "canvas worker"]
50
+ }
51
+ ],
52
+ "runtimeDegradation": "If the current runtime has no native subagent adapter and mode is built-in-subagents, record clear degradation evidence and inform the user. Codex main can use wf-node-subagents to dispatch tasks to Claude Code implementer nodes and aggregate replies."
53
+ },
54
+ "structuredRequests": {
55
+ "guidance": "Give every team request a requestId and reuse it for all messages of that request. Reference shared Markdown nodes in contextRefs by nodeId only — never inline Markdown bodies or long content in the message text.",
56
+ "inputEnvelope": "A structured request arrives in your terminal as a compact prefix before the text, e.g. [harness-request req-20260812-0001 to-role=implementer contextRefs=markdown-2a1] <text>. On receiving one, reply via send-agent-message with the SAME requestId and set --reply-to to the message id you are answering, so the sender can aggregate the replies.",
57
+ "envelopeFields": ["requestId", "replyTo", "contextRefs"],
58
+ "rules": [
59
+ "requestId: sender-generated; the receiver echoes it in replies so you can aggregate them.",
60
+ "replyTo: set to the message id you are answering.",
61
+ "contextRefs: nodeId references only; the receiver reads the node through typed actions."
62
+ ]
63
+ },
64
+ "wakeupMessages": {
65
+ "guidance": "Timers are the only source of wakeup messages; the Goal node never wakes agents. When a wakeup message arrives (type 'wakeup'), read it on your next turn. It carries timerNodeId, scheduledAt, firedAt, and goalNodeId when the group has a Goal node.",
66
+ "goalCheck": "When the wakeup message references a Goal node, read the Goal state first and tick its items before continuing work."
67
+ },
68
+ "goalTicking": {
69
+ "guidance": "Tick Goal plan items as you finish them with goal.check; use goal.uncheck when an item is back in progress. When every item is checked, call goal.complete. If goal.complete returns goal_items_pending, check the listed items first, then retry.",
70
+ "completeRequiresAllChecked": true
71
+ },
72
+ "markdownBlackboard": {
73
+ "guidance": "Share durable context through Markdown nodes; reference them by nodeId only in requests. Before writing, find the node, acquire a lock, write with the current revision, then release the lock. On markdown_conflict, reread, merge, and retry with the fresh revision."
74
+ },
75
+ "triggers": [
76
+ "agent node",
77
+ "delegate agent",
78
+ "send agent message",
79
+ "broadcast agent message",
80
+ "reply agent",
81
+ "agent direct message",
82
+ "agent group message",
83
+ "shared context",
84
+ "发送消息",
85
+ "群发消息",
86
+ "回复 Agent",
87
+ "共享上下文",
88
+ "共享 Markdown",
89
+ "read agent output",
90
+ "read transcript",
91
+ "start agent",
92
+ "stop agent",
93
+ "connected agent"
94
+ ],
95
+ "controlSurface": {
96
+ "sendMessage": "POST /api/workflow/nodes/:sender/actions/agent.sendMessage",
97
+ "broadcastMessage": "POST /api/workflow/nodes/:sender/actions/agent.broadcastMessage",
98
+ "readMessages": "POST /api/workflow/nodes/:sender/actions/agent.readMessages",
99
+ "sendInput": "POST /api/workflow/nodes/:node/actions/agent.sendInput",
100
+ "readOutput": "POST /api/workflow/nodes/:node/actions/agent.readOutput",
101
+ "bridge": "wf-bridge routes record Agent-to-Agent communication.",
102
+ "storage": "Harness/a2a/nodes/** and terminal logs are runtime records, not manual control surfaces."
103
+ },
104
+ "environment": [
105
+ "HARNESS_PEER_SESSION_ID",
106
+ "HARNESS_PEER_RUNTIME",
107
+ "HARNESS_AGENT_KIND",
108
+ "HARNESS_WORKFLOW_MODE",
109
+ "HARNESS_WORKFLOW_NODE_ID",
110
+ "HARNESS_WORKFLOW_MAP",
111
+ "HARNESS_NODE_HOME",
112
+ "HARNESS_NODE_INIT",
113
+ "HARNESS_WF_UI_URL"
114
+ ],
115
+ "policy": {
116
+ "allowed": [
117
+ "agent.readContext",
118
+ "agent.readOutput",
119
+ "agent.readTranscript",
120
+ "agent.sendMessage",
121
+ "agent.broadcastMessage",
122
+ "agent.readMessages",
123
+ "agent.sendInput"
124
+ ],
125
+ "requires": [
126
+ "connected-agent-ref",
127
+ "typed-backend-agent-actions"
128
+ ],
129
+ "denied": [
130
+ "node-home-file-mutation",
131
+ "terminal-log-mutation",
132
+ "session-state-file-mutation",
133
+ "direct-json-state-mutation",
134
+ "unmanaged-pty-spawn"
135
+ ]
136
+ },
137
+ "prohibitions": [
138
+ "Never edit `Harness/a2a/**/state.json` directly — use typed actions.",
139
+ "Never edit node-home files, terminal logs, or session state files.",
140
+ "Never spawn unmanaged PTY sessions.",
141
+ "Never inline Markdown node bodies in a message payload; reference them by nodeId only."
142
+ ]
143
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "workflow-context",
4
+ "name": "Workflow Context",
5
+ "source": "Harness/a2a/skills/workflow-context.json",
6
+ "description": "Canonical read-only workflow context commands for Agent nodes. Uses GET /api/workflow/context/:node for connected refs.",
7
+ "triggers": [
8
+ "read context",
9
+ "workflow context",
10
+ "node map context",
11
+ "graph context",
12
+ "connected nodes",
13
+ "what am I connected to",
14
+ "what is connected",
15
+ "nearby nodes",
16
+ "linked nodes",
17
+ "connected resources",
18
+ "connected agents",
19
+ "connected peers",
20
+ "goal refs",
21
+ "goal node",
22
+ "timer refs",
23
+ "timer node",
24
+ "agent node",
25
+ "node identity",
26
+ "current node",
27
+ "current task",
28
+ "current goal",
29
+ "workflow status",
30
+ "edge refs",
31
+ "handle refs",
32
+ "port refs",
33
+ "magnet dock",
34
+ "resource node",
35
+ "output node",
36
+ "effective skills",
37
+ "where am I",
38
+ "observe before acting",
39
+ "感知节点",
40
+ "读取上下文",
41
+ "连接了什么",
42
+ "连接的节点",
43
+ "周围节点",
44
+ "节点身份",
45
+ "当前节点",
46
+ "当前任务",
47
+ "当前目标",
48
+ "磁吸连接",
49
+ "连接状态",
50
+ "是否有连接",
51
+ "检查连接",
52
+ "连线",
53
+ "谁连着",
54
+ "我连着",
55
+ "自己连接",
56
+ "node map 连接"
57
+ ],
58
+ "environment": [
59
+ "HARNESS_PEER_SESSION_ID",
60
+ "HARNESS_PEER_RUNTIME",
61
+ "HARNESS_AGENT_KIND",
62
+ "HARNESS_WORKFLOW_MODE",
63
+ "HARNESS_WORKFLOW_NODE_ID",
64
+ "HARNESS_WORKFLOW_MAP",
65
+ "HARNESS_NODE_HOME",
66
+ "HARNESS_NODE_INIT",
67
+ "HARNESS_WF_UI_URL"
68
+ ],
69
+ "policy": {
70
+ "mainAgent": [
71
+ "workflow-context",
72
+ "read-connected-context",
73
+ "read-workflow-snapshot",
74
+ "read-workflow-map-diagnostic-only",
75
+ "read-bridge-messages"
76
+ ],
77
+ "subagent": [
78
+ "workflow-context",
79
+ "read-self-context",
80
+ "read-workflow-map-diagnostic-only",
81
+ "return-evidence"
82
+ ],
83
+ "denied": [
84
+ "no-source-file-reads-for-graph-state",
85
+ "workflow-map-file-mutation",
86
+ "component-state-file-mutation",
87
+ "event-state-file-mutation",
88
+ "goal-state-file-mutation",
89
+ "capability-state-file-mutation",
90
+ "direct-json-state-mutation",
91
+ "node-home-file-mutation",
92
+ "task-state-mutation"
93
+ ]
94
+ }
95
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "workflow-diagram-node",
4
+ "name": "Workflow Diagram Node",
5
+ "source": "Harness/a2a/skills/workflow-diagram-node.json",
6
+ "description": "On-demand Agent guide for reading and writing Excalidraw Diagram nodes through typed backend actions only.",
7
+ "nodeType": "excalidraw",
8
+ "createKind": "diagram",
9
+ "triggers": [
10
+ "diagram node",
11
+ "excalidraw node",
12
+ "draw diagram",
13
+ "draw flowchart",
14
+ "save scene",
15
+ "connected diagram",
16
+ "visual output"
17
+ ],
18
+ "controlSurface": {
19
+ "endpoint": "POST /api/workflow/nodes/:node/actions/:action",
20
+ "readContextFirst": "node Harness/scripts/wf-ui-control.mjs workflow-context --project .",
21
+ "storage": "Harness/a2a/component-nodes/**/state.json is backend-owned diagnostic storage, never an Agent control surface.",
22
+ "outputRouting": "Prefer connected writable Diagram nodes for flowcharts, sketches, architecture maps, and visual plans."
23
+ },
24
+ "environment": [
25
+ "HARNESS_PEER_SESSION_ID",
26
+ "HARNESS_PEER_RUNTIME",
27
+ "HARNESS_AGENT_KIND",
28
+ "HARNESS_WORKFLOW_MODE",
29
+ "HARNESS_WORKFLOW_NODE_ID",
30
+ "HARNESS_WORKFLOW_MAP",
31
+ "HARNESS_NODE_HOME",
32
+ "HARNESS_NODE_INIT",
33
+ "HARNESS_WF_UI_URL"
34
+ ],
35
+ "policy": {
36
+ "allowed": [
37
+ "excalidraw.readScene",
38
+ "excalidraw.saveScene",
39
+ "excalidraw.patchScene",
40
+ "excalidraw.renderPreview"
41
+ ],
42
+ "requires": [
43
+ "workflow-context-before-action",
44
+ "connected-resource-ref",
45
+ "typed-backend-node-actions"
46
+ ],
47
+ "denied": [
48
+ "component-state-file-mutation",
49
+ "direct-component-node-state-file-edit",
50
+ "direct-json-state-mutation",
51
+ "workflow-map-file-mutation"
52
+ ]
53
+ },
54
+ "prohibitions": [
55
+ "Never edit `Harness/a2a/**/state.json` directly — use typed actions.",
56
+ "Never edit component-node state files or the workflow map file.",
57
+ "Never overwrite a scene without reading it first: readScene before saveScene or patchScene.",
58
+ "Never invent node actions that the backend does not expose; read this manual before acting."
59
+ ]
60
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "workflow-display-node",
4
+ "name": "Workflow Display Node",
5
+ "source": "Harness/a2a/skills/workflow-display-node.json",
6
+ "description": "On-demand Agent guide for presenting reports to the USER through Display nodes (HTML reports rendered fullscreen on the canvas).",
7
+ "nodeType": "display",
8
+ "triggers": [
9
+ "display node",
10
+ "report",
11
+ "present findings",
12
+ "user-facing summary",
13
+ "html report"
14
+ ],
15
+ "controlSurface": {
16
+ "endpoint": "POST /api/workflow/nodes/:node/actions/:action",
17
+ "readContextFirst": "node Harness/scripts/wf-ui-control.mjs workflow-context --project .",
18
+ "storage": "Harness/a2a/component-nodes/**/state.json + <nodeDir>/report.html (backend-owned)"
19
+ },
20
+ "environment": [
21
+ "HARNESS_PEER_SESSION_ID",
22
+ "HARNESS_PEER_RUNTIME",
23
+ "HARNESS_AGENT_KIND",
24
+ "HARNESS_WORKFLOW_MODE",
25
+ "HARNESS_WORKFLOW_NODE_ID",
26
+ "HARNESS_WORKFLOW_MAP",
27
+ "HARNESS_NODE_HOME",
28
+ "HARNESS_NODE_INIT",
29
+ "HARNESS_WF_UI_URL"
30
+ ],
31
+ "policy": {
32
+ "allowed": [
33
+ "display.write",
34
+ "display.read"
35
+ ],
36
+ "requires": [],
37
+ "denied": [
38
+ "component-state-file-mutation",
39
+ "direct-component-node-state-file-edit",
40
+ "direct-json-state-mutation",
41
+ "absolute-path-leakage",
42
+ "secret-payloads"
43
+ ]
44
+ },
45
+ "usage": {
46
+ "whenToUse": {
47
+ "trigger": "When your task produces a report, research findings, comparison tables, decision summaries, or anything the USER should read on the canvas — and the user has NOT explicitly named a target file — write it to a Display node with display.write.",
48
+ "neverDo": "Writing or modifying .html files is normal work and always allowed. But when presenting results: do not dump long reports into chat and never try to open a browser yourself — unless the user named a specific file, present through a Display node."
49
+ },
50
+ "write": "display.write with a full self-contained HTML document (html param). The user opens the node fullscreen; the content runs with fully-open JS (same trust as your own terminal).",
51
+ "read": "display.read returns the current HTML plus this usage guide.",
52
+ "revisionGuard": "display.write accepts optional expectedRevision; a mismatch refuses the write so concurrent writers do not clobber each other.",
53
+ "locking": "markdown-style locks apply: acquire a lock before long multi-step edits; a lock held by another holder refuses writes."
54
+ },
55
+ "theme": {
56
+ "palette": "White background, blue #2563EB, ink #111827, muted #6B7280, Claude yellow/terracotta #D97757 for accents.",
57
+ "semanticClasses": "Use semantic classes for the clean look: .report-title, .report-meta, .report-section, .card, .metric, .highlight, .muted, .badge. The default template already ships the full stylesheet — extend it, do not fight it."
58
+ },
59
+ "diagrams": {
60
+ "embedExcalidraw": "Embed an Excalidraw node scene anywhere in the HTML with the placeholder {{excalidraw:<nodeId>}}. At serve time the backend expands it to a self-contained inline SVG (no CDN, no runtime JS) with a link to open the interactive node.",
61
+ "findingNodeIds": "Use excalidraw.readScene on the target node to confirm it exists; the placeholder needs the exact nodeId (e.g. component-diagram-abc123)."
62
+ },
63
+ "prohibitions": [
64
+ "Never edit `Harness/a2a/**/state.json` directly — use typed actions.",
65
+ "Never edit component-node state files or the workflow map file.",
66
+ "Never open a browser or an HTML file yourself to present results — write to the Display node instead, unless the user named a specific file.",
67
+ "Never put secret or credential payloads in node actions; action payloads may be recorded."
68
+ ]
69
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillId": "workflow-file-node",
4
+ "name": "Workflow File Node",
5
+ "source": "Harness/a2a/skills/workflow-file-node.json",
6
+ "description": "On-demand Agent guide for inspecting File nodes through typed backend actions only.",
7
+ "nodeType": "file",
8
+ "triggers": [
9
+ "file node",
10
+ "read file",
11
+ "file metadata",
12
+ "workspace file",
13
+ "uploaded file",
14
+ "connected file"
15
+ ],
16
+ "controlSurface": {
17
+ "endpoint": "POST /api/workflow/nodes/:node/actions/:action",
18
+ "readContextFirst": "node Harness/scripts/wf-ui-control.mjs workflow-context --project .",
19
+ "storage": "Harness/a2a/component-nodes/**/state.json is backend-owned diagnostic storage, never an Agent control surface.",
20
+ "contentRoute": "Use backend file/meta/text routes exposed by the File node adapter; do not infer absolute filesystem paths from state files."
21
+ },
22
+ "environment": [
23
+ "HARNESS_PEER_SESSION_ID",
24
+ "HARNESS_PEER_RUNTIME",
25
+ "HARNESS_AGENT_KIND",
26
+ "HARNESS_WORKFLOW_MODE",
27
+ "HARNESS_WORKFLOW_NODE_ID",
28
+ "HARNESS_WORKFLOW_MAP",
29
+ "HARNESS_NODE_HOME",
30
+ "HARNESS_NODE_INIT",
31
+ "HARNESS_WF_UI_URL"
32
+ ],
33
+ "policy": {
34
+ "allowed": [
35
+ "file.readMeta",
36
+ "file.readText",
37
+ "file.readBytes",
38
+ "file.refresh",
39
+ "file.preview",
40
+ "file.writeText",
41
+ "file.acquireLock",
42
+ "file.releaseLock",
43
+ "file.readXlsx",
44
+ "file.readXlsxSheet",
45
+ "file.readPdf",
46
+ "file.readPdfPage",
47
+ "file.readZipEntries",
48
+ "file.readZipEntry",
49
+ "file.extractZipEntry"
50
+ ],
51
+ "requires": [
52
+ "workflow-context-before-action",
53
+ "connected-resource-ref",
54
+ "typed-backend-node-actions"
55
+ ],
56
+ "denied": [
57
+ "component-state-file-mutation",
58
+ "direct-component-node-state-file-edit",
59
+ "direct-json-state-mutation",
60
+ "absolute-path-leakage",
61
+ "secret-payloads"
62
+ ]
63
+ },
64
+ "usage": {
65
+ "excel": {
66
+ "readXlsx": "List the sheet names of the bound .xlsx workbook: {sheets: [names]}.",
67
+ "readXlsxSheet": "Read one sheet paged: {sheet, page, pageSize}. sheet accepts a sheet name or a 1-based index and defaults to the first sheet. Returns headers plus the requested page of data rows; rows are bounded by pageSize and totalPages is included, so a workbook is never returned whole.",
68
+ "errors": "Corrupt or unreadable .xlsx files fail with a machine-readable error (code XLSX_PARSE, status 400)."
69
+ },
70
+ "pdf": {
71
+ "readPdf": "Return the bound PDF's total page count and document metadata: {totalPages, metadata: {title, author, subject, keywords, creator, producer, ...}}.",
72
+ "readPdfPage": "Extract a page range as text: {page, pageCount}. Text is returned with the isEvalSupported:false security baseline — no JavaScript evaluation is ever enabled during rendering.",
73
+ "errors": "Corrupt or unreadable PDF files fail with a clear machine-readable error (code PDF_PARSE, status 400)."
74
+ },
75
+ "zip": {
76
+ "readZipEntries": "List archive entries: {name, size, compressedSize, directory, isUtf8}. The archive is walked lazily — never read whole into memory; GBK-encoded legacy file names are decoded automatically.",
77
+ "readZipEntry": "Preview a single text entry: {entryName, maxBytes?}. The preview is bounded by maxBytes (default 65536) and flagged truncated when capped. Only text-like extensions are allowed (.txt/.md/.json/.js/.ts/.css/.html/.csv/.log/.yaml/.yml); binary entries are refused with ZIP_ENTRY_NOT_TEXT.",
78
+ "extractZipEntry": "Extract a single entry into a workspace-controlled destDir: {entryName, destDir?}. destDir defaults to Harness/a2a/file-extracts/<nodeId>/ and must stay inside the workspace. Entry names with ../ or ..\\ segments or absolute paths are rejected (ZIP_SLIP), so nothing can escape the archive or the workspace."
79
+ },
80
+ "locks": {
81
+ "acquireLock": "Acquire (or renew) a write lease on the file node: {holder, ttlMs?, lockId?}. The lease is persisted in backend-owned state (survives restarts), expires after the TTL, and stale leases are reclaimed automatically. While a foreign lease is live, file.writeText refuses with 409 file_locked carrying holder and expiresAt.",
82
+ "releaseLock": "Release the lease; only the holder may release: {holder, lockId?}. Missing or already-expired leases are a no-op (released: false)."
83
+ }
84
+ },
85
+ "prohibitions": [
86
+ "Never edit `Harness/a2a/**/state.json` directly — use typed actions.",
87
+ "Never edit component-node state files or the workflow map file.",
88
+ "Never infer absolute filesystem paths from state files; use the backend file routes only.",
89
+ "Never put secret or credential payloads in node actions; action payloads may be recorded.",
90
+ "Never pass extraction destDir values that escape the workspace; file.extractZipEntry rejects them."
91
+ ]
92
+ }