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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Policy: fact
|
|
2
|
+
|
|
3
|
+
Mode `fact` — confirm a single object, version, date, capability, or other
|
|
4
|
+
discrete fact.
|
|
5
|
+
|
|
6
|
+
## What to Confirm
|
|
7
|
+
|
|
8
|
+
Identify exactly what is being confirmed: the artifact name, the version or
|
|
9
|
+
date (if the question is versioned), and the precision the user needs. A
|
|
10
|
+
"fact" pass answers one bounded question, not a survey.
|
|
11
|
+
|
|
12
|
+
## Source Priority
|
|
13
|
+
|
|
14
|
+
Official primary text first: vendor documentation, release notes, the
|
|
15
|
+
standard/spec text, or the project's own source code. Source code outranks
|
|
16
|
+
blog posts and summaries. Community restatements are corroboration only,
|
|
17
|
+
never the primary support for a supported fact.
|
|
18
|
+
|
|
19
|
+
## Early Stop
|
|
20
|
+
|
|
21
|
+
If direct official evidence fully answers the question (for example a
|
|
22
|
+
changelog entry naming the exact version and date), stop after that single
|
|
23
|
+
query/read. Record the early stop reason in `stopReason`. Do not spend the
|
|
24
|
+
remaining budget re-confirming an already-direct answer.
|
|
25
|
+
|
|
26
|
+
## Dates
|
|
27
|
+
|
|
28
|
+
Record `publishedAt` only when the source itself states or clearly implies a
|
|
29
|
+
publication date. When the date is unknown, set `publishedAt: null` — never
|
|
30
|
+
infer, approximate, or copy an unrelated page date. A null date is valid; a
|
|
31
|
+
fabricated date is not. An old source is not automatically wrong, but do not
|
|
32
|
+
claim a current version was verified from stale evidence.
|
|
33
|
+
|
|
34
|
+
## Claims
|
|
35
|
+
|
|
36
|
+
The confirmed fact is normally one `fact` claim with `importance: major` and
|
|
37
|
+
at least one supporting source whose `access` is not `snippet`. Note
|
|
38
|
+
versioning caveats (e.g. "as of the checked date") in `confidenceReason` or
|
|
39
|
+
`limitations`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Policy: troubleshoot
|
|
2
|
+
|
|
3
|
+
Mode `troubleshoot` — diagnose an error or misbehavior using external
|
|
4
|
+
evidence matched to the local environment.
|
|
5
|
+
|
|
6
|
+
## Local Facts First
|
|
7
|
+
|
|
8
|
+
Before any external search, confirm the local facts: the exact error text,
|
|
9
|
+
the tool/library versions in use, the platform, and what already changed
|
|
10
|
+
recently. A mismatched-version answer is worse than no answer; record the
|
|
11
|
+
local environment in `constraints`.
|
|
12
|
+
|
|
13
|
+
## Redacted Minimal Query
|
|
14
|
+
|
|
15
|
+
Build the smallest query that identifies the problem: the distinctive error
|
|
16
|
+
token or message fragment plus the exact version, with paths, usernames,
|
|
17
|
+
hostnames, tokens, and business data removed. Never paste raw private logs
|
|
18
|
+
into a search tool. Redact first; if a log line cannot be safely reduced to
|
|
19
|
+
its distinctive tokens, do not send it.
|
|
20
|
+
|
|
21
|
+
## Environment-Matched Evidence
|
|
22
|
+
|
|
23
|
+
Weight found evidence by how closely its environment matches the local one
|
|
24
|
+
(same major version, same platform). An applicable fix for a different
|
|
25
|
+
version is a hint, not an answer — record the version it actually applies
|
|
26
|
+
to in the claim or source notes.
|
|
27
|
+
|
|
28
|
+
## No Uploads
|
|
29
|
+
|
|
30
|
+
This mode never uploads raw private logs, configuration files, or secrets to
|
|
31
|
+
any search tool, paste site, or third-party service. Evidence flows in
|
|
32
|
+
(search results), private data does not flow out.
|
|
33
|
+
|
|
34
|
+
## Outcome
|
|
35
|
+
|
|
36
|
+
Report the most probable cause with its evidence, the steps to verify it
|
|
37
|
+
locally, and alternatives when several causes match. If no
|
|
38
|
+
environment-matched evidence is found within budget, say so and record the
|
|
39
|
+
gap rather than generalizing from mismatched versions.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Policy: verify
|
|
2
|
+
|
|
3
|
+
Mode `verify` — check an existing claim or statement against real evidence,
|
|
4
|
+
actively looking for counter-evidence.
|
|
5
|
+
|
|
6
|
+
## Decompose First
|
|
7
|
+
|
|
8
|
+
Split the original statement into separately checkable atomic claims. A
|
|
9
|
+
compound statement ("X is deprecated, fast, and unsupported on Windows") is
|
|
10
|
+
verified claim by claim; the overall verdict is assembled from the parts,
|
|
11
|
+
never asserted wholesale.
|
|
12
|
+
|
|
13
|
+
## Support and Counter-Evidence
|
|
14
|
+
|
|
15
|
+
For each atomic claim, look for supporting evidence AND significant
|
|
16
|
+
counter-evidence. Searching only for confirmation is a protocol violation:
|
|
17
|
+
record contradiction sources in `contradictionIds`, not only in free text.
|
|
18
|
+
Counter-evidence that is significant must be kept even when inconvenient.
|
|
19
|
+
|
|
20
|
+
## Handling Conflicts
|
|
21
|
+
|
|
22
|
+
- Evidence conflicts but one side is clearly primary/official and newer:
|
|
23
|
+
the claim may stay `supported` with the conflict noted in `gaps` or
|
|
24
|
+
`confidenceReason`.
|
|
25
|
+
- Conflict is unresolvable within budget or credibility: mark the claim
|
|
26
|
+
`disputed`, keep both sides' sources, and set the overall `status` to
|
|
27
|
+
`incomplete`. A disputed result is a legitimate outcome; do not force a
|
|
28
|
+
verdict.
|
|
29
|
+
- A `complete` result that still carries an unexplained significant
|
|
30
|
+
contradiction is invalid (see `references/evidence-contract.md`).
|
|
31
|
+
|
|
32
|
+
## Independence
|
|
33
|
+
|
|
34
|
+
Treat source independence explicitly. Different domains are not
|
|
35
|
+
automatically independent sources; syndicated or mirrored coverage needs an
|
|
36
|
+
explicit `originGroup`. When independence is unknown, say so — an
|
|
37
|
+
independence of `unknown` never counts as proven independent corroboration.
|
|
38
|
+
|
|
39
|
+
## Absence of Evidence
|
|
40
|
+
|
|
41
|
+
If the claim is about absence ("feature X does not exist"), record what was
|
|
42
|
+
searched and where; absence findings are `insufficient` rather than
|
|
43
|
+
`supported` unless an authoritative negative statement (official "not
|
|
44
|
+
supported" note) is found.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Source Routing
|
|
2
|
+
|
|
3
|
+
Pick source types per question before picking tools. This mirrors the local
|
|
4
|
+
research protocol's tool order (local first, optional external tools, free
|
|
5
|
+
fallback, no paid-tool requirement).
|
|
6
|
+
|
|
7
|
+
## Source Types
|
|
8
|
+
|
|
9
|
+
`official`, `source-code`, `issue`, `paper`, `community`, `news`, `other`.
|
|
10
|
+
|
|
11
|
+
## Routing by Question Type
|
|
12
|
+
|
|
13
|
+
| Question type | Preferred sources | Notes |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| Version/date/capability fact | official, source-code | changelogs, release notes, specs, in-repo code |
|
|
16
|
+
| Behavior/API correctness | source-code, official, issue | source outranks summaries; maintainer answers in issues are official-ish |
|
|
17
|
+
| Contested claim | official + independent community/news | deliberately seek counter-evidence, not only confirmation |
|
|
18
|
+
| Option comparison | official, source-code, issue, community | same-condition grid; popularity signals stay community-observation |
|
|
19
|
+
| Error diagnosis | issue, source-code, community | match versions/platform; official bug trackers first |
|
|
20
|
+
| Ecosystem/news/practice | news, community, official | check dates; news syndication needs originGroup |
|
|
21
|
+
|
|
22
|
+
## Local First
|
|
23
|
+
|
|
24
|
+
Before external sources, check the local repo: existing docs, lockfiles,
|
|
25
|
+
vendored code, tests, package metadata, and prior recorded research
|
|
26
|
+
(`Harness/research/research-results.md`). Local evidence can answer or
|
|
27
|
+
sharpen the question; it does not replace a user-requested current external
|
|
28
|
+
verification.
|
|
29
|
+
|
|
30
|
+
## Independence Rules
|
|
31
|
+
|
|
32
|
+
- Different domains do not automatically mean independent sources — press
|
|
33
|
+
releases and news coverage are frequently copies of one origin.
|
|
34
|
+
- Syndicated/mirrored/republished coverage of one origin must carry the same
|
|
35
|
+
explicit `originGroup` value so it is not counted as independent
|
|
36
|
+
corroboration.
|
|
37
|
+
- When independence is unknown, leave it unknown; `unknown` never counts as
|
|
38
|
+
proven independent support.
|
|
39
|
+
- Do not merge URLs across origins; normalization removes only known
|
|
40
|
+
tracking parameters (see `evidence-contract.md`).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Tool Adapters
|
|
2
|
+
|
|
3
|
+
Pick the tool after the source types are known, from tools actually
|
|
4
|
+
available in the current host. Discover capabilities at runtime.
|
|
5
|
+
|
|
6
|
+
## Host Tools
|
|
7
|
+
|
|
8
|
+
| Tool | Use for | Notes |
|
|
9
|
+
| --- | --- | --- |
|
|
10
|
+
| WebSearch / built-in web search | broad query, source discovery | free fallback; expect less structure, verify more |
|
|
11
|
+
| WebFetch / page read | fetching a specific URL's text | counts as a read per URL |
|
|
12
|
+
| GitHub CLI (`gh`) / GitHub API | repos, issues, code search, releases | needs auth for rate-heavy use |
|
|
13
|
+
| Tavily (optional) | broad web search, source discovery | only when configured; never required |
|
|
14
|
+
| TinyFish (optional) | rendered/dynamic pages, structured extraction | only when configured; never required |
|
|
15
|
+
| User-designated browser | pages needing interaction or login | user must name it; never assume |
|
|
16
|
+
|
|
17
|
+
## Availability Rules
|
|
18
|
+
|
|
19
|
+
- Configuration existing does not mean authenticated and callable. A tool
|
|
20
|
+
counts as available only when a call with it actually succeeds in this
|
|
21
|
+
session; verify before relying on it.
|
|
22
|
+
- If a tool requires installation or login that is not already satisfied,
|
|
23
|
+
record the operation as `unavailable` and use a legitimate fallback. Do not
|
|
24
|
+
install or log in automatically from this command.
|
|
25
|
+
- No tool is mandatory and no paid tool is required. When Tavily/TinyFish is
|
|
26
|
+
absent, use the built-in fallback and record the limitation.
|
|
27
|
+
- When every usable tool is unavailable, record all operations as
|
|
28
|
+
`unavailable` and report the failure honestly. Never fabricate citations
|
|
29
|
+
for searches that did not run.
|
|
30
|
+
- `--depth deep` is this command's budget tier (12 query / 20 read). It does
|
|
31
|
+
not invoke any external deep-research plugin; such a plugin is used only
|
|
32
|
+
when the user's intent matches its own real trigger conditions.
|
|
33
|
+
|
|
34
|
+
## Read the Docs After Choosing
|
|
35
|
+
|
|
36
|
+
Read a tool's own Skill/documentation only after selecting it for this run,
|
|
37
|
+
not upfront for every candidate tool. Record which tool served each
|
|
38
|
+
operation in `operations[].tool`.
|
|
@@ -30,34 +30,55 @@ Do not paste full API responses, accessibility trees, or terminal transcripts.
|
|
|
30
30
|
Run from the project root:
|
|
31
31
|
|
|
32
32
|
```text
|
|
33
|
-
create-harness-vibe-coding wf-ui --project . --host 127.0.0.1 --port
|
|
33
|
+
create-harness-vibe-coding wf-ui --project . --host 127.0.0.1 --port 56670 --open --detach
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
If the global binary is not
|
|
36
|
+
If you are inside the generator source repository and the global binary is not
|
|
37
|
+
available, use:
|
|
37
38
|
|
|
38
39
|
```text
|
|
39
|
-
|
|
40
|
+
node bin/create-harness-vibe-coding.js wf-ui --project . --host 127.0.0.1 --port 56670 --open --detach
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Otherwise use:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
npx create-harness-vibe-coding@0.8.21 wf-ui --project . --host 127.0.0.1 --port 56670 --open --detach
|
|
40
47
|
```
|
|
41
48
|
|
|
42
49
|
Rules:
|
|
43
50
|
- Bind only to `127.0.0.1`; never `0.0.0.0`.
|
|
44
|
-
- Default port `0`
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
51
|
+
- Default port `56670`; if occupied, wf-ui tries the next port upward until one opens. Use `--port 0` only when you explicitly want an OS-assigned free port.
|
|
52
|
+
- Open the local URL printed by the command; frontend/API token auth is not required for this trusted loopback UI.
|
|
53
|
+
- Detach the server so command timeouts do not stop the control panel.
|
|
54
|
+
|
|
55
|
+
## Relationship To WF-Browser
|
|
56
|
+
|
|
57
|
+
Use this skill to start and operate the local Harness control panel. When the
|
|
58
|
+
task involves designing, debugging, or controlling a web UI through agent-visible
|
|
59
|
+
browser primitives, also use `wf-browser`.
|
|
60
|
+
|
|
61
|
+
`wf-ui` provides the local server, task/session graph, terminal bridge, and the
|
|
62
|
+
wf-browser backend control plane. `wf-browser` defines how a frontend should
|
|
63
|
+
expose route/capability/UI-tree/state/log/action contracts to that control
|
|
64
|
+
plane.
|
|
48
65
|
|
|
49
66
|
## Architecture
|
|
50
67
|
|
|
51
68
|
```text
|
|
52
|
-
|
|
69
|
+
Agent script/skill
|
|
53
70
|
|
|
|
54
|
-
| HTTP JSON APIs
|
|
71
|
+
| Harness/scripts/wf-ui-control.mjs + HTTP JSON APIs
|
|
55
72
|
v
|
|
56
73
|
Local Node server bound to 127.0.0.1 only
|
|
57
74
|
|
|
|
58
|
-
|
|
|
75
|
+
| tasks/sessions/a2a + wf-browser run/window/lease/artifact stores
|
|
76
|
+
v
|
|
77
|
+
Project-local Harness files
|
|
78
|
+
|
|
|
79
|
+
| /ws/events invalidation, /ws/terminal PTY, /ws/wf-browser observe/act
|
|
59
80
|
v
|
|
60
|
-
|
|
81
|
+
Browser UI (React + TypeScript + Motion for React + Lucide)
|
|
61
82
|
```
|
|
62
83
|
|
|
63
84
|
## Communication Protocol
|
|
@@ -67,11 +88,124 @@ Project-local Harness files (tasks/**, settings, version, command surfaces)
|
|
|
67
88
|
on reconnect or sequence gaps.
|
|
68
89
|
- Browser writes go through typed `POST` endpoints.
|
|
69
90
|
- `Harness/tasks/**` is the durable source of truth; UI state is derived.
|
|
91
|
+
- WF browser runs are stored under `Harness/wf-browser/runs/<runId>/`.
|
|
92
|
+
- WF browser backend primitives:
|
|
93
|
+
- `GET /api/wf-browser/capabilities`
|
|
94
|
+
- `POST /api/wf-browser/runs`
|
|
95
|
+
- `GET /api/wf-browser/runs/:runId/windows`
|
|
96
|
+
- `POST /api/wf-browser/runs/:runId/windows`
|
|
97
|
+
- `POST /api/wf-browser/runs/:runId/windows/:windowId/lease`
|
|
98
|
+
- `POST /api/wf-browser/runs/:runId/windows/:windowId/commands`
|
|
99
|
+
- `POST /api/wf-browser/runs/:runId/windows/:windowId/artifacts`
|
|
100
|
+
- `GET /api/wf-browser/connections`
|
|
101
|
+
- `POST /api/wf-browser/cleanup`
|
|
102
|
+
- A control lease is exclusive per window. Observe leases are read-only.
|
|
103
|
+
- Artifacts store screenshots, UI trees, state, logs, network, AST, replay, and
|
|
104
|
+
analysis files instead of pasting bulky data into task docs.
|
|
105
|
+
- The frontend debug runtime connects only when the page URL or sessionStorage
|
|
106
|
+
has `wfRun` and `wfWindow`; add `wfDebug=1` to show the virtual cursor overlay.
|
|
107
|
+
|
|
108
|
+
## Agent Commands
|
|
109
|
+
|
|
110
|
+
After `/wf-ui` starts, agents can use the control script when
|
|
111
|
+
`HARNESS_WF_UI_URL` is available. `HARNESS_WF_UI_TOKEN` is accepted only as a
|
|
112
|
+
legacy optional value:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
node Harness/scripts/wf-ui-control.mjs browser-allocate --mode runtime --route /workflow
|
|
116
|
+
node Harness/scripts/wf-ui-control.mjs browser-allocate-many --mode runtime --agents agent-a,agent-b --routes /workflow,/agents
|
|
117
|
+
node Harness/scripts/wf-ui-control.mjs browser-run --mode runtime --route /workflow
|
|
118
|
+
node Harness/scripts/wf-ui-control.mjs browser-window --run <runId> --route /workflow
|
|
119
|
+
node Harness/scripts/wf-ui-control.mjs browser-windows --run <runId>
|
|
120
|
+
node Harness/scripts/wf-ui-control.mjs browser-lease --run <runId> --window <windowId> --type control
|
|
121
|
+
node Harness/scripts/wf-ui-control.mjs browser-url --run <runId> --window <windowId> --lease <leaseId>
|
|
122
|
+
node Harness/scripts/wf-ui-control.mjs browser-open --run <runId> --window <windowId> --lease <leaseId> --context isolated
|
|
123
|
+
node Harness/scripts/wf-ui-control.mjs browser-launches --run <runId> --window <windowId>
|
|
124
|
+
node Harness/scripts/wf-ui-control.mjs browser-close --run <runId> --window <windowId> --launch <launchId> --remove-profile true
|
|
125
|
+
node Harness/scripts/wf-ui-control.mjs browser-wait --run <runId> --window <windowId> --agent <agentId>
|
|
126
|
+
node Harness/scripts/wf-ui-control.mjs browser-connections
|
|
127
|
+
node Harness/scripts/wf-ui-control.mjs browser-cleanup --keep-latest 20 --max-age-days 7
|
|
128
|
+
node Harness/scripts/wf-ui-control.mjs browser-command --run <runId> --window <windowId> --lease <leaseId> --primitive observe.uiTree
|
|
129
|
+
node Harness/scripts/wf-ui-control.mjs browser-snapshot --run <runId> --window <windowId> --lease <leaseId>
|
|
130
|
+
node Harness/scripts/wf-ui-control.mjs browser-command --run <runId> --window <windowId> --lease <leaseId> --primitive act.click --testid save-button
|
|
131
|
+
node Harness/scripts/wf-ui-control.mjs browser-release --run <runId> --window <windowId> --lease <leaseId> --close true --remove-profile true
|
|
132
|
+
node Harness/scripts/wf-ui-control.mjs browser-artifacts --run <runId> --window <windowId>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Prefer `browser-allocate` for one subagent and `browser-allocate-many` for a
|
|
136
|
+
batch of subagents. They create or reuse a run, create window slots, grant
|
|
137
|
+
leases, and return `launchUrl` values. Use `browser-url` to regenerate a URL
|
|
138
|
+
later. Use `browser-open --context isolated` when an agent needs Harness to open
|
|
139
|
+
a visible browser window with a per-window profile instead of asking the user to
|
|
140
|
+
open the URL manually. `browser-open` records `browser-launches.json` under the
|
|
141
|
+
run/window folder; use `browser-launches` to inspect local process/profile state
|
|
142
|
+
and `browser-close --remove-profile true` or `browser-release --close true` for
|
|
143
|
+
closeout. Use `browser-wait` after opening or refreshing a launch URL when the
|
|
144
|
+
next step needs the frontend WebSocket bridge to be connected.
|
|
145
|
+
Opening or refreshing the UI with the returned URL sets these debug parameters:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
?wfRun=<runId>&wfWindow=<windowId>&wfAgent=<agentId>&wfLease=<leaseId>&wfDebug=1
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The first-party bridge supports `observe.route`, `observe.capabilities`,
|
|
152
|
+
`observe.uiTree`, `observe.state`, `observe.logs`, `observe.network`,
|
|
153
|
+
`observe.replay`, `observe.diff`, plus visible `act.hover`, `act.click`,
|
|
154
|
+
`act.focus`, `act.type`, `act.clear`, `act.select`, `act.press`, `act.drag`,
|
|
155
|
+
`act.scroll`, and `act.wait`. The React shell also registers route capability
|
|
156
|
+
maps for tasks, workflow, agents, roles, settings, and terminal drawer surfaces
|
|
157
|
+
through `wfBrowserRouteCapabilities`; `observe.uiTree` annotates matching nodes
|
|
158
|
+
with `registeredCapabilityIds`.
|
|
159
|
+
Use Playwright/CDP only for unsupported browser facts such as trusted screenshots,
|
|
160
|
+
native downloads, permissions, or third-party pages, and normalize evidence into
|
|
161
|
+
the same run/window artifact layout.
|
|
162
|
+
Use `browser-snapshot` before subagent handoff, after a visible action sequence,
|
|
163
|
+
or before release. It serially captures route, capabilities, UI tree, state,
|
|
164
|
+
logs, network, replay, and diff observations through the connected window lease
|
|
165
|
+
and returns the artifact paths.
|
|
166
|
+
|
|
167
|
+
## Readiness Boundary
|
|
168
|
+
|
|
169
|
+
Current wf-ui target:
|
|
170
|
+
|
|
171
|
+
- L2 foundation: run/window/lease/artifact APIs, command API, and control script.
|
|
172
|
+
- L3-minimal bridge: `/ws/wf-browser` dispatches bounded `observe.*`/`act.*`
|
|
173
|
+
commands to an opt-in frontend debug runtime with virtual cursor feedback.
|
|
174
|
+
- L3 route map: wf-ui registers first-party route/page/canvas/graph/form/list
|
|
175
|
+
capabilities for the current route and exposes those ids in UI-tree nodes.
|
|
176
|
+
- L3 observability: frontend runtime records bounded network entries, replay
|
|
177
|
+
timeline entries, and compact before/after diffs as artifact-ready outputs.
|
|
178
|
+
- Connected-window handoff: `browser-snapshot` captures the standard observation
|
|
179
|
+
bundle for an existing window/lease and stores each observation as run/window
|
|
180
|
+
artifacts.
|
|
181
|
+
- Isolated browser launch: `browser-open` starts a visible Chrome/Edge/Chromium
|
|
182
|
+
window with a per-run/window profile, stores launch metadata as an `analysis`
|
|
183
|
+
artifact, and records local lifecycle state in `browser-launches.json`;
|
|
184
|
+
dry-run mode proves arguments without starting a browser.
|
|
185
|
+
- Browser lifecycle foundation: `browser-launches` lists per-window launches
|
|
186
|
+
with process liveness, `browser-close` closes selected/all launches and safely
|
|
187
|
+
removes isolated profiles, and `browser-release --close true` links lease
|
|
188
|
+
release to local browser cleanup.
|
|
189
|
+
- Connection wait: `browser-wait` polls `/api/wf-browser/connections` until the
|
|
190
|
+
requested run/window/agent frontend registers or the timeout expires.
|
|
191
|
+
- Window allocator foundation: `browser-allocate` returns per-agent launch URLs
|
|
192
|
+
for independent visible windows without requiring manual query construction;
|
|
193
|
+
`browser-allocate-many` creates a batch of independent window/lease/launchUrl
|
|
194
|
+
assignments for concurrent subagents, and `browser-windows` lists the run's
|
|
195
|
+
current window pool for dispatch and handoff.
|
|
196
|
+
- Artifact retention foundation: `browser-cleanup` previews or applies the
|
|
197
|
+
default latest-20-runs / 7-day retention policy through the backend cleanup
|
|
198
|
+
API.
|
|
199
|
+
- Do not claim full L3 until trusted screenshot/AST coverage and deeper
|
|
200
|
+
route-owned component maps are implemented for every major surface.
|
|
201
|
+
- Full L4 multi-agent-ready still requires runtime proof that subagents operate
|
|
202
|
+
isolated visible windows concurrently, plus automatic cleanup coverage on all
|
|
203
|
+
closeout paths.
|
|
70
204
|
|
|
71
205
|
## Security
|
|
72
206
|
|
|
73
207
|
- Loopback-only binding (`127.0.0.1`).
|
|
74
|
-
-
|
|
208
|
+
- Trusted local no-token HTTP and WebSocket access on loopback.
|
|
75
209
|
- Path traversal prevention on all task capsule reads.
|
|
76
210
|
- Command allowlist for PTY: `claude`, `codex`, `opencode`.
|
|
77
211
|
- Terminal default mode: watch/read-only; attach mode is explicit.
|
|
@@ -45,7 +45,11 @@ Scope resolution is deterministic:
|
|
|
45
45
|
- Current project has `Harness/scripts/wf-update-check.mjs`: update the project install from that script.
|
|
46
46
|
- A global runtime is discoverable from `Harness/.harness-version.globalDir`, `HARNESS_GLOBAL_HOME`, or the default `~/.harness/create-harness-vibe-coding`: update that runtime too, then sync its Claude/Codex/OpenCode host-global copies.
|
|
47
47
|
- Current project has no Harness install: update only the global runtime and host-global copies. Do not scaffold or modify the project unless the user explicitly asks to install Harness there.
|
|
48
|
-
`Harness/scripts/wf-update-runner.mjs` implements this multi-scope routing. Older installs that do not have the runner fall back to `Harness/scripts/wf-update-check.mjs`.
|
|
48
|
+
`Harness/scripts/wf-update-runner.mjs` implements this multi-scope routing. Older installs that do not have the runner fall back to `Harness/scripts/wf-update-check.mjs`.
|
|
49
|
+
|
|
50
|
+
All update paths are bounded: pass `--timeout-ms <positive-ms>` or set
|
|
51
|
+
`WF_UPDATE_TIMEOUT_MS`; timeout exits with code `3`, an active update lock with
|
|
52
|
+
code `4`, and successful transaction state is removed from `Harness/.temp`.
|
|
49
53
|
|
|
50
54
|
1. Run `node Harness/scripts/wf-update-runner.mjs --json` first when present; otherwise run `node Harness/scripts/wf-update-check.mjs --json` and use the `agent` block as the action plan. Current updaters try npm `create-harness-vibe-coding@latest` first, then canonical GitHub `LiWeny16/create-harness-vibe-coding`, then legacy mirror `zingspark/create-harness-vibe-coding`.
|
|
51
55
|
2. Preserve all PRESERVE files. Never overwrite user task, memory, research, root README.md, package, progress, or architecture files. Harness/README.md is merge-tier, not PRESERVE.
|