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.
- package/CHANGELOG.md +49 -0
- package/README-CN.md +4 -2
- package/README.md +23 -4
- package/package.json +17 -2
- package/src/generator.js +19 -6
- package/src/index.js +531 -38
- package/src/prompts.js +4 -4
- package/src/ui/dist/assets/AgentsRoute-BGGs90wH.js +7 -0
- package/src/ui/dist/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
- package/src/ui/dist/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
- package/src/ui/dist/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
- package/src/ui/dist/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
- package/src/ui/dist/assets/Combination-DhBLEmof.js +42 -0
- package/src/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/src/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/src/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/src/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/src/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/src/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/src/ui/dist/assets/RolesRoute-DnodCSz0.js +2 -0
- package/src/ui/dist/assets/RuntimePicker-CucD8TGn.js +7 -0
- package/src/ui/dist/assets/SettingsRoute-DquMWjac.js +2 -0
- package/src/ui/dist/assets/TaskList-Bxc0Uktx.js +7 -0
- package/src/ui/dist/assets/TerminalDrawer-CDusYltc.js +36 -0
- package/src/ui/dist/assets/WorkflowRoute-BN8yHmUs.css +1 -0
- package/src/ui/dist/assets/WorkflowRoute-D-0wVDpY.js +334 -0
- package/src/ui/dist/assets/abnfDiagram-VRR7QNED-zkRKkaxO.js +2 -0
- package/src/ui/dist/assets/apl-B4CMkyY2.js +2 -0
- package/src/ui/dist/assets/ar-SA-G6X2FPQ2-BiHaArx5.js +11 -0
- package/src/ui/dist/assets/arc-CBnLtOFO.js +2 -0
- package/src/ui/dist/assets/architectureDiagram-ZJ3FMSHR-DWXRXsh1.js +37 -0
- package/src/ui/dist/assets/asciiarmor-Df11BRmG.js +2 -0
- package/src/ui/dist/assets/asn1-EdZsLKOL.js +2 -0
- package/src/ui/dist/assets/asterisk-B-8jnY81.js +2 -0
- package/src/ui/dist/assets/az-AZ-76LH7QW2-CiT05voO.js +2 -0
- package/src/ui/dist/assets/bg-BG-XCXSNQG7-L-UM9tNf.js +6 -0
- package/src/ui/dist/assets/blockDiagram-677ZJIJ3-BIyh3Bry.js +133 -0
- package/src/ui/dist/assets/bn-BD-2XOGV67Q-NdgbA0bC.js +6 -0
- package/src/ui/dist/assets/brainfuck-C4LP7Hcl.js +2 -0
- package/src/ui/dist/assets/c4Diagram-LMCZKHZV-CA54vWWM.js +11 -0
- package/src/ui/dist/assets/ca-ES-6MX7JW3Y-BKZZsQ5J.js +9 -0
- package/src/ui/dist/assets/channel-Da_-zcAu.js +2 -0
- package/src/ui/dist/assets/chunk-2Q5K7J3B-DE4cxr1v.js +2 -0
- package/src/ui/dist/assets/chunk-32BRIVSS-i7FwbEU9.js +2 -0
- package/src/ui/dist/assets/chunk-5VM5RSS4-BhIcOYSu.js +16 -0
- package/src/ui/dist/assets/chunk-EX3LRPZG-Ci9zZRIs.js +232 -0
- package/src/ui/dist/assets/chunk-JWPE2WC7-BFdkcz-G.js +2 -0
- package/src/ui/dist/assets/chunk-MOJQB5TN-Dzmapl_S.js +89 -0
- package/src/ui/dist/assets/chunk-RYQCIY6F-RTmp7FOy.js +2 -0
- package/src/ui/dist/assets/chunk-V7JOEXUC-DInU3v3D.js +207 -0
- package/src/ui/dist/assets/chunk-VR4S4FIN-BHoyGBQO.js +2 -0
- package/src/ui/dist/assets/chunk-XXDRQBXY-DfeLZNZx.js +2 -0
- package/src/ui/dist/assets/classDiagram-OUVF2IWQ-FKbUS0bu.js +2 -0
- package/src/ui/dist/assets/classDiagram-v2-EOCWNBFH-FKbUS0bu.js +2 -0
- package/src/ui/dist/assets/clike-B9uivgTg.js +2 -0
- package/src/ui/dist/assets/clojure-BMjYHr_A.js +2 -0
- package/src/ui/dist/assets/cmake-BQqOBYOt.js +2 -0
- package/src/ui/dist/assets/cobol-CWcv1MsR.js +2 -0
- package/src/ui/dist/assets/coffeescript-S37ZYGWr.js +2 -0
- package/src/ui/dist/assets/commonlisp-DBKNyK5s.js +2 -0
- package/src/ui/dist/assets/cose-bilkent-JH36ORCC-_5PUJ615.js +2 -0
- package/src/ui/dist/assets/crystal-SjHAIU92.js +2 -0
- package/src/ui/dist/assets/cs-CZ-2BRQDIVT-DnkfnhDU.js +12 -0
- package/src/ui/dist/assets/css-BnMrqG3P.js +2 -0
- package/src/ui/dist/assets/cynefin-VYW2F7L2-CmkcFv-b.js +179 -0
- package/src/ui/dist/assets/cynefinDiagram-TSTJHNR4-D72VZn8H.js +63 -0
- package/src/ui/dist/assets/cypher-C_CwsFkJ.js +2 -0
- package/src/ui/dist/assets/cytoscape.esm-DTSO7Bv0.js +332 -0
- package/src/ui/dist/assets/d-pRatUO7H.js +2 -0
- package/src/ui/dist/assets/da-DK-5WZEPLOC-C54tQUgd.js +6 -0
- package/src/ui/dist/assets/dagre-VKFMJZFB-0BsAkrmo.js +5 -0
- package/src/ui/dist/assets/de-DE-XR44H4JA-DGfZlR10.js +9 -0
- package/src/ui/dist/assets/defaultLocale-DX6XiGOO.js +2 -0
- package/src/ui/dist/assets/diagram-FQU43EPY-C1ZJDOca.js +4 -0
- package/src/ui/dist/assets/diagram-G47NLZAW-D3pr3FSP.js +25 -0
- package/src/ui/dist/assets/diagram-NH7WQ7WH-Bwry0NV-.js +25 -0
- package/src/ui/dist/assets/diagram-OA4YK3LP-L6g09cmV.js +31 -0
- package/src/ui/dist/assets/diagram-WEI45ONY-Bh1puYVX.js +42 -0
- package/src/ui/dist/assets/diff-DbItnlRl.js +2 -0
- package/src/ui/dist/assets/directory-open-01563666-DWU9wJ6I.js +2 -0
- package/src/ui/dist/assets/directory-open-4ed118d0-CunoC1EB.js +2 -0
- package/src/ui/dist/assets/dockerfile-BKs6k2Af.js +2 -0
- package/src/ui/dist/assets/dtd-DF_7sFjM.js +2 -0
- package/src/ui/dist/assets/dylan-DwRh75JA.js +2 -0
- package/src/ui/dist/assets/ebnf-CDyGwa7X.js +2 -0
- package/src/ui/dist/assets/ebnfDiagram-CCIWWBDH-BC_mBRR5.js +2 -0
- package/src/ui/dist/assets/ecl-Cabwm37j.js +2 -0
- package/src/ui/dist/assets/eiffel-CnydiIhH.js +2 -0
- package/src/ui/dist/assets/el-GR-BZB4AONW-DsnwWweL.js +11 -0
- package/src/ui/dist/assets/elm-vLlmbW-K.js +2 -0
- package/src/ui/dist/assets/erDiagram-Q63AITRT-Bkxam36l.js +86 -0
- package/src/ui/dist/assets/erlang-BNw1qcRV.js +2 -0
- package/src/ui/dist/assets/es-ES-U4NZUMDT-CRxBcQgC.js +10 -0
- package/src/ui/dist/assets/eu-ES-A7QVB2H4-CTd_E7YR.js +12 -0
- package/src/ui/dist/assets/excalidraw-default-bMWIgNCy.svg +1 -0
- package/src/ui/dist/assets/fa-IR-HGAKTJCU-DO56k7eG.js +9 -0
- package/src/ui/dist/assets/factor-kuTfRLto.js +2 -0
- package/src/ui/dist/assets/fcl-Kvtd6kyn.js +2 -0
- package/src/ui/dist/assets/fi-FI-Z5N7JZ37-DEDCF9WB.js +7 -0
- package/src/ui/dist/assets/file-open-002ab408-DIuFHtCF.js +2 -0
- package/src/ui/dist/assets/file-open-7c801643-684qeFg4.js +2 -0
- package/src/ui/dist/assets/file-save-3189631c-C1wFhQhH.js +2 -0
- package/src/ui/dist/assets/file-save-745eba88-Bb9F9Kg7.js +2 -0
- package/src/ui/dist/assets/flowDiagram-23GEKE2U-C3SAEao7.js +157 -0
- package/src/ui/dist/assets/forth-Ffai-XNe.js +2 -0
- package/src/ui/dist/assets/fortran-DYz_wnZ1.js +2 -0
- package/src/ui/dist/assets/fr-FR-RHASNOE6-DE2nPyDt.js +10 -0
- package/src/ui/dist/assets/ganttDiagram-NO4QXBWP-U-J_Xi-_.js +293 -0
- package/src/ui/dist/assets/gas-Bneqetm1.js +2 -0
- package/src/ui/dist/assets/gherkin-heZmZLOM.js +2 -0
- package/src/ui/dist/assets/gitGraphDiagram-IHSO6WYX-BADVbD-a.js +107 -0
- package/src/ui/dist/assets/gl-ES-HMX3MZ6V-mCqVgQHC.js +11 -0
- package/src/ui/dist/assets/graph-C9eacEi8.js +2 -0
- package/src/ui/dist/assets/groovy-D9Dt4D0W.js +2 -0
- package/src/ui/dist/assets/haskell-Cw1EW3IL.js +2 -0
- package/src/ui/dist/assets/haxe-H-WmDvRZ.js +2 -0
- package/src/ui/dist/assets/he-IL-6SHJWFNN-KnaLrCzw.js +11 -0
- package/src/ui/dist/assets/hi-IN-IWLTKZ5I-wuqiaaWt.js +5 -0
- package/src/ui/dist/assets/http-DBlCnlav.js +2 -0
- package/src/ui/dist/assets/hu-HU-A5ZG7DT2-DLg_zm22.js +8 -0
- package/src/ui/dist/assets/id-ID-SAP4L64H-MB2mXqcR.js +11 -0
- package/src/ui/dist/assets/idl-BEugSyMb.js +2 -0
- package/src/ui/dist/assets/image-blob-reduce.esm-HwCm7IZ0.js +8 -0
- package/src/ui/dist/assets/index-39SJtrt0.js +2 -0
- package/src/ui/dist/assets/index-BQ0LIrW-.js +2 -0
- package/src/ui/dist/assets/index-BcAUh2Nm.css +1 -0
- package/src/ui/dist/assets/index-BcThOK-i.js +331 -0
- package/src/ui/dist/assets/index-BnxV3k_S.js +3 -0
- package/src/ui/dist/assets/index-C7MZBHbT.js +117 -0
- package/src/ui/dist/assets/index-CCvKI2rM.js +2 -0
- package/src/ui/dist/assets/index-CZvmcCab.js +8 -0
- package/src/ui/dist/assets/index-Cp3hLKNl.js +2 -0
- package/src/ui/dist/assets/index-D7ayFxcx.js +2 -0
- package/src/ui/dist/assets/index-DAYxSQGU.js +2 -0
- package/src/ui/dist/assets/index-DD-HeMV0.css +1 -0
- package/src/ui/dist/assets/index-DPMxd3Qn.js +2 -0
- package/src/ui/dist/assets/index-DSe2jx3k.js +4 -0
- package/src/ui/dist/assets/index-DUirCkgW.js +2 -0
- package/src/ui/dist/assets/index-DaKPQ2hN.js +159 -0
- package/src/ui/dist/assets/index-DzpuR0Jg.js +2 -0
- package/src/ui/dist/assets/index-POndwsCI.js +2 -0
- package/src/ui/dist/assets/index-R8NM9I_9.js +2 -0
- package/src/ui/dist/assets/index-TCDuDhBj.js +2 -0
- package/src/ui/dist/assets/index-TckzASdM.js +2 -0
- package/src/ui/dist/assets/index-Yi5ytFFr.js +2 -0
- package/src/ui/dist/assets/infoDiagram-FWYZ7A6U-CiGBlFqH.js +3 -0
- package/src/ui/dist/assets/init-Gi6I4Gst.js +2 -0
- package/src/ui/dist/assets/ishikawaDiagram-FXEZZL3T-B1aheRbz.js +71 -0
- package/src/ui/dist/assets/it-IT-JPQ66NNP-DT3HSU7X.js +12 -0
- package/src/ui/dist/assets/ja-JP-DBVTYXUO-CsfJjjWt.js +9 -0
- package/src/ui/dist/assets/javascript-iXu5QeM3.js +2 -0
- package/src/ui/dist/assets/journeyDiagram-5HDEW3XC-DtnJPxub.js +140 -0
- package/src/ui/dist/assets/julia-DuME0IfC.js +2 -0
- package/src/ui/dist/assets/kaa-6HZHGXH3-DQz-1-Gn.js +2 -0
- package/src/ui/dist/assets/kab-KAB-ZGHBKWFO-CaH-LSoK.js +9 -0
- package/src/ui/dist/assets/kanban-definition-HUTT4EX6-CZatSm3e.js +90 -0
- package/src/ui/dist/assets/katex-C5jXJg4s.js +258 -0
- package/src/ui/dist/assets/kk-KZ-P5N5QNE5-BMXmcm55.js +2 -0
- package/src/ui/dist/assets/km-KH-HSX4SM5Z-ZeoJNBpN.js +12 -0
- package/src/ui/dist/assets/ko-KR-MTYHY66A-BeaLRKph.js +10 -0
- package/src/ui/dist/assets/ku-TR-6OUDTVRD-B_28KrkR.js +10 -0
- package/src/ui/dist/assets/layout-DEXfKzaS.js +2 -0
- package/src/ui/dist/assets/linear-CpEDnQRC.js +2 -0
- package/src/ui/dist/assets/livescript-BwQOo05w.js +2 -0
- package/src/ui/dist/assets/lt-LT-XHIRWOB4-BxDcnUhp.js +4 -0
- package/src/ui/dist/assets/lua-VAEuO923.js +2 -0
- package/src/ui/dist/assets/lv-LV-5QDEKY6T-DpKDl1_y.js +8 -0
- package/src/ui/dist/assets/map-Czzmt4hB.js +2 -0
- package/src/ui/dist/assets/mathematica-DTrFuWx2.js +2 -0
- package/src/ui/dist/assets/mbox-CNhZ1qSd.js +2 -0
- package/src/ui/dist/assets/mermaidLoader-CBO31t0J.js +305 -0
- package/src/ui/dist/assets/mermaidLoader-CEK31ho9.css +1 -0
- package/src/ui/dist/assets/mindmap-definition-LN4V7U3C-CQ0TccEr.js +97 -0
- package/src/ui/dist/assets/mirc-CjQqDB4T.js +2 -0
- package/src/ui/dist/assets/mllike-CXdrOF99.js +2 -0
- package/src/ui/dist/assets/modelica-Dc1JOy9r.js +2 -0
- package/src/ui/dist/assets/mr-IN-CRQNXWMA-BKCZT58p.js +14 -0
- package/src/ui/dist/assets/mscgen-BA5vi2Kp.js +2 -0
- package/src/ui/dist/assets/mumps-BT43cFF4.js +2 -0
- package/src/ui/dist/assets/my-MM-5M5IBNSE-D34k0G9T.js +2 -0
- package/src/ui/dist/assets/nb-NO-T6EIAALU-DXr_KW8J.js +11 -0
- package/src/ui/dist/assets/nginx-DdIZxoE0.js +2 -0
- package/src/ui/dist/assets/nl-NL-IS3SIHDZ-C1L0aVDR.js +9 -0
- package/src/ui/dist/assets/nn-NO-6E72VCQL-CLWVSxbZ.js +9 -0
- package/src/ui/dist/assets/nsis-LdVXkNf5.js +2 -0
- package/src/ui/dist/assets/ntriples-BfvgReVJ.js +2 -0
- package/src/ui/dist/assets/oc-FR-POXYY2M6-nf8_J3eR.js +9 -0
- package/src/ui/dist/assets/octave-Ck1zUtKM.js +2 -0
- package/src/ui/dist/assets/ordinal-Cboi1Yqb.js +2 -0
- package/src/ui/dist/assets/oz-BzwKVEFT.js +2 -0
- package/src/ui/dist/assets/pa-IN-N4M65BXN-CAMJ-xd6.js +5 -0
- package/src/ui/dist/assets/pascal--L3eBynH.js +2 -0
- package/src/ui/dist/assets/pegDiagram-2B236MQR-Bj2RcmRd.js +2 -0
- package/src/ui/dist/assets/percentages-BXMCSKIN-s9yWFdr6.js +160 -0
- package/src/ui/dist/assets/perl-CdXCOZ3F.js +2 -0
- package/src/ui/dist/assets/pica-BGv_AhAB.js +8 -0
- package/src/ui/dist/assets/pieDiagram-ENE6RG2P-obpzz8dC.js +40 -0
- package/src/ui/dist/assets/pig-CevX1Tat.js +2 -0
- package/src/ui/dist/assets/pl-PL-T2D74RX3-DKJ5H85v.js +10 -0
- package/src/ui/dist/assets/powershell-CFHJl5sT.js +2 -0
- package/src/ui/dist/assets/properties-C78fOPTZ.js +2 -0
- package/src/ui/dist/assets/protobuf-ChK-085T.js +2 -0
- package/src/ui/dist/assets/{proxy-D0vUbds5.js → proxy-BSmwef4H.js} +2 -2
- package/src/ui/dist/assets/pt-BR-5N22H2LF-B5kow-kN.js +10 -0
- package/src/ui/dist/assets/pt-PT-UZXXM6DQ-B2G34fso.js +10 -0
- package/src/ui/dist/assets/pug-DeIclll2.js +2 -0
- package/src/ui/dist/assets/puppet-DMA9R1ak.js +2 -0
- package/src/ui/dist/assets/python-BuPzkPfP.js +2 -0
- package/src/ui/dist/assets/q-pXgVlZs6.js +2 -0
- package/src/ui/dist/assets/quadrantDiagram-ABIIQ3AL-Cl-T7NkJ.js +8 -0
- package/src/ui/dist/assets/r-B6wPVr8A.js +2 -0
- package/src/ui/dist/assets/railroadDiagram-RFXS5EU6-DMq82RHg.js +2 -0
- package/src/ui/dist/assets/{refresh-cw-JNmExijd.js → refresh-cw-CbFd7guV.js} +2 -2
- package/src/ui/dist/assets/requirementDiagram-TGXJPOKE-tGInMDgU.js +85 -0
- package/src/ui/dist/assets/ro-RO-JPDTUUEW-BwLdZW91.js +12 -0
- package/src/ui/dist/assets/roundRect-0PYZxl1G.js +2 -0
- package/src/ui/dist/assets/rpm-CTu-6PCP.js +2 -0
- package/src/ui/dist/assets/ru-RU-B4JR7IUQ-DpdAgIJc.js +10 -0
- package/src/ui/dist/assets/ruby-B2Rjki9n.js +2 -0
- package/src/ui/dist/assets/runtimeBrand-BoKPimsz.js +2 -0
- package/src/ui/dist/assets/sankeyDiagram-HTMAVEWB-C7X-ET4m.js +41 -0
- package/src/ui/dist/assets/sas-B4kiWyti.js +2 -0
- package/src/ui/dist/assets/save-D1CXHwBw.js +12 -0
- package/src/ui/dist/assets/scheme-C41bIUwD.js +2 -0
- package/src/ui/dist/assets/sequenceDiagram-DBY2YBRQ-Bn24i_nY.js +163 -0
- package/src/ui/dist/assets/settings-2-DtSNAAcU.js +22 -0
- package/src/ui/dist/assets/shell-CjFT_Tl9.js +2 -0
- package/src/ui/dist/assets/shield-check-BVbJ8T_N.js +7 -0
- package/src/ui/dist/assets/si-LK-N5RQ5JYF-naJaUy5u.js +2 -0
- package/src/ui/dist/assets/sieve-C3Gn_uJK.js +2 -0
- package/src/ui/dist/assets/simple-mode-GW_nhZxv.js +2 -0
- package/src/ui/dist/assets/sizeCapture-X5ZJPWSS-DAQHfm82.js +2 -0
- package/src/ui/dist/assets/sk-SK-C5VTKIMK-1NPz1J_d.js +7 -0
- package/src/ui/dist/assets/sl-SI-NN7IZMDC-D8RfmNQw.js +7 -0
- package/src/ui/dist/assets/smalltalk-CnHTOXQT.js +2 -0
- package/src/ui/dist/assets/solr-DehyRSwq.js +2 -0
- package/src/ui/dist/assets/sparql-DkYu6x3z.js +2 -0
- package/src/ui/dist/assets/spreadsheet-BCZA_wO0.js +2 -0
- package/src/ui/dist/assets/sql-D0XecflT.js +2 -0
- package/src/ui/dist/assets/stateDiagram-2N3HPSRC-Ck48D1ck.js +2 -0
- package/src/ui/dist/assets/stateDiagram-v2-6OUMAXLB-CdfRCJAJ.js +2 -0
- package/src/ui/dist/assets/stex-C3f8Ysf7.js +2 -0
- package/src/ui/dist/assets/style-C3QI7VPf.css +1 -0
- package/src/ui/dist/assets/stylus-B533Al4x.js +2 -0
- package/src/ui/dist/assets/subset-shared.chunk-eAtLHmbi.js +85 -0
- package/src/ui/dist/assets/subset-worker.chunk-DeHCTnTk.js +2 -0
- package/src/ui/dist/assets/sv-SE-XGPEYMSR-BeOYCU-8.js +11 -0
- package/src/ui/dist/assets/swift-BzpIVaGY.js +2 -0
- package/src/ui/dist/assets/swimlanes-5IMT3BWC-DOy22UjP.js +3 -0
- package/src/ui/dist/assets/swimlanesDiagram-G3AALYLV-sicPbVOg.js +9 -0
- package/src/ui/dist/assets/ta-IN-2NMHFXQM-CtS68WDd.js +10 -0
- package/src/ui/dist/assets/tcl-DVfN8rqt.js +2 -0
- package/src/ui/dist/assets/{terminal-BBQvnOAK.js → terminal-DEby5Y_P.js} +2 -2
- package/src/ui/dist/assets/terminalControl-BkFeDVXo.js +134 -0
- package/src/ui/dist/assets/textile-CnDTJFAw.js +2 -0
- package/src/ui/dist/assets/th-TH-HPSO5L25-DCHY9-Co.js +3 -0
- package/src/ui/dist/assets/tiddlywiki-DO-Gjzrf.js +2 -0
- package/src/ui/dist/assets/tiki-DGYXhP31.js +2 -0
- package/src/ui/dist/assets/timeline-definition-FHXFAJF6-DVkG72qO.js +121 -0
- package/src/ui/dist/assets/toml-Bm5Em-hy.js +2 -0
- package/src/ui/dist/assets/tr-TR-DEFEU3FU-y5-vjTv8.js +8 -0
- package/src/ui/dist/assets/troff-wAsdV37c.js +2 -0
- package/src/ui/dist/assets/ttcn-CfJYG6tj.js +2 -0
- package/src/ui/dist/assets/ttcn-cfg-B9xdYoR4.js +2 -0
- package/src/ui/dist/assets/turtle-B1tBg_DP.js +2 -0
- package/src/ui/dist/assets/uk-UA-QMV73CPH-BRbR5It6.js +7 -0
- package/src/ui/dist/assets/useReducedMotion-D07XP52Q.js +12 -0
- package/src/ui/dist/assets/vb-CmGdzxic.js +2 -0
- package/src/ui/dist/assets/vbscript-BuJXcnF6.js +2 -0
- package/src/ui/dist/assets/velocity-D8B20fx6.js +2 -0
- package/src/ui/dist/assets/vennDiagram-L72KCM5P-DwMwBlf-.js +35 -0
- package/src/ui/dist/assets/verilog-C6RDOZhf.js +2 -0
- package/src/ui/dist/assets/vhdl-lSbBsy5d.js +2 -0
- package/src/ui/dist/assets/vi-VN-M7AON7JQ-s6wSBv2s.js +6 -0
- package/src/ui/dist/assets/wardleyDiagram-EHGQE667-CNuuvzEg.js +79 -0
- package/src/ui/dist/assets/webidl-ZXfAyPTL.js +2 -0
- package/src/ui/dist/assets/{x-DoIOGAJz.js → x-B84wq78k.js} +2 -2
- package/src/ui/dist/assets/xquery-DzFWVndE.js +2 -0
- package/src/ui/dist/assets/xychartDiagram-FW5EYKEG-dUpZxmn6.js +8 -0
- package/src/ui/dist/assets/yacas-BJ4BC0dw.js +2 -0
- package/src/ui/dist/assets/z80-Hz9HOZM7.js +2 -0
- package/src/ui/dist/assets/zh-CN-LNUGB5OW-Cu_-POQN.js +11 -0
- package/src/ui/dist/assets/zh-HK-E62DVLB3-BCx4W4qZ.js +2 -0
- package/src/ui/dist/assets/zh-TW-RAJ6MFWO-02wx_Mrj.js +10 -0
- package/src/ui/dist/icons/excalidraw.svg +1 -0
- package/src/ui/dist/icons/markdown.svg +1 -0
- package/src/ui/dist/index.html +2 -2
- package/src/ui/package.json +10 -0
- package/src/ui/playwright.config.ts +36 -0
- package/src/ui/pnpm-workspace.yaml +2 -0
- package/src/ui/public/icons/excalidraw.svg +1 -0
- package/src/ui/public/icons/markdown.svg +1 -0
- package/src/ui/tsconfig.json +2 -1
- package/src/ui/vite.config.ts +1 -0
- package/src/wf-ui-server/__tests__/a2a-store.test.mjs +432 -15
- package/src/wf-ui-server/__tests__/action-registry-loader.test.mjs +156 -0
- package/src/wf-ui-server/__tests__/claude-stream-json.test.mjs +397 -0
- package/src/wf-ui-server/__tests__/codex-appserver.test.mjs +392 -0
- package/src/wf-ui-server/__tests__/component-node-api.test.mjs +881 -0
- package/src/wf-ui-server/__tests__/component-node-store.test.mjs +401 -0
- package/src/wf-ui-server/__tests__/control-plane-acceptance.test.mjs +2027 -0
- package/src/wf-ui-server/__tests__/control-plane-cli-smoke.test.mjs +1014 -0
- package/src/wf-ui-server/__tests__/dispatch-lifecycle.test.mjs +330 -0
- package/src/wf-ui-server/__tests__/effort-compatibility-red-092.test.mjs +151 -0
- package/src/wf-ui-server/__tests__/graph-layout-agent-tree.test.mjs +254 -0
- package/src/wf-ui-server/__tests__/graph-layout-tidy.test.mjs +260 -0
- package/src/wf-ui-server/__tests__/graph-layout.test.mjs +84 -0
- package/src/wf-ui-server/__tests__/node-config-api.test.mjs +384 -0
- package/src/wf-ui-server/__tests__/opencode-server.test.mjs +526 -0
- package/src/wf-ui-server/__tests__/peer-capsule.test.mjs +2 -2
- package/src/wf-ui-server/__tests__/pty-adapter.test.mjs +71 -1
- package/src/wf-ui-server/__tests__/runtime-config.test.mjs +3 -3
- package/src/wf-ui-server/__tests__/runtime-detector.test.mjs +21 -0
- package/src/wf-ui-server/__tests__/runtime-review.test.mjs +828 -0
- package/src/wf-ui-server/__tests__/server.integration.test.mjs +1463 -11
- package/src/wf-ui-server/__tests__/session-cleanup.test.mjs +159 -0
- package/src/wf-ui-server/__tests__/session-registry.test.mjs +52 -3
- package/src/wf-ui-server/__tests__/settings.test.mjs +12 -2
- package/src/wf-ui-server/__tests__/spawn-gate.test.mjs +78 -0
- package/src/wf-ui-server/__tests__/task-group-parser.test.mjs +120 -0
- package/src/wf-ui-server/__tests__/task-group-tag.test.mjs +264 -0
- package/src/wf-ui-server/__tests__/task-parser.test.mjs +49 -3
- package/src/wf-ui-server/__tests__/terminal-context-hardening.test.mjs +122 -0
- package/src/wf-ui-server/__tests__/terminal-context.test.mjs +164 -0
- package/src/wf-ui-server/__tests__/terminal-store.test.mjs +4 -4
- package/src/wf-ui-server/__tests__/wf-browser-api.test.mjs +599 -0
- package/src/wf-ui-server/__tests__/wf-browser-store.test.mjs +184 -0
- package/src/wf-ui-server/__tests__/workflow-action-registry.test.mjs +282 -0
- package/src/wf-ui-server/__tests__/workflow-agent-communication.test.mjs +411 -0
- package/src/wf-ui-server/__tests__/workflow-agent-context.test.mjs +323 -0
- package/src/wf-ui-server/__tests__/workflow-agent-cooperation-permissions.test.mjs +318 -0
- package/src/wf-ui-server/__tests__/workflow-agent-messages-structured.test.mjs +458 -0
- package/src/wf-ui-server/__tests__/workflow-agent-routing.test.mjs +434 -0
- package/src/wf-ui-server/__tests__/workflow-agent-runtime.test.mjs +324 -0
- package/src/wf-ui-server/__tests__/workflow-api-integration.test.mjs +263 -0
- package/src/wf-ui-server/__tests__/workflow-api-phase3.test.mjs +1213 -0
- package/src/wf-ui-server/__tests__/workflow-claude-materialize.test.mjs +209 -0
- package/src/wf-ui-server/__tests__/workflow-cli-registry-manuals.test.mjs +173 -0
- package/src/wf-ui-server/__tests__/workflow-cli-surface.test.mjs +176 -0
- package/src/wf-ui-server/__tests__/workflow-codex-resume-id.test.mjs +556 -0
- package/src/wf-ui-server/__tests__/workflow-cooperation-enforcement.test.mjs +553 -0
- package/src/wf-ui-server/__tests__/workflow-depth-resume-dock.test.mjs +846 -0
- package/src/wf-ui-server/__tests__/workflow-display-node.test.mjs +150 -0
- package/src/wf-ui-server/__tests__/workflow-edge-update.test.mjs +296 -0
- package/src/wf-ui-server/__tests__/workflow-file-cache-lock-watch.test.mjs +380 -0
- package/src/wf-ui-server/__tests__/workflow-file-formats.test.mjs +994 -0
- package/src/wf-ui-server/__tests__/workflow-file-node-actions.test.mjs +294 -0
- package/src/wf-ui-server/__tests__/workflow-goal-actions.test.mjs +357 -0
- package/src/wf-ui-server/__tests__/workflow-goal-task-autoclose.test.mjs +256 -0
- package/src/wf-ui-server/__tests__/workflow-graceful-stop.test.mjs +108 -0
- package/src/wf-ui-server/__tests__/workflow-graph-undo.test.mjs +524 -0
- package/src/wf-ui-server/__tests__/workflow-layout.test.mjs +732 -0
- package/src/wf-ui-server/__tests__/workflow-magnetic-topology.test.mjs +222 -0
- package/src/wf-ui-server/__tests__/workflow-markdown-lock.test.mjs +359 -0
- package/src/wf-ui-server/__tests__/workflow-mcp-hub.test.mjs +174 -0
- package/src/wf-ui-server/__tests__/workflow-node-manual-schema.test.mjs +241 -0
- package/src/wf-ui-server/__tests__/workflow-node-runtime.test.mjs +1991 -0
- package/src/wf-ui-server/__tests__/workflow-node-store-utils.test.mjs +125 -0
- package/src/wf-ui-server/__tests__/workflow-registry-drift.test.mjs +296 -0
- package/src/wf-ui-server/__tests__/workflow-resource-handle-four-side.test.mjs +217 -0
- package/src/wf-ui-server/__tests__/workflow-role-profile.test.mjs +234 -0
- package/src/wf-ui-server/__tests__/workflow-set-model.test.mjs +261 -0
- package/src/wf-ui-server/__tests__/workflow-skill-group-context-enabled.test.mjs +131 -0
- package/src/wf-ui-server/__tests__/workflow-skill-group-enable-disable.test.mjs +186 -0
- package/src/wf-ui-server/__tests__/workflow-skills-hub.test.mjs +125 -0
- package/src/wf-ui-server/__tests__/workflow-state-reconcile.test.mjs +139 -0
- package/src/wf-ui-server/__tests__/workflow-subagent-strategy-matrix.test.mjs +529 -0
- package/src/wf-ui-server/__tests__/workflow-team-flow.test.mjs +278 -0
- package/src/wf-ui-server/__tests__/workflow-terminal-control-live.test.mjs +294 -0
- package/src/wf-ui-server/__tests__/workflow-terminal-control.test.mjs +631 -0
- package/src/wf-ui-server/__tests__/workflow-timer-wakeup.test.mjs +318 -0
- package/src/wf-ui-server/__tests__/workflow-unified-resume.test.mjs +537 -0
- package/src/wf-ui-server/__tests__/workspace-api-hardening.test.mjs +187 -0
- package/src/wf-ui-server/__tests__/workspace-api.test.mjs +382 -0
- package/src/wf-ui-server/__tests__/workspace-reveal.test.mjs +138 -0
- package/src/wf-ui-server/__tests__/workspace-store-hardening.test.mjs +255 -0
- package/src/wf-ui-server/__tests__/workspace-store.test.mjs +208 -0
- package/src/wf-ui-server/__tests__/ws-events.integration.test.mjs +52 -25
- package/src/wf-ui-server/__tests__/ws-terminal.integration.test.mjs +12 -6
- package/src/wf-ui-server/__tests__/ws-wf-browser.integration.test.mjs +488 -0
- package/src/wf-ui-server/a2a-store.mjs +3007 -89
- package/src/wf-ui-server/action-registry.mjs +277 -0
- package/src/wf-ui-server/bridge-store.mjs +276 -0
- package/src/wf-ui-server/chat-driver.mjs +220 -0
- package/src/wf-ui-server/chat-store.mjs +109 -0
- package/src/wf-ui-server/claude-transcript-materializer.mjs +235 -0
- package/src/wf-ui-server/codex-update-prompt.mjs +53 -0
- package/src/wf-ui-server/component-node-store.mjs +689 -0
- package/src/wf-ui-server/composition-api.mjs +436 -0
- package/src/wf-ui-server/control-plane-token.mjs +17 -0
- package/src/wf-ui-server/dispatch-contract.mjs +150 -0
- package/src/wf-ui-server/drivers/claude-stream-json.mjs +371 -0
- package/src/wf-ui-server/drivers/codex-appserver.mjs +513 -0
- package/src/wf-ui-server/drivers/opencode-server.mjs +486 -0
- package/src/wf-ui-server/excalidraw-svg.mjs +141 -0
- package/src/wf-ui-server/file-format-adapters.mjs +511 -0
- package/src/wf-ui-server/file-watcher.mjs +215 -0
- package/src/wf-ui-server/graph-layout.mjs +778 -0
- package/src/wf-ui-server/harness-env.mjs +46 -0
- package/src/wf-ui-server/json-store-utils.mjs +48 -0
- package/src/wf-ui-server/model-capability.mjs +773 -0
- package/src/wf-ui-server/node-config-store.mjs +233 -0
- package/src/wf-ui-server/node-store-utils.mjs +88 -0
- package/src/wf-ui-server/peer-capsule.mjs +56 -1
- package/src/wf-ui-server/pty-adapter.mjs +513 -11
- package/src/wf-ui-server/reveal-foreground.mjs +69 -0
- package/src/wf-ui-server/runtime-detector.mjs +52 -6
- package/src/wf-ui-server/server.mjs +5613 -403
- package/src/wf-ui-server/session-cleanup.mjs +363 -0
- package/src/wf-ui-server/session-registry.mjs +179 -3
- package/src/wf-ui-server/settings.mjs +25 -0
- package/src/wf-ui-server/spawn-gate.mjs +46 -0
- package/src/wf-ui-server/task-parser.mjs +88 -3
- package/src/wf-ui-server/terminal-store.mjs +225 -11
- package/src/wf-ui-server/timer-wakeup-scheduler.mjs +226 -0
- package/src/wf-ui-server/wf-browser-store.mjs +733 -0
- package/src/wf-ui-server/workflow-agent-context.mjs +1731 -0
- package/src/wf-ui-server/workflow-capability-node-store.mjs +676 -0
- package/src/wf-ui-server/workflow-event-node-store.mjs +623 -0
- package/src/wf-ui-server/workflow-goal-node-store.mjs +328 -0
- package/src/wf-ui-server/workflow-graph-store.mjs +623 -0
- package/src/wf-ui-server/workflow-mcp-hub.mjs +286 -0
- package/src/wf-ui-server/workflow-node-runtime.mjs +1767 -0
- package/src/wf-ui-server/workflow-node-settings-store.mjs +339 -0
- package/src/wf-ui-server/workflow-node-types/agent-node.mjs +920 -0
- package/src/wf-ui-server/workflow-node-types/display-node.mjs +151 -0
- package/src/wf-ui-server/workflow-node-types/excalidraw-node.mjs +145 -0
- package/src/wf-ui-server/workflow-node-types/file-node.mjs +484 -0
- package/src/wf-ui-server/workflow-node-types/github-trigger-node.mjs +207 -0
- package/src/wf-ui-server/workflow-node-types/goal-node.mjs +491 -0
- package/src/wf-ui-server/workflow-node-types/markdown-node.mjs +225 -0
- package/src/wf-ui-server/workflow-node-types/mcp-connector-node.mjs +71 -0
- package/src/wf-ui-server/workflow-node-types/role-profile-store.mjs +191 -0
- package/src/wf-ui-server/workflow-node-types/skill-group-node.mjs +98 -0
- package/src/wf-ui-server/workflow-node-types/timer-node.mjs +607 -0
- package/src/wf-ui-server/workflow-ontology.mjs +681 -0
- package/src/wf-ui-server/workflow-operation-store.mjs +115 -0
- package/src/wf-ui-server/workflow-skills-hub.mjs +366 -0
- package/src/wf-ui-server/workflow-skills-market.mjs +723 -0
- package/src/wf-ui-server/workspace-store.mjs +951 -0
- package/src/wf-ui-server/ws-chat.mjs +299 -0
- package/src/wf-ui-server/ws-events.mjs +45 -20
- package/src/wf-ui-server/ws-terminal.mjs +165 -22
- package/src/wf-ui-server/ws-wf-browser.mjs +419 -0
- package/templates/common/.claude/agents/review-manager.md +33 -29
- package/templates/common/.claude/commands/wf-browser.md +1 -1
- package/templates/common/.claude/commands/wf-help.md +5 -3
- package/templates/common/.claude/commands/wf-init.md +44 -0
- package/templates/common/.claude/commands/wf-learn.md +34 -8
- package/templates/common/.claude/commands/wf-max.md +19 -9
- package/templates/common/.claude/commands/wf-review.md +3 -3
- package/templates/common/.claude/commands/wf-search.md +55 -0
- package/templates/common/.claude/commands/wf-task-archive.md +5 -4
- package/templates/common/.claude/commands/wf-task-list.md +6 -3
- package/templates/common/.claude/commands/wf-task-record.md +10 -2
- package/templates/common/.claude/commands/wf-ui.md +12 -5
- package/templates/common/.claude/commands/wf-update.md +4 -0
- package/templates/common/.claude/commands/wf.md +12 -1
- package/templates/common/.claude/rules/ecc/common.md +10 -1
- package/templates/common/.claude/skills/wf/SKILL.md +36 -0
- package/templates/common/.claude/skills/wf-browser/SKILL.md +427 -122
- package/templates/common/.claude/skills/wf-browser/references/BROWSER_CONTROL_PATTERNS.md +43 -0
- package/templates/common/.claude/skills/wf-init/SKILL.md +33 -0
- package/templates/common/.claude/skills/wf-learn/SKILL.md +106 -26
- package/templates/common/.claude/skills/wf-max/SKILL.md +45 -11
- package/templates/common/.claude/skills/wf-review/SKILL.md +26 -54
- package/templates/common/.claude/skills/wf-search/SKILL.md +122 -0
- package/templates/common/.claude/skills/wf-search/references/evidence-contract.md +77 -0
- package/templates/common/.claude/skills/wf-search/references/policies/compare.md +38 -0
- package/templates/common/.claude/skills/wf-search/references/policies/fact.md +39 -0
- package/templates/common/.claude/skills/wf-search/references/policies/troubleshoot.md +39 -0
- package/templates/common/.claude/skills/wf-search/references/policies/verify.md +44 -0
- package/templates/common/.claude/skills/wf-search/references/source-routing.md +40 -0
- package/templates/common/.claude/skills/wf-search/references/tool-adapters.md +38 -0
- package/templates/common/.claude/skills/wf-ui/SKILL.md +146 -12
- package/templates/common/.claude/skills/wf-update/SKILL.md +5 -1
- package/templates/common/.harness-version +188 -85
- package/templates/common/.opencode/agents/review-manager.md +31 -27
- package/templates/common/.opencode/commands/wf-browser.md +1 -1
- package/templates/common/.opencode/commands/wf-help.md +5 -3
- package/templates/common/.opencode/commands/wf-init.md +44 -0
- package/templates/common/.opencode/commands/wf-learn.md +34 -8
- package/templates/common/.opencode/commands/wf-max.md +19 -9
- package/templates/common/.opencode/commands/wf-review.md +3 -3
- package/templates/common/.opencode/commands/wf-search.md +55 -0
- package/templates/common/.opencode/commands/wf-task-archive.md +5 -7
- package/templates/common/.opencode/commands/wf-task-list.md +6 -6
- package/templates/common/.opencode/commands/wf-task-record.md +10 -5
- package/templates/common/.opencode/commands/wf-ui.md +12 -5
- package/templates/common/.opencode/commands/wf-update.md +4 -0
- package/templates/common/.opencode/commands/wf.md +12 -1
- package/templates/common/CLAUDE.md +61 -3
- package/templates/common/Harness/MEMORY.md +8 -5
- package/templates/common/Harness/README.md +14 -10
- package/templates/common/Harness/a2a/action-registry.json +4397 -0
- package/templates/common/Harness/a2a/role-graph.json +16 -3
- package/templates/common/Harness/a2a/skills/terminal-control.json +45 -1
- package/templates/common/Harness/a2a/skills/wf-ui-map.json +50 -0
- package/templates/common/Harness/a2a/skills/workflow-agent-node.json +143 -0
- package/templates/common/Harness/a2a/skills/workflow-context.json +95 -0
- package/templates/common/Harness/a2a/skills/workflow-diagram-node.json +60 -0
- package/templates/common/Harness/a2a/skills/workflow-display-node.json +69 -0
- package/templates/common/Harness/a2a/skills/workflow-file-node.json +92 -0
- package/templates/common/Harness/a2a/skills/workflow-goal-node.json +76 -0
- package/templates/common/Harness/a2a/skills/workflow-markdown-node.json +79 -0
- package/templates/common/Harness/a2a/skills/workflow-mcp-connector-node.json +59 -0
- package/templates/common/Harness/a2a/skills/workflow-node-actions.json +105 -0
- package/templates/common/Harness/a2a/skills/workflow-node-map.json +71 -0
- package/templates/common/Harness/a2a/skills/workflow-ontology.json +54 -0
- package/templates/common/Harness/a2a/skills/workflow-resource-node.json +68 -0
- package/templates/common/Harness/a2a/skills/workflow-skill-group-node.json +56 -0
- package/templates/common/Harness/a2a/skills/workflow-timer-node.json +81 -0
- package/templates/common/Harness/a2a/workflows.json +33 -0
- package/templates/common/Harness/ownership.manifest.json +263 -2
- package/templates/common/Harness/project/architecture.md +499 -0
- package/templates/common/Harness/research/README.md +20 -0
- package/templates/common/Harness/scripts/README.md +70 -6
- package/templates/common/Harness/scripts/a2a-terminal.mjs +12 -4
- package/templates/common/Harness/scripts/context-budget.mjs +7 -3
- package/templates/common/Harness/scripts/lib/memory-context.mjs +400 -0
- package/templates/common/Harness/scripts/lib/path-scope.mjs +77 -0
- package/templates/common/Harness/scripts/lib/research-policy.mjs +99 -0
- package/templates/common/Harness/scripts/lib/wf-search.mjs +189 -0
- package/templates/common/Harness/scripts/memory-context.mjs +63 -0
- package/templates/common/Harness/scripts/research-policy.mjs +27 -0
- package/templates/common/Harness/scripts/task-context.mjs +547 -0
- package/templates/common/Harness/scripts/task-group-index.mjs +242 -0
- package/templates/common/Harness/scripts/task-state.mjs +659 -95
- package/templates/common/Harness/scripts/validate-harness.mjs +70 -28
- package/templates/common/Harness/scripts/wf-auto-update-prompt.mjs +24 -0
- package/templates/common/Harness/scripts/wf-remove.mjs +10 -0
- package/templates/common/Harness/scripts/wf-search.mjs +10 -0
- package/templates/common/Harness/scripts/wf-ui-control.mjs +3144 -0
- package/templates/common/Harness/scripts/wf-update-check.mjs +274 -51
- package/templates/common/Harness/scripts/wf-update-runner.mjs +53 -16
- package/templates/common/Harness/settings.json +10 -0
- package/templates/common/Harness/specs/guides/SETUP.md +4 -3
- package/templates/common/Harness/specs/protocols/HARNESS_BRIDGE.md +429 -48
- package/templates/common/Harness/specs/protocols/MEMORY_PROTOCOL.md +24 -0
- package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +14 -11
- package/templates/common/Harness/specs/runtime/command-surface.json +28 -0
- package/templates/common/Harness/specs/runtime/context-loading.md +6 -0
- package/templates/common/Harness/specs/runtime/dispatch.md +9 -1
- package/templates/common/Harness/specs/runtime/subagents.md +20 -5
- package/templates/common/Harness/specs/workflows/WF-AUTO-SPARK.md +19 -0
- package/templates/common/Harness/specs/workflows/WF-AUTO.md +21 -0
- package/templates/common/Harness/specs/workflows/WF-KERNEL.md +4 -2
- package/templates/common/Harness/specs/workflows/WF-MAX.md +39 -12
- package/templates/common/Harness/specs/workflows/WF-STATE.md +62 -14
- package/templates/common/Harness/specs/workflows/WF.md +32 -0
- package/templates/common/Harness/tasks/INDEX.json +7 -0
- package/templates/common/Harness/tasks/INDEX.md +12 -0
- package/templates/common/Harness/tasks/_template/PLAN.md +6 -0
- package/templates/common/Harness/tasks/_template/PROGRESS.md +5 -0
- package/templates/common/Harness/tasks/_template/STATE.json +22 -0
- package/templates/common/Harness/templates/TEST_PLAN.template.md +5 -4
- package/templates/common/Harness/templates/UI_CONTRACT.template.md +7 -5
- package/templates/common/Harness/wf-browser/README.md +69 -0
- package/templates/common/README.md +17 -0
- package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js +0 -17
- package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js.map +0 -1
- package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js +0 -7
- package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js.map +0 -1
- package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js +0 -12
- package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js.map +0 -1
- package/src/ui/dist/assets/TaskList-BN4r8s1i.js +0 -50
- package/src/ui/dist/assets/TaskList-BN4r8s1i.js.map +0 -1
- package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js +0 -74
- package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js.map +0 -1
- package/src/ui/dist/assets/WorkflowRoute-BnuhLJ6X.css +0 -1
- package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js +0 -39
- package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js.map +0 -1
- package/src/ui/dist/assets/index-BOVYWntB.js +0 -117
- package/src/ui/dist/assets/index-BOVYWntB.js.map +0 -1
- package/src/ui/dist/assets/index-DaUObq0H.css +0 -1
- package/src/ui/dist/assets/maximize-2-LNrr_rKr.js +0 -7
- package/src/ui/dist/assets/maximize-2-LNrr_rKr.js.map +0 -1
- package/src/ui/dist/assets/plus-QuTJyoT3.js +0 -7
- package/src/ui/dist/assets/plus-QuTJyoT3.js.map +0 -1
- package/src/ui/dist/assets/proxy-D0vUbds5.js.map +0 -1
- package/src/ui/dist/assets/refresh-cw-JNmExijd.js.map +0 -1
- package/src/ui/dist/assets/terminal-BBQvnOAK.js.map +0 -1
- package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js +0 -7
- package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js.map +0 -1
- package/src/ui/dist/assets/x-DoIOGAJz.js.map +0 -1
- package/src/ui/pnpm-lock.yaml +0 -1582
- package/src/ui/src/App.tsx +0 -86
- package/src/ui/src/api.ts +0 -93
- package/src/ui/src/components/AgentsRoute.tsx +0 -503
- package/src/ui/src/components/Footer.tsx +0 -69
- package/src/ui/src/components/Header.tsx +0 -175
- package/src/ui/src/components/LoadingView.tsx +0 -22
- package/src/ui/src/components/RolesRoute.tsx +0 -169
- package/src/ui/src/components/SettingsRoute.tsx +0 -166
- package/src/ui/src/components/TaskList.tsx +0 -388
- package/src/ui/src/components/TerminalDrawer.tsx +0 -611
- package/src/ui/src/components/WorkflowRoute.tsx +0 -670
- package/src/ui/src/hooks/useReducedMotion.ts +0 -17
- package/src/ui/src/hooks/useServerConnection.ts +0 -114
- package/src/ui/src/index.css +0 -281
- package/src/ui/src/main.tsx +0 -11
- package/src/ui/src/types.ts +0 -108
- /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:
|
|
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.
|
|
206
|
-
|
|
207
|
-
`review-manager` when the runtime supports nested
|
|
208
|
-
agents report suggestions only. The controller accepts, rejects, or
|
|
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
|
|
185
|
-
|
|
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):
|
|
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
|
-
|
|
39
|
+
## Mandatory Fan-Out Contract (Strict mode only)
|
|
24
40
|
|
|
25
|
-
|
|
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
|
-
|
|
47
|
+
## Context and Research Contract
|
|
28
48
|
|
|
29
|
-
|
|
49
|
+
Before planning or dispatch, generate the bounded task input:
|
|
30
50
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
51
|
+
```text
|
|
52
|
+
node Harness/scripts/task-context.mjs pack <task-id> --project <absolutePath> --role <role> --budget-bytes <n> --json
|
|
53
|
+
```
|
|
34
54
|
|
|
35
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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`, `
|
|
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`, `
|
|
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
|
|
83
|
-
|
|
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
|
|
125
|
-
|
|
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`)
|
|
129
|
-
|
|
130
|
-
|
|
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
|
|
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
|
-
|
|
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,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 |
|
|
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
|
-
-
|
|
12
|
-
- CDP
|
|
13
|
-
- screenshot
|
|
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
|
-
-
|
|
11
|
-
-
|
|
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.
|