@chrisjowen/wheelhouse 0.1.1 → 0.2.1
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/README.md +36 -31
- package/build/client/_app/immutable/assets/0.CF4I5T-G.css +1 -0
- package/build/client/_app/immutable/assets/0.CF4I5T-G.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CF4I5T-G.css.gz +0 -0
- package/build/client/_app/immutable/assets/DocSheet.CaO2v_qh.css +1 -0
- package/build/client/_app/immutable/assets/DocSheet.CaO2v_qh.css.br +0 -0
- package/build/client/_app/immutable/assets/DocSheet.CaO2v_qh.css.gz +0 -0
- package/build/client/_app/immutable/chunks/-F7frqRp.js +1 -0
- package/build/client/_app/immutable/chunks/-F7frqRp.js.br +0 -0
- package/build/client/_app/immutable/chunks/-F7frqRp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/127nenIp.js +1 -0
- package/build/client/_app/immutable/chunks/127nenIp.js.br +0 -0
- package/build/client/_app/immutable/chunks/127nenIp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/2Frsddx8.js +1 -0
- package/build/client/_app/immutable/chunks/2Frsddx8.js.br +2 -0
- package/build/client/_app/immutable/chunks/2Frsddx8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/4nLjU3dc.js +1 -0
- package/build/client/_app/immutable/chunks/4nLjU3dc.js.br +0 -0
- package/build/client/_app/immutable/chunks/4nLjU3dc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/6IjAKxKZ.js +1 -0
- package/build/client/_app/immutable/chunks/6IjAKxKZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/6IjAKxKZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/6JIb870c.js +1 -0
- package/build/client/_app/immutable/chunks/6JIb870c.js.br +0 -0
- package/build/client/_app/immutable/chunks/6JIb870c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8szyIrI.js +1 -0
- package/build/client/_app/immutable/chunks/B8szyIrI.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8szyIrI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDL2L18I.js +1 -0
- package/build/client/_app/immutable/chunks/BDL2L18I.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDL2L18I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJ_boZ6o.js +1 -0
- package/build/client/_app/immutable/chunks/BJ_boZ6o.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJ_boZ6o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BMOWf_e5.js +1 -0
- package/build/client/_app/immutable/chunks/BMOWf_e5.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMOWf_e5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOOJ9_kJ.js +6 -0
- package/build/client/_app/immutable/chunks/BOOJ9_kJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOOJ9_kJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPEcp4vD.js +1 -0
- package/build/client/_app/immutable/chunks/BPEcp4vD.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPEcp4vD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTcSoYfa.js +1 -0
- package/build/client/_app/immutable/chunks/BTcSoYfa.js.br +2 -0
- package/build/client/_app/immutable/chunks/BTcSoYfa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVXUMEgB.js +1 -0
- package/build/client/_app/immutable/chunks/BVXUMEgB.js.br +0 -0
- package/build/client/_app/immutable/chunks/BVXUMEgB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BV_Ro843.js +1 -0
- package/build/client/_app/immutable/chunks/BV_Ro843.js.br +0 -0
- package/build/client/_app/immutable/chunks/BV_Ro843.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BboI5NX2.js +1 -0
- package/build/client/_app/immutable/chunks/BboI5NX2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BboI5NX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BkLV0FAz.js +1 -0
- package/build/client/_app/immutable/chunks/BkLV0FAz.js.br +0 -0
- package/build/client/_app/immutable/chunks/BkLV0FAz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BnqQNG8I.js +1 -0
- package/build/client/_app/immutable/chunks/BnqQNG8I.js.br +0 -0
- package/build/client/_app/immutable/chunks/BnqQNG8I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bo3sLJjL.js +3 -0
- package/build/client/_app/immutable/chunks/Bo3sLJjL.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bo3sLJjL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bpgn0RyM.js +1 -0
- package/build/client/_app/immutable/chunks/Bpgn0RyM.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bpgn0RyM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BrGclueo.js +1 -0
- package/build/client/_app/immutable/chunks/BrGclueo.js.br +0 -0
- package/build/client/_app/immutable/chunks/BrGclueo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-Ka3szt.js +1 -0
- package/build/client/_app/immutable/chunks/C-Ka3szt.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-Ka3szt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-YySHlv.js +1 -0
- package/build/client/_app/immutable/chunks/C-YySHlv.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-YySHlv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C27rbWKB.js +1 -0
- package/build/client/_app/immutable/chunks/C27rbWKB.js.br +0 -0
- package/build/client/_app/immutable/chunks/C27rbWKB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CA1hL-S6.js +1 -0
- package/build/client/_app/immutable/chunks/CA1hL-S6.js.br +0 -0
- package/build/client/_app/immutable/chunks/CA1hL-S6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CFdPbSqS.js +1 -0
- package/build/client/_app/immutable/chunks/CFdPbSqS.js.br +1 -0
- package/build/client/_app/immutable/chunks/CFdPbSqS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJGygju8.js +1 -0
- package/build/client/_app/immutable/chunks/CJGygju8.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJGygju8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CLdaRjQZ.js +1 -0
- package/build/client/_app/immutable/chunks/CLdaRjQZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CLdaRjQZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CS3TvEHF.js +1 -0
- package/build/client/_app/immutable/chunks/CS3TvEHF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CS3TvEHF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CSfYMiqF.js +8 -0
- package/build/client/_app/immutable/chunks/CSfYMiqF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSfYMiqF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CW_pu1E1.js +1 -0
- package/build/client/_app/immutable/chunks/CW_pu1E1.js.br +0 -0
- package/build/client/_app/immutable/chunks/CW_pu1E1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZPeboo-.js +1 -0
- package/build/client/_app/immutable/chunks/CZPeboo-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZPeboo-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZYAayp0.js +2 -0
- package/build/client/_app/immutable/chunks/CZYAayp0.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZYAayp0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cap_NU8Z.js +1 -0
- package/build/client/_app/immutable/chunks/Cap_NU8Z.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cap_NU8Z.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cf6ZwSDE.js +1 -0
- package/build/client/_app/immutable/chunks/Cf6ZwSDE.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cf6ZwSDE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ch8_zhFw.js +1 -0
- package/build/client/_app/immutable/chunks/Ch8_zhFw.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ch8_zhFw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cjji8YKo.js +1 -0
- package/build/client/_app/immutable/chunks/Cjji8YKo.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cjji8YKo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ckfspn2s.js +1 -0
- package/build/client/_app/immutable/chunks/Ckfspn2s.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ckfspn2s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cl72MTSX.js +1 -0
- package/build/client/_app/immutable/chunks/Cl72MTSX.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cl72MTSX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CpkLqQ7l.js +1 -0
- package/build/client/_app/immutable/chunks/CpkLqQ7l.js.br +0 -0
- package/build/client/_app/immutable/chunks/CpkLqQ7l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Crzhp-x5.js +5 -0
- package/build/client/_app/immutable/chunks/Crzhp-x5.js.br +0 -0
- package/build/client/_app/immutable/chunks/Crzhp-x5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cwah_dMw.js +1 -0
- package/build/client/_app/immutable/chunks/Cwah_dMw.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cwah_dMw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzsfD4hc.js +1 -0
- package/build/client/_app/immutable/chunks/CzsfD4hc.js.br +2 -0
- package/build/client/_app/immutable/chunks/CzsfD4hc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D32oVJ_N.js +1 -0
- package/build/client/_app/immutable/chunks/D32oVJ_N.js.br +1 -0
- package/build/client/_app/immutable/chunks/D32oVJ_N.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4sWXBG7.js +1 -0
- package/build/client/_app/immutable/chunks/D4sWXBG7.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4sWXBG7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DBs-gHlm.js +2 -0
- package/build/client/_app/immutable/chunks/DBs-gHlm.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBs-gHlm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DEFXAgPm.js +1 -0
- package/build/client/_app/immutable/chunks/DEFXAgPm.js.br +0 -0
- package/build/client/_app/immutable/chunks/DEFXAgPm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHbme8uq.js +1 -0
- package/build/client/_app/immutable/chunks/DHbme8uq.js.br +0 -0
- package/build/client/_app/immutable/chunks/DHbme8uq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DMkU8x7K.js +1 -0
- package/build/client/_app/immutable/chunks/DMkU8x7K.js.br +0 -0
- package/build/client/_app/immutable/chunks/DMkU8x7K.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DRIYWZlo.js +1 -0
- package/build/client/_app/immutable/chunks/DRIYWZlo.js.br +1 -0
- package/build/client/_app/immutable/chunks/DRIYWZlo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DUCO61Nb.js +1 -0
- package/build/client/_app/immutable/chunks/DUCO61Nb.js.br +0 -0
- package/build/client/_app/immutable/chunks/DUCO61Nb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXz8WA1c.js +1 -0
- package/build/client/_app/immutable/chunks/DXz8WA1c.js.br +0 -0
- package/build/client/_app/immutable/chunks/DXz8WA1c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D_4WLGwX.js +1 -0
- package/build/client/_app/immutable/chunks/D_4WLGwX.js.br +0 -0
- package/build/client/_app/immutable/chunks/D_4WLGwX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D_5WjoQx.js +1 -0
- package/build/client/_app/immutable/chunks/D_5WjoQx.js.br +0 -0
- package/build/client/_app/immutable/chunks/D_5WjoQx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D_C2ZtkZ.js +1 -0
- package/build/client/_app/immutable/chunks/D_C2ZtkZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/D_C2ZtkZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/De5PDvrQ.js +1 -0
- package/build/client/_app/immutable/chunks/De5PDvrQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/De5PDvrQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DhWdMQ8J.js +1 -0
- package/build/client/_app/immutable/chunks/DhWdMQ8J.js.br +0 -0
- package/build/client/_app/immutable/chunks/DhWdMQ8J.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DiCw6gM6.js +1 -0
- package/build/client/_app/immutable/chunks/DiCw6gM6.js.br +0 -0
- package/build/client/_app/immutable/chunks/DiCw6gM6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DugIbHkD.js +1 -0
- package/build/client/_app/immutable/chunks/DugIbHkD.js.br +0 -0
- package/build/client/_app/immutable/chunks/DugIbHkD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/JhgT3vN-.js +1 -0
- package/build/client/_app/immutable/chunks/JhgT3vN-.js.br +0 -0
- package/build/client/_app/immutable/chunks/JhgT3vN-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/KA4C2mxd.js +1 -0
- package/build/client/_app/immutable/chunks/KA4C2mxd.js.br +0 -0
- package/build/client/_app/immutable/chunks/KA4C2mxd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/MoZXz26A.js +2 -0
- package/build/client/_app/immutable/chunks/MoZXz26A.js.br +0 -0
- package/build/client/_app/immutable/chunks/MoZXz26A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PMi1c_Z5.js +2 -0
- package/build/client/_app/immutable/chunks/PMi1c_Z5.js.br +0 -0
- package/build/client/_app/immutable/chunks/PMi1c_Z5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Pd3Oo-LF.js +1 -0
- package/build/client/_app/immutable/chunks/Pd3Oo-LF.js.br +0 -0
- package/build/client/_app/immutable/chunks/Pd3Oo-LF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/RXXzt1fg.js +1 -0
- package/build/client/_app/immutable/chunks/RXXzt1fg.js.br +0 -0
- package/build/client/_app/immutable/chunks/RXXzt1fg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/WfixpLtG.js +1 -0
- package/build/client/_app/immutable/chunks/WfixpLtG.js.br +2 -0
- package/build/client/_app/immutable/chunks/WfixpLtG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/YB3ysJRI.js +1 -0
- package/build/client/_app/immutable/chunks/YB3ysJRI.js.br +0 -0
- package/build/client/_app/immutable/chunks/YB3ysJRI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/YUajk67G.js +1 -0
- package/build/client/_app/immutable/chunks/YUajk67G.js.br +0 -0
- package/build/client/_app/immutable/chunks/YUajk67G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/a2ZeDrXd.js +1 -0
- package/build/client/_app/immutable/chunks/a2ZeDrXd.js.br +0 -0
- package/build/client/_app/immutable/chunks/a2ZeDrXd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/cZnJ0mAm.js +7 -0
- package/build/client/_app/immutable/chunks/cZnJ0mAm.js.br +0 -0
- package/build/client/_app/immutable/chunks/cZnJ0mAm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/is3b6W5i.js +1 -0
- package/build/client/_app/immutable/chunks/is3b6W5i.js.br +0 -0
- package/build/client/_app/immutable/chunks/is3b6W5i.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kM8ObZQs.js +62 -0
- package/build/client/_app/immutable/chunks/kM8ObZQs.js.br +0 -0
- package/build/client/_app/immutable/chunks/kM8ObZQs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/qep4C0YL.js +2 -0
- package/build/client/_app/immutable/chunks/qep4C0YL.js.br +0 -0
- package/build/client/_app/immutable/chunks/qep4C0YL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/sSJbwAI9.js +1 -0
- package/build/client/_app/immutable/chunks/sSJbwAI9.js.br +0 -0
- package/build/client/_app/immutable/chunks/sSJbwAI9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/vAxbu4w9.js +1 -0
- package/build/client/_app/immutable/chunks/vAxbu4w9.js.br +0 -0
- package/build/client/_app/immutable/chunks/vAxbu4w9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zfjlAER1.js +1 -0
- package/build/client/_app/immutable/chunks/zfjlAER1.js.br +0 -0
- package/build/client/_app/immutable/chunks/zfjlAER1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zrknQfzW.js +1 -0
- package/build/client/_app/immutable/chunks/zrknQfzW.js.br +0 -0
- package/build/client/_app/immutable/chunks/zrknQfzW.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BVW8a1Lc.js +2 -0
- package/build/client/_app/immutable/entry/app.BVW8a1Lc.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BVW8a1Lc.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DfAhzzBh.js +1 -0
- package/build/client/_app/immutable/entry/start.DfAhzzBh.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DfAhzzBh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CByWY48H.js +8 -0
- package/build/client/_app/immutable/nodes/0.CByWY48H.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CByWY48H.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BQxkVmZR.js +1 -0
- package/build/client/_app/immutable/nodes/1.BQxkVmZR.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BQxkVmZR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.DF_JvWer.js +3 -0
- package/build/client/_app/immutable/nodes/10.DF_JvWer.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.DF_JvWer.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.Da20qmQ1.js +1 -0
- package/build/client/_app/immutable/nodes/11.Da20qmQ1.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.Da20qmQ1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.DeNfg3Jn.js +14 -0
- package/build/client/_app/immutable/nodes/12.DeNfg3Jn.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DeNfg3Jn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.Vg3b6KJ-.js +150 -0
- package/build/client/_app/immutable/nodes/13.Vg3b6KJ-.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.Vg3b6KJ-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DNQBbVNt.js +11 -0
- package/build/client/_app/immutable/nodes/15.DNQBbVNt.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DNQBbVNt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.PXR5gryE.js +9 -0
- package/build/client/_app/immutable/nodes/16.PXR5gryE.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.PXR5gryE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.D6wwTzw0.js +2 -0
- package/build/client/_app/immutable/nodes/17.D6wwTzw0.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.D6wwTzw0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.BYPKt-Zj.js +6 -0
- package/build/client/_app/immutable/nodes/18.BYPKt-Zj.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.BYPKt-Zj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/19.eOj7WL-z.js +1 -0
- package/build/client/_app/immutable/nodes/19.eOj7WL-z.js.br +0 -0
- package/build/client/_app/immutable/nodes/19.eOj7WL-z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.iGkQWI53.js +14 -0
- package/build/client/_app/immutable/nodes/2.iGkQWI53.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.iGkQWI53.js.gz +0 -0
- package/build/client/_app/immutable/nodes/20.COEvYhSn.js +6 -0
- package/build/client/_app/immutable/nodes/20.COEvYhSn.js.br +0 -0
- package/build/client/_app/immutable/nodes/20.COEvYhSn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DgV1VyBd.js +5 -0
- package/build/client/_app/immutable/nodes/3.DgV1VyBd.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DgV1VyBd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BFV94RXa.js +1 -0
- package/build/client/_app/immutable/nodes/4.BFV94RXa.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BFV94RXa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DXQSdCv2.js +1 -0
- package/build/client/_app/immutable/nodes/5.DXQSdCv2.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DXQSdCv2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BVvx9mug.js +7 -0
- package/build/client/_app/immutable/nodes/6.BVvx9mug.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BVvx9mug.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.bgzyRDkn.js +4 -0
- package/build/client/_app/immutable/nodes/7.bgzyRDkn.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.bgzyRDkn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BjRlvbf0.js +1 -0
- package/build/client/_app/immutable/nodes/9.BjRlvbf0.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BjRlvbf0.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +7 -7
- package/build/index.js +7 -7
- package/build/server/chunks/chunks/AllowanceMeter.js-DBpmESX6.js +42 -0
- package/build/server/chunks/chunks/DecisionCard.js-CvR7ULLC.js +461 -0
- package/build/server/chunks/chunks/DocSheet.js-BPPDMi3P.js +50 -0
- package/build/server/chunks/chunks/EtaLine.js-CtcOSLzV.js +79 -0
- package/build/server/chunks/chunks/EveryProjectSwitch.js-DWet6DU1.js +200 -0
- package/build/server/chunks/chunks/Icon.js-CVZZ-yuB.js +129 -0
- package/build/server/chunks/chunks/InsightsNav.js-Cmn5y1to.js +18 -0
- package/build/server/chunks/chunks/InstallPlugin.js-B46b-IrK.js +45 -0
- package/build/server/chunks/chunks/LinkedText.js-COjHV297.js +43 -0
- package/build/server/chunks/chunks/ProjectBanner.js-19PQF0LD.js +111 -0
- package/build/server/chunks/chunks/ProjectStateMark.js-BkRD8cX4.js +61 -0
- package/build/server/chunks/chunks/QuestionList.js-CppuauNj.js +187 -0
- package/build/server/chunks/chunks/ResizableRail.js-BmMh1aVL.js +801 -0
- package/build/server/chunks/chunks/SettingsNav.js-BtJIv5cc.js +22 -0
- package/build/server/chunks/chunks/SlotContent.js-B4p1QLQN.js +748 -0
- package/build/server/chunks/chunks/StageTrack.js-DHvZX7Bl.js +111 -0
- package/build/server/chunks/chunks/TimeBar.js-CUFKEJW9.js +32 -0
- package/build/server/chunks/chunks/TimeLegend.js-B3Wl61jM.js +29 -0
- package/build/server/chunks/chunks/aliases.svelte.js-C_vCoKdk.js +138 -0
- package/build/server/chunks/chunks/arrow-down.js-Bt3fQooI.js +18 -0
- package/build/server/chunks/chunks/arrow-left.js-BKiSMzvI.js +18 -0
- package/build/server/chunks/chunks/arrow-right.js-CNYqcx0M.js +18 -0
- package/build/server/chunks/chunks/arrow-up.js-DHbXk79z.js +18 -0
- package/build/server/chunks/chunks/attachments.js-BAnnqpd-.js +48 -0
- package/build/server/chunks/chunks/bell.js-CXJp-3UZ.js +150 -0
- package/build/server/chunks/chunks/berths.js-CuAE9lHW.js +268 -0
- package/build/server/chunks/chunks/book-open.js-C2rohN3N.js +23 -0
- package/build/server/chunks/chunks/button.js-BF2PsvWw.js +7311 -0
- package/build/server/chunks/chunks/chat.svelte.js-b0uQXOge.js +545 -0
- package/build/server/chunks/chunks/check.js-32sYHVxG.js +15 -0
- package/build/server/chunks/chunks/checks.js-DR3fVVpO.js +242 -0
- package/build/server/chunks/chunks/chevron-down.js-CH53s_me.js +15 -0
- package/build/server/chunks/chunks/chevron-left.js-D5RHY-kD.js +15 -0
- package/build/server/chunks/chunks/chevron-right.js-DCBAqAae.js +15 -0
- package/build/server/chunks/chunks/circle-alert.js-XTuAj7ZH.js +23 -0
- package/build/server/chunks/chunks/circle-dashed.js-fXv_bIo-.js +24 -0
- package/build/server/chunks/chunks/circle-dot.js-C950Kosw.js +18 -0
- package/build/server/chunks/chunks/client.js-B_5mNqUe.js +24 -0
- package/build/server/chunks/chunks/clock.js-CHhHTWK_.js +18 -0
- package/build/server/chunks/chunks/detail.js-9VHqIqfd.js +121 -0
- package/build/server/chunks/chunks/docpath.js-D27w_pf9.js +47 -0
- package/build/server/chunks/chunks/external-link.js-BQs1euhR.js +24 -0
- package/build/server/chunks/chunks/file-text.js-CnuVvHlB.js +26 -0
- package/build/server/chunks/chunks/gauge.js-Cbb1aqE7.js +35 -0
- package/build/server/chunks/chunks/hand.js-BA9yKAan.js +25 -0
- package/build/server/chunks/chunks/harbour.js-PHLHOFea.js +117 -0
- package/build/server/chunks/chunks/html.js-FW6Ia4bL.js +8 -0
- package/build/server/chunks/chunks/http.js-CBM8xgUM.js +25 -0
- package/build/server/chunks/chunks/inbox.js-Dv8a1ecX.js +184 -0
- package/build/server/chunks/chunks/inbox.svelte.js-n7K3YnGB.js +171 -0
- package/build/server/chunks/chunks/index-server.js-DsObimPA.js +9 -0
- package/build/server/chunks/chunks/index-server2.js-Fb2GE8KQ.js +17 -0
- package/build/server/chunks/chunks/index.js-B0NFhRTN.js +1524 -0
- package/build/server/chunks/chunks/index2.js-Bxt1T6_K.js +46 -0
- package/build/server/chunks/chunks/internal.js-CxWYnS4m.js +146 -0
- package/build/server/chunks/chunks/keys.js-iHygUPeb.js +20 -0
- package/build/server/chunks/chunks/live.svelte.js-DavJCZVs.js +238 -0
- package/build/server/chunks/chunks/loader-circle.js-rQHvIWN7.js +16 -0
- package/build/server/chunks/chunks/markdown.js-CApgGpeX.js +2634 -0
- package/build/server/chunks/chunks/message-circle-question-mark.js-DbmaS9k_.js +25 -0
- package/build/server/chunks/chunks/message-square.js-XK15WVZq.js +22 -0
- package/build/server/chunks/chunks/messages-square.js-BXH8BHfd.js +28 -0
- package/build/server/chunks/chunks/minus.js-DKvkj8VD.js +15 -0
- package/build/server/chunks/chunks/nav.js-DwnXJgxd.js +29 -0
- package/build/server/chunks/chunks/plus.js-caVrjGZc.js +15 -0
- package/build/server/chunks/chunks/preview.js-hrimfbCG.js +69 -0
- package/build/server/chunks/chunks/pullrequests.js-CWGxTy8C.js +68 -0
- package/build/server/chunks/chunks/pullrequests2.js-CCzk2sqm.js +12 -0
- package/build/server/chunks/chunks/repo.js-DU-pK5Nw.js +33 -0
- package/build/server/chunks/chunks/requests.js-DiL4Poa9.js +42 -0
- package/build/server/chunks/chunks/restart.js-Dv1_ODgZ.js +12 -0
- package/build/server/chunks/chunks/root.js-60iebdW4.js +3105 -0
- package/build/server/chunks/chunks/rotate-cw.js-M4SHOpYI.js +21 -0
- package/build/server/chunks/chunks/runtime.js-4msnOWzY.js +15335 -0
- package/build/server/chunks/chunks/scale.js-S5g8YUqL.js +21 -0
- package/build/server/chunks/chunks/scroll-lock.js-Ci_ylINL.js +2811 -0
- package/build/server/chunks/chunks/service.js-DZR6CoEI.js +914 -0
- package/build/server/chunks/chunks/settings.js-C_6kvzhM.js +862 -0
- package/build/server/chunks/chunks/slots.svelte.js-CLIV5nwM.js +34 -0
- package/build/server/chunks/chunks/square-terminal.js-D9D9_9_V.js +30 -0
- package/build/server/chunks/chunks/store.js-ByNV-OHV.js +323 -0
- package/build/server/chunks/chunks/tone.js-Dxsl-adt.js +31 -0
- package/build/server/chunks/chunks/triangle-alert.js-ClLszsZE.js +25 -0
- package/build/server/chunks/chunks/uploads.js-4OZ09onz.js +107 -0
- package/build/server/chunks/chunks/urls.js-BrlC6XZ8.js +8 -0
- package/build/server/chunks/chunks/utils.js-BJgm9WbO.js +2985 -0
- package/build/server/chunks/chunks/vault.js-CTaWe09z.js +162 -0
- package/build/server/chunks/chunks/view.js-BPycofxX.js +76 -0
- package/build/server/chunks/chunks/views.js-DyGxvskG.js +124 -0
- package/build/server/chunks/chunks/words.js-Cte4wOB4.js +48 -0
- package/build/server/chunks/chunks/x.js-YxaUOlq9.js +18 -0
- package/build/server/chunks/entries/endpoints/api/apps/_op_/_server.ts.js-DqDt7aNN.js +90 -0
- package/build/server/chunks/entries/endpoints/api/events/_server.ts.js-D-mwPJ4E.js +100 -0
- package/build/server/chunks/entries/endpoints/api/files/_server.ts.js-DTl4eBah.js +49 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/chat/_server.ts.js-HFyCRRIx.js +83 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/commands/_server.ts.js-CO7kITUs.js +119 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/dismiss/_server.ts.js-CTdaQTFX.js +45 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/input/_server.ts.js-DKxlZSX3.js +51 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/interrupt/_server.ts.js-Bp4CsZQ9.js +44 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/messages/_server.ts.js--Ti6GfKf.js +66 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/pick/_server.ts.js-DudckFen.js +54 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/start/_server.ts.js-H09D-uaY.js +44 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/uploads/_day_/_id_/_name_/_server.ts.js-B1jFlBJC.js +31 -0
- package/build/server/chunks/entries/endpoints/api/firstmate/uploads/_server.ts.js-B2h2nWSK.js +39 -0
- package/build/server/chunks/entries/endpoints/api/fleet/_server.ts.js-BMcNM7_1.js +36 -0
- package/build/server/chunks/entries/endpoints/api/gateway/_server.ts.js-CVc8gLps.js +100 -0
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BcVLJq4f.js +36 -0
- package/build/server/chunks/entries/endpoints/api/inbox/_server.ts.js-DKqY2sWJ.js +60 -0
- package/build/server/chunks/entries/endpoints/api/inbox/report/_server.ts.js-a4l41m0P.js +51 -0
- package/build/server/chunks/entries/endpoints/api/insights/_server.ts.js-Cr_YrS6N.js +36 -0
- package/build/server/chunks/entries/endpoints/api/plugins/_plugin_/config/_server.ts.js-CZUfk-OY.js +71 -0
- package/build/server/chunks/entries/endpoints/api/plugins/_plugin_/load/_server.ts.js-CPBW7xEV.js +23 -0
- package/build/server/chunks/entries/endpoints/api/plugins/_plugin_/ui/_...path_/_server.ts.js-Dg2Sbcgq.js +59 -0
- package/build/server/chunks/entries/endpoints/api/plugins/_plugin_/update/_server.ts.js-C9LXRfKc.js +35 -0
- package/build/server/chunks/entries/endpoints/api/plugins/_server.ts.js-C7RCx22P.js +36 -0
- package/build/server/chunks/entries/endpoints/api/plugins/inspect/_server.ts.js-CSPS_3gF.js +35 -0
- package/build/server/chunks/entries/endpoints/api/plugins/install/_server.ts.js-DWxejv3K.js +38 -0
- package/build/server/chunks/entries/endpoints/api/plugins/updates/_server.ts.js-BYYXspMy.js +23 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/_server.ts.js-BAPnLV-3.js +41 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/commands/_server.ts.js-OYV-kJGk.js +50 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/consent/_server.ts.js-DovNLcSw.js +62 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/draft/_server.ts.js-CYU1VGUf.js +49 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/file/_server.ts.js-CgCzXBIB.js +72 -0
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/test/_server.ts.js-BZ2S7d9x.js +55 -0
- package/build/server/chunks/entries/endpoints/api/services/_server.ts.js-CMVRpWqZ.js +55 -0
- package/build/server/chunks/entries/endpoints/api/slots/_server.ts.js-BhhLjW17.js +44 -0
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/_server.ts.js-Bukv4dSq.js +41 -0
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/artifacts/_...name_/_server.ts.js-BsHRnnS7.js +60 -0
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/diff/_server.ts.js-B9eygpXJ.js +48 -0
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/output/_server.ts.js-o7w8BRpJ.js +93 -0
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/preview/_server.ts.js-BaXho4qD.js +110 -0
- package/build/server/chunks/entries/endpoints/api/vault/_server.ts.js-CagOXKfp.js +54 -0
- package/build/server/chunks/entries/endpoints/api/wheelhouse/update/_server.ts.js-CAcsCtS9.js +23 -0
- package/build/server/chunks/entries/endpoints/api/wheelhouse/upgrade/_server.ts.js-CSlKdXcw.js +23 -0
- package/build/server/chunks/entries/endpoints/projects/_server.ts.js-uMp6dcat.js +7 -0
- package/build/server/chunks/entries/endpoints/tasks/_id_/review/_server.ts.js-OEWlGF9d.js +40 -0
- package/build/server/chunks/entries/fallbacks/error.svelte.js-DnpcUjRk.js +15 -0
- package/build/server/chunks/entries/hooks.server.js-BeVVnKyB.js +54 -0
- package/build/server/chunks/entries/pages/_layout.server.ts.js-CFzh0bb7.js +24 -0
- package/build/server/chunks/entries/pages/_layout.svelte.js-BQyvY_vc.js +8746 -0
- package/build/server/chunks/entries/pages/_page.server.ts.js-DqT-OIkV.js +16 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-DMDSI7Tw.js +2220 -0
- package/build/server/chunks/entries/pages/decisions/_page.server.ts.js-CGjy1S4B.js +11 -0
- package/build/server/chunks/entries/pages/decisions/_page.svelte.js-C3NsHXP-.js +184 -0
- package/build/server/chunks/entries/pages/files/_page.server.ts.js-D6VF_7EK.js +17 -0
- package/build/server/chunks/entries/pages/files/_page.svelte.js-Bj-5ZaJn.js +61 -0
- package/build/server/chunks/entries/pages/harbour/_page.server.ts.js-Cbei7bFp.js +46 -0
- package/build/server/chunks/entries/pages/harbour/_page.svelte.js-D8RsASWB.js +580 -0
- package/build/server/chunks/entries/pages/headroom/_page.server.ts.js-DtFxpkIR.js +11 -0
- package/build/server/chunks/entries/pages/headroom/_page.svelte.js-BLFQjLz8.js +149 -0
- package/build/server/chunks/entries/pages/inbox/_page.svelte.js-Bn5pWt__.js +185 -0
- package/build/server/chunks/entries/pages/plugins/_page.server.ts.js-D_nxVVQ0.js +11 -0
- package/build/server/chunks/entries/pages/plugins/_plugin_/_page_/_page.server.ts.js-CybSuVD4.js +16 -0
- package/build/server/chunks/entries/pages/plugins/_plugin_/_page_/_page.svelte.js-DMPiRdLN.js +52 -0
- package/build/server/chunks/entries/pages/projects/_id_/_page.server.ts.js-CroKCV4u.js +23 -0
- package/build/server/chunks/entries/pages/projects/_id_/_page.svelte.js-_DNqdqJc.js +976 -0
- package/build/server/chunks/entries/pages/projects/_id_/_plugin_/_tab_/_page.server.ts.js-Vb8907y2.js +21 -0
- package/build/server/chunks/entries/pages/projects/_id_/_plugin_/_tab_/_page.svelte.js-BLTTCa_O.js +74 -0
- package/build/server/chunks/entries/pages/projects/_id_/passage/_page.server.ts.js-Cor2JYpv.js +27 -0
- package/build/server/chunks/entries/pages/projects/_id_/passage/_page.svelte.js-BTgNmS_4.js +433 -0
- package/build/server/chunks/entries/pages/projects/_id_/passage/edit/_page.server.ts.js-Dtvwihv0.js +15 -0
- package/build/server/chunks/entries/pages/projects/_id_/passage/edit/_page.svelte.js-DuitNXlV.js +1880 -0
- package/build/server/chunks/entries/pages/settings/_page.server.ts.js-DnBg1UuM.js +11 -0
- package/build/server/chunks/entries/pages/settings/gateway/_page.server.ts.js-BqNGCjSG.js +11 -0
- package/build/server/chunks/entries/pages/settings/gateway/_page.svelte.js-BmbSSxk6.js +208 -0
- package/build/server/chunks/entries/pages/settings/plugins/_page.server.ts.js-CQ9DVI4s.js +19 -0
- package/build/server/chunks/entries/pages/settings/plugins/_page.svelte.js-U1GPMY59.js +1847 -0
- package/build/server/chunks/entries/pages/settings/plugins/_plugin_/_page.server.ts.js-C_YGnjmx.js +17 -0
- package/build/server/chunks/entries/pages/settings/plugins/_plugin_/_page.svelte.js-C_gSykyo.js +220 -0
- package/build/server/chunks/entries/pages/tasks/_id_/_page.server.ts.js-C-lePqYN.js +25 -0
- package/build/server/chunks/entries/pages/tasks/_id_/_page.svelte.js-Ds1ivkgU.js +2142 -0
- package/build/server/chunks/entries/pages/tasks/_id_/doc/_page.server.ts.js-DH7nAB6U.js +24 -0
- package/build/server/chunks/entries/pages/tasks/_id_/doc/_page.svelte.js-BOMmvf6G.js +80 -0
- package/build/server/chunks/entries/pages/time/_page.server.ts.js-Bfe-SSUC.js +11 -0
- package/build/server/chunks/entries/pages/time/_page.svelte.js-Ckn0YUW_.js +108 -0
- package/build/server/chunks/handler-CViJcHBG.js +1474 -0
- package/build/server/chunks/index.js-DO8YdJ_5.js +4296 -0
- package/build/server/chunks/manifest.js-DJYckUS-.js +501 -0
- package/build/server/chunks/nodes/0.js-DZ4kFPNe.js +41 -0
- package/build/server/chunks/nodes/1.js-CLGjQTlS.js +9 -0
- package/build/server/chunks/nodes/10.js-BN4Clcbg.js +43 -0
- package/build/server/chunks/nodes/11.js-DWB1yiJ6.js +42 -0
- package/build/server/chunks/nodes/12.js-CA99401F.js +43 -0
- package/build/server/chunks/nodes/13.js-YsHE2JFx.js +42 -0
- package/build/server/chunks/nodes/14.js-Cl3VZ6XR.js +12 -0
- package/build/server/chunks/nodes/15.js-CLdnAt4r.js +41 -0
- package/build/server/chunks/nodes/16.js-B-2Iq3Ye.js +41 -0
- package/build/server/chunks/nodes/17.js-BTM2TsmR.js +44 -0
- package/build/server/chunks/nodes/18.js-D3m0ATU2.js +42 -0
- package/build/server/chunks/nodes/19.js-C3dO33LH.js +42 -0
- package/build/server/chunks/nodes/2.js-51wjL-91.js +41 -0
- package/build/server/chunks/nodes/20.js-e41qDeY7.js +41 -0
- package/build/server/chunks/nodes/3.js-3JUV-tiI.js +41 -0
- package/build/server/chunks/nodes/4.js-CI6WGOXE.js +41 -0
- package/build/server/chunks/nodes/5.js-tZ-lWwlu.js +45 -0
- package/build/server/chunks/nodes/6.js-BgQesykU.js +41 -0
- package/build/server/chunks/nodes/7.js-CFXzqkNQ.js +9 -0
- package/build/server/chunks/nodes/8.js-D32pPbKa.js +12 -0
- package/build/server/chunks/nodes/9.js-CUQI6T4W.js +41 -0
- package/dist/cli.js +2156 -72
- package/dist/wh-vault.js +1007 -0
- package/package.json +5 -3
- package/plugins/github-issues/.wheelhouse-plugin/plugin.json +44 -0
- package/plugins/github-issues/README.md +16 -0
- package/plugins/github-issues/wheelhouse/server/index.js +463 -0
- package/plugins/project-links/.wheelhouse-plugin/plugin.json +25 -0
- package/plugins/project-links/README.md +17 -0
- package/plugins/project-links/wheelhouse/server/index.js +278 -0
- package/plugins/project-links/wheelhouse/ui/index.js +87 -0
- package/plugins/vault/.wheelhouse-plugin/plugin.json +22 -0
- package/plugins/vault/README.md +18 -0
- package/plugins/vault/wheelhouse/server/index.js +297 -0
- package/build/client/_app/immutable/assets/0.DaQhCSel.css +0 -1
- package/build/client/_app/immutable/assets/0.DaQhCSel.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DaQhCSel.css.gz +0 -0
- package/build/client/_app/immutable/assets/12.DT1C9nmd.css +0 -1
- package/build/client/_app/immutable/assets/12.DT1C9nmd.css.br +0 -0
- package/build/client/_app/immutable/assets/12.DT1C9nmd.css.gz +0 -0
- package/build/client/_app/immutable/assets/14.CjNfSPQ6.css +0 -1
- package/build/client/_app/immutable/assets/14.CjNfSPQ6.css.br +0 -0
- package/build/client/_app/immutable/assets/14.CjNfSPQ6.css.gz +0 -0
- package/build/client/_app/immutable/assets/15.KLSHp5Yu.css +0 -1
- package/build/client/_app/immutable/assets/15.KLSHp5Yu.css.br +0 -0
- package/build/client/_app/immutable/assets/15.KLSHp5Yu.css.gz +0 -0
- package/build/client/_app/immutable/chunks/36FDwM1G.js +0 -1
- package/build/client/_app/immutable/chunks/36FDwM1G.js.br +0 -0
- package/build/client/_app/immutable/chunks/36FDwM1G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B1XxiJam.js +0 -1
- package/build/client/_app/immutable/chunks/B1XxiJam.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1XxiJam.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B1bNvkZf.js +0 -1
- package/build/client/_app/immutable/chunks/B1bNvkZf.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1bNvkZf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B2wEHue2.js +0 -1
- package/build/client/_app/immutable/chunks/B2wEHue2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B2wEHue2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BEAYWcbT.js +0 -1
- package/build/client/_app/immutable/chunks/BEAYWcbT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BEAYWcbT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BGINfGsV.js +0 -1
- package/build/client/_app/immutable/chunks/BGINfGsV.js.br +0 -4
- package/build/client/_app/immutable/chunks/BGINfGsV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BHsdHLbF.js +0 -1
- package/build/client/_app/immutable/chunks/BHsdHLbF.js.br +0 -0
- package/build/client/_app/immutable/chunks/BHsdHLbF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BORDV711.js +0 -1
- package/build/client/_app/immutable/chunks/BORDV711.js.br +0 -0
- package/build/client/_app/immutable/chunks/BORDV711.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BR5v76-T.js +0 -1
- package/build/client/_app/immutable/chunks/BR5v76-T.js.br +0 -0
- package/build/client/_app/immutable/chunks/BR5v76-T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BUo4hMcM.js +0 -1
- package/build/client/_app/immutable/chunks/BUo4hMcM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BUo4hMcM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVVO3JPx.js +0 -1
- package/build/client/_app/immutable/chunks/BVVO3JPx.js.br +0 -0
- package/build/client/_app/immutable/chunks/BVVO3JPx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BWJa0dU7.js +0 -1
- package/build/client/_app/immutable/chunks/BWJa0dU7.js.br +0 -0
- package/build/client/_app/immutable/chunks/BWJa0dU7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bfi4vm-w.js +0 -1
- package/build/client/_app/immutable/chunks/Bfi4vm-w.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bfi4vm-w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BiTivU7x.js +0 -1
- package/build/client/_app/immutable/chunks/BiTivU7x.js.br +0 -0
- package/build/client/_app/immutable/chunks/BiTivU7x.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BiuLIp4b.js +0 -1
- package/build/client/_app/immutable/chunks/BiuLIp4b.js.br +0 -0
- package/build/client/_app/immutable/chunks/BiuLIp4b.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bns_F-QV.js +0 -1
- package/build/client/_app/immutable/chunks/Bns_F-QV.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bns_F-QV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Brlpgp90.js +0 -1
- package/build/client/_app/immutable/chunks/Brlpgp90.js.br +0 -0
- package/build/client/_app/immutable/chunks/Brlpgp90.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BunkbzFG.js +0 -1
- package/build/client/_app/immutable/chunks/BunkbzFG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BunkbzFG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BwOfqJw9.js +0 -1
- package/build/client/_app/immutable/chunks/BwOfqJw9.js.br +0 -0
- package/build/client/_app/immutable/chunks/BwOfqJw9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-xrRA1Y.js +0 -1
- package/build/client/_app/immutable/chunks/C-xrRA1Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-xrRA1Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2_XZrIO.js +0 -7
- package/build/client/_app/immutable/chunks/C2_XZrIO.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2_XZrIO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2d4bDYU.js +0 -1
- package/build/client/_app/immutable/chunks/C2d4bDYU.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2d4bDYU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C6BQPSOs.js +0 -62
- package/build/client/_app/immutable/chunks/C6BQPSOs.js.br +0 -0
- package/build/client/_app/immutable/chunks/C6BQPSOs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CDphfOBv.js +0 -1
- package/build/client/_app/immutable/chunks/CDphfOBv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CDphfOBv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CIE0U5Ih.js +0 -1
- package/build/client/_app/immutable/chunks/CIE0U5Ih.js.br +0 -0
- package/build/client/_app/immutable/chunks/CIE0U5Ih.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CIfcjhKg.js +0 -14
- package/build/client/_app/immutable/chunks/CIfcjhKg.js.br +0 -0
- package/build/client/_app/immutable/chunks/CIfcjhKg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CKhg4Tm6.js +0 -1
- package/build/client/_app/immutable/chunks/CKhg4Tm6.js.br +0 -0
- package/build/client/_app/immutable/chunks/CKhg4Tm6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CLs9Rkbg.js +0 -1
- package/build/client/_app/immutable/chunks/CLs9Rkbg.js.br +0 -0
- package/build/client/_app/immutable/chunks/CLs9Rkbg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/COQ3aAYj.js +0 -1
- package/build/client/_app/immutable/chunks/COQ3aAYj.js.br +0 -0
- package/build/client/_app/immutable/chunks/COQ3aAYj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/COiIt96y.js +0 -1
- package/build/client/_app/immutable/chunks/COiIt96y.js.br +0 -0
- package/build/client/_app/immutable/chunks/COiIt96y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQ7gIAH8.js +0 -1
- package/build/client/_app/immutable/chunks/CQ7gIAH8.js.br +0 -2
- package/build/client/_app/immutable/chunks/CQ7gIAH8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQlHU-Rx.js +0 -1
- package/build/client/_app/immutable/chunks/CQlHU-Rx.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQlHU-Rx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXfdgbLv.js +0 -1
- package/build/client/_app/immutable/chunks/CXfdgbLv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXfdgbLv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CdOazBBu.js +0 -1
- package/build/client/_app/immutable/chunks/CdOazBBu.js.br +0 -0
- package/build/client/_app/immutable/chunks/CdOazBBu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CeYIQAXD.js +0 -1
- package/build/client/_app/immutable/chunks/CeYIQAXD.js.br +0 -0
- package/build/client/_app/immutable/chunks/CeYIQAXD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CfdzAfq2.js +0 -1
- package/build/client/_app/immutable/chunks/CfdzAfq2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CfdzAfq2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkFDaaNz.js +0 -1
- package/build/client/_app/immutable/chunks/CkFDaaNz.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkFDaaNz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CkLriSVx.js +0 -1
- package/build/client/_app/immutable/chunks/CkLriSVx.js.br +0 -0
- package/build/client/_app/immutable/chunks/CkLriSVx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Clzs_eXS.js +0 -5
- package/build/client/_app/immutable/chunks/Clzs_eXS.js.br +0 -0
- package/build/client/_app/immutable/chunks/Clzs_eXS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrCQ2NNA.js +0 -1
- package/build/client/_app/immutable/chunks/CrCQ2NNA.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrCQ2NNA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrgqcyB_.js +0 -1
- package/build/client/_app/immutable/chunks/CrgqcyB_.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrgqcyB_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtlVBKf-.js +0 -1
- package/build/client/_app/immutable/chunks/CtlVBKf-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtlVBKf-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4aeBIhU.js +0 -1
- package/build/client/_app/immutable/chunks/D4aeBIhU.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4aeBIhU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DC8T2WRZ.js +0 -1
- package/build/client/_app/immutable/chunks/DC8T2WRZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DC8T2WRZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DGy76IbW.js +0 -2
- package/build/client/_app/immutable/chunks/DGy76IbW.js.br +0 -0
- package/build/client/_app/immutable/chunks/DGy76IbW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DIABVMrA.js +0 -1
- package/build/client/_app/immutable/chunks/DIABVMrA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DIABVMrA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLith9Yi.js +0 -1
- package/build/client/_app/immutable/chunks/DLith9Yi.js.br +0 -0
- package/build/client/_app/immutable/chunks/DLith9Yi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Da92_52d.js +0 -1
- package/build/client/_app/immutable/chunks/Da92_52d.js.br +0 -0
- package/build/client/_app/immutable/chunks/Da92_52d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Db0WMrvR.js +0 -1
- package/build/client/_app/immutable/chunks/Db0WMrvR.js.br +0 -0
- package/build/client/_app/immutable/chunks/Db0WMrvR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dlb_KqyS.js +0 -2
- package/build/client/_app/immutable/chunks/Dlb_KqyS.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dlb_KqyS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dq9kJk5R.js +0 -1
- package/build/client/_app/immutable/chunks/Dq9kJk5R.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dq9kJk5R.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DxGQT-Hz.js +0 -1
- package/build/client/_app/immutable/chunks/DxGQT-Hz.js.br +0 -0
- package/build/client/_app/immutable/chunks/DxGQT-Hz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ET-O1REu.js +0 -1
- package/build/client/_app/immutable/chunks/ET-O1REu.js.br +0 -0
- package/build/client/_app/immutable/chunks/ET-O1REu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/FQ69txbU.js +0 -1
- package/build/client/_app/immutable/chunks/FQ69txbU.js.br +0 -0
- package/build/client/_app/immutable/chunks/FQ69txbU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/L-6wuY5f.js +0 -2
- package/build/client/_app/immutable/chunks/L-6wuY5f.js.br +0 -0
- package/build/client/_app/immutable/chunks/L-6wuY5f.js.gz +0 -0
- package/build/client/_app/immutable/chunks/M201SoVK.js +0 -1
- package/build/client/_app/immutable/chunks/M201SoVK.js.br +0 -1
- package/build/client/_app/immutable/chunks/M201SoVK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/OeqXO44y.js +0 -1
- package/build/client/_app/immutable/chunks/OeqXO44y.js.br +0 -0
- package/build/client/_app/immutable/chunks/OeqXO44y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js +0 -1
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js.br +0 -0
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/QAFSHLn2.js +0 -1
- package/build/client/_app/immutable/chunks/QAFSHLn2.js.br +0 -0
- package/build/client/_app/immutable/chunks/QAFSHLn2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Tm9AblHs.js +0 -1
- package/build/client/_app/immutable/chunks/Tm9AblHs.js.br +0 -0
- package/build/client/_app/immutable/chunks/Tm9AblHs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_7N5fmOy.js +0 -2
- package/build/client/_app/immutable/chunks/_7N5fmOy.js.br +0 -0
- package/build/client/_app/immutable/chunks/_7N5fmOy.js.gz +0 -0
- package/build/client/_app/immutable/chunks/eMSiEzFi.js +0 -1
- package/build/client/_app/immutable/chunks/eMSiEzFi.js.br +0 -0
- package/build/client/_app/immutable/chunks/eMSiEzFi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/euRlC7pA.js +0 -1
- package/build/client/_app/immutable/chunks/euRlC7pA.js.br +0 -1
- package/build/client/_app/immutable/chunks/euRlC7pA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hBAvbyDe.js +0 -4
- package/build/client/_app/immutable/chunks/hBAvbyDe.js.br +0 -0
- package/build/client/_app/immutable/chunks/hBAvbyDe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/iVpzjqp1.js +0 -1
- package/build/client/_app/immutable/chunks/iVpzjqp1.js.br +0 -0
- package/build/client/_app/immutable/chunks/iVpzjqp1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/m3YfhLk1.js +0 -1
- package/build/client/_app/immutable/chunks/m3YfhLk1.js.br +0 -0
- package/build/client/_app/immutable/chunks/m3YfhLk1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/p7x6PRF0.js +0 -1
- package/build/client/_app/immutable/chunks/p7x6PRF0.js.br +0 -0
- package/build/client/_app/immutable/chunks/p7x6PRF0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/t4rxsdjl.js +0 -74
- package/build/client/_app/immutable/chunks/t4rxsdjl.js.br +0 -0
- package/build/client/_app/immutable/chunks/t4rxsdjl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/uD7-7yV9.js +0 -1
- package/build/client/_app/immutable/chunks/uD7-7yV9.js.br +0 -4
- package/build/client/_app/immutable/chunks/uD7-7yV9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Dzyng0dn.js +0 -2
- package/build/client/_app/immutable/entry/app.Dzyng0dn.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Dzyng0dn.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.9fa7Jj4n.js +0 -1
- package/build/client/_app/immutable/entry/start.9fa7Jj4n.js.br +0 -0
- package/build/client/_app/immutable/entry/start.9fa7Jj4n.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CaNaBMzB.js +0 -5
- package/build/client/_app/immutable/nodes/0.CaNaBMzB.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CaNaBMzB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BCMmEnhe.js +0 -1
- package/build/client/_app/immutable/nodes/1.BCMmEnhe.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BCMmEnhe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.BO2VoEpn.js +0 -14
- package/build/client/_app/immutable/nodes/10.BO2VoEpn.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.BO2VoEpn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.BOR5Lt2T.js +0 -77
- package/build/client/_app/immutable/nodes/11.BOR5Lt2T.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BOR5Lt2T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.BGnaA6g1.js +0 -32
- package/build/client/_app/immutable/nodes/12.BGnaA6g1.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.BGnaA6g1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.BMHoWbLt.js +0 -5
- package/build/client/_app/immutable/nodes/13.BMHoWbLt.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BMHoWbLt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.BMIOGjF-.js +0 -1
- package/build/client/_app/immutable/nodes/14.BMIOGjF-.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.BMIOGjF-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.BDQ6GGok.js +0 -10
- package/build/client/_app/immutable/nodes/15.BDQ6GGok.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.BDQ6GGok.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.BYZHF6Y1.js +0 -6
- package/build/client/_app/immutable/nodes/16.BYZHF6Y1.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.BYZHF6Y1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DmiGTHZF.js +0 -4
- package/build/client/_app/immutable/nodes/2.DmiGTHZF.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DmiGTHZF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.qyqfVtUJ.js +0 -5
- package/build/client/_app/immutable/nodes/3.qyqfVtUJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.qyqfVtUJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DMxs5dS-.js +0 -3
- package/build/client/_app/immutable/nodes/4.DMxs5dS-.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DMxs5dS-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.pFV6qgYd.js +0 -7
- package/build/client/_app/immutable/nodes/5.pFV6qgYd.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.pFV6qgYd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DKZQPZQe.js +0 -4
- package/build/client/_app/immutable/nodes/6.DKZQPZQe.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DKZQPZQe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DmCbsQpY.js +0 -1
- package/build/client/_app/immutable/nodes/7.DmCbsQpY.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DmCbsQpY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.C5_-lQ12.js +0 -1
- package/build/client/_app/immutable/nodes/8.C5_-lQ12.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C5_-lQ12.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DdS_3rh5.js +0 -1
- package/build/client/_app/immutable/nodes/9.DdS_3rh5.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DdS_3rh5.js.gz +0 -0
- package/build/server/chunks/chunks/AllowanceMeter.js-C9jRsAGU.js +0 -42
- package/build/server/chunks/chunks/DecisionCard.js-u1VQ9s_v.js +0 -350
- package/build/server/chunks/chunks/DictateTextarea.js-BlEnOzcN.js +0 -85
- package/build/server/chunks/chunks/EtaLine.js-Pa4_VV6V.js +0 -79
- package/build/server/chunks/chunks/Icon.js-D7CY3joB.js +0 -129
- package/build/server/chunks/chunks/InsightsNav.js-BlxFBJfj.js +0 -22
- package/build/server/chunks/chunks/MicButton.js-BZSQAyuM.js +0 -336
- package/build/server/chunks/chunks/QuestionList.js-DglKezUe.js +0 -259
- package/build/server/chunks/chunks/SlotContent.js-YqZXXtRz.js +0 -1977
- package/build/server/chunks/chunks/StageTrack.js-BaorW-yk.js +0 -59
- package/build/server/chunks/chunks/TimeBar.js-k38rc7ZI.js +0 -32
- package/build/server/chunks/chunks/TimeLegend.js-BQVvgsvs.js +0 -29
- package/build/server/chunks/chunks/access.js-XFAczbHS.js +0 -816
- package/build/server/chunks/chunks/anchor.js-ByXDBfbi.js +0 -20
- package/build/server/chunks/chunks/arrow-down.js-DXDJc9EE.js +0 -18
- package/build/server/chunks/chunks/arrow-left.js-6Yey35CE.js +0 -18
- package/build/server/chunks/chunks/arrow-right.js-CfbPWRqu.js +0 -18
- package/build/server/chunks/chunks/arrow-up.js-AhghNbhW.js +0 -18
- package/build/server/chunks/chunks/bell.js-CAlv92RY.js +0 -143
- package/build/server/chunks/chunks/blocks.js-BL9jLCe-.js +0 -710
- package/build/server/chunks/chunks/bus.svelte.js-DRTptEhF.js +0 -9
- package/build/server/chunks/chunks/button.js-HeBqLheH.js +0 -7311
- package/build/server/chunks/chunks/chat.svelte.js-Cgdbtjbw.js +0 -537
- package/build/server/chunks/chunks/check.js-bmUhmMEz.js +0 -15
- package/build/server/chunks/chunks/checks.js-BnIxIaus.js +0 -175
- package/build/server/chunks/chunks/chevron-down.js-D75hVSIe.js +0 -15
- package/build/server/chunks/chunks/chevron-right.js-yhLg_GaH.js +0 -15
- package/build/server/chunks/chunks/circle-dashed.js-Bm3gZCXK.js +0 -24
- package/build/server/chunks/chunks/client.js-BUNengrw.js +0 -24
- package/build/server/chunks/chunks/clock.js-D7JTvRbC.js +0 -18
- package/build/server/chunks/chunks/compass.js-Tq6uiG8I.js +0 -23
- package/build/server/chunks/chunks/detail.js-COMRu1TY.js +0 -133
- package/build/server/chunks/chunks/external-link.js-WxVF0xXO.js +0 -24
- package/build/server/chunks/chunks/file-text.js-CAo3vdqd.js +0 -26
- package/build/server/chunks/chunks/gauge.js-Dw9bgE72.js +0 -35
- package/build/server/chunks/chunks/git-pull-request.js-Cx1w8BQr.js +0 -20
- package/build/server/chunks/chunks/hammer.js-fp_Kidfj.js +0 -24
- package/build/server/chunks/chunks/hand.js-xkYPYJZj.js +0 -37
- package/build/server/chunks/chunks/harbour.js-xu7EfIHk.js +0 -113
- package/build/server/chunks/chunks/http.js-TzZuOtxn.js +0 -25
- package/build/server/chunks/chunks/http2.js-BO84xGO4.js +0 -26
- package/build/server/chunks/chunks/inbox.js-CW2sFmx9.js +0 -114
- package/build/server/chunks/chunks/inbox.svelte.js-OoKhjjWM.js +0 -134
- package/build/server/chunks/chunks/index-server.js-CtyUzIGY.js +0 -17
- package/build/server/chunks/chunks/index-server2.js-DMc-UvjC.js +0 -19
- package/build/server/chunks/chunks/index.js-Bn6j9diM.js +0 -1524
- package/build/server/chunks/chunks/index2.js-CXaRTuov.js +0 -46
- package/build/server/chunks/chunks/internal.js-C_uDXIpd.js +0 -146
- package/build/server/chunks/chunks/keys.js-CdtCzv-v.js +0 -20
- package/build/server/chunks/chunks/live.svelte.js-BRUTNc9D.js +0 -196
- package/build/server/chunks/chunks/loader-circle.js-IYRaUYWq.js +0 -16
- package/build/server/chunks/chunks/message-circle-question-mark.js-DwrMi0ty.js +0 -25
- package/build/server/chunks/chunks/message-square-text.js-N5uEmy8L.js +0 -25
- package/build/server/chunks/chunks/message-square.js-Hp-6BHgG.js +0 -22
- package/build/server/chunks/chunks/minus.js-bsfnwE-h.js +0 -15
- package/build/server/chunks/chunks/monitor-play.js-B7qbbPH6.js +0 -28
- package/build/server/chunks/chunks/preview.js-CVD-Kwks.js +0 -68
- package/build/server/chunks/chunks/prreview.js-C5XxDIu2.js +0 -85
- package/build/server/chunks/chunks/root.js-CQzYN4Pu.js +0 -3105
- package/build/server/chunks/chunks/runtime.js-fVZqJsqU.js +0 -13280
- package/build/server/chunks/chunks/scale.js-vP4G0lZM.js +0 -21
- package/build/server/chunks/chunks/shield-check.js-PJLnCKD9.js +0 -23
- package/build/server/chunks/chunks/slots.svelte.js-0Ejhe-hS.js +0 -34
- package/build/server/chunks/chunks/spec.js-B0yI1XqG.js +0 -307
- package/build/server/chunks/chunks/split.js-BsCU24rQ.js +0 -20
- package/build/server/chunks/chunks/square-terminal.js-D5Z4Sl2-.js +0 -47
- package/build/server/chunks/chunks/tone.js-r2qFVrZC.js +0 -30
- package/build/server/chunks/chunks/trash.js-DYFbRevY.js +0 -46
- package/build/server/chunks/chunks/triangle-alert.js-DuE40HSU.js +0 -38
- package/build/server/chunks/chunks/utils.js-DTSGDHlH.js +0 -2956
- package/build/server/chunks/chunks/view.js-tvgxW0fE.js +0 -76
- package/build/server/chunks/chunks/view2.js-BdUXqNlY.js +0 -87
- package/build/server/chunks/chunks/views.js-B0wP-tuB.js +0 -137
- package/build/server/chunks/chunks/waypoints.js-D3HN7bje.js +0 -67
- package/build/server/chunks/chunks/x.js-tlds9Ooz.js +0 -18
- package/build/server/chunks/entries/endpoints/api/events/_server.ts.js-gil57_h5.js +0 -93
- package/build/server/chunks/entries/endpoints/api/firstmate/chat/_server.ts.js-CWFdWS2r.js +0 -74
- package/build/server/chunks/entries/endpoints/api/firstmate/commands/_server.ts.js-0h1duDYU.js +0 -110
- package/build/server/chunks/entries/endpoints/api/firstmate/input/_server.ts.js-DUtAFI8B.js +0 -42
- package/build/server/chunks/entries/endpoints/api/firstmate/interrupt/_server.ts.js-BVjvk1Kr.js +0 -35
- package/build/server/chunks/entries/endpoints/api/firstmate/messages/_server.ts.js-CZKuOhTq.js +0 -57
- package/build/server/chunks/entries/endpoints/api/firstmate/pick/_server.ts.js-DbYNDgMY.js +0 -45
- package/build/server/chunks/entries/endpoints/api/firstmate/start/_server.ts.js-Dez_V83F.js +0 -35
- package/build/server/chunks/entries/endpoints/api/fleet/_server.ts.js-XScFl7NC.js +0 -27
- package/build/server/chunks/entries/endpoints/api/health/_server.ts.js-BOvoz2OJ.js +0 -27
- package/build/server/chunks/entries/endpoints/api/inbox/_server.ts.js-DuUHrmV4.js +0 -51
- package/build/server/chunks/entries/endpoints/api/insights/_server.ts.js-P-j2jdcu.js +0 -27
- package/build/server/chunks/entries/endpoints/api/plugins/_server.ts.js-BuaL2gbp.js +0 -27
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/_server.ts.js-Dwoaon5p.js +0 -32
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/commands/_server.ts.js-CpRObQnb.js +0 -41
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/consent/_server.ts.js-Dml05WPU.js +0 -53
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/draft/_server.ts.js-rp9RtX4F.js +0 -40
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/file/_server.ts.js-DLdJWcj-.js +0 -63
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/test/_server.ts.js-Co_h1q_m.js +0 -46
- package/build/server/chunks/entries/endpoints/api/services/_server.ts.js-SRzfx-2h.js +0 -46
- package/build/server/chunks/entries/endpoints/api/slots/_server.ts.js-lFuRL8QC.js +0 -35
- package/build/server/chunks/entries/endpoints/api/specs/_id_/_server.ts.js-D-QFRPpb.js +0 -59
- package/build/server/chunks/entries/endpoints/api/specs/_id_/build-request/_server.ts.js-CEZLC3cJ.js +0 -47
- package/build/server/chunks/entries/endpoints/api/specs/_id_/comments/_comment_/_server.ts.js-BHNzMZ7H.js +0 -36
- package/build/server/chunks/entries/endpoints/api/specs/_id_/comments/_server.ts.js-DHMiene7.js +0 -57
- package/build/server/chunks/entries/endpoints/api/specs/_id_/images/_name_/_server.ts.js-BxmqxnuG.js +0 -49
- package/build/server/chunks/entries/endpoints/api/specs/_id_/images/_server.ts.js-CvRTk1JX.js +0 -55
- package/build/server/chunks/entries/endpoints/api/specs/_id_/sent/_server.ts.js-VHXvHVC9.js +0 -36
- package/build/server/chunks/entries/endpoints/api/specs/_id_/turn/_server.ts.js-BjbvOskQ.js +0 -82
- package/build/server/chunks/entries/endpoints/api/specs/_server.ts.js-CUNgX4FQ.js +0 -40
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/_server.ts.js-CTJxYuKH.js +0 -32
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/artifacts/_...name_/_server.ts.js-BsDmTo5q.js +0 -51
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/diff/_server.ts.js-DmDd31bm.js +0 -39
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/output/_server.ts.js-xNagO0jC.js +0 -84
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/preview/_server.ts.js-fNh7CbDX.js +0 -102
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/_server.ts.js-DL1M1PqI.js +0 -34
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/ask/_server.ts.js-G8t4mipV.js +0 -40
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/check/_server.ts.js-B0ymV1Pa.js +0 -39
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/guide/_server.ts.js-Bi08FNu1.js +0 -39
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/runs/_run_/stop/_server.ts.js-C_TftzeG.js +0 -32
- package/build/server/chunks/entries/fallbacks/error.svelte.js-DlN_tCrh.js +0 -15
- package/build/server/chunks/entries/hooks.server.js-IwCMs7or.js +0 -40
- package/build/server/chunks/entries/pages/_layout.server.ts.js-DQI-pH0T.js +0 -20
- package/build/server/chunks/entries/pages/_layout.svelte.js-BJuZaosz.js +0 -10454
- package/build/server/chunks/entries/pages/_page.server.ts.js-PgqrVobO.js +0 -16
- package/build/server/chunks/entries/pages/_page.svelte.js-BI4c5H0n.js +0 -3699
- package/build/server/chunks/entries/pages/decisions/_page.server.ts.js-SL6FScVj.js +0 -11
- package/build/server/chunks/entries/pages/decisions/_page.svelte.js-ClTz3O_K.js +0 -167
- package/build/server/chunks/entries/pages/harbour/_page.server.ts.js-DIvSuIkZ.js +0 -20
- package/build/server/chunks/entries/pages/harbour/_page.svelte.js-43FRNSVK.js +0 -1346
- package/build/server/chunks/entries/pages/headroom/_page.server.ts.js-CGLa7Yrr.js +0 -11
- package/build/server/chunks/entries/pages/headroom/_page.svelte.js-zmKQdAwy.js +0 -135
- package/build/server/chunks/entries/pages/inbox/_page.svelte.js-wTvAFPNM.js +0 -175
- package/build/server/chunks/entries/pages/plugins/_plugin_/_page_/_page.server.ts.js-BoG4CT_l.js +0 -15
- package/build/server/chunks/entries/pages/plugins/_plugin_/_page_/_page.svelte.js-DfAqJJ3i.js +0 -55
- package/build/server/chunks/entries/pages/projects/_id_/_plugin_/_tab_/_page.server.ts.js-BVTs44zi.js +0 -15
- package/build/server/chunks/entries/pages/projects/_id_/_plugin_/_tab_/_page.svelte.js-B472Pugu.js +0 -66
- package/build/server/chunks/entries/pages/projects/_id_/passage/_page.server.ts.js-CER4deq2.js +0 -14
- package/build/server/chunks/entries/pages/projects/_id_/passage/_page.svelte.js-CWjEArXY.js +0 -394
- package/build/server/chunks/entries/pages/projects/_id_/passage/edit/_page.server.ts.js-DiCdDip4.js +0 -15
- package/build/server/chunks/entries/pages/projects/_id_/passage/edit/_page.svelte.js-iHacn81K.js +0 -1859
- package/build/server/chunks/entries/pages/projects/_page.server.ts.js-BH_VcZlY.js +0 -37
- package/build/server/chunks/entries/pages/projects/_page.svelte.js-B_NQ-Wg3.js +0 -270
- package/build/server/chunks/entries/pages/spec/_page.server.ts.js-CTzZ3jGx.js +0 -31
- package/build/server/chunks/entries/pages/spec/_page.svelte.js-BJjweG9u.js +0 -1561
- package/build/server/chunks/entries/pages/tasks/_id_/_page.server.ts.js-YgQ9nhRn.js +0 -25
- package/build/server/chunks/entries/pages/tasks/_id_/_page.svelte.js-Dr2wwDJG.js +0 -2063
- package/build/server/chunks/entries/pages/tasks/_id_/doc/_page.server.ts.js-DdBsWj8_.js +0 -24
- package/build/server/chunks/entries/pages/tasks/_id_/doc/_page.svelte.js-DOyZ1QzI.js +0 -145
- package/build/server/chunks/entries/pages/tasks/_id_/review/_page.server.ts.js-DY0lh_8-.js +0 -15
- package/build/server/chunks/entries/pages/tasks/_id_/review/_page.svelte.js-BDaRELgE.js +0 -692
- package/build/server/chunks/entries/pages/time/_page.server.ts.js-kriWArLo.js +0 -11
- package/build/server/chunks/entries/pages/time/_page.svelte.js-CSXGxvVs.js +0 -107
- package/build/server/chunks/handler-BZ-YqSXJ.js +0 -1474
- package/build/server/chunks/index.js-CmcXVwBU.js +0 -4296
- package/build/server/chunks/manifest.js-DqwS7AJB.js +0 -434
- package/build/server/chunks/nodes/0.js-DS2IDkUW.js +0 -32
- package/build/server/chunks/nodes/1.js-_0OBbjVP.js +0 -9
- package/build/server/chunks/nodes/10.js-CMSpRrcc.js +0 -33
- package/build/server/chunks/nodes/11.js-D1M01GlQ.js +0 -33
- package/build/server/chunks/nodes/12.js-DaC2vk2U.js +0 -37
- package/build/server/chunks/nodes/13.js-BSWYX8Ak.js +0 -33
- package/build/server/chunks/nodes/14.js-CY9oBxXM.js +0 -33
- package/build/server/chunks/nodes/15.js-Bg9hD2dR.js +0 -33
- package/build/server/chunks/nodes/16.js-qlcIEvV6.js +0 -32
- package/build/server/chunks/nodes/2.js-CW_-me_g.js +0 -32
- package/build/server/chunks/nodes/3.js-CUCcQUgI.js +0 -32
- package/build/server/chunks/nodes/4.js-CSYxmBts.js +0 -34
- package/build/server/chunks/nodes/5.js-CHwpTnZj.js +0 -32
- package/build/server/chunks/nodes/6.js-XHZwJGEg.js +0 -9
- package/build/server/chunks/nodes/7.js-DK_vuZQs.js +0 -32
- package/build/server/chunks/nodes/8.js-Crd93Nlx.js +0 -34
- package/build/server/chunks/nodes/9.js-CWqhWBb9.js +0 -32
- /package/build/client/_app/immutable/assets/{4.5dJKCkOT.css → 5.5dJKCkOT.css} +0 -0
- /package/build/client/_app/immutable/assets/{4.5dJKCkOT.css.br → 5.5dJKCkOT.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{4.5dJKCkOT.css.gz → 5.5dJKCkOT.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{MicButton.Dga9zAug.css → checks.Dga9zAug.css} +0 -0
- /package/build/client/_app/immutable/assets/{MicButton.Dga9zAug.css.br → checks.Dga9zAug.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{MicButton.Dga9zAug.css.gz → checks.Dga9zAug.css.gz} +0 -0
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{o as Ct}from"../chunks/BGINfGsV.js";import{aV as Sr,be as Cr,bD as Rr,k as lt,p as dt,i as s,N as Ut,h as e,M as it,m as u,s as o,x as pt,f as re,a as d,r as i,o as L,t as I,d as R,b as ct,e as B,q as S,v as ht,n as Re,w as ze,c as m,a7 as It,ag as st,J as fr,y as $t,l as Tr,G as rr,$ as Ar}from"../chunks/L-6wuY5f.js";import{s as Vt,r as Yt,i as k,p as gt}from"../chunks/COiIt96y.js";import{e as Ke,i as Kt,s as Te,a as Ee,r as yt,g as qr,k as Ir,b as Pr,h as Er}from"../chunks/DGy76IbW.js";import{b as kt}from"../chunks/DxGQT-Hz.js";import{b as Ur,g as Bt}from"../chunks/_7N5fmOy.js";import{B as $e}from"../chunks/BHsdHLbF.js";import{c as Nr}from"../chunks/BWJa0dU7.js";import{S as ar}from"../chunks/BXN538J3.js";import{c as Dr}from"../chunks/CrCQ2NNA.js";import{h as St,m as Nt}from"../chunks/C6BQPSOs.js";import{b as xt}from"../chunks/Da92_52d.js";import{D as Ge,C as Or}from"../chunks/CtlVBKf-.js";import{d as nr}from"../chunks/Db0WMrvR.js";import{L as bt}from"../chunks/Brlpgp90.js";import{A as Wr}from"../chunks/B1XxiJam.js";import{R as or,P as zr,T as Mr}from"../chunks/FQ69txbU.js";import{k as Lr}from"../chunks/CkFDaaNz.js";import{X as Qt}from"../chunks/BUo4hMcM.js";import{I as Xt}from"../chunks/CQlHU-Rx.js";import{A as Jr}from"../chunks/OeqXO44y.js";import{A as $r}from"../chunks/CeYIQAXD.js";import{C as Br}from"../chunks/BR5v76-T.js";import{a as sr}from"../chunks/DKQe4Tss.js";import{C as Fr}from"../chunks/Bfi4vm-w.js";import{H as Hr}from"../chunks/C-xrRA1Y.js";const Gr=[];function ir(r,t=!1,n=!1){return Et(r,new Map,"",Gr,null,n)}function Et(r,t,n,h,a=null,b=!1){if(typeof r=="object"&&r!==null){var C=t.get(r);if(C!==void 0)return C;if(r instanceof Map)return new Map(r);if(r instanceof Set)return new Set(r);if(Sr(r)){var x=Array(r.length);t.set(r,x),a!==null&&t.set(a,x);for(var O=0;O<r.length;O+=1){var me=r[O];O in r&&(x[O]=Et(me,t,n,h,null,b))}return x}if(Cr(r)===Rr){x={},t.set(r,x),a!==null&&t.set(a,x);for(var H of Object.keys(r))x[H]=Et(r[H],t,n,h,null,b);return x}if(r instanceof Date)return r.getTime(),structuredClone(r);if(typeof r.toJSON=="function"&&!b)return Et(r.toJSON(),t,n,h,r)}if(r instanceof EventTarget)return r;try{return structuredClone(r)}catch{return r}}var Kr=new Set(["$$slots","$$events","$$legacy"]);function lr(r,t){let n=Yt(t,Kr);const h={name:"file-plus-corner",size:24,node:[["path",{d:"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M14 19h6"}],["path",{d:"M17 16v6"}]],aliases:["file-plus-2"]};Xt(r,Vt(()=>n,{get icon(){return h}}))}var Vr=new Set(["$$slots","$$events","$$legacy"]);function Yr(r,t){let n=Yt(t,Vr);const h={name:"image-plus",size:24,node:[["path",{d:"M16 5h6"}],["path",{d:"M19 2v6"}],["path",{d:"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"}],["circle",{cx:"9",cy:"9",r:"2"}]]};Xt(r,Vt(()=>n,{get icon(){return h}}))}var Qr=new Set(["$$slots","$$events","$$legacy"]);function dr(r,t){let n=Yt(t,Qr);const h={name:"message-square-plus",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"}],["path",{d:"M12 8v6"}],["path",{d:"M9 11h6"}]]};Xt(r,Vt(()=>n,{get icon(){return h}}))}const cr=r=>{var t=Xr(),n=u(t);Or(n,{class:"size-4"}),i(t),d(r,t)};var Xr=m('<span class="flex size-7 shrink-0 items-center justify-center rounded-full border border-brass bg-card text-sea" aria-hidden="true"><!></span>'),Zr=m(`<div class="rounded-lg border border-dashed border-hair p-5"><h2 class="font-display text-xl font-medium">What do you want built?</h2> <p class="mt-2 max-w-prose text-sm text-muted-foreground">Describe the idea in a sentence or two. The interviewer asks one question at a time,
|
|
2
|
-
offers answers with the one it recommends, and writes the spec alongside as you go.
|
|
3
|
-
Comment on anything in the spec and it will be addressed. When it is ready, send it to
|
|
4
|
-
build.</p></div>`),ea=m('<span class="ml-1.5 text-[0.7rem] font-medium tracking-wide text-brass uppercase">Recommended</span>'),ta=m("<button> <!></button>"),ra=m('<div class="mt-2 flex flex-wrap gap-2" role="group" aria-label="Suggested answers"></div>'),aa=m('<div class="flex items-start gap-3"><!> <div class="min-w-0 flex-1"><p class="mb-1 text-xs text-muted-foreground"><span class="font-semibold text-foreground">Interviewer</span></p> <div class="bubble bubble-firstmate chat-md text-[0.95rem]"><!></div> <!></div></div>'),ur=m('<div class="flex justify-end"><div class="bubble bubble-captain max-w-[85%] text-[0.95rem]"> </div></div>'),na=m('<div class="bubble bubble-firstmate chat-md text-[0.95rem]"><!></div>'),oa=m('<div class="flex items-start gap-3"><!> <div class="min-w-0 flex-1"><p class="mb-1 flex items-center gap-2 text-xs text-muted-foreground"><span class="font-semibold text-foreground">Interviewer</span> <!> </p> <!></div></div>'),sa=m(`<p class="rounded-md border border-sea/40 bg-sea/5 px-4 py-3 text-sm">The interviewer thinks the spec is ready. Read it over, comment on anything that is off, and
|
|
5
|
-
send it to build when you are happy. You can keep answering to add more.</p>`),ia=m("<!>Try again",1),la=m('<div class="flex flex-wrap items-center gap-3 rounded-md border border-danger/30 bg-danger/5 px-4 py-3" role="alert"><p class="min-w-0 flex-1 text-sm text-danger"> </p> <!></div>'),da=m("<!>Ask the interviewer",1),ca=m('<div class="flex items-center gap-3 text-sm text-muted-foreground">Your last answer has no reply yet. <!></div>'),ua=m('<div class="flex min-h-0 flex-col"><div class="max-h-[65dvh] min-h-0 flex-1 space-y-5 overflow-y-auto pr-1 xl:max-h-[calc(100dvh-20rem)]" aria-live="polite"><!> <!> <!> <!> <!> <!></div> <div class="mt-4 border-t border-hair pt-4"><label for="spec-answer" class="sr-only"> </label> <div class="flex items-end gap-2"><div class="min-w-0 flex-1"><!></div> <!></div> <p class="mt-2 text-xs text-muted-foreground"> </p></div></div>');function va(r,t){dt(t,!0);let n=B(""),h=B(!1),a=B(void 0);Ct(()=>s(h,!0));const b=S(()=>t.draft.interview.turns),C=S(()=>e(b).length>0),x=S(()=>e(b).at(-1)),O=S(()=>!t.busy&&e(x)?.role==="agent"?e(x):null),me=S(()=>!t.busy&&e(x)?.role==="captain"),H=S(()=>t.draft.interview.usage);Ut(()=>{e(b).length,t.streaming,t.busy,t.pending,it().then(()=>e(a)?.scrollTo({top:e(a).scrollHeight}))});async function V(){nr.phase!=="idle"&&nr.commit();const v=e(n).trim();if(!v||t.busy)return;const f=e(n);s(n,""),await t.onAnswer(v)||s(n,f,!0)}function W(v){v.key==="Enter"&&!v.shiftKey&&!v.isComposing&&(v.preventDefault(),V())}async function E(v){s(n,v,!0),await it();const f=e(a)?.parentElement?.querySelector("textarea[data-answer]");f?.focus(),f?.setSelectionRange(f.value.length,f.value.length)}const P=v=>v>=1e3?`${(v/1e3).toFixed(1)}k`:String(v),z=S(()=>e(H).turns?` · ${e(H).turns} turn${e(H).turns===1?"":"s"}, ${P(e(H).inputTokens)} tokens in, ${P(e(H).outputTokens)} out${e(H).costUsd>0?`, about $${e(H).costUsd.toFixed(2)} at API prices`:""}`:"");var J=ua(),G=u(J),ae=u(G);{var U=v=>{var f=Zr();d(v,f)};k(ae,v=>{e(C)||v(U)})}var ie=o(ae,2);Ke(ie,17,()=>e(b),Kt,(v,f)=>{var Y=pt(),fe=re(Y);{var Ie=c=>{var p=aa(),T=u(p);cr(T);var A=o(T,2),X=o(u(A),2),ue=u(X);{var ke=ve=>{var be=pt(),Ue=re(be);St(Ue,()=>Nt(e(f).text)),d(ve,be)},ye=ve=>{var be=ht();I(()=>R(be,e(f).text)),d(ve,be)};k(ue,ve=>{e(h)?ve(ke):ve(ye,-1)})}i(X);var ge=o(X,2);{var se=ve=>{var be=ra();Ke(be,21,()=>e(f).options,Kt,(Ue,_e,Ne)=>{var je=ta(),he=u(je),l=o(he);{var g=j=>{var ne=ea();d(j,ne)};k(l,j=>{e(f).recommended===Ne&&j(g)})}i(je),I(()=>{Ee(je,1,`rounded-md border px-3 py-1.5 text-left text-sm hover:bg-accent ${e(f).recommended===Ne?"border-brass bg-card":"border-hair bg-card"}`),R(he,`${e(_e)??""} `)}),Re("click",je,()=>E(e(_e))),d(Ue,je)}),i(be),d(ve,be)};k(ge,ve=>{e(O)===e(f)&&e(f).options.length&&ve(se)})}i(A),i(p),d(c,p)},pe=c=>{var p=ur(),T=u(p),A=L(T,!0);i(p),I(()=>R(A,e(f).text)),d(c,p)};k(fe,c=>{e(f).role==="agent"?c(Ie):c(pe,-1)})}d(v,Y)});var F=o(ie,2);{var _=v=>{var f=ur(),Y=u(f),fe=L(Y,!0);i(f),I(()=>R(fe,t.pending)),d(v,f)};k(F,v=>{t.pending&&v(_)})}var y=o(F,2);{var $=v=>{var f=oa(),Y=u(f);cr(Y);var fe=o(Y,2),Ie=u(fe),pe=o(u(Ie),2);bt(pe,{class:"size-3 animate-spin","aria-hidden":"true"});var c=o(pe);i(Ie);var p=o(Ie,2);{var T=A=>{var X=na(),ue=u(X);{var ke=ge=>{var se=pt(),ve=re(se);St(ve,()=>Nt(t.streaming)),d(ge,se)},ye=ge=>{var se=ht();I(()=>R(se,t.streaming)),d(ge,se)};k(ue,ge=>{e(h)?ge(ke):ge(ye,-1)})}i(X),d(A,X)};k(p,A=>{t.streaming&&A(T)})}i(fe),i(f),I(()=>R(c,` ${t.activity??(t.streaming?"Writing…":"Thinking…")??""}`)),d(v,f)};k(y,v=>{t.busy&&v($)})}var K=o(y,2);{var le=v=>{var f=sa();d(v,f)};k(K,v=>{t.draft.interview.done&&!t.busy&&e(x)?.role==="agent"&&v(le)})}var oe=o(K,2);{var Z=v=>{var f=la(),Y=u(f),fe=L(Y,!0),Ie=o(Y,2);{var pe=c=>{$e(c,{variant:"outline",size:"sm",get onclick(){return t.onRetry},children:(p,T)=>{var A=ia(),X=re(A);or(X,{"aria-hidden":"true"}),ze(),d(p,A)},$$slots:{default:!0}})};k(Ie,c=>{e(me)&&c(pe)})}i(f),I(()=>R(fe,t.error)),d(v,f)},ee=v=>{var f=ca(),Y=o(u(f));$e(Y,{variant:"outline",size:"sm",get onclick(){return t.onRetry},children:(fe,Ie)=>{var pe=da(),c=re(pe);or(c,{"aria-hidden":"true"}),ze(),d(fe,pe)},$$slots:{default:!0}}),i(f),d(v,f)};k(oe,v=>{t.error?v(Z):e(me)&&v(ee,1)})}i(G),xt(G,v=>s(a,v),()=>e(a));var N=o(G,2),w=u(N),M=L(w,!0),we=o(w,2),de=u(we),ce=u(de);{let v=S(()=>e(C)?2:3),f=S(()=>e(C)?"Answer in your own words, or pick a suggestion…":"e.g. Let a family add their trip photos to one shared album");Ge(ce,{id:"spec-answer","data-answer":!0,get rows(){return e(v)},get placeholder(){return e(f)},onkeydown:W,class:"bg-card text-[0.95rem]",get value(){return e(n)},set value(Y){s(n,Y,!0)}})}i(de);var D=o(de,2);{let v=S(()=>t.busy||!e(n).trim()),f=S(()=>e(C)?"Send answer":"Start the interview");$e(D,{size:"icon",onclick:V,get disabled(){return e(v)},get"aria-label"(){return e(f)},title:"Send (Enter)",children:(Y,fe)=>{var Ie=pt(),pe=re(Ie);{var c=T=>{bt(T,{class:"animate-spin","aria-hidden":"true"})},p=T=>{Wr(T,{"aria-hidden":"true"})};k(pe,T=>{t.busy?T(c):T(p,-1)})}d(Y,Ie)},$$slots:{default:!0}})}i(we);var Ae=o(we,2),Me=L(Ae);i(N),i(J),I(()=>{Te(G,"aria-busy",t.busy),R(M,e(C)?"Your answer":"What you want built"),R(Me,`Enter sends, Shift+Enter starts a new line. Interviewer: Claude ${t.model??""}, ${t.effort??""} effort, read-only${e(z)??""}.`)}),d(r,J),ct()}lt(["click"]);const Le=[{id:"project",title:"Project",prompt:"Which project this is for, a short name for the work, and the idea in one sentence.",example:"Photo library · Shared albums · Let a family add photos to one album and see each other’s."},{id:"problem",title:"Problem and goal",prompt:"What is wrong or missing today, and what will be true once this is done.",example:"Problem: photos from a trip end up scattered across four phones. Goal: everyone adds to one album and sees the lot."},{id:"audience",title:"Who it is for",prompt:"The people who will use it, what they are trying to get done, and how often.",example:"Families sharing holiday photos, mostly on phones, a few times a year."},{id:"journeys",title:"User journeys",prompt:"Walk through how someone uses it, step by step. One journey per entry.",example:"Open Albums → “New shared album” → invite by email → a guest opens the link and adds photos."},{id:"scope",title:"Scope and non-goals",prompt:"What this piece of work includes, and what it deliberately leaves for later.",example:"In: creating, inviting and adding photos. Not now: comments and likes."},{id:"requirements",title:"Requirements",prompt:"The checks that tell you it is done. Each becomes a tick box Firstmate works through.",example:"A guest can add photos without making an account."},{id:"ui",title:"UI notes and references",prompt:"How it should look and feel, with links or screenshots of anything to follow.",example:"Match the existing album page; quiet, no new colours. See the album grid screenshot."},{id:"constraints",title:"Constraints and risks",prompt:"Rules it must follow, and what could go wrong or needs care.",example:"Must keep originals private unless shared. Risk: very large uploads on slow connections."},{id:"questions",title:"Open questions",prompt:"Anything you have not decided yet. Firstmate will come back to you on these.",example:"Can a guest remove a photo someone else added?"}],We=r=>r.trim().length>0,at=r=>r.map(t=>t.trim()).filter(Boolean);function Dt(r,t){switch(t){case"project":return We(r.project)||We(r.title)||We(r.summary);case"problem":return We(r.problem)||We(r.goal);case"audience":return We(r.audience);case"journeys":return at(r.journeys).length>0;case"scope":return We(r.scope)||We(r.nonGoals);case"requirements":return at(r.requirements).length>0;case"ui":return We(r.uiNotes)||at(r.links).length>0||r.images.length>0;case"constraints":return We(r.constraints)||We(r.risks);case"questions":return at(r.questions).length>0}}function ma(r){return Le.filter(t=>Dt(r,t.id)).length}function _t(r){return r.title.trim()||"Untitled spec"}function vr(r){return{id:r.id,title:_t(r),project:r.project.trim(),updatedAt:r.updatedAt,sentAt:r.sentAt,filled:ma(r)}}function fa(r){return/^https?:\/\/\S+$/i.test(r)?`<${r}>`:r}function Ft(r,t){return`${r}${t.replace(/\n/g,`
|
|
6
|
-
`)}`}function jt(r,t,n=h=>h.name){const h=(b,C)=>We(C)?`**${b}**
|
|
7
|
-
|
|
8
|
-
${C.trim()}`:"",a=b=>b.filter(Boolean).join(`
|
|
9
|
-
|
|
10
|
-
`);switch(t){case"project":return a([We(r.project)?`**Project:** ${r.project.trim()}`:"",r.summary.trim()]);case"problem":return a([h("Problem",r.problem),h("Goal",r.goal)]);case"audience":return r.audience.trim();case"journeys":return at(r.journeys).map((b,C)=>Ft(`${C+1}. `,b)).join(`
|
|
11
|
-
`);case"scope":return a([h("In scope",r.scope),h("Not in scope",r.nonGoals)]);case"requirements":return at(r.requirements).map(b=>Ft("- [ ] ",b)).join(`
|
|
12
|
-
`);case"ui":{const b=at(r.links);return a([r.uiNotes.trim(),b.map(C=>`- ${fa(C)}`).join(`
|
|
13
|
-
`),r.images.map(C=>`}>)`).join(`
|
|
14
|
-
|
|
15
|
-
`)])}case"constraints":return a([h("Constraints",r.constraints),h("Risks",r.risks)]);case"questions":return at(r.questions).map(b=>Ft("- ",b)).join(`
|
|
16
|
-
`)}}function pr(r,t=n=>n.name){const n=[`# ${_t(r)}`];for(const h of Le){const a=jt(r,h.id,t);a&&(h.id==="project"?n.push(a):n.push(`## ${h.title}`,a))}return n.join(`
|
|
17
|
-
|
|
18
|
-
`)+`
|
|
19
|
-
`}function mr(r){const t=We(r.project)?`Build request for ${r.project.trim()}`:"Build request",n=We(r.title)?`: ${r.title.trim()}`:"";return`${t}${n}. Please build the spec below; come back to me with any questions before planning the work.`}function Ht(r,t){const n=Array.from(r.trim());return n.length>t?`${n.slice(0,t).join("").trimEnd()}…`:r}function pa(r,t,n=null){if(!n)return`${mr(r)}
|
|
20
|
-
|
|
21
|
-
${pr(r,t)}`;const h=at(r.requirements).length,a={...r,title:Ht(r.title,200),project:Ht(r.project,200),summary:Ht(r.summary,1500)};return[mr(a),`# ${_t(a)}`,jt(a,"project",t),`The full spec${h?` (${h} requirement${h===1?"":"s"})`:""} is too long for one message, so it is attached as a file: <${n}>`].filter(Boolean).join(`
|
|
22
|
-
|
|
23
|
-
`).concat(`
|
|
24
|
-
`)}new Set(Le.map(r=>r.id));var ga=m('<input data-entry="" class="h-9 w-full min-w-0 rounded-md border border-input bg-card px-2.5 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50"/>'),ha=m('<li class="flex items-start gap-2"><span class="tabular mt-2 w-6 shrink-0 text-right text-sm text-muted-foreground" aria-hidden="true"> </span> <!> <button type="button" class="mt-1 rounded-md p-1.5 text-muted-foreground hover:bg-muted hover:text-foreground"><!></button></li>'),ba=m('<fieldset class="min-w-0"><legend class="text-sm font-medium"> </legend> <p class="mt-0.5 text-xs text-muted-foreground"> </p> <ol class="mt-2 space-y-2"></ol> <button type="button" class="mt-2 inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-sm text-sea hover:bg-muted"><!> </button></fieldset>');function Pt(r,t){dt(t,!0);let n=gt(t,"items",15),h=gt(t,"numbered",3,!1),a=gt(t,"multiline",3,!1),b=B(void 0);Ct(()=>{n().length||n([""])});const C=U=>e(b)?.querySelectorAll("[data-entry]")[U];async function x(U=n().length){n([...n().slice(0,U),"",...n().slice(U)]),await it(),C(U)?.focus()}async function O(U){n(n().filter((ie,F)=>F!==U)),await it(),C(Math.min(U,n().length-1))?.focus()}function me(U,ie){U.key==="Enter"&&!U.shiftKey&&!U.isComposing&&(!a()||U.metaKey)?(U.preventDefault(),x(ie+1)):U.key==="Backspace"&&!n()[ie]&&n().length>1&&(U.preventDefault(),O(ie).then(()=>C(Math.max(0,ie-1))?.focus()))}var H=ba(),V=u(H),W=L(V,!0),E=o(V,2),P=L(E),z=o(E,2);Ke(z,21,n,Kt,(U,ie,F)=>{var _=ha(),y=u(_),$=L(y,!0),K=o(y,2);{var le=N=>{{let w=S(()=>t.item);Ge(N,{"data-entry":!0,rows:2,get placeholder(){return t.placeholder},get"aria-label"(){return`${e(w)??""} ${F+1}`},class:"min-h-10 bg-card",onkeydown:M=>me(M,F),get value(){return n()[F]},set value(M){n(n()[F]=M,!0)}})}},oe=N=>{var w=ga();yt(w),I(()=>{Te(w,"placeholder",t.placeholder),Te(w,"aria-label",`${t.item??""} ${F+1}`)}),Re("keydown",w,M=>me(M,F)),kt(w,()=>n()[F],M=>n(n()[F]=M,!0)),d(N,w)};k(K,N=>{a()?N(le):N(oe,-1)})}var Z=o(K,2),ee=u(Z);Qt(ee,{class:"size-4"}),i(Z),i(_),I(N=>{R($,h()?`${F+1}.`:"•"),Te(Z,"aria-label",`Remove ${N??""} ${F+1}`)},[()=>t.item.toLowerCase()]),Re("click",Z,()=>O(F)),d(U,_)}),i(z),xt(z,U=>s(b,U),()=>e(b));var J=o(z,2),G=u(J);zr(G,{class:"size-4","aria-hidden":"true"});var ae=o(G,1,!0);i(J),i(H),I(()=>{R(W,t.label),R(P,`${a()?"⌘ Enter":"Enter"} adds another; an empty one is left out.`),R(ae,t.addLabel)}),Re("click",J,()=>x()),d(r,H),ct()}lt(["keydown","click"]);const Ve=(r,t=st,n=st,h=st)=>{var a=_a(),b=re(a),C=L(b,!0),x=o(b,2),O=L(x,!0);I(()=>{Te(b,"for",t()),R(C,n()),R(O,h())}),d(r,a)};var _a=m('<label class="block text-sm font-medium"> </label> <p class="mt-0.5 text-xs text-muted-foreground"> </p>',1),xa=m("<option></option>"),wa=m('<p class="mt-1.5 text-xs text-muted-foreground">A project Firstmate does not know yet; it will ask where it lives.</p>'),ya=m('<div><!> <input id="spec-project" list="spec-projects" autocomplete="off"/> <datalist id="spec-projects"></datalist> <!></div> <div><!> <input id="spec-title"/></div> <div><!> <!></div>',1),Gt=m("<div><!> <!></div> <div><!> <!></div>",1),ka=m("<div><!> <!></div>"),ja=m('<li class="min-w-0 rounded-md border bg-card p-2"><div class="relative"><img class="aspect-video w-full rounded-sm bg-muted object-cover" loading="lazy"/> <button type="button" class="absolute top-1 right-1 rounded-full bg-background/90 p-1 text-muted-foreground shadow-sm hover:text-foreground" aria-label="Remove this screenshot"><!></button></div> <input class="mt-2 h-8 w-full min-w-0 rounded-sm border border-transparent bg-transparent px-1 text-xs outline-none hover:border-input focus-visible:border-ring" placeholder="Caption" aria-label="Caption"/></li>'),Sa=m('<ul class="mb-4 grid grid-cols-[repeat(auto-fill,minmax(10rem,1fr))] gap-3"></ul>'),Ca=m("<!>Adding…",1),Ra=m("<!>Choose screenshots",1),Ta=m('<p class="mt-2 text-sm text-danger" role="alert"> </p>'),Aa=m(`<div><!> <!></div> <!> <div><p class="text-sm font-medium">Screenshots</p> <p class="mt-0.5 text-xs text-muted-foreground">Drop pictures here, paste them, or choose files. Firstmate receives each one with its
|
|
25
|
-
caption.</p> <div><!> <button type="button" class="inline-flex items-center gap-2 rounded-md px-2 py-1 text-sm text-sea hover:bg-muted"><!></button> <input type="file" accept="image/png,image/jpeg,image/webp,image/gif" multiple="" class="hidden"/> <!></div></div>`,1),qa=m('<div class="space-y-6"><!></div>');function Ia(r,t){dt(t,!0);let n=gt(t,"draft",7),h=gt(t,"uploading",3,!1),a=gt(t,"uploadError",3,null),b=B(!1);const C=S(()=>!!n().project.trim()&&t.projects.length>0&&!t.projects.some(_=>_.toLowerCase()===n().project.trim().toLowerCase()));let x=B(void 0);const O=_=>[..._??[]].filter(y=>/^image\/(png|jpeg|webp|gif)$/.test(y.type));function me(_){_.preventDefault(),s(b,!1);const y=O(_.dataTransfer?.files);y.length&&t.onUpload(y)}function H(_){const y=O(_.clipboardData?.files);y.length&&(_.preventDefault(),t.onUpload(y))}var V=qa(),W=u(V);{var E=_=>{var y=ya(),$=re(y),K=u($);Ve(K,()=>"spec-project",()=>"Project",()=>"Pick one Firstmate knows, or type a new name.");var le=o(K,2);yt(le),Ee(le,1,"h-9 w-full min-w-0 rounded-md border border-input bg-card px-2.5 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 mt-2");var oe=o(le,2);Ke(oe,20,()=>t.projects,D=>D,(D,Ae)=>{var Me=xa(),v={};I(()=>{v!==(v=Ae)&&(Me.value=(Me.__value=v)??"")}),d(D,Me)}),i(oe);var Z=o(oe,2);{var ee=D=>{var Ae=wa();d(D,Ae)};k(Z,D=>{e(C)&&D(ee)})}i($);var N=o($,2),w=u(N);Ve(w,()=>"spec-title",()=>"Title",()=>"A short name for the work.");var M=o(w,2);yt(M),Ee(M,1,"h-9 w-full min-w-0 rounded-md border border-input bg-card px-2.5 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 mt-2"),i(N);var we=o(N,2),de=u(we);Ve(de,()=>"spec-summary",()=>"In one sentence",()=>"What it is, as you would say it aloud.");var ce=o(de,2);Ge(ce,{id:"spec-summary",class:"mt-2 bg-card",rows:2,get value(){return n().summary},set value(D){n().summary=D}}),i(we),kt(le,()=>n().project,D=>n().project=D),kt(M,()=>n().title,D=>n().title=D),d(_,y)},P=_=>{var y=Gt(),$=re(y),K=u($);Ve(K,()=>"spec-problem",()=>"The problem",()=>"What is wrong or missing today.");var le=o(K,2);Ge(le,{id:"spec-problem",class:"mt-2 min-h-28 bg-card",get value(){return n().problem},set value(N){n().problem=N}}),i($);var oe=o($,2),Z=u(oe);Ve(Z,()=>"spec-goal",()=>"The goal",()=>"What will be true once this is done.");var ee=o(Z,2);Ge(ee,{id:"spec-goal",class:"mt-2 min-h-24 bg-card",get value(){return n().goal},set value(N){n().goal=N}}),i(oe),d(_,y)},z=_=>{var y=ka(),$=u(y);Ve($,()=>"spec-audience",()=>"Who it is for",()=>"Who uses it, what they are trying to get done, and how often.");var K=o($,2);Ge(K,{id:"spec-audience",class:"mt-2 min-h-32 bg-card",get value(){return n().audience},set value(le){n().audience=le}}),i(y),d(_,y)},J=_=>{Pt(_,{label:"Journeys",item:"Journey",addLabel:"Add a journey",placeholder:"Describe one journey, step by step",numbered:!0,multiline:!0,get items(){return n().journeys},set items(y){n().journeys=y}})},G=_=>{var y=Gt(),$=re(y),K=u($);Ve(K,()=>"spec-scope",()=>"In scope",()=>"What this piece of work includes.");var le=o(K,2);Ge(le,{id:"spec-scope",class:"mt-2 min-h-24 bg-card",get value(){return n().scope},set value(N){n().scope=N}}),i($);var oe=o($,2),Z=u(oe);Ve(Z,()=>"spec-non-goals",()=>"Not in scope",()=>"What it deliberately leaves for later.");var ee=o(Z,2);Ge(ee,{id:"spec-non-goals",class:"mt-2 min-h-24 bg-card",get value(){return n().nonGoals},set value(N){n().nonGoals=N}}),i(oe),d(_,y)},ae=_=>{Pt(_,{label:"Requirements",item:"Requirement",addLabel:"Add a requirement",placeholder:"One thing that must be true when it is done",get items(){return n().requirements},set items(y){n().requirements=y}})},U=_=>{var y=Aa(),$=re(y),K=u($);Ve(K,()=>"spec-ui",()=>"Look and feel",()=>"Layout, tone, anything to match or avoid.");var le=o(K,2);Ge(le,{id:"spec-ui",class:"mt-2 min-h-24 bg-card",get value(){return n().uiNotes},set value(v){n().uiNotes=v}}),i($);var oe=o($,2);Pt(oe,{label:"References",item:"Reference",addLabel:"Add a link",placeholder:"https://… or the name of a page to follow",get items(){return n().links},set items(v){n().links=v}});var Z=o(oe,2),ee=o(u(Z),4),N=u(ee);{var w=v=>{var f=Sa();Ke(f,21,()=>n().images,Y=>Y.name,(Y,fe,Ie)=>{var pe=ja(),c=u(pe),p=u(c),T=o(p,2),A=u(T);Qt(A,{class:"size-3.5"}),i(T),i(c);var X=o(c,2);yt(X),i(pe),I(ue=>{Te(p,"src",ue),Te(p,"alt",e(fe).caption||"Screenshot")},[()=>t.imageUrl(e(fe))]),Re("click",T,()=>t.onRemoveImage(e(fe))),kt(X,()=>e(fe).caption,ue=>e(fe).caption=ue),d(Y,pe)}),i(f),d(v,f)};k(N,v=>{n().images.length&&v(w)})}var M=o(N,2),we=u(M);{var de=v=>{var f=Ca(),Y=re(f);bt(Y,{class:"size-4 animate-spin","aria-hidden":"true"}),ze(),d(v,f)},ce=v=>{var f=Ra(),Y=re(f);Yr(Y,{class:"size-4","aria-hidden":"true"}),ze(),d(v,f)};k(we,v=>{h()?v(de):v(ce,-1)})}i(M);var D=o(M,2);xt(D,v=>s(x,v),()=>e(x));var Ae=o(D,2);{var Me=v=>{var f=Ta(),Y=L(f,!0);I(()=>R(Y,a())),d(v,f)};k(Ae,v=>{a()&&v(Me)})}i(ee),i(Z),I(()=>{Ee(ee,1,`mt-2 rounded-lg border border-dashed p-4 transition-colors ${e(b)?"border-sea bg-sea/5":"border-hair"}`),M.disabled=h()}),It("dragover",ee,v=>{v.preventDefault(),s(b,!0)}),It("dragleave",ee,()=>s(b,!1)),It("drop",ee,me),It("paste",ee,H),Re("click",M,()=>e(x)?.click()),Re("change",D,v=>{const f=O(v.currentTarget.files);v.currentTarget.value="",f.length&&t.onUpload(f)}),d(_,y)},ie=_=>{var y=Gt(),$=re(y),K=u($);Ve(K,()=>"spec-constraints",()=>"Constraints",()=>"Rules it must follow: technology, data, permissions, deadlines.");var le=o(K,2);Ge(le,{id:"spec-constraints",class:"mt-2 min-h-24 bg-card",get value(){return n().constraints},set value(N){n().constraints=N}}),i($);var oe=o($,2),Z=u(oe);Ve(Z,()=>"spec-risks",()=>"Risks",()=>"What could go wrong, or needs extra care.");var ee=o(Z,2);Ge(ee,{id:"spec-risks",class:"mt-2 min-h-24 bg-card",get value(){return n().risks},set value(N){n().risks=N}}),i(oe),d(_,y)},F=_=>{Pt(_,{label:"Questions",item:"Question",addLabel:"Add a question",placeholder:"Something still to decide",get items(){return n().questions},set items(y){n().questions=y}})};k(W,_=>{t.section==="project"?_(E):t.section==="problem"?_(P,1):t.section==="audience"?_(z,2):t.section==="journeys"?_(J,3):t.section==="scope"?_(G,4):t.section==="requirements"?_(ae,5):t.section==="ui"?_(U,6):t.section==="constraints"?_(ie,7):t.section==="questions"&&_(F,8)})}i(V),d(r,V),ct()}lt(["click","change"]);var Pa=m('<button role="radio"> </button>'),Ea=m('<p class="mb-3 text-xs text-muted-foreground">The one message Firstmate receives. Screenshots go with it as files it can open.</p> <pre class="font-mono text-xs leading-relaxed break-words whitespace-pre-wrap text-foreground/90"> </pre>',1),Ua=m('<div class="chat-md spec-md text-sm svelte-ftjwf1"></div>'),Na=m('<div class="flex items-center gap-1" role="radiogroup" aria-label="Preview as"></div> <div class="relative mt-3 rounded-lg border bg-card px-6 py-5 shadow-xs xl:max-h-[calc(100dvh-13rem)] xl:overflow-y-auto"><!></div>',1);function Da(r,t){dt(t,!0);let n=B("document"),h=B(!1),a=B(void 0),b="";Ct(()=>s(h,!0));const C=S(()=>e(h)?Nt(t.text):"");Ut(()=>{e(C),e(n);const E=t.focus;it().then(()=>{if(!e(a))return;let P=null;for(const J of e(a).querySelectorAll("h2")){const G=!!E&&J.textContent?.trim()===E;J.classList.toggle("is-current",G),G&&(P=J)}const z=`${E}:${!!P}`;z===b||e(a).scrollHeight<=e(a).clientHeight||(b=z,e(a).scrollTo({top:P?P.offsetTop-16:0,behavior:"smooth"}))})});var x=Na(),O=re(x);Ke(O,20,()=>[["document","Document"],["sent","As sent"]],([E,P])=>E,(E,P)=>{var z=S(()=>fr(P,2));let J=()=>e(z)[0],G=()=>e(z)[1];var ae=Pa(),U=L(ae,!0);I(()=>{Te(ae,"aria-checked",e(n)===J()),Ee(ae,1,`rounded-full border px-3 py-0.5 text-xs ${e(n)===J()?"border-foreground/30 bg-accent font-medium":"border-transparent text-muted-foreground hover:text-foreground"}`),R(U,G())}),Re("click",ae,()=>s(n,J(),!0)),d(E,ae)}),i(O);var me=o(O,2),H=u(me);{var V=E=>{var P=Ea(),z=o(re(P),2),J=L(z,!0);I(()=>R(J,t.sent)),d(E,P)},W=E=>{var P=Ua();St(P,()=>e(C),!0),i(P),d(E,P)};k(H,E=>{e(n)==="sent"?E(V):e(h)&&E(W,1)})}i(me),xt(me,E=>s(a,E),()=>e(a)),d(r,x),ct()}lt(["click"]);var Oa=m("<option> </option>"),Wa=m("<!>Back",1),za=m(" <!>",1),Ma=m('<p class="text-sm text-muted-foreground">That is every section. Read the preview, then send it to build.</p>'),La=m('<div class="grid items-start gap-8 xl:grid-cols-2"><section class="min-w-0 scroll-mt-20" aria-labelledby="section-heading"><div class="flex flex-wrap items-baseline gap-3"><label><span class="sr-only">Section</span> <select class="h-8 rounded-md border border-input bg-card px-2 text-xs"></select></label> <p class="text-xs text-muted-foreground"> </p></div> <h2 id="section-heading" tabindex="-1" class="mt-2 scroll-mt-20 font-display text-2xl font-medium outline-none"> </h2> <p class="mt-1 max-w-prose text-sm text-muted-foreground"> </p> <p class="mt-3 max-w-prose border-l-2 border-hair pl-3 text-sm text-muted-foreground italic"><span class="not-italic">For example:</span> </p> <div class="mt-6"><!></div> <div class="mt-8 flex flex-wrap items-center gap-3 border-t border-hair pt-5"><!> <!></div></section> <section class="min-w-0 xl:sticky xl:top-20" aria-labelledby="preview-heading"><h2 id="preview-heading" class="section-label">Preview</h2> <div class="mt-3"><!></div></section></div>');function Ja(r,t){dt(t,!0);let n=B(0);const h=S(()=>Le[e(n)]),a=S(()=>Le.filter(w=>Dt(t.draft,w.id)).length);let b=B(void 0);async function C(w){s(n,w,!0),await it(),e(b)&&(e(b).getBoundingClientRect().top<64&&e(b).scrollIntoView({block:"start"}),e(b).focus({preventScroll:!0}))}var x=La(),O=u(x),me=u(O),H=u(me),V=o(u(H),2);Ke(V,23,()=>Le,w=>w.id,(w,M,we)=>{var de=Oa(),ce=L(de),D={};I(Ae=>{R(ce,`Step ${e(we)+1} of ${Le.length??""}: ${e(M).title??""}${Ae??""}`),D!==(D=e(we))&&(de.value=(de.__value=D)??"")},[()=>Dt(t.draft,e(M).id)?" ✓":""]),d(w,de)}),i(V);var W;qr(V),i(H);var E=o(H,2),P=L(E);i(me);var z=o(me,2),J=L(z,!0);xt(z,w=>s(b,w),()=>e(b));var G=o(z,2),ae=L(G,!0),U=o(G,2),ie=o(u(U));i(U);var F=o(U,2),_=u(F);Lr(_,()=>e(h).id,w=>{Ia(w,{get draft(){return t.draft},get section(){return e(h).id},get projects(){return t.projects},get imageUrl(){return t.imageUrl},get onUpload(){return t.onUpload},get onRemoveImage(){return t.onRemoveImage},get uploading(){return t.uploading},get uploadError(){return t.uploadError}})}),i(F);var y=o(F,2),$=u(y);{let w=S(()=>e(n)===0);$e($,{variant:"ghost",onclick:()=>C(e(n)-1),get disabled(){return e(w)},children:(M,we)=>{var de=Wa(),ce=re(de);Jr(ce,{"aria-hidden":"true"}),ze(),d(M,de)},$$slots:{default:!0}})}var K=o($,2);{var le=w=>{$e(w,{variant:"outline",onclick:()=>C(e(n)+1),children:(M,we)=>{ze();var de=za(),ce=re(de),D=o(ce);$r(D,{"aria-hidden":"true"}),I(()=>R(ce,`Next: ${Le[e(n)+1].title??""}`)),d(M,de)},$$slots:{default:!0}})},oe=w=>{var M=Ma();d(w,M)};k(K,w=>{e(n)<Le.length-1?w(le):w(oe,-1)})}i(y),i(O);var Z=o(O,2),ee=o(u(Z),2),N=u(ee);{let w=S(()=>e(h).id==="project"?null:e(h).title);Da(N,{get text(){return t.preview},get sent(){return t.asSent},get focus(){return e(w)}})}i(ee),i(Z),i(x),I(()=>{W!==(W=e(n))&&(V.value=(V.__value=W)??"",Ir(V,W)),R(P,`${e(a)??""} of ${Le.length??""} sections written`),R(J,e(h).title),R(ae,e(h).prompt),R(ie,` ${e(h).example??""}`)}),Re("change",V,w=>C(Number(w.currentTarget.value))),d(r,x),ct()}lt(["change"]);var $a=m('<p class="mb-2 border-l-2 border-brass pl-2 text-xs text-muted-foreground italic"> </p>'),Ba=m("<!> Comment",1),Fa=m('<div class="mt-3 rounded-md border border-brass/50 bg-background p-3" data-comment-box=""><!> <!> <div class="mt-2 flex items-center justify-end gap-2"><!> <!></div></div>'),Ha=m('<p class="mb-1 border-l-2 border-brass/70 pl-2 text-xs italic"> </p>'),Ga=m('<p class="mt-1 flex items-start gap-1.5 text-xs"><!> <span><span class="sr-only">Resolved:</span> </span></p>'),Ka=m(`<!>The
|
|
26
|
-
interviewer is on it`,1),Va=m('<p class="mt-1 flex items-center gap-1.5 text-xs text-muted-foreground"><!></p>'),Ya=m('<button class="-mt-0.5 -mr-1 rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground" aria-label="Remove this comment" title="Remove this comment"><!></button>'),Qa=m('<li><div class="flex items-start gap-2"><div class="min-w-0 flex-1"><!> <p> </p> <!></div> <!></div></li>'),Xa=m('<ul class="mt-3 space-y-2" aria-label="Comments"></ul>'),Za=m('<button class="comment-btn ml-auto shrink-0 rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground svelte-byyley"><!></button>'),en=m('<span class="text-brass"> </span>'),tn=m('<span class="rounded-full border border-sea/50 px-2 py-0.5 font-medium text-sea">Ready to build</span>'),rn=m('<p class="mt-1 text-xs text-muted-foreground" aria-live="polite"> </p>'),an=m('<div class="chat-md mt-2 text-[0.95rem]"></div>'),nn=m('<p class="mt-2 text-sm text-muted-foreground italic">The project and a one-line summary appear here as the interview goes.</p>'),on=m('<span class="rounded-full bg-brass/15 px-2 py-0.5 text-[0.7rem] font-medium tracking-wide text-brass">Updated</span>'),sn=m('<div class="chat-md doc-md mt-2 text-[0.95rem] svelte-byyley"></div>'),ln=m('<p class="mt-2 text-sm text-muted-foreground italic">Not covered yet.</p>'),dn=m('<section><div class="flex items-center gap-2 border-b border-hair pb-1"><h3 class="font-display text-[1.2rem] font-medium"> </h3> <!> <!></div> <!> <!> <!></section>'),cn=m('<button class="absolute z-10 flex items-center gap-1.5 rounded-md border border-brass bg-card px-2.5 py-1 text-xs font-medium shadow-md hover:bg-accent"><!>Comment</button>'),un=m('<div class="spec-doc relative rounded-lg border border-hair bg-card px-5 py-5 sm:px-7 sm:py-6"><p class="flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground"><span class="tabular"> </span> <!> <!></p> <!> <header data-section="project"><div class="flex items-start gap-2"><h2 class="min-w-0 flex-1 font-display text-[1.7rem] leading-tight font-medium"> </h2> <!></div> <!> <!> <!></header> <!> <!></div>');function vn(r,t){dt(t,!0);const n=(c,p=st)=>{var T=pt(),A=re(T);{var X=ue=>{var ke=Fa(),ye=u(ke);{var ge=_e=>{var Ne=$a(),je=L(Ne);I(()=>R(je,`“${e(W).quote??""}”`)),d(_e,Ne)};k(ye,_e=>{e(W).quote&&_e(ge)})}var se=o(ye,2);Ge(se,{rows:2,placeholder:"What should change here?","aria-label":"Your comment",onkeydown:ie,get value(){return e(E)},set value(_e){s(E,_e,!0)}});var ve=o(se,2),be=u(ve);$e(be,{variant:"ghost",size:"sm",onclick:()=>s(W,null),children:(_e,Ne)=>{ze();var je=ht("Cancel");d(_e,je)},$$slots:{default:!0}});var Ue=o(be,2);{let _e=S(()=>!e(E).trim()||e(P));$e(Ue,{size:"sm",onclick:U,get disabled(){return e(_e)},children:(Ne,je)=>{var he=Ba(),l=re(he);{var g=j=>{bt(j,{class:"animate-spin","aria-hidden":"true"})};k(l,j=>{e(P)&&j(g)})}ze(),d(Ne,he)},$$slots:{default:!0}})}i(ve),i(ke),d(ue,ke)};k(A,ue=>{e(W)?.section===p()&&ue(X)})}d(c,T)},h=(c,p=st)=>{const T=S(()=>me(p()));var A=pt(),X=re(A);{var ue=ke=>{var ye=Xa();Ke(ye,21,()=>e(T),ge=>ge.id,(ge,se)=>{var ve=Qa(),be=u(ve),Ue=u(be),_e=u(Ue);{var Ne=q=>{var te=Ha(),Pe=L(te);I(()=>R(Pe,`“${e(se).quote??""}”`)),d(q,te)};k(_e,q=>{e(se).quote&&q(Ne)})}var je=o(_e,2),he=L(je,!0),l=o(je,2);{var g=q=>{var te=Ga(),Pe=u(te);Br(Pe,{class:"mt-0.5 size-3.5 shrink-0 text-sea","aria-hidden":"true"});var Ye=o(Pe,2),wt=o(u(Ye),1,!0);i(Ye),i(te),I(()=>R(wt,e(se).reply||"Addressed.")),d(q,te)},j=q=>{var te=Va(),Pe=u(te);{var Ye=nt=>{var ut=Ka(),Ot=re(ut);bt(Ot,{class:"size-3 animate-spin","aria-hidden":"true"}),ze(),d(nt,ut)},wt=nt=>{var ut=ht("Open: the interviewer addresses it next");d(nt,ut)};k(Pe,nt=>{t.busy?nt(Ye):nt(wt,-1)})}i(te),d(q,te)};k(l,q=>{e(se).resolvedAt?q(g):q(j,-1)})}i(Ue);var ne=o(Ue,2);{var Se=q=>{var te=Ya(),Pe=u(te);Qt(Pe,{class:"size-3.5","aria-hidden":"true"}),i(te),Re("click",te,()=>t.onRemoveComment(e(se).id)),d(q,te)};k(ne,q=>{e(se).resolvedAt||q(Se)})}i(be),i(ve),I(()=>{Ee(ve,1,`rounded-md border px-3 py-2 text-sm ${e(se).resolvedAt?"border-hair bg-muted/40 text-muted-foreground":"border-brass/50 bg-background"}`),Ee(je,1,`break-words ${e(se).resolvedAt?"":"text-foreground"}`),R(he,e(se).text)}),d(ge,ve)}),i(ye),d(ke,ye)};k(X,ke=>{e(T).length&&ke(ue)})}d(c,A)},a=(c,p=st,T=st)=>{var A=Za(),X=u(A);dr(X,{class:"size-4","aria-hidden":"true"}),i(A),I(()=>{Te(A,"aria-label",`Comment on ${T()??""}`),Te(A,"title",`Comment on ${T()??""}`)}),Re("click",A,()=>ae(p())),d(c,A)};let b=B(!1);Ct(()=>s(b,!0));const C=Le.filter(c=>c.id!=="project"),x=S(()=>Le.filter(c=>Dt(t.draft,c.id)).length),O=c=>e(b)?Nt(jt(t.draft,c,t.imageUrl)):"",me=c=>t.draft.comments.filter(p=>p.section===c),H=S(()=>t.draft.comments.filter(c=>!c.resolvedAt).length),V=S(()=>Le.filter(c=>t.changed.includes(c.id)).map(c=>c.id==="project"?"Title and summary":c.title));let W=B(null),E=B(""),P=B(!1),z=B(null),J=B(void 0);function G(){const c=window.getSelection();if(!e(J)||!c||c.isCollapsed||!c.rangeCount){s(z,null);return}const p=c.getRangeAt(0),A=(ge=>(ge instanceof Element?ge:ge?.parentElement)?.closest("[data-section]"))(p.startContainer),X=A?.dataset.section,ue=c.toString().replace(/\s+/g," ").trim();if(!A||!e(J).contains(A)||!X||!ue){s(z,null);return}const ke=p.getBoundingClientRect(),ye=e(J).getBoundingClientRect();s(z,{section:X,quote:ue.length>300?`${ue.slice(0,297)}…`:ue,top:ke.bottom-ye.top+6,left:Math.max(0,Math.min(ke.left-ye.left,ye.width-120))},!0)}async function ae(c,p=""){s(z,null),s(W,{section:c,quote:p},!0),s(E,""),await it(),e(J)?.querySelector("[data-comment-box] textarea")?.focus()}async function U(){if(!e(W)||!e(E).trim()||e(P))return;s(P,!0);const c=await t.onComment({...e(W),text:e(E).trim()});s(P,!1),c&&(s(W,null),s(E,""),window.getSelection()?.removeAllRanges())}function ie(c){c.key==="Enter"&&(c.metaKey||c.ctrlKey)?(c.preventDefault(),U()):c.key==="Escape"&&s(W,null)}var F=un(),_=u(F),y=u(_),$=L(y),K=o(y,2);{var le=c=>{var p=en(),T=L(p);I(()=>R(T,`${e(H)??""} open comment${e(H)===1?"":"s"}`)),d(c,p)};k(K,c=>{e(H)&&c(le)})}var oe=o(K,2);{var Z=c=>{var p=tn();d(c,p)};k(oe,c=>{t.draft.interview.done&&c(Z)})}i(_);var ee=o(_,2);{var N=c=>{var p=rn(),T=L(p);I(A=>R(T,`Just changed: ${A??""}.`),[()=>e(V).join(", ")]),d(c,p)};k(ee,c=>{e(V).length&&c(N)})}var w=o(ee,2),M=u(w),we=u(M),de=L(we,!0),ce=o(we,2);a(ce,()=>"project",()=>"the title and summary"),i(M);var D=o(M,2);{var Ae=c=>{var p=an();St(p,()=>O("project"),!0),i(p),d(c,p)},Me=S(()=>jt(t.draft,"project")),v=c=>{var p=nn();d(c,p)};k(D,c=>{e(Me)?c(Ae):c(v,-1)})}var f=o(D,2);h(f,()=>"project");var Y=o(f,2);n(Y,()=>"project"),i(w);var fe=o(w,2);Ke(fe,17,()=>C,c=>c.id,(c,p)=>{const T=S(()=>jt(t.draft,e(p).id));var A=dn(),X=u(A),ue=u(X),ke=L(ue,!0),ye=o(ue,2);{var ge=he=>{var l=on();d(he,l)},se=S(()=>t.changed.includes(e(p).id));k(ye,he=>{e(se)&&he(ge)})}var ve=o(ye,2);a(ve,()=>e(p).id,()=>e(p).title),i(X);var be=o(X,2);{var Ue=he=>{var l=sn();St(l,()=>O(e(p).id),!0),i(l),d(he,l)},_e=he=>{var l=ln();d(he,l)};k(be,he=>{e(T)?he(Ue):he(_e,-1)})}var Ne=o(be,2);h(Ne,()=>e(p).id);var je=o(Ne,2);n(je,()=>e(p).id),i(A),I(he=>{Te(A,"data-section",e(p).id),Ee(A,1,`doc-section mt-6 ${he??""}`,"svelte-byyley"),Te(A,"aria-labelledby",`doc-${e(p).id??""}`),Te(ue,"id",`doc-${e(p).id??""}`),R(ke,e(p).title)},[()=>t.changed.includes(e(p).id)?"is-updated":""]),d(c,A)});var Ie=o(fe,2);{var pe=c=>{const p=S(()=>e(z));var T=cn(),A=u(T);dr(A,{class:"size-3.5","aria-hidden":"true"}),ze(),i(T),I(()=>Pr(T,`top: ${e(p).top??""}px; left: ${e(p).left??""}px`)),Re("pointerup",T,X=>X.stopPropagation()),Re("click",T,()=>ae(e(p).section,e(p).quote)),d(c,T)};k(Ie,c=>{e(z)&&c(pe)})}i(F),xt(F,c=>s(J,c),()=>e(J)),I((c,p)=>{R($,`${e(x)??""} of ${Le.length??""} sections covered`),Ee(w,1,`doc-section mt-4 ${c??""}`,"svelte-byyley"),R(de,p)},[()=>t.changed.includes("project")?"is-updated":"",()=>_t(t.draft)]),Re("pointerup",F,()=>setTimeout(G)),Re("keyup",F,c=>c.shiftKey&&G()),d(r,F),ct()}lt(["click","pointerup","keyup"]);var mn=m('<p class="mt-8 rounded-lg border border-dashed p-6 text-sm text-muted-foreground"> </p>'),fn=m("<!>New spec",1),pn=m('<li><a><span class="block truncate text-sm font-medium"> </span> <span class="block truncate text-xs text-muted-foreground"> </span></a></li>'),gn=m('<ul class="mt-3 space-y-0.5" aria-labelledby="specs-heading"></ul>'),hn=m("<!>Start a spec",1),bn=m(`<section class="rounded-lg border border-dashed p-8" aria-label="No spec open"><h2 class="font-display text-xl font-medium">Start a spec for Firstmate</h2> <p class="mt-2 max-w-prose text-sm text-muted-foreground">Say what you want built. An interviewer grills you on it one question at a time,
|
|
27
|
-
offering answers with the one it recommends, and writes the spec as you go: the
|
|
28
|
-
problem, who it is for, how they use it, what is in and out, how you will know it is
|
|
29
|
-
done, and what to watch out for. Your work is saved as you go.</p> <!></section>`),_n=m('<button role="radio"> </button>'),xn=m("<option></option>"),wn=m("<!>Delete",1),yn=m("<!> ",1),kn=m('<p class="mt-2 text-sm text-danger" role="alert"> </p>'),jn=m('<div class="mt-3 flex flex-wrap items-center gap-3 rounded-md border border-danger/30 bg-danger/5 px-4 py-3" role="group" aria-label="Delete this spec"><p class="text-sm"> </p> <div class="ml-auto flex gap-2"><!> <!></div></div>'),Sn=m('<span class="text-xs text-brass"> </span>'),Cn=m('<span class="size-1.5 rounded-full bg-brass" aria-label="Updated" role="img"></span>'),Rn=m('<div class="mb-4 flex rounded-md border border-hair p-0.5 xl:hidden" role="tablist" aria-label="Show"><button role="tab">Interview</button> <button role="tab">Spec<!> <!></button></div> <div class="grid items-start gap-8 xl:grid-cols-[minmax(0,1fr)_minmax(0,1.15fr)]"><section aria-label="Interview"><!></section> <section aria-label="The spec"><!></section></div>',1),Tn=m('<div class="min-w-0"><div class="flex flex-wrap items-center gap-x-4 gap-y-3 border-b border-hair pb-4"><div class="flex rounded-md border border-hair p-0.5" role="radiogroup" aria-label="Build the spec with"></div> <label class="flex min-w-0 items-center gap-2 text-sm"><span class="text-muted-foreground">Project</span> <input class="h-8 w-44 min-w-0 rounded-md border border-input bg-card px-2.5 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50" name="project" list="spec-projects" placeholder="Choose a project"/> <datalist id="spec-projects"></datalist></label> <p aria-live="polite"> </p> <div class="ml-auto flex items-center gap-2"><!> <!></div></div> <p class="mt-2 text-xs text-muted-foreground"> </p> <!> <!> <div class="mt-6"><!></div></div>'),An=m('<div class="mt-8 grid items-start gap-8 lg:grid-cols-[14rem_minmax(0,1fr)]"><aside class="min-w-0 lg:sticky lg:top-20"><details class="group"><summary class="section-label list-none lg:pointer-events-none [&::-webkit-details-marker]:hidden"><span id="specs-heading">Your specs</span><span class="lg:hidden"> </span> <!></summary> <!> <!></details></aside> <!></div>'),qn=m(`<main class="px-4 py-6 sm:px-6 lg:px-10"><div class="surface px-4 py-6 sm:px-8 sm:py-8"><h1 class="text-2xl">Write a spec</h1> <p class="mt-1 max-w-prose text-sm text-muted-foreground">An interviewer asks you one question at a time and writes the spec as you answer. Comment on
|
|
30
|
-
anything in the spec to have it changed, then send it to build.</p> <!></div></main>`);function no(r,t){dt(t,!0);const n=l=>l?JSON.parse(JSON.stringify(l)):null,h=n(t.data.draft);let a=B($t(h)),b=B($t(t.data.specs)),C=JSON.stringify(h),x=B("saved"),O=B(null),me=B(!1),H=B(null),V=B(!1),W=B(!1),E=B($t(Date.now())),P=B(!!t.data.interviewer?.busy),z=B(""),J=B(null),G=B(null),ae=B(null),U=!1,ie=B("interview"),F=B(!1),_=h?.id??null;Ut(()=>{const l=t.data.draft,g=t.data.specs,j=!!t.data.interviewer?.busy;rr(()=>{s(b,g,!0),!((l?.id??null)===_&&e(a))&&(_=l?.id??null,s(a,n(l),!0),C=JSON.stringify(e(a)),s(x,"saved"),s(V,!1),s(G,null),s(z,""),s(ae,null),s(P,j),j&&c())})});const y=S(Nr),$=S(()=>(e(y)?.projects??[]).map(l=>l.name).filter(Boolean)),K=l=>`/api/specs/${encodeURIComponent(e(a)?.id??"")}/images/${encodeURIComponent(l.name)}`,le=S(()=>e(a)?pr(e(a),K):""),oe=S(()=>e(a)?pa(e(a),()=>"attached").replace(/!\[([^\]]*)\]\(<attached>\)/g,"[Screenshot: $1, sent as a file]"):""),Z=S(()=>e(a)?.interview.turns.findLast(l=>l.role==="agent")??null),ee=S(()=>e(Z)?.changed??[]),N=S(()=>e(a)?.comments.filter(l=>!l.resolvedAt).length??0),w=S(()=>!!e(a)&&(!!e(a).title.trim()||!!e(a).summary.trim())),M=S(()=>!!e(a)?.project.trim()),we=l=>!!l.sentAt&&Date.parse(l.updatedAt)-Date.parse(l.sentAt)>5e3,de=S(()=>e(w)&&e(M)&&!e(W)&&!e(P)),ce=(l={})=>({[ar]:t.data.sessionToken,...l});async function D(l){return(await l.json().catch(()=>null))?.message??`Wheelhouse answered ${l.status}.`}function Ae(l){if(!l||l.id!==e(a)?.id)return;const g=e(x)==="saved"?null:{project:e(a).project,mode:e(a).mode},j=n(l);C=JSON.stringify(j),g&&Object.assign(j,g),s(a,j,!0),s(b,e(b).map(ne=>ne.id===l.id?vr(l):ne),!0),e(ae)&&l.interview.turns.at(-1)?.role==="captain"&&s(ae,null)}let Me;Ut(()=>{!e(a)||JSON.stringify(e(a))===C||rr(()=>{s(x,"unsaved"),clearTimeout(Me),Me=setTimeout(()=>{f()},600)})});let v=Promise.resolve(!0);function f(l=!1){return clearTimeout(Me),v=v.then(()=>Y(l)),v}async function Y(l){if(!e(a))return!0;const g=ir(e(a)),j=JSON.stringify(g);if(j===C)return s(x,"saved"),!0;s(x,"saving");const ne=JSON.parse(C),Se=["project","title","mode"].filter(q=>ne?.[q]!==g[q]);try{const q=await fetch(`/api/specs/${encodeURIComponent(g.id)}`,{method:"PUT",headers:ce({"content-type":"application/json"}),body:JSON.stringify({...g,edited:Se}),keepalive:l});if(!q.ok)return s(O,await D(q),!0),s(x,"error"),!1;const te=(await q.json()).draft;return s(O,null),s(b,e(b).map(Pe=>Pe.id===te.id?vr(te):Pe),!0),e(a)?.id===te.id&&(C=JSON.stringify(te),JSON.stringify(ir(e(a)))===j&&s(a,n(te),!0),e(ae)&&te.interview.turns.at(-1)?.role==="captain"&&s(ae,null)),s(x,e(a)&&JSON.stringify(e(a))!==C?"unsaved":"saved",!0),!0}catch{return s(O,"Could not reach the Wheelhouse server."),s(x,"error"),!1}}Ur(()=>{e(x)!=="saved"&&f(!0)});let fe=B(!0);Ct(()=>{s(fe,window.matchMedia("(min-width: 1024px)").matches,!0);const l=setInterval(()=>s(E,Date.now(),!0),3e4),g=()=>{e(x)!=="saved"&&f(!0)};return window.addEventListener("pagehide",g),()=>{clearInterval(l),window.removeEventListener("pagehide",g)}});async function*Ie(l){const g=l.body.pipeThrough(new TextDecoderStream).getReader();let j="";for(;;){const{value:ne,done:Se}=await g.read();if(Se)return;j+=ne;let q;for(;(q=j.indexOf(`
|
|
31
|
-
|
|
32
|
-
`))>=0;){const te=j.slice(0,q);j=j.slice(q+2);const Pe=/^event: (.*)$/m.exec(te)?.[1],Ye=/^data: (.*)$/m.exec(te)?.[1];Pe&&Ye&&(yield{event:Pe,data:JSON.parse(Ye)})}}}async function pe(l){if(!e(a)||e(P))return!1;const g=e(a).id;if(!await f())return!1;s(P,!0),s(z,""),s(J,null),s(G,null),s(ae,l,!0);let j=!1;try{const ne=await fetch(`/api/specs/${encodeURIComponent(g)}/turn`,{method:"POST",headers:ce({"content-type":"application/json"}),body:JSON.stringify(l?{answer:l}:{})});if(!ne.ok||!ne.body)return s(G,await D(ne),!0),ne.status===409&&c(),!1;j=!0;for await(const Se of Ie(ne)){const q=Se.data;Se.event==="text"?(s(z,e(z)+(q.text??"")),s(J,null)):Se.event==="reset"?s(z,""):Se.event==="tool"?s(J,`Reading ${q.detail||q.name}`):Se.event==="done"?(Ae(q.draft),e(ie)==="interview"&&e(Z)?.changed.length&&s(F,!0)):Se.event==="error"&&(s(G,q.message??"The interviewer stopped.",!0),Ae(q.draft))}return!0}catch{return s(G,e(G)??"Lost touch with the Wheelhouse server. Reload to see where the interview got to."),j}finally{e(a)?.id===g&&(s(P,!1),s(z,""),s(J,null),s(ae,null),U&&(U=!1,pe(null)))}}async function c(){const l=e(a)?.id;if(l)for(s(P,!0);;){if(await new Promise(ne=>setTimeout(ne,1500)),e(a)?.id!==l)return;const g=await fetch(`/api/specs/${encodeURIComponent(l)}`).catch(()=>null);if(!g?.ok)continue;const j=await g.json();if(!j.busy){Ae(j.draft),s(P,!1),e(G)?.startsWith("The interviewer is already")&&s(G,null);return}}}async function p(l){if(!e(a))return!1;const g=await fetch(`/api/specs/${encodeURIComponent(e(a).id)}/comments`,{method:"POST",headers:ce({"content-type":"application/json"}),body:JSON.stringify(l)}).catch(()=>null);return g?.ok?(Ae((await g.json()).draft),e(P)?U=!0:pe(null),!0):(s(G,g?await D(g):"Could not reach the Wheelhouse server.",!0),!1)}async function T(l){if(!e(a))return;const g=await fetch(`/api/specs/${encodeURIComponent(e(a).id)}/comments/${encodeURIComponent(l)}`,{method:"DELETE",headers:ce()}).catch(()=>null);g?.ok&&Ae((await g.json()).draft)}async function A(){if(s(W,!0),!await f()){s(W,!1);return}try{const l=await fetch("/api/specs",{method:"POST",headers:ce()});if(!l.ok){s(O,await D(l),!0),s(x,"error");return}const{draft:g}=await l.json();await Bt(`/spec?id=${encodeURIComponent(g.id)}`,{invalidateAll:!0})}finally{s(W,!1)}}async function X(){if(!e(a))return;s(W,!0),clearTimeout(Me);const l=await fetch(`/api/specs/${encodeURIComponent(e(a).id)}`,{method:"DELETE",headers:ce()}).catch(()=>null);if(s(W,!1),s(V,!1),!l?.ok&&l?.status!==404){s(O,l?await D(l):"Could not reach the Wheelhouse server.",!0),s(x,"error");return}C="null",s(a,null),_=null,await Bt("/spec",{invalidateAll:!0,replaceState:!0})}async function ue(l){if(e(a)){s(me,!0),s(H,null);for(const g of l)try{const j=await fetch(`/api/specs/${encodeURIComponent(e(a).id)}/images`,{method:"POST",headers:ce({"content-type":g.type,"x-caption":encodeURIComponent(g.name.replace(/\.[^.]+$/,""))}),body:g});if(!j.ok){s(H,await D(j),!0);continue}const ne=(await j.json()).draft,Se=new Map(e(a).images.map(q=>[q.name,q.caption]));e(a).images=ne.images.map(q=>({...q,caption:Se.get(q.name)??q.caption}))}catch{s(H,"Could not reach the Wheelhouse server.")}s(me,!1)}}async function ke(l){if(!e(a))return;const g=await fetch(`/api/specs/${encodeURIComponent(e(a).id)}/images/${encodeURIComponent(l.name)}`,{method:"DELETE",headers:ce()}).catch(()=>null);g?.ok||g?.status===404?e(a).images=e(a).images.filter(j=>j.name!==l.name):s(H,g?await D(g):"Could not reach the Wheelhouse server.",!0)}async function ye(){if(!e(a)||!e(de))return;s(W,!0);const l=e(a).id;try{if(!await f())return;const g=await fetch(`/api/specs/${encodeURIComponent(l)}/build-request`,{method:"POST",headers:ce()}).catch(()=>null);if(!g?.ok){s(O,g?await D(g):"Could not reach the Wheelhouse server.",!0),s(x,"error");return}const{message:j}=await g.json(),ne=t.data.sessionToken;Dr.outgoing={text:j,from:`/spec?id=${encodeURIComponent(l)}`,onSent:()=>{fetch(`/api/specs/${encodeURIComponent(l)}/sent`,{method:"POST",headers:{[ar]:ne}})}},await Bt("/")}finally{s(W,!1)}}function ge(l){e(a)&&(e(a).mode=l)}function se(l){s(ie,l,!0),l==="spec"&&s(F,!1)}const ve=S(()=>e(x)==="saving"?"Saving…":e(x)==="unsaved"?"Unsaved changes":e(x)==="error"?"Not saved":"Saved"),be=S(()=>e(a)?e(w)?e(M)?e(P)?"Wait for the interviewer to finish its turn.":e(a).sentAt?`Sent to build ${sr(e(a).sentAt,e(E))}${we(e(a))?"; edited since":""}.`:`Sends the spec to Firstmate as one build request for ${e(a).project.trim()}.`:"Choose the project it is for, then send it to build.":"Send to build once the spec has a title or a summary.":"");var Ue=qn();Er("1flepf4",l=>{Tr(()=>{Ar.title="Spec · Wheelhouse"})});var _e=u(Ue),Ne=o(u(_e),4);{var je=l=>{var g=mn(),j=L(g,!0);I(()=>R(j,t.data.problem)),d(l,g)},he=l=>{var g=An(),j=u(g),ne=u(j),Se=u(ne),q=o(u(Se)),te=L(q),Pe=o(q,2);Fr(Pe,{class:"size-4 shrink-0 transition-transform group-open:rotate-180 lg:hidden","aria-hidden":"true"}),i(Se);var Ye=o(Se,2);$e(Ye,{variant:"outline",size:"sm",class:"mt-3 w-full justify-start",onclick:A,get disabled(){return e(W)},children:(Be,Fe)=>{var He=fn(),De=re(He);lr(De,{"aria-hidden":"true"}),ze(),d(Be,He)},$$slots:{default:!0}});var wt=o(Ye,2);{var nt=Be=>{var Fe=gn();Ke(Fe,21,()=>e(b),He=>He.id,(He,De)=>{const et=S(()=>e(a)?.id===e(De).id);var Qe=pn(),Xe=u(Qe),vt=u(Xe),Wt=L(vt,!0),Rt=o(vt,2),Tt=L(Rt,!0);i(Xe),i(Qe),I((zt,Mt,At)=>{Te(Xe,"href",`/spec?id=${zt??""}`),Te(Xe,"aria-current",e(et)?"page":void 0),Ee(Xe,1,`block rounded-md border-l-2 px-3 py-2 hover:bg-muted ${e(et)?"border-brass bg-accent":"border-transparent"}`),R(Wt,Mt),R(Tt,At)},[()=>encodeURIComponent(e(De).id),()=>e(et)&&e(a)?_t(e(a)):e(De).title,()=>[(e(et)&&e(a)?e(a).project.trim():e(De).project)||null,e(De).sentAt?we(e(De))?"Edited since sent":"Sent":null,`edited ${sr(e(De).updatedAt,e(E))}`].filter(Boolean).join(" · ")]),d(He,Qe)}),i(Fe),d(Be,Fe)};k(wt,Be=>{e(b).length&&Be(nt)})}i(ne),i(j);var ut=o(j,2);{var Ot=Be=>{var Fe=bn(),He=o(u(Fe),4);$e(He,{class:"mt-5",onclick:A,get disabled(){return e(W)},children:(De,et)=>{var Qe=hn(),Xe=re(Qe);lr(Xe,{"aria-hidden":"true"}),ze(),d(De,Qe)},$$slots:{default:!0}}),i(Fe),d(Be,Fe)},gr=Be=>{var Fe=Tn(),He=u(Fe),De=u(He);Ke(De,20,()=>[["interview","Interview"],["form","Quick form"]],([Q,Ce])=>Q,(Q,Ce)=>{var qe=S(()=>fr(Ce,2));let xe=()=>e(qe)[0],Oe=()=>e(qe)[1];var Je=_n(),ot=L(Je,!0);I(()=>{Te(Je,"aria-checked",e(a).mode===xe()),Ee(Je,1,`rounded px-3 py-1 text-sm ${e(a).mode===xe()?"bg-accent font-medium text-foreground":"text-muted-foreground hover:text-foreground"}`),R(ot,Oe())}),Re("click",Je,()=>ge(xe())),d(Q,Je)}),i(De);var et=o(De,2),Qe=o(u(et),2);yt(Qe);var Xe=o(Qe,2);Ke(Xe,20,()=>e($),Q=>Q,(Q,Ce)=>{var qe=xn(),xe={};I(()=>{xe!==(xe=Ce)&&(qe.value=(qe.__value=xe)??"")}),d(Q,qe)}),i(Xe),i(et);var vt=o(et,2),Wt=L(vt,!0),Rt=o(vt,2),Tt=u(Rt);{var zt=Q=>{$e(Q,{variant:"ghost",size:"sm",class:"text-muted-foreground",onclick:()=>s(V,!0),children:(Ce,qe)=>{var xe=wn(),Oe=re(xe);Mr(Oe,{"aria-hidden":"true"}),ze(),d(Ce,xe)},$$slots:{default:!0}})};k(Tt,Q=>{e(V)||Q(zt)})}var Mt=o(Tt,2);{let Q=S(()=>!e(de));$e(Mt,{onclick:ye,get disabled(){return e(Q)},children:(Ce,qe)=>{var xe=yn(),Oe=re(xe);{var Je=Ze=>{bt(Ze,{class:"animate-spin","aria-hidden":"true"})},ot=Ze=>{Hr(Ze,{"aria-hidden":"true"})};k(Oe,Ze=>{e(W)?Ze(Je):Ze(ot,-1)})}var tt=o(Oe);I(()=>R(tt,` ${e(a).sentAt?"Send to build again":"Send to build"}`)),d(Ce,xe)},$$slots:{default:!0}})}i(Rt),i(He);var At=o(He,2),hr=L(At,!0),Zt=o(At,2);{var br=Q=>{var Ce=kn(),qe=L(Ce,!0);I(()=>R(qe,e(O))),d(Q,Ce)};k(Zt,Q=>{e(x)==="error"&&e(O)&&Q(br)})}var er=o(Zt,2);{var _r=Q=>{var Ce=jn(),qe=u(Ce),xe=L(qe),Oe=o(qe,2),Je=u(Oe);$e(Je,{variant:"ghost",size:"sm",onclick:()=>s(V,!1),children:(tt,Ze)=>{ze();var mt=ht("Keep it");d(tt,mt)},$$slots:{default:!0}});var ot=o(Je,2);$e(ot,{variant:"destructive",size:"sm",onclick:X,get disabled(){return e(W)},children:(tt,Ze)=>{ze();var mt=ht("Delete");d(tt,mt)},$$slots:{default:!0}}),i(Oe),i(Ce),I(tt=>R(xe,`Delete “${tt??""}”, its interview and its screenshots for good?`),[()=>_t(e(a))]),d(Q,Ce)};k(er,Q=>{e(V)&&Q(_r)})}var tr=o(er,2),xr=u(tr);{var wr=Q=>{Ja(Q,{get draft(){return e(a)},get projects(){return e($)},imageUrl:K,get preview(){return e(le)},get asSent(){return e(oe)},onUpload:ue,onRemoveImage:ke,get uploading(){return e(me)},get uploadError(){return e(H)}})},yr=Q=>{var Ce=Rn(),qe=re(Ce),xe=u(qe),Oe=o(xe,2),Je=o(u(Oe));{var ot=rt=>{var ft=Sn(),Jt=L(ft);I(()=>R(Jt,`(${e(N)??""})`)),d(rt,ft)};k(Je,rt=>{e(N)&&rt(ot)})}var tt=o(Je,2);{var Ze=rt=>{var ft=Cn();d(rt,ft)};k(tt,rt=>{e(F)&&rt(Ze)})}i(Oe),i(qe);var mt=o(qe,2),qt=u(mt),kr=u(qt);{let rt=S(()=>t.data.interviewer?.model??"sonnet"),ft=S(()=>t.data.interviewer?.effort??"low");va(kr,{get draft(){return e(a)},get busy(){return e(P)},get streaming(){return e(z)},get activity(){return e(J)},get error(){return e(G)},get pending(){return e(ae)},get model(){return e(rt)},get effort(){return e(ft)},onAnswer:Jt=>pe(Jt),onRetry:()=>{pe(null)}})}i(qt);var Lt=o(qt,2),jr=u(Lt);vn(jr,{get draft(){return e(a)},imageUrl:K,get changed(){return e(ee)},get busy(){return e(P)},onComment:p,onRemoveComment:T}),i(Lt),i(mt),I(()=>{Te(xe,"aria-selected",e(ie)==="interview"),Ee(xe,1,`flex-1 rounded px-3 py-1.5 text-sm ${e(ie)==="interview"?"bg-accent font-medium":"text-muted-foreground"}`),Te(Oe,"aria-selected",e(ie)==="spec"),Ee(Oe,1,`flex flex-1 items-center justify-center gap-1.5 rounded px-3 py-1.5 text-sm ${e(ie)==="spec"?"bg-accent font-medium":"text-muted-foreground"}`),Ee(qt,1,`min-w-0 ${e(ie)==="interview"?"":"hidden xl:block"}`),Ee(Lt,1,`min-w-0 xl:sticky xl:top-20 xl:max-h-[calc(100dvh-7rem)] xl:overflow-y-auto ${e(ie)==="spec"?"":"hidden xl:block"}`)}),Re("click",xe,()=>se("interview")),Re("click",Oe,()=>se("spec")),d(Q,Ce)};k(xr,Q=>{e(a).mode==="form"?Q(wr):Q(yr,-1)})}i(tr),i(Fe),I(()=>{Ee(vt,1,`text-xs ${e(x)==="error"?"text-danger":"text-muted-foreground"}`),R(Wt,e(ve)),R(hr,e(be))}),kt(Qe,()=>e(a).project,Q=>e(a).project=Q),d(Be,Fe)};k(ut,Be=>{e(a)?Be(gr,-1):Be(Ot)})}i(g),I(()=>{ne.open=e(fe),R(te,` (${e(b).length??""})`)}),d(l,g)};k(Ne,l=>{t.data.problem?l(je):l(he,-1)})}i(_e),i(Ue),d(r,Ue),ct()}lt(["click"]);export{no as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{F as ir,b9 as lr,p as Ct,m as o,o as c,s as t,x as qe,f as O,h as e,a,r,t as d,d as i,b as It,q as y,c as s,k as Xt,N as aa,i as ye,a7 as Ya,n as He,e as We,w as Ne,y as ca,a8 as dr,ag as Ye,O as vr,$ as ur,v as Vt,M as cr}from"../chunks/L-6wuY5f.js";import{I as pa,s as pr}from"../chunks/CQlHU-Rx.js";import{s as ma,r as fa,p as sa,i as u}from"../chunks/COiIt96y.js";import{e as $e,a as Oe,i as Nt,s as q,c as ya,h as mr,b as Sa}from"../chunks/DGy76IbW.js";import{b as ra}from"../chunks/Da92_52d.js";import{p as va}from"../chunks/euRlC7pA.js";import{r as fr}from"../chunks/_7N5fmOy.js";import{l as et,c as ha}from"../chunks/BWJa0dU7.js";import{s as Aa,a as La}from"../chunks/36FDwM1G.js";import{S as Ka}from"../chunks/BORDV711.js";import{c as Bt,a as wt,b as Pa,e as la,d as _r}from"../chunks/DKQe4Tss.js";import{c as xr,d as Ta,f as gr,s as hr,g as br,a as wr,M as yr,S as kr,B as $r,b as zr}from"../chunks/BEAYWcbT.js";import{C as ka}from"../chunks/iVpzjqp1.js";import{C as da}from"../chunks/BR5v76-T.js";import{X as jt}from"../chunks/BUo4hMcM.js";import{M as _a}from"../chunks/m3YfhLk1.js";import{L as $a}from"../chunks/Brlpgp90.js";import{B as Qt}from"../chunks/BHsdHLbF.js";import{p as Cr,c as Ir,d as Ra,L as Qa,P as Fr,a as Xa,r as Sr,M as Ar,Q as Lr,b as Ea,C as Pr}from"../chunks/hBAvbyDe.js";import{C as ua}from"../chunks/CIE0U5Ih.js";import{o as Tr}from"../chunks/BGINfGsV.js";import{M as ba}from"../chunks/Dq9kJk5R.js";import{E as Rt}from"../chunks/p7x6PRF0.js";import{C as wa}from"../chunks/CtlVBKf-.js";import{a as ta,e as Ja,C as Rr,P as Er}from"../chunks/CR7y1ULG.js";import{F as za}from"../chunks/DC8T2WRZ.js";import{P as Dr,D as Mr}from"../chunks/cAfuCUf-.js";import{B as Nr}from"../chunks/CIfcjhKg.js";import{S as Za}from"../chunks/CkLriSVx.js";import{T as Br}from"../chunks/DLith9Yi.js";import{T as jr}from"../chunks/BwOfqJw9.js";import{a as Da,t as Or}from"../chunks/M201SoVK.js";import{A as Ma}from"../chunks/OeqXO44y.js";import{M as Wr}from"../chunks/COQ3aAYj.js";function Ur(F,l,v,g,$){var A=()=>{g(v[F])};v.addEventListener(l,A),$?ir(()=>{v[F]=$()}):A(),(v===document.body||v===window||v===document)&&lr(()=>{v.removeEventListener(l,A)})}var qr=new Set(["$$slots","$$events","$$legacy"]);function er(F,l){let v=fa(l,qr);const g={name:"circle-pause",size:24,node:[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9"}]],aliases:["pause-circle"]};pa(F,ma(()=>v,{get icon(){return g}}))}var Hr=new Set(["$$slots","$$events","$$legacy"]);function tr(F,l){let v=fa(l,Hr);const g={name:"image-off",size:24,node:[["line",{x1:"2",x2:"22",y1:"2",y2:"22"}],["path",{d:"M10.41 10.41a2 2 0 1 1-2.83-2.83"}],["line",{x1:"13.5",x2:"6",y1:"13.5",y2:"21"}],["line",{x1:"18",x2:"21",y1:"12",y2:"15"}],["path",{d:"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59"}],["path",{d:"M21 15V5a2 2 0 0 0-2-2H9"}]]};pa(F,ma(()=>v,{get icon(){return g}}))}var Gr=new Set(["$$slots","$$events","$$legacy"]);function Vr(F,l){let v=fa(l,Gr);const g={name:"panel-right-close",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m8 9 3 3-3 3"}]]};pa(F,ma(()=>v,{get icon(){return g}}))}var Yr=new Set(["$$slots","$$events","$$legacy"]);function ar(F,l){let v=fa(l,Yr);const g={name:"timer",size:24,node:[["line",{x1:"10",x2:"14",y1:"2",y2:"2"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11"}],["circle",{cx:"12",cy:"14",r:"8"}]]};pa(F,ma(()=>v,{get icon(){return g}}))}function Kr(F,l){const v=new Set(l),g={},$=[];for(const A of F)A.slot==="task.section"&&(A.step!==null&&v.has(A.step)?(g[A.step]??=[]).push(A):$.push(A));return{afterStep:g,byOrder:$}}var Qr=s('<li class="grid grid-cols-[1.25rem_6.5rem_minmax(0,1fr)_auto] items-start gap-x-2 py-1"><span class="flex h-5 items-center"><!></span> <span> </span> <span> </span> <span class="tabular text-right text-xs leading-5 text-muted-foreground"> </span></li>'),Xr=s('<li class="grid grid-cols-[1.25rem_minmax(0,1fr)] items-start gap-x-2 py-1 text-muted-foreground"><span class="flex h-5 items-center"><!></span> <span class="leading-5"> </span></li>'),Jr=s('<div data-checks-timeline=""><p class="tabular text-sm"> </p> <ol class="mt-3 space-y-0.5 text-sm"></ol></div>');function Zr(F,l){Ct(l,!0);let v=sa(l,"busy",3,!1),g=sa(l,"prChecks",19,()=>[]);const $=y(()=>{const W=[];for(const K of l.pipeline.steps){const xe=W.at(-1);K.state==="upcoming"?xe?.kind==="later"?xe.labels.push(K.label):W.push({kind:"later",labels:[K.label]}):W.push({kind:"step",s:K})}return W}),A=y(()=>xr(l.pipeline,et.now)),le=y(()=>br(g())),Z=W=>W.key===l.pipeline.step&&l.pipeline.outcome==="running";function he(W){if(Z(W)&&(W.state==="running"||W.state==="fixing")){const K=Date.parse(l.pipeline.startedAt??"");if(!Number.isNaN(K))return Ta(et.now-K)}return W.durationMs!=null&&W.durationMs>=1e3?Ta(W.durationMs):null}function oe(W){const K=gr(W,l.pipeline);return W.key==="ci"&&e(le)?`${K} · ${e(le)}`:K}var x=Jr(),ue=o(x),b=c(ue,!0),T=t(ue,2);$e(T,21,()=>e($),Nt,(W,K)=>{var xe=qe(),fe=O(xe);{var X=B=>{const _=y(()=>hr(e(K).s,l.pipeline));var z=Qr(),U=o(z),de=o(U);{var re=G=>{{let pe=y(()=>e(K).s.key==="ci"?"text-success":"text-muted-foreground");da(G,{get class(){return`size-4 ${e(pe)??""}`},"aria-label":"Done"})}},C=G=>{jt(G,{class:"size-4 text-danger","aria-label":"Failed"})},f=G=>{er(G,{class:"size-4 text-warning","aria-label":"Waiting on Firstmate"})},p=G=>{_a(G,{class:"size-4 text-muted-foreground","aria-label":"Skipped"})},J=G=>{{let pe=y(()=>v()?"motion-safe:animate-spin":""),Ce=y(()=>e(_)==="fixing"?"Fixing":"Under way");$a(G,{get class(){return`size-4 text-foreground ${e(pe)??""}`},get"aria-label"(){return e(Ce)}})}};u(de,G=>{e(_)==="done"?G(re):e(_)==="failed"?G(C,1):e(_)==="waiting"?G(f,2):e(_)==="skipped"?G(p,3):G(J,-1)})}r(U);var H=t(U,2),se=c(H,!0),ce=t(H,2),ze=c(ce,!0),Fe=t(ce,2),Ge=c(Fe,!0);r(z),d((G,pe,Ce)=>{Oe(H,1,`truncate leading-5 ${G??""}`),i(se,e(K).s.label),Oe(ce,1,`leading-5 ${e(_)==="failed"?"text-danger":e(_)==="waiting"?"text-warning":"text-muted-foreground"}`),i(ze,pe),i(Ge,Ce)},[()=>Z(e(K).s)?"font-medium":"",()=>oe(e(K).s),()=>he(e(K).s)??""]),a(B,z)},N=B=>{var _=Xr(),z=o(_),U=o(z);ka(U,{class:"size-4 text-muted-foreground/60","aria-hidden":"true"}),r(z);var de=t(z,2),re=c(de);r(_),d(C=>i(re,`Still to come: ${C??""}`),[()=>e(K).labels.join(", ")]),a(B,_)};u(fe,B=>{e(K).kind==="step"?B(X):B(N,-1)})}a(W,xe)}),r(T),r(x),d(()=>i(b,e(A))),a(F,x),It()}var es=s('<span class="tabular text-xs"><span class="text-success"> </span> <span class="text-danger"> </span></span>'),ts=s('<p class="p-4 text-sm text-warning"> </p>'),as=s('<p class="p-4 text-sm text-muted-foreground">Reading the diff…</p>'),rs=s('<p class="p-4 text-sm text-muted-foreground" data-diff="unavailable"> </p>'),ss=s('<p class="p-4 text-sm text-muted-foreground">No text changes in this file.</p>'),ns=s("<div> </div>"),os=s('<div class="min-w-max py-2 font-mono text-xs leading-relaxed whitespace-pre" role="presentation"></div>'),is=s('<p class="border-t px-4 py-1.5 text-xs text-muted-foreground"> </p>'),ls=s('<div class="flex h-full flex-col"><div class="flex items-center gap-3 border-b px-4 py-2.5 text-sm"><span class="min-w-0 flex-1 truncate font-mono text-xs"> </span> <!> <span class="text-xs text-muted-foreground">read-only</span> <button type="button" class="rounded p-1 hover:bg-accent" aria-label="Close"><!></button></div> <div class="min-h-0 flex-1 overflow-auto"><!></div> <!></div>'),ds=s('<dialog class="m-auto h-[88vh] w-[min(94vw,1100px)] max-w-none overflow-hidden rounded-xl border bg-background p-0 text-foreground shadow-xl backdrop:bg-black/60"><!></dialog>');function vs(F,l){Ct(l,!0);let v=sa(l,"file",15,null),g=We(null),$=We(null),A=We(null);aa(()=>{e(g)&&(v()&&!e(g).open?e(g).showModal():!v()&&e(g).open&&e(g).close())}),aa(()=>{const x=v();if(ye($,null),ye(A,null),!x)return;let ue=!1;return fetch(`/api/tasks/${encodeURIComponent(l.taskId)}/diff?path=${encodeURIComponent(x)}`).then(async b=>{if(!b.ok)throw new Error(`HTTP ${b.status}`);const T=await b.json();ue||ye($,T,!0)}).catch(b=>{ue||ye(A,`Could not reach the Wheelhouse server (${b.message}).`)}),()=>ue=!0});const le=x=>x.startsWith("@@")?"bg-sea/10 text-sea":x.startsWith("+")?"bg-success/10 text-success":x.startsWith("-")?"bg-danger/10 text-danger":x.startsWith("\\")?"text-muted-foreground italic":"";var Z=ds(),he=o(Z);{var oe=x=>{var ue=ls(),b=o(ue),T=o(b),W=c(T,!0),K=t(T,2);{var xe=p=>{const J=y(()=>e($).value.lines.filter(G=>G.startsWith("+")).length),H=y(()=>e($).value.lines.filter(G=>G.startsWith("-")).length);var se=es(),ce=o(se),ze=c(ce),Fe=t(ce,2),Ge=c(Fe);r(se),d(()=>{i(ze,`+${e(J)??""}`),i(Ge,`−${e(H)??""}`)}),a(p,se)};u(K,p=>{e($)?.available&&p(xe)})}var fe=t(K,4),X=o(fe);jt(X,{class:"size-4"}),r(fe),r(b);var N=t(b,2),B=o(N);{var _=p=>{var J=ts(),H=c(J,!0);d(()=>i(H,e(A))),a(p,J)},z=p=>{var J=as();a(p,J)},U=p=>{var J=rs(),H=c(J);d(()=>i(H,`Diff not available. ${e($).reason??""}`)),a(p,J)},de=p=>{var J=ss();a(p,J)},re=p=>{var J=os();$e(J,21,()=>e($).value.lines,Nt,(H,se)=>{var ce=ns(),ze=c(ce,!0);d(Fe=>{Oe(ce,1,`px-4 ${Fe??""}`),i(ze,e(se)||" ")},[()=>le(e(se))]),a(H,ce)}),r(J),a(p,J)};u(B,p=>{e(A)?p(_):e($)?e($).available?e($).value.lines.length?p(re,-1):p(de,3):p(U,2):p(z,1)})}r(N);var C=t(N,2);{var f=p=>{var J=is(),H=c(J);d(()=>i(H,`From ${e($).source??""}.${e($).value.truncated?` Showing the first ${e($).value.lines.length} lines.`:""}`)),a(p,J)};u(C,p=>{e($)?.available&&p(f)})}r(ue),d(()=>{q(T,"title",v()),i(W,v())}),He("click",fe,()=>e(g)?.close()),a(x,ue)};u(he,x=>{v()&&x(oe)})}r(Z),ra(Z,x=>ye(g,x),()=>e(g)),d(()=>q(Z,"aria-label",v()?`Changes to ${v()}`:"Changes")),Ya("close",Z,()=>v(null)),He("click",Z,x=>x.target===e(g)&&e(g)?.close()),a(F,Z),It()}Xt(["click"]);var Na=s('<p class="text-sm text-muted-foreground"> </p>'),us=s('<p class="text-sm text-warning"> </p>'),cs=s('<p class="text-sm text-muted-foreground">Reading the worker’s terminal…</p>'),ps=s('<div class="mb-2 flex justify-end"><button type="button" class="inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs hover:bg-accent"><!>Full screen</button></div> <pre class="max-h-96 overflow-auto rounded-lg bg-terminal p-4 font-mono text-xs leading-relaxed whitespace-pre-wrap text-terminal-foreground"> </pre> <p class="mt-2 text-xs text-muted-foreground"> </p>',1),ms=s('<details class="group rounded-xl border"><summary class="flex list-none items-center gap-2 px-4 py-3 text-sm [&::-webkit-details-marker]:hidden"><!> <span class="font-medium">Raw terminal output</span> <span class="text-muted-foreground"></span></summary> <div class="border-t p-4"><!></div></details> <!>',1);function fs(F,l){Ct(l,!0);let v=sa(l,"live",3,!0);const g=40;let $=We(!1),A=We(null),le=We(null),Z=We(!1);aa(()=>{if(!(!e($)||!v()||wr.open>0))return Cr(l.task.id,g,Ra.inspector,{onresult:_=>{ye(A,_,!0),ye(le,null)},onerror:_=>ye(le,`Could not reach the Wheelhouse server (${_.message}).`)})});var he=ms(),oe=O(he),x=o(oe),ue=o(x);ua(ue,{class:"size-4 text-muted-foreground transition-transform group-open:rotate-90","aria-hidden":"true"});var b=t(ue,4);b.textContent="read-only sample of the last 40 lines",r(x);var T=t(x,2),W=o(T);{var K=_=>{var z=Na(),U=c(z);d(()=>i(U,`Not available. ${l.task.outputNote??""}`)),a(_,z)},xe=_=>{var z=us(),U=c(z,!0);d(()=>i(U,e(le))),a(_,z)},fe=_=>{var z=cs();a(_,z)},X=_=>{var z=Na(),U=c(z);d(()=>i(U,`Not available. ${e(A).reason??""}`)),a(_,z)},N=_=>{var z=ps(),U=O(z),de=o(U),re=o(de);yr(re,{class:"size-3.5","aria-hidden":"true"}),Ne(),r(de),r(U);var C=t(U,2),f=c(C,!0),p=t(C,2),J=c(p);d((H,se)=>{i(f,H),i(J,`Captured ${se??""}, refreshed every ${Ra.inspector/1e3} s while open.
|
|
2
|
-
A bounded sample of the screen, not a full transcript. Wheelhouse cannot type into it.`)},[()=>e(A).lines.length?e(A).lines.join(`
|
|
3
|
-
`):"(the terminal is empty)",()=>Bt(e(A).capturedAt)]),He("click",de,()=>ye(Z,!0)),a(_,z)};u(W,_=>{l.task.outputAvailable?e(le)?_(xe,1):e(A)?e(A).available?_(N,-1):_(X,3):_(fe,2):_(K)})}r(T),r(oe);var B=t(oe,2);Ir(B,{get task(){return l.task},get open(){return e(Z)},set open(_){ye(Z,_,!0)}}),Ur("open","toggle",oe,_=>ye($,_),()=>e($)),a(F,he),It()}Xt(["click"]);const rr="stages";function _s(F){const l=v=>v?{count:v}:{};return[{id:"stages",label:"Stages"},...F.preview?[{id:"preview",label:"Live preview"}]:[],...F.build?[{id:"talk",label:"Conversation",...l(F.build.talk)},{id:"checks",label:"Checks"},{id:"docs",label:"Docs",...l(F.build.docs)}]:[],{id:"screenshots",label:"Screenshots",...l(F.shots)},...F.plugins.map(v=>({id:`plugin:${v.key}`,label:v.title})),{id:"log",label:"Log"}]}const xs=(F,l)=>F&&l.some(v=>v.id===F)?F:rr,gs=F=>F.state==="current",Yt=F=>F.state==="done"||F.state==="current"||!!F.note,Ba=(F,l,v=`${l}s`)=>`${F} ${F===1?l:v}`;function hs(F,l,v){if(F.state==="skipped")return F.note;if(F.state==="upcoming")return null;const g=[];for(const $ of F.evidence)if($==="files"&&v?.files.available){const A=v.files.value.total;g.push(A?`${Ba(A,"file")} changed`:"No changes yet")}else if($==="pr"&&(v?.pr.available||l.pr)){const A=v?.pr.available?v.pr.value:null,le=A?.number??l.pr?.number??null,Z=A?A.draft?"draft":A.state:null;g.push(`Pull request${le?` #${le}`:""}${Z?` ${Z}`:""}`)}else $==="screenshots"&&v?.screenshots.available&&v.screenshots.value.length?g.push(Ba(v.screenshots.value.length,"screenshot")):$==="report"&&v?.report.available?g.push("Report written"):$==="validation"&&F.state==="done"&&g.push("Checks passed");return g.length?g.join(" · "):F.note}const ja=/^Review feedback on the live preview \([^)\n]*\):\n/,bs={sending:"Sending…",uncertain:"Confirming Firstmate has it…","saved-unannounced":"Saved; Firstmate reads it at its next check",delivered:"Sent to Firstmate",failed:"Not delivered"};function ws(F,l){return F.filter(v=>v.taskId===l&&ja.test(v.text)).map(v=>({id:v.requestId,text:v.text.replace(ja,""),at:v.submittedAt,status:v.delivery==="delivered"&&v.acknowledged?"Firstmate has it":bs[v.delivery],failed:v.delivery==="failed",reply:v.reply?.body??null}))}var ys=s('<button type="button" class="inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground hover:bg-accent hover:text-foreground"><!>Hide comments</button>'),ks=s('<p class="mt-2 rounded-lg bg-muted px-3 py-2 text-sm leading-relaxed whitespace-pre-line"><span class="font-medium">Firstmate:</span> </p>'),$s=s('<li><p class="text-sm leading-relaxed whitespace-pre-line"> </p> <p> </p> <!></li>'),zs=s('<li class="pt-6 text-sm text-muted-foreground">Nothing sent from this preview yet.<br/>Say what should change, as you look.</li>'),Cs=s('<li class="text-xs text-warning"> </li>'),Is=s('<aside class="flex min-h-0 w-[22rem] shrink-0 flex-col border-l bg-panel xl:w-96" aria-label="Feedback on this preview"><div class="border-b px-4 py-3"><h2 class="flex items-center gap-2 text-sm font-medium"><!>Feedback</h2> <p class="mt-0.5 text-xs text-muted-foreground">Goes to the worker through Firstmate.</p></div> <ol class="no-scrollbar min-h-0 flex-1 space-y-4 overflow-y-auto px-4 py-4" aria-label="Sent from this preview" data-preview-thread=""><!> <!></ol> <div class="border-t px-4 pt-1 pb-4"><!></div></aside>'),Fs=s('<button type="button" class="absolute right-5 bottom-5 inline-flex items-center gap-2 rounded-full border bg-background px-4 py-2 text-sm font-medium shadow-lg hover:bg-accent"><!> </button>'),Ss=s('<div class="fixed inset-0 z-50 flex flex-col bg-background outline-none" role="dialog" aria-modal="true" tabindex="-1" data-preview-studio=""><div class="flex h-12 shrink-0 items-center gap-3 border-b px-3 sm:px-4"><p class="min-w-0 flex-1 truncate text-sm"><span class="font-medium"> </span> <span class="text-muted-foreground">· Live preview</span></p> <!> <button type="button" class="inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs hover:bg-accent" aria-label="Close full screen (Esc)" title="Close (Esc)"><!>Close</button></div> <div class="relative flex min-h-0 flex-1"><div class="min-w-0 flex-1 p-3"><!></div> <!></div></div>');function As(F,l){Ct(l,!0);let v=sa(l,"feedback",3,!0);const g=8e3;let $=We(!0),A=We(ca([])),le=We(null),Z=We(null),he=We(null);async function oe(){try{const C=await fetch("/api/firstmate/messages");if(!C.ok)throw new Error(String(C.status));const f=await C.json(),p=ws(f.messages,l.taskId),J=p.length>e(A).length;ye(A,p,!0),ye(le,f.available?null:f.reason,!0),J&&requestAnimationFrame(()=>e(Z)?.scrollTo({top:e(Z).scrollHeight}))}catch{ye(le,"Could not read what was sent; Wheelhouse will try again.")}}Tr(()=>{const C=document.activeElement,f=document.body.style.overflow;document.body.style.overflow="hidden",e(he)?.focus(),v()&&oe();const p=v()?setInterval(oe,g):void 0;return()=>{clearInterval(p),document.body.style.overflow=f,C?.focus?.()}});function x(C){if(C.key!=="Escape")return;const f=C.target;if(f instanceof HTMLTextAreaElement&&f.value.trim()){f.blur();return}C.preventDefault(),l.onclose()}var ue=Ss();Ya("keydown",dr,x);var b=o(ue),T=o(b),W=o(T),K=c(W,!0);Ne(2),r(T);var xe=t(T,2);{var fe=C=>{var f=qe(),p=O(f);{var J=H=>{var se=ys(),ce=o(se);Vr(ce,{class:"size-4","aria-hidden":"true"}),Ne(),r(se),He("click",se,()=>ye($,!1)),a(H,se)};u(p,H=>{e($)&&H(J)})}a(C,f)};u(xe,C=>{v()&&C(fe)})}var X=t(xe,2),N=o(X);jt(N,{class:"size-4","aria-hidden":"true"}),Ne(),r(X),r(b);var B=t(b,2),_=o(B),z=o(_);Qa(z,{get taskId(){return l.taskId},fill:!0,feedback:!1}),r(_);var U=t(_,2);{var de=C=>{var f=Is(),p=o(f),J=o(p),H=o(J);ba(H,{class:"size-4 text-muted-foreground","aria-hidden":"true"}),Ne(),r(J),Ne(2),r(p);var se=t(p,2),ce=o(se);$e(ce,17,()=>e(A),pe=>pe.id,(pe,Ce)=>{var Ae=$s(),Xe=o(Ae),tt=c(Xe,!0),lt=t(Xe,2),Et=c(lt),mt=t(lt,2);{var Ft=St=>{var Be=ks(),Ee=t(o(Be));r(Be),d(()=>i(Ee,` ${e(Ce).reply??""}`)),a(St,Be)};u(mt,St=>{e(Ce).reply&&St(Ft)})}r(Ae),d(St=>{i(tt,e(Ce).text),Oe(lt,1,`mt-1 text-xs ${e(Ce).failed?"text-danger":"text-muted-foreground"}`),i(Et,`${St??""} · ${e(Ce).status??""}`)},[()=>Bt(e(Ce).at)]),a(pe,Ae)},pe=>{var Ce=zs();a(pe,Ce)});var ze=t(ce,2);{var Fe=pe=>{var Ce=Cs(),Ae=c(Ce,!0);d(()=>i(Ae,e(le))),a(pe,Ce)};u(ze,pe=>{e(le)&&pe(Fe)})}r(se),ra(se,pe=>ye(Z,pe),()=>e(Z));var Ge=t(se,2),G=o(Ge);Fr(G,{get taskId(){return l.taskId},get url(){return l.url},rows:3,onsent:oe}),r(Ge),r(f),a(C,f)},re=C=>{var f=Fs(),p=o(f);ba(p,{class:"size-4","aria-hidden":"true"});var J=t(p);r(f),d(()=>i(J,`Comments${e(A).length?` (${e(A).length})`:""}`)),He("click",f,()=>ye($,!0)),a(C,f)};u(U,C=>{v()&&e($)?C(de):v()&&C(re,1)})}r(B),r(ue),ra(ue,C=>ye(he,C),()=>e(he)),d(()=>{q(ue,"aria-label",`Live preview of ${l.title??""}, full screen`),i(K,l.title)}),He("click",X,function(...C){l.onclose?.apply(this,C)}),a(F,ue),It()}Xt(["click"]);var Ls=s('<details class="group mt-1 text-xs text-muted-foreground"><summary class="inline select-none hover:text-foreground">details</summary> <p class="mt-1 font-mono break-words whitespace-pre-wrap"> </p></details>');function Dt(F,l){Ct(l,!0);let v=sa(l,"plain",3,null);const g=y(()=>!!l.raw?.trim()&&l.raw.trim()!==v()?.trim());var $=qe(),A=O($);{var le=Z=>{var he=Ls(),oe=t(o(he),2),x=c(oe,!0);r(he),d(()=>i(x,l.raw)),a(Z,he)};u(A,Z=>{e(g)&&Z(le)})}a(F,$),It()}var Ps=s('<button type="button" class="w-20 shrink-0 cursor-zoom-in"><img loading="lazy" class="aspect-[16/10] w-full rounded-md border object-cover object-top"/></button>'),Ts=s('<div class="mt-3 flex flex-wrap gap-2"></div>'),Rs=s('<button type="button" class="mt-3 block w-full cursor-zoom-in"><img class="aspect-[16/10] w-full rounded-xl border object-cover object-top"/></button> <!> <p class="mt-2 px-1 text-xs text-muted-foreground" data-review="screenshots"> </p>',1),Es=s('<div class="mt-3 grid aspect-[16/10] w-full place-items-center rounded-xl border border-dashed bg-muted/40 text-center" data-review="screenshots"><div class="text-muted-foreground"><!> <p class="mt-2 text-sm font-medium"> </p> <p class="mt-1 text-xs">The worker has not saved any screenshots for this task.</p></div></div>'),Ds=s("Open preview<!>",1),Ms=s('<span class="text-sm text-muted-foreground" data-review="preview"> </span>'),Ns=s(" <!>",1),Bs=s("<!>Guided review",1),js=s("<!> <!>",1),Os=s('<span class="text-sm text-muted-foreground" data-review="pr"> </span>'),Ws=s('<a target="_blank" rel="noreferrer" class="ml-auto truncate font-mono text-xs text-muted-foreground hover:underline"> </a>'),Us=s('<section class="rounded-2xl border border-sea/40 p-3" aria-labelledby="review-evidence"><h2 id="review-evidence" class="px-1 pt-1 text-sm font-medium text-sea">Review evidence</h2> <!> <div class="mt-3 flex flex-wrap items-center gap-2 px-1 pb-1"><!> <!> <!></div></section> <!>',1);function qs(F,l){Ct(l,!0);const v=y(()=>Sr(l.task,l.shots));let g=We(null);var $=Us(),A=O($),le=t(o(A),2);{var Z=N=>{var B=Rs(),_=O(B),z=c(_),U=t(_,2);{var de=f=>{var p=Ts();$e(p,23,()=>e(v).shots.slice(1),J=>J.url,(J,H,se)=>{var ce=Ps(),ze=c(ce);d(()=>{q(ce,"aria-label",`Enlarge ${e(H).name??""}`),q(ze,"src",e(H).url),q(ze,"alt",e(H).name)}),He("click",ce,()=>ye(g,e(se)+1)),a(J,ce)}),r(p),a(f,p)};u(U,f=>{e(v).shots.length>1&&f(de)})}var re=t(U,2),C=c(re);d(()=>{q(_,"aria-label",`Enlarge ${e(v).shots[0].name??""}`),q(z,"src",e(v).shots[0].url),q(z,"alt",e(v).shots[0].name),i(C,`${e(v).shotsText??""}; select one to enlarge.`)}),He("click",_,()=>ye(g,0)),a(N,B)},he=N=>{var B=Es(),_=o(B),z=o(_);tr(z,{class:"mx-auto size-6","aria-hidden":"true"});var U=t(z,2),de=c(U,!0);Ne(2),r(_),r(B),d(()=>i(de,e(v).shotsText)),a(N,B)};u(le,N=>{e(v).shots.length?N(Z):N(he,-1)})}var oe=t(le,2),x=o(oe);{var ue=N=>{Qt(N,{get href(){return e(v).preview.url},target:"_blank",rel:"noreferrer",children:(B,_)=>{Ne();var z=Ds(),U=t(O(z));Rt(U,{}),a(B,z)},$$slots:{default:!0}})},b=N=>{var B=Ms(),_=c(B,!0);d(()=>i(_,e(v).previewText)),a(N,B)};u(x,N=>{e(v).preview?N(ue):N(b,-1)})}var T=t(x,2);{var W=N=>{var B=js(),_=O(B);{let U=y(()=>e(v).preview?"outline":"default");Qt(_,{get variant(){return e(U)},get href(){return e(v).pr.url},target:"_blank",rel:"noreferrer",children:(de,re)=>{Ne();var C=Ns(),f=O(C),p=t(f);Rt(p,{}),d(()=>i(f,`Review ${e(v).pr.label??""}`)),a(de,C)},$$slots:{default:!0}})}var z=t(_,2);{let U=y(()=>encodeURIComponent(l.task.id));Qt(z,{variant:"outline",get href(){return`/tasks/${e(U)??""}/review`},children:(de,re)=>{var C=Bs(),f=O(C);wa(f,{}),Ne(),a(de,C)},$$slots:{default:!0}})}a(N,B)},K=N=>{var B=Os(),_=c(B,!0);d(()=>i(_,e(v).prText)),a(N,B)};u(T,N=>{e(v).pr?N(W):N(K,-1)})}var xe=t(T,2);{var fe=N=>{var B=Ws(),_=c(B,!0);d(()=>{q(B,"href",e(v).preview.url),i(_,e(v).preview.url)}),a(N,B)};u(xe,N=>{e(v).preview&&N(fe)})}r(oe),r(A);var X=t(A,2);Xa(X,{get shots(){return e(v).shots},get index(){return e(g)},set index(N){ye(g,N,!0)}}),a(F,$),It()}Xt(["click"]);const Hs=(F,l=Ye)=>{var v=qe(),g=O(v);{var $=x=>{da(x,{class:"size-4 shrink-0 text-success","aria-label":"Done"})},A=x=>{jt(x,{class:"size-4 shrink-0 text-danger","aria-label":"Failed"})},le=x=>{{let ue=y(()=>l().state==="fixing"?"Fixing":"Running");$a(x,{class:"size-4 shrink-0 animate-spin text-muted-foreground",get"aria-label"(){return e(ue)}})}},Z=x=>{er(x,{class:"size-4 shrink-0 text-warning","aria-label":"Waiting for a decision"})},he=x=>{_a(x,{class:"size-4 shrink-0 text-muted-foreground","aria-label":"Skipped"})},oe=x=>{ka(x,{class:"size-4 shrink-0 text-muted-foreground","aria-label":"Not started"})};u(g,x=>{l().state==="done"?x($):l().state==="failed"?x(A,1):l().state==="running"||l().state==="fixing"?x(le,2):l().state==="waiting"?x(Z,3):l().state==="skipped"?x(he,4):x(oe,-1)})}a(F,v)};var Gs=s('<div class="rounded-xl border border-dashed p-6 text-sm text-muted-foreground"><p class="font-medium text-foreground">No checks to show yet</p> <p class="mt-1"> </p></div>'),Vs=s('<span class="tabular shrink-0 pt-0.5 text-xs text-muted-foreground"> </span>'),Ys=s('<span><span class="font-medium"> </span> skipped</span>'),Ks=s('<p class="tabular flex flex-wrap gap-x-4"><span><span class="font-medium text-success"> </span> passed</span> <span><span> </span> failed</span> <!></p>'),Qs=s('<span class="block text-xs text-muted-foreground"> </span>'),Xs=s('<pre class="overflow-x-auto border-t border-danger/20 px-3 py-2 font-mono text-xs whitespace-pre"> </pre>'),Js=s('<li><details class="rounded-md border border-danger/30 bg-danger/5"><summary class="flex cursor-pointer items-start gap-2 px-3 py-2"><!> <span class="min-w-0 break-words"> <!></span></summary> <!></details></li>'),Zs=s('<ul class="space-y-2"></ul>'),en=s('<span class="mt-0.5 block text-xs text-muted-foreground"> </span>'),tn=s('<li class="flex items-start gap-3 px-3 py-2"><!> <span class="min-w-0 flex-1"><span class="sr-only"> </span> <!></span></li>'),an=s('<ul class="divide-y divide-hair rounded-md border border-hair"></ul>'),rn=s('<p class="leading-relaxed text-muted-foreground"> </p>'),sn=s('<!> <!> <!> <!> <p class="text-xs text-muted-foreground"> </p>',1),Oa=s("<li> </li>"),nn=s('<ul class="list-disc space-y-1 pl-5"></ul>'),on=s('<li><a class="inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 hover:bg-accent/60"><!> </a></li>'),ln=s('<ul class="flex flex-wrap gap-2"></ul>'),dn=s("<!> <!>",1),vn=s('<div><p class="text-xs text-muted-foreground"> </p> <ul class="mt-1 list-disc space-y-1 pl-5 text-muted-foreground"></ul></div>'),un=s('<div class="space-y-4 px-4 pb-4 pl-11 text-sm"><!> <!> <!></div>'),cn=s('<li><button type="button"><span class="mt-0.5"><!></span> <span class="min-w-0 flex-1"><span class="font-medium"> </span> <span> </span></span> <!> <!></button> <!></li>'),pn=s('<p class="text-sm text-muted-foreground"> </p> <ol class="mt-4 divide-y divide-hair rounded-lg border bg-card"></ol> <p class="mt-2 text-xs text-muted-foreground"> </p>',1),mn=s('<section aria-labelledby="checks-report" class="max-w-4xl"><h2 id="checks-report" class="sr-only">What each check found</h2> <!></section>');function fn(F,l){Ct(l,!0);const v=b=>b.notes.length>0||!!b.tests?.failures.length||!!b.tests?.scenarios.length||!!b.docs?.files.length||!!b.docs?.summary.length;let g=ca({});const $=b=>g[b.key]??(b.state==="failed"||!!b.tests?.failed||b.tests?.scenarios.some(T=>T.result==="fail")),A=b=>`/tasks/${encodeURIComponent(l.taskId)}/doc?path=${encodeURIComponent(b)}`,le={pass:"Passed",fail:"Failed",untested:"Not tested",other:"Other"};function Z(b){const T=b.split(" › "),W=T.pop()??b;return{title:W.charAt(0).toUpperCase()+W.slice(1),where:T.length?T.join(" › "):null}}var he=mn(),oe=t(o(he),2);{var x=b=>{var T=Gs(),W=t(o(T),2),K=c(W,!0);r(T),d(()=>i(K,l.checks.reason)),a(b,T)},ue=b=>{const T=y(()=>l.checks.value);var W=pn(),K=O(W),xe=c(K),fe=t(K,2);$e(fe,21,()=>e(T).steps,B=>B.key,(B,_)=>{const z=y(()=>v(e(_))),U=y(()=>e(z)&&$(e(_)));var de=cn(),re=o(de),C=o(re),f=o(C);Hs(f,()=>e(_)),r(C);var p=t(C,2),J=o(p),H=c(J,!0),se=t(J,2),ce=c(se,!0);r(p);var ze=t(p,2);{var Fe=Ae=>{var Xe=Vs(),tt=c(Xe,!0);d(lt=>i(tt,lt),[()=>ta(Math.round(e(_).durationMs/1e3))]),a(Ae,Xe)};u(ze,Ae=>{e(_).durationMs&&Ae(Fe)})}var Ge=t(ze,2);{var G=Ae=>{{let Xe=y(()=>e(U)?"rotate-90":"");ua(Ae,{get class(){return`mt-0.5 size-4 shrink-0 text-muted-foreground transition-transform ${e(Xe)??""}`},"aria-hidden":"true"})}};u(Ge,Ae=>{e(z)&&Ae(G)})}r(re);var pe=t(re,2);{var Ce=Ae=>{var Xe=un(),tt=o(Xe);{var lt=Be=>{const Ee=y(()=>e(_).tests);var nt=sn(),yt=O(nt);{var At=Qe=>{var Je=Ks(),ot=o(Je),at=o(ot),Pt=c(at,!0);Ne(),r(ot);var _t=t(ot,2),kt=o(_t),m=c(kt,!0);Ne(),r(_t);var n=t(_t,2);{var I=L=>{var V=Ys(),k=o(V),P=c(k,!0);Ne(),r(V),d(()=>i(P,e(Ee).skipped)),a(L,V)};u(n,L=>{e(Ee).skipped&&L(I)})}r(Je),d(()=>{i(Pt,e(Ee).passed??0),Oe(kt,1,`font-medium ${e(Ee).failed?"text-danger":""}`),i(m,e(Ee).failed??0)}),a(Qe,Je)};u(yt,Qe=>{(e(Ee).passed!==null||e(Ee).failed!==null)&&Qe(At)})}var dt=t(yt,2);{var vt=Qe=>{var Je=Zs();$e(Je,23,()=>e(Ee).failures,ot=>ot.name,(ot,at,Pt)=>{const _t=y(()=>Z(e(at).name));var kt=Js(),m=o(kt),n=o(m),I=o(n);jt(I,{class:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":"true"});var L=t(I,2),V=o(L,!0),k=t(V);{var P=R=>{var w=Qs(),M=c(w,!0);d(()=>i(M,e(_t).where)),a(R,w)};u(k,R=>{e(_t).where&&R(P)})}r(L),r(n);var D=t(n,2);{var S=R=>{var w=Xs(),M=c(w,!0);d(()=>i(M,e(at).output)),a(R,w)};u(D,R=>{e(at).output&&R(S)})}r(m),r(kt),d(()=>{m.open=e(Pt)===0,i(V,e(_t).title)}),a(ot,kt)}),r(Je),a(Qe,Je)};u(dt,Qe=>{e(Ee).failures.length&&Qe(vt)})}var Ke=t(dt,2);{var ut=Qe=>{var Je=an();$e(Je,21,()=>e(Ee).scenarios,Nt,(ot,at)=>{var Pt=tn(),_t=o(Pt);{var kt=S=>{da(S,{class:"mt-0.5 size-4 shrink-0 text-success","aria-hidden":"true"})},m=S=>{jt(S,{class:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":"true"})},n=S=>{_a(S,{class:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})};u(_t,S=>{e(at).result==="pass"?S(kt):e(at).result==="fail"?S(m,1):S(n,-1)})}var I=t(_t,2),L=o(I),V=c(L),k=t(L),P=t(k);{var D=S=>{var R=en(),w=c(R,!0);d(()=>i(w,e(at).detail)),a(S,R)};u(P,S=>{e(at).detail&&e(at).result!=="pass"&&S(D)})}r(I),r(Pt),d(()=>{i(V,`${le[e(at).result]??""}:`),i(k,`${e(at).name??""} `)}),a(ot,Pt)}),r(Je),a(Qe,Je)};u(Ke,Qe=>{e(Ee).scenarios.length&&Qe(ut)})}var Lt=t(Ke,2);{var ft=Qe=>{var Je=rn(),ot=c(Je,!0);d(()=>i(ot,e(T).testingNote)),a(Qe,Je)};u(Lt,Qe=>{e(T).testingNote&&Qe(ft)})}var gt=t(Lt,2),Jt=c(gt);d(()=>i(Jt,`From ${e(Ee).basis??""}.`)),a(Be,nt)};u(tt,Be=>{e(_).tests&&Be(lt)})}var Et=t(tt,2);{var mt=Be=>{var Ee=dn(),nt=O(Ee);{var yt=vt=>{var Ke=nn();$e(Ke,21,()=>e(_).docs.summary,Nt,(ut,Lt)=>{var ft=Oa(),gt=c(ft,!0);d(()=>i(gt,e(Lt))),a(ut,ft)}),r(Ke),a(vt,Ke)};u(nt,vt=>{e(_).docs.summary.length&&vt(yt)})}var At=t(nt,2);{var dt=vt=>{var Ke=ln();$e(Ke,21,()=>e(_).docs.files,ut=>ut.path,(ut,Lt)=>{var ft=on(),gt=o(ft),Jt=o(gt);za(Jt,{class:"size-3.5 text-muted-foreground","aria-hidden":"true"});var Qe=t(Jt,1,!0);r(gt),r(ft),d(Je=>{q(gt,"href",Je),i(Qe,e(Lt).title)},[()=>A(e(Lt).path)]),a(ut,ft)}),r(Ke),a(vt,Ke)};u(At,vt=>{e(_).docs.files.length&&vt(dt)})}a(Be,Ee)};u(Et,Be=>{e(_).docs&&Be(mt)})}var Ft=t(Et,2);{var St=Be=>{var Ee=vn(),nt=o(Ee),yt=c(nt,!0),At=t(nt,2);$e(At,21,()=>e(_).notes,Nt,(dt,vt)=>{var Ke=Oa(),ut=c(Ke,!0);d(()=>i(ut,e(vt))),a(dt,Ke)}),r(At),r(Ee),d(()=>i(yt,e(_).key==="test"||e(_).key==="document"?"In its own words":"Along the way")),a(Be,Ee)};u(Ft,Be=>{e(_).notes.length&&Be(St)})}r(Xe),d(()=>q(Xe,"id",`check-${e(_).key??""}`)),a(Ae,Xe)};u(pe,Ae=>{e(U)&&Ae(Ce)})}r(de),d(Ae=>{q(de,"data-check-step",e(_).key),Oe(re,1,`flex w-full items-start gap-3 px-4 py-3 text-left disabled:cursor-default ${e(z)?"hover:bg-accent/40":""}`),re.disabled=!e(z),q(re,"aria-expanded",e(z)?e(U):void 0),q(re,"aria-controls",e(z)?`check-${e(_).key}`:void 0),i(H,e(_).label),Oe(se,1,`block text-sm ${Ae??""}`),i(ce,e(_).summary)},[()=>e(_).state==="failed"||e(_).tests?.failed||e(_).tests?.scenarios.some(Ae=>Ae.result==="fail")?"text-danger":"text-muted-foreground"]),He("click",re,()=>g[e(_).key]=!e(U)),a(B,de)}),r(fe);var X=t(fe,2),N=c(X);d(B=>{i(xe,`The automated review and tests${B??""}${e(T).runs>1?` (the latest of ${e(T).runs} runs)`:""}${e(T).outcome==="passed"?": everything passed.":e(T).outcome==="failed"?": it failed.":e(T).outcome==="cancelled"?": it was cancelled.":"."}`),i(N,`From ${l.checks.source??""}.`)},[()=>e(T).startedAt?`, started ${Bt(e(T).startedAt)}`:""]),a(b,W)};u(oe,b=>{l.checks.available?b(ue,-1):b(x)})}r(he),a(F,he),It()}Xt(["click"]);var _n=s('<button type="button" class="mt-1 text-xs text-muted-foreground hover:text-foreground hover:underline"> </button>'),xn=s("<p> </p> <!>",1),gn=s('<p class="text-sm text-muted-foreground"> </p>'),hn=s('<div class="rounded-xl border border-dashed p-6 text-muted-foreground"><!> <p class="mt-2 text-sm font-medium text-foreground">Nothing has been asked yet</p> <p class="mt-1 text-sm">When the worker asks Firstmate something, or Firstmate steers the worker, it shows here.</p></div>'),bn=s('<div class="mt-3"><!></div>'),wn=s('<div class="mt-3 border-l-2 border-brass/60 pl-3"><p class="text-xs text-muted-foreground"> </p> <!></div>'),yn=s('<li class="grid gap-x-4 px-4 py-4 sm:grid-cols-[4.5rem_minmax(0,1fr)]"><time class="tabular pt-0.5 text-xs text-muted-foreground"> </time> <div class="min-w-0"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><p class="text-xs tracking-wide text-muted-foreground"> </p> <span> </span></div> <p class="mt-1 font-medium"> </p> <!> <!> <!></div></li>'),kn=s('<p class="text-sm text-muted-foreground">Between the worker and Firstmate, oldest first. Firstmate answers for you while you are away.</p> <ol class="mt-4 divide-y divide-hair rounded-lg border bg-card"></ol> <p class="mt-2 text-xs text-muted-foreground"> </p>',1),$n=s('<section aria-labelledby="conversation" class="max-w-4xl"><h2 id="conversation" class="sr-only">Conversation</h2> <!></section>');function zn(F,l){Ct(l,!0);const v=(b,T=Ye,W=Ye)=>{const K=y(()=>W().length>g);var xe=xn(),fe=O(xe),X=c(fe,!0),N=t(fe,2);{var B=_=>{var z=_n(),U=c(z,!0);d(()=>{q(z,"aria-expanded",!!$[T()]),i(U,$[T()]?"Show less":"Show all")}),He("click",z,()=>$[T()]=!$[T()]),a(_,z)};u(N,_=>{e(K)&&_(B)})}d(()=>{Oe(fe,1,`mt-1 text-sm leading-relaxed whitespace-pre-line ${e(K)&&!$[T()]?"line-clamp-4":""}`),i(X,W())}),a(b,xe)},g=280;let $=ca({});function A(b){switch(b.kind){case"question":return"The worker asked Firstmate";case"blocked":return"The worker asked Firstmate for help";case"review":return"The automated review asked Firstmate";case"steer":return"Firstmate told the worker";case"captain":return b.to==="worker"?"Your feedback reached the worker":"You wrote to Firstmate"}}const le={open:"bg-warning/10 text-warning",answered:"bg-success/10 text-success",cleared:"bg-muted text-muted-foreground",read:"bg-muted text-muted-foreground",unread:"bg-sea/10 text-sea",sent:"bg-muted text-muted-foreground"};var Z=$n(),he=t(o(Z),2);{var oe=b=>{var T=gn(),W=c(T,!0);d(()=>i(W,l.talk.reason)),a(b,T)},x=b=>{var T=hn(),W=o(T);Ar(W,{class:"size-5","aria-hidden":"true"}),Ne(4),r(T),a(b,T)},ue=b=>{var T=kn(),W=t(O(T),2);$e(W,21,()=>l.talk.value,fe=>fe.id,(fe,X)=>{var N=yn(),B=o(N),_=c(B,!0),z=t(B,2),U=o(z),de=o(U),re=c(de,!0),C=t(de,2),f=c(C,!0);r(U);var p=t(U,2),J=c(p,!0),H=t(p,2);{var se=G=>{v(G,()=>`${e(X).id} body`,()=>e(X).body)};u(H,G=>{e(X).body&&G(se)})}var ce=t(H,2);{var ze=G=>{var pe=bn(),Ce=o(pe);Lr(Ce,{get questions(){return e(X).questions}}),r(pe),a(G,pe)};u(ce,G=>{e(X).questions.length&&G(ze)})}var Fe=t(ce,2);{var Ge=G=>{var pe=wn(),Ce=o(pe),Ae=c(Ce),Xe=t(Ce,2);v(Xe,()=>`${e(X).id} reply`,()=>e(X).reply.text),r(pe),d(tt=>i(Ae,`${Dr[e(X).reply.from]??""}
|
|
4
|
-
${e(X).reply.from==="worker"?"noted":"answered"}${tt??""}`),[()=>e(X).reply.at?` · ${Bt(e(X).reply.at)}`:""]),a(G,pe)};u(Fe,G=>{e(X).reply&&G(Ge)})}r(z),r(N),d((G,pe,Ce)=>{q(N,"data-talk",e(X).kind),q(B,"datetime",e(X).at),q(B,"title",G),i(_,pe),i(re,Ce),Oe(C,1,`rounded-full px-2 py-0.5 text-xs font-medium ${le[e(X).outcome.state]??""}`),i(f,e(X).outcome.label),i(J,e(X).title)},[()=>wt(e(X).at,l.now),()=>Bt(e(X).at),()=>A(e(X))]),a(fe,N)}),r(W);var K=t(W,2),xe=c(K);d(()=>i(xe,`From ${l.talk.source??""}.`)),a(b,T)};u(he,b=>{l.talk.available?l.talk.value.length?b(ue,-1):b(x,1):b(oe)})}r(Z),a(F,Z),It()}Xt(["click"]);var Cn=s('<p class="text-sm text-muted-foreground"> </p>'),In=s('<div class="rounded-xl border border-dashed p-6 text-muted-foreground"><!> <p class="mt-2 text-sm font-medium text-foreground">No docs touched yet</p> <p class="mt-1 text-sm">Decision records and docs the worker reads or changes for this task show here.</p></div>'),Fn=s('<a target="_blank" rel="noreferrer" class="inline-flex shrink-0 items-center gap-1 text-xs text-sea hover:underline">GitHub<!></a>'),Sn=s('<li class="flex items-start gap-3 px-4 py-3"><!> <div class="min-w-0 flex-1"><a class="font-medium hover:underline"> </a> <p class="mt-0.5 text-xs text-muted-foreground"> <span> </span></p></div> <!></li>'),An=s('<h3 class="section-label mt-6"> </h3> <ul class="mt-3 divide-y divide-hair rounded-lg border bg-card"></ul>',1),Ln=s('<p class="text-sm text-muted-foreground">The decision records and docs this task’s work read or changed. Open one to read it here.</p> <!> <p class="mt-2 text-xs text-muted-foreground"> </p>',1),Pn=s('<section aria-labelledby="task-docs" class="max-w-4xl"><h2 id="task-docs" class="sr-only">Docs and decisions</h2> <!></section>');function Tn(F,l){Ct(l,!0);const v=x=>`/tasks/${encodeURIComponent(l.taskId)}/doc?path=${encodeURIComponent(x.path)}`,g=y(()=>l.docs.available?[{label:"Decision records",items:l.docs.value.filter(x=>x.kind==="decision")},{label:"Docs",items:l.docs.value.filter(x=>x.kind!=="decision")}].filter(x=>x.items.length):[]),$=x=>x.changed?x.additions===null?"Changed in this task":x.deletions?`${x.additions} added, ${x.deletions} removed`:`${x.additions} ${x.additions===1?"line":"lines"} added`:"Read by the worker";var A=Pn(),le=t(o(A),2);{var Z=x=>{var ue=Cn(),b=c(ue,!0);d(()=>i(b,l.docs.reason)),a(x,ue)},he=x=>{var ue=In(),b=o(ue);Nr(b,{class:"size-5","aria-hidden":"true"}),Ne(4),r(ue),a(x,ue)},oe=x=>{var ue=Ln(),b=t(O(ue),2);$e(b,17,()=>e(g),K=>K.label,(K,xe)=>{var fe=An(),X=O(fe),N=c(X,!0),B=t(X,2);$e(B,21,()=>e(xe).items,_=>_.path,(_,z)=>{var U=Sn(),de=o(U);{var re=G=>{Za(G,{class:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})},C=G=>{za(G,{class:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})};u(de,G=>{e(z).kind==="decision"?G(re):G(C,-1)})}var f=t(de,2),p=o(f),J=c(p,!0),H=t(p,2),se=o(H),ce=t(se),ze=c(ce,!0);r(H),r(f);var Fe=t(f,2);{var Ge=G=>{var pe=Fn(),Ce=t(o(pe));Rt(Ce,{class:"size-3","aria-hidden":"true"}),r(pe),d(()=>{q(pe,"href",e(z).github),q(pe,"aria-label",`Open ${e(z).title??""} on GitHub`)}),a(G,pe)};u(Fe,G=>{e(z).github&&G(Ge)})}r(U),d((G,pe)=>{q(U,"data-doc",e(z).kind),q(p,"href",G),i(J,e(z).title),i(se,`${Mr[e(z).kind]??""}${e(z).kind==="readme"?"":` · ${e(z).name}`} · `),Oe(ce,1,ya(e(z).changed?"text-foreground/80":"")),i(ze,pe)},[()=>v(e(z)),()=>$(e(z))]),a(_,U)}),r(B),d(()=>i(N,e(xe).label)),a(K,fe)});var T=t(b,2),W=c(T);d(()=>i(W,`From ${l.docs.source??""}.`)),a(x,ue)};u(le,x=>{l.docs.available?l.docs.value.length?x(oe,-1):x(he,1):x(Z)})}r(A),a(F,A),It()}const Kt=(F,l=Ye)=>{var v=qe(),g=O(v);{var $=A=>{var le=Dn(),Z=c(le);d(()=>i(Z,`Not available. ${l().reason??""}`)),a(A,le)};u(g,A=>{l().available||A($)})}a(F,v)},Mt=(F,l=Ye)=>{var v=qe(),g=O(v);{var $=A=>{var le=Mn(),Z=c(le);d(he=>i(Z,`From ${l().source??""}${he??""}.`),[()=>l().observedAt?`, ${wt(l().observedAt,et.now)}`:""]),a(A,le)};u(g,A=>{l().available&&A($)})}a(F,v)},Wa=(F,l=Ye)=>{var v=qe(),g=O(v);{var $=oe=>{da(oe,{class:"size-4 shrink-0 text-success","aria-label":"Passed"})},A=oe=>{jt(oe,{class:"size-4 shrink-0 text-danger","aria-label":"Failed"})},le=oe=>{$a(oe,{class:"size-4 shrink-0 animate-spin text-muted-foreground","aria-label":"Running"})},Z=oe=>{_a(oe,{class:"size-4 shrink-0 text-muted-foreground","aria-label":"Skipped"})},he=oe=>{ka(oe,{class:"size-4 shrink-0 text-muted-foreground","aria-label":"Pending"})};u(g,oe=>{l().state==="pass"?oe($):l().state==="fail"?oe(A,1):l().state==="running"?oe(le,2):l().state==="skipped"?oe(Z,3):oe(he,-1)})}a(F,v)},Rn=F=>{},En=(F,l=Ye,v=Ye)=>{const g=y(()=>l().eta??null),$=y(()=>v().time);var A=oi(),le=o(A);{var Z=b=>{const T=y(()=>Ja(e(g)));var W=ei(),K=o(W),xe=o(K),fe=o(xe),X=o(fe);ar(X,{class:"size-4","aria-hidden":"true"}),Ne(),r(fe);var N=t(fe,2),B=c(N,!0),_=t(N,2);{var z=H=>{var se=Yo(),ce=c(se);d(ze=>i(ce,`Usually ${e(g).low??""}–${e(g).high??""} min, so around ${ze??""}`),[()=>Bt(new Date(et.now+e(g).minutes*6e4).toISOString())]),a(H,se)},U=H=>{var se=Ko();a(H,se)};u(_,H=>{e(g).minutes!==null&&!e(g).overdue?H(z):e(g).overdue&&H(U,1)})}r(xe);var de=t(xe,2);{var re=H=>{var se=Qo(),ce=c(se,!0);d(()=>i(ce,Rr[e(g).confidence])),a(H,se)};u(de,H=>{e(g).confidence!=="none"&&!e(g).overdue&&H(re)})}r(K);var C=t(K,2);{var f=H=>{var se=Zo();$e(se,21,()=>e(g).ahead,ce=>ce.phase,(ce,ze)=>{var Fe=Jo(),Ge=o(Fe),G=o(Ge,!0),pe=t(G);{var Ce=tt=>{var lt=Xo(),Et=c(lt,!0);d(mt=>i(Et,mt),[()=>` · now, ${ta(e(ze).spent)} in`]),a(tt,lt)};u(pe,tt=>{e(ze).current&&tt(Ce)})}r(Ge);var Ae=t(Ge,2),Xe=c(Ae,!0);r(Fe),d(tt=>{Oe(Ge,1,ya(e(ze).current?"font-medium":"text-muted-foreground")),i(G,Er[e(ze).phase]),i(Xe,tt)},[()=>e(ze).usual!==null?`usually ${ta(e(ze).usual)}`:"no history yet"]),a(ce,Fe)}),r(se),a(H,se)};u(C,H=>{e(g).ahead.length&&H(f)})}var p=t(C,2),J=c(p);r(W),d(()=>{Oe(N,1,`mt-1 text-2xl font-semibold tracking-tight ${e(T).tone==="warning"?"text-warning":""}`),i(B,e(T).text),i(J,`Based on ${e(g).basis??""} similar ${e(g).scope==="project"?"tasks in this project":"tasks across projects"}. A guide, not a promise: it counts work time only, not time
|
|
5
|
-
waiting on you.`)}),a(b,W)};u(le,b=>{e(g)&&!e(g).openEnded&&b(Z)})}var he=t(le,2);{var oe=b=>{var T=ri(),W=o(T),K=t(o(W),2),xe=c(K);r(W);var fe=t(W,2),X=o(fe);Br(X,{get seconds(){return e($).seconds},height:"h-3",label:"This task"}),r(fe);var N=t(fe,2),B=o(N);jr(B,{get seconds(){return e($).seconds}}),r(N);var _=t(N,2);{var z=U=>{var de=ai(),re=t(o(de),2);$e(re,21,()=>e($).reviewSteps,C=>C.step,(C,f)=>{var p=ti(),J=o(p),H=c(J,!0),se=t(J),ce=c(se,!0);r(p),d(ze=>{i(H,e(f).label),i(ce,ze)},[()=>ta(e(f).seconds)]),a(C,p)}),r(re),r(de),a(U,de)};u(_,U=>{e($).reviewSteps.length&&U(z)})}r(T),d((U,de)=>i(xe,`${U??""}${e($).ongoing?" so far":""}${de??""}`),[()=>ta(e($).total),()=>e($).readyAfter!==null?` · ready for you after ${ta(e($).readyAfter)}`:""]),a(b,T)};u(he,b=>{e($)&&e($).total>0&&b(oe)})}var x=t(he,2);{var ue=b=>{var T=ni(),W=t(o(T),2);$e(W,21,()=>v().decided,K=>K.id,(K,xe)=>{var fe=si(),X=o(fe),N=o(X);Za(N,{class:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"});var B=t(N,2),_=o(B),z=c(_,!0),U=t(_,2),de=c(U);r(B),r(X),r(fe),d(()=>{q(X,"href",`/decisions#${e(xe).id??""}`),i(z,e(xe).verdict),i(de,`· ${e(xe).calls[0].question??""}`)}),a(K,fe)}),r(W),r(T),a(b,T)};u(x,b=>{v().decided.length&&b(ue)})}r(A),a(F,A)},Ua=(F,l=Ye)=>{var v=mi(),g=o(v),$=c(g,!0),A=t(g,2);Ka(A,{get entry(){return l()},get now(){return et.now}}),r(v),d(()=>{q(v,"aria-label",l().title),i($,l().title)}),a(F,v)};var Dn=s('<p class="text-sm text-muted-foreground"> </p>'),Mn=s('<p class="mt-1.5 text-xs text-muted-foreground"> </p>'),Nn=s('<span class="text-muted-foreground">new, not committed</span>'),Bn=s('<span class="text-muted-foreground">binary</span>'),jn=s('<span class="tabular"><span class="text-success"> </span> <span class="text-danger"> </span></span> <span class="hidden h-1.5 w-16 overflow-hidden rounded-full bg-muted sm:flex"><span class="bg-success"></span> <span class="bg-danger"></span></span>',1),On=s('<li><button type="button" class="flex w-full items-center gap-3 px-3 py-2 text-left text-xs hover:bg-accent/60"><span class="w-3 font-mono text-muted-foreground"> </span> <span class="min-w-0 flex-1 truncate font-mono"> </span> <!></button></li>'),Wn=s('<button class="mt-2 text-sm text-muted-foreground hover:text-foreground hover:underline"> </button>'),qa=s('<p class="mt-1 text-xs text-muted-foreground"> </p>'),Un=s('<ul class="divide-y rounded-lg border"></ul> <!> <!> <p class="mt-1 text-xs text-muted-foreground">Select a file to see its diff.</p>',1),qn=s('<p class="text-sm text-muted-foreground">No changes yet.</p>'),Hn=s('<h4 class="mb-2 text-sm font-medium">Files changed <span class="font-normal text-muted-foreground"> </span></h4> <!> <!>',1),Gn=s('<button type="button" class="mt-2 block text-sm text-sea hover:underline">What each check found</button>'),Vn=s('<p class="text-sm text-muted-foreground"> <!></p>'),Yn=s('<!> <!> <p class="mt-1.5 text-xs text-muted-foreground"> </p> <!>',1),Kn=s('<p class="mt-1 text-sm text-muted-foreground"> </p>'),Qn=s('<p class="text-sm"> </p> <!> <!> <!>',1),Xn=s('<li><span class="font-medium"> </span> </li>'),Jn=s('<ul class="space-y-1 text-sm"></ul> <!>',1),Zn=s('<a class="mt-2 inline-flex items-center gap-1.5 text-sm text-sea hover:underline"><!>Review it with the review agent’s guide</a>'),eo=s('<li class="flex items-center gap-3 px-3 py-2 text-sm"><!><span class="truncate"> </span></li>'),to=s('<ul class="mt-3 divide-y rounded-lg border"></ul>'),ao=s('<p class="mt-2 text-sm text-muted-foreground">No CI checks reported.</p>'),ro=s('<p class="text-sm"><a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sea hover:underline"> <!></a> <span class="text-muted-foreground"> </span></p> <!> <!> <!>',1),so=s('<a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sm text-sea hover:underline"> <!></a> <p class="mt-1 text-sm text-muted-foreground"> </p>',1),no=s('<div class="flex gap-3 rounded-lg border p-3"><!> <div class="min-w-0"><p class="truncate font-mono text-xs text-muted-foreground"> </p> <p class="mt-1 text-sm leading-relaxed"> </p></div></div> <!>',1),Ha=s('<button type="button" class="w-48 shrink-0 cursor-zoom-in text-left"><img loading="lazy" class="aspect-[16/10] w-full rounded-lg border object-cover object-top"/> <p class="mt-1.5 truncate text-xs text-muted-foreground"> </p></button>'),oo=s('<div class="flex flex-wrap gap-3"></div> <!>',1),io=s('<a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sm text-sea hover:underline">Open preview<!></a> <!>',1),Ga=s("<li> <!></li>"),lo=s('<ul class="list-disc space-y-1 pl-5 text-sm"></ul>'),vo=s('· <a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sea hover:underline">Open<!></a>',1),uo=s('<p class="mt-1 font-mono text-xs break-all text-muted-foreground"> </p>'),co=s('<details class="mt-1"><summary class="cursor-pointer text-xs text-sea">Output</summary> <pre class="mt-1 max-h-80 overflow-auto rounded-md bg-terminal px-3 py-2 font-mono text-xs text-terminal-foreground"> </pre></details>'),po=s('<div class="flex items-start gap-3 rounded-lg border px-3 py-2 text-sm"><!> <div class="min-w-0 flex-1"><p><span class="font-medium"> </span> <span class="text-muted-foreground"> </span></p> <p class="mt-0.5 text-xs text-muted-foreground"> <!></p> <!> <!></div></div>'),mo=s('<p class="text-sm text-muted-foreground"><!></p>'),Va=s('<span class="text-muted-foreground"> </span>'),fo=s('<p class="mt-2 leading-relaxed"><span class="mr-1 text-muted-foreground">Now:</span> <!></p> <!>',1),_o=s('<span class="mr-1 text-muted-foreground">Latest update:</span>'),xo=s('<p class="mt-2 leading-relaxed"><!> </p> <!>',1),go=s('<ul class="mt-2 list-disc space-y-1 pl-5 text-sm"></ul>'),ho=s('<p class="mt-2 text-xs text-muted-foreground">Answer through Firstmate: it passes your word to the crew.</p>'),bo=s('<div><p> </p> <p class="mt-1 text-sm leading-relaxed whitespace-pre-line"> </p> <!> <!> <!></div>'),wo=s('<div class="mt-5"><!></div>'),yo=s('<button type="button"><!> </button>'),ko=s("<!>Live preview",1),$o=s(" <!>",1),zo=s("<!>Review the pull request",1),Co=s("<!>Ask Firstmate about this",1),Io=s('<a target="_blank" rel="noreferrer" class="text-sea hover:underline"> </a> <!>',1),Fo=s('<span class="text-muted-foreground">None yet</span>'),So=s('<a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sea hover:underline"> <!></a>'),Ao=s('<span class="text-muted-foreground">None reported</span>'),Lo=s('<div><dt class="text-muted-foreground">Delivery</dt> <dd> </dd></div>'),Po=s('<p class="mt-5 text-sm text-muted-foreground"> </p> <h1 class="mt-1 text-[1.9rem] leading-tight text-balance"> </h1> <p> </p> <!> <!> <!> <div class="mt-6"><!></div> <!> <div class="mt-6 flex flex-wrap gap-2"><!> <!> <!> <!></div> <dl class="mt-6 grid grid-cols-2 gap-x-6 gap-y-3 border-t pt-5 text-sm"><div><dt class="text-muted-foreground">Pull request</dt> <dd><!></dd></div> <div><dt class="text-muted-foreground">Preview</dt> <dd><!></dd></div> <div><dt class="text-muted-foreground">Last checked</dt> <dd><!></dd></div> <!></dl>',1),To=s('<button type="button" class="shrink-0 text-xs text-muted-foreground hover:text-foreground hover:underline"> </button>'),Ro=s("<span></span>"),Eo=s('<span class="shrink-0 text-sm text-muted-foreground">skipped</span>'),Do=s('<span class="shrink-0 text-sm text-danger">failed</span>'),Mo=s("<span> </span>"),No=s('<span class="min-w-0 truncate text-sm text-muted-foreground"> </span>'),Bo=s('<div data-slot="step.evidence"><h4 class="mb-2 text-sm font-medium"> </h4> <!></div>'),jo=s('<div class="mt-3 space-y-4"><!> <!></div>'),Oo=s("<div><!> <!></div>"),Wo=s('<div class="mt-4"><!></div>'),Uo=s('<li><!> <span><!> <!></span> <div class="min-w-0 flex-1"><button type="button" class="group flex w-full min-w-0 items-baseline gap-2 rounded-md text-left disabled:cursor-default"><span> </span> <!> <!> <!> <!></button> <!> <!></div></li>'),qo=s('<section aria-labelledby="passage"><div class="flex items-baseline justify-between gap-4"><h2 id="passage" class="sr-only">Passage</h2> <p class="text-xs text-muted-foreground"> </p> <!></div> <ol class="mt-5"></ol></section>'),Ho=s('<section aria-labelledby="live-preview"><h2 id="live-preview" class="sr-only">Live preview</h2> <!></section>'),Go=s('<div class="flex flex-wrap gap-4"></div> <!>',1),Vo=s('<div class="grid min-h-60 place-items-center rounded-xl border border-dashed bg-muted/30 p-6 text-center text-muted-foreground"><div><!> <p class="mt-2 text-sm font-medium">No screenshots saved</p> <p class="mt-1 text-xs"> </p></div></div>'),Yo=s('<p class="mt-0.5 text-sm text-muted-foreground"> </p>'),Ko=s('<p class="mt-0.5 text-sm text-muted-foreground">Similar work had reached your review by this point.</p>'),Qo=s('<span class="rounded-full bg-muted px-2.5 py-1 text-xs font-medium"> </span>'),Xo=s('<span class="font-normal text-muted-foreground"> </span>'),Jo=s('<li class="flex items-baseline justify-between gap-4 text-sm"><span> <!></span> <span class="text-muted-foreground tabular-nums"> </span></li>'),Zo=s('<ol class="mt-5 space-y-2 border-t pt-4"></ol>'),ei=s('<div class="rounded-xl border bg-card p-5"><div class="flex flex-wrap items-start justify-between gap-3"><div><p class="flex items-center gap-2 text-sm text-muted-foreground"><!>Until it is ready for your review</p> <p> </p> <!></div> <!></div> <!> <p class="mt-4 text-xs text-muted-foreground"> </p></div>'),ti=s('<li class="flex justify-between gap-4"><span> </span><span class="text-muted-foreground tabular-nums"> </span></li>'),ai=s('<details class="mt-4 rounded-lg border px-4 py-3 text-sm"><summary class="cursor-pointer text-muted-foreground hover:text-foreground">Inside the latest automated review</summary> <ul class="mt-3 space-y-1.5"></ul></details>'),ri=s('<div><div class="flex flex-wrap items-baseline justify-between gap-2"><h2 class="section-label flex-1">Where its time went</h2> <p class="text-sm text-muted-foreground"> </p></div> <div class="mt-3"><!></div> <div class="mt-3"><!></div> <!></div>'),si=s('<li><a class="flex gap-3 px-4 py-3 hover:bg-accent/40"><!> <span class="min-w-0 text-sm"><span class="font-medium"> </span> <span class="text-muted-foreground"> </span></span></a></li>'),ni=s('<div><h2 class="section-label">Decided for you on this task</h2> <ul class="mt-3 divide-y rounded-lg border"></ul></div>'),oi=s('<section class="space-y-6" aria-label="Work time"><!> <!> <!></section>'),ii=s("<p> </p> <!>",1),li=s("<p> </p>"),di=s('<li class="grid grid-cols-[5.5rem_minmax(0,1fr)] gap-3"><time class="tabular text-xs text-muted-foreground"> </time> <div class="min-w-0 break-words"><!></div></li>'),vi=s('<ol class="space-y-2 text-sm"></ol> <!>',1),ui=s("<li> </li>"),ci=s('<div class="rounded-xl border border-dashed p-4 text-sm"><p class="font-medium">Not available yet</p> <ul class="mt-2 list-disc space-y-1 pl-5 text-muted-foreground"></ul></div>'),pi=s('<section class="max-w-3xl space-y-4" aria-labelledby="ships-log"><div class="rounded-xl border"><div class="flex flex-wrap items-baseline gap-x-2 px-4 py-3 text-sm"><h2 id="ships-log" class="font-display text-[1.2rem] font-medium tracking-[0.1em] text-muted-foreground [font-variant-caps:all-small-caps]">Ship’s log</h2> <span class="text-muted-foreground">what the crew reported, oldest first (history, not current state)</span></div> <div class="border-t p-4"><!></div></div> <!> <!></section>'),mi=s('<section class="rounded-xl border p-4" data-slot="task.section"><h2 class="mb-3 text-sm font-medium"> </h2> <!></section>'),fi=s('<a class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground"><!>Harbour</a> <p class="surface mt-6 max-w-3xl p-6 text-muted-foreground"> </p>',1),_i=s('<div id="live-terminal-body" class="mt-3"><!></div>'),xi=s('<section class="mt-6 border-t pt-5" aria-labelledby="live-terminal" data-terminal=""><h2 id="live-terminal" class="text-sm font-medium"><button type="button" class="group flex w-full items-center gap-2 text-left" aria-controls="live-terminal-body"><span class="group-hover:underline">Live terminal</span> <!></button></h2> <!></section>'),gi=s('<div class="mt-6 scroll-mt-20 border-t pt-5" data-time=""><!></div>'),hi=s('<span class="rounded-full bg-muted px-1.5 text-xs text-muted-foreground tabular-nums"> </span>'),bi=s('<button type="button" role="tab"> <!></button>'),wi=s('<div role="tabpanel" tabindex="0" class="pt-6 outline-none"><!></div>'),yi=s('<div class="grid gap-8 lg:grid-cols-[minmax(19rem,25rem)_minmax(0,1fr)] xl:grid-cols-[26rem_minmax(0,1fr)] xl:gap-12"><aside class="no-scrollbar min-w-0 self-start rounded-lg border bg-panel px-6 pt-1 pb-6 lg:sticky lg:top-[4.5rem] lg:max-h-[calc(100dvh-5.5rem)] lg:overflow-y-auto lg:pb-6" aria-label="Overview"><a class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground"><!>Harbour</a> <!> <!> <!></aside> <div class="surface min-w-0 scroll-mt-14 px-5 pb-8 sm:px-6"><div class="sticky top-14 z-20 -mx-5 rounded-t-lg bg-card px-5 pt-1 sm:-mx-6 sm:px-6"><div class="no-scrollbar flex items-center gap-1 overflow-x-auto border-b" role="tablist" aria-label="Task detail"></div></div> <!></div></div> <!> <!> <!>',1),ki=s('<main class="px-4 pt-4 pb-20 sm:px-6 lg:px-10"><!></main>');function nl(F,l){Ct(l,!0);const v=m=>{var n=qe(),I=O(n);{var L=k=>{const P=y(()=>e(p).files.value),D=y(()=>Math.max(1,...e(P).files.map(ve=>(ve.additions??0)+(ve.deletions??0))));var S=Hn(),R=O(S),w=t(o(R)),M=c(w);r(R);var h=t(R,2);{var ne=ve=>{var te=Un(),Te=O(te);$e(Te,21,()=>e(_)?e(P).files:e(P).files.slice(0,B),_e=>_e.path,(_e,E)=>{var be=On(),we=o(be),Re=o(we),Me=c(Re,!0),Ue=t(Re,2),Ve=c(Ue,!0),ht=t(Ue,2);{var Ot=Ze=>{var xt=Nn();a(Ze,xt)},ke=Ze=>{var xt=Bn();a(Ze,xt)},$t=Ze=>{var xt=jn(),Tt=O(xt),ct=o(Tt),Wt=c(ct),Zt=t(ct,2),na=c(Zt);r(Tt);var ea=t(Tt,2),Ut=o(ea),qt=t(Ut,2);r(ea),d(()=>{i(Wt,`+${e(E).additions??""}`),i(na,`−${e(E).deletions??""}`),Sa(Ut,`width:${(e(E).additions??0)/e(D)*100}%`),Sa(qt,`width:${(e(E).deletions??0)/e(D)*100}%`)}),a(Ze,xt)};u(ht,Ze=>{e(E).status==="?"?Ze(Ot):e(E).additions===null?Ze(ke,1):Ze($t,-1)})}r(we),r(be),d(()=>{q(we,"aria-label",`Show the changes to ${e(E).path??""}`),i(Me,e(E).status),q(Ue,"title",e(E).path),i(Ve,e(E).path)}),He("click",we,()=>ye(U,e(E).path,!0)),a(_e,be)}),r(Te);var De=t(Te,2);{var Se=_e=>{var E=Wn(),be=c(E);d(()=>i(be,`Show all ${e(P).files.length??""} files`)),He("click",E,()=>ye(_,!0)),a(_e,E)};u(De,_e=>{!e(_)&&e(P).files.length>B&&_e(Se)})}var ie=t(De,2);{var Q=_e=>{var E=qa(),be=c(E);d(()=>i(be,`Showing the first ${e(P).files.length??""} of ${e(P).total??""} files.`)),a(_e,E)};u(ie,_e=>{e(P).truncated&&_e(Q)})}Ne(2),a(ve,te)},me=ve=>{var te=qn();a(ve,te)};u(h,ve=>{e(P).files.length?ve(ne):ve(me,-1)})}var ge=t(h,2);Mt(ge,()=>e(p).files),d(()=>i(M,`${e(P).branch?`on ${e(P).branch}`:""} against ${e(P).base??""}`)),a(k,S)},V=k=>{Kt(k,()=>e(p).files)};u(I,k=>{e(p)?.files.available?k(L):e(p)&&k(V,1)})}a(m,n)},g=m=>{var n=Gn();He("click",n,()=>{At("checks").then(()=>document.getElementById("tab-checks")?.focus({preventScroll:!0}))}),a(m,n)},$=m=>{var n=qe(),I=O(n);{var L=V=>{var k=Vn(),P=o(k),D=t(P);{var S=R=>{var w=Vt();d(M=>i(w,`Waiting on ${M??""}.`),[()=>e(f).blockedBy.join(", ")]),a(R,w)};u(D,R=>{e(f).blockedBy.length&&R(S)})}r(k),d(()=>i(P,`${e(f).since?`Filed ${e(f).since}.`:"Queued by Firstmate."} `)),a(V,k)};u(I,V=>{e(f)&&V(L)})}a(m,n)},A=m=>{var n=qe(),I=O(n);{var L=S=>{var R=Yn(),w=O(R);{let ve=y(()=>e(p)?.pr.available?e(p).pr.value.checks:[]);Zr(w,{get pipeline(){return e(f).pipeline},get busy(){return e(f).busy},get prChecks(){return e(ve)}})}var M=t(w,2);{var h=ve=>{{let te=y(()=>la(e(f).current?.state,e(p).validation.value.detail));Dt(ve,{get raw(){return e(p).validation.value.detail},get plain(){return e(te)}})}};u(M,ve=>{e(p)?.validation.available&&ve(h)})}var ne=t(M,2),me=c(ne),ge=t(ne,2);g(ge),d(ve=>i(me,`From the validation run’s own report${ve??""}.`),[()=>e(f).pipeline.observedAt?`, ${wt(e(f).pipeline.observedAt,et.now)}`:""]),a(S,R)},V=y(()=>e(f)&&zr(e(f))),k=S=>{const R=y(()=>la(e(f)?.current?.state,e(p).validation.value.detail));var w=Qn(),M=O(w),h=c(M,!0),ne=t(M,2);{var me=te=>{var Te=Kn(),De=c(Te);d(Se=>i(De,`${e(f).pipeline.label??""} step${e(f).pipeline.round?`, fix round ${e(f).pipeline.round}`:""}${Se??""}.`),[()=>e(f).pipeline.startedAt?`, started ${wt(e(f).pipeline.startedAt,et.now)}`:""]),a(te,Te)};u(ne,te=>{e(f)?.pipeline&&e(f).current?.state==="working"&&te(me)})}var ge=t(ne,2);Dt(ge,{get raw(){return e(p).validation.value.detail},get plain(){return e(R)}});var ve=t(ge,2);Mt(ve,()=>e(p).validation),d(()=>i(h,e(R))),a(S,w)},P=S=>{var R=Jn(),w=O(R);$e(w,21,()=>e(C).build.checks.value.steps.filter(h=>h.key!=="intent"),h=>h.key,(h,ne)=>{var me=Xn(),ge=o(me),ve=c(ge,!0),te=t(ge);r(me),d(()=>{i(ve,e(ne).label),i(te,` · ${e(ne).summary??""}`)}),a(h,me)}),r(w);var M=t(w,2);g(M),a(S,R)},D=S=>{Kt(S,()=>e(p).validation)};u(I,S=>{e(V)?S(L):e(p)?.validation.available?S(k,1):e(C)?.build.checks.available?S(P,2):e(p)&&S(D,3)})}a(m,n)},le=m=>{var n=Zn(),I=o(n);wa(I,{class:"size-3.5","aria-hidden":"true"}),Ne(),r(n),d(L=>q(n,"href",`/tasks/${L??""}/review`),[()=>encodeURIComponent(e(re))]),a(m,n)},Z=m=>{var n=qe(),I=O(n);{var L=P=>{const D=y(()=>e(p).pr.value);var S=ro(),R=O(S),w=o(R),M=o(w),h=t(M);Rt(h,{class:"size-3.5","aria-hidden":"true"}),r(w);var ne=t(w,2),me=c(ne);r(R);var ge=t(R,2);{var ve=Se=>{var ie=to();$e(ie,23,()=>e(D).checks,(Q,_e)=>Q.name+_e,(Q,_e)=>{var E=eo(),be=o(E);Wa(be,()=>e(_e));var we=t(be),Re=c(we,!0);r(E),d(()=>i(Re,e(_e).name)),a(Q,E)}),r(ie),a(Se,ie)},te=Se=>{var ie=ao();a(Se,ie)};u(ge,Se=>{e(D).checks.length?Se(ve):Se(te,-1)})}var Te=t(ge,2);Mt(Te,()=>e(p).pr);var De=t(Te,2);le(De),d((Se,ie)=>{q(w,"href",e(D).url),i(M,`Pull request${e(D).number?` #${e(D).number}`:""}`),i(me,`${Se??""}${ie??""}`)},[()=>ot(e(D).state,e(D).draft),()=>e(D).reviewDecision?`, ${e(D).reviewDecision.toLowerCase().replace(/_/g," ")}`:""]),a(P,S)},V=P=>{var D=so(),S=O(D),R=o(S),w=t(R);Rt(w,{class:"size-3.5","aria-hidden":"true"}),r(S);var M=t(S,2),h=c(M);d(()=>{q(S,"href",e(f).pr.url),i(R,`Pull request${e(f).pr.number?` #${e(f).pr.number}`:""}`),i(h,`Its state and checks are not available. ${e(p).pr.reason??""}`)}),a(P,D)},k=P=>{Kt(P,()=>e(p).pr)};u(I,P=>{e(p)?.pr.available?P(L):e(p)&&!e(p).pr.available&&e(f)?.pr?P(V,1):e(p)&&P(k,2)})}a(m,n)},he=m=>{var n=qe(),I=O(n);{var L=k=>{var P=no(),D=O(P),S=o(D);za(S,{class:"mt-0.5 size-4 shrink-0 text-muted-foreground","aria-hidden":"true"});var R=t(S,2),w=o(R),M=c(w,!0),h=t(w,2),ne=c(h,!0);r(R),r(D);var me=t(D,2);Mt(me,()=>e(p).report),d(()=>{i(M,e(p).report.value.path),i(ne,e(p).report.value.excerpt)}),a(k,P)},V=k=>{Kt(k,()=>e(p).report)};u(I,k=>{e(p)?.report.available?k(L):e(p)&&k(V,1)})}a(m,n)},oe=m=>{var n=qe(),I=O(n);{var L=k=>{var P=oo(),D=O(P);$e(D,21,()=>e(p).screenshots.value,R=>R.url,(R,w)=>{var M=Ha(),h=o(M),ne=t(h,2),me=c(ne,!0);r(M),d(()=>{q(M,"aria-label",`Enlarge ${e(w).name??""}`),q(h,"src",e(w).url),q(h,"alt",e(w).name),i(me,e(w).name)}),He("click",M,()=>ye(z,se(e(w).url),!0)),a(R,M)}),r(D);var S=t(D,2);Mt(S,()=>e(p).screenshots),a(k,P)},V=k=>{Kt(k,()=>e(p).screenshots)};u(I,k=>{e(p)?.screenshots.available?k(L):e(p)&&k(V,1)})}a(m,n)},x=m=>{var n=qe(),I=O(n);{var L=k=>{var P=io(),D=O(P),S=t(o(D));Rt(S,{class:"size-3.5","aria-hidden":"true"}),r(D);var R=t(D,2);Mt(R,()=>e(p).preview),d(()=>q(D,"href",e(p).preview.value.url)),a(k,P)},V=k=>{Kt(k,()=>e(p).preview)};u(I,k=>{e(p)?.preview.available?k(L):e(p)&&k(V,1)})}a(m,n)},ue=(m,n=Ye)=>{var I=qe(),L=O(I);{var V=k=>{var P=lo();$e(P,21,()=>e(p).decisions,Nt,(D,S)=>{const R=y(()=>la("needs-decision",e(S).text));var w=Ga(),M=o(w,!0),h=t(M);Dt(h,{get raw(){return e(S).text},get plain(){return e(R)}}),r(w),d(()=>i(M,e(R))),a(D,w)}),r(P),a(k,P)};u(L,k=>{n().state==="current"&&e(p)?.decisions.length&&k(V)})}a(m,I)},b=(m,n=Ye,I=Ye)=>{const L=y(()=>e(f)?.passage.checks.find(D=>`check:${D.id}`===I()));var V=qe(),k=O(V);{var P=D=>{var S=po(),R=o(S);{let E=y(()=>({name:e(L).label,state:Xe(e(L))}));Wa(R,()=>e(E))}var w=t(R,2),M=o(w),h=o(M),ne=c(h,!0),me=t(h,2),ge=c(me,!0);r(M);var ve=t(M,2),te=o(ve),Te=t(te);{var De=E=>{var be=vo(),we=t(O(be)),Re=t(o(we));Rt(Re,{class:"size-3","aria-hidden":"true"}),r(we),d(()=>q(we,"href",e(L).url)),a(E,be)};u(Te,E=>{e(L).url&&E(De)})}r(ve);var Se=t(ve,2);{var ie=E=>{var be=uo(),we=c(be);d(()=>i(we,`Runs ${e(L).command??""}`)),a(E,be)};u(Se,E=>{e(L).command&&E(ie)})}var Q=t(Se,2);{var _e=E=>{var be=co(),we=t(o(be),2),Re=c(we,!0);r(be),d(()=>i(Re,e(L).output)),a(E,be)};u(Q,E=>{e(L).output&&E(_e)})}r(w),r(S),d(E=>{q(S,"data-check",e(L).id),i(ne,e(L).label),i(ge,e(L).summary),i(te,`${(e(L).type==="command"?"Command":e(L).type)??""}${E??""}${e(L).state==="gave-up"?", no longer checked":""} `)},[()=>e(L).observedAt?`, ${e(L).type==="command"?"ran":"checked"} ${wt(e(L).observedAt,et.now)}`:""]),a(D,S)};u(k,D=>{e(L)&&D(P)})}a(m,V)},T=m=>{var n=qe(),I=O(n);{var L=V=>{var k=mo(),P=o(k);{var D=w=>{var M=Vt();d((h,ne)=>i(M,`Merged ${h??""} (${ne??""}).`),[()=>wt(e(f).mergedAt,et.now),()=>Bt(e(f).mergedAt)]),a(w,M)},S=w=>{var M=Vt();d(()=>i(M,`Closed on ${e(f).completedOn??""}; the exact time was not recorded.`)),a(w,M)},R=w=>{var M=Vt("Done.");a(w,M)};u(P,w=>{e(f).mergedAt?w(D):e(f).completedOn?w(S,1):e(f).status==="landed"&&w(R,2)})}r(k),a(V,k)};u(I,V=>{e(f)&&V(L)})}a(m,n)},W=(m,n=Ye,I=Ye,L=Ye)=>{const V=y(()=>n().eta&&!n().eta.openEnded?n().eta:null);var k=Po(),P=O(k),D=c(P),S=t(P,2),R=c(S,!0),w=t(S,2),M=c(w,!0),h=t(w,2);{var ne=j=>{var Y=fo(),ae=O(Y),Le=t(o(ae),1,!0),Pe=t(Le);{var je=rt=>{var pt=Va(),zt=c(pt,!0);d(Gt=>i(zt,Gt),[()=>` · ${n().activity.source==="pipeline"?"started ":""}${wt(n().activity.at,et.now)}`]),a(rt,pt)};u(Pe,rt=>{n().activity.at&&rt(je)})}r(ae);var st=t(ae,2);Dt(st,{get raw(){return n().summaryRaw}}),d(()=>{q(ae,"data-now",n().activity.source),i(Le,n().activity.text)}),a(j,Y)},me=j=>{var Y=xo(),ae=O(Y),Le=o(ae);{var Pe=rt=>{var pt=_o();a(rt,pt)};u(Le,rt=>{n().summaryIsHistory&&rt(Pe)})}var je=t(Le,1,!0);r(ae);var st=t(ae,2);Dt(st,{get raw(){return n().summaryRaw}}),d(()=>i(je,n().summary)),a(j,Y)};u(h,j=>{n().activity&&!n().attention?j(ne):n().summary&&!n().attention&&j(me,1)})}var ge=t(h,2);{var ve=j=>{var Y=bo(),ae=o(Y),Le=c(ae,!0),Pe=t(ae,2),je=c(Pe,!0),st=t(Pe,2);{var rt=bt=>{Dt(bt,{get raw(){return n().summaryRaw}})};u(st,bt=>{n().attention.owner==="firstmate"&&bt(rt)})}var pt=t(st,2);{var zt=bt=>{var ia=go();$e(ia,21,()=>L().evidence.decisions.slice(1),Nt,(nr,Ca)=>{const Ia=y(()=>la("needs-decision",e(Ca).text));var ga=Ga(),Fa=o(ga,!0),or=t(Fa);Dt(or,{get raw(){return e(Ca).text},get plain(){return e(Ia)}}),r(ga),d(()=>i(Fa,e(Ia))),a(nr,ga)}),r(ia),a(bt,ia)};u(pt,bt=>{L().evidence.decisions.length>1&&bt(zt)})}var Gt=t(pt,2);{var sr=bt=>{var ia=ho();a(bt,ia)};u(Gt,bt=>{n().attention.kind==="decision"&&bt(sr)})}r(Y),d(()=>{Oe(Y,1,`mt-5 rounded-xl p-4 ${n().attention.owner==="captain"?"bg-sea/10":"bg-warning/10"}`),Oe(ae,1,`text-sm font-medium ${n().attention.owner==="captain"?"text-sea":"text-warning"}`),i(Le,n().attention.owner==="firstmate"?"Waiting on Firstmate":n().attention.kind==="review"?"Ready for your review":"Your decision is needed"),i(je,n().attention.text)}),a(j,Y)};u(ge,j=>{n().attention&&j(ve)})}var te=t(ge,2);{var Te=j=>{var Y=wo(),ae=o(Y);qs(ae,{get task(){return n()},get shots(){return e(H)}}),r(Y),a(j,Y)},De=y(()=>Ea(n()));u(te,j=>{e(De)&&j(Te)})}var Se=t(te,2),ie=o(Se);kr(ie,{get task(){return n()}}),r(Se);var Q=t(Se,2);{var _e=j=>{const Y=y(()=>Ja(e(V)));var ae=yo(),Le=o(ae);ar(Le,{class:"size-4 shrink-0","aria-hidden":"true"});var Pe=t(Le,1,!0);r(ae),d(()=>{Oe(ae,1,`mt-4 flex items-center gap-2 text-left text-sm hover:underline ${e(Y).tone==="warning"?"text-warning":"text-muted-foreground"}`),i(Pe,e(Y).text)}),He("click",ae,Lt),a(j,ae)};u(Q,j=>{e(V)&&j(_e)})}var E=t(Q,2),be=o(E);{var we=j=>{{let Y=y(()=>n().attention?.owner==="captain"&&!n().pr?"default":"outline");Qt(j,{get variant(){return e(Y)},onclick:()=>At("preview"),children:(ae,Le)=>{var Pe=ko(),je=O(Pe);Wr(je,{}),Ne(),a(ae,Pe)},$$slots:{default:!0}})}};u(be,j=>{n().preview&&j(we)})}var Re=t(be,2);{var Me=j=>{Qt(j,{variant:"outline",get href(){return n().passage.link.url},target:"_blank",rel:"noreferrer",children:(Y,ae)=>{Ne();var Le=$o(),Pe=O(Le,!0),je=t(Pe);Rt(je,{}),d(()=>i(Pe,n().passage.link.label)),a(Y,Le)},$$slots:{default:!0}})},Ue=y(()=>n().passage.link&&n().passage.link.url!==n().preview?.url&&!Ea(n()));u(Re,j=>{e(Ue)&&j(Me)})}var Ve=t(Re,2);{var ht=j=>{{let Y=y(()=>encodeURIComponent(n().id));Qt(j,{variant:"outline",get href(){return`/tasks/${e(Y)??""}/review`},children:(ae,Le)=>{var Pe=zo(),je=O(Pe);wa(je,{}),Ne(),a(ae,Pe)},$$slots:{default:!0}})}};u(Ve,j=>{n().pr&&j(ht)})}var Ot=t(Ve,2);{let j=y(()=>n().attention?.owner==="captain"&&n().attention.kind==="decision"?"default":"outline"),Y=y(()=>encodeURIComponent(n().id));Qt(Ot,{get variant(){return e(j)},get href(){return`/?chat=${e(Y)??""}`},children:(ae,Le)=>{var Pe=Co(),je=O(Pe);ba(je,{}),Ne(),a(ae,Pe)},$$slots:{default:!0}})}r(E);var ke=t(E,2),$t=o(ke),Ze=t(o($t),2),xt=o(Ze);{var Tt=j=>{var Y=Io(),ae=O(Y),Le=c(ae,!0),Pe=t(ae,2);{var je=st=>{var rt=Va(),pt=c(rt,!0);d(zt=>i(pt,zt),[()=>ot(I().pr.value.state,I().pr.value.draft)]),a(st,rt)};u(Pe,st=>{I().pr.available&&st(je)})}d(()=>{q(ae,"href",n().pr.url),i(Le,n().pr.number?`#${n().pr.number}`:"Open")}),a(j,Y)},ct=j=>{var Y=Fo();a(j,Y)};u(xt,j=>{n().pr?j(Tt):j(ct,-1)})}r(Ze),r($t);var Wt=t($t,2),Zt=t(o(Wt),2),na=o(Zt);{var ea=j=>{var Y=So(),ae=o(Y),Le=t(ae);Rt(Le,{class:"size-3","aria-hidden":"true"}),r(Y),d(Pe=>{q(Y,"href",n().preview.url),i(ae,`Reported ${Pe??""}`)},[()=>wt(n().preview.reportedAt,et.now)]),a(j,Y)},Ut=j=>{var Y=Ao();a(j,Y)};u(na,j=>{n().preview?j(ea):j(Ut,-1)})}r(Zt),r(Wt);var qt=t(Wt,2),oa=t(o(qt),2),ee=o(oa);{var Ie=j=>{var Y=Vt();d(ae=>i(Y,`${ae??""}${n().current.fresh?"":" (cached)"}`),[()=>wt(n().current.observedAt,et.now)]),a(j,Y)},it=j=>{var Y=Vt();d(ae=>i(Y,ae),[()=>wt(ha()?.collectedAt,et.now)]),a(j,Y)};u(ee,j=>{n().current?.observedAt?j(Ie):j(it,-1)})}r(oa),r(qt);var Ht=t(qt,2);{var xa=j=>{var Y=Lo(),ae=t(o(Y),2),Le=c(ae);r(Y),d(()=>i(Le,`${n().worker.mode??"Unknown"??""}${n().worker.yolo?`, yolo ${n().worker.yolo}`:""}`)),a(j,Y)};u(Ht,j=>{n().worker&&j(xa)})}r(ke),d(j=>{i(D,`${e(J)?.name??n().projectId??""}${j??""}`),i(R,n().title),Oe(w,1,`mt-2 text-sm font-medium ${(e(Fe)==="normal"||e(Fe)==="landed"?"text-muted-foreground":Da[e(Fe)])??""}`),i(M,n().statusLabel),Oe(oa,1,ya(n().current&&!n().current.fresh?"text-warning":""))},[()=>Pa(n().worker)?` · ${Pa(n().worker)}`:""]),a(m,k)},K=(m,n=Ye)=>{const I=y(()=>n().passage.steps),L=y(()=>e(I).filter(Yt));var V=qo(),k=o(V),P=t(o(k),2),D=c(P),S=t(P,2);{var R=M=>{const h=y(()=>e(L).every(gt));var ne=To(),me=c(ne,!0);d(()=>i(me,e(h)?"Fold all":"Open all")),He("click",ne,()=>Qe(!e(h))),a(M,ne)};u(S,M=>{e(L).length>1&&M(R)})}r(k);var w=t(k,2);$e(w,23,()=>e(I),M=>M.key,(M,h,ne)=>{const me=y(()=>e(h).state==="done"),ge=y(()=>e(h).state==="current"),ve=y(()=>e(ge)&&n().status==="landed"&&!e(h).failed),te=y(()=>Yt(e(h))&>(e(h))),Te=y(()=>e(te)?null:hs(e(h),n(),e(p)));var De=Uo(),Se=o(De);{var ie=ee=>{var Ie=Ro();d(()=>Oe(Ie,1,`absolute top-7 bottom-0 left-[11px] ${e(me)?"w-0.5 bg-foreground/40":"w-0 border-l border-dotted border-input"}`)),a(ee,Ie)};u(Se,ee=>{e(ne)<e(I).length-1&&ee(ie)})}var Q=t(Se,2),_e=o(Q);{var E=ee=>{$r(ee,{class:"bg-foreground"})};u(_e,ee=>{e(ge)&&!e(ve)&&n().busy&&ee(E)})}var be=t(_e,2);{var we=ee=>{da(ee,{class:"size-3.5","aria-hidden":"true"})},Re=ee=>{jt(ee,{class:"size-3.5","aria-hidden":"true"})},Me=ee=>{var Ie=Vt();d(()=>i(Ie,e(ne)+1)),a(ee,Ie)};u(be,ee=>{e(me)||e(ve)?ee(we):e(h).failed?ee(Re,1):ee(Me,-1)})}r(Q);var Ue=t(Q,2),Ve=o(Ue),ht=o(Ve),Ot=c(ht,!0),ke=t(ht,2);{var $t=ee=>{var Ie=Eo();a(ee,Ie)};u(ke,ee=>{e(h).state==="skipped"&&ee($t)})}var Ze=t(ke,2);{var xt=ee=>{var Ie=Do();a(ee,Ie)},Tt=ee=>{var Ie=Mo(),it=c(Ie,!0);d(Ht=>{Oe(Ie,1,`shrink-0 text-sm ${(e(Fe)==="normal"||e(Fe)==="landed"?"text-muted-foreground":Da[e(Fe)])??""}`),i(it,Ht)},[()=>e(Fe)==="trouble"?`${n().statusLabel.toLowerCase()} here`:e(Fe)==="you"?"waiting on you":e(Fe)==="firstmate"?"waiting on Firstmate":n().status==="done"?"finished, with Firstmate":"in progress"]),a(ee,Ie)};u(Ze,ee=>{e(ge)&&e(h).failed?ee(xt):e(ge)&&!e(ve)&&ee(Tt,1)})}var ct=t(Ze,2);{var Wt=ee=>{var Ie=No(),it=c(Ie);d(()=>{q(Ie,"title",e(Te)),i(it,`· ${e(Te)??""}`)}),a(ee,Ie)};u(ct,ee=>{e(Te)&&ee(Wt)})}var Zt=t(ct,2);{var na=ee=>{{let Ie=y(()=>e(te)?"rotate-90":"");ua(ee,{get class(){return`ml-auto size-4 shrink-0 self-center text-muted-foreground transition-transform ${e(Ie)??""}`},"aria-hidden":"true"})}},ea=y(()=>Yt(e(h)));u(Zt,ee=>{e(ea)&&ee(na)})}r(Ve);var Ut=t(Ve,2);{var qt=ee=>{var Ie=Oo(),it=o(Ie);{var Ht=Y=>{var ae=qa(),Le=c(ae,!0);d(()=>i(Le,e(h).note)),a(Y,ae)};u(it,Y=>{e(h).note&&Y(Ht)})}var xa=t(it,2);{var j=Y=>{var ae=jo(),Le=o(ae);$e(Le,16,()=>e(h).evidence,je=>je,(je,st,rt,pt)=>{var zt=qe(),Gt=O(zt);pr(Gt,()=>pe(st)??Ye,()=>e(h),()=>st),a(je,zt)});var Pe=t(Le,2);$e(Pe,17,()=>ze(e(h).key),je=>je.key,(je,st)=>{var rt=Bo(),pt=o(rt),zt=c(pt,!0),Gt=t(pt,2);Ka(Gt,{get entry(){return e(st)},get now(){return et.now}}),r(rt),d(()=>i(zt,e(st).title)),a(je,rt)}),r(ae),a(Y,ae)};u(xa,Y=>{(e(me)||e(ge))&&Y(j)})}r(Ie),d(()=>q(Ie,"id",`stage-${e(h).key??""}`)),a(ee,Ie)};u(Ut,ee=>{e(te)&&ee(qt)})}var oa=t(Ut,2);$e(oa,17,()=>e(tt).afterStep[e(h).key]??[],ee=>ee.key,(ee,Ie)=>{var it=Wo(),Ht=o(it);Ua(Ht,()=>e(Ie)),r(it),a(ee,it)}),r(Ue),r(De),d((ee,Ie,it)=>{Oe(De,1,`relative flex gap-4 ${e(te)?"pb-8":"pb-5"}`),q(De,"data-stage",e(h).key),q(De,"data-open",e(te)),Oe(Q,1,`relative z-10 mt-0.5 grid size-6 shrink-0 place-items-center rounded-full text-xs font-medium ${e(me)?"bg-foreground text-background":e(ge)?e(Fe)==="trouble"||e(h).failed?"bg-danger text-white":e(Fe)==="you"?"bg-sea text-white dark:text-slate-950":e(ve)?"bg-success text-white dark:text-slate-950":"bg-foreground text-background ring-4 ring-foreground/15":e(h).state==="skipped"?"border border-dashed bg-background text-muted-foreground":"border bg-background text-muted-foreground"}`),Ve.disabled=ee,q(Ve,"aria-expanded",Ie),q(Ve,"aria-controls",it),Oe(ht,1,`shrink-0 font-display text-[1.12rem] font-medium group-enabled:group-hover:underline ${e(h).state==="upcoming"||e(h).state==="skipped"?"text-muted-foreground italic":""}`),i(Ot,e(h).label)},[()=>!Yt(e(h)),()=>Yt(e(h))?e(te):void 0,()=>Yt(e(h))?`stage-${e(h).key}`:void 0]),He("click",Ve,()=>Jt(e(h))),a(M,De)}),r(w),r(V),d(()=>i(D,`Placed from: ${n().passage.basis??""}.`)),a(m,V)},xe=(m,n=Ye)=>{var I=qe(),L=O(I);{var V=k=>{var P=Ho(),D=t(o(P),2);{var S=R=>{{let w=y(()=>n().status!=="landed");Qa(R,{get taskId(){return n().id},get feedback(){return e(w)},onfullscreen:()=>nt("preview",!0)})}};u(D,R=>{e(Be)==="preview"&&!e(Ee)&&R(S)})}r(P),a(k,P)};u(L,k=>{n().preview&&k(V)})}a(m,I)},fe=m=>{var n=qe(),I=O(n);{var L=k=>{var P=Go(),D=O(P);$e(D,23,()=>e(H),w=>w.url,(w,M,h)=>{var ne=Ha(),me=o(ne),ge=t(me,2),ve=c(ge);r(ne),d(te=>{q(ne,"aria-label",`Enlarge ${e(M).name??""}`),q(me,"src",e(M).url),q(me,"alt",e(M).name),i(ve,`${e(M).name??""}${te??""}`)},[()=>e(M).modifiedAt?` · ${wt(e(M).modifiedAt,et.now)}`:""]),He("click",ne,()=>ye(z,e(h),!0)),a(w,ne)}),r(D);var S=t(D,2);{var R=w=>{Mt(w,()=>e(p).screenshots)};u(S,w=>{e(p)&&w(R)})}a(k,P)},V=k=>{var P=Vo(),D=o(P),S=o(D);tr(S,{class:"mx-auto size-6","aria-hidden":"true"});var R=t(S,4),w=c(R,!0);r(D),r(P),d(()=>i(w,e(p)&&!e(p).screenshots.available?e(p).screenshots.reason:"The worker has not saved any screenshots for this task.")),a(k,P)};u(I,k=>{e(H).length?k(L):k(V,-1)})}a(m,n)},X=(m,n=Ye,I=Ye)=>{var L=pi(),V=o(L),k=t(o(V),2),P=o(k);{var D=h=>{var ne=vi(),me=O(ne);$e(me,21,()=>I().timeline.value,Nt,(ve,te)=>{const Te=y(()=>e(te).kind==="status"?la(e(te).state,e(te).text):null);var De=di(),Se=o(De),ie=c(Se,!0),Q=t(Se,2),_e=o(Q);{var E=we=>{var Re=ii(),Me=O(Re),Ue=c(Me,!0),Ve=t(Me,2);{let ht=y(()=>e(te).state?`${e(te).state}: ${e(te).text.trim()}`:e(te).text);Dt(Ve,{get raw(){return e(ht)},get plain(){return e(Te)}})}d(()=>i(Ue,e(Te))),a(we,Re)},be=we=>{var Re=li(),Me=c(Re,!0);d(Ue=>i(Me,Ue),[()=>Je(e(te))]),a(we,Re)};u(_e,we=>{e(Te)?we(E):we(be,-1)})}r(Q),r(De),d(we=>{q(Se,"datetime",e(te).at),q(Se,"title",e(te).at),i(ie,we)},[()=>Bt(e(te).at)]),a(ve,De)}),r(me);var ge=t(me,2);Mt(ge,()=>I().timeline),a(h,ne)},S=h=>{Kt(h,()=>I().timeline)};u(P,h=>{I().timeline.available?h(D):h(S,-1)})}r(k),r(V);var R=t(V,2);{let h=y(()=>e(Be)==="log");fs(R,{get task(){return n()},get live(){return e(h)}})}var w=t(R,2);{var M=h=>{var ne=ci(),me=t(o(ne),2);$e(me,20,()=>I().gaps,ge=>ge,(ge,ve)=>{var te=ui(),Te=c(te,!0);d(()=>i(Te,ve)),a(ge,te)}),r(me),r(ne),a(h,ne)};u(w,h=>{I().gaps.length&&h(M)})}r(L),a(m,L)};let N=We(null);const B=12;let _=We(!1),z=We(null),U=We(null),de=0;const re=y(()=>va.params.id),C=y(()=>e(N)?.task.id===e(re)?e(N):l.data.detail),f=y(()=>ha()?.tasks.find(m=>m.id===e(re))??e(C)?.task??null),p=y(()=>e(C)?.evidence??null),J=y(()=>ha()?.projects.find(m=>m.id===e(f)?.projectId)),H=y(()=>e(p)?.screenshots.available?e(p).screenshots.value:[]),se=m=>e(H).findIndex(n=>n.url===m);aa(()=>{et.revision;const m=e(re);Date.now()-de<1e4||(de=Date.now(),fetch(`/api/tasks/${encodeURIComponent(m)}`).then(n=>n.ok?n.json():null).then(n=>{n&&n.task.id===e(re)&&ye(N,n,!0)}).catch(()=>{}))});const ce=y(()=>Aa.entries(La.task(e(re)),l.data.slots,l.data.slotsAt)),ze=m=>e(ce).filter(n=>n.slot==="step.evidence"&&n.step===m);aa(()=>{et.revision,Aa.refresh(La.task(e(re)),l.data.slotsAt)});const Fe=y(()=>e(f)?Or(e(f)):"normal"),Ge=y(()=>e(f)?`/?project=${encodeURIComponent(e(f).projectId)}`:"/"),G={queue:$,progress:Rn,files:v,validation:A,pr:Z,report:he,screenshots:oe,preview:x,decision:ue,landed:T},pe=m=>G[m]??(m.startsWith("check:")?b:void 0),Ce=["success","inactive","included","published","ok","yes","present"],Ae=["failure","error","mismatch"],Xe=m=>m.state==="off"||m.state==="gave-up"?"skipped":m.state!=="observed"?"unknown":Ce.includes(m.outcome??"")?"pass":Ae.includes(m.outcome??"")?"fail":m.outcome==="in_progress"?"running":"pending",tt=y(()=>Kr(e(ce),e(f)?e(f).passage.steps.map(m=>m.key):[])),lt=y(()=>[...e(tt).byOrder].sort((m,n)=>m.order-n.order)),Et=(m,n)=>!!(m.eta&&!m.eta.openEnded)||!!(n.time&&n.time.total>0)||n.decided.length>0,mt=y(()=>e(f)&&e(C)?_s({preview:!!e(f).preview,shots:e(H).length,plugins:e(lt).map(m=>({key:m.key,title:m.title})),build:{talk:e(C).build.conversation.available?e(C).build.conversation.value.filter(m=>m.outcome.state==="open").length:0,docs:e(C).build.docs.available?e(C).build.docs.value.length:0}}):[]);let Ft=We(null);const St=y(()=>e(Ft)?.id===e(re)?e(Ft):{tab:va.url.searchParams.get("tab"),full:!1}),Be=y(()=>xs(e(St).tab,e(mt))),Ee=y(()=>!!e(f)?.preview&&(e(Ft)?.id===e(re)?e(Ft).full:va.url.searchParams.get("full")==="1"));function nt(m,n=!1){ye(Ft,{id:e(re),tab:m,full:n},!0);const I=new URL(va.url);m===rr?I.searchParams.delete("tab"):I.searchParams.set("tab",m),n?I.searchParams.set("full","1"):I.searchParams.delete("full"),fr(I,{})}let yt=We(void 0);async function At(m){if(nt(m),matchMedia("(min-width: 64rem)").matches)return;await cr();const n=matchMedia("(prefers-reduced-motion: reduce)").matches;e(yt)?.scrollIntoView({block:"start",behavior:n?"auto":"smooth"})}let dt=We(void 0);aa(()=>{const m=document.getElementById(`tab-${e(Be)}`);if(!e(dt)||!m)return;const n=e(dt).getBoundingClientRect(),I=m.getBoundingClientRect();I.left<n.left?e(dt).scrollLeft-=n.left-I.left:I.right>n.right&&(e(dt).scrollLeft+=I.right-n.right)});function vt(m,n){const I=e(mt).length,L=m.key==="ArrowRight"?(n+1)%I:m.key==="ArrowLeft"?(n-1+I)%I:m.key==="Home"?0:m.key==="End"?I-1:-1;L<0||(m.preventDefault(),nt(e(mt)[L].id),document.getElementById(`tab-${e(mt)[L].id}`)?.focus())}let Ke=We(!0),ut=We(void 0);function Lt(){const m=matchMedia("(prefers-reduced-motion: reduce)").matches;e(ut)?.scrollIntoView({block:"start",behavior:m?"auto":"smooth"})}let ft=ca({});const gt=m=>ft[`${e(re)} ${m.key}`]??gs(m),Jt=m=>ft[`${e(re)} ${m.key}`]=!gt(m);function Qe(m){for(const n of e(f)?.passage.steps??[])Yt(n)&&(ft[`${e(re)} ${n.key}`]=m)}const Je=m=>{const n=/\/pull\/(\d+)/.exec(m.text)?.[1];return m.kind==="pr-ready"?`Pull request${n?` #${n}`:""} ready`:m.kind==="merged"&&n?`Merged pull request #${n}`:m.text},ot=(m,n)=>n?"draft":m==="merged"?"merged":m==="closed"?"closed":m==="open"?"open":m??"state unknown";var at=ki();mr("13zy71l",m=>{vr(()=>{ur.title=`${e(f)?.title??e(re)??""} · Wheelhouse`})});var Pt=o(at);{var _t=m=>{var n=fi(),I=O(n),L=o(I);Ma(L,{class:"size-4","aria-hidden":"true"}),Ne(),r(I);var V=t(I,2),k=c(V,!0);d(()=>{q(I,"href",e(Ge)),i(k,l.data.problem??"Loading…")}),a(m,n)},kt=m=>{var n=yi(),I=O(n),L=o(I),V=o(L),k=o(V);Ma(k,{class:"size-4","aria-hidden":"true"}),Ne(),r(V);var P=t(V,2);W(P,()=>e(f),()=>e(p),()=>e(C));var D=t(P,2);{var S=ie=>{var Q=xi(),_e=o(Q),E=o(_e),be=t(o(E),2);{let Me=y(()=>e(Ke)?"rotate-90":"");ua(be,{get class(){return`ml-auto size-4 shrink-0 text-muted-foreground transition-transform ${e(Me)??""}`},"aria-hidden":"true"})}r(E),r(_e);var we=t(_e,2);{var Re=Me=>{var Ue=_i(),Ve=o(Ue);Pr(Ve,{get task(){return e(f)},lines:12,class:"rounded-xl"}),r(Ue),a(Me,Ue)};u(we,Me=>{e(Ke)&&Me(Re)})}r(Q),d(()=>q(E,"aria-expanded",e(Ke))),He("click",E,()=>ye(Ke,!e(Ke))),a(ie,Q)},R=y(()=>_r(e(f)));u(D,ie=>{e(R)&&ie(S)})}var w=t(D,2);{var M=ie=>{var Q=gi(),_e=o(Q);En(_e,()=>e(f),()=>e(C)),r(Q),ra(Q,E=>ye(ut,E),()=>e(ut)),a(ie,Q)},h=y(()=>Et(e(f),e(C)));u(w,ie=>{e(h)&&ie(M)})}r(L);var ne=t(L,2),me=o(ne),ge=o(me);$e(ge,23,()=>e(mt),ie=>ie.id,(ie,Q,_e)=>{var E=bi(),be=o(E,!0),we=t(be);{var Re=Me=>{var Ue=hi(),Ve=c(Ue,!0);d(()=>i(Ve,e(Q).count)),a(Me,Ue)};u(we,Me=>{e(Q).count&&Me(Re)})}r(E),d(()=>{q(E,"id",`tab-${e(Q).id??""}`),q(E,"aria-selected",e(Be)===e(Q).id),q(E,"aria-controls",`panel-${e(Q).id??""}`),q(E,"tabindex",e(Be)===e(Q).id?0:-1),Oe(E,1,`-mb-px inline-flex shrink-0 items-center gap-1.5 border-b-2 px-3 py-2.5 text-base font-semibold tracking-[0.1em] whitespace-nowrap transition-colors [font-variant-caps:all-small-caps] ${e(Be)===e(Q).id?"border-brass text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`),i(be,e(Q).label)}),He("click",E,()=>nt(e(Q).id)),He("keydown",E,Me=>vt(Me,e(_e))),a(ie,E)}),r(ge),ra(ge,ie=>ye(dt,ie),()=>e(dt)),r(me);var ve=t(me,2);$e(ve,17,()=>e(mt),ie=>ie.id,(ie,Q)=>{var _e=wi(),E=o(_e);{var be=ke=>{K(ke,()=>e(f))},we=ke=>{xe(ke,()=>e(f))},Re=ke=>{fe(ke)},Me=ke=>{X(ke,()=>e(f),()=>e(C))},Ue=ke=>{zn(ke,{get talk(){return e(C).build.conversation},get now(){return et.now}})},Ve=ke=>{fn(ke,{get checks(){return e(C).build.checks},get taskId(){return e(f).id}})},ht=ke=>{Tn(ke,{get docs(){return e(C).build.docs},get taskId(){return e(f).id}})},Ot=ke=>{const $t=y(()=>e(lt).find(ct=>`plugin:${ct.key}`===e(Q).id));var Ze=qe(),xt=O(Ze);{var Tt=ct=>{Ua(ct,()=>e($t))};u(xt,ct=>{e($t)&&ct(Tt)})}a(ke,Ze)};u(E,ke=>{e(Q).id==="stages"?ke(be):e(Q).id==="preview"?ke(we,1):e(Q).id==="screenshots"?ke(Re,2):e(Q).id==="log"?ke(Me,3):e(Q).id==="talk"?ke(Ue,4):e(Q).id==="checks"?ke(Ve,5):e(Q).id==="docs"?ke(ht,6):ke(Ot,-1)})}r(_e),d(()=>{q(_e,"id",`panel-${e(Q).id??""}`),q(_e,"aria-labelledby",`tab-${e(Q).id??""}`),q(_e,"hidden",e(Be)!==e(Q).id)}),a(ie,_e)}),r(ne),ra(ne,ie=>ye(yt,ie),()=>e(yt)),r(I);var te=t(I,2);{var Te=ie=>{{let Q=y(()=>e(f).status!=="landed");As(ie,{get taskId(){return e(f).id},get title(){return e(f).title},get url(){return e(f).preview.url},get feedback(){return e(Q)},onclose:()=>nt("preview")})}};u(te,ie=>{e(Ee)&&e(f).preview&&ie(Te)})}var De=t(te,2);Xa(De,{get shots(){return e(H)},get index(){return e(z)},set index(ie){ye(z,ie,!0)}});var Se=t(De,2);vs(Se,{get taskId(){return e(f).id},get file(){return e(U)},set file(ie){ye(U,ie,!0)}}),d(()=>q(V,"href",e(Ge))),a(m,n)};u(Pt,m=>{!e(f)||!e(p)||!e(C)?m(_t):m(kt,-1)})}r(at),a(F,at),It()}Xt(["click","keydown"]);export{nl as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{p as be,e as U,y as ye,N as ke,t as w,a as v,b as we,O as Ce,m as n,c as u,h as e,i as G,$ as Ne,s as i,r as a,d as h,q as T,o as C,x as Ee,f as Oe}from"../chunks/L-6wuY5f.js";import{i as g}from"../chunks/COiIt96y.js";import{h as Se,s as I,a as B,c as Z,e as $}from"../chunks/DGy76IbW.js";import{h as ze,m as Ae}from"../chunks/C6BQPSOs.js";import{b as De}from"../chunks/Da92_52d.js";import{D as Ie}from"../chunks/cAfuCUf-.js";import{A as Le}from"../chunks/OeqXO44y.js";import{E as Fe}from"../chunks/p7x6PRF0.js";import{S as qe}from"../chunks/CkLriSVx.js";import{F as Re}from"../chunks/DC8T2WRZ.js";const ee=3;function Te(D){return D.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"section"}function Be(D,c=[]){const L=new Set(c);return D.map(({text:o,level:F})=>{const b=`doc-${Te(o)}`;let x=b;for(let N=2;L.has(x);N++)x=`${b}-${N}`;return L.add(x),{id:x,text:o.trim(),level:F}})}var He=u('<a target="_blank" rel="noreferrer" class="ml-auto inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-sea hover:bg-accent">Open on GitHub<!></a>'),Ke=u('<li><a class="text-foreground/80 hover:text-foreground hover:underline"> </a></li>'),Me=u('<nav class="mt-6 rounded-md border border-hair bg-panel px-4 py-3 xl:hidden" aria-label="Contents"><p class="text-xs font-medium tracking-wide text-muted-foreground uppercase">Contents</p> <ol class="mt-2 space-y-1 text-sm"></ol></nav>'),Ue=u('<p class="mt-8 text-sm text-muted-foreground">This document is long, so only its start is shown here.</p>'),Ge=u('<p class="mt-12 border-t border-hair pt-4 text-xs text-muted-foreground"> </p>'),We=u("<li><a> </a></li>"),je=u('<nav class="hidden xl:block" aria-label="Contents"><div class="sticky top-20"><p class="section-label text-[1.05rem]">Contents</p> <ol class="mt-3 space-y-1.5 border-l border-hair text-sm"></ol></div></nav>'),Je=u('<div><article class="mx-auto w-full max-w-[70ch] min-w-0 xl:col-start-2" aria-labelledby="doc-title"><header class="border-b border-hair pb-6"><p class="flex items-center gap-2 font-display text-[1.05rem] tracking-[0.1em] text-muted-foreground [font-variant-caps:all-small-caps]"><!> </p> <h1 id="doc-title" class="mt-2 text-[2.4rem] leading-[1.15] text-balance"> </h1> <p class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground"><span class="font-mono text-xs" data-doc-source=""> </span> <span aria-hidden="true">·</span> <span> </span></p></header> <!> <div class="doc-md mt-8 svelte-1mfmwci"><!></div> <!> <!></article> <!></div>'),Pe=u('<div class="max-w-[70ch] px-5 py-10 sm:px-8"><p class="font-medium">This document cannot be shown</p> <p class="mt-1 text-sm text-muted-foreground"> </p></div>'),Qe=u('<main class="px-4 pt-6 pb-20 sm:px-6 lg:px-10"><div class="surface overflow-hidden"><div class="flex flex-wrap items-center gap-x-4 gap-y-2 border-b border-hair bg-panel px-5 py-3 text-sm sm:px-8"><a class="inline-flex items-center gap-1.5 text-muted-foreground hover:text-foreground"><!> </a> <!></div> <!></div></main>');function nt(D,c){be(c,!0);const L=T(()=>`/tasks/${encodeURIComponent(c.data.id)}?tab=docs`),o=T(()=>c.data.doc?.available?c.data.doc.value:null),F=T(()=>e(o)?e(o).markdown.replace(/^(?:---\n[\s\S]*?\n---\n)?\s*#\s+(.+)\n/,(r,s)=>s.trim()===e(o).title?"":r):"");let b=U(null),x=U(ye([])),N=U(null);ke(()=>{if(e(F),!e(b))return;const r=[...e(b).querySelectorAll("h2, h3")],s=[...document.querySelectorAll("[id]")].filter(d=>!r.includes(d)).map(d=>d.id),m=Be(r.map(d=>({text:d.textContent??"",level:d.tagName==="H2"?2:3})),s);if(r.forEach((d,y)=>d.id=m[y].id),G(x,m,!0),m.length<ee)return;const _={},E=new IntersectionObserver(d=>{for(const O of d)_[O.target.id]=O.boundingClientRect.top<120;const y=m.filter(O=>_[O.id]);G(N,y.length?y[y.length-1].id:m[0].id,!0)},{rootMargin:"-120px 0px 0px 0px",threshold:[0,1]});return r.forEach(d=>E.observe(d)),()=>E.disconnect()});const H=T(()=>e(x).length>=ee);var K=Qe();Se("1mfmwci",r=>{Ce(()=>{Ne.title=`${e(o)?.title??"Document"??""} · Wheelhouse`})});var W=n(K),M=n(W),q=n(M),j=n(q);Le(j,{class:"size-4","aria-hidden":"true"});var te=i(j,1,!0);a(q);var ae=i(q,2);{var re=r=>{var s=He(),m=i(n(s));Fe(m,{class:"size-3.5","aria-hidden":"true"}),a(s),w(()=>I(s,"href",e(o).github)),v(r,s)};g(ae,r=>{e(o)?.github&&r(re)})}a(M);var oe=i(M,2);{var se=r=>{var s=Je(),m=n(s),_=n(m),E=n(_),d=n(E);{var y=t=>{qe(t,{class:"size-4","aria-hidden":"true"})},O=t=>{Re(t,{class:"size-4","aria-hidden":"true"})};g(d,t=>{e(o).kind==="decision"?t(y):t(O,-1)})}var ie=i(d);a(E);var J=i(E,2),de=C(J,!0),P=i(J,2),Q=n(P),le=C(Q,!0),V=i(Q,4),ce=C(V,!0);a(P),a(_);var X=i(_,2);{var me=t=>{var l=Me(),f=i(n(l),2);$(f,21,()=>e(x),S=>S.id,(S,k)=>{var p=Ke(),z=n(p),A=C(z,!0);a(p),w(()=>{B(p,1,Z(e(k).level===3?"pl-4":"")),I(z,"href",`#${e(k).id??""}`),h(A,e(k).text)}),v(S,p)}),a(f),a(l),v(t,l)};g(X,t=>{e(H)&&t(me)})}var R=i(X,2),ve=n(R);{var pe=t=>{var l=Ee(),f=Oe(l);ze(f,()=>Ae(e(F))),v(t,l)};g(ve,t=>{t(pe)})}a(R),De(R,t=>G(b,t),()=>e(b));var Y=i(R,2);{var ue=t=>{var l=Ue();v(t,l)};g(Y,t=>{e(o).truncated&&t(ue)})}var xe=i(Y,2);{var fe=t=>{var l=Ge(),f=C(l);w(()=>h(f,`From ${c.data.doc.source??""}.`)),v(t,l)};g(xe,t=>{c.data.doc?.available&&t(fe)})}a(m);var he=i(m,2);{var _e=t=>{var l=je(),f=n(l),S=i(n(f),2);$(S,21,()=>e(x),k=>k.id,(k,p)=>{var z=We(),A=n(z),ge=C(A,!0);a(z),w(()=>{I(A,"href",`#${e(p).id??""}`),I(A,"aria-current",e(N)===e(p).id?"location":void 0),B(A,1,`-ml-px block border-l py-0.5 transition-colors ${e(p).level===3?"pl-7":"pl-4"} ${e(N)===e(p).id?"border-brass text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`),h(ge,e(p).text)}),v(k,z)}),a(S),a(f),a(l),v(t,l)};g(he,t=>{e(H)&&t(_e)})}a(s),w(()=>{B(s,1,`grid gap-x-10 px-5 py-10 sm:px-8 sm:py-14 ${e(H)?"xl:grid-cols-[minmax(0,1fr)_minmax(0,70ch)_minmax(0,1fr)]":""}`),h(ie,` ${Ie[e(o).kind]??""}`),h(de,e(o).title),h(le,e(o).name),B(V,1,Z(e(o).changed?"text-foreground/80":"")),h(ce,e(o).changed?"Changed in this task":"Read by the worker for this task")}),v(r,s)},ne=r=>{var s=Pe(),m=i(n(s),2),_=C(m,!0);a(s),w(()=>h(_,c.data.doc&&!c.data.doc.available?c.data.doc.reason:c.data.problem)),v(r,s)};g(oe,r=>{e(o)?r(se):r(ne,-1)})}a(W),a(K),w(()=>{I(q,"href",e(L)),h(te,c.data.task?.title??"Back to the task")}),v(D,K),we()}export{nt as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{o as Pt}from"../chunks/BGINfGsV.js";import{k as $e,aO as Xt,p as et,m as f,s as a,r as u,o as m,i as z,h as e,t as h,d as c,a7 as Yt,n as Ce,a as r,b as tt,e as fe,q as I,f as ce,w as qe,c as i,x as zt,N as gt,O as Zt,$ as $t}from"../chunks/L-6wuY5f.js";import{s as Ge,r as At,p as We,i as k}from"../chunks/COiIt96y.js";import{s as N,a as Le,e as Te,i as ea,h as ta,g as mt,j as xt}from"../chunks/DGy76IbW.js";import{b as aa}from"../chunks/Da92_52d.js";import{p as ra}from"../chunks/euRlC7pA.js";import{S as na}from"../chunks/ET-O1REu.js";import{l as Xe,c as sa}from"../chunks/BWJa0dU7.js";import{s as oa}from"../chunks/Clzs_eXS.js";import{S as _t}from"../chunks/BXN538J3.js";import{c as lt,a as bt}from"../chunks/DKQe4Tss.js";import{B as Ze}from"../chunks/BHsdHLbF.js";import{D as ia,C as kt}from"../chunks/CtlVBKf-.js";import{M as da}from"../chunks/BiuLIp4b.js";import{I as Wt}from"../chunks/CQlHU-Rx.js";import{S as la}from"../chunks/QAFSHLn2.js";import{h as ua,m as va}from"../chunks/C6BQPSOs.js";import{L as ut}from"../chunks/Brlpgp90.js";import{S as qt}from"../chunks/Db0WMrvR.js";import{C as Ct}from"../chunks/CIE0U5Ih.js";import{M as ca}from"../chunks/Tm9AblHs.js";import{A as fa}from"../chunks/OeqXO44y.js";import{G as ha}from"../chunks/CDphfOBv.js";import{E as pa}from"../chunks/p7x6PRF0.js";var ga=new Set(["$$slots","$$events","$$legacy"]);function ma(d,t){let o=At(t,ga);const b={name:"refresh-ccw",size:24,node:[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"}],["path",{d:"M16 16h5v5"}]]};Wt(d,Ge(()=>o,{get icon(){return b}}))}var xa=new Set(["$$slots","$$events","$$legacy"]);function _a(d,t){let o=At(t,xa);const b={name:"scan-search",size:24,node:[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"}],["circle",{cx:"12",cy:"12",r:"3"}],["path",{d:"m16 16-1.9-1.9"}]]};Wt(d,Ge(()=>o,{get icon(){return b}}))}const ba={lockfile:"Lockfile",generated:"Generated file",snapshot:"Test snapshot",formatting:"Formatting only",binary:"Binary file"},ka={behaviour:"Behaviour change",risk:"Risky area",api:"Public API",test:"Tests",docs:"Docs",other:"Change"},wt=d=>d>=1e3?`${(d/1e3).toFixed(d>=1e4?0:1)}k`:`${d}`;function Et(d,t){const o=d.costUsd===null?null:d.costUsd<.01?"under 1¢":`$${d.costUsd.toFixed(d.costUsd<1?3:2)}`;return[o?`${o} at list price`:null,`${wt(d.inputTokens+d.cachedTokens)} tokens in, ${wt(d.outputTokens)} out`,`${d.model}${t?`, ${t} effort`:""}`,`${Math.max(1,Math.round(d.durationMs/1e3))} s`].filter(Boolean).join(" · ")}function wa(d){let t=0,o=0;for(const b of d)b.usage&&(o++,t+=b.usage.costUsd??0);return{usd:t,runs:o}}function ya(d,t){const o=d.flatMap(R=>R.hunks),b=new Map(o.map(R=>[R.id,R])),w=[],S=new Set;for(const R of["key","notable"])for(const K of t?.items??[]){const ee=b.get(K.hunk);K.importance!==R||!ee||ee.boilerplate||S.has(ee.id)||(w.push(ee),S.add(ee.id))}const H=o.filter(R=>!S.has(R.id)&&!R.boilerplate),L=o.filter(R=>R.boilerplate);return{start:w,rest:H,boilerplate:L}}const Sa=d=>`${d.path}, line ${d.newStart}`;function Ra(d,t,o){const b=t?` at ${Sa(t)}`:"";return`Change requested from the PR review${d?` (${d.url})`:""}${b}:
|
|
2
|
-
${o.trim()}`}function Ye(d,t){if(!d.available||t.taskId!==d.taskId||t.head!==d.head)return d;if(t.type==="guide")return{...d,guide:t.guide,staleGuide:null};if(t.type==="text")return{...d,runs:d.runs.map(w=>w.id===t.runId&&w.status==="running"?{...w,text:t.text}:w)};const o=d.runs.findIndex(w=>w.id===t.run.id),b=o<0?[...d.runs,t.run]:d.runs.map((w,S)=>S===o?Ia(w,t.run):w);return{...d,runs:b}}function Ia(d,t){return d.status!=="running"&&t.status==="running"?d:t.status==="running"&&d.text.length>t.text.length?{...t,text:d.text}:t}const it=(d,t)=>d.filter(o=>o.kind!=="guide"&&o.hunk===t);var yt=i("<!> ",1),Ta=i("<!>Request review",1),Ma=i("<!> <!>",1),Pa=i('<p class="text-xs text-danger" role="alert"> </p>'),za=i('<p class="text-xs text-muted-foreground" role="status" data-change-sent=""> </p>'),St=i('<p class="text-xs text-muted-foreground"> </p>'),Aa=i('<form class="space-y-2" data-ask-box=""><div class="flex flex-wrap items-center gap-1 text-xs" role="radiogroup" aria-label="What to send"><button type="button" role="radio">Ask the review agent</button> <button type="button" role="radio">Ask Firstmate for a change</button></div> <label class="sr-only"> </label> <!> <div class="flex flex-wrap items-center gap-2"><!> <!></div></form>');function Ft(d,t){const o=Xt();et(t,!0);let b=We(t,"agentProblem",3,null),w=We(t,"busy",3,!1),S=fe("ask"),H=fe(""),L=fe(!1),R=fe(null),K=fe(null);async function ee(){if(!(!e(H).trim()||e(L))){if(z(L,!0),z(R,null),z(K,null),e(S)==="ask")z(R,await t.onask(e(H)),!0),e(R)||z(H,"");else{const _=await t.onchange(e(H));_.ok?(z(K,{at:new Date().toISOString(),pending:!!_.pending},!0),z(H,"")):z(R,_.error??"Not sent.",!0)}z(L,!1)}}async function n(){z(L,!0),z(R,await t.onreview(),!0),z(L,!1)}function xe(_){_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),ee())}var X=Aa(),ae=f(X),Y=f(ae),be=a(Y,2);u(ae);var ie=a(ae,2),Re=m(ie,!0),Ie=a(ie,2);{let _=I(()=>e(S)==="ask"?`Why was ${t.scope} done this way? What happens when…?`:`What should change in ${t.scope}? Firstmate passes it to the worker.`);ia(Ie,{get id(){return`ask-${o}`},onkeydown:xe,rows:2,maxlength:4e3,get placeholder(){return e(_)},class:"min-h-14 text-sm",get value(){return e(H)},set value(C){z(H,C,!0)}})}var x=a(Ie,2),y=f(x);{var q=_=>{var C=Ma(),F=ce(C);{let he=I(()=>!e(H).trim()||e(L)||w()||!!b());Ze(F,{type:"submit",size:"sm",get disabled(){return e(he)},children:(we,Me)=>{var ne=yt(),Pe=ce(ne);da(Pe,{});var ze=a(Pe,1,!0);h(()=>c(ze,e(L)?"Asking…":"Ask")),r(we,ne)},$$slots:{default:!0}})}var de=a(F,2);{let he=I(()=>e(L)||w()||!!b());Ze(de,{type:"button",size:"sm",variant:"outline",get disabled(){return e(he)},onclick:n,get title(){return`A focused review of ${t.scope??""}: bugs, risks, missing tests`},children:(we,Me)=>{var ne=Ta(),Pe=ce(ne);_a(Pe,{}),qe(),r(we,ne)},$$slots:{default:!0}})}r(_,C)},te=_=>{{let C=I(()=>!e(H).trim()||e(L));Ze(_,{type:"submit",size:"sm",get disabled(){return e(C)},children:(F,de)=>{var he=yt(),we=ce(he);la(we,{});var Me=a(we,1,!0);h(()=>c(Me,e(L)?"Sending…":"Send to Firstmate")),r(F,he)},$$slots:{default:!0}})}};k(y,_=>{e(S)==="ask"?_(q):_(te,-1)})}var Z=a(y,2);{var V=_=>{var C=Pa(),F=m(C,!0);h(()=>c(F,e(R))),r(_,C)},A=_=>{var C=za(),F=m(C,!0);h(de=>c(F,de),[()=>e(K).pending?`Saved at ${lt(e(K).at)}; Wheelhouse is confirming Firstmate has it.`:`Sent at ${lt(e(K).at)}. Firstmate passes it to the worker.`]),r(_,C)},re=_=>{var C=St(),F=m(C,!0);h(()=>c(F,b())),r(_,C)},ke=_=>{var C=St(),F=m(C,!0);h(()=>c(F,e(S)==="ask"?"The agent reads the diff and the task’s records; it never changes code.":"Goes to Firstmate as a note about this task.")),r(_,C)};k(Z,_=>{e(R)?_(V):e(K)?_(A,1):e(S)==="ask"&&b()?_(re,2):_(ke,-1)})}u(x),u(X),h(()=>{N(Y,"aria-checked",e(S)==="ask"),Le(Y,1,`rounded-full border px-2.5 py-0.5 ${e(S)==="ask"?"border-foreground/30 bg-accent font-medium text-foreground":"text-muted-foreground hover:text-foreground"}`),N(be,"aria-checked",e(S)==="change"),Le(be,1,`rounded-full border px-2.5 py-0.5 ${e(S)==="change"?"border-foreground/30 bg-accent font-medium text-foreground":"text-muted-foreground hover:text-foreground"}`),N(ie,"for",`ask-${o}`),c(Re,e(S)==="ask"?`Question about ${t.scope}`:`Change to ${t.scope}`)}),Yt("submit",X,_=>{_.preventDefault(),ee()}),Ce("click",Y,()=>z(S,"ask")),Ce("click",be,()=>z(S,"change")),r(d,X),tt()}$e(["click"]);var Wa=i('<div class="ml-auto w-fit max-w-[92%] rounded-lg border border-[var(--bubble-captain-border)] bg-[var(--bubble-captain)] px-3 py-2 text-sm whitespace-pre-line"> </div>'),qa=i('<p class="text-xs font-medium tracking-wide text-muted-foreground uppercase"> </p>'),Ca=i('<p class="whitespace-pre-line"> </p>'),Ea=i('<div class="review-answer text-sm leading-relaxed svelte-oggmuf"><!></div>'),Fa=i('<p class="flex items-center gap-2 text-sm text-muted-foreground"><!> </p>'),La=i('<p class="mt-1 text-sm text-danger" role="alert"> </p>'),Da=i('<p class="mt-1 text-xs text-muted-foreground">Stopped before it finished.</p>'),Oa=i('<button type="button" class="inline-flex items-center gap-1 rounded border px-1.5 py-0.5 hover:bg-accent hover:text-foreground"><!>Stop</button>'),Ba=i('<span class="flex items-center gap-1.5"><!> </span> <!>',1),Na=i('<span data-usage=""> </span>'),Ua=i('<article class="space-y-2"><!> <div class="rounded-lg border bg-card px-3 py-2.5"><!> <!> <div class="mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground"><!> <span class="ml-auto tabular-nums"> </span></div></div></article>');function Lt(d,t){et(t,!0);let o=fe(!1);Pt(()=>z(o,!0));var b=Ua(),w=f(b);{var S=x=>{var y=Wa(),q=m(y,!0);h(()=>c(q,t.run.question)),r(x,y)},H=x=>{var y=qa(),q=m(y,!0);h(()=>c(q,t.run.hunk?"Review of this hunk":"Review of the whole pull request")),r(x,y)};k(w,x=>{t.run.kind==="ask"?x(S):x(H,-1)})}var L=a(w,2),R=f(L);{var K=x=>{var y=Ea(),q=f(y);{var te=V=>{var A=zt(),re=ce(A);ua(re,()=>va(t.run.text)),r(V,A)},Z=V=>{var A=Ca(),re=m(A,!0);h(()=>c(re,t.run.text)),r(V,A)};k(q,V=>{e(o)?V(te):V(Z,-1)})}u(y),h(()=>N(y,"aria-live",t.run.status==="running"?"polite":"off")),r(x,y)},ee=x=>{var y=Fa(),q=f(y);ut(q,{class:"size-3.5 animate-spin","aria-hidden":"true"});var te=a(q);u(y),h(()=>c(te,` ${t.run.kind==="review"?"Reviewing…":"Reading the diff and the records…"}`)),r(x,y)};k(R,x=>{t.run.text?x(K):t.run.status==="running"&&x(ee,1)})}var n=a(R,2);{var xe=x=>{var y=La(),q=m(y,!0);h(()=>c(q,t.run.error)),r(x,y)},X=x=>{var y=Da();r(x,y)};k(n,x=>{t.run.error?x(xe):t.run.status==="stopped"&&x(X,1)})}var ae=a(n,2),Y=f(ae);{var be=x=>{var y=Ba(),q=ce(y),te=f(q);ut(te,{class:"size-3 animate-spin","aria-hidden":"true"});var Z=a(te);u(q);var V=a(q,2);{var A=re=>{var ke=Oa(),_=f(ke);qt(_,{class:"size-3","aria-hidden":"true"}),qe(),u(ke),Ce("click",ke,()=>t.onstop(t.run)),r(re,ke)};k(V,re=>{t.onstop&&re(A)})}h(()=>c(Z,`Answering, ${t.run.model??""}, ${t.run.effort??""}
|
|
3
|
-
effort`)),r(x,y)},ie=x=>{var y=Na(),q=m(y,!0);h(te=>c(q,te),[()=>Et(t.run.usage,t.run.effort)]),r(x,y)};k(Y,x=>{t.run.status==="running"?x(be):t.run.usage&&(t.run.usage.inputTokens||t.run.usage.outputTokens)&&x(ie,1)})}var Re=a(Y,2),Ie=m(Re,!0);u(ae),u(L),u(b),h(x=>{N(b,"data-run",t.run.id),N(b,"data-run-kind",t.run.kind),N(b,"data-run-status",t.run.status),c(Ie,x)},[()=>lt(t.run.startedAt)]),r(d,b),tt()}$e(["click"]);var Ga=i('<span class="grid size-6 shrink-0 place-items-center self-center rounded-full border border-[var(--brass)] text-xs font-medium tabular-nums"> </span>'),ja=i('<p class="font-display text-base leading-snug"> </p>'),Ha=i("<span> </span>"),Rt=i('<span class="rounded border px-1.5 py-0.5 text-muted-foreground"> </span>'),It=i("<p> </p>"),Ka=i('<p class="mt-0.5">No recorded reason.</p>'),Va=i('<li><span class="inline-block max-w-72 truncate rounded border bg-background px-1.5 py-0.5 text-xs text-muted-foreground"> </span></li>'),Qa=i('<ul class="mt-1.5 flex flex-wrap gap-1.5" aria-label="Records this rests on"></ul>'),Ja=i('<div><p class="text-xs font-medium text-muted-foreground"> </p> <!> <!></div>'),Xa=i('<div class="space-y-2 px-4 pt-3 text-sm leading-relaxed"><!> <!></div>'),Ya=i('<p class="px-4 pt-3 text-xs text-warning">The diff was too large for the guide to read this hunk; ask about it directly.</p>'),Za=i("<div> </div>"),$a=i('<div class="mx-4 mt-2 overflow-x-auto rounded-md border bg-background"><div class="min-w-max py-1.5 font-mono text-xs leading-relaxed" role="presentation"><div class="bg-sea/10 px-3 whitespace-pre text-sea"> </div> <!></div></div>'),er=i('<div class="space-y-3 border-t pt-3"><!> <!></div>'),tr=i(`<button type="button" class="inline-flex items-center gap-1.5 text-xs text-sea hover:underline" data-ask-hunk=""><!>Ask, review or request a change
|
|
4
|
-
here</button>`),ar=i('<section class="scroll-mt-20 overflow-hidden rounded-lg border bg-card"><header class="flex flex-wrap items-baseline gap-x-3 gap-y-1 border-b bg-[var(--panel)] px-4 py-2.5"><!> <div class="min-w-0 flex-1"><!> <p class="truncate font-mono text-xs text-muted-foreground"> <span class="text-muted-foreground/80"> </span></p></div> <div class="flex flex-wrap items-center gap-1.5 text-xs"><!> <!> <!> <span class="tabular-nums"><span class="text-success"> </span> <span class="text-danger"> </span></span></div></header> <!> <!> <div class="px-4 pt-3"><button type="button" class="flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground"><!> </button></div> <!> <div class="px-4 pt-3 pb-3"><!></div></section>');function dt(d,t){et(t,!0);let o=We(t,"item",3,null),b=We(t,"rank",3,null),w=We(t,"open",3,!0),S=We(t,"agentProblem",3,null),H=We(t,"busy",3,!1),L=fe(null);const R=I(()=>e(L)??w());let K=fe(!1);const ee=I(()=>e(K)||t.runs.length>0),n=l=>l.startsWith("+")?"bg-success/10 text-success":l.startsWith("-")?"bg-danger/10 text-danger":l.startsWith("\\")?"text-muted-foreground italic":"",xe={key:"Read first",notable:"Worth a look",routine:"Routine"};var X=ar(),ae=f(X),Y=f(ae);{var be=l=>{var p=Ga(),M=m(p,!0);h(()=>{N(p,"aria-label",`Number ${b()??""} in the reading order`),c(M,b())}),r(l,p)};k(Y,l=>{b()!==null&&l(be)})}var ie=a(Y,2),Re=f(ie);{var Ie=l=>{var p=ja(),M=m(p,!0);h(()=>c(M,o().title)),r(l,p)};k(Re,l=>{o()&&l(Ie)})}var x=a(Re,2),y=f(x,!0),q=a(y),te=m(q);u(x),u(ie);var Z=a(ie,2),V=f(Z);{var A=l=>{var p=Ha(),M=m(p,!0);h(()=>{Le(p,1,`rounded border px-1.5 py-0.5 ${o().importance==="key"?"border-sea/50 text-sea":"text-muted-foreground"}`),c(M,xe[o().importance])}),r(l,p)};k(V,l=>{o()&&o().importance!=="routine"&&l(A)})}var re=a(V,2);{var ke=l=>{var p=Rt(),M=m(p,!0);h(()=>c(M,ka[o().kind])),r(l,p)};k(re,l=>{o()&&o().kind!=="other"&&l(ke)})}var _=a(re,2);{var C=l=>{var p=Rt(),M=m(p,!0);h(()=>c(M,ba[t.hunk.boilerplate])),r(l,p)};k(_,l=>{t.hunk.boilerplate&&l(C)})}var F=a(_,2),de=f(F),he=m(de),we=a(de,2),Me=m(we);u(F),u(Z),u(ae);var ne=a(ae,2);{var Pe=l=>{var p=Xa(),M=f(p);{var le=$=>{var W=It(),O=m(W,!0);h(()=>c(O,o().what)),r($,W)};k(M,$=>{o().what&&$(le)})}var G=a(M,2);{var Se=$=>{var W=Ja(),O=f(W),Q=m(O,!0),ue=a(O,2);{var ve=pe=>{var ge=Ka();r(pe,ge)},nt=pe=>{var ge=It(),Ae=m(ge,!0);h(()=>{Le(ge,1,`mt-0.5 ${o().basis==="inferred"?"text-muted-foreground":""}`),c(Ae,o().why)}),r(pe,ge)};k(ue,pe=>{o().basis==="none"?pe(ve):pe(nt,-1)})}var Ke=a(ue,2);{var st=pe=>{var ge=Qa();Te(ge,20,()=>o().sources,Ae=>Ae,(Ae,Be)=>{const Fe=I(()=>t.records.get(Be));var Ne=Va(),Ve=f(Ne),Qe=m(Ve);u(Ne),h(()=>{N(Ve,"title",e(Fe)?`${e(Fe).name}: ${e(Fe).excerpt}`:Be),c(Qe,`${Be??""} · ${e(Fe)?.name??"record"??""}`)}),r(Ae,Ne)}),u(ge),r(pe,ge)};k(Ke,pe=>{o().sources.length&&pe(st)})}u(W),h(()=>{Le(W,1,`border-l-2 pl-3 ${o().basis==="recorded"?"border-sea/60":"border-[var(--hair)]"}`),N(W,"data-basis",o().basis),c(Q,o().basis==="recorded"?"Why, from the task’s records":o().basis==="inferred"?"Why: not recorded":"Why")}),r($,W)};k(G,$=>{o().importance!=="routine"&&$(Se)})}u(p),r(l,p)};k(ne,l=>{o()&&(o().what||o().importance!=="routine")&&l(Pe)})}var ze=a(ne,2);{var De=l=>{var p=Ya();r(l,p)};k(ze,l=>{t.hunk.unseen&&l(De)})}var Ee=a(ze,2),ye=f(Ee),Oe=f(ye);{let l=I(()=>e(R)?"rotate-90":"");Ct(Oe,{get class(){return`size-3.5 transition-transform ${e(l)??""}`},"aria-hidden":"true"})}var at=a(Oe);u(ye),u(Ee);var je=a(Ee,2);{var rt=l=>{var p=$a(),M=f(p),le=f(M),G=m(le,!0),Se=a(le,2);Te(Se,17,()=>t.hunk.lines,ea,($,W)=>{var O=Za(),Q=m(O,!0);h(ue=>{Le(O,1,`px-3 whitespace-pre ${ue??""}`),c(Q,e(W)||" ")},[()=>n(e(W))]),r($,O)}),u(M),u(p),h(()=>{N(p,"id",`diff-${t.hunk.id??""}`),c(G,t.hunk.header)}),r(l,p)};k(je,l=>{e(R)&&l(rt)})}var He=a(je,2),s=f(He);{var T=l=>{var p=er(),M=f(p);Te(M,17,()=>t.runs,G=>G.id,(G,Se)=>{Lt(G,{get run(){return e(Se)},get onstop(){return t.onstop}})});var le=a(M,2);Ft(le,{scope:"this hunk",get agentProblem(){return S()},get busy(){return H()},onask:G=>t.onask(t.hunk,G),onreview:()=>t.onreview(t.hunk),onchange:G=>t.onchange(t.hunk,G)}),u(p),r(l,p)},E=l=>{var p=tr(),M=f(p);ca(M,{class:"size-3.5","aria-hidden":"true"}),qe(),u(p),Ce("click",p,()=>z(K,!0)),r(l,p)};k(s,l=>{e(ee)?l(T):l(E,-1)})}u(He),u(X),h(()=>{N(X,"id",`hunk-${t.hunk.id??""}`),N(X,"data-hunk",t.hunk.id),N(X,"data-importance",o()?.importance??(t.hunk.boilerplate?"boilerplate":"unranked")),N(x,"title",t.hunk.path),c(y,t.hunk.path),c(te,` · line ${t.hunk.newStart??""}`),c(he,`+${t.hunk.additions??""}`),c(Me,`−${t.hunk.deletions??""}`),N(ye,"aria-expanded",e(R)),N(ye,"aria-controls",`diff-${t.hunk.id??""}`),c(at,` ${e(R)?"Hide the diff":`Show the diff (${t.hunk.lines.length} lines)`}`)}),Ce("click",ye,()=>z(L,!e(R))),r(d,X),tt()}$e(["click"]);var Tt=i("<option> </option>"),rr=i('<label class="text-xs text-muted-foreground">Model <select class="mt-1 block rounded-md border bg-background px-2 py-1 text-sm text-foreground"></select></label> <label class="text-xs text-muted-foreground">Effort <select class="mt-1 block rounded-md border bg-background px-2 py-1 text-sm text-foreground"></select></label>',1),nr=i('<p class="mt-6 rounded-lg border border-dashed p-6 text-sm text-muted-foreground" data-review="unavailable"> </p>'),sr=i('<a target="_blank" rel="noreferrer" class="inline-flex items-center gap-1 text-sea hover:underline"><!> <!></a>'),or=i('<span data-usage=""> </span>'),ir=i('<button type="button" class="mt-2 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground hover:underline"><!>Write it again</button>'),dr=i('<p class="mt-2 max-w-prose text-sm leading-relaxed"> </p> <p class="mt-2 text-xs text-muted-foreground"> <!></p> <!>',1),lr=i('<p class="mt-2 text-xs text-warning"> </p>'),ur=i(`<p class="mt-2 max-w-prose text-sm leading-relaxed text-muted-foreground">The review agent reads this pull request with the task’s records (the brief, the
|
|
5
|
-
commits, the automated review’s findings and Firstmate’s calls, the description) and
|
|
6
|
-
puts the important changes first, with why each was done this way. It says so when
|
|
7
|
-
nothing records a reason. It runs only when you ask, once for this version.</p> <!>`,1),vr=i('<div class="mt-3 flex flex-wrap items-center gap-3 text-sm text-muted-foreground" role="status"><!> <span> </span> <button type="button" class="inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-xs hover:bg-accent hover:text-foreground"><!>Stop</button></div>'),cr=i("<!>Prepare the guide",1),fr=i('<p class="mt-2 text-xs text-muted-foreground"> </p>'),hr=i('<p class="mt-2 text-xs text-muted-foreground">Its cost and token use show here once it has run.</p>'),pr=i('<div class="mt-4 flex flex-wrap items-end gap-3"><!> <!></div> <!>',1),Mt=i('<p class="mt-2 text-sm text-danger" role="alert"> </p>'),gr=i('<p class="text-sm text-warning">This pull request is large: only its first files are shown.</p>'),mr=i('<section aria-labelledby="start-h" class="space-y-3"><h2 id="start-h" class="text-lg">Read these first</h2> <!></section>'),xr=i('<p class="text-xs text-muted-foreground">Routine changes, in file order, folded. Open any to see its diff.</p>'),_r=i('<section aria-labelledby="rest-h" class="space-y-3"><h2 id="rest-h" class="text-lg"> </h2> <!> <!></section>'),br=i('<details class="group rounded-lg border bg-card" data-boilerplate=""><summary class="flex cursor-pointer list-none items-center gap-2 px-4 py-3 text-sm [&::-webkit-details-marker]:hidden"><!> <span class="font-medium">Boilerplate, folded away</span> <span class="text-muted-foreground"> </span></summary> <div class="space-y-3 border-t p-4"></div></details>'),kr=i(`<p class="mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground"><!> <span>Version <span class="font-mono text-xs"> </span> </span> <span> </span></p> <div class="mt-6 grid gap-6 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,26rem)]"><div class="min-w-0 space-y-6"><section class="rounded-lg border bg-card p-5" aria-labelledby="guide-h"><h2 id="guide-h" class="flex items-center gap-2 text-lg"><!>The review guide</h2> <!> <!> <!></section> <!> <!> <!> <!></div> <aside class="min-w-0"><section class="space-y-3 rounded-lg border bg-[var(--panel)] p-4 xl:sticky xl:top-20 xl:flex xl:max-h-[calc(100vh-6rem)] xl:flex-col" aria-labelledby="ask-h"><h2 id="ask-h" class="text-lg">Ask about this pull request</h2> <p class="text-xs text-muted-foreground">Questions and reviews here are about the whole change; each hunk has its own. Answers
|
|
8
|
-
come from the diff and the task’s records, live as they are written.</p> <div class="max-h-[60vh] space-y-3 overflow-y-auto xl:max-h-none xl:min-h-0 xl:flex-1" data-thread="pr"></div> <!> <div class="flex flex-wrap items-end gap-3 border-t pt-3"><!></div> <p class="text-xs text-muted-foreground" data-spent=""> </p></section></aside></div> <p class="mt-6 text-xs text-muted-foreground"> </p>`,1),wr=i('<main class="px-4 py-6 sm:px-6 lg:px-10"><div class="surface px-5 py-6 sm:px-8 sm:py-8"><a class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground"><!> </a> <h1 class="mt-4 text-2xl">Pull request review</h1> <!></div></main>');function Qr(d,t){et(t,!0);const o=s=>{var T=zt(),E=ce(T);{var l=p=>{var M=rr(),le=ce(M),G=a(f(le));Te(G,20,()=>e(n).config.models,W=>W,(W,O)=>{var Q=Tt(),ue=m(Q),ve={};h(()=>{c(ue,`${O??""}${O===e(n).config.model?" (default)":""}`),ve!==(ve=O)&&(Q.value=(Q.__value=ve)??"")}),r(W,Q)}),u(G),mt(G),u(le);var Se=a(le,2),$=a(f(Se));Te($,20,()=>e(n).config.efforts,W=>W,(W,O)=>{var Q=Tt(),ue=m(Q),ve={};h(()=>{c(ue,`${O??""}${O===e(n).config.effort?" (default)":""}`),ve!==(ve=O)&&(Q.value=(Q.__value=ve)??"")}),r(W,Q)}),u($),mt($),u(Se),xt(G,()=>e(xe).model,W=>z(K,W,!0)),xt($,()=>e(xe).effort,W=>z(ee,W,!0)),r(p,M)};k(E,p=>{e(n)&&p(l)})}r(s,T)};let b=fe(null);const w=I(()=>e(b)?.taskId===t.data.id?e(b):t.data.view),S=I(()=>t.data.id),H=I(()=>sa()?.tasks.find(s=>s.id===e(S))??null),L=I(()=>e(H)?.title??t.data.title??e(S)),R=()=>ra.data.sessionToken;let K=fe(null),ee=fe(null);const n=I(()=>e(w).available?e(w):null),xe=I(()=>({model:e(K)??e(n)?.config.model??"sonnet",effort:e(ee)??e(n)?.config.effort??"low"}));async function X(){const s=e(S),T=await fetch(`/api/tasks/${encodeURIComponent(s)}/review`).catch(()=>null);if(!T?.ok)return null;const E=await T.json().catch(()=>null);return E?.taskId!==e(S)?null:(z(b,E,!0),E)}const ae=new na;let Y=null;Pt(()=>Xe.onReview(s=>{if(s.taskId===e(S)){if(e(w).available&&s.head!==e(w).head){if(Y?.head===s.head)return void Y.events.push(s);if(s.type==="text"||ae.has(s.head))return;ae.add(s.head);const T=Y={head:s.head,events:[]};return void X().then(E=>{Y===T&&(Y=null),E?.available&&E.head===T.head?z(b,T.events.reduce(Ye,E),!0):ae.delete(T.head)})}z(b,Ye(e(w),s),!0)}}));let be=Date.now();gt(()=>{Xe.revision,!(Date.now()-be<3e4)&&(be=Date.now(),X())});async function ie(s,T){try{const E=await fetch(`/api/tasks/${encodeURIComponent(e(S))}/review/${s}`,{method:"POST",headers:{"content-type":"application/json",[_t]:R()},body:JSON.stringify(T)}),l=await E.json().catch(()=>null);return E.ok?(e(w).available&&l?.run&&z(b,Ye(e(w),{taskId:e(S),head:e(w).head,type:"run",run:l.run}),!0),e(w).available&&l?.guide&&z(b,Ye(e(w),{taskId:e(S),head:e(w).head,type:"guide",guide:l.guide}),!0),null):l?.message??`Wheelhouse answered ${E.status}.`}catch{return"Could not reach the Wheelhouse server."}}const Re=(s,T)=>ie("ask",{question:T,hunk:s?.id??null,...e(xe)}),Ie=s=>ie("check",{hunk:s?.id??null,...e(xe)}),x=(s,T)=>oa(Ra(e(n)?.pr??null,s,T),R(),e(S)),y=s=>{fetch(`/api/tasks/${encodeURIComponent(e(S))}/review/runs/${encodeURIComponent(s.id)}/stop`,{method:"POST",headers:{[_t]:R()}}).catch(()=>{})};let q=fe(null);async function te(s=!1){s&&!confirm("Write the guide again? It runs the review agent once more for this version.")||z(q,await ie("guide",{force:s,...e(xe)}),!0)}const Z=I(()=>e(n)?[...e(n).runs].reverse().find(s=>s.kind==="guide")??null:null),V=I(()=>e(Z)?.status==="running"),A=I(()=>e(n)?ya(e(n).files,e(n).guide):null),re=I(()=>new Map((e(n)?.guide?.items??[]).map(s=>[s.hunk,s]))),ke=I(()=>new Map((e(n)?.guide?.records??[]).map(s=>[s.label,s]))),_=I(()=>e(n)?e(n).runs.filter(s=>s.status==="running").length:0),C=I(()=>e(_)>=2),F=I(()=>e(n)?.config.unavailable??null),de=I(()=>e(n)?wa(e(n).runs):{usd:0,runs:0}),he=I(()=>e(n)?e(n).files.reduce((s,T)=>s+T.hunks.length,0):0),we=I(()=>e(A)?new Set(e(A).boilerplate.map(s=>s.path)).size:0),Me=s=>s.slice(0,7);let ne=fe(void 0);const Pe=I(()=>e(n)?it(e(n).runs,null).length:0);gt(()=>{e(Pe),e(ne)&&(e(ne).scrollTop=e(ne).scrollHeight)});const ze=(s,T,E)=>({hunk:s,item:e(re).get(s.id)??null,rank:T,records:e(ke),runs:e(n)?it(e(n).runs,s.id):[],open:E,agentProblem:e(F),busy:e(C),onask:Re,onreview:Ie,onchange:x,onstop:y});var De=wr();ta("sgaraa",s=>{Zt(()=>{$t.title=`Review · ${e(L)??""} · Wheelhouse`})});var Ee=f(De),ye=f(Ee),Oe=f(ye);fa(Oe,{class:"size-4","aria-hidden":"true"});var at=a(Oe,1,!0);u(ye);var je=a(ye,4);{var rt=s=>{var T=nr(),E=m(T,!0);h(()=>c(E,e(w).available?"":e(w).reason)),r(s,T)},He=s=>{var T=kr(),E=ce(T),l=f(E);{var p=v=>{var g=sr(),P=f(g);ha(P,{class:"size-4","aria-hidden":"true"});var D=a(P),B=a(D);pa(B,{class:"size-3","aria-hidden":"true"}),u(g),h(()=>{N(g,"href",e(n).pr.url),c(D,`${e(n).pr.number?`#${e(n).pr.number}`:"Pull request"}${e(n).pr.title?` ${e(n).pr.title}`:""}`)}),r(v,g)};k(l,v=>{e(n).pr&&v(p)})}var M=a(l,2),le=a(f(M)),G=m(le,!0),Se=a(le);u(M);var $=a(M,2),W=m($);u(E);var O=a(E,2),Q=f(O),ue=f(Q),ve=f(ue),nt=f(ve);kt(nt,{class:"size-5 text-[var(--brass)]","aria-hidden":"true"}),qe(),u(ve);var Ke=a(ve,2);{var st=v=>{var g=dr(),P=ce(g),D=m(P,!0),B=a(P,2),J=f(B),se=a(J);{var U=oe=>{var _e=or(),Ue=m(_e);h((Qt,Jt)=>c(Ue,`Written ${Qt??""}: ${Jt??""}.`),[()=>bt(e(n).guide.at,Xe.now),()=>Et(e(n).guide.usage,e(n).guide.effort)]),r(oe,_e)};k(se,oe=>{e(n).guide.usage&&oe(U)})}u(B);var j=a(B,2);{var me=oe=>{var _e=ir(),Ue=f(_e);ma(Ue,{class:"size-3","aria-hidden":"true"}),qe(),u(_e),h(()=>_e.disabled=!!e(F)),Ce("click",_e,()=>te(!0)),r(oe,_e)};k(j,oe=>{e(V)||oe(me)})}h(oe=>{c(D,e(n).guide.summary),c(J,`${oe??""} of ${e(he)??""} hunks
|
|
9
|
-
to read first, drawing on ${e(n).guide.records.length??""} of the task’s records. `)},[()=>e(n).guide.items.filter(oe=>oe.importance!=="routine").length]),r(v,g)},pe=v=>{var g=ur(),P=a(ce(g),2);{var D=B=>{var J=lr(),se=m(J);h((U,j)=>c(se,`A guide was written for an earlier version (${U??""}, ${j??""}); the pull request has changed since.`),[()=>Me(e(n).staleGuide.head),()=>bt(e(n).staleGuide.at,Xe.now)]),r(B,J)};k(P,B=>{e(n).staleGuide&&B(D)})}r(v,g)};k(Ke,v=>{e(n).guide?v(st):v(pe,-1)})}var ge=a(Ke,2);{var Ae=v=>{var g=vr(),P=f(g);ut(P,{class:"size-4 animate-spin","aria-hidden":"true"});var D=a(P,2),B=m(D),J=a(D,2),se=f(J);qt(se,{class:"size-3","aria-hidden":"true"}),qe(),u(J),u(g),h(U=>c(B,`Reading ${e(he)??""} hunks and the records${U??""}…`),[()=>e(Z).text?`, ${e(Z).text.length.toLocaleString()} characters written`:""]),Ce("click",J,()=>y(e(Z))),r(v,g)},Be=v=>{var g=pr(),P=ce(g),D=f(P);o(D);var B=a(D,2);{let j=I(()=>!!e(F)||e(C));Ze(B,{size:"sm",onclick:()=>te(!1),get disabled(){return e(j)},"data-prepare-guide":!0,children:(me,oe)=>{var _e=cr(),Ue=ce(_e);kt(Ue,{}),qe(),r(me,_e)},$$slots:{default:!0}})}u(P);var J=a(P,2);{var se=j=>{var me=fr(),oe=m(me,!0);h(()=>c(oe,e(F))),r(j,me)},U=j=>{var me=hr();r(j,me)};k(J,j=>{e(F)?j(se):j(U,-1)})}r(v,g)};k(ge,v=>{e(V)&&e(Z)?v(Ae):e(n).guide||v(Be,1)})}var Fe=a(ge,2);{var Ne=v=>{var g=Mt(),P=m(g,!0);h(()=>c(P,e(q))),r(v,g)},Ve=v=>{var g=Mt(),P=m(g,!0);h(()=>c(P,e(Z).error)),r(v,g)};k(Fe,v=>{e(q)?v(Ne):e(Z)?.status==="failed"&&!e(n).guide&&v(Ve,1)})}u(ue);var Qe=a(ue,2);{var Dt=v=>{var g=gr();r(v,g)};k(Qe,v=>{e(n).truncated&&v(Dt)})}var vt=a(Qe,2);{var Ot=v=>{var g=mr(),P=a(f(g),2);Te(P,19,()=>e(A).start,D=>D.id,(D,B,J)=>{{let se=I(()=>ze(e(B),e(J)+1,!0));dt(D,Ge(()=>e(se)))}}),u(g),r(v,g)};k(vt,v=>{e(A)&&e(A).start.length&&v(Ot)})}var ct=a(vt,2);{var Bt=v=>{var g=_r(),P=f(g),D=m(P,!0),B=a(P,2);{var J=U=>{var j=xr();r(U,j)};k(B,U=>{e(n).guide&&U(J)})}var se=a(B,2);Te(se,17,()=>e(A).rest,U=>U.id,(U,j)=>{{let me=I(()=>ze(e(j),null,!e(n).guide));dt(U,Ge(()=>e(me)))}}),u(g),h(()=>c(D,e(A).start.length?"Everything else":"The changes")),r(v,g)};k(ct,v=>{e(A)&&e(A).rest.length&&v(Bt)})}var Nt=a(ct,2);{var Ut=v=>{var g=br(),P=f(g),D=f(P);Ct(D,{class:"size-4 text-muted-foreground transition-transform group-open:rotate-90","aria-hidden":"true"});var B=a(D,4),J=m(B);u(P);var se=a(P,2);Te(se,21,()=>e(A).boilerplate,U=>U.id,(U,j)=>{{let me=I(()=>ze(e(j),null,!1));dt(U,Ge(()=>e(me)))}}),u(se),u(g),h(()=>c(J,`${e(A).boilerplate.length??""} hunks in ${e(we)??""} files: lockfiles, generated files,
|
|
10
|
-
snapshots, formatting`)),r(v,g)};k(Nt,v=>{e(A)&&e(A).boilerplate.length&&v(Ut)})}u(Q);var ft=a(Q,2),ht=f(ft),Je=a(f(ht),4);Te(Je,21,()=>it(e(n).runs,null),v=>v.id,(v,g)=>{Lt(v,{get run(){return e(g)},onstop:y})}),u(Je),aa(Je,v=>z(ne,v),()=>e(ne));var pt=a(Je,2);Ft(pt,{scope:"this pull request",get agentProblem(){return e(F)},get busy(){return e(C)},onask:v=>Re(null,v),onreview:()=>Ie(null),onchange:v=>x(null,v)});var ot=a(pt,2),Gt=f(ot);o(Gt),u(ot);var jt=a(ot,2),Ht=m(jt,!0);u(ht),u(ft),u(O);var Kt=a(O,2),Vt=m(Kt);h((v,g)=>{c(G,v),c(Se,` against ${e(n).base??""}`),c(W,`${e(n).files.length??""} files, ${e(he)??""} hunks`),N(ue,"data-guide",e(n).guide?"ready":e(V)?"running":"none"),c(Ht,g),c(Vt,`From ${e(n).source??""}.`)},[()=>Me(e(n).head),()=>e(de).runs?`The review agent has spent ${e(de).usd<.01?"under 1¢":`$${e(de).usd.toFixed(3)}`} at list price on this version, over ${e(de).runs} run${e(de).runs===1?"":"s"}.`:"Nothing has run for this version yet."]),r(s,T)};k(je,s=>{e(n)?s(He,-1):s(rt)})}u(Ee),u(De),h(s=>{N(ye,"href",`/tasks/${s??""}`),c(at,e(L))},[()=>encodeURIComponent(e(S))]),r(d,De),tt()}$e(["click"]);export{Qr as component};
|
|
Binary file
|
|
Binary file
|