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
package/src/prompts.js
CHANGED
|
@@ -40,13 +40,13 @@ export async function askTargetDir(projectName) {
|
|
|
40
40
|
return dir.trim();
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export async function askInstallScope() {
|
|
43
|
+
export async function askInstallScope(defaultScope = 'global') {
|
|
44
44
|
const scope = await p.select({
|
|
45
45
|
message: 'Harness install scope?',
|
|
46
|
-
initialValue:
|
|
46
|
+
initialValue: defaultScope,
|
|
47
47
|
options: [
|
|
48
|
-
{ value: '
|
|
49
|
-
{ value: '
|
|
48
|
+
{ value: 'global', label: 'Global + project state', hint: 'recommended for new projects; shared runtime plus local tasks/memory' },
|
|
49
|
+
{ value: 'project', label: 'Project-local', hint: 'self-contained scaffold; compatibility/offline option' },
|
|
50
50
|
],
|
|
51
51
|
});
|
|
52
52
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{c as Ue,r as l,u as Ie,j as e,L as be,B as Se,i as C,a as E,d as U}from"./index-C7MZBHbT.js";import{u as Fe,T as Ye,S as He}from"./useReducedMotion-D07XP52Q.js";import{R as Ve}from"./RuntimePicker-CucD8TGn.js";import{R as De,a as Je}from"./runtimeBrand-BoKPimsz.js";import{R as ee}from"./refresh-cw-CbFd7guV.js";import{P as Ke,S as Ge,C as _e,E as qe}from"./settings-2-DtSNAAcU.js";import{m as Ze}from"./proxy-BSmwef4H.js";import{T as je}from"./terminal-DEby5Y_P.js";/**
|
|
2
|
+
* @license lucide-react v0.400.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const we=Ue("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]),F=5,P={border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"};function ze(n){const d=Re(n);return d==="running"||d==="available"?"#166534":d==="blocked"||d==="missing"?"#991b1b":d==="starting"?"#d97706":"#6b7280"}function Re(n){return n==="saved"?"stopped":n||"unknown"}function Z(n){if(!n)return"";const d=n.split(/[\\/]/).filter(Boolean);return d.length>4?`.../${d.slice(-3).join("/")}`:n}function Ce(n){return n?n.length>14?`${n.slice(0,8)}...${n.slice(-4)}`:n:"-"}function Q(n){if(n==null||Number.isNaN(Number(n)))return"unavailable";const d=Math.max(0,Number(n));if(d<1024)return`${d} B`;const g=d/1024;if(g<1024)return`${g.toFixed(g>=10?0:1)} KB`;const f=g/1024;if(f<1024)return`${f.toFixed(f>=10?0:1)} MB`;const I=f/1024;return`${I.toFixed(I>=10?0:1)} GB`}function Te(n,d="warming"){return n==null||Number.isNaN(Number(n))?d:`${Math.max(0,Number(n)).toFixed(1)}%`}function Y(n){return n!=null&&Number.isFinite(Number(n))}function se(n){return n==="running"||n==="starting"}function Qe(n,d){var z;const g=new Set(d.filter(p=>se(p.status)).map(p=>p.sessionId)),f=((n==null?void 0:n.nodes)||[]).filter(p=>p.sessionId),I=new Set(f.map(p=>p.sessionId).filter(Boolean)),x=new Set(f.filter(p=>se(p.status)).map(p=>p.sessionId).filter(Boolean));return{workflowLiveCount:x.size,runningPtyCount:g.size,workflowNodeCount:((z=n==null?void 0:n.nodes)==null?void 0:z.length)||0,missingInAgents:[...x].filter(p=>!g.has(p)),missingOnWorkflow:[...g].filter(p=>!I.has(p))}}function os({onSelectSession:n}){var ve,ye;const[d,g]=l.useState([]),[f,I]=l.useState([]),[x,z]=l.useState([]),[p,H]=l.useState(!1),[B,V]=l.useState(!0),[T,M]=l.useState(0),[D,te]=l.useState(""),[ne,ie]=l.useState(""),[J,re]=l.useState(!1),[Pe,We]=l.useState(()=>new Set),ae=l.useRef(new Set),$=l.useRef(null),[a,oe]=l.useState(null),[u,Be]=l.useState(null),[K,le]=l.useState(!1),[Me,Le]=l.useState(!0),[de,R]=l.useState(null),[L,ce]=l.useState(null),[y,pe]=l.useState(null),[ue,G]=l.useState({}),[X,ge]=l.useState("user"),[fe,_]=l.useState(null),Ne=Fe(),t=Ie(),O=l.useMemo(()=>x.find(s=>s.id===D)||null,[x,D]),h=d,q=l.useMemo(()=>{if(h.length===0)return{memoryBytes:null,cpuPercent:null,viewers:0,pids:0};const s=h.reduce((c,o)=>{var w;const v=(w=o.resourceUsage)==null?void 0:w.memoryBytes;return Y(v)?c+Number(v):c},0),i=h.reduce((c,o)=>{var w;const v=(w=o.resourceUsage)==null?void 0:w.cpuPercent;return Y(v)?c+Number(v):c},0),r=h.some(c=>{var o;return Y((o=c.resourceUsage)==null?void 0:o.memoryBytes)}),b=h.some(c=>{var o;return Y((o=c.resourceUsage)==null?void 0:o.cpuPercent)}),m=h.reduce((c,o)=>{var v;return c+Number(((v=o.resourceUsage)==null?void 0:v.wsClientCount)??o.wsClientCount??0)},0),j=h.filter(c=>{var o;return Y(((o=c.resourceUsage)==null?void 0:o.pid)??c.pid)}).length;return{memoryBytes:r?s:null,cpuPercent:b?i:null,viewers:m,pids:j}},[h]),N=Math.max(1,Math.ceil(f.length/F)),$e=f.slice(T*F,T*F+F),A=s=>{We(i=>{const r=s(i);return ae.current=r,r})},S=async(s=!1)=>{try{s&&C("/api/runtimes");const[i,r,b,m,j]=await Promise.all([E(s?"/api/runtimes?refresh=1":"/api/runtimes",{ttlMs:12e3,refresh:s}),E("/api/sessions",{ttlMs:3e3}),E("/api/sessions?all=1",{ttlMs:s?0:3e3,refresh:s}).catch(()=>[]),E("/api/cleanup/summary",{ttlMs:s?0:5e3,refresh:s}).catch(()=>null),E("/api/a2a/snapshot",{ttlMs:s?0:1200,refresh:s}).catch(()=>null)]),c=ae.current;z(i),g(r.filter(o=>!c.has(o.sessionId))),I(b.filter(o=>o.status!=="running"&&o.status!=="starting")),oe(m),Be(Qe(j,r)),A(o=>{if(o.size===0)return o;const v=new Set(r.map(w=>w.sessionId));return new Set([...o].filter(w=>v.has(w)))}),te(o=>{var v;return o&&i.some(w=>w.id===o)?o:((v=i[0])==null?void 0:v.id)||""}),R(null)}catch(i){R((i==null?void 0:i.message)||t("Failed to load agent terminals"))}finally{Le(!1)}};l.useEffect(()=>{S();const s=setInterval(()=>S(!1),4e3),i=()=>{$.current&&clearTimeout($.current),$.current=setTimeout(()=>S(!0),250)},r=b=>{const m=b.detail;if(m!=null&&m.sessionId&&m.state==="stopping"){A(j=>new Set(j).add(m.sessionId)),g(j=>j.filter(c=>c.sessionId!==m.sessionId));return}m!=null&&m.sessionId&&(m.state==="stopped"||m.state==="saved")&&(A(j=>{const c=new Set(j);return c.delete(m.sessionId),c}),g(j=>j.filter(c=>c.sessionId!==m.sessionId))),S(!0)};return window.addEventListener("harness:sessions-changed",r),window.addEventListener("harness:graph-changed",i),()=>{clearInterval(s),window.removeEventListener("harness:sessions-changed",r),window.removeEventListener("harness:graph-changed",i),$.current&&clearTimeout($.current)}},[B]),l.useEffect(()=>{M(s=>Math.min(s,Math.max(0,N-1)))},[N]);const me=async s=>{ce(s),pe(null),G({}),_(null);try{const i=await U(`/api/runtimes/${encodeURIComponent(s)}/config`);pe(i);const r=i.files.find(b=>b.writable)||i.files[0];ge((r==null?void 0:r.scope)||"user"),G({...(r==null?void 0:r.values)||{}})}catch(i){R((i==null?void 0:i.message)||t("Failed to load runtime config"))}},W=(y==null?void 0:y.files.find(s=>s.scope===X&&s.writable))||(y==null?void 0:y.files.find(s=>s.writable))||null,Oe=s=>{const i=(y==null?void 0:y.files.find(r=>r.scope===s))||null;ge(s),G({...(i==null?void 0:i.values)||{}}),_(null)},Ae=async()=>{if(!(!L||!W)){_(null);try{const s=await U(`/api/runtimes/${encodeURIComponent(L)}/config`,{method:"POST",body:JSON.stringify({scope:W.scope,values:ue})});_(s.backupPath?`Saved with backup: ${Z(s.backupPath)}`:`Saved: ${s.path}`),await me(L)}catch(s){R((s==null?void 0:s.message)||t("Failed to save runtime config"))}}},xe=async(s=D)=>{if(s){re(!0),R(null);try{const i=await U("/api/sessions",{method:"POST",body:JSON.stringify({runtime:s,model:ne.trim(),role:"terminal-agent",objective:t("Manual Harness agent terminal"),subagentMode:"built-in-subagents"})});C("/api/sessions"),C("/api/a2a/snapshot"),H(!1),ie(""),await S(),n(i.sessionId)}catch(i){R((i==null?void 0:i.message)||t("Session launch failed"))}finally{re(!1)}}},he=async s=>{const i=d;A(r=>new Set(r).add(s)),g(r=>r.filter(b=>b.sessionId!==s));try{await U(`/api/sessions/${encodeURIComponent(s)}/stop`,{method:"POST"}),C("/api/sessions"),C("/api/sessions?all=1"),C("/api/a2a/snapshot"),window.dispatchEvent(new CustomEvent("harness:sessions-changed")),await S()}catch(r){g(i),R((r==null?void 0:r.message)||t("Stop failed"))}finally{A(r=>{const b=new Set(r);return b.delete(s),b})}},Ee=async()=>{if(K)return;const s=(a==null?void 0:a.totals.eligibleCount)||0;if(s<=0){C("/api/cleanup/summary"),await S(!0);return}if(window.confirm(`Clean ${s} eligible storage item(s)?`)){le(!0),R(null);try{const i=await U("/api/cleanup/prune",{method:"POST",body:JSON.stringify({apply:!0})});oe(i),C("/api/cleanup/summary"),C("/api/sessions"),C("/api/sessions?all=1"),C("/api/a2a/snapshot"),window.dispatchEvent(new CustomEvent("harness:sessions-changed")),await S(!0)}catch(i){R((i==null?void 0:i.message)||t("Cleanup failed"))}finally{le(!1)}}};return Me?e.jsx(be,{label:t("Loading agent terminals")}):e.jsxs("div",{style:{display:"grid",gap:14},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[e.jsxs("h2",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",margin:0,display:"flex",alignItems:"center",gap:5},children:[e.jsx(Se,{size:14})," ",t("Agent Terminals")]}),e.jsxs("div",{style:{display:"flex",gap:6},children:[e.jsx("button",{onClick:()=>{V(s=>!s),M(0)},title:t("Show stopped terminal sessions"),style:{fontSize:10,color:B?"var(--fg)":"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px",background:B?"var(--surface)":"var(--bg)"},children:t("Stopped")}),e.jsxs("button",{onClick:()=>S(!0),title:t("Scan PATH again"),style:{fontSize:10,color:"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px"},children:[e.jsx(ee,{size:11})," ",t("Scan")]})]})]}),de&&e.jsxs("div",{style:{fontSize:11,color:"#991b1b",padding:"7px 9px",background:"#fef2f2",borderRadius:"var(--radius)"},children:[de,e.jsx("button",{onClick:()=>R(null),style:{marginLeft:8,fontSize:10,color:"#991b1b",textDecoration:"underline"},children:t("dismiss")})]}),e.jsxs("section",{"data-testid":"agents-consistency-panel",style:{...P,padding:12,display:"grid",gap:8},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7},children:[e.jsx(Se,{size:14}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:12,fontWeight:600},children:t("Workflow Consistency")}),e.jsx("div",{style:{fontSize:10,color:u&&(u.missingInAgents.length||u.missingOnWorkflow.length)?"#991b1b":"var(--muted)"},children:u?u.missingInAgents.length||u.missingOnWorkflow.length?t("Drift detected between canvas and live PTY sessions"):t("Canvas and live PTY sessions are in sync"):t("Scanning")})]})]}),e.jsxs("button",{onClick:()=>S(!0),title:t("Refresh workflow consistency"),style:{fontSize:10,color:"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px"},children:[e.jsx(ee,{size:11})," ",t("Refresh")]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:8},children:[e.jsx(k,{label:t("Workflow live"),value:u?String(u.workflowLiveCount):"-",detail:t("running canvas sessions")}),e.jsx(k,{label:t("Running PTYs"),value:u?String(u.runningPtyCount):"-",detail:t("live session registry")}),e.jsx(k,{label:t("Workflow records"),value:u?String(u.workflowNodeCount):"-",detail:t("live + stopped sessions")})]}),u&&(u.missingInAgents.length||u.missingOnWorkflow.length)?e.jsxs("div",{style:{display:"grid",gap:3,fontSize:10,color:"#991b1b"},children:[u.missingInAgents.length>0&&e.jsxs("div",{children:[t("Missing in Agents"),": ",u.missingInAgents.map(Ce).join(", ")]}),u.missingOnWorkflow.length>0&&e.jsxs("div",{children:[t("Missing on Workflow"),": ",u.missingOnWorkflow.map(Ce).join(", ")]})]}):null]}),e.jsxs("section",{"data-testid":"agents-resource-summary",style:{...P,padding:12,display:"grid",gap:8},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7},children:[e.jsx(we,{size:14}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:12,fontWeight:600},children:t("PTY Resources")}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:t("Current server live PTYs only; stopped sessions keep transcripts but are not resource-sampled")})]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:8},children:[e.jsx(k,{label:t("Live memory"),value:Q(q.memoryBytes),detail:h.length?t("current live PTY processes"):t("no current live PTY")}),e.jsx(k,{label:t("Live CPU"),value:Te(q.cpuPercent,"unavailable"),detail:h.length?t("sampled process CPU"):t("no current live PTY")}),e.jsx(k,{label:t("Live PTYs"),value:String(q.pids),detail:`${h.length} ${t("current running session(s)")}`}),e.jsx(k,{label:t("Viewers"),value:String(q.viewers),detail:t("attached terminal views")}),e.jsx(k,{label:t("Stopped sessions"),value:String(f.length),detail:t("transcripts / not sampled")})]}),h.length===0&&f.length>0&&e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:t("Resource usage is unavailable because this wf-ui server is not currently managing a live PTY; stopped rows below are transcript records.")})]}),e.jsxs("section",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:8},children:[e.jsxs("button",{"data-testid":"agent-add-box",onClick:()=>H(s=>!s),style:{...P,minHeight:132,borderStyle:"dashed",display:"grid",placeItems:"center",textAlign:"center",padding:16,color:"var(--fg)",background:p?"var(--surface)":"var(--bg)"},children:[e.jsx("span",{style:{width:34,height:34,borderRadius:"var(--radius)",border:"1px solid var(--border)",display:"grid",placeItems:"center",marginBottom:8},children:e.jsx(Ke,{size:18})}),e.jsx("span",{style:{fontSize:13,fontWeight:600},children:t("New Agent Terminal")}),e.jsx("span",{style:{fontSize:10,color:"var(--muted)",marginTop:2},children:t("Choose a detected terminal platform")})]}),x.map(s=>e.jsxs(Ze.div,{"data-testid":"detected-runtime-card",initial:Ne?void 0:{opacity:0,y:4},animate:{opacity:1,y:0},style:{...P,padding:10,minHeight:132,display:"grid",alignContent:"space-between",gap:8},children:[e.jsxs("div",{style:{minWidth:0},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7,minWidth:0},children:[e.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:ze(s.status),flexShrink:0}}),e.jsx(De,{runtime:s.id,size:16}),e.jsx("span",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.label}),e.jsx("span",{style:{fontSize:9,color:"var(--muted)",border:"1px solid var(--border)",borderRadius:99,padding:"0 5px",flexShrink:0},children:s.command})]}),e.jsx("div",{title:s.path||"",style:{fontSize:10,color:"var(--muted)",marginTop:5,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z(s.path)}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)",marginTop:3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.version||s.capabilities.slice(0,3).join(" / ")})]}),e.jsxs("div",{style:{display:"flex",gap:5},children:[e.jsxs("button",{onClick:()=>xe(s.id),disabled:J,style:{flex:1,fontSize:10,fontWeight:600,color:"#fff",background:"#111",borderRadius:"var(--radius)",padding:"5px 8px",display:"flex",alignItems:"center",justifyContent:"center",gap:4,opacity:J?.5:1},children:[e.jsx(je,{size:11})," ",t("Start")]}),e.jsx("button",{onClick:()=>me(s.id),title:t("Configure runtime"),style:{width:28,height:27,display:"grid",placeItems:"center",border:"1px solid var(--border)",borderRadius:"var(--radius)",color:"var(--muted)"},children:e.jsx(Ge,{size:12})})]})]},s.id))]}),p&&e.jsx("section",{style:{...P,padding:12,display:"grid",gap:10},children:x.length===0?e.jsx("div",{style:{fontSize:11,color:"var(--muted)",textAlign:"center",padding:16},children:t("No detected terminal agents. Run Scan after installing a CLI on PATH.")}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(160px, 240px) minmax(120px, 220px) auto",gap:8,alignItems:"end"},children:[e.jsxs("div",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[t("Platform"),e.jsx(Ve,{runtimes:x,value:D,onChange:te,testId:"agents-runtime-picker"})]}),e.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[t("Model Override"),e.jsx("input",{value:ne,onChange:s=>ie(s.target.value),placeholder:"optional",style:{padding:"6px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"}})]}),e.jsx("button",{onClick:()=>xe(),disabled:!O||J,style:{height:31,padding:"0 14px",fontSize:11,fontWeight:600,borderRadius:"var(--radius)",background:"#111",color:"#fff",opacity:!O||J?.5:1},children:t("Start Terminal")})]}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:O?`${O.command} from ${Z(O.path)}`:t("Only detected runtimes are listed.")})]})}),L&&e.jsxs("section",{style:{...P,padding:12},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10,marginBottom:10},children:[e.jsxs("div",{children:[e.jsxs("div",{style:{fontSize:12,fontWeight:600},children:[((ve=x.find(s=>s.id===L))==null?void 0:ve.label)||L," Config"]}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:t("Known global/project config files. Authentication files are shown read-only unless a safe model field is known.")})]}),e.jsx("button",{onClick:()=>ce(null),style:{fontSize:10,color:"var(--muted)",border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"3px 8px"},children:t("Close")})]}),y?y.files.length===0?e.jsx("div",{style:{fontSize:11,color:"var(--muted)"},children:t("No editable config path is known for this CLI yet.")}):e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(170px, 260px) minmax(0, 1fr)",gap:12},children:[e.jsx("div",{style:{display:"grid",gap:5},children:y.files.map(s=>e.jsxs("button",{onClick:()=>Oe(s.scope),style:{textAlign:"left",border:`1px solid ${X===s.scope?"#111":"var(--border)"}`,borderRadius:"var(--radius)",padding:8,background:X===s.scope?"var(--surface)":"var(--bg)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:5,fontSize:11,fontWeight:600},children:[s.exists&&e.jsx(_e,{size:11,color:"#166534"})," ",s.scope]}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)",marginTop:3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.path})]},`${s.scope}-${s.path}`))}),e.jsxs("div",{children:[W?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{fontSize:10,color:"var(--muted)",marginBottom:8},children:[W.format," / ",W.exists?t("existing"):t("will create")," / ",Z(W.absolutePath)]}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:8},children:Object.keys(W.fields).map(s=>e.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[s,e.jsx("input",{value:ue[s]||"",onChange:i=>G(r=>({...r,[s]:i.target.value})),style:{padding:"6px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"}})]},s))}),e.jsx("button",{onClick:Ae,style:{marginTop:10,fontSize:11,fontWeight:600,color:"#fff",background:"#111",borderRadius:"var(--radius)",padding:"6px 12px"},children:t("Save Config")})]}):e.jsx("div",{style:{fontSize:11,color:"var(--muted)"},children:t("This config file is read-only in Harness UI.")}),fe&&e.jsx("div",{style:{fontSize:10,color:"#166534",marginTop:8},children:fe})]})]}):e.jsx(be,{label:t("Loading runtime config")})]}),e.jsxs("section",{"data-testid":"cleanup-panel",style:{...P,padding:12,display:"grid",gap:10},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7},children:[e.jsx(we,{size:14}),e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:12,fontWeight:600},children:t("Storage Cleanup")}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:a?`${a.totals.eligibleCount} eligible / ${Q(a.totals.eligibleBytes)}`:t("Scanning")})]})]}),e.jsxs("div",{style:{display:"flex",gap:6},children:[e.jsxs("button",{onClick:()=>S(!0),title:t("Refresh cleanup summary"),style:{fontSize:10,color:"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px"},children:[e.jsx(ee,{size:11})," ",t("Refresh")]}),e.jsxs("button",{"data-testid":"cleanup-apply",onClick:Ee,disabled:K||!a||a.totals.eligibleCount===0,style:{fontSize:10,color:a!=null&&a.totals.eligibleCount?"#991b1b":"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px",opacity:K||!a||a.totals.eligibleCount===0?.55:1},children:[e.jsx(Ye,{size:11})," ",t(K?"Cleaning":"Clean")]})]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:8},children:[e.jsx(k,{label:t("Stopped sessions"),value:a?String(a.sessions.eligibleCount):"-",detail:a?t("{n} total",String(a.sessions.totalCount)):""}),e.jsx(k,{label:t("Temp log dirs"),value:a?String(a.tempLogs.eligibleCount):"-",detail:a?t("{n} total",String(a.tempLogs.totalCount)):""}),e.jsx(k,{label:t("Recoverable"),value:a?Q(a.totals.eligibleBytes):"-",detail:a!=null&&a.applied?t("last cleanup applied"):t("preview")})]}),(ye=a==null?void 0:a.errors)!=null&&ye.length?e.jsxs("div",{style:{fontSize:10,color:"#991b1b"},children:[a.errors.length," cleanup error(s)"]}):null]}),e.jsxs("section",{children:[e.jsx("div",{style:{fontSize:10,fontWeight:600,color:"var(--muted)",textTransform:"uppercase",marginBottom:6},children:t("Running Terminals")}),h.length===0?e.jsxs("div",{"data-testid":"agents-empty",style:{padding:28,color:"var(--muted)",textAlign:"center",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"},children:[e.jsx(je,{size:26,style:{marginBottom:8,opacity:.35}}),e.jsx("p",{style:{marginBottom:3,fontWeight:500},children:t("No running agent terminal.")}),e.jsx("p",{children:t("Use the plus box to start a detected CLI.")})]}):e.jsx("div",{"data-testid":"agents-list",style:{display:"grid",gap:5},children:h.map(s=>e.jsx(ke,{session:s,onSelectSession:n,onStop:he,stopping:Pe.has(s.sessionId)},s.sessionId))})]}),B&&f.length>0&&e.jsxs("section",{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,marginBottom:6},children:[e.jsx("div",{style:{fontSize:10,fontWeight:600,color:"var(--muted)",textTransform:"uppercase"},children:t("Stopped Sessions ({n})",String(f.length))}),f.length>F&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:5,fontSize:10,color:"var(--muted)"},children:[e.jsx("button",{onClick:()=>M(s=>Math.max(0,s-1)),disabled:T===0,style:{border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"2px 7px",opacity:T===0?.45:1},children:t("Prev")}),e.jsxs("span",{children:[T+1," / ",N]}),e.jsx("button",{onClick:()=>M(s=>Math.min(N-1,s+1)),disabled:T>=N-1,style:{border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"2px 7px",opacity:T>=N-1?.45:1},children:t("Next")})]})]}),e.jsx("div",{style:{display:"grid",gap:5},children:$e.map(s=>e.jsx(ke,{session:s,onSelectSession:n,onStop:he,muted:!0},s.sessionId))})]})]})}function k({label:n,value:d,detail:g}){return e.jsxs("div",{style:{borderLeft:"2px solid var(--border)",padding:"2px 8px",minWidth:0},children:[e.jsx("div",{style:{fontSize:10,color:"var(--muted)",textTransform:"uppercase",fontWeight:600},children:n}),e.jsx("div",{style:{fontSize:16,fontWeight:700,lineHeight:1.2,marginTop:3},children:d}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:g})]})}function ke({session:n,onSelectSession:d,onStop:g,muted:f=!1,stopping:I=!1}){const x=Ie(),z=n.resourceUsage||{},p=z.pid??n.pid??null,H=z.ptyProvider||n.ptyProvider||"unknown",B=z.wsClientCount??n.wsClientCount??0,V=se(n.status),T=V?Q(z.memoryBytes):"unavailable",M=V?Te(z.cpuPercent):"unavailable";return e.jsxs("div",{"data-testid":"agent-row",style:{...P,padding:9,opacity:f?.68:1},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[e.jsx("span",{style:{width:7,height:7,borderRadius:"50%",background:ze(n.status),flexShrink:0}}),e.jsx(Je,{runtime:n.runtime,size:14,style:{fontSize:12}}),e.jsx("span",{style:{fontSize:10,color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.peerId||n.sessionId})]}),e.jsxs("div",{style:{display:"flex",gap:4,flexShrink:0},children:[e.jsxs("button",{onClick:()=>d(n.sessionId),style:{fontSize:10,padding:"3px 8px",border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)",display:"flex",alignItems:"center",gap:3},children:[e.jsx(qe,{size:9})," ",x("Terminal")]}),!f&&e.jsxs("button",{onClick:()=>g(n.sessionId),disabled:I,style:{fontSize:10,padding:"3px 8px",border:"1px solid #991b1b",borderRadius:"var(--radius)",color:"#991b1b",background:"var(--bg)",display:"flex",alignItems:"center",gap:3},children:[e.jsx(He,{size:9})," ",x(I?"Stopping":"Stop")]})]})]}),e.jsxs("div",{style:{fontSize:10,color:"var(--muted)",marginTop:4},children:[[I?x("stopping"):Re(n.status),n.role,n.workflowMode||null,n.ptyProvider||null,n.taskId||null,x("{n} viewer(s)",String(n.wsClientCount??0))].filter(Boolean).join(" / "),n.model?` / ${n.model}`:"",n.resumeCommand?` / resume: ${n.resumeCommand}`:"",n.blockedReason?` / ${n.blockedReason}`:"",n.blockedHint?` / ${n.blockedHint}`:""]}),e.jsxs("div",{"data-testid":"agent-resource-usage",style:{display:"flex",flexWrap:"wrap",gap:"4px 8px",marginTop:5,fontSize:10,color:"var(--muted)"},children:[e.jsxs("span",{children:["PID ",p??"-"]}),e.jsxs("span",{children:["Memory ",T]}),e.jsxs("span",{children:["CPU ",M]}),e.jsxs("span",{children:["PTY ",H]}),e.jsx("span",{children:x("{n} viewer(s)",String(B))})]})]})}export{os as default};
|
|
7
|
+
//# sourceMappingURL=AgentsRoute-BGGs90wH.js.map
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import{r as w}from"./index-C7MZBHbT.js";import{r as Se}from"./WorkflowRoute-D-0wVDpY.js";const Re=["top","right","bottom","left"],q=Math.min,I=Math.max,vt=Math.round,at=Math.floor,z=t=>({x:t,y:t}),Ce={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t,e,n){return I(t,q(e,n))}function X(t,e){return typeof t=="function"?t(e):t}function K(t){return t.split("-")[0]}function ot(t){return t.split("-")[1]}function Bt(t){return t==="x"?"y":"x"}function Ft(t){return t==="y"?"height":"width"}function V(t){const e=t[0];return e==="t"||e==="b"?"y":"x"}function $t(t){return Bt(V(t))}function Ae(t,e,n){n===void 0&&(n=!1);const r=ot(t),o=$t(t),i=Ft(o);let s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[i]>e.floating[i]&&(s=pt(s)),[s,pt(s)]}function Ee(t){const e=pt(t);return[Dt(t),e,Dt(e)]}function Dt(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const It=["left","right"],zt=["right","left"],Oe=["top","bottom"],Pe=["bottom","top"];function Le(t,e,n){switch(t){case"top":case"bottom":return n?e?zt:It:e?It:zt;case"left":case"right":return e?Oe:Pe;default:return[]}}function Me(t,e,n,r){const o=ot(t);let i=Le(K(t),n==="start",r);return o&&(i=i.map(s=>s+"-"+o),e&&(i=i.concat(i.map(Dt)))),i}function pt(t){const e=K(t);return Ce[e]+t.slice(e.length)}function Te(t){var e,n,r,o;return{top:(e=t.top)!=null?e:0,right:(n=t.right)!=null?n:0,bottom:(r=t.bottom)!=null?r:0,left:(o=t.left)!=null?o:0}}function oe(t){return typeof t!="number"?Te(t):{top:t,right:t,bottom:t,left:t}}function wt(t){const{x:e,y:n,width:r,height:o}=t;return{width:r,height:o,top:n,left:e,right:e+r,bottom:n+o,x:e,y:n}}function Xt(t,e,n){let{reference:r,floating:o}=t;const i=V(e),s=$t(e),c=Ft(s),l=K(e),d=i==="y",m=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,h=r[c]/2-o[c]/2;let f;switch(l){case"top":f={x:m,y:r.y-o.height};break;case"bottom":f={x:m,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:u};break;case"left":f={x:r.x-o.width,y:u};break;default:f={x:r.x,y:r.y}}const g=ot(e);return g&&(f[s]+=h*(g==="end"?1:-1)*(n&&d?-1:1)),f}async function ke(t,e){var n;e===void 0&&(e={});const{x:r,y:o,platform:i,rects:s,elements:c,strategy:l}=t,{boundary:d="clippingAncestors",rootBoundary:m="viewport",elementContext:u="floating",altBoundary:h=!1,padding:f=0}=X(e,t),g=oe(f),v=c[h?u==="floating"?"reference":"floating":u],p=wt(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(v)))==null||n?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(c.floating)),boundary:d,rootBoundary:m,strategy:l})),y=u==="floating"?{x:r,y:o,width:s.floating.width,height:s.floating.height}:s.reference,S=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c.floating)),x=await(i.isElement==null?void 0:i.isElement(S))&&await(i.getScale==null?void 0:i.getScale(S))||{x:1,y:1},R=wt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:y,offsetParent:S,strategy:l}):y);return{top:(p.top-R.top+g.top)/x.y,bottom:(R.bottom-p.bottom+g.bottom)/x.y,left:(p.left-R.left+g.left)/x.x,right:(R.right-p.right+g.right)/x.x}}const De=50,We=async(t,e,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,c=s.detectOverflow?s:{...s,detectOverflow:ke},l=await(s.isRTL==null?void 0:s.isRTL(e));let d=await s.getElementRects({reference:t,floating:e,strategy:o}),{x:m,y:u}=Xt(d,r,l),h=r,f=0;const g={};for(let a=0;a<i.length;a++){const v=i[a];if(!v)continue;const{name:p,fn:y}=v,{x:S,y:x,data:R,reset:b}=await y({x:m,y:u,initialPlacement:r,placement:h,strategy:o,middlewareData:g,rects:d,platform:c,elements:{reference:t,floating:e}});m=S??m,u=x??u,g[p]={...g[p],...R},b&&f<De&&(f++,typeof b=="object"&&(b.placement&&(h=b.placement),b.rects&&(d=b.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:o}):b.rects),{x:m,y:u}=Xt(d,h,l)),a=-1)}return{x:m,y:u,placement:h,strategy:o,middlewareData:g}},Ne=t=>({name:"arrow",options:t,async fn(e){const{x:n,y:r,placement:o,rects:i,platform:s,elements:c,middlewareData:l}=e,{element:d,padding:m=0}=X(t,e)||{};if(d==null)return{};const u=oe(m),h={x:n,y:r},f=$t(o),g=Ft(f),a=await s.getDimensions(d),v=f==="y",p=v?"top":"left",y=v?"bottom":"right",S=v?"clientHeight":"clientWidth",x=i.reference[g]+i.reference[f]-h[f]-i.floating[g],R=h[f]-i.reference[f],b=await(s.getOffsetParent==null?void 0:s.getOffsetParent(d));let C=b?b[S]:0;(!C||!await(s.isElement==null?void 0:s.isElement(b)))&&(C=c.floating[S]||i.floating[g]);const E=x/2-R/2,L=C/2-a[g]/2-1,O=q(u[p],L),k=q(u[y],L),N=C-a[g]-k,M=C/2-a[g]/2+E,T=re(O,M,N),B=!l.arrow&&ot(o)!=null&&M!==T&&i.reference[g]/2-(M<O?O:k)-a[g]/2<0,P=B?M<O?M-O:M-N:0;return{[f]:h[f]+P,data:{[f]:T,centerOffset:M-T-P,...B&&{alignmentOffset:P}},reset:B}}}),Be=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,r;const{placement:o,middlewareData:i,rects:s,initialPlacement:c,platform:l,elements:d}=e,{mainAxis:m=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:a=!0,...v}=X(t,e);if((n=i.arrow)!=null&&n.alignmentOffset)return{};const p=K(o),y=V(c),S=K(c)===c,x=await(l.isRTL==null?void 0:l.isRTL(d.floating)),R=h||(S||!a?[pt(c)]:Ee(c)),b=g!=="none";!h&&b&&R.push(...Me(c,a,g,x));const C=[c,...R],E=await l.detectOverflow(e,v),L=[];let O=((r=i.flip)==null?void 0:r.overflows)||[];if(m&&L.push(E[p]),u){const T=Ae(o,s,x);L.push(E[T[0]],E[T[1]])}if(O=[...O,{placement:o,overflows:L}],!L.every(T=>T<=0)){var k,N;const T=(((k=i.flip)==null?void 0:k.index)||0)+1,B=C[T];if(B&&(!(u==="alignment"?y!==V(B):!1)||O.every(A=>V(A.placement)===y?A.overflows[0]>0:!0)))return{data:{index:T,overflows:O},reset:{placement:B}};let P=(N=O.filter(F=>F.overflows[0]<=0).sort((F,A)=>F.overflows[1]-A.overflows[1])[0])==null?void 0:N.placement;if(!P)switch(f){case"bestFit":{var M;const F=(M=O.filter(A=>{if(b){const W=V(A.placement);return W===y||W==="y"}return!0}).map(A=>[A.placement,A.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((A,W)=>A[1]-W[1])[0])==null?void 0:M[0];F&&(P=F);break}case"initialPlacement":P=c;break}if(o!==P)return{reset:{placement:P}}}return{}}}};function jt(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function Yt(t){return Re.some(e=>t[e]>=0)}const Fe=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n,platform:r}=e,{strategy:o="referenceHidden",...i}=X(t,e);switch(o){case"referenceHidden":{const s=await r.detectOverflow(e,{...i,elementContext:"reference"}),c=jt(s,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:Yt(c)}}}case"escaped":{const s=await r.detectOverflow(e,{...i,altBoundary:!0}),c=jt(s,n.floating);return{data:{escapedOffsets:c,escaped:Yt(c)}}}default:return{}}}}},ie=new Set(["left","top"]);async function $e(t,e){const{placement:n,platform:r,elements:o}=t,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),s=K(n),c=ot(n),l=V(n)==="y",d=ie.has(s)?-1:1,m=i&&l?-1:1,u=X(e,t);let{mainAxis:h,crossAxis:f,alignmentAxis:g}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return c&&typeof g=="number"&&(f=c==="end"?g*-1:g),l?{x:f*m,y:h*d}:{x:h*d,y:f*m}}const Ve=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,r;const{x:o,y:i,placement:s,middlewareData:c}=e,l=await $e(e,t);return s===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:i+l.y,data:{...l,placement:s}}}}},_e=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:r,placement:o,platform:i}=e,{mainAxis:s=!0,crossAxis:c=!1,limiter:l={fn:y=>{let{x:S,y:x}=y;return{x:S,y:x}}},...d}=X(t,e),m={x:n,y:r},u=await i.detectOverflow(e,d),h=V(o),f=Bt(h);let g=m[f],a=m[h];const v=(y,S)=>re(S+u[y==="y"?"top":"left"],S,S-u[y==="y"?"bottom":"right"]);s&&(g=v(f,g)),c&&(a=v(h,a));const p=l.fn({...e,[f]:g,[h]:a});return{...p,data:{x:p.x-n,y:p.y-r,enabled:{[f]:s,[h]:c}}}}}},He=function(t){return t===void 0&&(t={}),{options:t,fn(e){var n,r;const{x:o,y:i,placement:s,rects:c,middlewareData:l}=e,{offset:d=0,mainAxis:m=!0,crossAxis:u=!0}=X(t,e),h={x:o,y:i},f=V(s),g=Bt(f);let a=h[g],v=h[f];const p=X(d,e),y=typeof p=="number"?{mainAxis:p,crossAxis:0}:{mainAxis:(n=p.mainAxis)!=null?n:0,crossAxis:(r=p.crossAxis)!=null?r:0};if(m){const R=g==="y"?"height":"width",b=c.reference[g]-c.floating[R]+y.mainAxis,C=c.reference[g]+c.reference[R]-y.mainAxis;a<b?a=b:a>C&&(a=C)}if(u){var S,x;const R=g==="y"?"width":"height",b=ie.has(K(s)),C=c.reference[f]-c.floating[R]+(b&&((S=l.offset)==null?void 0:S[f])||0)+(b?0:y.crossAxis),E=c.reference[f]+c.reference[R]+(b?0:((x=l.offset)==null?void 0:x[f])||0)-(b?y.crossAxis:0);v<C?v=C:v>E&&(v=E)}return{[g]:a,[f]:v}}}},Ie=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){const{placement:n,rects:r,platform:o,elements:i}=e,{apply:s=()=>{},...c}=X(t,e),l=await o.detectOverflow(e,c),d=K(n),m=ot(n),u=V(n)==="y",{width:h,height:f}=r.floating;let g,a;d==="top"||d==="bottom"?(g=d,a=m===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(a=d,g=m==="end"?"top":"bottom");const v=f-l.top-l.bottom,p=h-l.left-l.right,y=q(f-l[g],v),S=q(h-l[a],p),x=e.middlewareData.shift,R=!x;let b=y,C=S;x!=null&&x.enabled.x&&(C=p),x!=null&&x.enabled.y&&(b=v),R&&!m&&(u?C=h-2*I(l.left,l.right):b=f-2*I(l.top,l.bottom)),await s({...e,availableWidth:C,availableHeight:b});const E=await o.getDimensions(i.floating);return h!==E.width||f!==E.height?{reset:{rects:!0}}:{}}}};function xt(){return typeof window<"u"}function it(t){return ce(t)?(t.nodeName||"").toLowerCase():"#document"}function D(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function j(t){var e;return(e=(ce(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function ce(t){return xt()?t instanceof Node||t instanceof D(t).Node:!1}function _(t){return xt()?t instanceof Element||t instanceof D(t).Element:!1}function U(t){return xt()?t instanceof HTMLElement||t instanceof D(t).HTMLElement:!1}function qt(t){return!xt()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof D(t).ShadowRoot}function bt(t){const{overflow:e,overflowX:n,overflowY:r,display:o}=H(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&o!=="inline"&&o!=="contents"}function ze(t){return/^(table|td|th)$/.test(it(t))}function St(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const Xe=/transform|translate|scale|rotate|perspective|filter/,je=/paint|layout|strict|content/,Z=t=>!!t&&t!=="none";let Et;function Vt(t){const e=_(t)?H(t):t;return Z(e.transform)||Z(e.translate)||Z(e.scale)||Z(e.rotate)||Z(e.perspective)||!_t()&&(Z(e.backdropFilter)||Z(e.filter))||Xe.test(e.willChange||"")||je.test(e.contain||"")}function Ye(t){let e=G(t);for(;U(e)&&!ct(e);){if(Vt(e))return e;if(St(e))return null;e=G(e)}return null}function _t(){return Et==null&&(Et=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),Et}function ct(t){return/^(html|body|#document)$/.test(it(t))}function H(t){return D(t).getComputedStyle(t)}function Rt(t){return _(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function G(t){if(it(t)==="html")return t;const e=t.assignedSlot||t.parentNode||qt(t)&&t.host||j(t);return qt(e)?e.host:e}function se(t){const e=G(t);return ct(e)?(t.ownerDocument||t).body:U(e)&&bt(e)?e:se(e)}function st(t,e,n){var r;e===void 0&&(e=[]),n===void 0&&(n=!0);const o=se(t),i=o===((r=t.ownerDocument)==null?void 0:r.body),s=D(o);if(i){const c=Wt(s);return e.concat(s,s.visualViewport||[],bt(o)?o:[],c&&n?st(c):[])}else return e.concat(o,st(o,[],n))}function Wt(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function ae(t){const e=H(t);let n=parseFloat(e.width)||0,r=parseFloat(e.height)||0;const o=U(t),i=o?t.offsetWidth:n,s=o?t.offsetHeight:r,c=vt(n)!==i||vt(r)!==s;return c&&(n=i,r=s),{width:n,height:r,$:c}}function Ht(t){return _(t)?t:t.contextElement}function nt(t){const e=Ht(t);if(!U(e))return z(1);const n=e.getBoundingClientRect(),{width:r,height:o,$:i}=ae(e);let s=(i?vt(n.width):n.width)/r,c=(i?vt(n.height):n.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!c||!Number.isFinite(c))&&(c=1),{x:s,y:c}}const qe=z(0);function le(t){const e=D(t);return!_t()||!e.visualViewport?qe:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function Ke(t,e,n){return e===void 0&&(e=!1),!!n&&e&&n===D(t)}function Q(t,e,n,r){e===void 0&&(e=!1),n===void 0&&(n=!1);const o=t.getBoundingClientRect(),i=Ht(t);let s=z(1);e&&(r?_(r)&&(s=nt(r)):s=nt(t));const c=Ke(i,n,r)?le(i):z(0);let l=(o.left+c.x)/s.x,d=(o.top+c.y)/s.y,m=o.width/s.x,u=o.height/s.y;if(i&&r){const h=D(i),f=_(r)?D(r):r;let g=h,a=Wt(g);for(;a&&f!==g;){const v=nt(a),p=a.getBoundingClientRect(),y=H(a),S=p.left+(a.clientLeft+parseFloat(y.paddingLeft))*v.x,x=p.top+(a.clientTop+parseFloat(y.paddingTop))*v.y;l*=v.x,d*=v.y,m*=v.x,u*=v.y,l+=S,d+=x,g=D(a),a=Wt(g)}}return wt({width:m,height:u,x:l,y:d})}function Ct(t,e){const n=Rt(t).scrollLeft;return e?e.left+n:Q(j(t)).left+n}function fe(t,e){const n=t.getBoundingClientRect(),r=n.left+e.scrollLeft-Ct(t,n),o=n.top+e.scrollTop;return{x:r,y:o}}function Ue(t){let{elements:e,rect:n,offsetParent:r,strategy:o}=t;const i=o==="fixed",s=j(r),c=e?St(e.floating):!1;if(r===s||c&&i)return n;let l={scrollLeft:0,scrollTop:0},d=z(1);const m=z(0),u=U(r);if((u||!i)&&((it(r)!=="body"||bt(s))&&(l=Rt(r)),u)){const f=Q(r);d=nt(r),m.x=f.x+r.clientLeft,m.y=f.y+r.clientTop}const h=s&&!u&&!i?fe(s,l):z(0);return{width:n.width*d.x,height:n.height*d.y,x:n.x*d.x-l.scrollLeft*d.x+m.x+h.x,y:n.y*d.y-l.scrollTop*d.y+m.y+h.y}}function Ze(t){return t.getClientRects?Array.from(t.getClientRects()):[]}function Ge(t){const e=Rt(t),n=t.ownerDocument.body,r=I(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),o=I(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let i=-e.scrollLeft+Ct(t);const s=-e.scrollTop;return H(n).direction==="rtl"&&(i+=I(t.clientWidth,n.clientWidth)-r),{width:r,height:o,x:i,y:s}}const Qe=25;function Je(t,e,n){n===void 0&&(n="viewport");const r=n==="layoutViewport",o=D(t),i=j(t),s=o.visualViewport;let c=i.clientWidth,l=i.clientHeight,d=0,m=0;if(s){const h=!_t()||e==="fixed";r?h||(d=-s.offsetLeft,m=-s.offsetTop):(c=s.width,l=s.height,h&&(d=s.offsetLeft,m=s.offsetTop))}if(Ct(i)<=0){const h=i.ownerDocument,f=h.body,g=getComputedStyle(f),a=h.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,v=Math.abs(i.clientWidth-f.clientWidth-a),p=getComputedStyle(i).scrollbarGutter==="stable both-edges"?v/2:v;p<=Qe&&(c-=p)}return{width:c,height:l,x:d,y:m}}function tn(t,e){const n=Q(t,!0,e==="fixed"),r=n.top+t.clientTop,o=n.left+t.clientLeft,i=nt(t),s=t.clientWidth*i.x,c=t.clientHeight*i.y,l=o*i.x,d=r*i.y;return{width:s,height:c,x:l,y:d}}function Kt(t,e,n){let r;if(e==="viewport"||e==="layoutViewport")r=Je(t,n,e);else if(e==="document")r=Ge(j(t));else if(_(e))r=tn(e,n);else{const o=le(t);r={x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height}}return wt(r)}function en(t,e){const n=e.get(t);if(n)return n;let r=st(t,[],!1).filter(c=>_(c)&&it(c)!=="body"),o=null;const i=H(t).position==="fixed";let s=i?G(t):t;for(;_(s)&&!ct(s);){const c=H(s),l=Vt(s),d=o?o.position:i?"fixed":"";!l&&(d==="fixed"||d==="absolute"&&c.position==="static")?r=r.filter(u=>u!==s):o=c,s=G(s)}return e.set(t,r),r}function nn(t){let{element:e,boundary:n,rootBoundary:r,strategy:o}=t;const s=[...n==="clippingAncestors"?St(e)?[]:en(e,this._c):[].concat(n),r],c=Kt(e,s[0],o);let l=c.top,d=c.right,m=c.bottom,u=c.left;for(let h=1;h<s.length;h++){const f=Kt(e,s[h],o);l=I(f.top,l),d=q(f.right,d),m=q(f.bottom,m),u=I(f.left,u)}return{width:d-u,height:m-l,x:u,y:l}}function rn(t){const{width:e,height:n}=ae(t);return{width:e,height:n}}function on(t,e,n){const r=U(e),o=j(e),i=n==="fixed",s=Q(t,!0,i,e);let c={scrollLeft:0,scrollTop:0};const l=z(0);if((r||!i)&&((it(e)!=="body"||bt(o))&&(c=Rt(e)),r)){const h=Q(e,!0,i,e);l.x=h.x+e.clientLeft,l.y=h.y+e.clientTop}!r&&o&&(l.x=Ct(o));const d=o&&!r&&!i?fe(o,c):z(0),m=s.left+c.scrollLeft-l.x-d.x,u=s.top+c.scrollTop-l.y-d.y;return{x:m,y:u,width:s.width,height:s.height}}function Ot(t){return H(t).position==="static"}function Ut(t,e){if(!U(t)||H(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return j(t)===n&&(n=n.ownerDocument.body),n}function ue(t,e){const n=D(t);if(St(t))return n;if(!U(t)){let o=G(t);for(;o&&!ct(o);){if(_(o)&&!Ot(o))return o;o=G(o)}return n}let r=Ut(t,e);for(;r&&ze(r)&&Ot(r);)r=Ut(r,e);return r&&ct(r)&&Ot(r)&&!Vt(r)?n:r||Ye(t)||n}const cn=async function(t){const e=this.getOffsetParent||ue,n=this.getDimensions,r=await n(t.floating);return{reference:on(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function sn(t){return H(t).direction==="rtl"}const an={convertOffsetParentRelativeRectToViewportRelativeRect:Ue,getDocumentElement:j,getClippingRect:nn,getOffsetParent:ue,getElementRects:cn,getClientRects:Ze,getDimensions:rn,getScale:nt,isElement:_,isRTL:sn};function de(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function ln(t,e,n){let r=null,o;const i=j(t);function s(){var m;clearTimeout(o),(m=r)==null||m.disconnect(),r=null}function c(m,u){m===void 0&&(m=!1),u===void 0&&(u=1),s();const h=t.getBoundingClientRect(),{left:f,top:g,width:a,height:v}=h;if(m||e(),!a||!v)return;const p=at(g),y=at(i.clientWidth-(f+a)),S=at(i.clientHeight-(g+v)),x=at(f),b={rootMargin:-p+"px "+-y+"px "+-S+"px "+-x+"px",threshold:I(0,q(1,u))||1};let C=!0;function E(L){const O=L[0].intersectionRatio;if(!de(h,t.getBoundingClientRect()))return c();if(O!==u){if(!C)return c();O?c(!1,O):o=setTimeout(()=>{c(!1,1e-7)},1e3)}C=!1}try{r=new IntersectionObserver(E,{...b,root:i.ownerDocument})}catch{r=new IntersectionObserver(E,b)}r.observe(t)}const l=D(t),d=()=>c(n);return l.addEventListener("resize",d),c(!0),()=>{l.removeEventListener("resize",d),s()}}function ar(t,e,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,d=Ht(t),m=o||i?[...d?st(d):[],...e?st(e):[]]:[];m.forEach(p=>{o&&p.addEventListener("scroll",n),i&&p.addEventListener("resize",n)});const u=d&&c?ln(d,n,i):null;let h=-1,f=null;s&&(f=new ResizeObserver(p=>{let[y]=p;y&&y.target===d&&f&&e&&(f.unobserve(e),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var S;(S=f)==null||S.observe(e)})),n()}),d&&!l&&f.observe(d),e&&f.observe(e));let g,a=l?Q(t):null;l&&v();function v(){const p=Q(t);a&&!de(a,p)&&n(),a=p,g=requestAnimationFrame(v)}return n(),()=>{var p;m.forEach(y=>{o&&y.removeEventListener("scroll",n),i&&y.removeEventListener("resize",n)}),u==null||u(),(p=f)==null||p.disconnect(),f=null,l&&cancelAnimationFrame(g)}}const fn=Ve,un=_e,dn=Be,hn=Ie,mn=Fe,Zt=Ne,gn=He,vn=(t,e,n)=>{const r=new Map,o=n??{},i={...an,...o.platform,_c:r};return We(t,e,{...o,platform:i})};var pn=typeof document<"u",wn=function(){},ht=pn?w.useLayoutEffect:wn;function yt(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;if(typeof t=="function"&&t.toString()===e.toString())return!0;let n,r,o;if(t&&e&&typeof t=="object"){if(Array.isArray(t)){if(n=t.length,n!==e.length)return!1;for(r=n;r--!==0;)if(!yt(t[r],e[r]))return!1;return!0}if(o=Object.keys(t),n=o.length,n!==Object.keys(e).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(e,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&t.$$typeof)&&!yt(t[i],e[i]))return!1}return!0}return t!==t&&e!==e}function he(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function Gt(t,e){const n=he(t);return Math.round(e*n)/n}function Pt(t){const e=w.useRef(t);return ht(()=>{e.current=t}),e}function lr(t){t===void 0&&(t={});const{placement:e="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:s}={},transform:c=!0,whileElementsMounted:l,open:d}=t,[m,u]=w.useState({x:0,y:0,strategy:n,placement:e,middlewareData:{},isPositioned:!1}),[h,f]=w.useState(r);yt(h,r)||f(r);const[g,a]=w.useState(null),[v,p]=w.useState(null),y=w.useCallback(A=>{A!==b.current&&(b.current=A,a(A))},[]),S=w.useCallback(A=>{A!==C.current&&(C.current=A,p(A))},[]),x=i||g,R=s||v,b=w.useRef(null),C=w.useRef(null),E=w.useRef(m),L=l!=null,O=Pt(l),k=Pt(o),N=Pt(d),M=w.useCallback(()=>{if(!b.current||!C.current)return;const A={placement:e,strategy:n,middleware:h};k.current&&(A.platform=k.current),vn(b.current,C.current,A).then(W=>{const Y={...W,isPositioned:N.current!==!1};T.current&&!yt(E.current,Y)&&(E.current=Y,Se.flushSync(()=>{u(Y)}))})},[h,e,n,k,N]);ht(()=>{d===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,u(A=>({...A,isPositioned:!1})))},[d]);const T=w.useRef(!1);ht(()=>(T.current=!0,()=>{T.current=!1}),[]),ht(()=>{if(x&&(b.current=x),R&&(C.current=R),x&&R){if(O.current)return O.current(x,R,M);M()}},[x,R,M,O,L]);const B=w.useMemo(()=>({reference:b,floating:C,setReference:y,setFloating:S}),[y,S]),P=w.useMemo(()=>({reference:x,floating:R}),[x,R]),F=w.useMemo(()=>{const A={position:n,left:0,top:0};if(!P.floating)return A;const W=Gt(P.floating,m.x),Y=Gt(P.floating,m.y);return c?{...A,transform:"translate("+W+"px, "+Y+"px)",...he(P.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:Y}},[n,c,P.floating,m.x,m.y]);return w.useMemo(()=>({...m,update:M,refs:B,elements:P,floatingStyles:F}),[m,M,B,P,F])}const yn=t=>{function e(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:t,fn(n){const{element:r,padding:o}=typeof t=="function"?t(n):t;return r&&e(r)?r.current!=null?Zt({element:r.current,padding:o}).fn(n):{}:r?Zt({element:r,padding:o}).fn(n):{}}}},fr=(t,e)=>{const n=fn(t);return{name:n.name,fn:n.fn,options:[t,e]}},ur=(t,e)=>{const n=un(t);return{name:n.name,fn:n.fn,options:[t,e]}},dr=(t,e)=>({fn:gn(t).fn,options:[t,e]}),hr=(t,e)=>{const n=dn(t);return{name:n.name,fn:n.fn,options:[t,e]}},mr=(t,e)=>{const n=hn(t);return{name:n.name,fn:n.fn,options:[t,e]}},gr=(t,e)=>{const n=mn(t);return{name:n.name,fn:n.fn,options:[t,e]}},vr=(t,e)=>{const n=yn(t);return{name:n.name,fn:n.fn,options:[t,e]}};var xn=function(t){if(typeof document>"u")return null;var e=Array.isArray(t)?t[0]:t;return e.ownerDocument.body},J=new WeakMap,lt=new WeakMap,ft={},Lt=0,me=function(t){return t&&(t.host||me(t.parentNode))},bn=function(t,e){return e.map(function(n){if(t.contains(n))return n;var r=me(n);return r&&t.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",t,". Doing nothing"),null)}).filter(function(n){return!!n})},Sn=function(t,e,n,r){var o=bn(e,Array.isArray(t)?t:[t]);ft[n]||(ft[n]=new WeakMap);var i=ft[n],s=[],c=new Set,l=new Set(o),d=function(u){!u||c.has(u)||(c.add(u),d(u.parentNode))};o.forEach(d);var m=function(u){!u||l.has(u)||Array.prototype.forEach.call(u.children,function(h){if(c.has(h))m(h);else try{var f=h.getAttribute(r),g=f!==null&&f!=="false",a=(J.get(h)||0)+1,v=(i.get(h)||0)+1;J.set(h,a),i.set(h,v),s.push(h),a===1&&g&<.set(h,!0),v===1&&h.setAttribute(n,"true"),g||h.setAttribute(r,"true")}catch(p){console.error("aria-hidden: cannot operate on ",h,p)}})};return m(e),c.clear(),Lt++,function(){s.forEach(function(u){var h=J.get(u)-1,f=i.get(u)-1;J.set(u,h),i.set(u,f),h||(lt.has(u)||u.removeAttribute(r),lt.delete(u)),f||u.removeAttribute(n)}),Lt--,Lt||(J=new WeakMap,J=new WeakMap,lt=new WeakMap,ft={})}},pr=function(t,e,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(t)?t:[t]),o=xn(t);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),Sn(r,o,n,"aria-hidden")):function(){return null}},$=function(){return $=Object.assign||function(e){for(var n,r=1,o=arguments.length;r<o;r++){n=arguments[r];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},$.apply(this,arguments)};function ge(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]]);return n}function Rn(t,e,n){if(n||arguments.length===2)for(var r=0,o=e.length,i;r<o;r++)(i||!(r in e))&&(i||(i=Array.prototype.slice.call(e,0,r)),i[r]=e[r]);return t.concat(i||Array.prototype.slice.call(e))}var mt="right-scroll-bar-position",gt="width-before-scroll-bar",Cn="with-scroll-bars-hidden",An="--removed-body-scroll-bar-size";function Mt(t,e){return typeof t=="function"?t(e):t&&(t.current=e),t}function En(t,e){var n=w.useState(function(){return{value:t,callback:e,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=e,n.facade}var On=typeof window<"u"?w.useLayoutEffect:w.useEffect,Qt=new WeakMap;function Pn(t,e){var n=En(null,function(r){return t.forEach(function(o){return Mt(o,r)})});return On(function(){var r=Qt.get(n);if(r){var o=new Set(r),i=new Set(t),s=n.current;o.forEach(function(c){i.has(c)||Mt(c,null)}),i.forEach(function(c){o.has(c)||Mt(c,s)})}Qt.set(n,t)},[t]),n}function Ln(t){return t}function Mn(t,e){e===void 0&&(e=Ln);var n=[],r=!1,o={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:t},useMedium:function(i){var s=e(i,r);return n.push(s),function(){n=n.filter(function(c){return c!==s})}},assignSyncMedium:function(i){for(r=!0;n.length;){var s=n;n=[],s.forEach(i)}n={push:function(c){return i(c)},filter:function(){return n}}},assignMedium:function(i){r=!0;var s=[];if(n.length){var c=n;n=[],c.forEach(i),s=n}var l=function(){var m=s;s=[],m.forEach(i)},d=function(){return Promise.resolve().then(l)};d(),n={push:function(m){s.push(m),d()},filter:function(m){return s=s.filter(m),n}}}};return o}function Tn(t){t===void 0&&(t={});var e=Mn(null);return e.options=$({async:!0,ssr:!1},t),e}var ve=function(t){var e=t.sideCar,n=ge(t,["sideCar"]);if(!e)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=e.read();if(!r)throw new Error("Sidecar medium not found");return w.createElement(r,$({},n))};ve.isSideCarExport=!0;function kn(t,e){return t.useMedium(e),ve}var pe=Tn(),Tt=function(){},At=w.forwardRef(function(t,e){var n=w.useRef(null),r=w.useState({onScrollCapture:Tt,onWheelCapture:Tt,onTouchMoveCapture:Tt}),o=r[0],i=r[1],s=t.forwardProps,c=t.children,l=t.className,d=t.removeScrollBar,m=t.enabled,u=t.shards,h=t.sideCar,f=t.noRelative,g=t.noIsolation,a=t.inert,v=t.allowPinchZoom,p=t.as,y=p===void 0?"div":p,S=t.gapMode,x=ge(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),R=h,b=Pn([n,e]),C=$($({},x),o);return w.createElement(w.Fragment,null,m&&w.createElement(R,{sideCar:pe,removeScrollBar:d,shards:u,noRelative:f,noIsolation:g,inert:a,setCallbacks:i,allowPinchZoom:!!v,lockRef:n,gapMode:S}),s?w.cloneElement(w.Children.only(c),$($({},C),{ref:b})):w.createElement(y,$({},C,{className:l,ref:b}),c))});At.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};At.classNames={fullWidth:gt,zeroRight:mt};var Dn=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Wn(){if(!document)return null;var t=document.createElement("style");t.type="text/css";var e=Dn();return e&&t.setAttribute("nonce",e),t}function Nn(t,e){t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))}function Bn(t){var e=document.head||document.getElementsByTagName("head")[0];e.appendChild(t)}var Fn=function(){var t=0,e=null;return{add:function(n){t==0&&(e=Wn())&&(Nn(e,n),Bn(e)),t++},remove:function(){t--,!t&&e&&(e.parentNode&&e.parentNode.removeChild(e),e=null)}}},$n=function(){var t=Fn();return function(e,n){w.useEffect(function(){return t.add(e),function(){t.remove()}},[e&&n])}},we=function(){var t=$n(),e=function(n){var r=n.styles,o=n.dynamic;return t(r,o),null};return e},Vn={left:0,top:0,right:0,gap:0},kt=function(t){return parseInt(t||"",10)||0},_n=function(t){var e=window.getComputedStyle(document.body),n=e[t==="padding"?"paddingLeft":"marginLeft"],r=e[t==="padding"?"paddingTop":"marginTop"],o=e[t==="padding"?"paddingRight":"marginRight"];return[kt(n),kt(r),kt(o)]},Hn=function(t){if(t===void 0&&(t="margin"),typeof window>"u")return Vn;var e=_n(t),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,r-n+e[2]-e[0])}},In=we(),rt="data-scroll-locked",zn=function(t,e,n,r){var o=t.left,i=t.top,s=t.right,c=t.gap;return n===void 0&&(n="margin"),`
|
|
2
|
+
.`.concat(Cn,` {
|
|
3
|
+
overflow: hidden `).concat(r,`;
|
|
4
|
+
padding-right: `).concat(c,"px ").concat(r,`;
|
|
5
|
+
}
|
|
6
|
+
body[`).concat(rt,`] {
|
|
7
|
+
overflow: hidden `).concat(r,`;
|
|
8
|
+
overscroll-behavior: contain;
|
|
9
|
+
`).concat([e&&"position: relative ".concat(r,";"),n==="margin"&&`
|
|
10
|
+
padding-left: `.concat(o,`px;
|
|
11
|
+
padding-top: `).concat(i,`px;
|
|
12
|
+
padding-right: `).concat(s,`px;
|
|
13
|
+
margin-left:0;
|
|
14
|
+
margin-top:0;
|
|
15
|
+
margin-right: `).concat(c,"px ").concat(r,`;
|
|
16
|
+
`),n==="padding"&&"padding-right: ".concat(c,"px ").concat(r,";")].filter(Boolean).join(""),`
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.`).concat(mt,` {
|
|
20
|
+
right: `).concat(c,"px ").concat(r,`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.`).concat(gt,` {
|
|
24
|
+
margin-right: `).concat(c,"px ").concat(r,`;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.`).concat(mt," .").concat(mt,` {
|
|
28
|
+
right: 0 `).concat(r,`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.`).concat(gt," .").concat(gt,` {
|
|
32
|
+
margin-right: 0 `).concat(r,`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
body[`).concat(rt,`] {
|
|
36
|
+
`).concat(An,": ").concat(c,`px;
|
|
37
|
+
}
|
|
38
|
+
`)},Jt=function(){var t=parseInt(document.body.getAttribute(rt)||"0",10);return isFinite(t)?t:0},Xn=function(){w.useEffect(function(){return document.body.setAttribute(rt,(Jt()+1).toString()),function(){var t=Jt()-1;t<=0?document.body.removeAttribute(rt):document.body.setAttribute(rt,t.toString())}},[])},jn=function(t){var e=t.noRelative,n=t.noImportant,r=t.gapMode,o=r===void 0?"margin":r;Xn();var i=w.useMemo(function(){return Hn(o)},[o]);return w.createElement(In,{styles:zn(i,!e,o,n?"":"!important")})},Nt=!1;if(typeof window<"u")try{var ut=Object.defineProperty({},"passive",{get:function(){return Nt=!0,!0}});window.addEventListener("test",ut,ut),window.removeEventListener("test",ut,ut)}catch{Nt=!1}var tt=Nt?{passive:!1}:!1,Yn=function(t){return t.tagName==="TEXTAREA"},ye=function(t,e){if(!(t instanceof Element))return!1;var n=window.getComputedStyle(t);return n[e]!=="hidden"&&!(n.overflowY===n.overflowX&&!Yn(t)&&n[e]==="visible")},qn=function(t){return ye(t,"overflowY")},Kn=function(t){return ye(t,"overflowX")},te=function(t,e){var n=e.ownerDocument,r=e;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=xe(t,r);if(o){var i=be(t,r),s=i[1],c=i[2];if(s>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Un=function(t){var e=t.scrollTop,n=t.scrollHeight,r=t.clientHeight;return[e,n,r]},Zn=function(t){var e=t.scrollLeft,n=t.scrollWidth,r=t.clientWidth;return[e,n,r]},xe=function(t,e){return t==="v"?qn(e):Kn(e)},be=function(t,e){return t==="v"?Un(e):Zn(e)},Gn=function(t,e){return t==="h"&&e==="rtl"?-1:1},Qn=function(t,e,n,r,o){var i=Gn(t,window.getComputedStyle(e).direction),s=i*r,c=n.target,l=e.contains(c),d=!1,m=s>0,u=0,h=0;do{if(!c)break;var f=be(t,c),g=f[0],a=f[1],v=f[2],p=a-v-i*g;(g||p)&&xe(t,c)&&(u+=p,h+=g);var y=c.parentNode;c=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!l&&c!==document.body||l&&(e.contains(c)||e===c));return(m&&Math.abs(u)<1||!m&&Math.abs(h)<1)&&(d=!0),d},dt=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},ee=function(t){return[t.deltaX,t.deltaY]},ne=function(t){return t&&"current"in t?t.current:t},Jn=function(t,e){return t[0]===e[0]&&t[1]===e[1]},tr=function(t){return`
|
|
39
|
+
.block-interactivity-`.concat(t,` {pointer-events: none;}
|
|
40
|
+
.allow-interactivity-`).concat(t,` {pointer-events: all;}
|
|
41
|
+
`)},er=0,et=[];function nr(t){var e=w.useRef([]),n=w.useRef([0,0]),r=w.useRef(),o=w.useState(er++)[0],i=w.useState(we)[0],s=w.useRef(t);w.useEffect(function(){s.current=t},[t]),w.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(o));var a=Rn([t.lockRef.current],(t.shards||[]).map(ne),!0).filter(Boolean);return a.forEach(function(v){return v.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),a.forEach(function(v){return v.classList.remove("allow-interactivity-".concat(o))})}}},[t.inert,t.lockRef.current,t.shards]);var c=w.useCallback(function(a,v){if("touches"in a&&a.touches.length===2||a.type==="wheel"&&a.ctrlKey)return!s.current.allowPinchZoom;var p=dt(a),y=n.current,S="deltaX"in a?a.deltaX:y[0]-p[0],x="deltaY"in a?a.deltaY:y[1]-p[1],R,b=a.target,C=Math.abs(S)>Math.abs(x)?"h":"v";if("touches"in a&&C==="h"&&b.type==="range")return!1;var E=window.getSelection(),L=E&&E.anchorNode,O=L?L===b||L.contains(b):!1;if(O)return!1;var k=te(C,b);if(!k)return!0;if(k?R=C:(R=C==="v"?"h":"v",k=te(C,b)),!k)return!1;if(!r.current&&"changedTouches"in a&&(S||x)&&(r.current=R),!R)return!0;var N=r.current||R;return Qn(N,v,a,N==="h"?S:x)},[]),l=w.useCallback(function(a){var v=a;if(!(!et.length||et[et.length-1]!==i)){var p="deltaY"in v?ee(v):dt(v),y=e.current.filter(function(R){return R.name===v.type&&(R.target===v.target||v.target===R.shadowParent)&&Jn(R.delta,p)})[0];if(y&&y.should){v.cancelable&&v.preventDefault();return}if(!y){var S=(s.current.shards||[]).map(ne).filter(Boolean).filter(function(R){return R.contains(v.target)}),x=S.length>0?c(v,S[0]):!s.current.noIsolation;x&&v.cancelable&&v.preventDefault()}}},[]),d=w.useCallback(function(a,v,p,y){var S={name:a,delta:v,target:p,should:y,shadowParent:rr(p)};e.current.push(S),setTimeout(function(){e.current=e.current.filter(function(x){return x!==S})},1)},[]),m=w.useCallback(function(a){n.current=dt(a),r.current=void 0},[]),u=w.useCallback(function(a){d(a.type,ee(a),a.target,c(a,t.lockRef.current))},[]),h=w.useCallback(function(a){d(a.type,dt(a),a.target,c(a,t.lockRef.current))},[]);w.useEffect(function(){return et.push(i),t.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:h}),document.addEventListener("wheel",l,tt),document.addEventListener("touchmove",l,tt),document.addEventListener("touchstart",m,tt),function(){et=et.filter(function(a){return a!==i}),document.removeEventListener("wheel",l,tt),document.removeEventListener("touchmove",l,tt),document.removeEventListener("touchstart",m,tt)}},[]);var f=t.removeScrollBar,g=t.inert;return w.createElement(w.Fragment,null,g?w.createElement(i,{styles:tr(o)}):null,f?w.createElement(jn,{noRelative:t.noRelative,gapMode:t.gapMode}):null)}function rr(t){for(var e=null;t!==null;)t instanceof ShadowRoot&&(e=t.host,t=t.host),t=t.parentNode;return e}const or=kn(pe,nr);var ir=w.forwardRef(function(t,e){return w.createElement(At,$({},t,{ref:e,sideCar:or}))});ir.classNames=At.classNames;export{ir as R,$ as _,mr as a,vr as b,ar as c,pr as d,hr as f,gr as h,dr as l,fr as o,ur as s,lr as u};
|
|
42
|
+
//# sourceMappingURL=Combination-DhBLEmof.js.map
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as S,r as a,j as e,L as w,G as z,i as I,a as R,B as C}from"./index-C7MZBHbT.js";import{R as W}from"./refresh-cw-CbFd7guV.js";import{T}from"./terminal-DEby5Y_P.js";import{S as B}from"./shield-check-BVbJ8T_N.js";function k(r){return r==="controller"?"#111111":r==="runtime"?"#1e40af":r==="review"||r==="validation"?"#166534":r==="implementer"?"#7c2d12":"#6b7280"}function v({kind:r}){return r==="runtime"?e.jsx(T,{size:14}):r==="validation"||r==="review"?e.jsx(B,{size:14}):e.jsx(C,{size:14})}function A(){const r=S(),[i,h]=a.useState(null),[n,p]=a.useState("ceo"),[y,j]=a.useState(!0),[d,f]=a.useState(null),x=async()=>{try{const t=await R("/api/roles",{ttlMs:3e4});h(t),p(l=>l&&t.agents.some(s=>s.agentId===l)?l:t.rootAgentId),f(null)}catch(t){f((t==null?void 0:t.message)||r("Failed to load roles"))}finally{j(!1)}};a.useEffect(()=>{x()},[]);const b=a.useMemo(()=>{const t=new Map;for(const l of(i==null?void 0:i.agents)||[]){const s=t.get(l.level)||[];s.push(l),t.set(l.level,s)}return[...t.entries()].sort(([l],[s])=>l-s)},[i]),o=(i==null?void 0:i.agents.find(t=>t.agentId===n))||null,m=(i==null?void 0:i.edges.filter(t=>t.to===n))||[],g=(i==null?void 0:i.edges.filter(t=>t.from===n))||[];return y?e.jsx(w,{label:r("Loading roles")}):i?e.jsxs("div",{style:{display:"grid",gap:12},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},children:[e.jsxs("h2",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",margin:0,display:"flex",alignItems:"center",gap:5},children:[e.jsx(z,{size:14})," ",r("Roles")]}),e.jsxs("button",{onClick:()=>{I("/api/roles"),x()},style:{fontSize:10,color:"var(--muted)",display:"flex",alignItems:"center",gap:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"4px 8px"},children:[e.jsx(W,{size:11})," ",r("Refresh")]})]}),d&&e.jsx("div",{style:{fontSize:11,color:"#991b1b"},children:d}),e.jsxs("section",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) minmax(240px, 320px)",gap:12,alignItems:"start"},children:[e.jsx("div",{style:{display:"grid",gap:10},children:b.map(([t,l])=>e.jsxs("div",{style:{display:"grid",gap:6},children:[e.jsx("div",{style:{fontSize:10,color:"var(--muted)",textTransform:"uppercase",fontWeight:700},children:r(t===0?"Leader":"Role Layer")}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:6},children:l.map(s=>{const u=n===s.agentId,c=k(s.kind);return e.jsxs("button",{onClick:()=>p(s.agentId),style:{border:`1px solid ${u?c:"var(--border)"}`,borderLeft:`3px solid ${c}`,borderRadius:"var(--radius)",padding:9,background:u?"var(--surface)":"var(--bg)",textAlign:"left",minHeight:82,display:"grid",alignContent:"start",gap:4},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[e.jsx(v,{kind:s.kind}),e.jsx("span",{style:{fontSize:12,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.role})]}),e.jsx("div",{style:{fontSize:10,color:c},children:s.kind}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(s.skills||[]).slice(0,3).join(" / ")||s.agentId})]},s.agentId)})})]},t))}),e.jsx("aside",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:12,background:"var(--bg)"},children:o?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:8},children:[e.jsx(v,{kind:o.kind}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("div",{style:{fontSize:12,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:o.role}),e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:o.agentId})]})]}),e.jsx("div",{style:{fontSize:10,fontWeight:700,color:"var(--muted)",textTransform:"uppercase",marginBottom:5},children:r("Edges")}),e.jsxs("div",{style:{display:"grid",gap:3,fontSize:10,marginBottom:10},children:[[...m.map(t=>`${t.from} -> ${t.relation}`),...g.map(t=>`${t.relation} -> ${t.to}`)].map((t,l)=>e.jsx("div",{style:{color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t},`${t}-${l}`)),m.length+g.length===0&&e.jsx("div",{style:{color:"var(--muted)"},children:r("no edges")})]}),e.jsx("div",{style:{fontSize:10,fontWeight:700,color:"var(--muted)",textTransform:"uppercase",marginBottom:5},children:r("Skills")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:3,marginBottom:10},children:(o.skills||[]).map(t=>e.jsx("span",{style:{fontSize:9,padding:"1px 5px",border:"1px solid var(--border)",borderRadius:99,color:"var(--muted)"},children:t},t))}),e.jsx("div",{style:{fontSize:10,fontWeight:700,color:"var(--muted)",textTransform:"uppercase",marginBottom:5},children:r("Permissions")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:3},children:(o.permissions||[]).map(t=>e.jsx("span",{style:{fontSize:9,padding:"1px 5px",border:"1px solid var(--border)",borderRadius:99,color:"var(--muted)"},children:t},t))})]}):e.jsx("div",{style:{color:"var(--muted)",fontSize:11},children:r("Select a role.")})})]})]}):e.jsx("div",{style:{padding:20,color:"#991b1b",fontSize:11},children:d||r("No role graph available.")})}export{A as default};
|
|
2
|
+
//# sourceMappingURL=RolesRoute-DnodCSz0.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{c as u,r as l,j as o}from"./index-C7MZBHbT.js";import{R as d}from"./runtimeBrand-BoKPimsz.js";/**
|
|
2
|
+
* @license lucide-react v0.400.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const g=u("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);function b(a,i){return i instanceof Node&&a.contains(i)}function w({runtimes:a,value:i,onChange:p,testId:c,disabled:r=!1,style:x}){const[s,n]=l.useState(!1),t=l.useMemo(()=>a.find(e=>e.id===i)||a[0]||null,[a,i]),h=e=>{p(e),n(!1)};return o.jsxs("div",{"data-testid":c,onBlur:e=>{b(e.currentTarget,e.relatedTarget)||n(!1)},style:{position:"relative",minWidth:0,...x},children:[o.jsxs("button",{type:"button",disabled:r||a.length===0,"aria-haspopup":"listbox","aria-expanded":s,onClick:()=>n(e=>!e),style:{width:"100%",height:34,padding:"0 8px",border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)",color:"var(--fg)",display:"flex",alignItems:"center",gap:7,opacity:r||a.length===0?.55:1},children:[t?o.jsx(d,{runtime:t.id,size:17}):null,o.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textAlign:"left",fontSize:11,fontWeight:700},children:(t==null?void 0:t.label)||"No runtime"}),o.jsx(g,{size:13,style:{color:"var(--muted)",flexShrink:0}})]}),s&&a.length>0&&o.jsx("div",{role:"listbox",style:{position:"absolute",zIndex:30,top:"calc(100% + 4px)",left:0,right:0,maxHeight:224,overflow:"auto",padding:4,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)",boxShadow:"0 12px 28px rgba(15,23,42,0.12)"},children:a.map(e=>o.jsxs("button",{type:"button",role:"option","aria-selected":e.id===(t==null?void 0:t.id),onMouseDown:f=>f.preventDefault(),onClick:()=>h(e.id),style:{width:"100%",minHeight:32,padding:"5px 7px",borderRadius:"var(--radius)",color:"var(--fg)",background:e.id===(t==null?void 0:t.id)?"var(--surface)":"transparent",display:"flex",alignItems:"center",gap:7,textAlign:"left"},children:[o.jsx(d,{runtime:e.id,size:17}),o.jsxs("span",{style:{flex:1,minWidth:0},children:[o.jsx("span",{style:{display:"block",fontSize:11,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.label}),e.command?o.jsx("span",{style:{display:"block",fontSize:9,color:"var(--muted)"},children:e.command}):null]}),e.status?o.jsx("span",{style:{fontSize:9,color:"var(--muted)"},children:e.status}):null]},e.id))})]})}export{g as C,w as R};
|
|
7
|
+
//# sourceMappingURL=RuntimePicker-CucD8TGn.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as y,r as d,j as t,L as S,S as j,a as k,d as R,i as z}from"./index-C7MZBHbT.js";import{r as C}from"./runtimeBrand-BoKPimsz.js";import{R as I}from"./RuntimePicker-CucD8TGn.js";import{S as T,R as w}from"./save-D1CXHwBw.js";const l={server:{host:"127.0.0.1",port:0},terminal:{enabled:!1,attachMode:!1,defaultRuntime:"codex"},peers:{allowlist:["claude","cc","codex","opencode","gemini","qwen","deepseek","pi","aider","goose","amp","crush","cline","plandex","openclaw","chatgpt","openai"]},ui:{theme:"auto",language:"en",reducedMotion:!1},cleanup:{enabled:!0,autoPruneOnStartup:!0,autoPruneIntervalHours:6,autoPruneStoppedSessions:!1,stoppedSessionRetentionDays:14,keepStoppedSessions:20,includeTaskSessions:!1,detachedLogRetentionHours:24}};function L(n){return{...l,...n,server:{...l.server,...n.server},terminal:{...l.terminal,...n.terminal},peers:{...l.peers,...n.peers},ui:{...l.ui,...n.ui},cleanup:{...l.cleanup,...n.cleanup}}}function c(n,o=0){const r=Number.parseInt(n,10);return Number.isFinite(r)?Math.max(0,r):o}function P(n){return n.map(o=>({id:o,label:C(o),command:o}))}function O(){const{t:n,setLang:o}=y(),[r,s]=d.useState(l),[h,v]=d.useState(!0),[b,g]=d.useState(!1),[x,p]=d.useState(null),m=async()=>{try{const a=await k("/api/settings",{ttlMs:1e4});s(L(a)),p(null)}catch{p(n("Failed to load settings"))}finally{v(!1)}};d.useEffect(()=>{m()},[]),d.useEffect(()=>{const a=r.ui.theme;if(a==="auto"){const e=window.matchMedia("(prefers-color-scheme: dark)"),u=()=>{document.documentElement.dataset.theme=e.matches?"dark":"light"};return u(),e.addEventListener("change",u),()=>e.removeEventListener("change",u)}else document.documentElement.dataset.theme=a},[r.ui.theme]);const f=async()=>{p(null),g(!1);try{await R("/api/settings",{method:"POST",body:JSON.stringify(r)}),z("/api/settings"),g(!0),setTimeout(()=>g(!1),2e3)}catch(a){p((a==null?void 0:a.message)||n("Save failed"))}},i=(a,e)=>t.jsxs("div",{style:{marginBottom:12},children:[t.jsx("div",{style:{fontSize:10,fontWeight:600,color:"var(--muted)",marginBottom:4,textTransform:"uppercase"},children:a}),e]});return h?t.jsx(S,{label:n("Loading settings")}):t.jsxs("div",{style:{maxWidth:560},children:[t.jsxs("h2",{style:{fontSize:12,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--muted)",marginBottom:12,display:"flex",alignItems:"center",gap:4},children:[t.jsx(j,{size:14})," ",n("Settings")]}),t.jsxs("div",{style:{padding:14,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"},children:[i(n("Server Host"),t.jsx("input",{type:"text",value:r.server.host,onChange:a=>s(e=>({...e,server:{...e.server,host:a.target.value}})),style:{width:"100%",padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})),i(n("Server Port"),t.jsx("input",{type:"number",value:r.server.port,onChange:a=>s(e=>({...e,server:{...e.server,port:parseInt(a.target.value)||0}})),style:{width:100,padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})),i(n("UI Theme"),t.jsxs("select",{value:r.ui.theme,onChange:a=>{s(e=>({...e,ui:{...e.ui,theme:a.target.value}})),document.documentElement.dataset.theme=a.target.value},style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"},children:[t.jsx("option",{value:"auto",children:n("auto")}),t.jsx("option",{value:"light",children:n("light")}),t.jsx("option",{value:"dark",children:n("dark")})]})),i(n("Language"),t.jsxs("select",{value:r.ui.language,onChange:a=>{s(e=>({...e,ui:{...e.ui,language:a.target.value}})),o(a.target.value)},style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)"},children:[t.jsx("option",{value:"en",children:n("English")}),t.jsx("option",{value:"zh",children:n("Chinese")}),t.jsx("option",{value:"ja",children:n("Japanese")})]})),i(n("Terminal"),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.terminal.enabled,onChange:a=>s(e=>({...e,terminal:{...e.terminal,enabled:a.target.checked}}))}),n("Enable PTY terminal")]})),i(n("Default Task Agent"),t.jsx(I,{runtimes:P(r.peers.allowlist),value:r.terminal.defaultRuntime,onChange:a=>s(e=>({...e,terminal:{...e.terminal,defaultRuntime:a}})),testId:"settings-default-runtime",style:{width:240}})),i(n("Reduced Motion"),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.ui.reducedMotion,onChange:a=>s(e=>({...e,ui:{...e.ui,reducedMotion:a.target.checked}}))}),n("Disable animations")]})),i(n("Peer Runtimes"),t.jsx("input",{type:"text",value:r.peers.allowlist.join(", "),onChange:a=>s(e=>({...e,peers:{allowlist:a.target.value.split(",").map(u=>u.trim()).filter(Boolean)}})),style:{width:"100%",padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})),i(n("Cleanup"),t.jsxs("div",{style:{display:"grid",gap:9},children:[t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(170px, 1fr))",gap:8},children:[t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.cleanup.enabled,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,enabled:a.target.checked}}))}),n("Enable cleanup")]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.cleanup.autoPruneOnStartup,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,autoPruneOnStartup:a.target.checked}}))}),n("Startup cleanup")]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.cleanup.autoPruneStoppedSessions,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,autoPruneStoppedSessions:a.target.checked}}))}),n("Auto session cleanup")]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:11},children:[t.jsx("input",{type:"checkbox",checked:r.cleanup.includeTaskSessions,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,includeTaskSessions:a.target.checked}}))}),n("Include task sessions")]})]}),t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(120px, 1fr))",gap:8},children:[t.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[n("Session Days"),t.jsx("input",{type:"number",min:0,value:r.cleanup.stoppedSessionRetentionDays,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,stoppedSessionRetentionDays:c(a.target.value,e.cleanup.stoppedSessionRetentionDays)}})),style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})]}),t.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[n("Keep Latest"),t.jsx("input",{type:"number",min:0,value:r.cleanup.keepStoppedSessions,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,keepStoppedSessions:c(a.target.value,e.cleanup.keepStoppedSessions)}})),style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})]}),t.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[n("Temp Log Hours"),t.jsx("input",{type:"number",min:1,value:r.cleanup.detachedLogRetentionHours,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,detachedLogRetentionHours:Math.max(1,c(a.target.value,e.cleanup.detachedLogRetentionHours))}})),style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})]}),t.jsxs("label",{style:{fontSize:10,color:"var(--muted)",display:"grid",gap:3},children:[n("Interval Hours"),t.jsx("input",{type:"number",min:0,value:r.cleanup.autoPruneIntervalHours,onChange:a=>s(e=>({...e,cleanup:{...e.cleanup,autoPruneIntervalHours:c(a.target.value,e.cleanup.autoPruneIntervalHours)}})),style:{padding:"4px 8px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)"}})]})]})]}))]}),x&&t.jsx("div",{style:{marginTop:8,fontSize:11,color:"#991b1b",padding:"6px 8px",background:"#fef2f2",borderRadius:"var(--radius)"},children:x}),b&&t.jsx("div",{style:{marginTop:8,fontSize:11,color:"#166534",padding:"6px 8px",background:"#dcfce7",borderRadius:"var(--radius)"},children:n("Settings saved.")}),t.jsxs("div",{style:{display:"flex",gap:8,marginTop:12},children:[t.jsxs("button",{onClick:f,style:{padding:"6px 16px",fontSize:11,fontWeight:500,border:"1px solid #166534",borderRadius:"var(--radius)",background:"#166534",color:"#fff",display:"flex",alignItems:"center",gap:4},children:[t.jsx(T,{size:12})," ",n("Save")]}),t.jsxs("button",{onClick:m,style:{padding:"6px 16px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)",display:"flex",alignItems:"center",gap:4},children:[t.jsx(w,{size:12})," ",n("Reload")]})]})]})}export{O as default};
|
|
2
|
+
//# sourceMappingURL=SettingsRoute-DquMWjac.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{c as ue,r as u,u as X,j as e,L as he,i as W,a as V,d as O}from"./index-C7MZBHbT.js";import{R as fe}from"./runtimeBrand-BoKPimsz.js";import{r as ge,F as xe,S as me,C as H,A as J,a as ve,b as ye}from"./mermaidLoader-CBO31t0J.js";import{m as Q}from"./proxy-BSmwef4H.js";import{T as je}from"./terminal-DEby5Y_P.js";import{X as be}from"./x-B84wq78k.js";/**
|
|
2
|
+
* @license lucide-react v0.400.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const U=ue("Archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);function Se(s){return s==="active"||s==="in_progress"?{bg:"#dcfce7",fg:"#166534"}:s==="verified"||s==="passed"?{bg:"#dbeafe",fg:"#1e40af"}:s==="blocked"?{bg:"#fee2e2",fg:"#991b1b"}:{bg:"#f3f4f6",fg:"#6b7280"}}function Z(s){return{color:s==="passed"?"#166534":s==="failed"?"#991b1b":"#6b7280",fontSize:10}}function we(s,n){return s.length>n?`${s.slice(0,n)}...`:s}const ke=1440*60*1e3,Ae=3,Te=7,K=new Set(["complete","completed","verified","archived","abandoned","obsolete","done","closed","closeout","skipped","failed"]);function Ce(s){return(s.project||s.group||"").trim()||"default"}function Re(s){return s.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"default"}function ze(s){if(!s.updatedAt)return!1;const n=Date.now()-new Date(s.updatedAt).getTime();if(n<0)return!1;const l=Math.floor(n/ke),g=s.status.toLowerCase(),x=(s.phase||"").toLowerCase();return K.has(g)||K.has(x)?!s.archivedYear&&g!=="archived"&&x!=="archived"&&l>Ae:g==="active"?l>Te:!1}function w(s){return s!==null&&typeof s=="object"&&!Array.isArray(s)}function Ie(s){const n=new Set,l=[];for(const g of s){const x=String(g||"").trim();if(!x)continue;const r=x.toLowerCase();n.has(r)||(n.add(r),l.push(x))}return l}function B(s){return Ie([...s.runtimeHistory||[],s.defaultRuntime||void 0])}function Le(s){try{const n=JSON.parse(s);return w(n)?n:null}catch{return null}}function h(s,n="-"){return s==null||s===""?n:Array.isArray(s)?s.length?s.map(l=>String(l)).join(", "):n:w(s)?JSON.stringify(s):String(s)}function We(s){return Array.isArray(s)?s.map(n=>String(n)).filter(Boolean):[]}function Pe({onSelectSession:s}){var G,Y,_,q;const[n,l]=u.useState([]),[g,x]=u.useState([]),[r,y]=u.useState(null),[f,c]=u.useState(null),[p,m]=u.useState("STATE.json"),[C,M]=u.useState("visual"),[ee,te]=u.useState(!0),[v,R]=u.useState("active"),[k,se]=u.useState(""),[re,ie]=u.useState(new Set),[z,D]=u.useState(null),[I,F]=u.useState(null),[$,j]=u.useState(null),P=u.useRef(null),i=X(),A=async(t=!1)=>{t&&(W("/api/tasks"),W("/api/tasks/archived"));try{const[o,a]=await Promise.all([V("/api/tasks",{ttlMs:5e3}).catch(()=>[]),V("/api/tasks/archived",{ttlMs:1e4}).catch(()=>[])]);l(o),x(a),j(null)}catch{j(i("Failed to load tasks"))}finally{te(!1)}};u.useEffect(()=>{A();let t=null;const o=()=>{t&&clearTimeout(t),t=setTimeout(()=>A(!0),250)};return window.addEventListener("harness:graph-changed",o),()=>{window.removeEventListener("harness:graph-changed",o),t&&clearTimeout(t)}},[]),u.useEffect(()=>{const t=P.current;!t||!(f!=null&&f.filename.endsWith(".md"))||ge(t).catch(()=>{})},[f]);const L=u.useMemo(()=>{const t=v==="active"?n:g;if(!k.trim())return t;const o=k.toLowerCase();return t.filter(a=>a.taskId.toLowerCase().includes(o)||(a.project||"").toLowerCase().includes(o)||(a.tags||[]).some(d=>d.toLowerCase().includes(o))||a.status.toLowerCase().includes(o)||(a.phase||"").toLowerCase().includes(o)||(a.nextAction||"").toLowerCase().includes(o))},[n,g,v,k]),ae=u.useMemo(()=>{const t=new Map;for(const a of L){const d=Ce(a),b=t.get(d);b?b.push(a):t.set(d,[a])}const o=[...t.entries()].map(([a,d])=>({name:a,tasks:d,staleCount:d.filter(ze).length}));return o.sort((a,d)=>(a.name==="default"?1:0)-(d.name==="default"?1:0)||a.name.localeCompare(d.name)),o},[L]),ne=t=>{ie(o=>{const a=new Set(o);return a.has(t)?a.delete(t):a.add(t),a})},N=async(t,o)=>{try{const a=await O(`/api/tasks/${encodeURIComponent(t.taskId)}/file/${o}`);c(a)}catch{c({filename:o,content:i("(file not found)")})}},oe=async t=>{y(t),m("STATE.json"),M("visual"),c(null),await N(t,"STATE.json")},le=async t=>{m(t),r&&await N(r,t)},de=async t=>{var o;if(s){F(t.taskId),j(null);try{const a=await O(`/api/tasks/${encodeURIComponent(t.taskId)}/sessions`,{method:"POST",body:JSON.stringify({runtime:t.defaultRuntime||((o=t.runtimeHistory)==null?void 0:o[0])||void 0,role:"task-terminal",objective:i("Continue {taskId}",t.taskId),subagentMode:"built-in-subagents"})});W("/api/sessions"),s(a.sessionId),await A(!0)}catch(a){j((a==null?void 0:a.message)||i("Failed to start task terminal"))}finally{F(null)}}},ce=async t=>{D(t.taskId),j(null);try{await O(`/api/tasks/${encodeURIComponent(t.taskId)}/archive`,{method:"POST"}),y(null),c(null),await A(!0),R("archived")}catch(o){j((o==null?void 0:o.message)||i("Archive failed"))}finally{D(null)}},pe=()=>{if(!f)return e.jsx("pre",{style:{fontSize:10,fontFamily:"monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0},children:i("Loading...")});if(f.filename==="STATE.json"&&C==="visual"){const t=Le(f.content);return t?e.jsx(Oe,{state:t,task:r}):e.jsx("pre",{style:{fontSize:10,fontFamily:"monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0},children:i("STATE.json could not be parsed.")})}return f.filename.endsWith(".md")?e.jsx("div",{ref:P,className:"markdown-body",dangerouslySetInnerHTML:{__html:ye(f.content.slice(0,4e4))}}):e.jsx("pre",{style:{fontSize:10,fontFamily:"monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0},children:f.content.slice(0,12e3)})};return ee?e.jsx(he,{label:i("Loading tasks")}):e.jsxs("div",{style:{display:"flex",gap:16,height:"100%"},children:[e.jsxs("div",{"data-testid":"task-list",style:{flex:1,maxWidth:420,display:"flex",flexDirection:"column"},children:[e.jsxs("div",{style:{display:"flex",gap:0,marginBottom:8},children:[e.jsxs("button",{onClick:()=>R("active"),style:{flex:1,padding:"6px 0",fontSize:11,fontWeight:v==="active"?600:400,border:"1px solid var(--border)",borderRadius:"var(--radius) 0 0 var(--radius)",background:v==="active"?"var(--surface)":"var(--bg)"},children:[e.jsx(xe,{size:12,style:{marginRight:4,verticalAlign:-2}}),i("Active ({n})",String(n.length))]}),e.jsxs("button",{onClick:()=>R("archived"),style:{flex:1,padding:"6px 0",fontSize:11,fontWeight:v==="archived"?600:400,border:"1px solid var(--border)",borderLeft:0,borderRadius:"0 var(--radius) var(--radius) 0",background:v==="archived"?"var(--surface)":"var(--bg)"},children:[e.jsx(U,{size:12,style:{marginRight:4,verticalAlign:-2}}),i("Archive ({n})",String(g.length))]})]}),e.jsxs("div",{style:{position:"relative",marginBottom:8},children:[e.jsx(me,{size:12,style:{position:"absolute",left:8,top:8,color:"var(--muted)"}}),e.jsx("input",{"data-testid":"task-search",placeholder:i("Filter tasks..."),value:k,onChange:t=>se(t.target.value),style:{width:"100%",padding:"6px 8px 6px 26px",fontSize:11,border:"1px solid var(--border)",borderRadius:"var(--radius)",outline:"none"}})]}),$&&e.jsx("div",{style:{fontSize:11,color:"#991b1b",marginBottom:8},children:$}),e.jsx("div",{style:{flex:1,overflow:"auto"},children:L.length===0?e.jsx("div",{style:{padding:20,color:"var(--muted)",textAlign:"center",fontSize:11},children:k?i("No matching tasks."):i("No {tab} task capsules.",v)}):ae.map(t=>{const o=re.has(t.name),a=t.name==="default";return e.jsxs("div",{style:{marginBottom:6},children:[e.jsxs("button",{"data-testid":`task-group-${Re(t.name)}`,onClick:()=>ne(t.name),style:{display:"flex",alignItems:"center",gap:4,width:"100%",textAlign:"left",padding:"5px 8px",fontSize:10,fontWeight:600,color:a?"var(--muted)":"var(--fg)",border:"1px solid var(--border)",borderRadius:"var(--radius)",background:a?"transparent":"var(--surface)",marginBottom:4,cursor:"pointer"},children:[e.jsx(H,{size:11,style:{color:"var(--muted)",transform:o?"rotate(0deg)":"rotate(90deg)",transition:"transform 0.12s",flexShrink:0}}),e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name}),e.jsxs("span",{style:{color:"var(--muted)",fontWeight:400},children:["(",t.tasks.length,")"]}),t.staleCount>0&&e.jsxs("span",{title:i("Stale"),style:{color:"#b45309",fontWeight:600,marginLeft:"auto"},children:["⚠ ",t.staleCount]})]}),!o&&e.jsx(J,{children:t.tasks.map(d=>{const b=Se(d.status);return e.jsxs(Q.div,{"data-testid":"task-row",initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0},transition:{duration:.12},onClick:()=>oe(d),style:{padding:"7px 10px",border:"1px solid var(--border)",borderRadius:"var(--radius)",marginBottom:4,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between",background:(r==null?void 0:r.taskId)===d.taskId?"var(--surface)":"var(--bg)",borderLeft:`3px solid ${b.fg}`},children:[e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{style:{fontSize:11,fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[d.archivedYear&&e.jsxs("span",{style:{fontSize:9,color:"var(--muted)",marginRight:4},children:["[",d.archivedYear,"]"]}),e.jsx(E,{runtimes:B(d),size:13}),d.taskId,d.isActive&&e.jsx("span",{title:i("Active focus"),style:{color:"#2563eb",marginLeft:5},children:"●"})]}),e.jsxs("div",{style:{fontSize:9,color:"var(--muted)",marginTop:1},children:[e.jsx("span",{style:{background:b.bg,color:b.fg,padding:"0 5px",borderRadius:99,fontSize:9,marginRight:4},children:d.status}),d.wfManaged&&e.jsx("span",{title:i("Harness-managed WF lifecycle"),style:{color:"#7c3aed",marginRight:4},children:"WF"}),d.resumeRequired&&e.jsx("span",{title:i("Automatically resumes on the next session"),style:{color:"#2563eb",marginRight:4},children:"↻"}),d.phase&&e.jsx("span",{children:d.phase}),d.updatedAt&&e.jsxs("span",{children:[" / ",new Date(d.updatedAt).toLocaleDateString()]})]})]}),e.jsx(H,{size:12,style:{color:"var(--muted)",flexShrink:0}})]},d.taskId)})})]},t.name)})})]}),e.jsx(J,{children:r&&e.jsxs(Q.div,{"data-testid":"task-inspector",initial:{opacity:0,x:12},animate:{opacity:1,x:0},exit:{opacity:0,x:12},transition:{duration:.12},style:{flex:2,border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:14,overflow:"auto",maxHeight:"calc(100vh - var(--header-h) - var(--footer-h) - 40px)",background:"var(--bg)"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:10},children:[e.jsxs("div",{style:{minWidth:0},children:[e.jsx("h3",{style:{fontSize:13,fontWeight:600,margin:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.taskId}),e.jsxs("div",{style:{fontSize:10,color:"var(--muted)",marginTop:2},children:[r.archivedYear&&e.jsxs("span",{children:["[",r.archivedPath||r.archivedYear,"] "]}),e.jsx(E,{runtimes:B(r),size:14}),[r.project||"default",r.status,r.phase,r.gate,r.tier,r.mode].filter(Boolean).join(" / "),r.wfManaged&&e.jsx("span",{style:{color:"#7c3aed",marginLeft:5},children:"WF"}),r.resumeRequired&&e.jsx("span",{title:i("Automatically resumes on the next session"),style:{color:"#2563eb",marginLeft:5},children:"↻"}),r.defaultRuntime?` / default: ${r.defaultRuntime}`:""]})]}),e.jsxs("div",{style:{display:"flex",gap:5,flexShrink:0},children:[e.jsxs("button",{onClick:()=>de(r),disabled:I===r.taskId,title:i("Open task terminal"),style:{color:"var(--fg)",display:"flex",alignItems:"center",gap:4,height:24,padding:"0 8px",fontSize:10,border:"1px solid var(--border)",borderRadius:"var(--radius)",opacity:I===r.taskId?.55:1},children:[e.jsx(je,{size:11})," ",I===r.taskId?i("Opening"):i("Terminal")]}),v==="active"&&!r.archivedYear&&e.jsxs("button",{onClick:()=>ce(r),disabled:z===r.taskId,title:i("Archive completed task"),style:{color:"#991b1b",display:"flex",alignItems:"center",gap:4,height:24,padding:"0 8px",fontSize:10,border:"1px solid #fecaca",borderRadius:"var(--radius)",opacity:z===r.taskId?.55:1},children:[e.jsx(U,{size:11})," ",z===r.taskId?i("Archiving"):i("Archive")]}),e.jsx("button",{onClick:()=>y(null),title:i("Close inspector"),style:{color:"var(--muted)",display:"grid",placeItems:"center",width:24,height:24,border:"1px solid var(--border)",borderRadius:"var(--radius)"},children:e.jsx(be,{size:12})})]})]}),e.jsxs("div",{"data-testid":"task-project-metadata",style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:10,fontSize:10,color:"var(--muted)"},children:[e.jsxs("span",{children:[i("Project"),": ",r.project||r.group||"default"]}),r.tags&&r.tags.length>0&&e.jsxs("span",{children:["· ",i("Tags"),": ",r.tags.join(", ")]}),r.createdAt&&e.jsxs("span",{children:["· ",i("Created"),": ",new Date(r.createdAt).toLocaleDateString()]}),r.startedAt&&e.jsxs("span",{children:["· ",i("Started"),": ",new Date(r.startedAt).toLocaleDateString()]})]}),e.jsxs("div",{style:{marginBottom:10},children:[e.jsx("div",{style:{fontSize:10,fontWeight:600,color:"var(--muted)",marginBottom:4,textTransform:"uppercase"},children:i("Acceptance ({n})",String(((G=r.acceptance)==null?void 0:G.length)||0))}),((Y=r.acceptance)==null?void 0:Y.length)>0?e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2},children:r.acceptance.map((t,o)=>e.jsxs("div",{style:{display:"flex",gap:6,fontSize:10,alignItems:"baseline"},children:[e.jsx("span",{style:{fontWeight:500,flexShrink:0,color:"var(--muted)"},children:t.id||`#${o+1}`}),e.jsx("span",{style:{flex:1},children:we(t.text||"",120)}),e.jsx("span",{style:Z(t.status),children:t.status})]},t.id||o))}):e.jsx("div",{style:{fontSize:10,color:"var(--muted)"},children:i("no acceptance criteria")})]}),(((_=r.dependsOn)==null?void 0:_.length)>0||((q=r.blocks)==null?void 0:q.length)>0)&&e.jsxs("div",{style:{marginBottom:10,fontSize:10},children:[r.dependsOn.length>0&&e.jsxs("div",{style:{marginBottom:2},children:[e.jsx("span",{style:{color:"var(--muted)"},children:i("Depends on: ")}),r.dependsOn.map(t=>e.jsx("code",{style:{background:"var(--surface)",padding:"0 4px",borderRadius:2,marginRight:3,fontSize:10},children:t},t))]}),r.blocks.length>0&&e.jsxs("div",{children:[e.jsx("span",{style:{color:"var(--muted)"},children:i("Blocks: ")}),r.blocks.map(t=>e.jsx("code",{style:{background:"var(--surface)",padding:"0 4px",borderRadius:2,marginRight:3,fontSize:10},children:t},t))]})]}),r.nextAction&&e.jsxs("div",{style:{marginBottom:10,fontSize:10,padding:"6px 8px",background:"#fefce8",borderRadius:"var(--radius)",border:"1px solid #fde68a"},children:[e.jsx("span",{style:{fontWeight:600},children:i("Next: ")}),r.nextAction.slice(0,300)]}),e.jsxs("div",{children:[e.jsxs("div",{style:{display:"flex",alignItems:"flex-end",justifyContent:"space-between",gap:8,marginBottom:0},children:[e.jsx("div",{style:{display:"flex",gap:0,fontSize:10},children:[{label:i("STATE"),file:"STATE.json",present:!0},{label:i("PLAN"),file:"PLAN.md",present:r.hasPlan},{label:i("PROGRESS"),file:"PROGRESS.md",present:r.hasProgress}].map(t=>e.jsxs("button",{onClick:()=>le(t.file),style:{padding:"4px 12px",fontWeight:p===t.file?600:400,border:"1px solid var(--border)",borderBottom:p===t.file?"1px solid var(--bg)":void 0,borderRadius:"var(--radius) var(--radius) 0 0",marginRight:-1,background:p===t.file?"var(--bg)":"var(--surface)",display:"flex",alignItems:"center",gap:4},children:[e.jsx(ve,{size:10}),t.label,t.present?"":" (?)"]},t.label))}),p==="STATE.json"&&e.jsx("div",{"data-testid":"task-state-view-toggle",style:{display:"flex",gap:3,fontSize:10,paddingBottom:2},children:["visual","json"].map(t=>e.jsx("button",{onClick:()=>M(t),style:{padding:"3px 8px",border:"1px solid var(--border)",borderRadius:"var(--radius)",background:C===t?"#111":"var(--bg)",color:C===t?"#fff":"var(--muted)",fontWeight:700},children:i(t==="visual"?"Visual":"JSON")},t))})]}),e.jsx("div",{style:{border:"1px solid var(--border)",borderRadius:"0 var(--radius) var(--radius) var(--radius)",padding:10,maxHeight:320,overflow:"auto",background:"#fafafa"},children:pe()})]})]})})]})}function E({runtimes:s,size:n=13}){return s.length===0?null:e.jsx("span",{"data-testid":"task-runtime-icons",style:{display:"inline-flex",alignItems:"center",gap:3,marginRight:5,verticalAlign:-3},children:s.map(l=>e.jsx("span",{title:l,children:e.jsx(fe,{runtime:l,size:n})},l))})}function S({label:s,value:n}){return e.jsxs("div",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius)",padding:"7px 8px",background:"var(--bg)",minWidth:0},children:[e.jsx("div",{style:{fontSize:9,color:"var(--muted)",textTransform:"uppercase",fontWeight:700},children:s}),e.jsx("div",{style:{fontSize:12,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",marginTop:2},children:n})]})}function Oe({state:s,task:n}){const l=X(),g=w(s.links)?s.links:{},x=w(s.queues)?s.queues:{},r=Array.isArray(s.workItems)?s.workItems.filter(w):[],y=Array.isArray(s.acceptance)?s.acceptance:[],f=n?B(n):[];return e.jsxs("div",{"data-testid":"task-state-visual",style:{display:"grid",gap:10,fontSize:10},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e.jsxs("div",{style:{minWidth:0},children:[e.jsx("div",{style:{fontSize:13,fontWeight:800,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h(s.taskId,(n==null?void 0:n.taskId)||"-")}),e.jsx("div",{style:{color:"var(--muted)",marginTop:2},children:h(s.nextAction,l("no next action"))})]}),e.jsx(E,{runtimes:f,size:16})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(112px, 1fr))",gap:6},children:[e.jsx(S,{label:l("Status"),value:h(s.status)}),e.jsx(S,{label:l("Phase"),value:h(s.phase)}),e.jsx(S,{label:l("Gate"),value:h(s.gate)}),e.jsx(S,{label:l("Mode"),value:h(s.mode)}),e.jsx(S,{label:l("Tier"),value:h(s.tier)}),e.jsx(S,{label:l("Updated"),value:s.updatedAt?new Date(String(s.updatedAt)).toLocaleString():"-"})]}),s.activeQuestion?e.jsxs("div",{style:{padding:"7px 8px",border:"1px solid #fde68a",borderRadius:"var(--radius)",background:"#fefce8",color:"#854d0e"},children:[e.jsxs("strong",{children:[l("Question"),": "]}),h(s.activeQuestion)]}):null,e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(170px, 1fr))",gap:8},children:[e.jsx(T,{title:l("Queues"),children:Object.keys(x).length?Object.entries(x).map(([c,p])=>e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[e.jsx("span",{style:{color:"var(--muted)"},children:c}),e.jsx("span",{style:{fontWeight:700},children:Array.isArray(p)?p.length:h(p)})]},c)):e.jsx("span",{style:{color:"var(--muted)"},children:l("none")})}),e.jsx(T,{title:l("Links"),children:["dependsOn","blocks","related"].map(c=>{const p=We(g[c]);return e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[e.jsx("span",{style:{color:"var(--muted)"},children:c}),e.jsx("span",{style:{fontWeight:700},children:p.length?p.join(", "):"-"})]},c)})})]}),e.jsx(T,{title:l("Acceptance ({n})",String(y.length)),children:y.length?y.slice(0,16).map((c,p)=>{const m=w(c)?c:{id:String(c),text:"",status:"tracked"};return e.jsxs("div",{style:{display:"flex",gap:6,alignItems:"baseline"},children:[e.jsx("span",{style:{color:"var(--muted)",fontWeight:700},children:h(m.id,`#${p+1}`)}),e.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h(m.text,"")}),e.jsx("span",{style:Z(h(m.status,"tracked")),children:h(m.status,"tracked")})]},`${h(m.id,String(p))}-${p}`)}):e.jsx("span",{style:{color:"var(--muted)"},children:l("none")})}),r.length>0&&e.jsx(T,{title:l("Work items"),children:r.slice(0,12).map((c,p)=>e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"56px 1fr 62px",gap:6},children:[e.jsx("span",{style:{color:"var(--muted)"},children:h(c.id,`#${p+1}`)}),e.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h(c.agent)}),e.jsx("span",{style:{fontWeight:700},children:h(c.status)})]},`${h(c.id,String(p))}-${p}`))})]})}function T({title:s,children:n}){return e.jsxs("div",{style:{border:"1px solid var(--border)",borderRadius:"var(--radius)",background:"var(--bg)",padding:"7px 8px",minWidth:0},children:[e.jsx("div",{style:{fontSize:9,color:"var(--muted)",textTransform:"uppercase",fontWeight:700,marginBottom:5},children:s}),e.jsx("div",{style:{display:"grid",gap:3},children:n})]})}export{Pe as default};
|
|
7
|
+
//# sourceMappingURL=TaskList-Bxc0Uktx.js.map
|