@chrisjowen/wheelhouse 0.1.0 → 0.1.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 +75 -54
- package/build/client/_app/immutable/chunks/{DPTtvukI.js → B1bNvkZf.js} +1 -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/{CHoQMvOZ.js → BORDV711.js} +1 -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/{BZm5e4fE.js → BWJa0dU7.js} +1 -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/{CewXGI4o.js → CIfcjhKg.js} +1 -1
- 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/{DmcreR7o.js → CKhg4Tm6.js} +1 -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/{Ewrw42Vq.js → CdOazBBu.js} +1 -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/{BAurN1n6.js → _7N5fmOy.js} +2 -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/{D8Hx-_mj.js → euRlC7pA.js} +1 -1
- package/build/client/_app/immutable/chunks/euRlC7pA.js.br +1 -0
- package/build/client/_app/immutable/chunks/euRlC7pA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{bvY4yrzM.js → hBAvbyDe.js} +1 -1
- 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/entry/{app.D22_AlD8.js → app.Dzyng0dn.js} +2 -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 +1 -0
- 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.DsfUbybd.js → 0.CaNaBMzB.js} +1 -1
- 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.9tnApS8T.js → 1.BCMmEnhe.js} +1 -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.CbyVViLq.js → 10.BO2VoEpn.js} +1 -1
- 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.xg5UTCOx.js → 11.BOR5Lt2T.js} +1 -1
- 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.C6hLGaov.js → 12.BGnaA6g1.js} +1 -1
- 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.DHbTeLkm.js → 13.BMHoWbLt.js} +1 -1
- 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/{15.DYSMqa5A.js → 15.BDQ6GGok.js} +1 -1
- 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.B0mX0t_j.js → 16.BYZHF6Y1.js} +1 -1
- 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.CSYV0jmk.js → 2.DmiGTHZF.js} +1 -1
- 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.X5qqsIUa.js → 3.qyqfVtUJ.js} +1 -1
- 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.Di4k8SR2.js → 4.DMxs5dS-.js} +1 -1
- 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.DMFYTxVa.js → 5.pFV6qgYd.js} +1 -1
- 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.6yDAURLV.js → 6.DKZQPZQe.js} +1 -1
- 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.xxvMU05c.js → 7.DmCbsQpY.js} +1 -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.GSaWotW8.js → 8.C5_-lQ12.js} +1 -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.CEiUwDDg.js → 9.DdS_3rh5.js} +1 -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/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 +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{access.js-CS2pJasF.js → access.js-XFAczbHS.js} +2 -2
- package/build/server/chunks/chunks/{detail.js-CSjOmiVi.js → detail.js-COMRu1TY.js} +2 -2
- package/build/server/chunks/chunks/{http2.js-Cr9xuMRL.js → http2.js-BO84xGO4.js} +2 -2
- package/build/server/chunks/chunks/{internal.js-Co-6PAQm.js → internal.js-C_uDXIpd.js} +3 -3
- package/build/server/chunks/chunks/{runtime.js-C0n924wq.js → runtime.js-fVZqJsqU.js} +2 -2
- package/build/server/chunks/chunks/{view.js-BtcLmKUY.js → view.js-tvgxW0fE.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/events/{_server.ts.js-DNHG661Q.js → _server.ts.js-gil57_h5.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/chat/{_server.ts.js-XBUQePMq.js → _server.ts.js-CWFdWS2r.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/commands/{_server.ts.js-D1tzpRWy.js → _server.ts.js-0h1duDYU.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/input/{_server.ts.js-DqhQUZUA.js → _server.ts.js-DUtAFI8B.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/interrupt/{_server.ts.js-LsZer0Bi.js → _server.ts.js-BVjvk1Kr.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/messages/{_server.ts.js-DQob0XkJ.js → _server.ts.js-CZKuOhTq.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/pick/{_server.ts.js-DgFjtYYL.js → _server.ts.js-DbYNDgMY.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/firstmate/start/{_server.ts.js-DOoA4rRW.js → _server.ts.js-Dez_V83F.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/fleet/{_server.ts.js-DZQsFY87.js → _server.ts.js-XScFl7NC.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/health/{_server.ts.js-DuSzTlq5.js → _server.ts.js-BOvoz2OJ.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/inbox/{_server.ts.js-C15XwPXH.js → _server.ts.js-DuUHrmV4.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/insights/{_server.ts.js--gavJO4f.js → _server.ts.js-P-j2jdcu.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/plugins/{_server.ts.js-CsTy_jT6.js → _server.ts.js-BuaL2gbp.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/{_server.ts.js-BWOcGtOU.js → _server.ts.js-Dwoaon5p.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/commands/{_server.ts.js-Kjwbc2wm.js → _server.ts.js-CpRObQnb.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/consent/{_server.ts.js-BTIb8CUb.js → _server.ts.js-Dml05WPU.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/draft/{_server.ts.js-Vh52yDJ9.js → _server.ts.js-rp9RtX4F.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/file/{_server.ts.js-LJDJLrpB.js → _server.ts.js-DLdJWcj-.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/projects/_id_/passage/test/{_server.ts.js-CdDBYH6K.js → _server.ts.js-Co_h1q_m.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/services/{_server.ts.js-DoElFmWK.js → _server.ts.js-SRzfx-2h.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/slots/{_server.ts.js-KiiPnPLF.js → _server.ts.js-lFuRL8QC.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/specs/_id_/{_server.ts.js-LMXTPr04.js → _server.ts.js-D-QFRPpb.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/build-request/{_server.ts.js-bqjJGIjt.js → _server.ts.js-CEZLC3cJ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/comments/_comment_/{_server.ts.js-DD1qQE9w.js → _server.ts.js-BHNzMZ7H.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/comments/{_server.ts.js-Bby1xkpH.js → _server.ts.js-DHMiene7.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/images/_name_/{_server.ts.js-CPX8OLQa.js → _server.ts.js-BxmqxnuG.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/images/{_server.ts.js-BjBV4SVl.js → _server.ts.js-CvRTk1JX.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/sent/{_server.ts.js-BAqm0IW0.js → _server.ts.js-VHXvHVC9.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/_id_/turn/{_server.ts.js-CNFIHA70.js → _server.ts.js-BjbvOskQ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/specs/{_server.ts.js-Bix9PKKr.js → _server.ts.js-CUNgX4FQ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/{_server.ts.js-CT7cLDQU.js → _server.ts.js-CTJxYuKH.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/artifacts/_...name_/{_server.ts.js-zCsm8UJT.js → _server.ts.js-BsDmTo5q.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/diff/{_server.ts.js-ccyEPbua.js → _server.ts.js-DmDd31bm.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/output/{_server.ts.js-eZPQtK6T.js → _server.ts.js-xNagO0jC.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/preview/{_server.ts.js-CW76hSLW.js → _server.ts.js-fNh7CbDX.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/{_server.ts.js-Cjuig1dr.js → _server.ts.js-DL1M1PqI.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/ask/{_server.ts.js-C04r1OFS.js → _server.ts.js-G8t4mipV.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/check/{_server.ts.js-Ca5VNJtJ.js → _server.ts.js-B0ymV1Pa.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/guide/{_server.ts.js-BKLIKSUM.js → _server.ts.js-Bi08FNu1.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/tasks/_id_/review/runs/_run_/stop/{_server.ts.js-C-D9zXgK.js → _server.ts.js-C_TftzeG.js} +2 -2
- package/build/server/chunks/entries/{hooks.server.js-Cgq1_RNe.js → hooks.server.js-IwCMs7or.js} +2 -2
- package/build/server/chunks/entries/pages/{_layout.server.ts.js-B7EWMhm1.js → _layout.server.ts.js-DQI-pH0T.js} +2 -2
- package/build/server/chunks/entries/pages/{_page.server.ts.js-CrjekE3C.js → _page.server.ts.js-PgqrVobO.js} +2 -2
- package/build/server/chunks/entries/pages/decisions/{_page.server.ts.js-Olm_zS-k.js → _page.server.ts.js-SL6FScVj.js} +2 -2
- package/build/server/chunks/entries/pages/harbour/{_page.server.ts.js-CVhhNUGy.js → _page.server.ts.js-DIvSuIkZ.js} +2 -2
- package/build/server/chunks/entries/pages/headroom/{_page.server.ts.js-Bv8GukD1.js → _page.server.ts.js-CGLa7Yrr.js} +2 -2
- package/build/server/chunks/entries/pages/plugins/_plugin_/_page_/{_page.server.ts.js-BJRmRxez.js → _page.server.ts.js-BoG4CT_l.js} +2 -2
- package/build/server/chunks/entries/pages/projects/_id_/_plugin_/_tab_/{_page.server.ts.js-DawJ61h-.js → _page.server.ts.js-BVTs44zi.js} +2 -2
- package/build/server/chunks/entries/pages/projects/_id_/passage/{_page.server.ts.js-Cm-4qkeb.js → _page.server.ts.js-CER4deq2.js} +2 -2
- package/build/server/chunks/entries/pages/projects/_id_/passage/edit/{_page.server.ts.js-DWNW8L5o.js → _page.server.ts.js-DiCdDip4.js} +2 -2
- package/build/server/chunks/entries/pages/projects/{_page.server.ts.js-BVDM5Frg.js → _page.server.ts.js-BH_VcZlY.js} +2 -2
- package/build/server/chunks/entries/pages/spec/{_page.server.ts.js-B3atEUDm.js → _page.server.ts.js-CTzZ3jGx.js} +2 -2
- package/build/server/chunks/entries/pages/tasks/_id_/{_page.server.ts.js-BDQIO7Ft.js → _page.server.ts.js-YgQ9nhRn.js} +3 -3
- package/build/server/chunks/entries/pages/tasks/_id_/doc/{_page.server.ts.js-Bw-3fcQ6.js → _page.server.ts.js-DdBsWj8_.js} +2 -2
- package/build/server/chunks/entries/pages/tasks/_id_/review/{_page.server.ts.js-CJek9uLa.js → _page.server.ts.js-DY0lh_8-.js} +2 -2
- package/build/server/chunks/entries/pages/time/{_page.server.ts.js-An6F-Ydg.js → _page.server.ts.js-kriWArLo.js} +2 -2
- package/build/server/chunks/{handler-BnRz5A8m.js → handler-BZ-YqSXJ.js} +3 -3
- package/build/server/chunks/{index.js-C8djlQGs.js → index.js-CmcXVwBU.js} +2 -2
- package/build/server/chunks/{manifest.js-YAglwkb0.js → manifest.js-DqwS7AJB.js} +59 -59
- package/build/server/chunks/nodes/{0.js-lkzICUiD.js → 0.js-DS2IDkUW.js} +4 -4
- package/build/server/chunks/nodes/{1.js-BJHI215Q.js → 1.js-_0OBbjVP.js} +2 -2
- package/build/server/chunks/nodes/{10.js-BWB-fD67.js → 10.js-CMSpRrcc.js} +5 -5
- package/build/server/chunks/nodes/{11.js-DWkXu85W.js → 11.js-D1M01GlQ.js} +5 -5
- package/build/server/chunks/nodes/{12.js-CKTx5eRx.js → 12.js-DaC2vk2U.js} +5 -5
- package/build/server/chunks/nodes/{13.js-C9YUj8Wf.js → 13.js-BSWYX8Ak.js} +5 -5
- package/build/server/chunks/nodes/{14.js-CvfRHrCy.js → 14.js-CY9oBxXM.js} +4 -4
- package/build/server/chunks/nodes/{15.js-D_eEoMQb.js → 15.js-Bg9hD2dR.js} +5 -5
- package/build/server/chunks/nodes/{16.js-BQhgpvij.js → 16.js-qlcIEvV6.js} +4 -4
- package/build/server/chunks/nodes/{2.js-C-3t-e-a.js → 2.js-CW_-me_g.js} +4 -4
- package/build/server/chunks/nodes/{3.js-DgwKYi6C.js → 3.js-CUCcQUgI.js} +4 -4
- package/build/server/chunks/nodes/{4.js-DRDQ1cZ6.js → 4.js-CSYxmBts.js} +4 -4
- package/build/server/chunks/nodes/{5.js-Bn5aoN6C.js → 5.js-CHwpTnZj.js} +4 -4
- package/build/server/chunks/nodes/{6.js-lazTWxVv.js → 6.js-XHZwJGEg.js} +2 -2
- package/build/server/chunks/nodes/{7.js-PUjlFfxr.js → 7.js-DK_vuZQs.js} +4 -4
- package/build/server/chunks/nodes/{8.js-DYPhaWV-.js → 8.js-Crd93Nlx.js} +4 -4
- package/build/server/chunks/nodes/{9.js-C2q_Jaiu.js → 9.js-CWqhWBb9.js} +4 -4
- package/dist/cli.js +1 -1
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/BAurN1n6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BAurN1n6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BZm5e4fE.js.br +0 -0
- package/build/client/_app/immutable/chunks/BZm5e4fE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHoQMvOZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHoQMvOZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CewXGI4o.js.br +0 -0
- package/build/client/_app/immutable/chunks/CewXGI4o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8Hx-_mj.js.br +0 -3
- package/build/client/_app/immutable/chunks/D8Hx-_mj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DPTtvukI.js.br +0 -0
- package/build/client/_app/immutable/chunks/DPTtvukI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DmcreR7o.js.br +0 -0
- package/build/client/_app/immutable/chunks/DmcreR7o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ewrw42Vq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ewrw42Vq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/bvY4yrzM.js.br +0 -0
- package/build/client/_app/immutable/chunks/bvY4yrzM.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.D22_AlD8.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D22_AlD8.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.xwa7znED.js +0 -1
- package/build/client/_app/immutable/entry/start.xwa7znED.js.br +0 -0
- package/build/client/_app/immutable/entry/start.xwa7znED.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DsfUbybd.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DsfUbybd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.9tnApS8T.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.9tnApS8T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.CbyVViLq.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.CbyVViLq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.xg5UTCOx.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.xg5UTCOx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.C6hLGaov.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.C6hLGaov.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.DHbTeLkm.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.DHbTeLkm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.DYSMqa5A.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.DYSMqa5A.js.gz +0 -0
- package/build/client/_app/immutable/nodes/16.B0mX0t_j.js.br +0 -0
- package/build/client/_app/immutable/nodes/16.B0mX0t_j.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CSYV0jmk.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CSYV0jmk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.X5qqsIUa.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.X5qqsIUa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Di4k8SR2.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Di4k8SR2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DMFYTxVa.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DMFYTxVa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.6yDAURLV.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.6yDAURLV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.xxvMU05c.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.xxvMU05c.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.GSaWotW8.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.GSaWotW8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CEiUwDDg.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CEiUwDDg.js.gz +0 -0
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
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/D8Hx-_mj.js";import{r as fr}from"../chunks/BAurN1n6.js";import{l as et,c as ha}from"../chunks/BZm5e4fE.js";import{s as Aa,a as La}from"../chunks/36FDwM1G.js";import{S as Ka}from"../chunks/CHoQMvOZ.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/bvY4yrzM.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/CewXGI4o.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.
|
|
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
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
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
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
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
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/
|
|
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
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
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
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
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{k as De,p as Le,a as c,b as Me,l as Ne,c as _,s as r,$ as Ce,m as n,o as g,t as f,h as e,d as l,n as Ee,i as Re,r as o,e as We,q as b,f as qe,v as Z,w as Be}from"../chunks/L-6wuY5f.js";import{i as ee}from"../chunks/COiIt96y.js";import{h as Ge,e as A,s as te,a as He}from"../chunks/DGy76IbW.js";import{d as Oe,a as S,t as $,s as ae,m as Ue,S as ze}from"../chunks/CR7y1ULG.js";import{I as Fe}from"../chunks/
|
|
1
|
+
import"../chunks/DsnmJJEf.js";import{k as De,p as Le,a as c,b as Me,l as Ne,c as _,s as r,$ as Ce,m as n,o as g,t as f,h as e,d as l,n as Ee,i as Re,r as o,e as We,q as b,f as qe,v as Z,w as Be}from"../chunks/L-6wuY5f.js";import{i as ee}from"../chunks/COiIt96y.js";import{h as Ge,e as A,s as te,a as He}from"../chunks/DGy76IbW.js";import{d as Oe,a as S,t as $,s as ae,m as Ue,S as ze}from"../chunks/CR7y1ULG.js";import{I as Fe}from"../chunks/CKhg4Tm6.js";import{T as W}from"../chunks/DLith9Yi.js";import{T as Je}from"../chunks/BwOfqJw9.js";var Ke=_('<button role="radio"> </button>'),Pe=_('<p class="mt-8 rounded-lg border border-dashed p-6 text-sm text-muted-foreground"> </p>'),Qe=_('<p class="mt-8 rounded-lg border border-dashed p-8 text-sm text-muted-foreground">No work started in this range.</p>'),Ve=_('<li><a class="grid gap-x-4 gap-y-1.5 px-4 py-3 hover:bg-accent/40 sm:grid-cols-[minmax(0,19rem)_minmax(0,1fr)_4.5rem] sm:items-center"><div class="min-w-0"><p class="truncate text-sm"> </p> <p class="text-xs text-muted-foreground"> </p></div> <!> <p class="text-sm tabular-nums sm:text-right"> </p></a></li>'),Xe=_('<section class="mt-10"><div class="flex flex-wrap items-baseline justify-between gap-2"><h2 class="text-base font-semibold"> </h2> <p class="text-sm text-muted-foreground"> <!></p></div> <div class="mt-3"><!></div> <ul class="mt-4 divide-y rounded-lg border bg-card"></ul></section>'),Ye=_(`<section class="mt-8 rounded-xl border bg-card p-5"><p class="text-base"><span class="font-semibold"> </span> <span class="text-muted-foreground"> </span></p> <div class="mt-4"><!></div> <div class="mt-3"><!></div></section> <!> <p class="mt-10 text-xs leading-relaxed text-muted-foreground">Bars share one scale, so a longer bar took longer. Times come from the crew’s status updates
|
|
2
2
|
and the automated review’s step logs.<!></p>`,1),Ze=_(`<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"><!> <div class="mt-6 flex flex-wrap items-end justify-between gap-4"><div><h1 class="text-2xl">Where time went</h1> <p class="mt-1 max-w-prose text-sm text-muted-foreground">How long each piece of work spent being built, in automated review and fixes, in CI, and
|
|
3
3
|
waiting on you.</p></div> <div class="flex rounded-lg border p-0.5 text-sm" role="radiogroup" aria-label="Range"></div></div> <!></div></main>`);function lt(se,w){Le(w,!0);const re=[{key:"today",label:"Today"},{key:"week",label:"Last 7 days"},{key:"month",label:"Last 30 days"}];let I=We("week");const j=Date.now(),oe=t=>t==="today"?new Date(new Date(j).toDateString()).getTime():j-(t==="week"?7:30)*864e5,h=b(()=>w.data.view.tasks.filter(t=>Date.parse(t.startedAt)>=oe(e(I)))),y=b(()=>ae(e(h))),D=b(()=>$(e(y))),q=b(()=>ze.map(t=>({...t,v:e(y)[t.key]})).sort((t,a)=>a.v-t.v)[0]),B=t=>e(D)?Math.round(t/e(D)*100):0,ne=b(()=>Math.max(1,...e(h).map(t=>t.total))),de=b(()=>{const t={};for(const a of e(h))(t[a.projectId]??=[]).push(a);return Object.entries(t).map(([a,s])=>{const u=s.filter(x=>x.kind==="ship"&&x.readyAfter!==null);return{name:a,list:s,s:ae(s),usual:u.length?Ue(u.map(x=>x.readyAfter)):null}}).sort((a,s)=>$(s.s)-$(a.s))});var L=Ze();Ge("dyupmq",t=>{Ne(()=>{Ce.title="Where time went · Wheelhouse"})});var G=n(L),H=n(G);Fe(H,{});var M=r(H,2),O=r(n(M),2);A(O,21,()=>re,t=>t.key,(t,a)=>{var s=Ke(),u=g(s,!0);f(()=>{te(s,"aria-checked",e(I)===e(a).key),He(s,1,`rounded-md px-3 py-1 ${e(I)===e(a).key?"bg-accent font-medium":"text-muted-foreground hover:text-foreground"}`),l(u,e(a).label)}),Ee("click",s,()=>Re(I,e(a).key,!0)),c(t,s)}),o(O),o(M);var le=r(M,2);{var ie=t=>{var a=Pe(),s=g(a,!0);f(()=>l(s,w.data.view.reason)),c(t,a)},ve=t=>{var a=Qe();c(t,a)},me=t=>{var a=Ye(),s=qe(a),u=n(s),x=n(u),ce=g(x,!0),U=r(x),ue=r(U),pe=g(ue);o(u);var N=r(u,2),ge=n(N);W(ge,{get seconds(){return e(y)},height:"h-4",label:"All work"}),o(N);var z=r(N,2),xe=n(z);Je(xe,{get seconds(){return e(y)}}),o(z),o(s);var F=r(s,2);A(F,17,()=>e(de),v=>v.name,(v,d)=>{var p=Xe(),k=n(p),K=n(k),_e=g(K,!0),P=r(K,2),Q=n(P),he=r(Q);{var be=m=>{var i=Z();f(T=>l(i,T),[()=>` · usually ${S(e(d).usual)} from start to ready for you`]),c(m,i)};ee(he,m=>{e(d).usual!==null&&m(be)})}o(P),o(k);var C=r(k,2),we=n(C);W(we,{get seconds(){return e(d).s},get label(){return e(d).name}}),o(C);var V=r(C,2);A(V,21,()=>e(d).list,m=>m.taskId,(m,i)=>{var T=Ve(),E=n(T),R=n(E),X=n(R),ye=g(X,!0),ke=r(X,2),Te=g(ke);o(R);var Y=r(R,2);W(Y,{get seconds(){return e(i).seconds},get scale(){return e(ne)},get label(){return e(i).title}});var Ie=r(Y,2),Ae=g(Ie,!0);o(E),o(T),f((Se,$e,je)=>{te(E,"href",`/tasks/${Se??""}`),l(ye,e(i).title),l(Te,`${$e??""}${e(i).ongoing?" · still going":""}`),l(Ae,je)},[()=>encodeURIComponent(e(i).taskId),()=>Oe(e(i).startedAt,j),()=>S(e(i).total)]),c(m,T)}),o(V),o(p),f(m=>{l(_e,e(d).name),l(Q,`${m??""} on ${e(d).list.length??""}
|
|
4
4
|
${e(d).list.length===1?"task":"tasks"}`)},[()=>S($(e(d).s))]),c(v,p)});var J=r(F,2),fe=r(n(J));A(fe,16,()=>w.data.view.notes,v=>v,(v,d)=>{Be();var p=Z();f(()=>l(p,` ${d}`)),c(v,p)}),o(J),f((v,d,p,k)=>{l(ce,v),l(U,` across ${e(h).length??""}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{o as ir}from"../chunks/BGINfGsV.js";import{k as It,p as St,y as rr,m as l,s as a,h as e,r as o,t as g,n as se,i as A,a as r,b as Tt,e as be,f as re,o as z,d as k,q as w,w as We,c as s,bA as lr,N as Mt,a7 as qt,M as Ir,x as Ft,v as Nt,aa as Kr,ag as mr,l as Gr,$ as Ur}from"../chunks/L-6wuY5f.js";import{s as vt,r as ft,p as zt,i as m}from"../chunks/COiIt96y.js";import{s as P,e as Me,a as Ne,i as pr,h as Vr}from"../chunks/DGy76IbW.js";import{p as Ot}from"../chunks/D8Hx-_mj.js";import{c as jr,a as Zr,l as jt}from"../chunks/BZm5e4fE.js";import{a as Jr,d as ar,f as st,b as dr,p as Xt}from"../chunks/Clzs_eXS.js";import{s as gr,a as xr}from"../chunks/36FDwM1G.js";import{h as Xr,d as Nr}from"../chunks/C2d4bDYU.js";import{h as Qr,m as ea}from"../chunks/C6BQPSOs.js";import{c as cr}from"../chunks/BiTivU7x.js";import{b as Bt}from"../chunks/Da92_52d.js";import{R as Or,l as hr,e as ta,M as ra,b as aa,S as na}from"../chunks/BEAYWcbT.js";import{a as $r}from"../chunks/DKQe4Tss.js";import{a as _r,W as br,G as kr,m as sa,A as oa,R as ia}from"../chunks/CewXGI4o.js";import{B as la,S as da}from"../chunks/CHoQMvOZ.js";import{C as Pt}from"../chunks/CIE0U5Ih.js";import{L as yt}from"../chunks/Brlpgp90.js";import{C as ca}from"../chunks/uD7-7yV9.js";import{I as mt}from"../chunks/CQlHU-Rx.js";import{I as ua,T as va}from"../chunks/CXfdgbLv.js";import{F as fa}from"../chunks/DC8T2WRZ.js";import{S as $t}from"../chunks/Bns_F-QV.js";import{M as ma,e as pa,d as ga,S as xa}from"../chunks/Db0WMrvR.js";import{c as xt}from"../chunks/CrCQ2NNA.js";import{A as ha}from"../chunks/B1XxiJam.js";import{G as Lr}from"../chunks/CDphfOBv.js";import{M as _a}from"../chunks/BiuLIp4b.js";import{C as Ht}from"../chunks/BR5v76-T.js";import{C as nr}from"../chunks/CQ7gIAH8.js";import{_ as wr}from"../chunks/PPVm8Dsz.js";import{B as ba}from"../chunks/BHsdHLbF.js";import{B as yr,G as zr}from"../chunks/B2wEHue2.js";import{H as qr,A as ka}from"../chunks/BVVO3JPx.js";import{X as sr}from"../chunks/BUo4hMcM.js";import{A as wa}from"../chunks/DIABVMrA.js";import{t as ya,s as za,a as Sa}from"../chunks/CR7y1ULG.js";import{C as Ta,E as Aa}from"../chunks/DPTtvukI.js";import{A as Ca}from"../chunks/eMSiEzFi.js";import{T as Ea}from"../chunks/DLith9Yi.js";import{i as Dt,a as Sr}from"../chunks/CrgqcyB_.js";import{D as Fa,O as Ma}from"../chunks/Dlb_KqyS.js";import{A as Br}from"../chunks/CeYIQAXD.js";import{S as Ra}from"../chunks/CkLriSVx.js";import{M as Da}from"../chunks/Dq9kJk5R.js";import{M as Ia}from"../chunks/Tm9AblHs.js";import{r as ja}from"../chunks/BAurN1n6.js";var Na=new Set(["$$slots","$$events","$$legacy"]);function Oa(_,t){let p=ft(t,Na);const x={name:"brain",size:24,node:[["path",{d:"M12 18V5"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var $a=new Set(["$$slots","$$events","$$legacy"]);function Wt(_,t){let p=ft(t,$a);const x={name:"circle-x",size:24,node:[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]],aliases:["x-circle"]};mt(_,vt(()=>p,{get icon(){return x}}))}var La=new Set(["$$slots","$$events","$$legacy"]);function Qt(_,t){let p=ft(t,La);const x={name:"file-pen",size:24,node:[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z"}]],aliases:["file-edit"]};mt(_,vt(()=>p,{get icon(){return x}}))}var qa=new Set(["$$slots","$$events","$$legacy"]);function Ba(_,t){let p=ft(t,qa);const x={name:"hash",size:24,node:[["line",{x1:"4",x2:"20",y1:"9",y2:"9"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Pa=new Set(["$$slots","$$events","$$legacy"]);function Ha(_,t){let p=ft(t,Pa);const x={name:"list-todo",size:24,node:[["path",{d:"M13 5h8"}],["path",{d:"M13 12h8"}],["path",{d:"M13 19h8"}],["path",{d:"m3 17 2 2 4-4"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Wa=new Set(["$$slots","$$events","$$legacy"]);function Ya(_,t){let p=ft(t,Wa);const x={name:"minimize-2",size:24,node:[["path",{d:"m14 10 7-7"}],["path",{d:"M20 10h-6V4"}],["path",{d:"m3 21 7-7"}],["path",{d:"M4 14h6v6"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ka=new Set(["$$slots","$$events","$$legacy"]);function Ga(_,t){let p=ft(t,Ka);const x={name:"panel-right",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ua=new Set(["$$slots","$$events","$$legacy"]);function Tr(_,t){let p=ft(t,Ua);const x={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Va=new Set(["$$slots","$$events","$$legacy"]);function Za(_,t){let p=ft(t,Va);const x={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"}],["path",{d:"M20 2v4"}],["path",{d:"M22 4h-4"}],["circle",{cx:"4",cy:"20",r:"2"}]],aliases:["stars"]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ja=new Set(["$$slots","$$events","$$legacy"]);function Xa(_,t){let p=ft(t,Ja);const x={name:"square-slash",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9"}]],aliases:["slash-square"]};mt(_,vt(()=>p,{get icon(){return x}}))}var Qa=new Set(["$$slots","$$events","$$legacy"]);function en(_,t){let p=ft(t,Qa);const x={name:"unplug",size:24,node:[["path",{d:"m19 5 3-3"}],["path",{d:"m2 22 3-3"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z"}],["path",{d:"M7.5 13.5 10 11"}],["path",{d:"M10.5 16.5 13 14"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}function tn(_){if(_.stepFailed.length||_.trouble.some(p=>p.status==="failed"))return{label:"Something failed",tone:"danger"};const t=_.needsYou.length;return t?{label:`${t} need${t===1?"s":""} you`,tone:"sea"}:_.trouble.length?{label:"Keeping an eye on a problem",tone:"warning"}:{label:"All well",tone:"success"}}function rn(){let _=null;return(t,p)=>{const x=t.searchParams.get("chat");if(!x)return _=null,null;if(t.href===_)return null;const N=p?.tasks.find(S=>S.id===x);return N?(_=t.href,{kind:"task",id:N.id,title:N.shortTitle,project:p?.projects.find(S=>S.id===N.projectId)?.name??null,url:null}):null}}function an(){let _=null;return(t,p)=>{const x=t.searchParams.get("draft");return x?t.href===_||t.searchParams.get("chat")&&!p?null:(_=t.href,x):(_=null,null)}}function Pr(_){return _.kind==="pr"&&_.url?`[PR ${_.url} — task ${_.id}: ${_.title}]`:`[task ${_.id}: ${_.title}]`}function nn(_){return _.map(t=>typeof t=="string"?t:Pr(t)).join("").replace(/\u00a0/g," ").trim()}function or(_,t=34){const p=_.title.length>t?`${_.title.slice(0,t-1)}…`:_.title,x=_.url?.match(/\/pull\/(\d+)/)?.[1];return _.kind==="pr"?`PR${x?` #${x}`:""} ${p}`:`# ${p}`}const sn=/\[(?:PR (https?:\/\/\S+) — )?task ([A-Za-z0-9][A-Za-z0-9._-]*): ([^\]\n]+)\]/g;function Ar(_){const t=[];let p=0;for(const x of _.matchAll(sn))x.index>p&&t.push(_.slice(p,x.index)),t.push({kind:x[1]?"pr":"task",id:x[2],title:x[3].trim(),project:null,url:x[1]??null}),p=x.index+x[0].length;return p<_.length&&t.push(_.slice(p)),t}var on=s('<!> <span class="truncate"> </span>',1),ln=s('<span class="truncate"> </span>'),dn=s('<span class="min-w-0 truncate text-muted-foreground"> </span>'),cn=s('<span class="flex shrink-0 items-center gap-1 text-xs text-danger"><!>failed</span>'),un=s('<p class="text-muted-foreground">Claude Code keeps only a sealed signature for its thinking, not the words.</p>'),vn=s('<button class="self-start text-sea hover:underline">Show all</button>'),fn=s('<pre class="no-scrollbar max-h-72 overflow-auto rounded-md bg-muted p-3 font-mono whitespace-pre-wrap text-muted-foreground"> </pre> <!>',1),mn=s('<p class="text-muted-foreground">Still running…</p>'),pn=s('<p class="text-muted-foreground">No output.</p>'),gn=s('<button class="mt-1 text-sea hover:underline"> </button>'),xn=s("<pre> </pre> <!>",1),hn=s('<div><div class="mb-1 text-muted-foreground">Input</div> <pre> </pre></div> <div><div class="mb-1 text-muted-foreground"> </div> <!></div>',1),_n=s('<div class="mt-1 mb-2 ml-8 flex flex-col gap-2 text-xs"><!></div>'),bn=s('<li class="py-0.5"><button class="flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-muted"><!> <span class="shrink-0 text-foreground/80"> </span> <!> <!> <!></button> <!></li>'),kn=s('<ol class="mt-1.5 flex max-w-[80ch] flex-col rounded-lg border border-hair bg-bubble-firstmate px-2 py-1.5"></ol>'),wn=s('<div><button class="flex max-w-full cursor-pointer items-center gap-2 rounded-md border border-hair bg-muted/50 px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"><!> <!></button> <!></div>');function yn(_,t){St(t,!0);let p=zt(t,"live",3,!1),x=be(!1),N=rr({}),S=rr({});const E={Bash:$t,Read:fa,Edit:Qt,MultiEdit:Qt,Write:Qt,Grep:Tr,Glob:Tr,WebSearch:kr,WebFetch:kr,Skill:Za,ToolSearch:br,Agent:_r,Task:_r,TodoWrite:Ha},Y=y=>y.kind==="thinking"?Oa:y.kind==="context"?ua:E[y.name]??br;function q(y){return y.kind==="thinking"?{verb:y.ms!=null&&y.ms>=1e3?`Thought for ${ar(y.ms)}`:"Thought",summary:""}:y.kind==="context"?{verb:y.label,summary:""}:{verb:y.verb,summary:y.summary}}const M=w(()=>q(t.steps[t.steps.length-1])),B=1600,ke=(y,h)=>S[y]||h.length<=B?h:h.slice(0,B);function Q(y){const h=y.input??{};return y.name==="Bash"&&typeof h.command=="string"?{code:h.command,mono:!0}:(y.name==="Agent"||y.name==="Task")&&typeof h.prompt=="string"?{code:h.prompt,mono:!1}:{code:JSON.stringify(h,null,2),mono:!0}}var H=wn(),T=l(H),R=l(T);{var Ee=y=>{var h=on(),i=re(h);yt(i,{class:"size-3.5 shrink-0 animate-spin text-sea","aria-hidden":"true"});var f=a(i,2),U=z(f);g(()=>k(U,`${e(M).verb??""} ${e(M).summary??""}`)),r(y,h)},oe=y=>{var h=ln(),i=z(h,!0);g(f=>k(i,f),[()=>Jr(t.steps)]),r(y,h)};m(R,y=>{p()?y(Ee):y(oe,-1)})}var ie=a(R,2);{let y=w(()=>e(x)?"rotate-90":"");Pt(ie,{get class(){return`size-3.5 shrink-0 transition-transform ${e(y)??""}`},"aria-hidden":"true"})}o(T);var ae=a(T,2);{var G=y=>{var h=kn();Me(h,21,()=>t.steps,i=>i.id,(i,f)=>{const U=w(()=>Y(e(f))),ve=w(()=>q(e(f)));var we=bn(),V=l(we),ye=l(V);cr(ye,()=>e(U),(n,u)=>{u(n,{class:"size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})});var le=a(ye,2),tt=z(le,!0),pt=a(le,2);{var ht=n=>{var u=dn(),D=z(u,!0);g(()=>k(D,e(ve).summary)),r(n,u)};m(pt,n=>{e(ve).summary&&n(ht)})}var Ye=a(pt,2);{var rt=n=>{var u=cn(),D=l(u);ca(D,{class:"size-3.5","aria-hidden":"true"}),We(),o(u),r(n,u)},dt=n=>{yt(n,{class:"size-3.5 shrink-0 animate-spin text-muted-foreground","aria-label":"Running"})};m(Ye,n=>{e(f).kind==="tool"&&e(f).isError?n(rt):e(f).kind==="tool"&&e(f).result==null&&n(dt,1)})}var _t=a(Ye,2);{let n=w(()=>N[e(f).id]?"rotate-90":"");Pt(_t,{get class(){return`ml-auto size-3.5 shrink-0 text-muted-foreground transition-transform ${e(n)??""}`},"aria-hidden":"true"})}o(V);var ct=a(V,2);{var Oe=n=>{var u=_n(),D=l(u);{var O=Te=>{var Qe=un();r(Te,Qe)},xe=Te=>{var Qe=fn(),ot=re(Qe),Ke=z(ot,!0),gt=a(ot,2);{var bt=Je=>{var Re=vn();se("click",Re,()=>S[e(f).id]=!0),r(Je,Re)};m(gt,Je=>{e(f).detail.length>B&&!S[e(f).id]&&Je(bt)})}g(Je=>k(Ke,Je),[()=>ke(e(f).id,e(f).detail)]),r(Te,Qe)},he=Te=>{const Qe=w(()=>Q(e(f)));var ot=hn(),Ke=re(ot),gt=a(l(Ke),2),bt=z(gt,!0);o(Ke);var Je=a(Ke,2),Re=l(Je),d=z(Re,!0),b=a(Re,2);{var $=ee=>{var I=mn();r(ee,I)},fe=ee=>{var I=pn();r(ee,I)},Ae=w(()=>!e(f).result.trim()),qe=ee=>{var I=xn(),C=re(I),W=z(C,!0),de=a(C,2);{var De=_e=>{var ce=gn(),ze=z(ce);g(Ie=>k(ze,`Show all (${Ie??""}k characters)`),[()=>Math.round(e(f).result.length/1e3)]),se("click",ce,()=>S[e(f).id]=!0),r(_e,ce)};m(de,_e=>{e(f).result.length>B&&!S[e(f).id]&&_e(De)})}g(_e=>{Ne(C,1,`no-scrollbar max-h-72 overflow-auto rounded-md bg-muted p-3 font-mono whitespace-pre-wrap ${e(f).isError?"text-danger":""}`),k(W,_e)},[()=>ke(e(f).id,e(f).result)]),r(ee,I)};m(b,ee=>{e(f).result==null?ee($):e(Ae)?ee(fe,1):ee(qe,-1)})}o(Je),g(()=>{Ne(gt,1,`no-scrollbar max-h-60 overflow-auto rounded-md bg-muted p-3 whitespace-pre-wrap ${e(Qe).mono?"font-mono":"font-sans"}`),k(bt,e(Qe).code),k(d,e(f).isError?"Error":"Result")}),r(Te,ot)};m(D,Te=>{e(f).kind==="thinking"?Te(O):e(f).kind==="context"?Te(xe,1):Te(he,-1)})}o(u),r(n,u)};m(ct,n=>{N[e(f).id]&&n(Oe)})}o(we),g(()=>{P(V,"aria-expanded",!!N[e(f).id]),k(tt,e(ve).verb)}),se("click",V,()=>N[e(f).id]=!N[e(f).id]),r(i,we)}),o(h),r(y,h)};m(ae,y=>{e(x)&&y(G)})}o(H),g(()=>P(T,"aria-expanded",e(x))),se("click",T,()=>A(x,!e(x))),r(_,H),Tt()}It(["click"]);var zn=lr('<line x1="16" y1="12.4" x2="16" y2="5.6" stroke-width="1.3"></line>'),Sn=lr('<circle cx="16" cy="5.2" r="1.3" class="fill-primary-foreground"></circle>'),Tn=lr('<svg viewBox="0 0 32 32" role="img" aria-label="Firstmate" xmlns="http://www.w3.org/2000/svg"><circle cx="16" cy="16" r="15.25" class="fill-primary stroke-brass" stroke-width="1.5"></circle><g class="fill-none stroke-primary-foreground" stroke-linecap="round"><circle cx="16" cy="16" r="7" stroke-width="1.6"></circle><!></g><circle cx="16" cy="16" r="2.4" class="fill-primary-foreground"></circle><!></svg>');function An(_,t){let p=zt(t,"class",3,"");const x=[0,45,90,135,180,225,270,315];var N=Tn(),S=a(l(N)),E=a(l(S));Me(E,16,()=>x,q=>q,(q,M)=>{var B=zn();g(()=>P(B,"transform",`rotate(${M??""} 16 16)`)),r(q,B)}),o(S);var Y=a(S,2);Me(Y,16,()=>x,q=>q,(q,M)=>{var B=Sn();g(()=>P(B,"transform",`rotate(${M??""} 16 16)`)),r(q,B)}),o(N),g(()=>Ne(N,0,`shrink-0 ${p()??""}`)),r(_,N)}var Cn=s('<div class="px-2.5 pt-1.5 pb-1 text-xs font-medium text-muted-foreground"> </div>'),En=s('<!> <span class="shrink-0 font-medium"> </span> <span class="min-w-0 truncate text-muted-foreground"> </span>',1),Fn=s('<span class="ml-auto shrink-0 text-xs text-muted-foreground"> </span>'),Mn=s('<!> <span class="min-w-0 truncate"> </span> <!>',1),Rn=s('<!> <button role="option"><!></button>',1),Dn=s('<div class="absolute right-0 bottom-full left-0 z-20 mb-2 no-scrollbar max-h-80 overflow-y-auto rounded-xl border bg-popover p-1.5 shadow-lg" role="listbox"></div>'),In=s('<button aria-label="Stop Firstmate" title="Stop what Firstmate is doing (Escape)" class="flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full bg-foreground text-background transition-opacity disabled:opacity-40"><!></button>'),jn=s('<button aria-label="Send" class="flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full bg-foreground text-background transition-opacity disabled:cursor-not-allowed disabled:opacity-30"><!></button>'),Nn=s('<p class="mt-2 text-sm text-danger" role="alert"> </p>'),On=s('<p class="mt-2 text-xs text-muted-foreground">Your spec was sent to Firstmate as a build request. <a class="underline underline-offset-2 hover:text-foreground">Back to the spec</a></p>'),$n=s('<p class="mt-2 text-xs text-muted-foreground">Your spec is ready and will be sent as soon as Firstmate can take messages.</p>'),Ln=s('<p class="mt-2 text-xs text-muted-foreground"> </p>'),qn=s('<div class="relative"><!> <div><div role="textbox" aria-multiline="true" aria-label="Message Firstmate"></div> <!> <!></div> <!></div>');function Bn(_,t){St(t,!0);const p=w(()=>t.via!==null);let x=be(!1),N=be(null),S=be(void 0),E=be(!0),Y=be(!1),q=be(null),M=be(null),B=be(0);const ke=w(jr),Q=w(()=>{const n=D=>e(ke)?.projects.find(O=>O.id===D)?.name??null,u=[];for(const D of e(ke)?.tasks??[]){const O=n(D.projectId);u.push({kind:"task",id:D.id,title:D.shortTitle,project:O,url:null});const xe=D.attention?.url??D.pr?.url;xe&&u.push({kind:"pr",id:D.id,title:D.shortTitle,project:O,url:xe})}return u}),H=w(()=>{if(!e(M))return[];const n=e(M).query.toLowerCase();return e(M).kind==="/"?t.via!=="session"?[]:t.commands.filter(u=>u.name.toLowerCase().includes(n)).sort((u,D)=>+!u.name.startsWith(n)-+!D.name.startsWith(n)).map(u=>({kind:"command",c:u})):e(Q).filter(u=>`${u.title} ${u.project??""} ${u.id} ${u.url??""}`.toLowerCase().includes(n)).slice(0,8).map(u=>({kind:"ref",r:u}))});function T(){if(!e(S))return;A(E,!e(S).textContent?.trim()&&!e(S).querySelector("[data-ref]"),!0);const n=window.getSelection(),u=n?.anchorNode;if(!n||!n.isCollapsed||!(u instanceof Text)||!e(S).contains(u)){A(M,null);return}const O=u.data.slice(0,n.anchorOffset).match(/(?:^|[\s\u00a0])([/#])([\w.:-]*)$/);if(!O){A(M,null);return}const xe=n.anchorOffset-O[2].length-1;if(O[1]==="/"){const Te=document.createRange();if(Te.setStart(e(S),0),Te.setEnd(u,xe),Te.toString().trim()||Te.cloneContents().querySelector("[data-ref]")){A(M,null);return}}const he=O[1];(!e(M)||e(M).kind!==he||e(M).query!==O[2])&&A(B,0),A(M,{kind:he,query:O[2],node:u,start:xe,end:n.anchorOffset},!0)}function R(n){const u=document.createRange();u.setStartAfter(n),u.collapse(!0);const D=window.getSelection();D?.removeAllRanges(),D?.addRange(u)}function Ee(n){const u=document.createElement("span");return u.contentEditable="false",u.dataset.ref=JSON.stringify(n),u.className="ref-chip",u.textContent=or(n),u.title=Pr(n),u}function oe(n){if(!e(M)||!e(S))return;const{node:u,start:D,end:O}=e(M),xe=document.createRange();xe.setStart(u,D),xe.setEnd(u,O),xe.deleteContents();let he;n.kind==="command"?(he=document.createTextNode(`/${n.c.name} `),xe.insertNode(he)):(he=document.createTextNode(" "),xe.insertNode(he),xe.insertNode(Ee(n.r))),R(he),A(M,null),T()}async function ie(n,u=null){if(!e(S)||!e(p))return;e(S).focus();const D=e(S).textContent??"";D&&!/[\s\u00a0]$/.test(D)&&e(S).append(document.createTextNode(" "));const O=n?[Ee(n),document.createTextNode(" ")]:[];u&&O.push(document.createTextNode(u)),O.length&&(e(S).append(...O),await Ir(),R(O[O.length-1]),T())}Mt(()=>{const n=xt.pending,u=xt.draft;(n||u)&&e(S)&&e(p)&&(xt.pending=null,xt.draft=null,ie(n,u))});function ae(n,u){if(n instanceof Text)return[n.data];if(!(n instanceof HTMLElement))return[];if(n.dataset.ref)return[JSON.parse(n.dataset.ref)];if(n.tagName==="BR")return[`
|
|
1
|
+
import"../chunks/DsnmJJEf.js";import{o as ir}from"../chunks/BGINfGsV.js";import{k as It,p as St,y as rr,m as l,s as a,h as e,r as o,t as g,n as se,i as A,a as r,b as Tt,e as be,f as re,o as z,d as k,q as w,w as We,c as s,bA as lr,N as Mt,a7 as qt,M as Ir,x as Ft,v as Nt,aa as Kr,ag as mr,l as Gr,$ as Ur}from"../chunks/L-6wuY5f.js";import{s as vt,r as ft,p as zt,i as m}from"../chunks/COiIt96y.js";import{s as P,e as Me,a as Ne,i as pr,h as Vr}from"../chunks/DGy76IbW.js";import{p as Ot}from"../chunks/euRlC7pA.js";import{c as jr,a as Zr,l as jt}from"../chunks/BWJa0dU7.js";import{a as Jr,d as ar,f as st,b as dr,p as Xt}from"../chunks/Clzs_eXS.js";import{s as gr,a as xr}from"../chunks/36FDwM1G.js";import{h as Xr,d as Nr}from"../chunks/C2d4bDYU.js";import{h as Qr,m as ea}from"../chunks/C6BQPSOs.js";import{c as cr}from"../chunks/BiTivU7x.js";import{b as Bt}from"../chunks/Da92_52d.js";import{R as Or,l as hr,e as ta,M as ra,b as aa,S as na}from"../chunks/BEAYWcbT.js";import{a as $r}from"../chunks/DKQe4Tss.js";import{a as _r,W as br,G as kr,m as sa,A as oa,R as ia}from"../chunks/CIfcjhKg.js";import{B as la,S as da}from"../chunks/BORDV711.js";import{C as Pt}from"../chunks/CIE0U5Ih.js";import{L as yt}from"../chunks/Brlpgp90.js";import{C as ca}from"../chunks/uD7-7yV9.js";import{I as mt}from"../chunks/CQlHU-Rx.js";import{I as ua,T as va}from"../chunks/CXfdgbLv.js";import{F as fa}from"../chunks/DC8T2WRZ.js";import{S as $t}from"../chunks/Bns_F-QV.js";import{M as ma,e as pa,d as ga,S as xa}from"../chunks/Db0WMrvR.js";import{c as xt}from"../chunks/CrCQ2NNA.js";import{A as ha}from"../chunks/B1XxiJam.js";import{G as Lr}from"../chunks/CDphfOBv.js";import{M as _a}from"../chunks/BiuLIp4b.js";import{C as Ht}from"../chunks/BR5v76-T.js";import{C as nr}from"../chunks/CQ7gIAH8.js";import{_ as wr}from"../chunks/PPVm8Dsz.js";import{B as ba}from"../chunks/BHsdHLbF.js";import{B as yr,G as zr}from"../chunks/B2wEHue2.js";import{H as qr,A as ka}from"../chunks/BVVO3JPx.js";import{X as sr}from"../chunks/BUo4hMcM.js";import{A as wa}from"../chunks/DIABVMrA.js";import{t as ya,s as za,a as Sa}from"../chunks/CR7y1ULG.js";import{C as Ta,E as Aa}from"../chunks/B1bNvkZf.js";import{A as Ca}from"../chunks/eMSiEzFi.js";import{T as Ea}from"../chunks/DLith9Yi.js";import{i as Dt,a as Sr}from"../chunks/CrgqcyB_.js";import{D as Fa,O as Ma}from"../chunks/Dlb_KqyS.js";import{A as Br}from"../chunks/CeYIQAXD.js";import{S as Ra}from"../chunks/CkLriSVx.js";import{M as Da}from"../chunks/Dq9kJk5R.js";import{M as Ia}from"../chunks/Tm9AblHs.js";import{r as ja}from"../chunks/_7N5fmOy.js";var Na=new Set(["$$slots","$$events","$$legacy"]);function Oa(_,t){let p=ft(t,Na);const x={name:"brain",size:24,node:[["path",{d:"M12 18V5"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var $a=new Set(["$$slots","$$events","$$legacy"]);function Wt(_,t){let p=ft(t,$a);const x={name:"circle-x",size:24,node:[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]],aliases:["x-circle"]};mt(_,vt(()=>p,{get icon(){return x}}))}var La=new Set(["$$slots","$$events","$$legacy"]);function Qt(_,t){let p=ft(t,La);const x={name:"file-pen",size:24,node:[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z"}]],aliases:["file-edit"]};mt(_,vt(()=>p,{get icon(){return x}}))}var qa=new Set(["$$slots","$$events","$$legacy"]);function Ba(_,t){let p=ft(t,qa);const x={name:"hash",size:24,node:[["line",{x1:"4",x2:"20",y1:"9",y2:"9"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Pa=new Set(["$$slots","$$events","$$legacy"]);function Ha(_,t){let p=ft(t,Pa);const x={name:"list-todo",size:24,node:[["path",{d:"M13 5h8"}],["path",{d:"M13 12h8"}],["path",{d:"M13 19h8"}],["path",{d:"m3 17 2 2 4-4"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Wa=new Set(["$$slots","$$events","$$legacy"]);function Ya(_,t){let p=ft(t,Wa);const x={name:"minimize-2",size:24,node:[["path",{d:"m14 10 7-7"}],["path",{d:"M20 10h-6V4"}],["path",{d:"m3 21 7-7"}],["path",{d:"M4 14h6v6"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ka=new Set(["$$slots","$$events","$$legacy"]);function Ga(_,t){let p=ft(t,Ka);const x={name:"panel-right",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ua=new Set(["$$slots","$$events","$$legacy"]);function Tr(_,t){let p=ft(t,Ua);const x={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}var Va=new Set(["$$slots","$$events","$$legacy"]);function Za(_,t){let p=ft(t,Va);const x={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"}],["path",{d:"M20 2v4"}],["path",{d:"M22 4h-4"}],["circle",{cx:"4",cy:"20",r:"2"}]],aliases:["stars"]};mt(_,vt(()=>p,{get icon(){return x}}))}var Ja=new Set(["$$slots","$$events","$$legacy"]);function Xa(_,t){let p=ft(t,Ja);const x={name:"square-slash",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9"}]],aliases:["slash-square"]};mt(_,vt(()=>p,{get icon(){return x}}))}var Qa=new Set(["$$slots","$$events","$$legacy"]);function en(_,t){let p=ft(t,Qa);const x={name:"unplug",size:24,node:[["path",{d:"m19 5 3-3"}],["path",{d:"m2 22 3-3"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z"}],["path",{d:"M7.5 13.5 10 11"}],["path",{d:"M10.5 16.5 13 14"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z"}]]};mt(_,vt(()=>p,{get icon(){return x}}))}function tn(_){if(_.stepFailed.length||_.trouble.some(p=>p.status==="failed"))return{label:"Something failed",tone:"danger"};const t=_.needsYou.length;return t?{label:`${t} need${t===1?"s":""} you`,tone:"sea"}:_.trouble.length?{label:"Keeping an eye on a problem",tone:"warning"}:{label:"All well",tone:"success"}}function rn(){let _=null;return(t,p)=>{const x=t.searchParams.get("chat");if(!x)return _=null,null;if(t.href===_)return null;const N=p?.tasks.find(S=>S.id===x);return N?(_=t.href,{kind:"task",id:N.id,title:N.shortTitle,project:p?.projects.find(S=>S.id===N.projectId)?.name??null,url:null}):null}}function an(){let _=null;return(t,p)=>{const x=t.searchParams.get("draft");return x?t.href===_||t.searchParams.get("chat")&&!p?null:(_=t.href,x):(_=null,null)}}function Pr(_){return _.kind==="pr"&&_.url?`[PR ${_.url} — task ${_.id}: ${_.title}]`:`[task ${_.id}: ${_.title}]`}function nn(_){return _.map(t=>typeof t=="string"?t:Pr(t)).join("").replace(/\u00a0/g," ").trim()}function or(_,t=34){const p=_.title.length>t?`${_.title.slice(0,t-1)}…`:_.title,x=_.url?.match(/\/pull\/(\d+)/)?.[1];return _.kind==="pr"?`PR${x?` #${x}`:""} ${p}`:`# ${p}`}const sn=/\[(?:PR (https?:\/\/\S+) — )?task ([A-Za-z0-9][A-Za-z0-9._-]*): ([^\]\n]+)\]/g;function Ar(_){const t=[];let p=0;for(const x of _.matchAll(sn))x.index>p&&t.push(_.slice(p,x.index)),t.push({kind:x[1]?"pr":"task",id:x[2],title:x[3].trim(),project:null,url:x[1]??null}),p=x.index+x[0].length;return p<_.length&&t.push(_.slice(p)),t}var on=s('<!> <span class="truncate"> </span>',1),ln=s('<span class="truncate"> </span>'),dn=s('<span class="min-w-0 truncate text-muted-foreground"> </span>'),cn=s('<span class="flex shrink-0 items-center gap-1 text-xs text-danger"><!>failed</span>'),un=s('<p class="text-muted-foreground">Claude Code keeps only a sealed signature for its thinking, not the words.</p>'),vn=s('<button class="self-start text-sea hover:underline">Show all</button>'),fn=s('<pre class="no-scrollbar max-h-72 overflow-auto rounded-md bg-muted p-3 font-mono whitespace-pre-wrap text-muted-foreground"> </pre> <!>',1),mn=s('<p class="text-muted-foreground">Still running…</p>'),pn=s('<p class="text-muted-foreground">No output.</p>'),gn=s('<button class="mt-1 text-sea hover:underline"> </button>'),xn=s("<pre> </pre> <!>",1),hn=s('<div><div class="mb-1 text-muted-foreground">Input</div> <pre> </pre></div> <div><div class="mb-1 text-muted-foreground"> </div> <!></div>',1),_n=s('<div class="mt-1 mb-2 ml-8 flex flex-col gap-2 text-xs"><!></div>'),bn=s('<li class="py-0.5"><button class="flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-muted"><!> <span class="shrink-0 text-foreground/80"> </span> <!> <!> <!></button> <!></li>'),kn=s('<ol class="mt-1.5 flex max-w-[80ch] flex-col rounded-lg border border-hair bg-bubble-firstmate px-2 py-1.5"></ol>'),wn=s('<div><button class="flex max-w-full cursor-pointer items-center gap-2 rounded-md border border-hair bg-muted/50 px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"><!> <!></button> <!></div>');function yn(_,t){St(t,!0);let p=zt(t,"live",3,!1),x=be(!1),N=rr({}),S=rr({});const E={Bash:$t,Read:fa,Edit:Qt,MultiEdit:Qt,Write:Qt,Grep:Tr,Glob:Tr,WebSearch:kr,WebFetch:kr,Skill:Za,ToolSearch:br,Agent:_r,Task:_r,TodoWrite:Ha},Y=y=>y.kind==="thinking"?Oa:y.kind==="context"?ua:E[y.name]??br;function q(y){return y.kind==="thinking"?{verb:y.ms!=null&&y.ms>=1e3?`Thought for ${ar(y.ms)}`:"Thought",summary:""}:y.kind==="context"?{verb:y.label,summary:""}:{verb:y.verb,summary:y.summary}}const M=w(()=>q(t.steps[t.steps.length-1])),B=1600,ke=(y,h)=>S[y]||h.length<=B?h:h.slice(0,B);function Q(y){const h=y.input??{};return y.name==="Bash"&&typeof h.command=="string"?{code:h.command,mono:!0}:(y.name==="Agent"||y.name==="Task")&&typeof h.prompt=="string"?{code:h.prompt,mono:!1}:{code:JSON.stringify(h,null,2),mono:!0}}var H=wn(),T=l(H),R=l(T);{var Ee=y=>{var h=on(),i=re(h);yt(i,{class:"size-3.5 shrink-0 animate-spin text-sea","aria-hidden":"true"});var f=a(i,2),U=z(f);g(()=>k(U,`${e(M).verb??""} ${e(M).summary??""}`)),r(y,h)},oe=y=>{var h=ln(),i=z(h,!0);g(f=>k(i,f),[()=>Jr(t.steps)]),r(y,h)};m(R,y=>{p()?y(Ee):y(oe,-1)})}var ie=a(R,2);{let y=w(()=>e(x)?"rotate-90":"");Pt(ie,{get class(){return`size-3.5 shrink-0 transition-transform ${e(y)??""}`},"aria-hidden":"true"})}o(T);var ae=a(T,2);{var G=y=>{var h=kn();Me(h,21,()=>t.steps,i=>i.id,(i,f)=>{const U=w(()=>Y(e(f))),ve=w(()=>q(e(f)));var we=bn(),V=l(we),ye=l(V);cr(ye,()=>e(U),(n,u)=>{u(n,{class:"size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})});var le=a(ye,2),tt=z(le,!0),pt=a(le,2);{var ht=n=>{var u=dn(),D=z(u,!0);g(()=>k(D,e(ve).summary)),r(n,u)};m(pt,n=>{e(ve).summary&&n(ht)})}var Ye=a(pt,2);{var rt=n=>{var u=cn(),D=l(u);ca(D,{class:"size-3.5","aria-hidden":"true"}),We(),o(u),r(n,u)},dt=n=>{yt(n,{class:"size-3.5 shrink-0 animate-spin text-muted-foreground","aria-label":"Running"})};m(Ye,n=>{e(f).kind==="tool"&&e(f).isError?n(rt):e(f).kind==="tool"&&e(f).result==null&&n(dt,1)})}var _t=a(Ye,2);{let n=w(()=>N[e(f).id]?"rotate-90":"");Pt(_t,{get class(){return`ml-auto size-3.5 shrink-0 text-muted-foreground transition-transform ${e(n)??""}`},"aria-hidden":"true"})}o(V);var ct=a(V,2);{var Oe=n=>{var u=_n(),D=l(u);{var O=Te=>{var Qe=un();r(Te,Qe)},xe=Te=>{var Qe=fn(),ot=re(Qe),Ke=z(ot,!0),gt=a(ot,2);{var bt=Je=>{var Re=vn();se("click",Re,()=>S[e(f).id]=!0),r(Je,Re)};m(gt,Je=>{e(f).detail.length>B&&!S[e(f).id]&&Je(bt)})}g(Je=>k(Ke,Je),[()=>ke(e(f).id,e(f).detail)]),r(Te,Qe)},he=Te=>{const Qe=w(()=>Q(e(f)));var ot=hn(),Ke=re(ot),gt=a(l(Ke),2),bt=z(gt,!0);o(Ke);var Je=a(Ke,2),Re=l(Je),d=z(Re,!0),b=a(Re,2);{var $=ee=>{var I=mn();r(ee,I)},fe=ee=>{var I=pn();r(ee,I)},Ae=w(()=>!e(f).result.trim()),qe=ee=>{var I=xn(),C=re(I),W=z(C,!0),de=a(C,2);{var De=_e=>{var ce=gn(),ze=z(ce);g(Ie=>k(ze,`Show all (${Ie??""}k characters)`),[()=>Math.round(e(f).result.length/1e3)]),se("click",ce,()=>S[e(f).id]=!0),r(_e,ce)};m(de,_e=>{e(f).result.length>B&&!S[e(f).id]&&_e(De)})}g(_e=>{Ne(C,1,`no-scrollbar max-h-72 overflow-auto rounded-md bg-muted p-3 font-mono whitespace-pre-wrap ${e(f).isError?"text-danger":""}`),k(W,_e)},[()=>ke(e(f).id,e(f).result)]),r(ee,I)};m(b,ee=>{e(f).result==null?ee($):e(Ae)?ee(fe,1):ee(qe,-1)})}o(Je),g(()=>{Ne(gt,1,`no-scrollbar max-h-60 overflow-auto rounded-md bg-muted p-3 whitespace-pre-wrap ${e(Qe).mono?"font-mono":"font-sans"}`),k(bt,e(Qe).code),k(d,e(f).isError?"Error":"Result")}),r(Te,ot)};m(D,Te=>{e(f).kind==="thinking"?Te(O):e(f).kind==="context"?Te(xe,1):Te(he,-1)})}o(u),r(n,u)};m(ct,n=>{N[e(f).id]&&n(Oe)})}o(we),g(()=>{P(V,"aria-expanded",!!N[e(f).id]),k(tt,e(ve).verb)}),se("click",V,()=>N[e(f).id]=!N[e(f).id]),r(i,we)}),o(h),r(y,h)};m(ae,y=>{e(x)&&y(G)})}o(H),g(()=>P(T,"aria-expanded",e(x))),se("click",T,()=>A(x,!e(x))),r(_,H),Tt()}It(["click"]);var zn=lr('<line x1="16" y1="12.4" x2="16" y2="5.6" stroke-width="1.3"></line>'),Sn=lr('<circle cx="16" cy="5.2" r="1.3" class="fill-primary-foreground"></circle>'),Tn=lr('<svg viewBox="0 0 32 32" role="img" aria-label="Firstmate" xmlns="http://www.w3.org/2000/svg"><circle cx="16" cy="16" r="15.25" class="fill-primary stroke-brass" stroke-width="1.5"></circle><g class="fill-none stroke-primary-foreground" stroke-linecap="round"><circle cx="16" cy="16" r="7" stroke-width="1.6"></circle><!></g><circle cx="16" cy="16" r="2.4" class="fill-primary-foreground"></circle><!></svg>');function An(_,t){let p=zt(t,"class",3,"");const x=[0,45,90,135,180,225,270,315];var N=Tn(),S=a(l(N)),E=a(l(S));Me(E,16,()=>x,q=>q,(q,M)=>{var B=zn();g(()=>P(B,"transform",`rotate(${M??""} 16 16)`)),r(q,B)}),o(S);var Y=a(S,2);Me(Y,16,()=>x,q=>q,(q,M)=>{var B=Sn();g(()=>P(B,"transform",`rotate(${M??""} 16 16)`)),r(q,B)}),o(N),g(()=>Ne(N,0,`shrink-0 ${p()??""}`)),r(_,N)}var Cn=s('<div class="px-2.5 pt-1.5 pb-1 text-xs font-medium text-muted-foreground"> </div>'),En=s('<!> <span class="shrink-0 font-medium"> </span> <span class="min-w-0 truncate text-muted-foreground"> </span>',1),Fn=s('<span class="ml-auto shrink-0 text-xs text-muted-foreground"> </span>'),Mn=s('<!> <span class="min-w-0 truncate"> </span> <!>',1),Rn=s('<!> <button role="option"><!></button>',1),Dn=s('<div class="absolute right-0 bottom-full left-0 z-20 mb-2 no-scrollbar max-h-80 overflow-y-auto rounded-xl border bg-popover p-1.5 shadow-lg" role="listbox"></div>'),In=s('<button aria-label="Stop Firstmate" title="Stop what Firstmate is doing (Escape)" class="flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full bg-foreground text-background transition-opacity disabled:opacity-40"><!></button>'),jn=s('<button aria-label="Send" class="flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full bg-foreground text-background transition-opacity disabled:cursor-not-allowed disabled:opacity-30"><!></button>'),Nn=s('<p class="mt-2 text-sm text-danger" role="alert"> </p>'),On=s('<p class="mt-2 text-xs text-muted-foreground">Your spec was sent to Firstmate as a build request. <a class="underline underline-offset-2 hover:text-foreground">Back to the spec</a></p>'),$n=s('<p class="mt-2 text-xs text-muted-foreground">Your spec is ready and will be sent as soon as Firstmate can take messages.</p>'),Ln=s('<p class="mt-2 text-xs text-muted-foreground"> </p>'),qn=s('<div class="relative"><!> <div><div role="textbox" aria-multiline="true" aria-label="Message Firstmate"></div> <!> <!></div> <!></div>');function Bn(_,t){St(t,!0);const p=w(()=>t.via!==null);let x=be(!1),N=be(null),S=be(void 0),E=be(!0),Y=be(!1),q=be(null),M=be(null),B=be(0);const ke=w(jr),Q=w(()=>{const n=D=>e(ke)?.projects.find(O=>O.id===D)?.name??null,u=[];for(const D of e(ke)?.tasks??[]){const O=n(D.projectId);u.push({kind:"task",id:D.id,title:D.shortTitle,project:O,url:null});const xe=D.attention?.url??D.pr?.url;xe&&u.push({kind:"pr",id:D.id,title:D.shortTitle,project:O,url:xe})}return u}),H=w(()=>{if(!e(M))return[];const n=e(M).query.toLowerCase();return e(M).kind==="/"?t.via!=="session"?[]:t.commands.filter(u=>u.name.toLowerCase().includes(n)).sort((u,D)=>+!u.name.startsWith(n)-+!D.name.startsWith(n)).map(u=>({kind:"command",c:u})):e(Q).filter(u=>`${u.title} ${u.project??""} ${u.id} ${u.url??""}`.toLowerCase().includes(n)).slice(0,8).map(u=>({kind:"ref",r:u}))});function T(){if(!e(S))return;A(E,!e(S).textContent?.trim()&&!e(S).querySelector("[data-ref]"),!0);const n=window.getSelection(),u=n?.anchorNode;if(!n||!n.isCollapsed||!(u instanceof Text)||!e(S).contains(u)){A(M,null);return}const O=u.data.slice(0,n.anchorOffset).match(/(?:^|[\s\u00a0])([/#])([\w.:-]*)$/);if(!O){A(M,null);return}const xe=n.anchorOffset-O[2].length-1;if(O[1]==="/"){const Te=document.createRange();if(Te.setStart(e(S),0),Te.setEnd(u,xe),Te.toString().trim()||Te.cloneContents().querySelector("[data-ref]")){A(M,null);return}}const he=O[1];(!e(M)||e(M).kind!==he||e(M).query!==O[2])&&A(B,0),A(M,{kind:he,query:O[2],node:u,start:xe,end:n.anchorOffset},!0)}function R(n){const u=document.createRange();u.setStartAfter(n),u.collapse(!0);const D=window.getSelection();D?.removeAllRanges(),D?.addRange(u)}function Ee(n){const u=document.createElement("span");return u.contentEditable="false",u.dataset.ref=JSON.stringify(n),u.className="ref-chip",u.textContent=or(n),u.title=Pr(n),u}function oe(n){if(!e(M)||!e(S))return;const{node:u,start:D,end:O}=e(M),xe=document.createRange();xe.setStart(u,D),xe.setEnd(u,O),xe.deleteContents();let he;n.kind==="command"?(he=document.createTextNode(`/${n.c.name} `),xe.insertNode(he)):(he=document.createTextNode(" "),xe.insertNode(he),xe.insertNode(Ee(n.r))),R(he),A(M,null),T()}async function ie(n,u=null){if(!e(S)||!e(p))return;e(S).focus();const D=e(S).textContent??"";D&&!/[\s\u00a0]$/.test(D)&&e(S).append(document.createTextNode(" "));const O=n?[Ee(n),document.createTextNode(" ")]:[];u&&O.push(document.createTextNode(u)),O.length&&(e(S).append(...O),await Ir(),R(O[O.length-1]),T())}Mt(()=>{const n=xt.pending,u=xt.draft;(n||u)&&e(S)&&e(p)&&(xt.pending=null,xt.draft=null,ie(n,u))});function ae(n,u){if(n instanceof Text)return[n.data];if(!(n instanceof HTMLElement))return[];if(n.dataset.ref)return[JSON.parse(n.dataset.ref)];if(n.tagName==="BR")return[`
|
|
2
2
|
`];const D=[...n.childNodes].flatMap(O=>ae(O,u));return n!==u&&n.tagName==="DIV"?[`
|
|
3
3
|
`,...D]:D}async function G(n){return!t.via||(A(q,null),!(await st.send(n,t.via,t.token,t.working)).ok)?!1:(A(x,t.via==="inbox"),!0)}Mt(()=>{const n=xt.outgoing;!n||!e(S)||!e(p)||(xt.outgoing=null,G(n.text).then(u=>{A(N,u?n.from??"/spec":null,!0),u&&n.onSent?.()}))});async function y(){if(e(S)?.querySelector("[data-dictation]")&&ga.commit(),!e(S)||e(E)||!e(p))return;const n=nn(ae(e(S),e(S)));n&&(A(N,null),e(S).innerHTML="",A(E,!0),A(M,null),e(S).focus(),await G(n))}async function h(){A(Y,!0),A(q,null);const n=await dr("/api/firstmate/interrupt",t.token);A(Y,!1),n.ok||A(q,n.error,!0)}function i(n){if(e(M)&&e(H).length){if(n.key==="ArrowDown"||n.key==="ArrowUp"){n.preventDefault(),A(B,(e(B)+(n.key==="ArrowDown"?1:e(H).length-1))%e(H).length);return}if(n.key==="Enter"||n.key==="Tab"){n.preventDefault(),oe(e(H)[e(B)]);return}}if(e(M)&&n.key==="Escape"){n.preventDefault(),A(M,null);return}n.key==="Enter"&&!n.shiftKey&&!n.isComposing&&(n.preventDefault(),y())}function f(n){n.preventDefault(),document.execCommand("insertText",!1,n.clipboardData?.getData("text/plain")??"")}const U=w(()=>t.via==="session"?"Message Firstmate · / for commands · # to mention a task":t.via==="inbox"?"Message Firstmate’s inbox · # to mention a task":t.reason??"Firstmate is not running here.");var ve=qn(),we=l(ve);{var V=n=>{var u=Dn();Me(u,23,()=>e(H),D=>D.kind==="command"?D.c.name:`${D.r.kind}:${D.r.id}`,(D,O,xe)=>{const he=w(()=>e(H)[e(xe)-1]);var Te=Rn(),Qe=re(Te);{var ot=Re=>{var d=Cn(),b=z(d,!0);g(()=>k(b,e(O).c.source==="firstmate"?"Firstmate":"Claude Code")),r(Re,d)};m(Qe,Re=>{e(O).kind==="command"&&(!e(he)||e(he).kind==="command"&&e(he).c.source!==e(O).c.source)&&Re(ot)})}var Ke=a(Qe,2),gt=l(Ke);{var bt=Re=>{var d=En(),b=re(d);Xa(b,{class:"size-4 shrink-0 text-muted-foreground","aria-hidden":"true"});var $=a(b,2),fe=z($),Ae=a($,2),qe=z(Ae,!0);g(()=>{k(fe,`/${e(O).c.name??""}`),k(qe,e(O).c.description)}),r(Re,d)},Je=Re=>{var d=Mn(),b=re(d);{var $=C=>{Lr(C,{class:"size-4 shrink-0 text-sea","aria-hidden":"true"})},fe=C=>{Ba(C,{class:"size-4 shrink-0 text-muted-foreground","aria-hidden":"true"})};m(b,C=>{e(O).r.kind==="pr"?C($):C(fe,-1)})}var Ae=a(b,2),qe=z(Ae,!0),ee=a(Ae,2);{var I=C=>{var W=Fn(),de=z(W,!0);g(()=>k(de,e(O).r.project)),r(C,W)};m(ee,C=>{e(O).r.project&&C(I)})}g(()=>k(qe,e(O).r.kind==="pr"?`Pull request · ${e(O).r.title}`:e(O).r.title)),r(Re,d)};m(gt,Re=>{e(O).kind==="command"?Re(bt):Re(Je,-1)})}o(Ke),g(()=>{P(Ke,"aria-selected",e(xe)===e(B)),Ne(Ke,1,`flex w-full cursor-pointer items-center gap-3 rounded-lg px-2.5 py-2 text-left text-sm ${e(xe)===e(B)?"bg-muted":""}`)}),se("mousedown",Ke,Re=>{Re.preventDefault(),oe(e(O))}),qt("mouseenter",Ke,()=>A(B,e(xe),!0)),r(D,Te)}),o(u),g(()=>P(u,"aria-label",e(M).kind==="/"?"Commands":"Tasks and pull requests")),r(n,u)};m(we,n=>{e(M)&&e(H).length&&n(V)})}var ye=a(we,2),le=l(ye);Bt(le,n=>A(S,n),()=>e(S));var tt=a(le,2);{let n=w(()=>!e(p));ma(tt,{get field(){return e(S)},target:()=>pa(e(S),T),label:"Dictate a message",get disabled(){return e(n)}})}var pt=a(tt,2);{var ht=n=>{var u=In(),D=l(u);{var O=he=>{yt(he,{class:"size-4 animate-spin"})},xe=he=>{xa(he,{class:"size-3.5 fill-current"})};m(D,he=>{e(Y)?he(O):he(xe,-1)})}o(u),g(()=>u.disabled=e(Y)),se("click",u,h),r(n,u)},Ye=n=>{var u=jn(),D=l(u);ha(D,{class:"size-4"}),o(u),g(()=>u.disabled=e(E)||!e(p)),se("click",u,y),r(n,u)};m(pt,n=>{t.working&&e(E)&&t.via==="session"?n(ht):n(Ye,-1)})}o(ye);var rt=a(ye,2);{var dt=n=>{var u=Nn(),D=z(u,!0);g(()=>k(D,e(q))),r(n,u)},_t=n=>{var u=On(),D=a(l(u));o(u),g(()=>P(D,"href",e(N))),r(n,u)},ct=n=>{var u=$n();r(n,u)},Oe=n=>{var u=Ln(),D=z(u,!0);g(()=>k(D,e(x)?"Sent to Firstmate’s inbox. It reads it at its next turn, and its reply appears here.":"Firstmate runs in another terminal, so messages go to its inbox.")),r(n,u)};m(rt,n=>{e(q)?n(dt):e(N)?n(_t,1):xt.outgoing&&!e(p)?n(ct,2):t.via==="inbox"&&n(Oe,3)})}o(ve),g(()=>{Ne(ye,1,`flex items-end gap-2 rounded-lg border border-input bg-card p-2 pl-4 shadow-sm focus-within:ring-2 focus-within:ring-ring/30 ${e(p)?"":"opacity-70"}`),P(le,"contenteditable",e(p)?"true":"false"),P(le,"tabindex",e(p)?0:-1),P(le,"aria-disabled",!e(p)),P(le,"data-placeholder",e(U)),Ne(le,1,`editor no-scrollbar max-h-48 min-h-10 flex-1 overflow-y-auto py-2 text-base leading-relaxed whitespace-pre-wrap outline-none ${e(E)?"is-empty":""} ${e(p)?"":"cursor-not-allowed"}`,"svelte-w61w6e")}),se("input",le,T),se("keyup",le,n=>{["ArrowDown","ArrowUp","Enter","Tab","Escape"].includes(n.key)||T()}),se("click",le,T),qt("blur",le,()=>setTimeout(()=>A(M,null),100)),se("keydown",le,i),qt("paste",le,f),r(_,ve),Tt()}It(["mousedown","input","keyup","click","keydown"]);var Pn=s("<span><!> </span>"),Hn=s('<div class="mb-3 flex flex-wrap gap-1.5 text-xs"></div>'),Wn=s('<p class="mb-3 text-base whitespace-pre-line"> </p>'),Yn=s('<button class="flex w-full cursor-pointer items-center gap-3 rounded-lg border border-dashed bg-background px-3 py-2 text-left text-sm text-muted-foreground hover:border-sea/60"><!> <span>Type an answer in Firstmate’s terminal</span></button>'),Kn=s('<span class="block text-xs text-muted-foreground"> </span>'),Gn=s('<button><span class="tabular w-4 shrink-0 text-muted-foreground"><!></span> <span class="min-w-0"><span class="font-medium"> </span> <!></span></button>'),Un=s('<button class="cursor-pointer rounded-lg bg-foreground px-3 py-1.5 font-medium text-background disabled:opacity-40">Done</button>'),Vn=s('<p class="w-full text-danger" role="alert"> </p>'),Zn=s('<div class="max-w-[80ch] rounded-lg border border-t-2 border-t-sea bg-card p-4" role="group" aria-label="Firstmate is asking you"><p class="mb-2 flex items-center gap-2 font-display text-[1.15rem] font-medium"><!>Firstmate is asking you <!></p> <!> <!> <div class="flex flex-col gap-1.5"></div> <div class="mt-3 flex flex-wrap items-center gap-3 text-sm"><!> <button class="flex cursor-pointer items-center gap-1.5 text-muted-foreground hover:text-foreground"><!>Answer in the terminal instead</button> <!></div></div>');function Jn(_,t){St(t,!0);let p=be(!1),x=be(null);async function N(h){A(p,!0),A(x,null);const i=await dr("/api/firstmate/pick",t.token,{signature:t.picker.signature,...h});A(p,!1),i.ok||A(x,i.error,!0)}var S=Zn(),E=l(S),Y=l(E);_a(Y,{class:"size-4 text-sea","aria-hidden":"true"});var q=a(Y,2);{var M=h=>{yt(h,{class:"size-4 animate-spin text-sea","aria-label":"Sending"})};m(q,h=>{e(p)&&h(M)})}o(E);var B=a(E,2);{var ke=h=>{var i=Hn();Me(i,21,()=>t.picker.tabs,f=>f.label,(f,U)=>{var ve=Pn(),we=l(ve);{var V=le=>{Ht(le,{class:"size-3","aria-label":"Answered"})};m(we,le=>{e(U).done&&le(V)})}var ye=a(we,1,!0);o(ve),g(()=>{Ne(ve,1,`flex items-center gap-1 rounded border px-1.5 py-0.5 ${e(U).done?"text-muted-foreground":"border-sea/50 text-foreground"}`),k(ye,e(U).label)}),r(f,ve)}),o(i),r(h,i)};m(B,h=>{t.picker.tabs.length>1&&h(ke)})}var Q=a(B,2);{var H=h=>{var i=Wn(),f=z(i,!0);g(()=>k(f,t.picker.title)),r(h,i)};m(Q,h=>{t.picker.title&&h(H)})}var T=a(Q,2);Me(T,21,()=>t.picker.options,h=>h.n,(h,i)=>{var f=Ft(),U=re(f);{var ve=V=>{var ye=Yn(),le=l(ye);$t(le,{class:"size-4 shrink-0","aria-hidden":"true"}),We(2),o(ye),se("click",ye,function(...tt){t.onterminal?.apply(this,tt)}),r(V,ye)},we=V=>{var ye=Gn(),le=l(ye),tt=l(le);{var pt=Oe=>{Ht(Oe,{class:"size-4 text-sea","aria-label":"Chosen"})},ht=Oe=>{var n=Nt();g(()=>k(n,e(i).n)),r(Oe,n)};m(tt,Oe=>{e(i).checked?Oe(pt):Oe(ht,-1)})}o(le);var Ye=a(le,2),rt=l(Ye),dt=z(rt,!0),_t=a(rt,2);{var ct=Oe=>{var n=Kn(),u=z(n,!0);g(()=>k(u,e(i).description)),r(Oe,n)};m(_t,Oe=>{e(i).description&&Oe(ct)})}o(Ye),o(ye),g(()=>{Ne(ye,1,`flex w-full cursor-pointer items-start gap-3 rounded-lg border px-3 py-2 text-left text-sm transition-colors disabled:cursor-default ${e(i).checked?"border-sea bg-sea/10":"bg-background hover:border-sea/60"}`),ye.disabled=e(p),P(ye,"aria-pressed",e(i).checked===null?void 0:e(i).checked),k(dt,e(i).label)}),se("click",ye,()=>N({press:e(i).n})),r(V,ye)};m(U,V=>{e(i).freeText?V(ve):V(we,-1)})}r(h,f)}),o(T);var R=a(T,2),Ee=l(R);{var oe=h=>{var i=Un();g(f=>i.disabled=f,[()=>e(p)||!t.picker.options.some(f=>f.checked)]),se("click",i,()=>N({submit:!0})),r(h,i)};m(Ee,h=>{t.picker.multiSelect&&t.picker.submitMoves!==null&&h(oe)})}var ie=a(Ee,2),ae=l(ie);$t(ae,{class:"size-4","aria-hidden":"true"}),We(),o(ie);var G=a(ie,2);{var y=h=>{var i=Vn(),f=z(i,!0);g(()=>k(f,e(x))),r(h,i)};m(G,h=>{e(x)&&h(y)})}o(R),o(S),se("click",ie,function(...h){t.onterminal?.apply(this,h)}),r(_,S),Tt()}It(["click"]);var Xn=s('<p class="flex items-start gap-2"><!> <span> <span class="font-medium text-foreground"> </span></span></p>'),Qn=s('<div class="flex max-w-[80ch] flex-col gap-1 text-sm text-muted-foreground"></div>');function es(_,t){St(t,!0);var p=Ft(),x=re(p);{var N=S=>{var E=Qn();Me(E,21,()=>t.part.questions,Y=>Y.question,(Y,q)=>{var M=Xn(),B=l(M);nr(B,{class:"mt-0.5 size-4 shrink-0 text-success","aria-hidden":"true"});var ke=a(B,2),Q=l(ke),H=a(Q),T=z(H,!0);o(ke),o(M),g(()=>{k(Q,`${e(q).question??""} `),k(T,t.part.answers[e(q).question]??"No answer")}),r(Y,M)}),o(E),r(S,E)};m(x,S=>{t.part.answers&&S(N)})}r(_,p),Tt()}const ts="wheelhouse.terminal.v1",rs="wheelhouse.token.",as="/api/firstmate/terminal",Cr={detached:4e3,shutdown:4002};var ns=s("<!> <span>Connecting to the session…</span>",1),ss=s("<!>Reconnect",1),os=s('<span class="min-w-0 flex-1"> </span> <!>',1),is=s('<div class="absolute inset-x-0 bottom-0 flex flex-wrap items-center gap-3 border-t border-white/10 bg-console/95 px-4 py-3 text-sm text-slate-300" role="status"><!></div>'),ls=s('<div class="relative flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-console"><div class="session-terminal min-h-0 flex-1 font-mono svelte-v7bqws" aria-label="Firstmate’s terminal"></div> <!></div>');function ds(_,t){St(t,!0);let p,x=be("connecting"),N=be(null),S=be(()=>{});const E=13,Y=()=>{const Q=getComputedStyle(document.documentElement).getPropertyValue("--console").trim()||"#0b1120";return{background:Q,foreground:"#cbd5e1",cursor:"#cbd5e1",cursorAccent:Q,selectionBackground:"#334155",scrollbarSliderBackground:"transparent",scrollbarSliderHoverBackground:"transparent",scrollbarSliderActiveBackground:"transparent"}};ir(()=>{let Q=!1,H=null,T=null,R=null,Ee=null,oe=null;const ie=G=>{H?.readyState===WebSocket.OPEN&&H.send(JSON.stringify(G))},ae=()=>{if(!T||Q)return;const G=T;H?.close(),G.reset(),A(x,"connecting"),A(N,null);const h=`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}${as}?cols=${G.cols}&rows=${G.rows}`,i=new WebSocket(h,[ts,rs+t.token]);i.binaryType="arraybuffer",H=i,i.onopen=()=>{A(x,"open"),ie({type:"resize",cols:G.cols,rows:G.rows}),G.focus()},i.onmessage=f=>{f.data instanceof ArrayBuffer&&G.write(new Uint8Array(f.data))},i.onclose=f=>{H!==i||Q||(A(x,"closed"),A(N,f.code===Cr.detached?"The session ended or was detached.":f.code===Cr.shutdown?"Wheelhouse closed.":f.reason||"Wheelhouse refused or lost the connection. If the session is still running, reconnect; if Wheelhouse restarted, reload the page.",!0),t.onclosed?.())}};return A(S,ae),(async()=>{const[{Terminal:G},{FitAddon:y}]=await Promise.all([wr(()=>import("../chunks/B-qIQCd3.js"),[],import.meta.url),wr(()=>import("../chunks/DX4qG4td.js"),[],import.meta.url)]),h=getComputedStyle(p).fontFamily;await document.fonts?.load(`${E}px ${h}`).catch(()=>{}),!Q&&(T=new G({fontFamily:h,fontSize:E,lineHeight:1.15,cursorBlink:!0,scrollback:0,macOptionClickForcesSelection:!0,allowProposedApi:!1,theme:Y()}),R=new y,T.loadAddon(R),T.open(p),R.fit(),T.onData(i=>ie({type:"input",data:i})),T.onBinary(i=>ie({type:"input",data:i})),T.onResize(({cols:i,rows:f})=>ie({type:"resize",cols:i,rows:f})),T.attachCustomKeyEventHandler(i=>i.key==="Enter"&&i.shiftKey&&!i.altKey&&!i.ctrlKey&&!i.metaKey?(i.type==="keydown"&&ie({type:"input",data:"\x1B\r"}),!1):!0),Ee=new ResizeObserver(()=>R?.fit()),Ee.observe(p),oe=new MutationObserver(()=>{T&&(T.options.theme=Y())}),oe.observe(document.documentElement,{attributeFilter:["class"]}),ae())})(),()=>{Q=!0,Ee?.disconnect(),oe?.disconnect(),H?.close(),T?.dispose()}});var q=ls(),M=l(q);Bt(M,Q=>p=Q,()=>p);var B=a(M,2);{var ke=Q=>{var H=is(),T=l(H);{var R=oe=>{var ie=ns(),ae=re(ie);yt(ae,{class:"size-4 animate-spin","aria-hidden":"true"}),We(2),r(oe,ie)},Ee=oe=>{var ie=os(),ae=re(ie),G=z(ae,!0),y=a(ae,2);ba(y,{size:"sm",variant:"secondary",onclick:()=>e(S)(),children:(h,i)=>{var f=ss(),U=re(f);Or(U,{}),We(),r(h,f)},$$slots:{default:!0}}),g(()=>k(G,e(N))),r(oe,ie)};m(T,oe=>{e(x)==="connecting"?oe(R):oe(Ee,-1)})}o(H),r(Q,H)};m(B,Q=>{e(x)!=="open"&&Q(ke)})}o(q),r(_,q),Tt()}var cs=s('<span class="hidden truncate text-muted-foreground sm:inline"> </span>'),us=s('<span class="inline-flex items-center gap-1"><!>checking now</span>'),vs=s("<!>Checking now",1),fs=s("<!>All quiet",1),ms=s("<!>Reported back in the chat",1),ps=s('<span class="ml-auto text-muted-foreground"> </span>'),gs=s('<li class="flex items-center gap-2"><span class="tabular w-11 shrink-0 text-muted-foreground"> </span> <!> <!></li>'),xs=s('<ul class="flex flex-col gap-1"></ul>'),hs=s('<p class="text-muted-foreground">No background checks in this conversation yet.</p>'),_s=s('<div class="absolute top-full right-0 z-30 mt-2 w-72 rounded-xl border bg-popover p-3 text-xs shadow-lg" role="dialog" aria-label="Background checks"><div class="mb-2 flex items-center justify-between"><p class="font-medium">Background checks</p> <button class="cursor-pointer rounded p-0.5 text-muted-foreground hover:bg-muted" aria-label="Close"><!></button></div> <p class="mb-2 text-muted-foreground">Firstmate wakes when the crew report in. Quiet checks are kept out of the chat.</p> <!></div>'),bs=s('<button title="Firstmate’s own terminal, for anything the chat cannot show"><!></button>'),ks=s('<span class="absolute top-1.5 right-1.5 size-2 rounded-full bg-sea"></span>'),ws=s('<p class="text-xs text-muted-foreground">Earlier messages are not shown here; the full conversation is in Firstmate’s terminal.</p>'),ys=s('<p class="text-sm text-muted-foreground"> </p>'),zs=s('<p class="text-sm text-danger" role="alert"> </p>'),Ss=s('<button class="flex cursor-pointer items-center gap-2 rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background disabled:opacity-50"><!>Start Firstmate here</button> <p class="text-xs text-muted-foreground"> </p> <!>',1),Ts=s('<div class="my-8 flex max-w-md flex-col items-start gap-3"><p class="font-medium"> </p> <!> <!></div>'),As=s('<p class="py-20 text-sm text-muted-foreground"> </p>'),er=s('<span class="msg-gutter" aria-hidden="true"></span>'),Er=s('<span class="captain-avatar">C</span>'),Cs=s("<span>· sent while Firstmate was working</span>"),Es=s('<header class="msg-head"><span class="msg-name">You</span><time> </time> <!></header>'),Fs=s('<a class="mx-px inline-block rounded-md bg-sea/15 px-1.5 text-[0.875em] font-medium whitespace-nowrap text-sea no-underline hover:bg-sea/25"> </a>'),Ms=s('<article><!> <div class="min-w-0 flex-1"><!> <div></div></div></article>'),Rs=s('<pre class="no-scrollbar max-h-80 max-w-[80ch] overflow-auto rounded-lg bg-muted/60 p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground"> </pre>'),Ds=s('<div class="mt-2 w-full max-w-[80ch] rounded-lg border bg-card px-4 py-3 text-sm whitespace-pre-wrap text-muted-foreground"> </div>'),Is=s('<div class="flex flex-col items-start"><button class="-ml-3 flex max-w-full cursor-pointer items-center gap-2 rounded-full px-3 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"><!> <span class="truncate"> </span> <!></button> <!></div>'),js=s('<header class="msg-head"><span class="msg-name">Firstmate</span><time> </time></header>'),Ns=s('<div class="max-w-[80ch] rounded-xl border bg-card p-4" data-slot="bridge.card"><p class="font-medium"> </p> <div class="mt-2"><!></div></div>'),Os=s('<div class="chat-md bubble bubble-firstmate"></div> <!>',1),$s=s('<span class="text-xs text-muted-foreground">Stopped</span>'),Ls=s('<span class="text-xs text-muted-foreground"> </span>'),qs=s('<article><!> <div class="flex min-w-0 flex-1 flex-col gap-2"><!> <!> <!></div></article>'),Bs=s('<header class="msg-head"><span class="msg-name">You</span></header>'),Ps=s('<span class="mx-px inline-block rounded-md bg-sea/15 px-1.5 text-[0.875em] font-medium whitespace-nowrap text-sea"> </span>'),Hs=s('<!> <button class="ml-1 inline-flex cursor-pointer items-center gap-1 rounded px-1.5 py-0.5 font-medium text-foreground hover:bg-muted"><!>Retry</button> <button class="cursor-pointer rounded px-1.5 py-0.5 text-muted-foreground hover:bg-muted">Discard</button>',1),Ws=s("<!> ",1),Ys=s('<article><!> <div class="min-w-0 flex-1"><!> <div></div> <p role="status"><!></p></div></article>'),Ks=s('<div class="flex gap-1 py-1" aria-label="Firstmate is working" role="status"><span class="size-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-0.3s]"></span> <span class="size-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-0.15s]"></span> <span class="size-1.5 animate-bounce rounded-full bg-muted-foreground"></span></div>'),Gs=s('<button class="absolute bottom-3 left-1/2 flex -translate-x-1/2 cursor-pointer items-center gap-1.5 rounded-full border bg-background px-3 py-1.5 text-xs shadow-sm transition-colors hover:bg-muted"><!>Latest</button>'),Us=s('<span class="ml-auto hidden text-xs text-muted-foreground sm:inline"> </span>'),Vs=s('<div><div class="flex h-10 shrink-0 items-center gap-2 px-4 text-sm sm:px-6 lg:px-10"><!> <span class="font-medium">Firstmate’s terminal</span> <span class="hidden text-muted-foreground sm:inline">· for anything the chat cannot show</span> <!> <button><!></button> <button class="-mr-2 flex size-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground" aria-label="Hide the terminal"><!></button></div> <div class="flex min-h-0 flex-1 flex-col px-2 pb-2"><!></div></div>'),Zs=s('<section class="relative flex min-h-0 min-w-0 flex-1 flex-col bg-panel" aria-label="Firstmate"><div class="border-b"><div class="flex h-11 items-center gap-3 px-4 text-sm sm:px-6 lg:px-10"><span class="font-medium">Firstmate</span> <!> <div class="relative ml-auto shrink-0"><button class="flex cursor-pointer items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs transition-colors hover:bg-muted" aria-haspopup="dialog"><!> <span class="font-medium"> </span> <span class="hidden text-muted-foreground md:inline">· <!></span></button> <!></div> <span class="hidden shrink-0 items-center gap-2 text-muted-foreground md:flex"><span aria-hidden="true"></span> </span> <!> <button class="relative -mr-2 flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"><!> <!></button></div></div> <div class="relative min-h-0 flex-1"><div class="no-scrollbar h-full overflow-y-auto"><div class="flex flex-col gap-6 px-4 pt-8 pb-10 sm:px-6 lg:px-10"><!> <!> <!> <!> <!></div></div> <!> <!></div> <div class="bg-panel px-4 pb-4 sm:px-6 lg:px-10"><!></div></section>');function Js(_,t){St(t,!0);let p=zt(t,"waiting",3,0),x=zt(t,"pluginEntries",19,()=>[]);const N={success:nr,sea:qr,warning:va,danger:Wt},S={success:"text-success",sea:"text-sea",warning:"text-warning",danger:"text-danger"},E=w(()=>st.session),Y=w(()=>st.chat),q=w(()=>e(Y).items),M=w(()=>e(q)[e(q).length-1]),B=w(()=>e(E)?.busy===!0||e(M)?.kind==="turn"&&!e(M).done&&!e(M).interrupted),ke=w(()=>e(E)?.canSend?e(E).picker:null),Q=w(()=>!!e(ke)),H=w(()=>e(Y).checks[e(Y).checks.length-1]),T=w(()=>!!e(H)&&!e(H).done),R=w(()=>e(Y).checks.slice(-8).reverse()),Ee=w(()=>N[t.health.tone]),oe=w(()=>e(E)?.canSend===!0),ie=w(()=>e(oe)?"session":e(E)?.state==="external"&&Zr()?.messaging.available?"inbox":null);let ae=be(!1),G=be(!1),y=be(!1),h=be(null),i=be(null);async function f(v){if(A(y,v,!0),!v)return hr(e(h));if(!e(h))return;const c=await ta(e(h),{keepEscape:!0});A(i,c.full?c.escapeKept?"hold":"press":null,!0)}Mt(()=>{const v=e(h);if(!v)return;const c=()=>{document.fullscreenElement!==v&&(A(i,null),A(y,!1))};return v.addEventListener("fullscreenchange",c),()=>{v.removeEventListener("fullscreenchange",c),hr(v)}});let U=rr({}),ve=be(!1),we=be(null),V=be(void 0),ye=be(!0);const le=()=>!e(V)||e(V).scrollHeight-e(V).scrollTop-e(V).clientHeight<80;let tt=!0;Kr(()=>{e(q).length,e(M),e(ke),st.pending.length,tt=le()}),Mt(()=>{e(q),e(ke),st.pending.length,st.resets,tt&&Ir().then(()=>e(V)?.scrollTo({top:e(V).scrollHeight}))});const pt=5*6e4;function ht(v){const c=e(q)[v-1],Z=e(q)[v];return!c||!Z||c.kind!==Z.kind||Z.kind!=="user"&&Z.kind!=="turn"?!1:Date.parse(Z.at)-Date.parse(c.at)<=pt}const Ye=v=>new Date(v).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),rt=w(()=>st.connection==="lost"?{dot:"bg-danger",label:"Reconnecting"}:e(E)?e(E).state==="external"?{dot:"bg-muted-foreground",label:"Read-only"}:e(E).state==="starting"?{dot:"animate-pulse bg-sea",label:"Starting"}:e(E).state!=="ours"?{dot:"bg-muted-foreground",label:"Not running"}:e(Q)?{dot:"bg-sea",label:"Asking you"}:e(B)?{dot:"animate-pulse bg-sea",label:"Working"}:{dot:"bg-success",label:"Waiting for you"}:{dot:"bg-muted-foreground",label:"Connecting"});async function dt(){A(ve,!0),A(we,null);const v=await dr("/api/firstmate/start",t.token);A(ve,!1),v.ok||A(we,v.error,!0)}const _t=(v,c)=>e(B)&&v===e(M)&&v.kind==="turn"&&c===v.parts.length-1;var ct=Zs(),Oe=l(ct),n=l(Oe),u=a(l(n),2);{var D=v=>{var c=cs(),Z=z(c,!0);g(()=>k(Z,e(Y).title)),r(v,c)};m(u,v=>{e(Y).title&&v(D)})}var O=a(u,2),xe=l(O),he=l(xe);cr(he,()=>e(Ee),(v,c)=>{c(v,{get class(){return`size-3.5 ${S[t.health.tone]??""}`},"aria-hidden":"true"})});var Te=a(he,2),Qe=z(Te,!0),ot=a(Te,2),Ke=a(l(ot));{var gt=v=>{var c=us(),Z=l(c);yt(Z,{class:"size-3 animate-spin","aria-hidden":"true"}),We(),o(c),r(v,c)},bt=v=>{var c=Nt();g(Z=>k(c,`checked ${Z??""}`),[()=>$r(e(H).at,t.now)]),r(v,c)},Je=v=>{var c=Nt("no checks yet");r(v,c)};m(Ke,v=>{e(T)?v(gt):e(H)?v(bt,1):v(Je,-1)})}o(ot),o(xe);var Re=a(xe,2);{var d=v=>{var c=_s(),Z=l(c),$e=a(l(Z),2),F=l($e);sr(F,{class:"size-3.5"}),o($e),o(Z);var L=a(Z,4);{var ne=Fe=>{var Be=xs();Me(Be,21,()=>e(R),me=>me.id,(me,te)=>{var Se=gs(),Ze=l(Se),Ce=z(Ze,!0),He=a(Ze,2);{var J=ge=>{var j=vs(),K=re(j);yt(K,{class:"size-3 animate-spin text-sea","aria-hidden":"true"}),We(),r(ge,j)},ue=ge=>{var j=fs(),K=re(j);nr(K,{class:"size-3 text-success","aria-hidden":"true"}),We(),r(ge,j)},je=ge=>{var j=ms(),K=re(j);yr(K,{class:"size-3 text-sea","aria-hidden":"true"}),We(),r(ge,j)};m(He,ge=>{e(te).done?e(te).outcome==="quiet"?ge(ue,1):ge(je,-1):ge(J)})}var X=a(He,2);{var pe=ge=>{var j=ps(),K=z(j,!0);g(et=>k(K,et),[()=>ar(e(te).durationMs)]),r(ge,j)};m(X,ge=>{e(te).durationMs&&ge(pe)})}o(Se),g(ge=>k(Ce,ge),[()=>Ye(e(te).at)]),r(me,Se)}),o(Be),r(Fe,Be)},Xe=Fe=>{var Be=hs();r(Fe,Be)};m(L,Fe=>{e(R).length?Fe(ne):Fe(Xe,-1)})}o(c),se("click",$e,()=>A(ae,!1)),r(v,c)};m(Re,v=>{e(ae)&&v(d)})}o(O);var b=a(O,2),$=l(b),fe=a($,1,!0);o(b);var Ae=a(b,2);{var qe=v=>{var c=bs(),Z=l(c);$t(Z,{class:"size-4"}),o(c),g(()=>{Ne(c,1,`flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-md transition-colors hover:bg-muted ${e(G)?"text-foreground":"text-muted-foreground"}`),P(c,"aria-label",e(G)?"Hide Firstmate’s terminal":"Show Firstmate’s terminal"),P(c,"aria-pressed",e(G))}),se("click",c,()=>A(G,!e(G))),r(v,c)};m(Ae,v=>{e(oe)&&v(qe)})}var ee=a(Ae,2),I=l(ee);Ga(I,{class:"size-4"});var C=a(I,2);{var W=v=>{var c=ks();g(()=>P(c,"aria-label",`${p()??""} waiting on you`)),r(v,c)};m(C,v=>{p()&&!t.railOpen&&v(W)})}o(ee),o(n),o(Oe);var de=a(Oe,2),De=l(de),_e=l(De),ce=l(_e);{var ze=v=>{var c=ws();r(v,c)};m(ce,v=>{st.source?.truncated&&v(ze)})}var Ie=a(ce,2);{var Ge=v=>{var c=Ts(),Z=l(c),$e=z(Z,!0),F=a(Z,2);{var L=Fe=>{var Be=ys(),me=z(Be,!0);g(()=>k(me,e(E).reason)),r(Fe,Be)};m(F,Fe=>{e(E).reason&&e(E).state!=="starting"&&Fe(L)})}var ne=a(F,2);{var Xe=Fe=>{var Be=Ss(),me=re(Be),te=l(me);{var Se=ue=>{yt(ue,{class:"size-4 animate-spin","aria-hidden":"true"})};m(te,ue=>{e(ve)&&ue(Se)})}We(),o(me);var Ze=a(me,2),Ce=z(Ze),He=a(Ze,2);{var J=ue=>{var je=zs(),X=z(je,!0);g(()=>k(X,e(we))),r(ue,je)};m(He,ue=>{e(we)&&ue(J)})}g(()=>{me.disabled=e(ve),k(Ce,`It runs in Firstmate’s checkout${e(E).skipPermissions?" with --dangerously-skip-permissions":""}, inside a tmux session that keeps going when you close Wheelhouse.`)}),se("click",me,dt),r(Fe,Be)};m(ne,Fe=>{e(E).state==="none"&&Fe(Xe)})}o(c),g(()=>k($e,e(E).state==="starting"?"Starting Firstmate…":"Firstmate is not running")),r(v,c)},Ue=v=>{var c=As(),Z=z(c,!0);g(()=>k(Z,e(E)?"No messages yet. Say hello to Firstmate.":"Reading the conversation…")),r(v,c)};m(Ie,v=>{e(E)&&e(E).state!=="ours"&&e(E).state!=="external"?v(Ge):e(q).length||v(Ue,1)})}var Ve=a(Ie,2);Me(Ve,19,()=>e(q),v=>v.id,(v,c,Z)=>{const $e=w(()=>ht(e(Z)));var F=Ft(),L=re(F);{var ne=me=>{var te=Ms(),Se=l(te);{var Ze=X=>{var pe=er();r(X,pe)},Ce=X=>{var pe=Er();r(X,pe)};m(Se,X=>{e($e)?X(Ze):X(Ce,-1)})}var He=a(Se,2),J=l(He);{var ue=X=>{var pe=Es(),ge=a(l(pe)),j=z(ge,!0),K=a(ge,2);{var et=Le=>{var nt=Cs();r(Le,nt)};m(K,Le=>{e(c).queued&&Le(et)})}o(pe),g(Le=>{P(ge,"datetime",e(c).at),k(j,Le)},[()=>Ye(e(c).at)]),r(X,pe)};m(J,X=>{e($e)||X(ue)})}var je=a(J,2);Me(je,21,()=>Ar(e(c).text),pr,(X,pe)=>{var ge=Ft(),j=re(ge);{var K=Le=>{var nt=Nt();g(()=>k(nt,e(pe))),r(Le,nt)},et=Le=>{var nt=Fs(),Yt=z(nt,!0);g((Kt,Gt)=>{P(nt,"href",`/tasks/${Kt??""}`),P(nt,"title",e(pe).url??e(pe).title),k(Yt,Gt)},[()=>encodeURIComponent(e(pe).id),()=>or(e(pe))]),r(Le,nt)};m(j,Le=>{typeof e(pe)=="string"?Le(K):Le(et,-1)})}r(X,ge)}),o(je),o(He),o(te),g(X=>{Ne(te,1,`msg msg-captain ${e($e)?"msg-grouped":""}`),P(te,"aria-label",`You, ${X??""}`),Ne(je,1,`bubble bubble-captain ${e(c).command?"font-mono text-sm":""}`)},[()=>Ye(e(c).at)]),r(me,te)},Xe=me=>{var te=Rs(),Se=z(te,!0);g(()=>k(Se,e(c).text)),r(me,te)},Fe=me=>{var te=Is(),Se=l(te),Ze=l(Se);yr(Ze,{class:"size-3.5 shrink-0","aria-hidden":"true"});var Ce=a(Ze,2),He=z(Ce),J=a(Ce,2);{let X=w(()=>U[e(c).id]?"rotate-90":"");Pt(J,{get class(){return`size-3.5 shrink-0 transition-transform ${e(X)??""}`},"aria-hidden":"true"})}o(Se);var ue=a(Se,2);{var je=X=>{var pe=Ds(),ge=z(pe,!0);g(()=>k(ge,e(c).detail)),r(X,pe)};m(ue,X=>{U[e(c).id]&&X(je)})}o(te),g(X=>{P(Se,"aria-expanded",!!U[e(c).id]),k(He,`${e(c).title??""} · ${X??""}`)},[()=>Ye(e(c).at)]),se("click",Se,()=>U[e(c).id]=!U[e(c).id]),r(me,te)},Be=me=>{var te=qs(),Se=l(te);{var Ze=j=>{var K=er();r(j,K)},Ce=j=>{An(j,{class:"size-8"})};m(Se,j=>{e($e)?j(Ze):j(Ce,-1)})}var He=a(Se,2),J=l(He);{var ue=j=>{var K=js(),et=a(l(K)),Le=z(et,!0);o(K),g(nt=>{P(et,"datetime",e(c).at),k(Le,nt)},[()=>Ye(e(c).at)]),r(j,K)};m(J,j=>{e($e)||j(ue)})}var je=a(J,2);Me(je,19,()=>e(c).parts,j=>j.id,(j,K,et)=>{var Le=Ft(),nt=re(Le);{var Yt=wt=>{var Lt=Os(),Ut=re(Lt);Qr(Ut,()=>ea(e(K).text),!0),o(Ut);var Hr=a(Ut,2);Me(Hr,17,()=>sa(e(K).text,x()),({entry:Vt,card:Zt})=>`${Vt.key}:${Zt.key}`,(Vt,Zt)=>{let ur=()=>e(Zt).card;var Jt=Ns(),vr=l(Jt),Wr=z(vr,!0),fr=a(vr,2),Yr=l(fr);la(Yr,{get blocks(){return ur().blocks}}),o(fr),o(Jt),g(()=>k(Wr,ur().title)),r(Vt,Jt)}),r(wt,Lt)},Kt=wt=>{es(wt,{get part(){return e(K)}})},Gt=wt=>{{let Lt=w(()=>_t(e(c),e(et)));yn(wt,{get steps(){return e(K).steps},get live(){return e(Lt)}})}};m(nt,wt=>{e(K).kind==="text"?wt(Yt):e(K).kind==="question"?wt(Kt,1):wt(Gt,-1)})}r(j,Le)});var X=a(je,2);{var pe=j=>{var K=$s();r(j,K)},ge=j=>{var K=Ls(),et=z(K);g(Le=>k(et,`Worked for ${Le??""}`),[()=>ar(e(c).durationMs)]),r(j,K)};m(X,j=>{e(c).interrupted?j(pe):e(c).done&&e(c).durationMs&&j(ge,1)})}o(He),o(te),g(j=>{Ne(te,1,`msg msg-firstmate ${e($e)?"msg-grouped":""}`),P(te,"aria-label",`Firstmate, ${j??""}`)},[()=>Ye(e(c).at)]),r(me,te)};m(L,me=>{e(c).kind==="user"?me(ne):e(c).kind==="output"?me(Xe,1):e(c).kind==="notice"?me(Fe,2):me(Be,-1)})}r(v,F)});var Pe=a(Ve,2);Me(Pe,19,()=>st.pending,v=>v.id,(v,c,Z)=>{const $e=w(()=>e(Z)>0||e(M)?.kind==="user");var F=Ys(),L=l(F);{var ne=J=>{var ue=er();r(J,ue)},Xe=J=>{var ue=Er();r(J,ue)};m(L,J=>{e($e)?J(ne):J(Xe,-1)})}var Fe=a(L,2),Be=l(Fe);{var me=J=>{var ue=Bs();r(J,ue)};m(Be,J=>{e($e)||J(me)})}var te=a(Be,2);Me(te,21,()=>Ar(e(c).text),pr,(J,ue)=>{var je=Ft(),X=re(je);{var pe=j=>{var K=Nt();g(()=>k(K,e(ue))),r(j,K)},ge=j=>{var K=Ps(),et=z(K,!0);g(Le=>k(et,Le),[()=>or(e(ue))]),r(j,K)};m(X,j=>{typeof e(ue)=="string"?j(pe):j(ge,-1)})}r(J,je)}),o(te);var Se=a(te,2),Ze=l(Se);{var Ce=J=>{var ue=Hs(),je=re(ue);Wt(je,{class:"size-3.5","aria-hidden":"true"});var X=a(je),pe=a(X),ge=l(pe);Or(ge,{class:"size-3","aria-hidden":"true"}),We(),o(pe);var j=a(pe,2);g(K=>k(X,`${K??""} `),[()=>Xt(e(c))]),se("click",pe,()=>st.retry(e(c).id,t.token,e(B)&&!e(Q))),se("click",j,()=>st.dismiss(e(c).id)),r(J,ue)},He=J=>{var ue=Ws(),je=re(ue);yt(je,{class:"size-3 animate-spin","aria-hidden":"true"});var X=a(je,1,!0);g(pe=>k(X,pe),[()=>Xt(e(c))]),r(J,ue)};m(Ze,J=>{e(c).state==="failed"?J(Ce):J(He,-1)})}o(Se),o(Fe),o(F),g(J=>{Ne(F,1,`msg msg-captain ${e($e)?"msg-grouped":""}`),P(F,"data-pending",e(c).state),P(F,"aria-label",`You, ${J??""}`),Ne(te,1,`bubble bubble-captain border-dashed ${e(c).state==="failed"?"border-danger/60":"opacity-60"}`),Ne(Se,1,`mt-1.5 flex flex-wrap items-center gap-1.5 text-xs ${e(c).state==="failed"?"text-danger":"text-muted-foreground"}`)},[()=>Xt(e(c))]),r(v,F)});var at=a(Pe,2);{var it=v=>{Jn(v,{get picker(){return e(ke)},get token(){return t.token},onterminal:()=>A(G,!0)})},lt=v=>{var c=Ks();r(v,c)};m(at,v=>{e(ke)?v(it):e(B)&&v(lt,1)})}o(_e),o(De),Bt(De,v=>A(V,v),()=>e(V));var At=a(De,2);{var Ct=v=>{var c=Gs(),Z=l(c);wa(Z,{class:"size-3.5","aria-hidden":"true"}),We(),o(c),se("click",c,()=>e(V)?.scrollTo({top:e(V).scrollHeight,behavior:"smooth"})),r(v,c)};m(At,v=>{e(ye)||v(Ct)})}var ut=a(At,2);{var kt=v=>{var c=Vs(),Z=l(c),$e=l(Z);$t($e,{class:"size-4 text-muted-foreground","aria-hidden":"true"});var F=a($e,6);{var L=Ce=>{var He=Us(),J=z(He);g(()=>k(J,`${e(i)==="hold"?"Hold Esc":"Esc"} to leave full screen`)),r(Ce,He)};m(F,Ce=>{e(y)&&e(i)&&Ce(L)})}var ne=a(F,2),Xe=l(ne);{var Fe=Ce=>{Ya(Ce,{class:"size-4"})},Be=Ce=>{ra(Ce,{class:"size-4"})};m(Xe,Ce=>{e(y)?Ce(Fe):Ce(Be,-1)})}o(ne);var me=a(ne,2),te=l(me);sr(te,{class:"size-4"}),o(me),o(Z);var Se=a(Z,2),Ze=l(Se);ds(Ze,{get token(){return t.token}}),o(Se),o(c),Bt(c,Ce=>A(h,Ce),()=>e(h)),g(()=>{Ne(c,1,`${e(y)?"fixed inset-0 z-50":"absolute inset-x-0 bottom-0 z-20 h-[min(70%,36rem)] border-t shadow-lg"} flex flex-col bg-panel`),P(c,"data-firstmate-terminal",e(y)?"full":"docked"),Ne(ne,1,`${e(y)&&e(i)?"sm:ml-2":""} ml-auto flex size-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground`),P(ne,"aria-label",e(y)?"Restore the terminal":"Open the terminal full screen"),P(ne,"title",e(y)?"Restore":"Full screen")}),se("click",ne,()=>f(!e(y))),se("click",me,()=>{f(!1),A(G,!1)}),r(v,c)};m(ut,v=>{e(G)&&e(oe)&&v(kt)})}o(de);var Et=a(de,2),Rt=l(Et);{let v=w(()=>e(E)?.reason??null),c=w(()=>e(B)&&!e(Q));Bn(Rt,{get via(){return e(ie)},get reason(){return e(v)},get working(){return e(c)},get token(){return t.token},get commands(){return st.commands}})}o(Et),o(ct),g(()=>{P(xe,"aria-expanded",e(ae)),k(Qe,t.health.label),Ne($,1,`size-2 rounded-full ${e(rt).dot??""}`),k(fe,e(rt).label),P(ee,"aria-label",t.railOpen?"Hide tasks and decisions":"Show tasks and decisions"),P(ee,"aria-pressed",t.railOpen)}),se("click",xe,()=>A(ae,!e(ae))),se("click",ee,function(...v){t.onToggleRail?.apply(this,v)}),qt("scroll",De,()=>A(ye,le(),!0)),r(_,ct),Tt()}It(["click"]);var Xs=s("<li><!></li>"),Qs=s('<a href="/inbox" class="-mt-4 mb-6 flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground"> <!></a>'),eo=s('<div class="mb-2 flex items-baseline justify-between gap-2"><h2 class="section-label flex-1">Decisions</h2> <a href="/inbox" class="text-xs text-muted-foreground hover:text-foreground"> </a></div> <ul class="mb-6 flex flex-col gap-2"></ul> <!>',1);function to(_,t){St(t,!0);let p=zt(t,"scope",3,null),x=zt(t,"limit",3,3);const N=w(()=>Dt.value),S=w(()=>Dt.shown(t.now).shown.filter(T=>!p()||T.projectId===p())),E=w(()=>e(S).filter(Sr)),Y=w(()=>e(S).filter(T=>Sr(T)||Dt.pending[T.id]).slice(0,x())),q=T=>!T||T==="unassigned"?null:t.projects.find(R=>R.id===T)?.name??T,M=w(()=>Ot.data.sessionToken??""),B=(T,R)=>Dt.answer(T,R,null,e(M));var ke=Ft(),Q=re(ke);{var H=T=>{var R=eo(),Ee=re(R),oe=a(l(Ee),2),ie=z(oe,!0);o(Ee);var ae=a(Ee,2);Me(ae,21,()=>e(Y),h=>h.id,(h,i)=>{var f=Xs(),U=l(f);{let ve=w(()=>q(e(i).projectId)),we=w(()=>Dt.errors[e(i).id]??null);Fa(U,{get card(){return e(i)},get project(){return e(ve)},compact:!0,get canAnswer(){return e(N).canAnswer},get error(){return e(we)},get now(){return t.now},onAnswer:V=>B(e(i),V),onLater:()=>Dt.later(e(i).id)})}o(f),r(h,f)}),o(ae);var G=a(ae,2);{var y=h=>{var i=Qs(),f=l(i),U=a(f);Br(U,{class:"size-3.5"}),o(i),g(()=>k(f,`${e(E).length-e(Y).length} more in Decisions `)),r(h,i)};m(G,h=>{e(E).length>e(Y).length&&h(y)})}g(()=>k(ie,e(E).length>e(Y).length?`All ${e(E).length}`:"Open")),r(T,R)};m(Q,T=>{e(N)?.available&&(e(E).length||e(Y).length)&&T(H)})}r(_,ke),Tt()}var ro=s('<span class="rounded-sm border px-1.5 text-[0.95rem] leading-[1.15rem] font-semibold tracking-[0.08em] text-muted-foreground [font-variant-caps:all-small-caps]"> </span>'),ao=s("<span><!> </span>"),no=s('<span class="flex items-center gap-1.5 text-xs text-muted-foreground"><span class="size-1.5 animate-pulse rounded-full bg-sea" aria-hidden="true"></span>Working</span>'),Fr=s('<p class="mt-0.5 line-clamp-2 text-xs leading-snug text-muted-foreground"> </p>'),so=s('<div class="mt-1.5"><!></div>'),oo=s('<a target="_blank" rel="noreferrer" class="mt-1 block text-xs break-all text-sea hover:underline"> </a>'),io=s('<div class="mt-2.5"><!></div>'),lo=s('<div class="mt-2"><!></div>'),co=s('<li><div class="flex flex-wrap items-center gap-1.5"><!> <!></div> <a class="mt-1.5 line-clamp-2 block text-sm leading-snug font-medium hover:underline"> </a> <!> <!> <!> <!> <!> <div class="mt-1.5 -mr-1.5 flex justify-end gap-0.5"><a class="flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground"><!>Open</a> <button class="flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground"><!>Chat about this</button></div></li>'),uo=s('<button class="-mr-2 ml-auto flex size-9 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground" aria-label="Close"><!></button>'),vo=s('<span class="mt-1.5 block text-xs text-warning"> </span>'),fo=s('<a href="/headroom" class="mb-6 block rounded-lg border bg-card px-3 py-2.5 hover:border-foreground/20"><span class="flex items-center gap-1.5 text-xs font-medium"><!>Claude headroom</span> <span class="mt-2 flex flex-col gap-1"></span> <!></a>'),mo=s('<a href="/headroom" class="mb-6 flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground"><!>Connect your Claude usage to see what is left</a>'),po=s("<span> </span>"),go=s('<button role="tab" aria-controls="rail-panel"> <!></button>'),xo=s('<ul class="mb-6 flex flex-col gap-2"><!> <!></ul>'),ho=s('<p class="mb-6 flex items-center gap-2 text-sm text-muted-foreground"><!>Nothing needs you right now.</p>'),_o=s('<p class="mb-2 text-xs text-muted-foreground"> </p>'),bo=s('<li><a class="block px-3 py-2.5 hover:bg-muted/60"><span class="flex items-center gap-2 text-xs"><!> <span class="shrink-0 font-medium whitespace-nowrap"> </span> <span class="min-w-0 truncate text-muted-foreground"> </span> <span class="ml-auto shrink-0 text-muted-foreground"> </span></span> <span class="mt-1 line-clamp-2 block text-xs text-muted-foreground"> </span></a></li>'),ko=s('<div class="mb-2 flex items-baseline justify-between gap-2"><h2 class="section-label flex-1">Decided for you</h2> <a href="/decisions" class="text-xs text-muted-foreground hover:text-foreground">See all</a></div> <!> <ul class="mb-6 divide-y rounded-lg border bg-card"></ul>',1),wo=s("<!> <!> <!>",1),yo=s('<ul class="mb-6 flex flex-col gap-2"></ul>'),zo=s('<p class="mb-6 text-sm text-muted-foreground">Nothing under way.</p>'),Mr=s('<span class="shrink-0 rounded border px-1 font-mono text-xs leading-4"> </span>'),So=s('<li><a class="flex items-center gap-2 rounded-md px-2 py-1.5 text-sm text-muted-foreground hover:bg-muted hover:text-foreground"><!><span class="truncate"> </span></a></li>'),To=s('<ul class="mb-4 flex flex-col"></ul>'),Ao=s('<button class="mb-2 flex w-full cursor-pointer items-center gap-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"> <!></button> <!>',1),Rr=s("<!> <!>",1),Co=s('<li><a class="flex items-center gap-2 rounded-md px-2 py-1.5 text-sm text-muted-foreground hover:bg-muted hover:text-foreground"><!><!><span class="truncate"> </span></a></li>'),Eo=s('<ul class="mb-6 flex flex-col"></ul>'),Fo=s('<p class="mb-6 text-sm text-muted-foreground">Nothing landed in the last day.</p>'),Mo=s('<div class="mb-2 flex items-baseline justify-between gap-2"><h2 class="section-label flex-1">Where time went today</h2> <a href="/time" class="text-xs text-muted-foreground hover:text-foreground">Details</a></div> <a href="/time" class="block rounded-lg border bg-card p-3 hover:border-foreground/20"><span class="block text-sm"><span class="font-medium"> </span> <span class="text-muted-foreground"> </span></span> <span class="mt-2 block"><!></span> <span class="mt-2 block text-xs text-muted-foreground"> </span></a>',1),Ro=s('<div data-slot="home.card"><!></div>'),Do=s('<aside class="flex h-full min-h-0 flex-col" aria-label="Tasks and decisions"><div class="flex h-11 shrink-0 items-center gap-2 border-b px-4 text-sm"><span class="font-display text-[1.15rem] font-medium">On deck</span> <!></div> <div class="no-scrollbar min-h-0 flex-1 overflow-y-auto px-4 py-4"><p class="mb-5 text-sm leading-relaxed text-muted-foreground"> </p> <!> <div class="sticky -top-4 z-10 -mx-4 mb-4 no-scrollbar flex justify-between gap-0.5 overflow-x-auto border-b bg-panel px-2.5" role="tablist" aria-label="On deck" tabindex="-1"></div> <div id="rail-panel" role="tabpanel"><!></div> <a href="/harbour" class="mt-4 flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground">Open the full board in Harbour <!></a></div></aside>');function Dr(_,t){St(t,!0);const p=(d,b=mr,$=mr)=>{const fe=w(()=>tt(b())),Ae=w(()=>le(b())),qe=w(()=>e(fe)?.icon);var ee=co(),I=l(ee),C=l(I);{var W=F=>{var L=ro(),ne=z(L,!0);g(Xe=>k(ne,Xe),[()=>we(b())]),r(F,L)},de=w(()=>we(b()));m(C,F=>{e(de)&&F(W)})}var De=a(C,2);{var _e=F=>{var L=ao(),ne=l(L);cr(ne,()=>e(qe),(Fe,Be)=>{Be(Fe,{class:"size-3","aria-hidden":"true"})});var Xe=a(ne,1,!0);o(L),g(()=>{Ne(L,1,`flex items-center gap-1 rounded px-1.5 text-xs leading-[1.15rem] font-medium ${pt[e(fe).tone]??""}`),k(Xe,e(fe).label)}),r(F,L)},ce=F=>{var L=no();r(F,L)};m(De,F=>{e(fe)&&e(qe)?F(_e):b().busy&&F(ce,1)})}o(I);var ze=a(I,2),Ie=z(ze,!0),Ge=a(ze,2);{var Ue=F=>{var L=Fr(),ne=z(L,!0);g(()=>k(ne,b().shortTitle)),r(F,L)};m(Ge,F=>{$()&&F(Ue)})}var Ve=a(Ge,2);{var Pe=F=>{var L=so(),ne=l(L);Ta(ne,{get pipeline(){return b().pipeline},get busy(){return b().busy},size:"rail"}),o(L),r(F,L)},at=w(()=>aa(b())),it=F=>{var L=Fr(),ne=z(L,!0);g(Xe=>k(ne,Xe),[()=>ye(b())]),r(F,L)};m(Ve,F=>{e(at)?F(Pe):$()||F(it,1)})}var lt=a(Ve,2);{var At=F=>{var L=oo(),ne=z(L,!0);g(()=>{P(L,"href",e(Ae)),k(ne,e(Ae))}),r(F,L)};m(lt,F=>{e(Ae)&&F(At)})}var Ct=a(lt,2);{var ut=F=>{var L=io(),ne=l(L);na(ne,{get task(){return b()}}),o(L),r(F,L)};m(Ct,F=>{b().passage.steps.length>1&&F(ut)})}var kt=a(Ct,2);{var Et=F=>{var L=lo(),ne=l(L);Aa(ne,{get eta(){return b().eta}}),o(L),r(F,L)};m(kt,F=>{b().eta&&F(Et)})}var Rt=a(kt,2),v=l(Rt),c=l(v);ka(c,{class:"size-3.5"}),We(),o(v);var Z=a(v,2),$e=l(Z);Da($e,{class:"size-3.5"}),We(),o(Z),o(Rt),o(ee),g((F,L)=>{Ne(ee,1,`rounded-lg border border-l-[3px] bg-card px-3 pt-2.5 pb-1.5 ${(e(fe)?ht[e(fe).tone]:"border-l-border")??""}`),P(ze,"href",F),k(Ie,$()??b().shortTitle),P(v,"href",L)},[()=>V(b()),()=>V(b())]),se("click",Z,()=>Ye(b())),r(d,ee)};let x=zt(t,"insights",3,null),N=zt(t,"scope",3,null),S=zt(t,"cards",19,()=>[]);const E=d=>!N()||d===N(),Y=w(()=>(x()?.decisions??[]).filter(d=>E(d.projectId))),q=w(()=>new Date(new Date(t.now).toDateString()).getTime()),M=w(()=>e(Y).filter(d=>Date.parse(d.decidedAt)>=e(q)).length),B=w(()=>za((x()?.today??[]).filter(d=>E(d.projectId)))),ke=w(()=>ya(e(B))),Q=w(()=>(x()?.today??[]).filter(d=>E(d.projectId)).length),H=d=>e(ke)?Math.round(e(B)[d]/e(ke)*100):0,T=w(()=>x()?.allowance??null),R=w(()=>Nr(t.tasks,t.now)),Ee=w(()=>new Set(e(R).stepFailed.map(d=>d.id))),oe=w(()=>e(R).stepFailed.filter(d=>!e(R).needsYou.includes(d))),ie=w(()=>[...e(R).waitingOnFirstmate,...e(R).underWay].filter(d=>!e(Ee).has(d.id)));let ae=be(!1);const G="wheelhouse-rail-tab",y=w(()=>[{id:"needs",label:"Needs you",count:e(oe).length+e(R).needsYou.length,strong:!0},{id:"under",label:"Under way",count:e(ie).length,strong:!1},{id:"landed",label:"Landed",count:e(R).landedRecent.length,strong:!1},...S().map(d=>({id:d.key,label:d.title,count:d.badge??0,strong:!1}))]);let h=be("needs");const i=w(()=>e(y).some(d=>d.id===e(h))?e(h):"needs"),f=w(()=>S().find(d=>d.key===e(i))??null);ir(()=>{try{A(h,localStorage.getItem(G)||"needs",!0)}catch{}});function U(d){A(h,d,!0);try{localStorage.setItem(G,d)}catch{}}function ve(d){if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();const b=e(y).findIndex(fe=>fe.id===e(i)),$=e(y)[(b+(d.key==="ArrowRight"?1:e(y).length-1))%e(y).length];U($.id),document.getElementById(`rail-tab-${$.id}`)?.focus()}const we=d=>t.projects.find(b=>b.id===d.projectId)?.name??(d.projectId==="unassigned"?null:d.projectId),V=d=>`/tasks/${encodeURIComponent(d.id)}`,ye=d=>d.activity?.text||d.summary||d.statusLabel,le=d=>d.attention?.url??d.pr?.url??null;function tt(d){const b=d.passage.steps[d.passage.current];return b?.failed?{label:`${b.label} failed`,icon:Wt,tone:"danger"}:d.status==="failed"?{label:"Failed",icon:Wt,tone:"danger"}:d.status==="blocked"?{label:"Stuck",icon:Ma,tone:"danger"}:d.status==="lost"||d.status==="unknown"?{label:"Not responding",icon:en,tone:"warning"}:d.attention?.owner==="captain"?d.attention.kind==="review"?{label:"Your review",icon:Lr,tone:"sea"}:{label:"Your call",icon:qr,tone:"sea"}:d.addressingReview?{label:"Addressing your review",icon:Ia,tone:"muted"}:d.status==="with-firstmate"?{label:"Firstmate deciding",icon:oa,tone:"muted"}:null}const pt={danger:"bg-danger/10 text-danger",warning:"bg-warning/10 text-warning",sea:"bg-sea/10 text-sea",muted:"bg-muted text-muted-foreground"},ht={danger:"border-l-danger",warning:"border-l-warning",sea:"border-l-sea",muted:"border-l-border"};function Ye(d){xt.pending={kind:"task",id:d.id,title:d.shortTitle,project:we(d),url:null},t.onChat?.()}var rt=Do(),dt=l(rt),_t=a(l(dt),2);{var ct=d=>{var b=uo(),$=l(b);sr($,{class:"size-4"}),o(b),se("click",b,function(...fe){t.onClose?.apply(this,fe)}),r(d,b)};m(_t,d=>{t.onClose&&d(ct)})}o(dt);var Oe=a(dt,2),n=l(Oe),u=z(n,!0),D=a(n,2);{var O=d=>{var b=fo(),$=l(b),fe=l($);zr(fe,{class:"size-3.5 text-muted-foreground","aria-hidden":"true"}),We(),o($);var Ae=a($,2);Me(Ae,21,()=>e(T).windows.slice(0,2),I=>I.id,(I,C)=>{Ca(I,{get w(){return e(C)},get now(){return t.now},compact:!0})}),o(Ae);var qe=a(Ae,2);{var ee=I=>{var C=vo(),W=z(C);g(()=>k(W,`${x().atRisk.label??""} may run out before it resets.`)),r(I,C)};m(qe,I=>{x()?.atRisk&&I(ee)})}o(b),r(d,b)},xe=d=>{var b=mo(),$=l(b);zr($,{class:"size-3.5","aria-hidden":"true"}),We(),o(b),r(d,b)};m(D,d=>{e(T)?.state==="ok"&&e(T).windows.length?d(O):e(T)?.state==="connect"&&d(xe,1)})}var he=a(D,2);Me(he,21,()=>e(y),d=>d.id,(d,b)=>{var $=go(),fe=l($,!0),Ae=a(fe);{var qe=ee=>{var I=po(),C=z(I,!0);g(()=>{Ne(I,1,`tabular rounded-full px-1.5 text-xs leading-4 font-semibold ${e(b).strong?"bg-sea text-white dark:text-slate-950":"bg-muted text-muted-foreground"}`),k(C,e(b).count)}),r(ee,I)};m(Ae,ee=>{e(b).count&&ee(qe)})}o($),g(()=>{P($,"id",`rail-tab-${e(b).id??""}`),P($,"aria-selected",e(i)===e(b).id),P($,"tabindex",e(i)===e(b).id?0:-1),Ne($,1,`-mb-px flex shrink-0 cursor-pointer items-center gap-1 border-b-2 px-1.5 py-2 text-[0.85rem] whitespace-nowrap transition-colors duration-200 focus-visible:outline-2 focus-visible:outline-ring ${e(i)===e(b).id?"border-brass font-medium text-foreground":"border-transparent text-muted-foreground hover:text-foreground"}`),k(fe,e(b).label)}),se("click",$,()=>U(e(b).id)),r(d,$)}),o(he);var Te=a(he,2),Qe=l(Te);{var ot=d=>{var b=wo(),$=re(b);to($,{get projects(){return t.projects},get now(){return t.now},get scope(){return N()}});var fe=a($,2);{var Ae=C=>{var W=xo(),de=l(W);Me(de,17,()=>e(oe),_e=>_e.id,(_e,ce)=>{p(_e,()=>e(ce),()=>`${e(ce).passage.steps[e(ce).passage.current].label} failed: ${e(ce).shortTitle}`)});var De=a(de,2);Me(De,17,()=>e(R).needsYou,_e=>_e.id,(_e,ce)=>{p(_e,()=>e(ce),()=>e(ce).attention?.text||null)}),o(W),r(C,W)},qe=C=>{var W=ho(),de=l(W);Ht(de,{class:"size-4 text-success"}),We(),o(W),r(C,W)};m(fe,C=>{e(oe).length||e(R).needsYou.length?C(Ae):C(qe,-1)})}var ee=a(fe,2);{var I=C=>{var W=ko(),de=a(re(W),2);{var De=ce=>{var ze=_o(),Ie=z(ze);g(()=>k(Ie,`Firstmate settled ${e(M)??""} review ${e(M)===1?"question":"questions"} for you today.`)),r(ce,ze)};m(de,ce=>{e(M)&&ce(De)})}var _e=a(de,2);Me(_e,21,()=>e(Y).slice(0,3),ce=>ce.id,(ce,ze)=>{var Ie=bo(),Ge=l(Ie),Ue=l(Ge),Ve=l(Ue);Ra(Ve,{class:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":"true"});var Pe=a(Ve,2),at=z(Pe,!0),it=a(Pe,2),lt=z(it),At=a(it,2),Ct=z(At,!0);o(Ue);var ut=a(Ue,2),kt=z(ut,!0);o(Ge),o(Ie),g(Et=>{P(Ge,"href",`/decisions#${e(ze).id??""}`),k(at,e(ze).verdict),k(lt,`· ${e(ze).taskTitle??""}`),k(Ct,Et),k(kt,e(ze).question)},[()=>$r(e(ze).decidedAt,t.now)]),r(ce,Ie)}),o(_e),r(C,W)};m(ee,C=>{e(Y).length&&C(I)})}r(d,b)},Ke=d=>{var b=Rr(),$=re(b);{var fe=I=>{var C=yo();Me(C,21,()=>e(ie),W=>W.id,(W,de)=>{p(W,()=>e(de),()=>null)}),o(C),r(I,C)},Ae=I=>{var C=zo();r(I,C)};m($,I=>{e(ie).length?I(fe):I(Ae,-1)})}var qe=a($,2);{var ee=I=>{var C=Ao(),W=re(C),de=l(W),De=a(de);{let ze=w(()=>e(ae)?"rotate-90":"");Pt(De,{get class(){return`size-3.5 transition-transform ${e(ze)??""}`}})}o(W);var _e=a(W,2);{var ce=ze=>{var Ie=To();Me(Ie,21,()=>e(R).queued,Ge=>Ge.id,(Ge,Ue)=>{var Ve=So(),Pe=l(Ve),at=l(Pe);{var it=ut=>{var kt=Mr(),Et=z(kt,!0);g(Rt=>k(Et,Rt),[()=>we(e(Ue))]),r(ut,kt)},lt=w(()=>we(e(Ue)));m(at,ut=>{e(lt)&&ut(it)})}var At=a(at),Ct=z(At,!0);o(Pe),o(Ve),g(ut=>{P(Pe,"href",ut),k(Ct,e(Ue).shortTitle)},[()=>V(e(Ue))]),r(Ge,Ve)}),o(Ie),r(ze,Ie)};m(_e,ze=>{e(ae)&&ze(ce)})}g(()=>{P(W,"aria-expanded",e(ae)),k(de,`Up next · ${e(R).queued.length??""} `)}),se("click",W,()=>A(ae,!e(ae))),r(I,C)};m(qe,I=>{e(R).queued.length&&I(ee)})}r(d,b)},gt=d=>{var b=Rr(),$=re(b);{var fe=I=>{var C=Eo();Me(C,21,()=>e(R).landedRecent,W=>W.id,(W,de)=>{var De=Co(),_e=l(De),ce=l(_e);Ht(ce,{class:"size-3.5 shrink-0 text-success","aria-label":"Landed"});var ze=a(ce);{var Ie=Pe=>{var at=Mr(),it=z(at,!0);g(lt=>k(it,lt),[()=>we(e(de))]),r(Pe,at)},Ge=w(()=>we(e(de)));m(ze,Pe=>{e(Ge)&&Pe(Ie)})}var Ue=a(ze),Ve=z(Ue,!0);o(_e),o(De),g(Pe=>{P(_e,"href",Pe),k(Ve,e(de).shortTitle)},[()=>V(e(de))]),r(W,De)}),o(C),r(I,C)},Ae=I=>{var C=Fo();r(I,C)};m($,I=>{e(R).landedRecent.length?I(fe):I(Ae,-1)})}var qe=a($,2);{var ee=I=>{var C=Mo(),W=a(re(C),2),de=l(W),De=l(de),_e=z(De,!0),ce=a(De,2),ze=z(ce);o(de);var Ie=a(de,2),Ge=l(Ie);Ea(Ge,{get seconds(){return e(B)},label:"Today"}),o(Ie);var Ue=a(Ie,2),Ve=z(Ue);o(W),g((Pe,at,it,lt)=>{k(_e,Pe),k(ze,`of crew time on ${e(Q)??""}
|
|
4
4
|
${e(Q)===1?"task":"tasks"}`),k(Ve,`${at??""}% building · ${it??""}% automated review · ${lt??""}% waiting on you`)},[()=>Sa(e(ke)),()=>H("build"),()=>H("review"),()=>H("captain")]),r(I,C)};m(qe,I=>{e(ke)>0&&I(ee)})}r(d,b)},bt=d=>{var b=Ro(),$=l(b);da($,{get entry(){return e(f)},get now(){return t.now}}),o(b),r(d,b)};m(Qe,d=>{e(i)==="needs"?d(ot):e(i)==="under"?d(Ke,1):e(i)==="landed"?d(gt,2):e(f)&&d(bt,3)})}o(Te);var Je=a(Te,2),Re=a(l(Je));Br(Re,{class:"size-3.5"}),o(Je),o(Oe),o(rt),g(d=>{k(u,d),P(Te,"aria-labelledby",`rail-tab-${e(i)??""}`)},[()=>Xr(e(R))]),se("keydown",he,ve),r(_,rt),Tt()}It(["click","keydown"]);const Io=6e4;class jo{#e=be(null);get value(){return e(this.#e)}set value(t){A(this.#e,t,!0)}seed(t){t&&(this.value=t)}connect(){let t=!1;const x=setInterval(async()=>{try{const N=await fetch("/api/insights");N.ok&&!t&&(this.value=await N.json())}catch{}},Io);return()=>{t=!0,clearInterval(x)}}}const tr=new jo;var No=s('<button class="fixed inset-0 z-40 bg-black/40" aria-label="Close tasks and decisions"></button> <div class="fixed inset-y-0 right-0 z-50 w-[min(24rem,90vw)] border-l bg-panel shadow-xl"><!></div>',1),Oo=s('<main class="flex min-h-0 flex-1"><!> <!></main> <!>',1);function Ri(_,t){St(t,!0);const p=w(jr),x=w(()=>Ot.url.searchParams.get("project")),N=w(()=>(e(p)?.tasks??[]).filter(i=>!e(x)||i.projectId===e(x))),S=w(()=>Nr(e(N),jt.now)),E=w(()=>tn(e(S))),Y=w(()=>e(S).needsYou.length+e(S).stepFailed.length),q=w(()=>gr.entries(xr.fleet,t.data.slots,t.data.slotsAt)),M=w(()=>e(q).filter(i=>i.slot==="home.card"));Mt(()=>tr.seed(t.data.insights));const B=w(()=>tr.value??t.data.insights);Mt(()=>{jt.revision,gr.refresh(xr.fleet,t.data.slotsAt)});const ke=rn(),Q=an();let H=be(!1);Mt(()=>{if(!e(H))return;const i=ke(Ot.url,e(p)),f=Q(Ot.url,e(p));if(!i&&!f)return;i&&(xt.pending=i),f&&(xt.draft=f);const U=new URL(Ot.url);U.searchParams.delete("chat"),U.searchParams.delete("draft"),ja(U,{})});let T=be(!0),R=be(!0);ir(()=>{A(H,!0);const i=window.matchMedia("(min-width: 1024px)"),f=()=>{A(T,i.matches,!0),A(R,i.matches,!0)};f(),i.addEventListener("change",f);const U=st.connect(),ve=tr.connect();return()=>{i.removeEventListener("change",f),U(),ve()}});var Ee=Oo();Vr("1uha8ag",i=>{Gr(()=>{Ur.title="Firstmate · Wheelhouse"})});var oe=re(Ee),ie=l(oe);Js(ie,{get token(){return t.data.sessionToken},get railOpen(){return e(R)},get waiting(){return e(Y)},get health(){return e(E)},get now(){return jt.now},get pluginEntries(){return e(q)},onToggleRail:()=>A(R,!e(R))});var ae=a(ie,2);{var G=i=>{ia(i,{storageKey:"wheelhouse-rail-width",label:"Resize the rail",defaultWidth:460,class:"bg-panel",children:(f,U)=>{{let ve=w(()=>e(p)?.projects??[]);Dr(f,{get tasks(){return e(N)},get projects(){return e(ve)},get now(){return jt.now},get insights(){return e(B)},get scope(){return e(x)},get cards(){return e(M)}})}},$$slots:{default:!0}})};m(ae,i=>{e(R)&&e(T)&&i(G)})}o(oe);var y=a(oe,2);{var h=i=>{var f=No(),U=re(f),ve=a(U,2),we=l(ve);{let V=w(()=>e(p)?.projects??[]);Dr(we,{get tasks(){return e(N)},get projects(){return e(V)},get now(){return jt.now},get insights(){return e(B)},get scope(){return e(x)},get cards(){return e(M)},onClose:()=>A(R,!1),onChat:()=>A(R,!1)})}o(ve),se("click",U,()=>A(R,!1)),r(i,f)};m(y,i=>{e(R)&&!e(T)&&i(h)})}r(_,Ee),Tt()}It(["click"]);export{Ri as component};
|
|
Binary file
|
|
Binary file
|