circuschief 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/server/src/api/commands.js +50 -55
- package/packages/server/src/api/projects-helpers.js +13 -4
- package/packages/server/src/api/projects.js +33 -18
- package/packages/server/src/cli.js +82 -0
- package/packages/server/src/db/AgentCallLogRepository.js +30 -31
- package/packages/server/src/db/ConversationRepository.js +27 -16
- package/packages/server/src/db/ProjectRepository.js +21 -31
- package/packages/server/src/db/QuickResponseRepository.js +14 -19
- package/packages/server/src/db/migrations/sessionsMigrations.js +61 -61
- package/packages/server/src/index.js +42 -29
- package/packages/server/src/services/commandRunner.js +52 -99
- package/packages/server/src/services/kanbanTriggers.js +83 -56
- package/packages/server/src/services/schedulerService.js +68 -44
- package/packages/server/src/services/sessionExecution.js +102 -61
- package/packages/server/src/services/sessionManager.js +63 -37
- package/packages/server/src/services/summaryService.js +56 -53
- package/packages/server/src/services/templateTriggerService.js +58 -31
- package/packages/server/src/ws/WebSocketManager.js +5 -0
- package/packages/web/dist/assets/ActiveSessionsView-3697sD8N.js +1 -0
- package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +1 -0
- package/packages/web/dist/assets/{AgentLogsView-c42v_j_5.js → AgentLogsView-D4l0N9ZA.js} +1 -1
- package/packages/web/dist/assets/{ArchiveConfirmModal-DBuOmtXu.js → ArchiveConfirmModal-Bv3vGOMM.js} +1 -1
- package/packages/web/dist/assets/{CommandButtonDetailView-CkKJ3Htz.js → CommandButtonDetailView-Bk_SHxpu.js} +1 -1
- package/packages/web/dist/assets/{EffortLevelSelector-BHJHSqul.js → EffortLevelSelector-VfBEelvO.js} +1 -1
- package/packages/web/dist/assets/{GeneralSettingsView-CdxfteZ2.js → GeneralSettingsView-BqCzCX-z.js} +1 -1
- package/packages/web/dist/assets/{InterpolationHelp-DabnHhE4.js → InterpolationHelp-Dc1Y0T6v.js} +1 -1
- package/packages/web/dist/assets/MarkdownEditor-DwBQkZbs.js +2 -0
- package/packages/web/dist/assets/{ModelSelector-BWIU4ud7.js → ModelSelector-DSxaZWBL.js} +1 -1
- package/packages/web/dist/assets/{NewSessionView-BIZl8QlH.js → NewSessionView-BsI7JtO9.js} +2 -2
- package/packages/web/dist/assets/{PathChooser-nhat_Pz4.js → PathChooser-CXFxb8Oj.js} +1 -1
- package/packages/web/dist/assets/{ProjectEditView-DD-2_VrW.js → ProjectEditView-Bes4Mib4.js} +1 -1
- package/packages/web/dist/assets/{ProjectListView-BOWbfoXQ.js → ProjectListView-DzEu-C36.js} +1 -1
- package/packages/web/dist/assets/{ProjectNewView-DC4uvSn2.js → ProjectNewView-Cv-iEAgl.js} +1 -1
- package/packages/web/dist/assets/ProvidersView-CgAr0qms.js +1 -0
- package/packages/web/dist/assets/{QuickResponseSettings-Bk9mq96x.js → QuickResponseSettings-uDDpwaza.js} +1 -1
- package/packages/web/dist/assets/{QuickResponsesPanel-BRvcnkQr.js → QuickResponsesPanel-D0qs0Fm_.js} +1 -1
- package/packages/web/dist/assets/{ResizableTextarea-CwGM4P3c.js → ResizableTextarea-_kHi1Mg3.js} +1 -1
- package/packages/web/dist/assets/{SessionCard-BGDVHU9u.js → SessionCard-Be1-bK0C.js} +1 -1
- package/packages/web/dist/assets/{SessionCard-D20G3bX8.css → SessionCard-CcqIjL8q.css} +1 -1
- package/packages/web/dist/assets/{SessionDetailView-CHYrx2Ab.js → SessionDetailView-DUYb7qTA.js} +17 -17
- package/packages/web/dist/assets/{SessionDetailView-7bWgC7Es.css → SessionDetailView-mnGRMaLY.css} +1 -1
- package/packages/web/dist/assets/{SessionFormOptions-8qvL25ca.js → SessionFormOptions-DvhOyP6z.js} +1 -1
- package/packages/web/dist/assets/{SessionListView-BAIBtJF7.css → SessionListView-78k6TTz6.css} +1 -1
- package/packages/web/dist/assets/SessionListView-CuHsWj85.js +1 -0
- package/packages/web/dist/assets/{SessionLogStream-B-w3n4c3.js → SessionLogStream-Da_GniUZ.js} +1 -1
- package/packages/web/dist/assets/{SettingsView-Dd0ZJ4Nv.js → SettingsView-5RDCXNUa.js} +1 -1
- package/packages/web/dist/assets/{SlashCommandWizard-CzyLjsdJ.js → SlashCommandWizard-B_8ifpxN.js} +1 -1
- package/packages/web/dist/assets/{SummarySettingsView-DTbh7uAF.js → SummarySettingsView-KvgSGHdd.js} +1 -1
- package/packages/web/dist/assets/{TemplateDetailView-BOnhkdtH.js → TemplateDetailView-BhOjYIvS.js} +1 -1
- package/packages/web/dist/assets/{commandButtons-CY87n64i.js → commandButtons-B4OYZP0J.js} +1 -1
- package/packages/web/dist/assets/{index-DxboI9i-.js → index-80Qu7W6P.js} +1 -1
- package/packages/web/dist/assets/{index-NzLFVaCi.js → index-B8_Iqwcq.js} +1 -1
- package/packages/web/dist/assets/{index-aCw-iXPX.js → index-B9JErft2.js} +1 -1
- package/packages/web/dist/assets/{index-Ce6sL47U.js → index-BHVnr8MO.js} +1 -1
- package/packages/web/dist/assets/{index-BXUcbV4K.js → index-BarVnQIj.js} +1 -1
- package/packages/web/dist/assets/{index--OtPwBbF.js → index-BqVgX_Jy.js} +3 -3
- package/packages/web/dist/assets/{index-gMpnPf1V.js → index-BsvRdU0B.js} +1 -1
- package/packages/web/dist/assets/{index-BRUlEEHm.js → index-Bugg2M-E.js} +1 -1
- package/packages/web/dist/assets/{index-Dx0sYW7H.js → index-C2Pjy-M8.js} +1 -1
- package/packages/web/dist/assets/{index-DkLkDgig.js → index-CSOPrlmq.js} +23 -23
- package/packages/web/dist/assets/{index-CO4EBOFw.js → index-CS_wb_Vj.js} +1 -1
- package/packages/web/dist/assets/{index-CjHb9rXv.js → index-ClzNIdCp.js} +1 -1
- package/packages/web/dist/assets/{index-DPwwgloE.js → index-Cn9Ajkye.js} +1 -1
- package/packages/web/dist/assets/{index-i1o916sk.js → index-CucpVX4L.js} +1 -1
- package/packages/web/dist/assets/{index-C6m-WfqP.js → index-D9hZYvW3.js} +1 -1
- package/packages/web/dist/assets/{index-jGjvGBfk.js → index-DA0dK_PG.js} +1 -1
- package/packages/web/dist/assets/{index-Bi4bQ_UB.js → index-DgpSn-jR.js} +1 -1
- package/packages/web/dist/assets/{index-DcA6pqXV.js → index-HZwIyC9t.js} +1 -1
- package/packages/web/dist/assets/{index-BshkV3r5.js → index-SS3wA2sI.js} +1 -1
- package/packages/web/dist/assets/{projects-C2Y29PSJ.js → projects-B2du-GX8.js} +1 -1
- package/packages/web/dist/assets/{providers-CeJXuo0Q.js → providers-B__J6FX0.js} +1 -1
- package/packages/web/dist/assets/sessions-VDrd87yA.js +1 -0
- package/packages/web/dist/assets/{settings-BplIxCbi.js → settings-CZ7Pc-Pt.js} +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/assets/ActiveSessionsView-BryJ-V3f.js +0 -1
- package/packages/web/dist/assets/ActiveSessionsView-ofSvx-K1.css +0 -1
- package/packages/web/dist/assets/MarkdownEditor-k4zBLGqU.js +0 -2
- package/packages/web/dist/assets/ProvidersView-DT5afh1V.js +0 -1
- package/packages/web/dist/assets/SessionListView-927Yq6Il.js +0 -1
- package/packages/web/dist/assets/sessions-CMby7ij3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as p,o as f,a as x,p as X,q as y,g as h,L as G,s as Z,t as Q,i as S,k as b,f as j,e as V,E as c}from"./index--OtPwBbF.js";import"./index-DkLkDgig.js";import"./SessionDetailView-CHYrx2Ab.js";import"./sessions-CMby7ij3.js";import"./ApiClient-Dbs1H78V.js";import"./settings-BplIxCbi.js";import"./projects-C2Y29PSJ.js";import"./EffortLevelSelector-BHJHSqul.js";import"./SessionLogStream-B-w3n4c3.js";import"./commandButtons-CY87n64i.js";import"./ArchiveConfirmModal-DBuOmtXu.js";import"./ModelSelector-BWIU4ud7.js";import"./providers-CeJXuo0Q.js";import"./SlashCommandWizard-CzyLjsdJ.js";import"./QuickResponseSettings-Bk9mq96x.js";import"./QuickResponsesPanel-BRvcnkQr.js";import"./ResizableTextarea-CwGM4P3c.js";const W=1,k=2,w=3,v=180,R=4,_=181,z=5,E=182,U=6;function D(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new c(O=>{let a=O.pos;for(;;){let{next:r}=O;if(r<0)break;if(r==123){let n=O.peek(1);if(n==123){if(O.pos>a)break;O.acceptToken(W,2);return}else if(n==37){if(O.pos>a)break;let $=2,i=2;for(;;){let e=O.peek($);if(e==32||e==10)++$;else if(e==35)for(++$;;){let t=O.peek($);if(t<0||t==10)break;$++}else if(e==45&&i==2)i=++$;else{let t=e==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(t?w:k,i);return}}}}if(O.advance(),r==10)break}O.pos>a&&O.acceptToken(v)});function u(O,a,r){return new c(n=>{let $=n.pos;for(;;){let{next:i}=n;if(i==123&&n.peek(1)==37){let e=2;for(;;e++){let o=n.peek(e);if(o!=32&&o!=10)break}let t="";for(;;e++){let o=n.peek(e);if(!D(o))break;t+=String.fromCharCode(o)}if(t==O){if(n.pos>$)break;n.acceptToken(r,2);break}}else if(i<0)break;if(n.advance(),i==10)break}n.pos>$&&n.acceptToken(a)})}const C=u("endcomment",E,z),Y=u("endraw",_,R),N=new c(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(U)}}),I={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},L={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},H=V.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zO<VQhO7+$tOOOP7+$t7+$tOOOP7+$x7+$xOOOP7+$|7+$|OOOP7+%R7+%ROOOP7+%W7+%WOsQhO'#F}O<_QhO7+%[OOOP7+%[7+%[OOQW'#Gf'#GfOsQhO7+%_OsQhO7+%gO<gQhO'#GPO<lQhO7+%oOOOP7+%o7+%oO<tQhO7+%oO<yQhO7+%}OOOP7+%}7+%}OOQW'#Gg'#GgO!]QhO'#EaOsQhO'#EaOOQW'#GS'#GSO=RQhO7+&POOOP7+&P7+&POOOP7+&V7+&VO=aQhO7+&XOOOP7+&X7+&XOOOP7+&[7+&[OOOP7+&`7+&`OOOP7+&b7+&bO=iQ!jO,5;aOOQW'#Gl'#GlOOQW'#Ew'#EwOOQW,5;`,5;`O0nQhO,5;`O>xQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5<ROFvQ!jO,5<TOHiQ!jO,5<VOJbQ!jO,5<XOLTQ!jO,5<ZOMvQ!jO,5<^OOQW'#HO'#HOOOQW'#Ft'#FtOOQW,5<],5<]O1hQhO,5<]O! VQ!jO,5<bO!!xQ!jO,5<dOOQW-E:R-E:ROOOP7+&d7+&dOOOP1G/`1G/`OOOP1G/i1G/iOOOP1G/n1G/nOOOP1G/x1G/xOOOP1G/}1G/}O!$kQhO,5:oO!$pQhO,5:uOOOP1G0r1G0rOOQW7+$]7+$]OsQhO1G/TO!$uQ!jO7+$fOOOP<<H`<<H`O!$|Q!jO,5<iOOQW-E9{-E9{OOOP<<Hv<<HvO!&xQ!jO<<HyO!'SQ!jO<<IROOQW,5<k,5<kOOQW-E9}-E9}OOOP<<IZ<<IZO!'^QhO<<IZOOOP<<Ii<<IiO!'fQhO,5:{O!'kQ!jO,5:{OOQW-E:Q-E:QOOOP<<Ik<<IkOOOP<<Is<<IsOOQW1G0z1G0zOOQW1G1P1G1POOQW1G1Y1G1YO!)gQhO1G1_OsQhO1G1bOOQW1G1a1G1aOsQhO1G1fOOQW1G1e1G1eO!+ZQhO1G1mO!,}QhO1G1mO!-SQhO1G1oOOQW'#GU'#GUO!.vQhO1G1qO!0mQhO1G1uOOQW1G1w1G1wOOOP1G0Z1G0ZOOOP1G0a1G0aO!2aQ!jO7+$oOOQW<<HQ<<HQOOQW'#Dq'#DqO!4]QhO'#DpOOQW'#GO'#GOO!5vQhOAN>eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<<HZOsQhO,5:[OOQW-E9|-E9|OOOPG24PG24POOOPG24XG24XOOOPG24aG24aO!<rQ!jO7+&ROOQW7+&R7+&RO!>kQhO<<JhO!?{QhO<<JlO!A]QhO<<JsO!CPQ!jO1G/v",stateData:"!Di~O%OOSUOS~OPROQSO$zPO~O$zPOPWXQWX$yWX~OgeOjiOkiOlfOmgOnhOoiOpiO%RbO~OwkOxjO{lO!PmO!RnO!UoO!ZpO!_qO!brO!jsO!ntO!puO!rvO!uwO!{xO#QyO#SzO#Y{O#[|O#_}O#c!OO#e!PO#g!QO~OPROQSOR!UO$zPO~OPROQSOR!XO$zPO~OPROQSOR![O$zPO~OPROQSOR!_O$zPO~OPROQSOR!bO$zPO~O$|!cO~O${!fO~OPROQSOR!kO$zPO~O]!mOa!uOb!oOc!pOr!qO%T!nO~OX!tO~P%}Oe!vOX%QX]%QXa%QXb%QXc%QXr%QX%T%QXi%QXx%QXu%QX#U%QX#V%QX%S%QXn%QX#j%QX#l%QX#o%QX#s%QX#u%QX#x%QX#|%QX$T%QX$X%QX$[%QX$^%QX$`%QX$b%QX$d%QX$g%QX$k%QX$m%QX#q%QX#z%QX$i%QXf%QX%R%QX#W%QX$Q%QX$V%QX~Or!qOx!zO~PsOx!}O~Ox#TO~Ox#UO~Oo#VO~Ox#WO~Ox#XO~OnhO#V#aO#j#bO#o#eO#s#hO#u#jO#x#lO#|#oO$T#sO$X#vO$[#yO$^#{O$`#}O$b$PO$d$RO$g$TO$k$WO$m$YO~Ox$_O~P*SO$zPOPWXQWXRWX~O}$aO~O!W$cO~O!]$eO~O!g$gO~O!l$iO~O$|!cOT!vX~OT$lO~O${!fOS!|X~OS$oO~O#a$qO~O^$rO~O%R$vO~OX$yOr!qO~O]!mOa!uOb!oOc!pO%T!nO~Oi$|O~P-aOx%OO~P%}Or!qOx%OO~Ox%PO~P-aOx%QO~P-aOx%RO~P-aOx%SO~P-aOu%TOx%VO~P-aO!c%WO~Ot%^Ou%ZOx%]O~Ox%`O~P%}Ou%bOx%fO#U%aO#V#aO~P-aOx%gO~P-aOx%iO~P%}Ox%jO~P-aOx%kO~P-aOx%lO~P-aO#l%nO~P*SO#q%sO~P*SO#z%yO~P*SO$Q&PO~P*SO$V&UO~P*SOo&YO~O$i&`O~P*SOx&gO~P*SOx&hO~Ox&iO~Ox&jO~Ox&kO~Ox&lO~O!x&mO~O#O&nO~Ox&oO~O%S&pO~P-aO]!mO%T!nOX`ia`ic`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~Ob`i~P2wOX`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~P-aOt&qOXqarqaxqanqa#Vqa#jqa#oqa#sqa#uqa#xqa#|qa$Tqa$Xqa$[qa$^qa$`qa$bqa$dqa$gqa$kqa$mqa#lqa#qqa#zqa$Qqa$Vqa$iqa~Ob!oO~P2wOXdirdiidixdiudi#Udi#Vdi%Sdindi#jdi#ldi#odi#sdi#udi#xdi#|di$Tdi$Xdi$[di$^di$`di$bdi$ddi$gdi$kdi$mdi#qdi#zdi$idifdi%Rdi#Wdi$Qdi$Vdi~P-aOr!qOx&sO~Ou%TOx&vO~Oo&yO~Ou%ZOx&{O~Oo&|O~Or!qOx&}O~Ou%bOx'RO#U%aO#V#aO~Or!qOx'SO~On#ia#V#ia#j#ia#l#ia#o#ia#s#ia#u#ia#x#ia#|#ia$T#ia$X#ia$[#ia$^#ia$`#ia$b#ia$d#ia$g#ia$k#ia$m#ia~P-aOn#na#V#na#j#na#o#na#q#na#s#na#u#na#x#na#|#na$T#na$X#na$[#na$^#na$`#na$b#na$d#na$g#na$k#na$m#na~P-aOn#rax#ra#V#ra#j#ra#o#ra#s#ra#u#ra#x#ra#|#ra$T#ra$X#ra$[#ra$^#ra$`#ra$b#ra$d#ra$g#ra$k#ra$m#ra#l#ra#q#ra#z#ra$Q#ra$V#ra$i#ra~P-aOn#wa#V#wa#j#wa#o#wa#s#wa#u#wa#x#wa#z#wa#|#wa$T#wa$X#wa$[#wa$^#wa$`#wa$b#wa$d#wa$g#wa$k#wa$m#wa~P-aOu%TOn#{ax#{a#V#{a#j#{a#o#{a#s#{a#u#{a#x#{a#|#{a$T#{a$X#{a$[#{a$^#{a$`#{a$b#{a$d#{a$g#{a$k#{a$m#{a#l#{a#q#{a#z#{a$Q#{a$V#{a$i#{a~P-aOt'^Ou%ZOn$Zax$Za#V$Za#j$Za#o$Za#s$Za#u$Za#x$Za#|$Za$T$Za$X$Za$[$Za$^$Za$`$Za$b$Za$d$Za$g$Za$k$Za$m$Za#l$Za#q$Za#z$Za$Q$Za$V$Za$i$Za~On$]ax$]a#V$]a#j$]a#o$]a#s$]a#u$]a#x$]a#|$]a$T$]a$X$]a$[$]a$^$]a$`$]a$b$]a$d$]a$g$]a$k$]a$m$]a#l$]a#q$]a#z$]a$Q$]a$V$]a$i$]a~P%}Ou%bO#U%aO#V#aOn$_ax$_a#j$_a#o$_a#s$_a#u$_a#x$_a#|$_a$T$_a$X$_a$[$_a$^$_a$`$_a$b$_a$d$_a$g$_a$k$_a$m$_a#l$_a#q$_a#z$_a$Q$_a$V$_a$i$_a~P-aOn$aax$aa#V$aa#j$aa#o$aa#s$aa#u$aa#x$aa#|$aa$T$aa$X$aa$[$aa$^$aa$`$aa$b$aa$d$aa$g$aa$k$aa$m$aa#l$aa#q$aa#z$aa$Q$aa$V$aa$i$aa~P-aOn$cax$ca#V$ca#j$ca#o$ca#s$ca#u$ca#x$ca#|$ca$T$ca$X$ca$[$ca$^$ca$`$ca$b$ca$d$ca$g$ca$k$ca$m$ca#l$ca#q$ca#z$ca$Q$ca$V$ca$i$ca~P%}On$fa#V$fa#j$fa#o$fa#s$fa#u$fa#x$fa#|$fa$T$fa$X$fa$[$fa$^$fa$`$fa$b$fa$d$fa$g$fa$i$fa$k$fa$m$fa~P-aOn$jax$ja#V$ja#j$ja#o$ja#s$ja#u$ja#x$ja#|$ja$T$ja$X$ja$[$ja$^$ja$`$ja$b$ja$d$ja$g$ja$k$ja$m$ja#l$ja#q$ja#z$ja$Q$ja$V$ja$i$ja~P-aOn$lax$la#V$la#j$la#o$la#s$la#u$la#x$la#|$la$T$la$X$la$[$la$^$la$`$la$b$la$d$la$g$la$k$la$m$la#l$la#q$la#z$la$Q$la$V$la$i$la~P-aOx'dO~Ox'eO~Of'gO~P-aOu$qax$qan$qa#V$qa#j$qa#o$qa#s$qa#u$qa#x$qa#|$qa$T$qa$X$qa$[$qa$^$qa$`$qa$b$qa$d$qa$g$qa$k$qa$m$qa#l$qa#q$qa#z$qa$Q$qa$V$qa$i$qaX$qar$qa~P-aOx'lO%R'hO~P-aOx'nO%R'hO~P-aOu%ZOx'pO~Ot'qO~O#W'rOu#Tax#Ta#U#Ta#V#Tan#Ta#j#Ta#o#Ta#s#Ta#u#Ta#x#Ta#|#Ta$T#Ta$X#Ta$[#Ta$^#Ta$`#Ta$b#Ta$d#Ta$g#Ta$k#Ta$m#Ta#l#Ta#q#Ta#z#Ta$Q#Ta$V#Ta$i#Ta~P-aOu%TOn#{ix#{i#V#{i#j#{i#o#{i#s#{i#u#{i#x#{i#|#{i$T#{i$X#{i$[#{i$^#{i$`#{i$b#{i$d#{i$g#{i$k#{i$m#{i#l#{i#q#{i#z#{i$Q#{i$V#{i$i#{i~Ou%ZOn$Zix$Zi#V$Zi#j$Zi#o$Zi#s$Zi#u$Zi#x$Zi#|$Zi$T$Zi$X$Zi$[$Zi$^$Zi$`$Zi$b$Zi$d$Zi$g$Zi$k$Zi$m$Zi#l$Zi#q$Zi#z$Zi$Q$Zi$V$Zi$i$Zi~Oo'vO~Or!qOn$]ix$]i#V$]i#j$]i#o$]i#s$]i#u$]i#x$]i#|$]i$T$]i$X$]i$[$]i$^$]i$`$]i$b$]i$d$]i$g$]i$k$]i$m$]i#l$]i#q$]i#z$]i$Q$]i$V$]i$i$]i~Ou%bO#U%aO#V#aOn$_ix$_i#j$_i#o$_i#s$_i#u$_i#x$_i#|$_i$T$_i$X$_i$[$_i$^$_i$`$_i$b$_i$d$_i$g$_i$k$_i$m$_i#l$_i#q$_i#z$_i$Q$_i$V$_i$i$_i~Or!qOn$cix$ci#V$ci#j$ci#o$ci#s$ci#u$ci#x$ci#|$ci$T$ci$X$ci$[$ci$^$ci$`$ci$b$ci$d$ci$g$ci$k$ci$m$ci#l$ci#q$ci#z$ci$Q$ci$V$ci$i$ci~Ou%TOXqqrqqxqqnqq#Vqq#jqq#oqq#sqq#uqq#xqq#|qq$Tqq$Xqq$[qq$^qq$`qq$bqq$dqq$gqq$kqq$mqq#lqq#qqq#zqq$Qqq$Vqq$iqq~P-aOt'yOx!dX%R!dXn!dX#V!dX#j!dX#o!dX#s!dX#u!dX#x!dX#|!dX$Q!dX$T!dX$X!dX$[!dX$^!dX$`!dX$b!dX$d!dX$g!dX$k!dX$m!dX$V!dX~Ox'{O%R'hO~Ox'|O%R'hO~Ou%ZOx'}O~O%R'hOn$Oq#V$Oq#j$Oq#o$Oq#s$Oq#u$Oq#x$Oq#|$Oq$Q$Oq$T$Oq$X$Oq$[$Oq$^$Oq$`$Oq$b$Oq$d$Oq$g$Oq$k$Oq$m$Oq~P-aO%R'hOn$Sq#V$Sq#j$Sq#o$Sq#s$Sq#u$Sq#x$Sq#|$Sq$T$Sq$V$Sq$X$Sq$[$Sq$^$Sq$`$Sq$b$Sq$d$Sq$g$Sq$k$Sq$m$Sq~P-aOu%ZOn$Zqx$Zq#V$Zq#j$Zq#o$Zq#s$Zq#u$Zq#x$Zq#|$Zq$T$Zq$X$Zq$[$Zq$^$Zq$`$Zq$b$Zq$d$Zq$g$Zq$k$Zq$m$Zq#l$Zq#q$Zq#z$Zq$Q$Zq$V$Zq$i$Zq~Ou%TOXqyrqyxqynqy#Vqy#jqy#oqy#sqy#uqy#xqy#|qy$Tqy$Xqy$[qy$^qy$`qy$bqy$dqy$gqy$kqy$mqy#lqy#qqy#zqy$Qqy$Vqy$iqy~Ou#Tqx#Tq#U#Tq#V#Tqn#Tq#j#Tq#o#Tq#s#Tq#u#Tq#x#Tq#|#Tq$T#Tq$X#Tq$[#Tq$^#Tq$`#Tq$b#Tq$d#Tq$g#Tq$k#Tq$m#Tq#l#Tq#q#Tq#z#Tq$Q#Tq$V#Tq$i#Tq~P-aO%R'hOn$Oy#V$Oy#j$Oy#o$Oy#s$Oy#u$Oy#x$Oy#|$Oy$Q$Oy$T$Oy$X$Oy$[$Oy$^$Oy$`$Oy$b$Oy$d$Oy$g$Oy$k$Oy$m$Oy~O%R'hOn$Sy#V$Sy#j$Sy#o$Sy#s$Sy#u$Sy#x$Sy#|$Sy$T$Sy$V$Sy$X$Sy$[$Sy$^$Sy$`$Sy$b$Sy$d$Sy$g$Sy$k$Sy$m$Sy~Ou%ZOn$Zyx$Zy#V$Zy#j$Zy#o$Zy#s$Zy#u$Zy#x$Zy#|$Zy$T$Zy$X$Zy$[$Zy$^$Zy$`$Zy$b$Zy$d$Zy$g$Zy$k$Zy$m$Zy#l$Zy#q$Zy#z$Zy$Q$Zy$V$Zy$i$Zy~Ox!di%R!din!di#V!di#j!di#o!di#s!di#u!di#x!di#|!di$Q!di$T!di$X!di$[!di$^!di$`!di$b!di$d!di$g!di$k!di$m!di$V!di~P-aO",goto:"@p%uPPPPPPPP%vP%v&W'hPP'h'hPPP'hPPP'hPPPPPPPP(fP(vPP(yPP(y)ZP)kP(yP(yP(y)qP*RP(y*XP*iP(yP(y*oPP+P+Z+eP(y+kP+{P(yP(yP(yP(y,RP,c,fP(y,iP,y,|P(yP(yP-PPPP(yP(yP(y-XP-iP(yP(yP(yP-o.PP.aP-o.gP.wP-oP-oP-o.}P/_P-oP-o/e/uP-o/{P0]P-oP-o-oP-oP-oP-oP-oP-o0cP0sP-oP-oP0y1i2P2o2}3a3s3y4P4V4uPPPPPP4{5]PPP'h'h8P%v9_9k9q:X:[:l:|;Q;b;f;v<W<h<l<|=Q=b=f=v>W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[F,Y,C,N,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:O=>I[O]||-1},{term:39,get:O=>L[O]||-1}],tokenPrec:0});function l(O,a){return O.split(" ").map(r=>({label:r,type:a}))}const P=l("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),m=l("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),T=l("empty forloop tablerowloop in with as","keyword"),A=l("first index index0 last length rindex","property"),B=l("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:r,pos:n}=O,$=h(r).resolveInner(n,-1).enterUnfinishedNodesBefore(n),i=((a=$.childBefore(n))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let e=O.matchBefore(/[\w\u00c0-\uffff]+$/);return e?{type:"expression",from:e.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,r,n){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="VariableName"||i.name=="forloop"||i.name=="tablerowloop"){let e=O.sliceDoc(i.from,i.to);if(e=="forloop")return $.length?[]:A;if(e=="tablerowloop")return $.length?[]:B;$.unshift(e);break}else if(i.name=="MemberExpression"){let e=i.getChild("PropertyName");e&&$.unshift(O.sliceDoc(e.from,e.to)),a=i}else if(i.name=="SubscriptExpression"){let e=i.getChildren("Expression")[1];$.unshift((e==null?void 0:e.name)=="StringLiteral"?O.sliceDoc(e.from+1,e.to-1):"[]"),a=i}else return[]}return n?n($,O,r):[]}function J(O={}){let a=O.filters?O.filters.concat(P):P,r=O.tags?O.tags.concat(m):m,n=O.variables?O.variables.concat(T):T,{properties:$}=O;return i=>{var e;let t=M(i);if(!t)return null;let o=(e=t.from)!==null&&e!==void 0?e:t.node?t.node.from:i.pos,s;return t.type=="filter"?s=a:t.type=="tag"?s=r:t.type=="expression"?s=n:s=K(i.state,t.target,i,$),s.length?{options:s,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=p.inputHandler.of((O,a,r,n)=>n!="%"||a!=r||O.state.doc.sliceString(a-1,r+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:f.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function d(O){return a=>{let r=O.test(a.textAfter);return a.lineIndent(a.node.from)+(r?0:a.unit)}}const $O=G.define({name:"liquid",parser:H.configure({props:[Z({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":Q.keyword,"empty forloop tablerowloop":Q.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":Q.controlKeyword,"assign capture endcapture":Q.definitionKeyword,contains:Q.operatorKeyword,"render include":Q.moduleKeyword,VariableName:Q.variableName,TagName:Q.tagName,FilterName:Q.function(Q.variableName),PropertyName:Q.propertyName,CompareOp:Q.compareOperator,AssignOp:Q.definitionOperator,LogicOp:Q.logicOperator,NumberLiteral:Q.number,StringLiteral:Q.string,BooleanLiteral:Q.bool,InlineComment:Q.lineComment,CommentText:Q.blockComment,"{% %} {{ }}":Q.brace,"[ ]":Q.bracket,"( )":Q.paren,".":Q.derefOperator,", .. : |":Q.punctuation}),S.add({Tag:b({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":d(/^\s*(\{%-?\s*)?end\w/),IfDirective:d(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:d(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),j.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,r=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:r.name=="EndTag"?r.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),q=X();function g(O){return $O.configure({wrap:y(a=>a.type.isTop?{parser:O.parser,overlay:r=>r.name=="Text"||r.name=="RawText"}:null)},"liquid")}const aO=g(q.language);function pO(O={}){let a=O.base||q,r=a.language==q.language?aO:g(a.language);return new x(r,[a.support,r.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,pO as liquid,J as liquidCompletionSource,aO as liquidLanguage};
|
|
1
|
+
import{n as p,o as f,a as x,p as X,q as y,g as h,L as G,s as Z,t as Q,i as S,k as b,f as j,e as V,E as c}from"./index-BqVgX_Jy.js";import"./index-CSOPrlmq.js";import"./SessionDetailView-DUYb7qTA.js";import"./sessions-VDrd87yA.js";import"./ApiClient-Dbs1H78V.js";import"./settings-CZ7Pc-Pt.js";import"./projects-B2du-GX8.js";import"./EffortLevelSelector-VfBEelvO.js";import"./SessionLogStream-Da_GniUZ.js";import"./commandButtons-B4OYZP0J.js";import"./ArchiveConfirmModal-Bv3vGOMM.js";import"./ModelSelector-DSxaZWBL.js";import"./providers-B__J6FX0.js";import"./SlashCommandWizard-B_8ifpxN.js";import"./QuickResponseSettings-uDDpwaza.js";import"./QuickResponsesPanel-D0qs0Fm_.js";import"./ResizableTextarea-_kHi1Mg3.js";const W=1,k=2,w=3,v=180,R=4,_=181,z=5,E=182,U=6;function D(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new c(O=>{let a=O.pos;for(;;){let{next:r}=O;if(r<0)break;if(r==123){let n=O.peek(1);if(n==123){if(O.pos>a)break;O.acceptToken(W,2);return}else if(n==37){if(O.pos>a)break;let $=2,i=2;for(;;){let e=O.peek($);if(e==32||e==10)++$;else if(e==35)for(++$;;){let t=O.peek($);if(t<0||t==10)break;$++}else if(e==45&&i==2)i=++$;else{let t=e==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(t?w:k,i);return}}}}if(O.advance(),r==10)break}O.pos>a&&O.acceptToken(v)});function u(O,a,r){return new c(n=>{let $=n.pos;for(;;){let{next:i}=n;if(i==123&&n.peek(1)==37){let e=2;for(;;e++){let o=n.peek(e);if(o!=32&&o!=10)break}let t="";for(;;e++){let o=n.peek(e);if(!D(o))break;t+=String.fromCharCode(o)}if(t==O){if(n.pos>$)break;n.acceptToken(r,2);break}}else if(i<0)break;if(n.advance(),i==10)break}n.pos>$&&n.acceptToken(a)})}const C=u("endcomment",E,z),Y=u("endraw",_,R),N=new c(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(U)}}),I={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},L={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},H=V.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zO<VQhO7+$tOOOP7+$t7+$tOOOP7+$x7+$xOOOP7+$|7+$|OOOP7+%R7+%ROOOP7+%W7+%WOsQhO'#F}O<_QhO7+%[OOOP7+%[7+%[OOQW'#Gf'#GfOsQhO7+%_OsQhO7+%gO<gQhO'#GPO<lQhO7+%oOOOP7+%o7+%oO<tQhO7+%oO<yQhO7+%}OOOP7+%}7+%}OOQW'#Gg'#GgO!]QhO'#EaOsQhO'#EaOOQW'#GS'#GSO=RQhO7+&POOOP7+&P7+&POOOP7+&V7+&VO=aQhO7+&XOOOP7+&X7+&XOOOP7+&[7+&[OOOP7+&`7+&`OOOP7+&b7+&bO=iQ!jO,5;aOOQW'#Gl'#GlOOQW'#Ew'#EwOOQW,5;`,5;`O0nQhO,5;`O>xQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5<ROFvQ!jO,5<TOHiQ!jO,5<VOJbQ!jO,5<XOLTQ!jO,5<ZOMvQ!jO,5<^OOQW'#HO'#HOOOQW'#Ft'#FtOOQW,5<],5<]O1hQhO,5<]O! VQ!jO,5<bO!!xQ!jO,5<dOOQW-E:R-E:ROOOP7+&d7+&dOOOP1G/`1G/`OOOP1G/i1G/iOOOP1G/n1G/nOOOP1G/x1G/xOOOP1G/}1G/}O!$kQhO,5:oO!$pQhO,5:uOOOP1G0r1G0rOOQW7+$]7+$]OsQhO1G/TO!$uQ!jO7+$fOOOP<<H`<<H`O!$|Q!jO,5<iOOQW-E9{-E9{OOOP<<Hv<<HvO!&xQ!jO<<HyO!'SQ!jO<<IROOQW,5<k,5<kOOQW-E9}-E9}OOOP<<IZ<<IZO!'^QhO<<IZOOOP<<Ii<<IiO!'fQhO,5:{O!'kQ!jO,5:{OOQW-E:Q-E:QOOOP<<Ik<<IkOOOP<<Is<<IsOOQW1G0z1G0zOOQW1G1P1G1POOQW1G1Y1G1YO!)gQhO1G1_OsQhO1G1bOOQW1G1a1G1aOsQhO1G1fOOQW1G1e1G1eO!+ZQhO1G1mO!,}QhO1G1mO!-SQhO1G1oOOQW'#GU'#GUO!.vQhO1G1qO!0mQhO1G1uOOQW1G1w1G1wOOOP1G0Z1G0ZOOOP1G0a1G0aO!2aQ!jO7+$oOOQW<<HQ<<HQOOQW'#Dq'#DqO!4]QhO'#DpOOQW'#GO'#GOO!5vQhOAN>eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<<HZOsQhO,5:[OOQW-E9|-E9|OOOPG24PG24POOOPG24XG24XOOOPG24aG24aO!<rQ!jO7+&ROOQW7+&R7+&RO!>kQhO<<JhO!?{QhO<<JlO!A]QhO<<JsO!CPQ!jO1G/v",stateData:"!Di~O%OOSUOS~OPROQSO$zPO~O$zPOPWXQWX$yWX~OgeOjiOkiOlfOmgOnhOoiOpiO%RbO~OwkOxjO{lO!PmO!RnO!UoO!ZpO!_qO!brO!jsO!ntO!puO!rvO!uwO!{xO#QyO#SzO#Y{O#[|O#_}O#c!OO#e!PO#g!QO~OPROQSOR!UO$zPO~OPROQSOR!XO$zPO~OPROQSOR![O$zPO~OPROQSOR!_O$zPO~OPROQSOR!bO$zPO~O$|!cO~O${!fO~OPROQSOR!kO$zPO~O]!mOa!uOb!oOc!pOr!qO%T!nO~OX!tO~P%}Oe!vOX%QX]%QXa%QXb%QXc%QXr%QX%T%QXi%QXx%QXu%QX#U%QX#V%QX%S%QXn%QX#j%QX#l%QX#o%QX#s%QX#u%QX#x%QX#|%QX$T%QX$X%QX$[%QX$^%QX$`%QX$b%QX$d%QX$g%QX$k%QX$m%QX#q%QX#z%QX$i%QXf%QX%R%QX#W%QX$Q%QX$V%QX~Or!qOx!zO~PsOx!}O~Ox#TO~Ox#UO~Oo#VO~Ox#WO~Ox#XO~OnhO#V#aO#j#bO#o#eO#s#hO#u#jO#x#lO#|#oO$T#sO$X#vO$[#yO$^#{O$`#}O$b$PO$d$RO$g$TO$k$WO$m$YO~Ox$_O~P*SO$zPOPWXQWXRWX~O}$aO~O!W$cO~O!]$eO~O!g$gO~O!l$iO~O$|!cOT!vX~OT$lO~O${!fOS!|X~OS$oO~O#a$qO~O^$rO~O%R$vO~OX$yOr!qO~O]!mOa!uOb!oOc!pO%T!nO~Oi$|O~P-aOx%OO~P%}Or!qOx%OO~Ox%PO~P-aOx%QO~P-aOx%RO~P-aOx%SO~P-aOu%TOx%VO~P-aO!c%WO~Ot%^Ou%ZOx%]O~Ox%`O~P%}Ou%bOx%fO#U%aO#V#aO~P-aOx%gO~P-aOx%iO~P%}Ox%jO~P-aOx%kO~P-aOx%lO~P-aO#l%nO~P*SO#q%sO~P*SO#z%yO~P*SO$Q&PO~P*SO$V&UO~P*SOo&YO~O$i&`O~P*SOx&gO~P*SOx&hO~Ox&iO~Ox&jO~Ox&kO~Ox&lO~O!x&mO~O#O&nO~Ox&oO~O%S&pO~P-aO]!mO%T!nOX`ia`ic`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~Ob`i~P2wOX`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~P-aOt&qOXqarqaxqanqa#Vqa#jqa#oqa#sqa#uqa#xqa#|qa$Tqa$Xqa$[qa$^qa$`qa$bqa$dqa$gqa$kqa$mqa#lqa#qqa#zqa$Qqa$Vqa$iqa~Ob!oO~P2wOXdirdiidixdiudi#Udi#Vdi%Sdindi#jdi#ldi#odi#sdi#udi#xdi#|di$Tdi$Xdi$[di$^di$`di$bdi$ddi$gdi$kdi$mdi#qdi#zdi$idifdi%Rdi#Wdi$Qdi$Vdi~P-aOr!qOx&sO~Ou%TOx&vO~Oo&yO~Ou%ZOx&{O~Oo&|O~Or!qOx&}O~Ou%bOx'RO#U%aO#V#aO~Or!qOx'SO~On#ia#V#ia#j#ia#l#ia#o#ia#s#ia#u#ia#x#ia#|#ia$T#ia$X#ia$[#ia$^#ia$`#ia$b#ia$d#ia$g#ia$k#ia$m#ia~P-aOn#na#V#na#j#na#o#na#q#na#s#na#u#na#x#na#|#na$T#na$X#na$[#na$^#na$`#na$b#na$d#na$g#na$k#na$m#na~P-aOn#rax#ra#V#ra#j#ra#o#ra#s#ra#u#ra#x#ra#|#ra$T#ra$X#ra$[#ra$^#ra$`#ra$b#ra$d#ra$g#ra$k#ra$m#ra#l#ra#q#ra#z#ra$Q#ra$V#ra$i#ra~P-aOn#wa#V#wa#j#wa#o#wa#s#wa#u#wa#x#wa#z#wa#|#wa$T#wa$X#wa$[#wa$^#wa$`#wa$b#wa$d#wa$g#wa$k#wa$m#wa~P-aOu%TOn#{ax#{a#V#{a#j#{a#o#{a#s#{a#u#{a#x#{a#|#{a$T#{a$X#{a$[#{a$^#{a$`#{a$b#{a$d#{a$g#{a$k#{a$m#{a#l#{a#q#{a#z#{a$Q#{a$V#{a$i#{a~P-aOt'^Ou%ZOn$Zax$Za#V$Za#j$Za#o$Za#s$Za#u$Za#x$Za#|$Za$T$Za$X$Za$[$Za$^$Za$`$Za$b$Za$d$Za$g$Za$k$Za$m$Za#l$Za#q$Za#z$Za$Q$Za$V$Za$i$Za~On$]ax$]a#V$]a#j$]a#o$]a#s$]a#u$]a#x$]a#|$]a$T$]a$X$]a$[$]a$^$]a$`$]a$b$]a$d$]a$g$]a$k$]a$m$]a#l$]a#q$]a#z$]a$Q$]a$V$]a$i$]a~P%}Ou%bO#U%aO#V#aOn$_ax$_a#j$_a#o$_a#s$_a#u$_a#x$_a#|$_a$T$_a$X$_a$[$_a$^$_a$`$_a$b$_a$d$_a$g$_a$k$_a$m$_a#l$_a#q$_a#z$_a$Q$_a$V$_a$i$_a~P-aOn$aax$aa#V$aa#j$aa#o$aa#s$aa#u$aa#x$aa#|$aa$T$aa$X$aa$[$aa$^$aa$`$aa$b$aa$d$aa$g$aa$k$aa$m$aa#l$aa#q$aa#z$aa$Q$aa$V$aa$i$aa~P-aOn$cax$ca#V$ca#j$ca#o$ca#s$ca#u$ca#x$ca#|$ca$T$ca$X$ca$[$ca$^$ca$`$ca$b$ca$d$ca$g$ca$k$ca$m$ca#l$ca#q$ca#z$ca$Q$ca$V$ca$i$ca~P%}On$fa#V$fa#j$fa#o$fa#s$fa#u$fa#x$fa#|$fa$T$fa$X$fa$[$fa$^$fa$`$fa$b$fa$d$fa$g$fa$i$fa$k$fa$m$fa~P-aOn$jax$ja#V$ja#j$ja#o$ja#s$ja#u$ja#x$ja#|$ja$T$ja$X$ja$[$ja$^$ja$`$ja$b$ja$d$ja$g$ja$k$ja$m$ja#l$ja#q$ja#z$ja$Q$ja$V$ja$i$ja~P-aOn$lax$la#V$la#j$la#o$la#s$la#u$la#x$la#|$la$T$la$X$la$[$la$^$la$`$la$b$la$d$la$g$la$k$la$m$la#l$la#q$la#z$la$Q$la$V$la$i$la~P-aOx'dO~Ox'eO~Of'gO~P-aOu$qax$qan$qa#V$qa#j$qa#o$qa#s$qa#u$qa#x$qa#|$qa$T$qa$X$qa$[$qa$^$qa$`$qa$b$qa$d$qa$g$qa$k$qa$m$qa#l$qa#q$qa#z$qa$Q$qa$V$qa$i$qaX$qar$qa~P-aOx'lO%R'hO~P-aOx'nO%R'hO~P-aOu%ZOx'pO~Ot'qO~O#W'rOu#Tax#Ta#U#Ta#V#Tan#Ta#j#Ta#o#Ta#s#Ta#u#Ta#x#Ta#|#Ta$T#Ta$X#Ta$[#Ta$^#Ta$`#Ta$b#Ta$d#Ta$g#Ta$k#Ta$m#Ta#l#Ta#q#Ta#z#Ta$Q#Ta$V#Ta$i#Ta~P-aOu%TOn#{ix#{i#V#{i#j#{i#o#{i#s#{i#u#{i#x#{i#|#{i$T#{i$X#{i$[#{i$^#{i$`#{i$b#{i$d#{i$g#{i$k#{i$m#{i#l#{i#q#{i#z#{i$Q#{i$V#{i$i#{i~Ou%ZOn$Zix$Zi#V$Zi#j$Zi#o$Zi#s$Zi#u$Zi#x$Zi#|$Zi$T$Zi$X$Zi$[$Zi$^$Zi$`$Zi$b$Zi$d$Zi$g$Zi$k$Zi$m$Zi#l$Zi#q$Zi#z$Zi$Q$Zi$V$Zi$i$Zi~Oo'vO~Or!qOn$]ix$]i#V$]i#j$]i#o$]i#s$]i#u$]i#x$]i#|$]i$T$]i$X$]i$[$]i$^$]i$`$]i$b$]i$d$]i$g$]i$k$]i$m$]i#l$]i#q$]i#z$]i$Q$]i$V$]i$i$]i~Ou%bO#U%aO#V#aOn$_ix$_i#j$_i#o$_i#s$_i#u$_i#x$_i#|$_i$T$_i$X$_i$[$_i$^$_i$`$_i$b$_i$d$_i$g$_i$k$_i$m$_i#l$_i#q$_i#z$_i$Q$_i$V$_i$i$_i~Or!qOn$cix$ci#V$ci#j$ci#o$ci#s$ci#u$ci#x$ci#|$ci$T$ci$X$ci$[$ci$^$ci$`$ci$b$ci$d$ci$g$ci$k$ci$m$ci#l$ci#q$ci#z$ci$Q$ci$V$ci$i$ci~Ou%TOXqqrqqxqqnqq#Vqq#jqq#oqq#sqq#uqq#xqq#|qq$Tqq$Xqq$[qq$^qq$`qq$bqq$dqq$gqq$kqq$mqq#lqq#qqq#zqq$Qqq$Vqq$iqq~P-aOt'yOx!dX%R!dXn!dX#V!dX#j!dX#o!dX#s!dX#u!dX#x!dX#|!dX$Q!dX$T!dX$X!dX$[!dX$^!dX$`!dX$b!dX$d!dX$g!dX$k!dX$m!dX$V!dX~Ox'{O%R'hO~Ox'|O%R'hO~Ou%ZOx'}O~O%R'hOn$Oq#V$Oq#j$Oq#o$Oq#s$Oq#u$Oq#x$Oq#|$Oq$Q$Oq$T$Oq$X$Oq$[$Oq$^$Oq$`$Oq$b$Oq$d$Oq$g$Oq$k$Oq$m$Oq~P-aO%R'hOn$Sq#V$Sq#j$Sq#o$Sq#s$Sq#u$Sq#x$Sq#|$Sq$T$Sq$V$Sq$X$Sq$[$Sq$^$Sq$`$Sq$b$Sq$d$Sq$g$Sq$k$Sq$m$Sq~P-aOu%ZOn$Zqx$Zq#V$Zq#j$Zq#o$Zq#s$Zq#u$Zq#x$Zq#|$Zq$T$Zq$X$Zq$[$Zq$^$Zq$`$Zq$b$Zq$d$Zq$g$Zq$k$Zq$m$Zq#l$Zq#q$Zq#z$Zq$Q$Zq$V$Zq$i$Zq~Ou%TOXqyrqyxqynqy#Vqy#jqy#oqy#sqy#uqy#xqy#|qy$Tqy$Xqy$[qy$^qy$`qy$bqy$dqy$gqy$kqy$mqy#lqy#qqy#zqy$Qqy$Vqy$iqy~Ou#Tqx#Tq#U#Tq#V#Tqn#Tq#j#Tq#o#Tq#s#Tq#u#Tq#x#Tq#|#Tq$T#Tq$X#Tq$[#Tq$^#Tq$`#Tq$b#Tq$d#Tq$g#Tq$k#Tq$m#Tq#l#Tq#q#Tq#z#Tq$Q#Tq$V#Tq$i#Tq~P-aO%R'hOn$Oy#V$Oy#j$Oy#o$Oy#s$Oy#u$Oy#x$Oy#|$Oy$Q$Oy$T$Oy$X$Oy$[$Oy$^$Oy$`$Oy$b$Oy$d$Oy$g$Oy$k$Oy$m$Oy~O%R'hOn$Sy#V$Sy#j$Sy#o$Sy#s$Sy#u$Sy#x$Sy#|$Sy$T$Sy$V$Sy$X$Sy$[$Sy$^$Sy$`$Sy$b$Sy$d$Sy$g$Sy$k$Sy$m$Sy~Ou%ZOn$Zyx$Zy#V$Zy#j$Zy#o$Zy#s$Zy#u$Zy#x$Zy#|$Zy$T$Zy$X$Zy$[$Zy$^$Zy$`$Zy$b$Zy$d$Zy$g$Zy$k$Zy$m$Zy#l$Zy#q$Zy#z$Zy$Q$Zy$V$Zy$i$Zy~Ox!di%R!din!di#V!di#j!di#o!di#s!di#u!di#x!di#|!di$Q!di$T!di$X!di$[!di$^!di$`!di$b!di$d!di$g!di$k!di$m!di$V!di~P-aO",goto:"@p%uPPPPPPPP%vP%v&W'hPP'h'hPPP'hPPP'hPPPPPPPP(fP(vPP(yPP(y)ZP)kP(yP(yP(y)qP*RP(y*XP*iP(yP(y*oPP+P+Z+eP(y+kP+{P(yP(yP(yP(y,RP,c,fP(y,iP,y,|P(yP(yP-PPPP(yP(yP(y-XP-iP(yP(yP(yP-o.PP.aP-o.gP.wP-oP-oP-o.}P/_P-oP-o/e/uP-o/{P0]P-oP-o-oP-oP-oP-oP-oP-o0cP0sP-oP-oP0y1i2P2o2}3a3s3y4P4V4uPPPPPP4{5]PPP'h'h8P%v9_9k9q:X:[:l:|;Q;b;f;v<W<h<l<|=Q=b=f=v>W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[F,Y,C,N,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:O=>I[O]||-1},{term:39,get:O=>L[O]||-1}],tokenPrec:0});function l(O,a){return O.split(" ").map(r=>({label:r,type:a}))}const P=l("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),m=l("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),T=l("empty forloop tablerowloop in with as","keyword"),A=l("first index index0 last length rindex","property"),B=l("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:r,pos:n}=O,$=h(r).resolveInner(n,-1).enterUnfinishedNodesBefore(n),i=((a=$.childBefore(n))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let e=O.matchBefore(/[\w\u00c0-\uffff]+$/);return e?{type:"expression",from:e.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,r,n){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="VariableName"||i.name=="forloop"||i.name=="tablerowloop"){let e=O.sliceDoc(i.from,i.to);if(e=="forloop")return $.length?[]:A;if(e=="tablerowloop")return $.length?[]:B;$.unshift(e);break}else if(i.name=="MemberExpression"){let e=i.getChild("PropertyName");e&&$.unshift(O.sliceDoc(e.from,e.to)),a=i}else if(i.name=="SubscriptExpression"){let e=i.getChildren("Expression")[1];$.unshift((e==null?void 0:e.name)=="StringLiteral"?O.sliceDoc(e.from+1,e.to-1):"[]"),a=i}else return[]}return n?n($,O,r):[]}function J(O={}){let a=O.filters?O.filters.concat(P):P,r=O.tags?O.tags.concat(m):m,n=O.variables?O.variables.concat(T):T,{properties:$}=O;return i=>{var e;let t=M(i);if(!t)return null;let o=(e=t.from)!==null&&e!==void 0?e:t.node?t.node.from:i.pos,s;return t.type=="filter"?s=a:t.type=="tag"?s=r:t.type=="expression"?s=n:s=K(i.state,t.target,i,$),s.length?{options:s,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=p.inputHandler.of((O,a,r,n)=>n!="%"||a!=r||O.state.doc.sliceString(a-1,r+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:f.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function d(O){return a=>{let r=O.test(a.textAfter);return a.lineIndent(a.node.from)+(r?0:a.unit)}}const $O=G.define({name:"liquid",parser:H.configure({props:[Z({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":Q.keyword,"empty forloop tablerowloop":Q.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":Q.controlKeyword,"assign capture endcapture":Q.definitionKeyword,contains:Q.operatorKeyword,"render include":Q.moduleKeyword,VariableName:Q.variableName,TagName:Q.tagName,FilterName:Q.function(Q.variableName),PropertyName:Q.propertyName,CompareOp:Q.compareOperator,AssignOp:Q.definitionOperator,LogicOp:Q.logicOperator,NumberLiteral:Q.number,StringLiteral:Q.string,BooleanLiteral:Q.bool,InlineComment:Q.lineComment,CommentText:Q.blockComment,"{% %} {{ }}":Q.brace,"[ ]":Q.bracket,"( )":Q.paren,".":Q.derefOperator,", .. : |":Q.punctuation}),S.add({Tag:b({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":d(/^\s*(\{%-?\s*)?end\w/),IfDirective:d(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:d(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),j.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,r=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:r.name=="EndTag"?r.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),q=X();function g(O){return $O.configure({wrap:y(a=>a.type.isTop?{parser:O.parser,overlay:r=>r.name=="Text"||r.name=="RawText"}:null)},"liquid")}const aO=g(q.language);function pO(O={}){let a=O.base||q,r=a.language==q.language?aO:g(a.language);return new x(r,[a.support,r.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,pO as liquid,J as liquidCompletionSource,aO as liquidLanguage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as a}from"./index-
|
|
1
|
+
import{L as a}from"./index-CSOPrlmq.js";import{a as i}from"./ApiClient-Dbs1H78V.js";const h=a("projects",{state:()=>({projects:[],currentProject:null,loading:!1,error:null}),getters:{getProjectById:r=>t=>r.projects.find(e=>e.id===t)},actions:{async fetchProjects(){this.loading=!0,this.error=null;try{this.projects=await i.getProjects()}catch(r){this.error=r.message}finally{this.loading=!1}},async fetchProject(r){this.loading=!0,this.error=null;try{const t=await i.getProject(r);this.currentProject=t,this.projects.find(e=>e.id===r)||this.projects.push(t)}catch(t){this.error=t.message}finally{this.loading=!1}},async createProject(r){this.loading=!0,this.error=null;try{const t=await i.createProject(r);return this.projects.unshift(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateProject(r,t){var e;this.loading=!0,this.error=null;try{const s=await i.updateProject(r,t),o=this.projects.findIndex(c=>c.id===r);return o!==-1&&(this.projects[o]=s),((e=this.currentProject)==null?void 0:e.id)===r&&(this.currentProject=s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteProject(r){var t;this.loading=!0,this.error=null;try{await i.deleteProject(r),this.projects=this.projects.filter(e=>e.id!==r),((t=this.currentProject)==null?void 0:t.id)===r&&(this.currentProject=null)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}});export{h as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as a}from"./index-
|
|
1
|
+
import{L as a}from"./index-CSOPrlmq.js";import{a as s}from"./ApiClient-Dbs1H78V.js";const d=a("providers",{state:()=>({providers:[],loading:!1,error:null,testingConnection:!1,testResult:null}),getters:{customProviders:e=>e.providers.filter(r=>!r.isBuiltIn),getById:e=>r=>e.providers.find(t=>t.id===r),allModels:e=>{const r=[];for(const t of e.providers)if(t.models)for(const i of t.models)r.push({...i,providerName:t.name,providerId:t.id});return r}},actions:{async fetchProviders(){this.loading=!0,this.error=null;try{this.providers=await s.getProviders()}catch(e){this.error=e.message}finally{this.loading=!1}},async fetchProvider(e){this.loading=!0,this.error=null;try{const r=await s.getProvider(e),t=this.providers.findIndex(i=>i.id===e);return t!==-1&&(this.providers[t]=r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async createProvider(e){this.loading=!0,this.error=null;try{const r=await s.createProvider(e);return this.providers.push(r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async updateProvider(e,r){this.loading=!0,this.error=null;try{const t=await s.updateProvider(e,r),i=this.providers.findIndex(o=>o.id===e);return i!==-1&&(this.providers[i]=t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async deleteProvider(e){this.loading=!0,this.error=null;try{await s.deleteProvider(e),this.providers=this.providers.filter(r=>r.id!==e)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async testConnection(e){this.testingConnection=!0,this.testResult=null,this.error=null;try{return this.testResult=await s.testProviderConnection(e),this.testResult}catch(r){throw this.error=r.message,r}finally{this.testingConnection=!1}},async testExistingProvider(e){this.testingConnection=!0,this.testResult=null,this.error=null;try{return this.testResult=await s.testExistingProvider(e),this.testResult}catch(r){throw this.error=r.message,r}finally{this.testingConnection=!1}},async fetchModels(e){this.loading=!0,this.error=null;try{return await s.getProviderModels(e)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async addModel(e,r){this.loading=!0,this.error=null;try{return await s.addProviderModel(e,r)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateModel(e,r,t){this.loading=!0,this.error=null;try{return await s.updateProviderModel(e,r,t)}catch(i){throw this.error=i.message,i}finally{this.loading=!1}},async removeModel(e,r){this.loading=!0,this.error=null;try{await s.removeProviderModel(e,r)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},clearTestResult(){this.testResult=null}}});export{d as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{U as _,L as y}from"./index-CSOPrlmq.js";import{a as c}from"./ApiClient-Dbs1H78V.js";import{u as p}from"./settings-CZ7Pc-Pt.js";function R(){return Math.random().toString(16).substring(2,6)}function d(e,s=_){return e?Math.round((e.inputTokens||0)*s.input+(e.outputTokens||0)*s.output+(e.cacheReadInputTokens||0)*s.cacheRead+(e.cacheCreationInputTokens||0)*s.cacheCreation):0}function w(e){return!e||e===0?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function x(e,s=30){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").substring(0,s)}function A(e){const s=["a","an","the","to","and","or","for","in","on","at","of","with","is","it","this","that","i","me","my","we","our","you","your","can","please","help"];return e.toLowerCase().replace(/[^a-z0-9\s]/g,"").split(/\s+/).filter(i=>i.length>1&&!s.includes(i)).slice(0,4).join("-")||"session"}function O(e,s){const t=R();let i;return s&&s.trim()?i=x(A(s.trim())):i="session",i||(i="session"),`claude-tools/${t}-${i}`}const L=y("sessionFilters",{state:()=>({statusFilter:null,starredFilter:null,scheduledFilter:null}),actions:{setStatusFilter(e){this.statusFilter=e,this.saveStatusFilter()},saveStatusFilter(){try{this.statusFilter?localStorage.setItem("sessionStatusFilter",this.statusFilter):localStorage.removeItem("sessionStatusFilter")}catch(e){console.warn("Failed to save status filter:",e)}},restoreStatusFilter(){try{const e=localStorage.getItem("sessionStatusFilter");(e==="running"||e==="idle")&&(this.statusFilter=e)}catch(e){console.warn("Failed to restore status filter:",e)}},setStarredFilter(e){this.starredFilter=e,this.saveStarredFilter()},saveStarredFilter(){try{this.starredFilter?sessionStorage.setItem("sessionStarredFilter",this.starredFilter):sessionStorage.removeItem("sessionStarredFilter")}catch(e){console.warn("Failed to save starred filter:",e)}},restoreStarredFilter(){try{const e=sessionStorage.getItem("sessionStarredFilter");e==="starred"||e==="unstarred"?this.starredFilter=e:this.starredFilter=null}catch(e){console.warn("Failed to restore starred filter:",e)}},setScheduledFilter(e){this.scheduledFilter=e,this.saveScheduledFilter()},saveScheduledFilter(){try{this.scheduledFilter?sessionStorage.setItem("sessionScheduledFilter",this.scheduledFilter):sessionStorage.removeItem("sessionScheduledFilter")}catch(e){console.warn("Failed to save scheduled filter:",e)}},restoreScheduledFilter(){try{const e=sessionStorage.getItem("sessionScheduledFilter");e==="scheduled"||e==="not-scheduled"?this.scheduledFilter=e:this.scheduledFilter=null}catch(e){console.warn("Failed to restore scheduled filter:",e)}}}});function g(e){return e==null?"-":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function I(e,s,t,i){return{input:g(e),output:g(s),total:g((e||0)+(s||0)),cacheRead:g(t),cacheCreation:g(i)}}function T(e){return e.runningUsage?!e.activeConversationId||e.runningUsage.conversationId===e.activeConversationId:!1}function l(e){return e.conversations.find(s=>s.id===e.activeConversationId)}function k(e,s){return{inputTokens:((e==null?void 0:e.inputTokens)||0)+(s.inputTokens||0),outputTokens:((e==null?void 0:e.outputTokens)||0)+(s.outputTokens||0),cacheReadInputTokens:((e==null?void 0:e.cacheReadInputTokens)||0)+(s.cacheReadInputTokens||0),cacheCreationInputTokens:((e==null?void 0:e.cacheCreationInputTokens)||0)+(s.cacheCreationInputTokens||0)}}function C(e){return{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens}}const U={conversationTokens:e=>{const s=e.conversations.find(t=>t.id===e.activeConversationId);return s?{inputTokens:s.inputTokens||0,outputTokens:s.outputTokens||0,cacheReadInputTokens:s.cacheReadInputTokens||0,cacheCreationInputTokens:s.cacheCreationInputTokens||0,webSearchRequests:s.webSearchRequests||0,contextWindow:s.contextWindow||2e5}:null},totalTokens:e=>{const s=e.conversations.find(t=>t.id===e.activeConversationId);return s?(s.inputTokens||0)+(s.outputTokens||0):e.currentSession?(e.currentSession.inputTokens||0)+(e.currentSession.outputTokens||0):0},formattedTokens:e=>{if(T(e)){const s=k(l(e),e.runningUsage);return I(s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens)}if(e.activeConversationId&&e.conversations.length>0){const s=l(e);if(s)return I(s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens)}return{input:"-",output:"-",total:"-",cacheRead:"-",cacheCreation:"-"}},contextPercentage:e=>{if(T(e)){const n=l(e),o=k(n,e.runningUsage),r=o.inputTokens+o.outputTokens,a=e.runningUsage.contextWindow||(n==null?void 0:n.contextWindow)||2e5;return Math.min(100,Math.round(r/a*100))}const t=l(e)||e.currentSession;if(!t)return 0;const i=(t.inputTokens||0)+(t.outputTokens||0);return Math.min(100,Math.round(i/(t.contextWindow||2e5)*100))},isUsageUpdating:e=>!(!e.runningUsage||e.activeConversationId&&e.runningUsage.conversationId!==e.activeConversationId),getConversationDisplayTokens:e=>s=>{const t=e.conversations.find(i=>i.id===s);if(!t)return{inputTokens:0,outputTokens:0,total:0};if(e.runningUsage&&e.runningUsage.conversationId===s){const i=(t.inputTokens||0)+(e.runningUsage.inputTokens||0),n=(t.outputTokens||0)+(e.runningUsage.outputTokens||0);return{inputTokens:i,outputTokens:n,total:i+n}}return{inputTokens:t.inputTokens||0,outputTokens:t.outputTokens||0,total:(t.inputTokens||0)+(t.outputTokens||0)}},billableTokens:e=>{const t=p().tokenCostWeights;if(T(e))return d(k(l(e),e.runningUsage),t);if(e.activeConversationId&&e.conversations.length>0){const i=l(e);if(i)return d(C(i),t)}return 0},formattedBillableTokens:e=>{const t=p().tokenCostWeights;if(T(e))return w(d(k(l(e),e.runningUsage),t));if(e.activeConversationId&&e.conversations.length>0){const i=l(e);if(i)return w(d(C(i),t))}return"-"},getConversationBillableTokens:e=>s=>{const i=p().tokenCostWeights,n=e.conversations.find(o=>o.id===s);return n?e.runningUsage&&e.runningUsage.conversationId===s?d({inputTokens:(n.inputTokens||0)+(e.runningUsage.inputTokens||0),outputTokens:(n.outputTokens||0)+(e.runningUsage.outputTokens||0),cacheReadInputTokens:(n.cacheReadInputTokens||0)+(e.runningUsage.cacheReadInputTokens||0),cacheCreationInputTokens:(n.cacheCreationInputTokens||0)+(e.runningUsage.cacheCreationInputTokens||0)},i):d({inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheReadInputTokens:n.cacheReadInputTokens,cacheCreationInputTokens:n.cacheCreationInputTokens},i):0},getFormattedConversationBillableTokens:e=>s=>{const i=p().tokenCostWeights,n=e.conversations.find(r=>r.id===s);if(!n)return"-";let o;return e.runningUsage&&e.runningUsage.conversationId===s?o={inputTokens:(n.inputTokens||0)+(e.runningUsage.inputTokens||0),outputTokens:(n.outputTokens||0)+(e.runningUsage.outputTokens||0),cacheReadInputTokens:(n.cacheReadInputTokens||0)+(e.runningUsage.cacheReadInputTokens||0),cacheCreationInputTokens:(n.cacheCreationInputTokens||0)+(e.runningUsage.cacheCreationInputTokens||0)}:o={inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheReadInputTokens:n.cacheReadInputTokens,cacheCreationInputTokens:n.cacheCreationInputTokens},w(d(o,i))},getSessionBillableTokens:e=>s=>{var f;const i=p().tokenCostWeights,n=h=>h?d({inputTokens:h.inputTokens||0,outputTokens:h.outputTokens||0,cacheReadInputTokens:h.cacheReadInputTokens||0,cacheCreationInputTokens:h.cacheCreationInputTokens||0},i):0,o=e.sessions.find(h=>h.id===s)||(((f=e.currentSession)==null?void 0:f.id)===s?e.currentSession:null);if(!o)return 0;let r=n(o);const a=[s],u=new Set;for(;a.length>0;){const h=a.pop();if(u.has(h))continue;u.add(h);const m=e.sessions.filter(S=>S.parentSessionId===h);for(const S of m)r+=n(S),a.push(S.id)}return r}};function v(e,s,t=!1){const i=e,n=i.findIndex(o=>o.id===s.id);n!==-1?i[n]={...i[n],...s}:t&&i.unshift(s)}async function P(e,s,t){try{const o=(await c.getProjectSessions(s)).filter(r=>r.parentSessionId===t).filter(r=>!e.find(a=>a.id===r.id));e.push(...o)}catch(i){console.error("Failed to fetch child sessions:",i)}}function F(e,s,t){const i=e.find(o=>o.id===t.id),n=i?{...i,...t}:t;return v(s,n,!0),e.filter(o=>o.id!==t.id)}async function b(e,s){let t=s;for(;t;){const i=e.find(n=>n.id===t);if(i){t=i.parentSessionId;continue}try{const n=await c.getSession(t);e.push(n),t=n.parentSessionId}catch(n){console.error("Failed to fetch parent session:",n);break}}}const W={async fetchActiveSessions(e=!0){e&&(this.loading=!0),this.error=null;try{this.activeSessions=await c.getActiveSessions()}catch(s){this.error=s.message}finally{e&&(this.loading=!1)}},async fetchScheduledSessions(e=null){this.loadingScheduled=!0,this.error=null;try{const s=await c.getScheduledSessions(e);this.scheduledSessions=s.sort((t,i)=>new Date(t.scheduledAt)-new Date(i.scheduledAt))}catch(s){this.error=s.message,console.error("Failed to fetch scheduled sessions:",s)}finally{this.loadingScheduled=!1}},async fetchSessions(e,{silent:s=!1}={}){s||(this.loading=!0),this.error=null;try{this.sessions=await c.getProjectSessions(e,!1,null)}catch(t){this.error=t.message}finally{s||(this.loading=!1)}},async fetchArchivedSessions(e,{reset:s=!0}={}){s&&(this.archivedSessions=[],this.archivedPagination.offset=0),this.archivedPagination.loading=!0,this.error=null;try{const i=await c.getProjectSessions(e,!0,this.starredFilter,{limit:25,offset:this.archivedPagination.offset});this.archivedSessions=s?i.sessions:[...this.archivedSessions,...i.sessions],this.archivedPagination={total:i.pagination.total,offset:this.archivedPagination.offset+i.sessions.length,hasMore:i.pagination.hasMore,loading:!1}}catch(i){this.error=i.message,this.archivedPagination.loading=!1}},async loadMoreArchivedSessions(e){this.archivedPagination.hasMore&&!this.archivedPagination.loading&&await this.fetchArchivedSessions(e,{reset:!1})},async fetchSession(e,s=!0){var t,i;s&&(this.loading=!0),this.error=null;try{const n=await c.getSession(e);if(this.viewedSessionId&&this.viewedSessionId!==e){const r=this.sessions.findIndex(a=>a.id===e);r!==-1&&(this.sessions[r]={...this.sessions[r],...n});return}this.currentSession=n;const o=this.sessions.findIndex(r=>r.id===e);o!==-1?this.sessions[o]=n:this.sessions.push(n),(t=this.currentSession)!=null&&t.parentSessionId&&await b(this.sessions,this.currentSession.parentSessionId),(i=this.currentSession)!=null&&i.projectId&&await P(this.sessions,this.currentSession.projectId,e)}catch(n){this.error=n.message}finally{s&&(this.loading=!1)}},async createSession(e,s){this.loading=!0,this.error=null;try{const t=await c.createSession(e,s);return this.sessions.unshift(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async sendMessage(e,s,t=[],i=null){this.error=null;try{await c.sendMessage(e,s,t,i),this._updateSessionInAllLists(e,{status:"running"})}catch(n){throw this.error=n.message,n}},async stopSession(e){this.error=null;try{await c.stopSession(e),this._updateSessionInAllLists(e,{status:"stopped"})}catch(s){throw this.error=s.message,s}},async restartSession(e){this.error=null;try{await c.restartSession(e),this._updateSessionInAllLists(e,{status:"stopped",error:null})}catch(s){throw this.error=s.message,s}},async startSession(e,s=void 0,t=void 0){this.error=null;try{const i=await c.startSession(e,s,t);return this._updateSessionInAllLists(e,{status:"starting"}),i}catch(i){throw this.error=i.message,i}},async deleteSession(e){var s;this.error=null;try{await c.deleteSession(e),this.sessions=this.sessions.filter(t=>t.id!==e),this.archivedSessions=this.archivedSessions.filter(t=>t.id!==e),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession=null)}catch(t){throw this.error=t.message,t}},async archiveSession(e,{cleanup:s=!1}={}){var t;this.error=null;try{const i=await c.archiveSession(e,{cleanup:s});return this.sessions=this.sessions.filter(n=>n.id!==e),this.archivedSessions.unshift(i),this.activeSessions=this.activeSessions.filter(n=>n.id!==e),((t=this.currentSession)==null?void 0:t.id)===e&&(this.currentSession={...this.currentSession,archived:!0}),i}catch(i){throw this.error=i.message,i}},async unarchiveSession(e){var s;this.error=null;try{const t=await c.unarchiveSession(e);return this.archivedSessions=this.archivedSessions.filter(i=>i.id!==e),this.sessions.unshift(t),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession={...this.currentSession,archived:!1}),t}catch(t){throw this.error=t.message,t}},async duplicateSession(e,s={}){this.error=null;try{return await c.duplicateSession(e,s)}catch(t){throw this.error=t.message,t}},async toggleSessionStar(e){this.error=null;try{const s=await c.toggleSessionStar(e);return this._updateSessionInAllLists(e,{starred:s.starred}),s}catch(s){throw this.error=s.message,s}},updateSessionStatus(e,s){const t=this.sessions.find(o=>o.id===e)||this.currentSession,i=(t==null?void 0:t.status)==="running",n={status:s};i&&(s==="waiting"||s==="completed")&&(n.hasResponses=!0),this._updateSessionInAllLists(e,n)},async updateSessionThinking(e,s){return this.updateSessionFields(e,{thinkingEnabled:s})},async updateSessionMode(e,s){return this.updateSessionFields(e,{mode:s})},async updateSessionModel(e,s,t=void 0){var i;this.error=null;try{const n={model:s};t!==void 0&&(n.providerId=t);const o=this.sessions.find(a=>a.id===e)||(((i=this.currentSession)==null?void 0:i.id)===e?this.currentSession:null);o&&o.status==="waiting"&&(n.pendingModel=s);const r=await c.updateSession(e,n);return this._updateSessionInAllLists(e,n),r}catch(n){throw this.error=n.message,n}},async updateNextTemplate(e,s){return this.updateSessionFields(e,{nextTemplateId:s})},async updateAutoSendPendingPrompt(e,s){return this.updateSessionFields(e,{autoSendPendingPrompt:s})},async updateSessionFields(e,s){this.error=null;try{const t=await c.updateSession(e,s);return this._updateSessionInAllLists(e,s),t}catch(t){throw this.error=t.message,t}},updateSession(e){var s;e!=null&&e.id&&(e.archived===!0?(this.sessions=F(this.sessions,this.archivedSessions,e),this.activeSessions=this.activeSessions.filter(t=>t.id!==e.id)):e.archived===!1?this.archivedSessions=F(this.archivedSessions,this.sessions,e):(v(this.sessions,e),v(this.archivedSessions,e)),((s=this.currentSession)==null?void 0:s.id)===e.id&&(this.currentSession={...this.currentSession,...e}),v(this.activeSessions,e),e.status==="scheduled"?(v(this.scheduledSessions,e,!0),this.scheduledSessions.sort((t,i)=>new Date(t.scheduledAt)-new Date(i.scheduledAt))):this.scheduledSessions=this.scheduledSessions.filter(t=>t.id!==e.id))},addSessionToList(e){e!=null&&e.id&&(this.sessions.some(s=>s.id===e.id)||this.sessions.unshift(e),["running","waiting","starting"].includes(e.status)&&(this.activeSessions.some(s=>s.id===e.id)||this.activeSessions.unshift(e)))},removeSessionFromList(e){var s;e&&(this.sessions=this.sessions.filter(t=>t.id!==e),this.archivedSessions=this.archivedSessions.filter(t=>t.id!==e),this.activeSessions=this.activeSessions.filter(t=>t.id!==e),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession=null))}},M={async fetchConversations(e){var s;if(!(this.viewedSessionId&&this.viewedSessionId!==e)){this.error=null;try{const t=await c.getConversations(e);if(this.viewedSessionId&&this.viewedSessionId!==e)return;this.conversations=t;const i=this.conversations.find(n=>n.isActive);this.activeConversationId=(i==null?void 0:i.id)||((s=this.conversations[0])==null?void 0:s.id)||null}catch(t){this.viewedSessionId&&this.viewedSessionId===e&&(this.error=t.message,this.conversations=[],this.activeConversationId=null)}}},async createConversation(e,s=null){this.error=null;try{const t=await c.createConversation(e,s);return this.conversations.push(t),this.conversations=this.conversations.map(i=>({...i,isActive:i.id===t.id})),this.activeConversationId=t.id,this.messages=[],this.runningUsage=null,t}catch(t){throw this.error=t.message,t}},async switchConversation(e,s){if(this.activeConversationId!==s){this.error=null;try{this.runningUsage=null,this.clearPartialThinking(),this.messages=[],this.workLogs={},await c.updateConversation(e,s,{isActive:!0}),this.conversations=this.conversations.map(t=>({...t,isActive:t.id===s})),this.activeConversationId=s,this.messages=await c.getConversationMessages(e,s),this.clearPartialThinking(e),await this.fetchWorkLogs(e)}catch(t){throw this.error=t.message,t}}},async renameConversation(e,s,t){this.error=null;try{const i=await c.updateConversation(e,s,{name:t}),n=this.conversations.findIndex(o=>o.id===s);return n!==-1&&(this.conversations[n]={...this.conversations[n],...i}),i}catch(i){throw this.error=i.message,i}},async deleteConversation(e,s){this.error=null;try{await c.deleteConversation(e,s),this.conversations=this.conversations.filter(t=>t.id!==s),this.activeConversationId===s&&this.conversations.length>0?(await this.fetchConversations(e),this.activeConversationId&&(this.messages=await c.getConversationMessages(e,this.activeConversationId))):this.activeConversationId===s&&(this.activeConversationId=null,this.messages=[])}catch(t){throw this.error=t.message,t}},async branchConversation(e,s,t={}){const{messageId:i=null,prompt:n=null}=t||{};this.error=null;try{const o=await c.branchConversation(e,s,{messageId:i,prompt:n});return this.conversations.some(r=>r.id===o.id)||this.conversations.push(o),this.conversations=this.conversations.map(r=>({...r,isActive:r.id===o.id})),this.activeConversationId=o.id,this.messages=[],this.workLogs={},this.clearPartialThinking(e),Promise.all([c.getConversationMessages(e,o.id).then(r=>{this.activeConversationId===o.id&&(this.messages=r)}).catch(r=>console.error("Failed to fetch messages for branch:",r)),this.fetchWorkLogs(e).catch(r=>console.error("Failed to fetch work logs for branch:",r))]),o}catch(o){throw this.error=o.message,o}},updateConversation(e){if(!(e!=null&&e.id)||this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id)return;const s=this.conversations.findIndex(t=>t.id===e.id);s!==-1&&this.conversations.splice(s,1,{...this.conversations[s],...e}),e.isActive&&(this.conversations=this.conversations.map(t=>({...t,isActive:t.id===e.id})),this.activeConversationId=e.id)},addConversation(e){e!=null&&e.id&&(this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id||(this.conversations.some(s=>s.id===e.id)||this.conversations.push(e),e.isActive&&(this.conversations=this.conversations.map(s=>({...s,isActive:s.id===e.id})),this.activeConversationId=e.id)))},removeConversation(e,s=null,t=null){var i;this.currentSession&&t&&t!==this.currentSession.id||(this.conversations=this.conversations.filter(n=>n.id!==e),s?(this.conversations.some(n=>n.id===s.id)||this.conversations.push(s),this.conversations=this.conversations.map(n=>({...n,isActive:n.id===s.id})),this.activeConversationId=s.id):this.activeConversationId===e&&(this.activeConversationId=((i=this.conversations[0])==null?void 0:i.id)||null))},clearConversations(){this.conversations=[],this.activeConversationId=null}},B={_isStaleSession(e){return this.viewedSessionId&&this.viewedSessionId!==e},_isActiveSession(e){return this.viewedSessionId&&this.viewedSessionId===e},async fetchMessages(e,s=!0,t=null){if(!this._isStaleSession(e)){s&&(this.loading=!0),this.error=null;try{const i=t||this.activeConversationId,n=i?await c.getConversationMessages(e,i):await c.getSessionMessages(e);if(this._isStaleSession(e))return;const o=new Set(n.map(a=>a.id)),r=this.messages.filter(a=>a.sessionId===e&&!o.has(a.id));r.length>0?this.messages=[...n,...r]:this.messages=n}catch(i){this._isActiveSession(e)&&(this.error=i.message)}finally{s&&(this.loading=!1)}}},addMessage(e){this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id||this.messages.some(s=>s.id===e.id)||this.messages.push(e)},async fetchWorkLogs(e){if(!this._isStaleSession(e)){this.error=null;try{const s=await c.getSessionWorkLogs(e);if(this._isStaleSession(e))return;const t=new Set;for(const r of Object.keys(s))for(const a of s[r]||[])t.add(a.id);const n=(this.workLogs._unassociated||[]).filter(r=>!t.has(r.id)),o=s._unassociated||[];this.workLogs={...s,_unassociated:[...o,...n]}}catch(s){this._isActiveSession(e)&&(this.error=s.message)}}},addWorkLog(e){if(this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id)return;const s=e.messageId||"_unassociated",t=this.workLogs[s]||[];t.some(i=>i.id===e.id)||(this.workLogs={...this.workLogs,[s]:[...t,e]})},setWorkLogs(e){this.workLogs=e},clearWorkLogs(){this.workLogs={},this.clearAllPartialThinking()},associateWorkLogs(e){const s=this.workLogs._unassociated||[];if(s.length>0){const t=this.workLogs[e]||[],i=new Set(t.map(o=>o.id)),n=s.filter(o=>!i.has(o.id));this.workLogs={...this.workLogs,[e]:[...t,...n],_unassociated:[]}}},setPartialThinking(e,s=null){var i;const t=s||((i=this.currentSession)==null?void 0:i.id);t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:e})},clearPartialThinking(e=null){var t;const s=e||((t=this.currentSession)==null?void 0:t.id);s&&(this.partialThinkingBySession={...this.partialThinkingBySession,[s]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},setPartialText(e){this._pendingPartialText=e,this._partialThrottleTimer||(this.partialText=e,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},updateRunningUsage(e,s=null){this.runningUsage={...e,conversationId:s}},finalizeUsage(e,s=null){if(s){const t=this.conversations.findIndex(i=>i.id===s);t!==-1&&this.conversations.splice(t,1,{...this.conversations[t],inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens,webSearchRequests:e.webSearchRequests,contextWindow:e.contextWindow,model:e.model})}this.currentSession&&(this.currentSession={...this.currentSession,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens,webSearchRequests:e.webSearchRequests,contextWindow:e.contextWindow}),this.runningUsage=null},updateConversationUsage(e,s){const t=this.conversations.findIndex(i=>i.id===e);t!==-1&&this.conversations.splice(t,1,{...this.conversations[t],inputTokens:s.inputTokens,outputTokens:s.outputTokens,cacheReadInputTokens:s.cacheReadInputTokens,cacheCreationInputTokens:s.cacheCreationInputTokens,webSearchRequests:s.webSearchRequests,contextWindow:s.contextWindow,model:s.model})},clearRunningUsage(){this.runningUsage=null,this.clearPartialThinking()}},E={isDraftSession:e=>s=>!s||s.status!=="waiting"?!1:s.hasResponses!==void 0?!s.hasResponses:!e.messages.some(t=>t.role==="assistant"),isScheduledDraft:e=>s=>!s||s.status!=="scheduled"?!1:s.hasResponses!==void 0?!s.hasResponses:!e.messages.some(t=>t.role==="assistant"),getWorkLogsForMessage:e=>s=>e.workLogs[s]||[],getUnassociatedWorkLogs:e=>e.workLogs._unassociated||[],partialThinking:e=>{var s;return(s=e.currentSession)!=null&&s.id&&e.partialThinkingBySession[e.currentSession.id]||null},activeConversation:e=>e.conversations.find(s=>s.id===e.activeConversationId)||null,getConversationById:e=>s=>e.conversations.find(t=>t.id===s),rootConversations:e=>e.conversations.filter(s=>!s.parentConversationId),conversationTree:e=>{const s=(t=null)=>e.conversations.filter(i=>i.parentConversationId===t).map(i=>({...i,children:s(i.id)}));return s(null)},getConversationChildren:e=>s=>e.conversations.filter(t=>t.parentConversationId===s),getConversationParent:e=>s=>{const t=e.conversations.find(i=>i.id===s);return t!=null&&t.parentConversationId?e.conversations.find(i=>i.id===t.parentConversationId):null}},G=y("sessions",{state:()=>({sessions:[],archivedSessions:[],activeSessions:[],scheduledSessions:[],currentSession:null,viewedSessionId:null,messages:[],conversations:[],activeConversationId:null,workLogs:{},partialThinkingBySession:{},partialText:"",_partialThrottleTimer:null,_pendingPartialText:null,statusFilter:null,starredFilter:null,scheduledFilter:null,runningUsage:null,loading:!1,loadingScheduled:!1,error:null,commandRunVersion:0,archivedPagination:{total:0,offset:0,hasMore:!1,loading:!1}}),getters:{_findSessionById:e=>s=>e.sessions.find(t=>t.id===s)||e.activeSessions.find(t=>t.id===s),_findChildren:e=>s=>{const t=e.sessions.filter(r=>r.parentSessionId===s),i=e.activeSessions.filter(r=>r.parentSessionId===s),n=new Set(t.map(r=>r.id)),o=[...t];for(const r of i)n.has(r.id)||(o.push(r),n.add(r.id));return o},getSessionById:e=>s=>e.sessions.find(t=>t.id===s),getChildSessions(){return e=>this._findChildren(e)},hasChildren(){return e=>this._findChildren(e).length>0},getChildCount(){return e=>this._findChildren(e).length},getAllDescendants(){return e=>{const s=[],t=[e],i=new Set;for(;t.length>0;){const n=t.pop();if(i.has(n))continue;i.add(n);const o=this._findChildren(n);for(const r of o)s.push(r),t.push(r.id)}return s}},getWorkflowEffectiveStatus(){return e=>{const s=this._findSessionById(e);if(!s)return"idle";const t=[s],i=[e],n=new Set;for(;i.length>0;){const r=i.pop();if(n.has(r))continue;n.add(r);const a=this._findChildren(r);for(const u of a)t.push(u),i.push(u.id)}const o=["running","starting"];return t.some(r=>o.includes(r.status))?"running":"idle"}},getSessionPath(){return e=>{const s=[],t=n=>{var o;return((o=this.currentSession)==null?void 0:o.id)===n?this.currentSession:this._findSessionById(n)};let i=t(e);for(;i&&(s.unshift(i),!!i.parentSessionId);)i=t(i.parentSessionId);return s}},getRootSession(){return e=>{let s=this._findSessionById(e);for(;s!=null&&s.parentSessionId;)s=this._findSessionById(s.parentSessionId);return s||null}},getWorkflowAggregatedStatus(){return e=>{const s=this._findSessionById(e);if(!s)return{effectiveStatus:"idle",runningCount:0,scheduledCount:0,waitingCount:0,completedCount:0,totalCount:0,hasScheduledDescendant:!1,rootIsScheduled:!1};const t=[s],i=[e],n=new Set;for(;i.length>0;){const h=i.pop();if(n.has(h))continue;n.add(h);const m=this._findChildren(h);for(const S of m)t.push(S),i.push(S.id)}const o=["running","starting"];let r=0,a=0,u=0,f=0;for(const h of t)o.includes(h.status)?r++:h.status==="scheduled"?a++:h.status==="waiting"?u++:(h.status==="completed"||h.status==="stopped")&&f++;return{effectiveStatus:r>0?"running":"idle",runningCount:r,scheduledCount:a,waitingCount:u,completedCount:f,totalCount:t.length-1,hasScheduledDescendant:t.slice(1).some(h=>h.status==="scheduled"),rootIsScheduled:s.status==="scheduled"}}},getWorkflowSessions(){return e=>{const s=this._findSessionById(e);if(!s)return[];const t=[s],i=[e],n=new Set;for(;i.length>0;){const o=i.pop();if(n.has(o))continue;n.add(o);const r=this._findChildren(o);for(const a of r)t.push(a),i.push(a.id)}return t}},groupedSessions:e=>{const s=[],t=new Set;return e.sessions.forEach(i=>{!i.parentSessionId&&!t.has(i.id)&&(s.push({parent:i,children:e.sessions.filter(n=>n.parentSessionId===i.id)}),t.add(i.id))}),e.sessions.forEach(i=>{!i.parentSessionId&&!s.find(n=>n.parent.id===i.id)&&s.push({parent:i,children:[]})}),s},...E,...U},actions:{_updateSessionInAllLists(e,s){var i;const t=(n,o)=>{const r=n;o!==-1&&(r[o]={...r[o],...s})};t(this.sessions,this.sessions.findIndex(n=>n.id===e)),t(this.archivedSessions,this.archivedSessions.findIndex(n=>n.id===e)),t(this.activeSessions,this.activeSessions.findIndex(n=>n.id===e)),((i=this.currentSession)==null?void 0:i.id)===e&&(this.currentSession={...this.currentSession,...s})},...W,setStatusFilter(e){this.statusFilter=e,this._syncFilterToSubStore("statusFilter"),this._filtersStore().saveStatusFilter()},saveStatusFilter(){this._syncFilterToSubStore("statusFilter"),this._filtersStore().saveStatusFilter()},restoreStatusFilter(){this._filtersStore().restoreStatusFilter(),this.statusFilter=this._filtersStore().statusFilter},setStarredFilter(e){this.starredFilter=e,this._syncFilterToSubStore("starredFilter"),this._filtersStore().saveStarredFilter()},saveStarredFilter(){this._syncFilterToSubStore("starredFilter"),this._filtersStore().saveStarredFilter()},restoreStarredFilter(){this._filtersStore().restoreStarredFilter(),this.starredFilter=this._filtersStore().starredFilter},setScheduledFilter(e){this.scheduledFilter=e,this._syncFilterToSubStore("scheduledFilter"),this._filtersStore().saveScheduledFilter()},saveScheduledFilter(){this._syncFilterToSubStore("scheduledFilter"),this._filtersStore().saveScheduledFilter()},restoreScheduledFilter(){this._filtersStore().restoreScheduledFilter(),this.scheduledFilter=this._filtersStore().scheduledFilter},_filtersStore(){return L()},_syncFilterToSubStore(e){this._filtersStore()[e]=this[e]},updateSessionCommandRun(e,s,t){const i=r=>{if(!r)return null;const a=[...r.latestCommandRuns||[]],u=a.findIndex(f=>f.buttonId===s);return u>=0?a[u]=t:a.push(t),a},n=this.sessions.find(r=>r.id===e)||this.archivedSessions.find(r=>r.id===e)||this.activeSessions.find(r=>r.id===e)||this.currentSession,o=i(n);o&&this._updateSessionInAllLists(e,{latestCommandRuns:o}),this.commandRunVersion++},removeSessionCommandRun(e,s){const t=this.sessions.find(n=>n.id===e)||this.archivedSessions.find(n=>n.id===e)||this.activeSessions.find(n=>n.id===e)||this.currentSession;if(!t)return;const i=(t.latestCommandRuns||[]).filter(n=>n.buttonId!==s);this._updateSessionInAllLists(e,{latestCommandRuns:i}),this.commandRunVersion++},updateSessionCommandRuns(e,s){this._updateSessionInAllLists(e,{latestCommandRuns:s}),this.commandRunVersion++},...B,...M}});export{E as a,M as c,w as f,O as g,B as p,U as t,G as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as i,U as r}from"./index-
|
|
1
|
+
import{L as i,U as r}from"./index-CSOPrlmq.js";import{a as s}from"./ApiClient-Dbs1H78V.js";const l=i("settings",{state:()=>({tokenCostWeights:{...r},summarySettings:{disableSessionSummaries:!1,sessionTitlePrompt:"",defaultSessionTitlePrompt:""},generalSettings:{disableAnalytics:!1},loading:!1,error:null}),getters:{weights:t=>t.tokenCostWeights},actions:{async fetchTokenCostWeights(){this.loading=!0,this.error=null;try{const t=await s.getTokenCostWeights();this.tokenCostWeights=t}catch(t){this.error=t.message,this.tokenCostWeights={...r}}finally{this.loading=!1}},async updateTokenCostWeights(t){this.loading=!0,this.error=null;try{const e=await s.updateTokenCostWeights(t);return this.tokenCostWeights=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetTokenCostWeights(){this.loading=!0,this.error=null;try{const t=await s.resetTokenCostWeights();return this.tokenCostWeights=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchSummarySettings(){this.loading=!0,this.error=null;try{const t=await s.getSummarySettings();this.summarySettings=t}catch(t){this.error=t.message,this.summarySettings={disableSessionSummaries:!1,sessionTitlePrompt:"",defaultSessionTitlePrompt:""}}finally{this.loading=!1}},async updateSummarySettings(t){this.loading=!0,this.error=null;try{const e=await s.updateSummarySettings(t);return this.summarySettings=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetSummarySettings(){this.loading=!0,this.error=null;try{const t=await s.resetSummarySettings();return this.summarySettings=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchGeneralSettings(){this.loading=!0,this.error=null;try{const t=await s.getGeneralSettings();this.generalSettings=t}catch(t){this.error=t.message,this.generalSettings={disableAnalytics:!1}}finally{this.loading=!1}},async updateGeneralSettings(t){this.loading=!0,this.error=null;try{const e=await s.updateGeneralSettings(t);return this.generalSettings=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetGeneralSettings(){this.loading=!0,this.error=null;try{const t=await s.resetGeneralSettings();return this.generalSettings=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}}}});export{l as u};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
|
|
10
10
|
<title>Circus Chief</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-CSOPrlmq.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-gmCCsCQ1.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as Y}from"./sessions-CMby7ij3.js";import{u as $}from"./commandButtons-CY87n64i.js";import{B as g,W as u,_ as z,o as q,z as J,m as K,a,c,b as p,F as A,r as C,E as T,u as m,t as O,d as Q,w as X,e as Z,l as ee,y as D,x as b,f as te,G as se}from"./index-DkLkDgig.js";import{a as x}from"./ApiClient-Dbs1H78V.js";import{S as re}from"./SessionCard-BGDVHU9u.js";import"./settings-BplIxCbi.js";import"./SessionLogStream-B-w3n4c3.js";function ne(){const{on:E,off:t}=g(),d=y=>_=>{const i=f=>{f.session&&_(f.session,f.projectId)};return E(y,i),()=>t(y,i)},w=d(u.SESSION_CREATED),N=d(u.SESSION_UPDATED);return{onSessionCreated:w,onSessionUpdated:N,onSessionDeleted:y=>{const _=i=>{i.sessionId&&y(i.sessionId,i.projectId)};return E(u.SESSION_DELETED,_),()=>t(u.SESSION_DELETED,_)},onSessionSummaryUpdated:y=>{const _=i=>{i.sessionId&&i.summary&&y(i.sessionId,i.summary,i.projectId)};return E(u.SESSION_SUMMARY_UPDATED,_),()=>t(u.SESSION_SUMMARY_UPDATED,_)}}}const oe={class:"container"},ie={class:"filters-container"},ae={class:"status-filters"},le=["onClick"],ce=["title"],ue={key:0,class:"star-icon"},de={key:1,class:"star-icon star-crossed"},fe={key:2,class:"star-icon"},Se={key:0,class:"skeleton-list"},pe={key:1,class:"error-message"},me={key:2,class:"empty-state"},_e={key:3,class:"empty-state"},he={key:4,class:"session-list"},ye={__name:"ActiveSessionsView",setup(E){const t=Y(),d=$(),w=["waiting","stopped","error"],N=["running","starting"],F=ee(new Set),R=r=>{t.statusFilter===r?t.setStatusFilter(null):t.setStatusFilter(r)},y=()=>{t.starredFilter===null?t.setStarredFilter("starred"):t.starredFilter==="starred"?t.setStarredFilter("unstarred"):t.setStarredFilter(null)},_=b(()=>t.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":t.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred."),i=b(()=>{let r=t.activeSessions;return t.statusFilter&&(r=r.filter(s=>{const e=s.status;return!!(t.statusFilter==="idle"&&w.includes(e)||t.statusFilter==="running"&&N.includes(e))})),t.starredFilter==="starred"?r=r.filter(s=>s.starred):t.starredFilter==="unstarred"&&(r=r.filter(s=>!s.starred)),r}),f=D({}),S=D({}),h=D({});let k=null;const v=[],{onSessionCreated:j,onSessionUpdated:P,onSessionDeleted:B,onSessionSummaryUpdated:L}=ne();async function M(){const r=new Set(t.activeSessions.map(s=>s.projectId).filter(s=>s&&!F.value.has(s)));for(const s of r)try{await d.fetchButtons(s),await d.fetchLatestRunsForProject(s),F.value.add(s)}catch(e){console.error(`Failed to fetch buttons for project ${s}:`,e)}}function U(r,s,e){d.runs[r]||(d.runs[r]={runId:r,buttonId:s,sessionId:e,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1})}function V(r,s,e){const n=o=>{U(o.runId,o.buttonId,o.sessionId),d.appendOutput(o.runId,o.output)};r(u.COMMAND_RUN_OUTPUT,n),e.push(()=>s(u.COMMAND_RUN_OUTPUT,n));const l=o=>{U(o.runId,o.buttonId,o.sessionId),d.completeRun(o.runId,o.exitCode,o.output)};r(u.COMMAND_RUN_COMPLETE,l),e.push(()=>s(u.COMMAND_RUN_COMPLETE,l));const I=o=>{U(o.runId,o.buttonId,o.sessionId),d.errorRun(o.runId,o.error)};r(u.COMMAND_RUN_ERROR,I),e.push(()=>s(u.COMMAND_RUN_ERROR,I))}q(async()=>{t.restoreStatusFilter(),t.restoreStarredFilter(),await t.fetchActiveSessions(),await M(),v.push(j(e=>{["running","waiting","starting"].includes(e.status)&&(t.activeSessions.some(l=>l.id===e.id)||(t.activeSessions.unshift(e),e.projectId&&!F.value.has(e.projectId)&&(d.fetchButtons(e.projectId),F.value.add(e.projectId))))})),v.push(P(e=>{const n=["running","waiting","starting"].includes(e.status),l=t.activeSessions.findIndex(I=>I.id===e.id);n?l>=0?t.activeSessions[l]=e:t.activeSessions.unshift(e):l>=0&&(t.activeSessions.splice(l,1),delete f[e.id],delete S[e.id],delete h[e.id])})),v.push(B(e=>{const n=t.activeSessions.findIndex(l=>l.id===e);n>=0&&t.activeSessions.splice(n,1),delete f[e],delete S[e],delete h[e]})),v.push(L((e,n)=>{f[e]=n,S[e]=!1,h[e]=!1}));const{on:r,off:s}=g();V(r,s,v),k=setInterval(()=>{t.fetchActiveSessions(!1)},3e4)}),J(()=>{v.forEach(r=>r()),k&&clearInterval(k)}),K(()=>t.activeSessions,()=>{H(),M()},{immediate:!0});async function H(){const s=t.activeSessions.filter(e=>!f[e.id]&&!S[e.id]).map(e=>e.id);if(s.length!==0){for(const e of s)S[e]=!0,h[e]=!1;try{const e=await x.getSessionSummariesBatch(s);for(const n of s)e[n]&&(f[n]=e[n]),S[n]=!1}catch(e){console.warn("Failed to fetch summaries batch:",e.message);for(const n of s)h[n]=!0,S[n]=!1}}}async function G(r){var s;S[r]=!0,h[r]=!1;try{const e=await x.getSessionSummary(r);e&&(f[r]=e)}catch(e){((s=e.response)==null?void 0:s.status)!==404&&(console.warn(`Failed to fetch summary for session ${r}:`,e.message),h[r]=!0)}finally{S[r]=!1}}async function W(r){h[r]=!1,await G(r)}return(r,s)=>{const e=te("router-link");return a(),c("div",oe,[s[3]||(s[3]=p("div",{class:"page-header"},[p("div",null,[p("p",{class:"page-description"}," All active sessions across your projects ")])],-1)),p("div",ie,[p("div",ae,[(a(),c(A,null,C(["running","idle"],n=>p("button",{key:n,class:T(["filter-btn",{active:m(t).statusFilter===n}]),onClick:l=>R(n)},O(n),11,le)),64)),p("button",{class:T(["filter-btn star-btn",{"star-filter-active":m(t).starredFilter==="starred","star-filter-unstarred":m(t).starredFilter==="unstarred","star-filter-all":m(t).starredFilter===null}]),title:_.value,onClick:y},[m(t).starredFilter==="starred"?(a(),c("span",ue,"⭐")):m(t).starredFilter==="unstarred"?(a(),c("span",de,"⭐")):(a(),c("span",fe,"☆"))],10,ce)])]),m(t).loading?(a(),c("div",Se,[(a(),c(A,null,C(3,n=>p("div",{key:n,class:"skeleton card",style:{height:"120px"}})),64))])):m(t).error?(a(),c("div",pe,O(m(t).error),1)):m(t).activeSessions.length===0?(a(),c("div",me,[s[1]||(s[1]=p("p",null,"No active sessions. All sessions are completed or there are no sessions yet.",-1)),Q(e,{to:"/",class:"btn btn-primary"},{default:X(()=>[...s[0]||(s[0]=[Z(" View Projects ",-1)])]),_:1})])):i.value.length===0?(a(),c("div",_e,[...s[2]||(s[2]=[p("p",null,"No sessions match the current filter.",-1)])])):(a(),c("div",he,[(a(!0),c(A,null,C(i.value,n=>(a(),se(re,{key:n.id,session:n,"show-project":!0,"show-summary":!0,summary:f[n.id],"summary-loading":S[n.id],"summary-error":h[n.id],onRetrySummary:W},null,8,["session","summary","summary-loading","summary-error"]))),128))]))])}}},Ue=z(ye,[["__scopeId","data-v-21acfc18"]]);export{Ue as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.page-header[data-v-21acfc18]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem}.page-header h1[data-v-21acfc18]{margin:0}.page-description[data-v-21acfc18]{margin:.25rem 0 0;font-size:.875rem;color:var(--color-text-soft)}.skeleton-list[data-v-21acfc18]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-21acfc18]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-21acfc18]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-21acfc18]{margin-bottom:1rem}.session-list[data-v-21acfc18]{display:flex;flex-direction:column;gap:1rem}.status-filters[data-v-21acfc18]{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.filter-label[data-v-21acfc18]{font-size:.875rem;color:var(--color-text-soft)}.filter-btn[data-v-21acfc18]{background:none;border:1px solid var(--color-border);padding:.375rem .75rem;font-size:.8rem;color:var(--color-text-soft);cursor:pointer;border-radius:var(--border-radius);transition:all .15s;text-transform:capitalize}.filter-btn[data-v-21acfc18]:hover{border-color:var(--color-primary);color:var(--color-text)}.star-icon[data-v-21acfc18]{position:relative;display:inline-block}.filter-btn.star-filter-all[data-v-21acfc18]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.star-filter-all[data-v-21acfc18]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.star-filter-active[data-v-21acfc18],.filter-btn.active[data-v-21acfc18]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.star-filter-unstarred[data-v-21acfc18]{background:transparent;border-color:#f97316;color:#f97316}.star-crossed[data-v-21acfc18]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index--OtPwBbF.js","assets/index-DkLkDgig.js","assets/index-gmCCsCQ1.css","assets/SessionDetailView-CHYrx2Ab.js","assets/sessions-CMby7ij3.js","assets/ApiClient-Dbs1H78V.js","assets/settings-BplIxCbi.js","assets/projects-C2Y29PSJ.js","assets/EffortLevelSelector-BHJHSqul.js","assets/EffortLevelSelector-BQaQmU2d.css","assets/SessionLogStream-B-w3n4c3.js","assets/commandButtons-CY87n64i.js","assets/SessionLogStream-zPUTiGbe.css","assets/ArchiveConfirmModal-DBuOmtXu.js","assets/ModelSelector-BWIU4ud7.js","assets/providers-CeJXuo0Q.js","assets/ModelSelector-DPPD-92R.css","assets/SlashCommandWizard-CzyLjsdJ.js","assets/SlashCommandWizard-BB30cSvo.css","assets/ArchiveConfirmModal-CQZeuYBz.css","assets/QuickResponseSettings-Bk9mq96x.js","assets/QuickResponseSettings-B8188A1D.css","assets/QuickResponsesPanel-BRvcnkQr.js","assets/QuickResponsesPanel-DIBQFj0W.css","assets/ResizableTextarea-CwGM4P3c.js","assets/ResizableTextarea-B5nAA0RV.css","assets/SessionDetailView-7bWgC7Es.css","assets/style-BTin-zR_.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{l as E,m as d,z as T,a as l,c as V,G as h,w as u,b as m,e as k,d as w,u as y,a3 as x,O as P,P as p}from"./index-DkLkDgig.js";import{u as b}from"./SessionDetailView-CHYrx2Ab.js";import"./sessions-CMby7ij3.js";import"./ApiClient-Dbs1H78V.js";import"./settings-BplIxCbi.js";import"./projects-C2Y29PSJ.js";import"./EffortLevelSelector-BHJHSqul.js";import"./SessionLogStream-B-w3n4c3.js";import"./commandButtons-CY87n64i.js";import"./ArchiveConfirmModal-DBuOmtXu.js";import"./ModelSelector-BWIU4ud7.js";import"./providers-CeJXuo0Q.js";import"./SlashCommandWizard-CzyLjsdJ.js";import"./QuickResponseSettings-Bk9mq96x.js";import"./QuickResponsesPanel-BRvcnkQr.js";import"./ResizableTextarea-CwGM4P3c.js";const A={class:"canvas-md-editor"},J={__name:"MarkdownEditor",props:{content:{type:String,default:""},sessionId:{type:String,required:!0},filename:{type:String,required:!0},itemId:{type:String,required:!0}},emits:["save"],setup(c,{expose:v,emit:f}){const _=P(()=>p(()=>import("./index--OtPwBbF.js").then(e=>e.w),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])).then(e=>p(()=>Promise.resolve({}),__vite__mapDeps([27])).then(()=>e.MdEditor))),r=c,n=f,g=b(),t=E(r.content||"");let o=null,i=r.content||"";d(t,e=>{o&&clearTimeout(o),o=setTimeout(()=>{i=e,n("save",e)},1e3)});function s(){o&&(clearTimeout(o),o=null),t.value!==i&&n("save",t.value)}return v({flushPendingSave:s}),d(()=>r.content,e=>{e!==t.value&&(t.value=e||"")}),T(()=>{s(),g.endEditing(r.filename)}),(e,a)=>(l(),V("div",A,[(l(),h(x,null,{default:u(()=>[w(y(_),{modelValue:t.value,"onUpdate:modelValue":a[0]||(a[0]=S=>t.value=S),theme:"dark",preview:!1,language:"en-US","no-upload-img":!0,"show-code-row-number":!0},null,8,["modelValue"])]),fallback:u(()=>[...a[1]||(a[1]=[m("div",{class:"editor-loading"},[m("span",{class:"loading-spinner"}),k(" Loading editor... ")],-1)])]),_:1}))]))}};export{J as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as J,m as Z,x as q,l as h,_ as W,a as i,c as d,b as e,q as ee,F as R,r as F,j as E,v as A,n as te,t as k,u as t,h as z,e as N,a1 as se,d as Q,k as g,E as le,$ as G,o as oe}from"./index-DkLkDgig.js";import{u as X}from"./providers-CeJXuo0Q.js";import"./ApiClient-Dbs1H78V.js";function ae(U,b,p){const r=X(),c=J(),l=h({name:"",baseUrl:null,authToken:null,apiTimeoutMs:null,additionalEnvVars:{}}),_=h([]),f=h([]),T=h(!1),w=h(!1),C=h(!1),y=h(null),P=h(null),I=h(!1),B=q(()=>!!b.value),V=q(()=>l.value.name.trim().length>0),n=q(()=>l.value.baseUrl||l.value.authToken);Z(()=>[U.value,b.value],([s,a])=>{s&&(a?(l.value={name:a.name,baseUrl:a.baseUrl,authToken:a.authToken==="••••••••"?null:a.authToken,apiTimeoutMs:a.apiTimeoutMs,additionalEnvVars:a.additionalEnvVars?{...a.additionalEnvVars}:{}},f.value=Object.keys(l.value.additionalEnvVars),I.value=!1,_.value=(a.models||[]).map(v=>({_serverId:v.id,modelId:v.modelId,displayName:v.displayName,tier:v.tier||"custom"}))):(l.value={name:"",baseUrl:null,authToken:null,apiTimeoutMs:null,additionalEnvVars:{}},f.value=[],_.value=[],I.value=!0),T.value=!1,y.value=null,P.value=null)},{deep:!0});function u(){_.value.push({modelId:"",displayName:"",tier:"custom"})}function S(s){_.value.splice(s,1)}function H(){const s=`ENV_VAR_${Object.keys(l.value.additionalEnvVars).length+1}`;l.value.additionalEnvVars[s]="",f.value.push(s)}function K(s){delete l.value.additionalEnvVars[s],f.value=f.value.filter(a=>a!==s)}function L(s,a){const v=f.value[s];if(v!==a&&v.trim()){const M=l.value.additionalEnvVars[a];delete l.value.additionalEnvVars[a],l.value.additionalEnvVars[v]=M}}async function x(){C.value=!0,y.value=null,P.value=null;try{const s=_.value.find(v=>v.tier==="sonnet"),a={baseUrl:l.value.baseUrl||void 0,authToken:l.value.authToken||void 0,defaultSonnetModel:(s==null?void 0:s.modelId)||void 0,apiTimeoutMs:l.value.apiTimeoutMs||void 0};P.value=await r.testConnection(a)}catch(s){y.value=s.message}finally{C.value=!1}}function O(s,a){return s.modelId.trim()!==a.modelId||s.displayName.trim()!==a.displayName||s.tier!==a.tier}function j(s){return{modelId:s.modelId.trim(),displayName:s.displayName.trim()||s.modelId.trim(),tier:s.tier||"custom"}}async function o(s,a,v){if(!s._serverId&&s.modelId.trim()){await r.addModel(a,j(s));return}const M=v.get(s._serverId);M&&O(s,M)&&await r.updateModel(a,s._serverId,j(s))}async function m(s){var Y;const a=new Set(_.value.filter($=>$._serverId).map($=>$._serverId)),v=((Y=b.value)==null?void 0:Y.models)||[],M=new Map(v.map($=>[$.id,$]));for(const $ of v)a.has($.id)||await r.removeModel(s,$.id);for(const $ of _.value)await o($,s,M);await r.fetchProviders()}async function D(){var s,a;w.value=!0,y.value=null;try{const v={name:l.value.name.trim(),baseUrl:((s=l.value.baseUrl)==null?void 0:s.trim())||null,apiTimeoutMs:l.value.apiTimeoutMs||null,additionalEnvVars:Object.keys(l.value.additionalEnvVars).length>0?l.value.additionalEnvVars:null};I.value&&(v.authToken=((a=l.value.authToken)==null?void 0:a.trim())||null);let M;B.value?(M=await r.updateProvider(b.value.id,v),c.success("Provider updated successfully")):(M=await r.createProvider(v),c.success("Provider created successfully")),await m(M.id),p()}catch(v){y.value=v.message}finally{w.value=!1}}return{form:l,localModels:_,envVarKeys:f,showAuthToken:T,saving:w,testing:C,error:y,testResult:P,authTokenModified:I,isEditing:B,isValid:V,canTest:n,addLocalModel:u,removeLocalModel:S,addEnvVar:H,removeEnvVar:K,updateEnvVarKey:L,testConnection:x,save:D}}const ne={class:"models-section"},ie={key:0,class:"models-list"},de=["onUpdate:modelValue"],ue=["onUpdate:modelValue"],re=["onUpdate:modelValue"],ce=["onClick"],ve={key:1,class:"models-empty"},me={__name:"ProviderModelsList",props:{models:{type:Array,required:!0}},emits:["add","remove"],setup(U){return(b,p)=>(i(),d("div",ne,[p[3]||(p[3]=e("div",{class:"models-header"},[e("span",{class:"models-title"},"Models"),e("span",{class:"models-hint"},"Assign tiers to map provider models to Opus / Sonnet / Haiku roles")],-1)),U.models.length>0?(i(),d("div",ie,[p[2]||(p[2]=ee('<div class="model-row model-row-header" data-v-3aa7217a><span class="col-model-id" data-v-3aa7217a>Model ID</span><span class="col-display-name" data-v-3aa7217a>Display Name</span><span class="col-tier" data-v-3aa7217a>Tier</span><span class="col-actions" data-v-3aa7217a></span></div>',1)),(i(!0),d(R,null,F(U.models,(r,c)=>(i(),d("div",{key:c,class:"model-row"},[E(e("input",{"onUpdate:modelValue":l=>r.modelId=l,type:"text",placeholder:"anthropic.claude-3-sonnet-…",class:"col-model-id model-input"},null,8,de),[[A,r.modelId]]),E(e("input",{"onUpdate:modelValue":l=>r.displayName=l,type:"text",placeholder:"My Sonnet",class:"col-display-name model-input"},null,8,ue),[[A,r.displayName]]),E(e("select",{"onUpdate:modelValue":l=>r.tier=l,class:"col-tier model-input tier-select"},[...p[1]||(p[1]=[e("option",{value:"opus"}," Opus ",-1),e("option",{value:"sonnet"}," Sonnet ",-1),e("option",{value:"haiku"}," Haiku ",-1),e("option",{value:"custom"}," Custom ",-1)])],8,re),[[te,r.tier]]),e("button",{type:"button",class:"col-actions remove-model-btn",title:"Remove model",onClick:l=>b.$emit("remove",c)}," × ",8,ce)]))),128))])):(i(),d("div",ve," No models added yet. ")),e("button",{type:"button",class:"btn btn-sm btn-secondary add-model-btn",onClick:p[0]||(p[0]=r=>b.$emit("add"))}," + Add Model ")]))}},pe=W(me,[["__scopeId","data-v-3aa7217a"]]),be={class:"modal"},fe={class:"modal-header"},ye={class:"modal-body"},_e={class:"form-group"},ke={class:"form-group"},he={class:"form-group"},ge={class:"token-input-wrapper"},Ve=["type"],$e=["title"],Me={class:"expandable-section"},Te={class:"section-content"},Ce={class:"form-group"},Ee={class:"form-group"},Ue={class:"env-vars-list"},we=["onUpdate:modelValue","onBlur"],Pe=["onUpdate:modelValue"],Ie=["onClick"],Se={key:0,class:"error-message"},Ae={class:"test-result-header"},Ne={class:"test-icon"},Be={class:"test-message"},xe={key:0,class:"test-details"},De={key:0,class:"test-detail"},Oe={key:1,class:"test-detail"},Le={class:"modal-footer"},Re=["disabled"],Fe={class:"footer-actions"},He=["disabled"],Ke=["disabled"],je={__name:"ProviderForm",props:{isOpen:{type:Boolean,default:!1},provider:{type:Object,default:null}},emits:["close","saved"],setup(U,{emit:b}){const p=U,r=b,{form:c,localModels:l,envVarKeys:_,showAuthToken:f,saving:T,testing:w,error:C,testResult:y,authTokenModified:P,isEditing:I,isValid:B,canTest:V,addLocalModel:n,removeLocalModel:u,addEnvVar:S,removeEnvVar:H,updateEnvVarKey:K,testConnection:L,save:x}=ae(G(p,"isOpen"),G(p,"provider"),()=>r("saved"));function O(){r("close")}return(j,o)=>U.isOpen?(i(),d("div",{key:0,class:"modal-overlay",onClick:z(O,["self"])},[e("div",be,[e("div",fe,[e("h2",null,k(t(I)?"Edit Provider":"Add Provider"),1),e("button",{type:"button",class:"close-btn",title:"Close",onClick:O}," × ")]),e("div",ye,[e("form",{onSubmit:o[7]||(o[7]=z((...m)=>t(x)&&t(x)(...m),["prevent"]))},[e("div",_e,[o[10]||(o[10]=e("label",{for:"provider-name"},"Provider Name*",-1)),E(e("input",{id:"provider-name","onUpdate:modelValue":o[0]||(o[0]=m=>t(c).name=m),type:"text",placeholder:"e.g., AWS Bedrock",required:"",maxlength:"100"},null,512),[[A,t(c).name]])]),e("div",ke,[o[11]||(o[11]=e("label",{for:"base-url"},[N(" Base URL "),e("span",{class:"label-hint"},"(ANTHROPIC_BASE_URL)")],-1)),E(e("input",{id:"base-url","onUpdate:modelValue":o[1]||(o[1]=m=>t(c).baseUrl=m),type:"url",placeholder:"https://bedrock-runtime.us-east-1.amazonaws.com"},null,512),[[A,t(c).baseUrl]])]),e("div",he,[o[12]||(o[12]=e("label",{for:"auth-token"},[N(" Auth Token "),e("span",{class:"label-hint"},"(ANTHROPIC_AUTH_TOKEN)")],-1)),e("div",ge,[E(e("input",{id:"auth-token","onUpdate:modelValue":o[2]||(o[2]=m=>t(c).authToken=m),type:t(f)?"text":"password",placeholder:"Your authentication token",onInput:o[3]||(o[3]=m=>P.value=!0)},null,40,Ve),[[se,t(c).authToken]]),e("button",{type:"button",class:"toggle-visibility-btn",title:t(f)?"Hide":"Show",onClick:o[4]||(o[4]=m=>f.value=!t(f))},k(t(f)?"Hide":"Show"),9,$e)])]),Q(pe,{models:t(l),onAdd:t(n),onRemove:t(u)},null,8,["models","onAdd","onRemove"]),e("details",Me,[o[15]||(o[15]=e("summary",{class:"section-header"}," Advanced Settings ",-1)),e("div",Te,[e("div",Ce,[o[13]||(o[13]=e("label",{for:"api-timeout"},"API Timeout (ms)",-1)),E(e("input",{id:"api-timeout","onUpdate:modelValue":o[5]||(o[5]=m=>t(c).apiTimeoutMs=m),type:"number",placeholder:"120000",min:"1000",step:"1000"},null,512),[[A,t(c).apiTimeoutMs,void 0,{number:!0}]])]),e("div",Ee,[o[14]||(o[14]=e("label",null,"Additional Environment Variables",-1)),e("div",Ue,[(i(!0),d(R,null,F(t(c).additionalEnvVars,(m,D,s)=>(i(),d("div",{key:s,class:"env-var-row"},[E(e("input",{"onUpdate:modelValue":a=>t(_)[s]=a,type:"text",placeholder:"KEY",class:"env-key",onBlur:a=>t(K)(s,D)},null,40,we),[[A,t(_)[s]]]),E(e("input",{"onUpdate:modelValue":a=>t(c).additionalEnvVars[D]=a,type:"text",placeholder:"value",class:"env-value"},null,8,Pe),[[A,t(c).additionalEnvVars[D]]]),e("button",{type:"button",class:"remove-env-btn",title:"Remove",onClick:a=>t(H)(D)}," × ",8,Ie)]))),128)),e("button",{type:"button",class:"btn btn-sm btn-secondary",onClick:o[6]||(o[6]=(...m)=>t(S)&&t(S)(...m))}," + Add Variable ")])])])]),t(C)?(i(),d("div",Se,k(t(C)),1)):g("",!0),t(y)?(i(),d("div",{key:1,class:le(["test-result",t(y).success?"success":"failure"])},[e("div",Ae,[e("span",Ne,k(t(y).success?"✓":"✗"),1),e("span",Be,k(t(y).message),1)]),t(y).details?(i(),d("div",xe,[t(y).details.model?(i(),d("div",De,[o[16]||(o[16]=N(" Model: ",-1)),e("code",null,k(t(y).details.model),1)])):g("",!0),t(y).details.code?(i(),d("div",Oe,[o[17]||(o[17]=N(" Error Code: ",-1)),e("code",null,k(t(y).details.code),1)])):g("",!0)])):g("",!0)],2)):g("",!0)],32)]),e("div",Le,[e("button",{type:"button",class:"btn btn-secondary",disabled:t(T)||t(w)||!t(V),onClick:o[8]||(o[8]=(...m)=>t(L)&&t(L)(...m))},k(t(w)?"Testing...":"Test Connection"),9,Re),e("div",Fe,[e("button",{type:"button",class:"btn btn-secondary",disabled:t(T),onClick:O}," Cancel ",8,He),e("button",{type:"button",class:"btn btn-primary",disabled:t(T)||!t(B),onClick:o[9]||(o[9]=(...m)=>t(x)&&t(x)(...m))},k(t(T)?"Saving...":"Save"),9,Ke)])])])])):g("",!0)}},qe=W(je,[["__scopeId","data-v-a4048df1"]]),ze={class:"container"},We={key:0,class:"skeleton-list"},Ye={key:1,class:"error-message"},Ge={key:2,class:"provider-list"},Je={class:"provider-header"},Qe={class:"provider-title"},Xe={key:0,class:"built-in-badge"},Ze={class:"provider-actions"},et=["disabled","onClick"],tt=["onClick"],st=["onClick"],lt={class:"provider-details"},ot={key:0,class:"provider-detail"},at={class:"detail-value"},nt={key:1,class:"provider-detail"},it={class:"detail-value"},dt={key:2,class:"provider-detail"},ut={class:"modal confirm-modal"},rt={class:"modal-header"},ct={class:"modal-body"},vt={class:"modal-footer"},mt=["disabled"],pt={__name:"ProvidersView",setup(U){const b=X(),p=J(),r=h(!1),c=h(null),l=h(null),_=h(!1),f=h(null);oe(()=>{b.fetchProviders()});function T(){c.value=null,r.value=!0}function w(V){c.value=V,r.value=!0}function C(){r.value=!1,c.value=null}function y(){C(),b.fetchProviders()}async function P(V){f.value=V;try{const n=await b.testExistingProvider(V);n.success?p.success(`Connection successful (model: ${n.details.model})`):p.error(`Connection failed: ${n.message}`)}catch(n){p.error(`Test failed: ${n.message}`)}finally{f.value=null}}function I(V){l.value=V}async function B(){_.value=!0;try{await b.deleteProvider(l.value.id),p.success("Provider deleted"),l.value=null}catch(V){p.error(`Failed to delete provider: ${V.message}`)}finally{_.value=!1}}return(V,n)=>(i(),d("div",ze,[e("div",{class:"page-header"},[e("button",{class:"btn btn-primary",onClick:T},[...n[3]||(n[3]=[e("span",null,"+ Add Provider",-1)])])]),n[11]||(n[11]=e("p",{class:"page-description"}," Configure custom model providers to use Claude through alternative endpoints like AWS Bedrock, Google Vertex AI, or self-hosted proxies. ",-1)),t(b).loading?(i(),d("div",We,[(i(),d(R,null,F(3,u=>e("div",{key:u,class:"skeleton card",style:{height:"120px"}})),64))])):t(b).error?(i(),d("div",Ye,k(t(b).error),1)):(i(),d("div",Ge,[(i(!0),d(R,null,F(t(b).providers,u=>(i(),d("div",{key:u.id,class:"provider-card card"},[e("div",Je,[e("div",Qe,[e("h3",null,[N(k(u.name)+" ",1),u.isBuiltIn?(i(),d("span",Xe,"Built-in")):g("",!0)])]),e("div",Ze,[u.isBuiltIn?g("",!0):(i(),d("button",{key:0,class:"btn btn-sm",disabled:f.value===u.id,title:"Test Connection",onClick:S=>P(u.id)},k(f.value===u.id?"Testing...":"Test"),9,et)),u.isBuiltIn?g("",!0):(i(),d("button",{key:1,class:"btn btn-sm",onClick:S=>w(u)}," Edit ",8,tt)),u.isBuiltIn?g("",!0):(i(),d("button",{key:2,class:"btn btn-sm btn-danger",onClick:S=>I(u)}," Delete ",8,st))])]),e("div",lt,[u.baseUrl?(i(),d("div",ot,[n[4]||(n[4]=e("span",{class:"detail-label"},"Base URL:",-1)),e("code",at,k(u.baseUrl),1)])):g("",!0),u.defaultSonnetModel?(i(),d("div",nt,[n[5]||(n[5]=e("span",{class:"detail-label"},"Default Sonnet Model:",-1)),e("code",it,k(u.defaultSonnetModel),1)])):g("",!0),!u.baseUrl&&u.isBuiltIn?(i(),d("div",dt,[...n[6]||(n[6]=[e("span",{class:"detail-value"},"Uses official Anthropic API",-1)])])):g("",!0)])]))),128))])),Q(qe,{"is-open":r.value,provider:c.value,onClose:C,onSaved:y},null,8,["is-open","provider"]),l.value?(i(),d("div",{key:3,class:"modal-overlay",onClick:n[2]||(n[2]=z(u=>l.value=null,["self"]))},[e("div",ut,[e("div",rt,[n[7]||(n[7]=e("h2",null,"Delete Provider",-1)),e("button",{type:"button",class:"close-btn",onClick:n[0]||(n[0]=u=>l.value=null)}," × ")]),e("div",ct,[e("p",null,[n[8]||(n[8]=N("Are you sure you want to delete ",-1)),e("strong",null,k(l.value.name),1),n[9]||(n[9]=N("?",-1))]),n[10]||(n[10]=e("p",{class:"warning-text"}," This action cannot be undone. ",-1))]),e("div",vt,[e("button",{type:"button",class:"btn btn-secondary",onClick:n[1]||(n[1]=u=>l.value=null)}," Cancel "),e("button",{type:"button",class:"btn btn-danger",disabled:_.value,onClick:B},k(_.value?"Deleting...":"Delete"),9,mt)])])])):g("",!0)]))}},_t=W(pt,[["__scopeId","data-v-27d620fd"]]);export{_t as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as de,y as Me,x as U,z as De,l as R,A as Je,B as Qe,C as Xe,_ as ge,a as s,c as o,b as e,F as J,r as Q,u as v,E as ne,t as _,k as S,G as Z,i as _e,f as Te,d as Y,w as ve,o as Oe,j as N,v as fe,n as $e,e as re,h as ae,g as Ne,q as Pe,H as xe,p as Le,I as Ze,J as Ve,s as et}from"./index-DkLkDgig.js";import{u as Ue}from"./projects-C2Y29PSJ.js";import{u as ye}from"./sessions-CMby7ij3.js";import{u as je,a as Ge,f as tt,b as st}from"./SessionLogStream-B-w3n4c3.js";import{a as Be}from"./ApiClient-Dbs1H78V.js";import{u as Ke}from"./commandButtons-CY87n64i.js";import{S as qe}from"./SessionCard-BGDVHU9u.js";import{S as nt,M as ot,A as lt}from"./ArchiveConfirmModal-DBuOmtXu.js";import{u as He}from"./EffortLevelSelector-BHJHSqul.js";import{u as at}from"./providers-CeJXuo0Q.js";import{M as rt}from"./ModelSelector-BWIU4ud7.js";import{I as We}from"./InterpolationHelp-DabnHhE4.js";import{R as it}from"./ResizableTextarea-CwGM4P3c.js";import{S as dt}from"./SessionFormOptions-8qvL25ca.js";import{S as ut,a as ct}from"./SlashCommandWizard-CzyLjsdJ.js";import"./settings-BplIxCbi.js";function mt(){const c=Me({}),m=Me({}),i=Me({});async function p(a){const n=a.filter(f=>!c[f.id]&&!m[f.id]).map(f=>f.id);if(n.length!==0){for(const f of n)m[f]=!0,i[f]=!1;try{const f=await Be.getSessionSummariesBatch(n);for(const r of n)f[r]&&(c[r]=f[r]),m[r]=!1}catch(f){console.warn("Failed to fetch summaries batch:",f.message);for(const r of n)i[r]=!0,m[r]=!1}}}async function u(a){var n;m[a]=!0,i[a]=!1;try{const f=await Be.getSessionSummary(a);f&&(c[a]=f)}catch(f){((n=f.response)==null?void 0:n.status)!==404&&(console.warn(`Failed to fetch summary for session ${a}:`,f.message),i[a]=!0)}finally{m[a]=!1}}async function y(a){i[a]=!1,await u(a)}function A(a,n){c[a]=n,m[a]=!1,i[a]=!1}function E(a){delete c[a],delete m[a],delete i[a]}function g(a,n=400){let f=null;const r=de(a,()=>{clearTimeout(f),f=setTimeout(()=>{const w=a();p(w)},n)});return()=>{clearTimeout(f),r()}}return{summaries:c,loadingSummaries:m,summaryErrors:i,fetchSummariesBatch:p,fetchSummary:u,retryFetchSummary:y,updateSummary:A,cleanupSummary:E,watchSessionsForSummaries:g}}function ze(){const c=ye();function m(a){c.statusFilter===a?c.setStatusFilter(null):c.setStatusFilter(a)}function i(a){c.starredFilter===a?c.setStarredFilter(null):c.setStarredFilter(a)}function p(){c.starredFilter===null?c.setStarredFilter("starred"):c.starredFilter==="starred"?c.setStarredFilter("unstarred"):c.setStarredFilter(null)}const u=U(()=>c.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":c.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred.");function y(){c.scheduledFilter===null?c.setScheduledFilter("scheduled"):c.scheduledFilter==="scheduled"?c.setScheduledFilter("not-scheduled"):c.setScheduledFilter(null)}const A=U(()=>c.scheduledFilter==="scheduled"?"Showing workflows with scheduled sessions. Click to filter non-scheduled.":c.scheduledFilter==="not-scheduled"?"Showing workflows without scheduled sessions. Click to show all.":"Showing all workflows. Click to filter by scheduled."),E=U(()=>{let a=c.groupedSessions;c.starredFilter==="starred"?a=a.filter($=>$.parent.starred):c.starredFilter==="unstarred"&&(a=a.filter($=>!$.parent.starred));const n=a.map($=>({group:$,status:c.getWorkflowAggregatedStatus($.parent.id)}));let f=n;c.scheduledFilter&&(f=n.filter(({status:$})=>{const j=$.scheduledCount>0;return c.scheduledFilter==="scheduled"?j:!j}));let r=0,w=0;for(const{status:$}of f)$.effectiveStatus==="running"?r++:w++;return{running:r,idle:w}}),g=U(()=>{let a=c.groupedSessions;return c.statusFilter&&(a=a.filter(n=>{const r=c.getWorkflowAggregatedStatus(n.parent.id).effectiveStatus;return c.statusFilter==="running"&&r==="running"||c.statusFilter==="idle"&&r==="idle"})),c.starredFilter==="starred"?a=a.filter(n=>n.parent.starred):c.starredFilter==="unstarred"&&(a=a.filter(n=>!n.parent.starred)),c.scheduledFilter&&(a=a.filter(n=>{const r=c.getWorkflowAggregatedStatus(n.parent.id).scheduledCount>0;return!!(c.scheduledFilter==="scheduled"&&r||c.scheduledFilter==="not-scheduled"&&!r)})),a});return{toggleFilter:m,toggleStarredFilter:i,toggleStarFilterIcon:p,starFilterTooltip:u,toggleScheduledFilterIcon:y,scheduledFilterTooltip:A,filteredGroupedSessions:g,statusFilterCounts:E}}function pt(c,m){const i=Ue(),p=ye(),u=Ke(),y=je(),{fetchSummariesBatch:A,updateSummary:E,cleanupSummary:g}=m,a=[];let n=null;const f=R(!1);return de(c,async r=>{if(!r)return;f.value=!1,a.forEach(M=>M()),a.length=0,n&&(n(),n=null),await i.fetchProject(r),await p.fetchSessions(r),await u.fetchButtons(r),A(p.sessions);const{subscribe:w,unsubscribe:$,onSessionCreated:j,onSessionUpdated:l,onSessionDeleted:H,onSessionSummaryUpdated:W,onCommandRunOutput:B,onCommandRunComplete:F,onCommandRunError:d,onCommandRunDeleted:z,onKanbanBoardUpdated:b,onKanbanCardMoved:ee,onKanbanCardAdded:oe,onKanbanCardRemoved:te}=Je(r);n=$,w(),a.push(j(M=>{p.addSessionToList(M)})),a.push(l(M=>{p.updateSession(M)})),a.push(H(M=>{p.removeSessionFromList(M),g(M)})),a.push(W((M,P)=>{E(M,P)})),a.push(B((M,P,T,t)=>{var me;const h=u.runs[M],ie=p.sessions.find(he=>he.id===P),le=(me=ie==null?void 0:ie.latestCommandRuns)==null?void 0:me.find(he=>he.runId===M),ce=(h==null?void 0:h.startedAt)||(le==null?void 0:le.startedAt)||Date.now();u.runs[M]||(u.runs[M]={runId:M,buttonId:T,sessionId:P,status:"running",output:"",exitCode:null,startedAt:ce,outputTruncated:!1}),u.appendOutput(M,t),p.updateSessionCommandRun(P,T,{buttonId:T,status:"running",runId:M,startedAt:ce})})),a.push(F(({runId:M,sessionId:P,buttonId:T,exitCode:t,output:h})=>{u.runs[M]||(u.runs[M]={runId:M,buttonId:T,sessionId:P,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.completeRun(M,t,h);const G=t===0?"success":"error";p.updateSessionCommandRun(P,T,{buttonId:T,status:G,exitCode:t,runId:M,completedAt:Date.now()})})),a.push(d((M,P,T,t)=>{u.runs[M]||(u.runs[M]={runId:M,buttonId:T,sessionId:P,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),u.errorRun(M,t),p.updateSessionCommandRun(P,T,{buttonId:T,status:"error",runId:M,completedAt:Date.now()})})),a.push(z((M,P,T)=>{u.clearRun(M),p.removeSessionCommandRun(P,T)})),a.push(b(M=>{y.handleBoardUpdated(M)})),a.push(ee((M,P,T,t)=>{y.handleCardMoved(M,P,T,t)})),a.push(oe((M,P)=>{y.handleCardAdded(M,P)})),a.push(te((M,P)=>{y.handleCardRemoved(M,P)}))},{immediate:!0}),De(()=>{a.forEach(r=>r()),n&&n()}),{archivedLoaded:f}}function vt(){const c=ye(),m=Ge(),i=R({}),p={},u=new Map,y=4;function A(r,w=0){fetch(`/api/sessions/${r}/streaming-state`).then($=>$.ok?$.json():null).then($=>{var j;if($&&((j=$.workLogs)!=null&&j.length||$.partialText||$.thinking)){m.hydrateSessionState(r,$);const l=u.get(r);l&&(clearTimeout(l.timeout),u.delete(r))}else E(r,w)}).catch(()=>{E(r,w)})}function E(r,w=0){if(w>=y||!i.value[r])return;const $=c.sessions.find(H=>H.id===r);if(!$||!["running","starting"].includes($.status))return;const j=1500*Math.pow(2,w),l=setTimeout(()=>{u.delete(r),A(r,w+1)},j);u.set(r,{count:w,timeout:l})}function g(r){if(i.value[r])return;const w=Xe(r),$=[];$.push(w.onWorkLog(j=>{m.addSessionWorkLog(r,j)})),$.push(w.onPartial(j=>{j&&m.setSessionPartialText(r,j)})),$.push(w.onThinkingPartial(j=>{j&&m.setPartialThinking(j,r)})),$.push(w.onChangesUpdate(j=>{m.setSessionFileCount(r,j)})),$.push(w.onStatus(j=>{["running","starting"].includes(j)?p[r]&&(clearTimeout(p[r]),delete p[r]):p[r]=setTimeout(()=>{delete p[r],m.clearSessionEphemeralState(r)},2e3)})),w.subscribe(),i.value[r]={subscription:w,cleanup:()=>{$.forEach(j=>j&&j()),w.unsubscribe()}},A(r)}function a(r){const w=i.value[r];w&&(w.cleanup(),delete i.value[r]),p[r]&&(clearTimeout(p[r]),delete p[r]);const $=u.get(r);$&&(clearTimeout($.timeout),u.delete(r))}de(()=>c.sessions.filter(r=>["running","starting"].includes(r.status)).map(r=>r.id),(r,w=[])=>{const $=r.filter(l=>!w.includes(l)),j=w.filter(l=>!r.includes(l));$.forEach(l=>g(l)),j.forEach(l=>a(l))},{immediate:!0});const{onReconnect:n}=Qe(),f=n(()=>{for(const r of Object.keys(i.value))A(r)});return De(()=>{Object.keys(i.value).forEach(r=>a(r)),f()}),{activeSubscriptions:i}}const ft={class:"filters-container"},ht={class:"status-filters"},bt=["aria-label","onClick"],gt={class:"filter-label"},yt={class:"filter-count"},kt=["title"],St={key:0,class:"star-icon"},$t={key:1,class:"star-icon star-crossed"},Et={key:2,class:"star-icon"},Ct=["title"],wt={key:0,class:"schedule-icon"},_t={key:1,class:"schedule-icon schedule-crossed"},Tt={key:2,class:"schedule-icon"},jt={__name:"SessionFiltersPanel",props:{showStatusFilters:{type:Boolean,default:!0},showScheduledFilter:{type:Boolean,default:!0}},setup(c){const m=ye(),{toggleFilter:i,toggleStarFilterIcon:p,starFilterTooltip:u,toggleScheduledFilterIcon:y,scheduledFilterTooltip:A,statusFilterCounts:E}=ze();return(g,a)=>(s(),o("div",ft,[e("div",ht,[c.showStatusFilters?(s(),o(J,{key:0},Q(["running","idle"],n=>e("button",{key:n,class:ne(["filter-btn",{active:v(m).statusFilter===n,"filter-btn-empty":v(E)[n]===0}]),"aria-label":`${n} (${v(E)[n]})`,onClick:f=>v(i)(n)},[e("span",gt,_(n),1),e("span",yt,_(v(E)[n]),1)],10,bt)),64)):S("",!0),e("button",{class:ne(["filter-btn star-btn",{"star-filter-active":v(m).starredFilter==="starred","star-filter-unstarred":v(m).starredFilter==="unstarred","star-filter-all":v(m).starredFilter===null}]),title:v(u),onClick:a[0]||(a[0]=(...n)=>v(p)&&v(p)(...n))},[v(m).starredFilter==="starred"?(s(),o("span",St,"⭐")):v(m).starredFilter==="unstarred"?(s(),o("span",$t,"⭐")):(s(),o("span",Et,"☆"))],10,kt),c.showScheduledFilter?(s(),o("button",{key:1,class:ne(["filter-btn schedule-btn",{"schedule-filter-active":v(m).scheduledFilter==="scheduled","schedule-filter-not-scheduled":v(m).scheduledFilter==="not-scheduled","schedule-filter-all":v(m).scheduledFilter===null}]),title:v(A),onClick:a[1]||(a[1]=(...n)=>v(y)&&v(y)(...n))},[v(m).scheduledFilter==="scheduled"?(s(),o("span",wt,"⏰")):v(m).scheduledFilter==="not-scheduled"?(s(),o("span",_t,"⏰")):(s(),o("span",Tt,"⏰"))],10,Ct)):S("",!0)])]))}},Ie=ge(jt,[["__scopeId","data-v-2c9a63d9"]]),Mt={key:0,class:"skeleton-list"},Ft={key:1,class:"error-message"},Rt={key:2,class:"empty-state"},At={key:3,class:"session-list"},xt={key:0,class:"load-more-container"},Lt=["disabled"],Bt={key:0},Dt={key:1},Ot={__name:"ArchivedTabContent",props:{summaries:{type:Object,required:!0},loadingSummaries:{type:Object,required:!0},summaryErrors:{type:Object,required:!0}},emits:["retrySummary","unarchive","loadMore"],setup(c){const m=ye(),i=U(()=>{const{total:p,offset:u}=m.archivedPagination;return Math.max(0,p-u)});return(p,u)=>(s(),o("div",null,[v(m).archivedPagination.loading&&v(m).archivedSessions.length===0?(s(),o("div",Mt,[(s(),o(J,null,Q(3,y=>e("div",{key:y,class:"skeleton card",style:{height:"120px"}})),64))])):v(m).error?(s(),o("div",Ft,_(v(m).error),1)):v(m).archivedSessions.length===0?(s(),o("div",Rt,[...u[3]||(u[3]=[e("p",null,"No archived sessions. Archive completed sessions to keep your session list tidy.",-1)])])):(s(),o("div",At,[(s(!0),o(J,null,Q(v(m).archivedSessions,y=>(s(),Z(qe,{key:y.id,session:y,"show-summary":!0,summary:c.summaries[y.id],"summary-loading":c.loadingSummaries[y.id],"summary-error":c.summaryErrors[y.id],"show-unarchive":!0,"kanban-enabled":!1,"pr-url":y.prUrl,"pr-summary":c.summaries[y.id],onRetrySummary:u[0]||(u[0]=A=>p.$emit("retrySummary",A)),onUnarchive:u[1]||(u[1]=A=>p.$emit("unarchive",A))},null,8,["session","summary","summary-loading","summary-error","pr-url","pr-summary"]))),128)),v(m).archivedPagination.hasMore?(s(),o("div",xt,[e("button",{class:"btn btn-secondary",disabled:v(m).archivedPagination.loading,onClick:u[2]||(u[2]=y=>p.$emit("loadMore"))},[v(m).archivedPagination.loading?(s(),o("span",Bt,"Loading...")):(s(),o("span",Dt,"Load More ("+_(i.value)+" remaining)",1))],8,Lt)])):S("",!0)]))]))}},Pt=ge(Ot,[["__scopeId","data-v-c0906664"]]),Ut={class:"scheduled-session-card card"},Vt={class:"card-header"},It={class:"session-info"},Nt={class:"session-name"},Gt={class:"timing-info"},Kt={class:"timing-item"},qt={class:"timing-details"},Ht={class:"timing-text"},Wt={class:"timing-absolute"},zt={key:0,class:"timing-item"},Yt={class:"timing-details"},Jt={class:"timing-absolute"},Qt={class:"card-actions"},Xt=["disabled"],Zt=["disabled"],es={__name:"ScheduledSessionCard",props:{session:{type:Object,required:!0}},setup(c){const m=c,i=ye(),p=_e(),u=R(!1),y=R(!1),A=U(()=>{const n=new Date(m.session.scheduledAt);return tt(n,{addSuffix:!0})}),E=U(()=>{const n=new Date(m.session.scheduledAt);return st(n,"MMM d, h:mm a")});async function g(){if(confirm("Cancel this scheduled session?")){u.value=!0;try{await i.updateSessionFields(m.session.id,{status:"stopped"}),p.success("Session cancelled")}catch(n){console.error("Failed to cancel session:",n),p.error(`Failed to cancel session: ${n.message}`)}finally{u.value=!1}}}function a(){}return(n,f)=>{const r=Te("router-link");return s(),o("div",Ut,[e("div",Vt,[e("div",It,[Y(r,{to:`/sessions/${c.session.id}`,class:"session-name-link"},{default:ve(()=>[e("h3",Nt,_(c.session.name),1)]),_:1},8,["to"])]),f[2]||(f[2]=e("div",{class:"status-badge-container"},[e("span",{class:"status-badge status-scheduled"},"scheduled")],-1))]),e("div",Gt,[e("div",Kt,[f[3]||(f[3]=e("span",{class:"timing-icon"},"⏰",-1)),e("div",qt,[e("span",Ht,_(A.value),1),e("span",Wt,_(E.value),1)])]),c.session.autoRescheduleEnabled?(s(),o("div",zt,[f[5]||(f[5]=e("span",{class:"timing-icon"},"🔄",-1)),e("div",Yt,[f[4]||(f[4]=e("span",{class:"timing-text"},"Auto-reschedule",-1)),e("span",Jt," Attempt "+_(c.session.rescheduleCount)+"/"+_(c.session.maxRescheduleCount||"∞"),1)])])):S("",!0)]),e("div",Qt,[e("button",{class:"btn btn-secondary btn-small",disabled:u.value,onClick:f[0]||(f[0]=w=>y.value=!0)}," Edit Schedule ",8,Xt),e("button",{class:"btn btn-danger btn-small",disabled:u.value,onClick:g}," Cancel ",8,Zt)]),Y(nt,{"is-open":y.value,session:c.session,onClose:f[1]||(f[1]=w=>y.value=!1),onSaved:a},null,8,["is-open","session"])])}}},ts=ge(es,[["__scopeId","data-v-d41e6b57"]]),ss={key:0,class:"skeleton-list"},ns={key:1,class:"empty-state"},os={key:2,class:"session-list"},ls={__name:"ScheduledTabContent",props:{sessions:{type:Array,required:!0},loading:{type:Boolean,default:!1}},setup(c){return(m,i)=>(s(),o("div",null,[c.loading?(s(),o("div",ss,[(s(),o(J,null,Q(3,p=>e("div",{key:p,class:"skeleton card",style:{height:"120px"}})),64))])):c.sessions.length===0?(s(),o("div",ns,[...i[0]||(i[0]=[e("p",null,"No scheduled sessions. Use scheduling options when creating a new session to schedule it for later.",-1)])])):(s(),o("div",os,[(s(!0),o(J,null,Q(c.sessions,p=>(s(),Z(ts,{key:p.id,session:p},null,8,["session"]))),128))]))]))}},as=ge(ls,[["__scopeId","data-v-75cf4e60"]]),rs={class:"templates-panel"},is={class:"templates-header"},ds={key:0,class:"template-form card","data-testid":"template-form"},us={class:"form-group"},cs={class:"form-group"},ms={class:"form-group"},ps=["disabled"],vs={class:"form-group"},fs=["value"],hs={class:"form-group"},bs={class:"form-group"},gs={class:"form-group"},ys={class:"form-group"},ks={class:"form-actions"},Ss=["disabled"],$s={key:0,class:"loading-spinner"},Es={key:1,class:"loading-state"},Cs={key:2},ws={key:0,class:"template-section"},_s={class:"templates-list"},Ts={class:"template-header"},js={class:"template-name"},Ms={class:"template-prompt"},Fs={class:"template-meta"},Rs={key:0,class:"meta-badge"},As={key:1,class:"meta-badge"},xs={key:2,class:"meta-badge"},Ls={key:3,class:"meta-badge"},Bs={key:4,class:"meta-badge meta-badge-chain"},Ds={key:1,class:"template-section"},Os={class:"templates-list"},Ps={class:"template-header"},Us={class:"template-name"},Vs={class:"template-prompt"},Is={class:"template-meta"},Ns={key:0,class:"meta-badge"},Gs={key:1,class:"meta-badge"},Ks={key:2,class:"meta-badge"},qs={key:3,class:"meta-badge"},Hs={key:4,class:"meta-badge meta-badge-chain"},Ws={key:2,class:"empty-state"},zs={__name:"TemplatesPanel",props:{projectId:{type:String,required:!0}},setup(c,{expose:m}){const i=c,p=He(),u=_e(),y=at(),A=R(!1),E=R(!1),g=R({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}),a=U(()=>p.loading),n=U(()=>p.projectTemplates),f=U(()=>p.globalTemplates),r=U(()=>[...p.projectTemplates,...p.globalTemplates]);Oe(async()=>{y.providers.length===0&&await y.fetchProviders(),p.fetchProjectTemplates(i.projectId)}),de(()=>i.projectId,F=>{p.fetchProjectTemplates(F)});function w(F,d=100){return F.length<=d?F:`${F.substring(0,d)}...`}function $(F){const d=p.getTemplateById(F);return(d==null?void 0:d.name)||"Unknown"}function j(F){var d;for(const z of y.providers){const b=(d=z.models)==null?void 0:d.find(ee=>ee.modelId===F);if(b)return z.isBuiltIn?b.displayName:b.modelId}return F}function l(){g.value={name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}}function H(){A.value=!0}function W(){A.value=!1,l()}async function B(){if(!E.value){E.value=!0;try{const F={name:g.value.name,prompt:g.value.prompt,nextTemplateId:g.value.nextTemplateId||void 0,thinkingEnabled:g.value.thinkingEnabled,gitBranch:g.value.gitBranch||void 0,model:g.value.model,mode:g.value.mode};g.value.isGlobal?(await p.createGlobalTemplate(F),u.success("Global template created")):(await p.createProjectTemplate(i.projectId,F),u.success("Template created")),W()}catch(F){u.error(F.message)}finally{E.value=!1}}}return m({formData:g,getModelName:j,resetForm:l}),(F,d)=>{const z=Te("router-link");return s(),o("div",rs,[e("div",is,[d[8]||(d[8]=e("h2",null,"Session Templates",-1)),A.value?S("",!0):(s(),o("button",{key:0,class:"btn btn-primary btn-sm","data-testid":"new-template-btn",onClick:H}," New Template "))]),A.value?(s(),o("div",ds,[d[23]||(d[23]=e("h3",null,"Create Template",-1)),e("form",{onSubmit:ae(B,["prevent"])},[e("div",us,[d[9]||(d[9]=e("label",{class:"form-label"},"Name",-1)),N(e("input",{"onUpdate:modelValue":d[0]||(d[0]=b=>g.value.name=b),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[fe,g.value.name]])]),e("div",cs,[d[10]||(d[10]=e("label",{class:"form-label"},"Prompt",-1)),N(e("textarea",{"onUpdate:modelValue":d[1]||(d[1]=b=>g.value.prompt=b),class:"form-input form-textarea",placeholder:"Session prompt. Use {{rootSession.summary}} to reference root session data.",rows:"4",required:""},null,512),[[fe,g.value.prompt]]),Y(We)]),e("div",ms,[d[12]||(d[12]=e("label",{class:"form-label"},"Scope",-1)),N(e("select",{"onUpdate:modelValue":d[2]||(d[2]=b=>g.value.isGlobal=b),class:"form-input",disabled:F.editingTemplate},[...d[11]||(d[11]=[e("option",{value:!1}," Project Only ",-1),e("option",{value:!0}," Global (all projects) ",-1)])],8,ps),[[$e,g.value.isGlobal]])]),e("div",vs,[d[14]||(d[14]=e("label",{class:"form-label"},"Next Template (Optional)",-1)),N(e("select",{"onUpdate:modelValue":d[3]||(d[3]=b=>g.value.nextTemplateId=b),class:"form-input"},[d[13]||(d[13]=e("option",{value:null}," None ",-1)),(s(!0),o(J,null,Q(r.value,b=>(s(),o("option",{key:b.id,value:b.id},_(b.name)+" "+_(b.projectId?"":"(Global)"),9,fs))),128))],512),[[$e,g.value.nextTemplateId]]),d[15]||(d[15]=e("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),e("div",hs,[d[16]||(d[16]=e("label",{class:"form-label"},"Model",-1)),Y(rt,{modelValue:g.value.model,"onUpdate:modelValue":d[4]||(d[4]=b=>g.value.model=b),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),e("div",bs,[d[18]||(d[18]=e("label",{class:"form-label",for:"create-mode"},"Mode",-1)),N(e("select",{id:"create-mode","onUpdate:modelValue":d[5]||(d[5]=b=>g.value.mode=b),class:"form-input","data-testid":"mode-select"},[...d[17]||(d[17]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:"plan"}," Plan ",-1),e("option",{value:"standard"}," Standard ",-1),e("option",{value:"yolo"}," YOLO ",-1)])],512),[[$e,g.value.mode]])]),e("div",gs,[d[20]||(d[20]=e("label",{class:"form-label",for:"create-thinking"},"Extended Thinking",-1)),N(e("select",{id:"create-thinking","onUpdate:modelValue":d[6]||(d[6]=b=>g.value.thinkingEnabled=b),class:"form-input","data-testid":"thinking-select"},[...d[19]||(d[19]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:!0}," Enabled ",-1),e("option",{value:!1}," Disabled ",-1)])],512),[[$e,g.value.thinkingEnabled]])]),e("div",ys,[d[21]||(d[21]=e("label",{class:"form-label"},"Git Branch (Optional)",-1)),N(e("input",{"onUpdate:modelValue":d[7]||(d[7]=b=>g.value.gitBranch=b),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[fe,g.value.gitBranch]])]),e("div",ks,[e("button",{type:"button",class:"btn","data-testid":"cancel-btn",onClick:W}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:E.value,"data-testid":"submit-btn"},[E.value?(s(),o("span",$s)):S("",!0),d[22]||(d[22]=re(" Create ",-1))],8,Ss)])],32)])):S("",!0),a.value?(s(),o("div",Es,[...d[24]||(d[24]=[e("span",{class:"loading-spinner"},null,-1),re(" Loading templates... ",-1)])])):(s(),o("div",Cs,[n.value.length>0?(s(),o("div",ws,[d[25]||(d[25]=e("h3",{class:"section-title"}," Project Templates ",-1)),e("div",_s,[(s(!0),o(J,null,Q(n.value,b=>(s(),Z(z,{key:b.id,to:`/projects/${c.projectId}/templates/${b.id}`,class:"template-card card","data-testid":`template-card-${b.id}`},{default:ve(()=>[e("div",Ts,[e("h4",js,_(b.name),1)]),e("p",Ms,_(w(b.prompt)),1),e("div",Fs,[b.thinkingEnabled?(s(),o("span",Rs,"Thinking")):S("",!0),b.gitBranch?(s(),o("span",As,_(b.gitBranch),1)):S("",!0),b.model?(s(),o("span",xs,_(j(b.model)),1)):S("",!0),b.mode?(s(),o("span",Ls,_(b.mode),1)):S("",!0),b.nextTemplateId?(s(),o("span",Bs," Chains to: "+_($(b.nextTemplateId)),1)):S("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):S("",!0),f.value.length>0?(s(),o("div",Ds,[d[27]||(d[27]=e("h3",{class:"section-title"}," Global Templates ",-1)),e("div",Os,[(s(!0),o(J,null,Q(f.value,b=>(s(),Z(z,{key:b.id,to:`/projects/${c.projectId}/templates/${b.id}`,class:"template-card card","data-testid":`template-card-${b.id}`},{default:ve(()=>[e("div",Ps,[e("h4",Us,_(b.name),1)]),e("p",Vs,_(w(b.prompt)),1),e("div",Is,[d[26]||(d[26]=e("span",{class:"meta-badge meta-badge-global"},"Global",-1)),b.thinkingEnabled?(s(),o("span",Ns,"Thinking")):S("",!0),b.gitBranch?(s(),o("span",Gs,_(b.gitBranch),1)):S("",!0),b.model?(s(),o("span",Ks,_(j(b.model)),1)):S("",!0),b.mode?(s(),o("span",qs,_(b.mode),1)):S("",!0),b.nextTemplateId?(s(),o("span",Hs," Chains to: "+_($(b.nextTemplateId)),1)):S("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):S("",!0),n.value.length===0&&f.value.length===0&&!A.value?(s(),o("div",Ws,[d[28]||(d[28]=e("p",null,"No templates yet. Create a template to automate session workflows.",-1)),e("button",{class:"btn btn-primary","data-testid":"create-template-btn",onClick:H}," Create Template ")])):S("",!0)]))])}}},Ys=ge(zs,[["__scopeId","data-v-d08b4ac0"]]),Js={class:"command-buttons-panel"},Qs={class:"panel-header"},Xs={key:0,class:"loading-state"},Zs={key:1,class:"error-message"},en={key:2,class:"empty-state"},tn={key:3,class:"buttons-table"},sn=["onClick"],nn={class:"col-label"},on={class:"col-command"},ln={class:"col-order"},an=["onClick"],rn={class:"modal-body"},dn={class:"modal-footer"},un={__name:"CommandButtonsPanel",props:{projectId:{type:String,required:!0}},setup(c){const m=c,i=Ne(),p=Ke(),u=R(null),y=a=>a.length>50?`${a.substring(0,50)}...`:a,A=a=>{i.push(`/projects/${m.projectId}/command-buttons/${a.id}`)},E=a=>{u.value=a},g=async()=>{if(u.value)try{await p.deleteButton(m.projectId,u.value.id),u.value=null}catch(a){console.error("Failed to delete button:",a)}};return(a,n)=>{const f=Te("router-link");return s(),o("div",Js,[e("div",Qs,[n[5]||(n[5]=e("h3",null,"Command Buttons",-1)),Y(f,{to:`/projects/${c.projectId}/command-buttons/new`,class:"btn btn-primary btn-sm"},{default:ve(()=>[...n[4]||(n[4]=[re(" + New Command Button ",-1)])]),_:1},8,["to"])]),v(p).loading?(s(),o("div",Xs,[...n[6]||(n[6]=[e("span",{class:"loading-spinner"},null,-1),re(" Loading command buttons... ",-1)])])):v(p).error?(s(),o("div",Zs,_(v(p).error),1)):v(p).buttons.length===0?(s(),o("div",en,[n[8]||(n[8]=e("p",null,"No command buttons configured yet.",-1)),Y(f,{to:`/projects/${c.projectId}/command-buttons/new`,class:"btn btn-primary"},{default:ve(()=>[...n[7]||(n[7]=[re(" Create First Button ",-1)])]),_:1},8,["to"])])):(s(),o("div",tn,[n[9]||(n[9]=Pe('<div class="table-header" data-v-990a48bf><div class="col-label" data-v-990a48bf> Label </div><div class="col-command" data-v-990a48bf> Command </div><div class="col-order" data-v-990a48bf> Sort Order </div><div class="col-actions" data-v-990a48bf> Actions </div></div>',1)),(s(!0),o(J,null,Q(v(p).buttons,r=>(s(),o("div",{key:r.id,class:"table-row",onClick:w=>A(r)},[e("div",nn,_(r.label),1),e("div",on,[e("code",null,_(y(r.command)),1)]),e("div",ln,_(r.sortOrder),1),e("div",{class:"col-actions",onClick:n[0]||(n[0]=ae(()=>{},["stop"]))},[e("button",{class:"btn btn-sm btn-outline-danger",onClick:w=>E(r)}," Delete ",8,an)])],8,sn))),128))])),u.value?(s(),o("div",{key:4,class:"modal-overlay",onClick:n[3]||(n[3]=r=>u.value=null)},[e("div",{class:"modal-dialog",onClick:n[2]||(n[2]=ae(()=>{},["stop"]))},[n[12]||(n[12]=e("div",{class:"modal-header"},[e("h4",null,"Delete Command Button")],-1)),e("div",rn,[e("p",null,[n[10]||(n[10]=re('Are you sure you want to delete the command button "',-1)),e("strong",null,_(u.value.label),1),n[11]||(n[11]=re('"?',-1))])]),e("div",dn,[e("button",{class:"btn btn-outline-secondary",onClick:n[1]||(n[1]=r=>u.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:g}," Delete ")])])])):S("",!0)])}}},cn=ge(un,[["__scopeId","data-v-990a48bf"]]),mn={class:"modal-content"},pn={class:"modal-header"},vn={class:"modal-title"},fn={class:"modal-body"},hn={class:"form-group"},bn={class:"sessions-list"},gn={key:0,class:"loading-state"},yn={key:1,class:"empty-state"},kn={key:0},Sn={key:1},$n=["onClick"],En={class:"session-info"},Cn={class:"session-name"},wn={class:"session-meta"},_n={key:0,class:"session-mode"},Tn={class:"session-date"},jn={class:"modal-footer"},Mn=["disabled"],Fn={__name:"AddSessionToLaneModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},laneId:{type:String,default:""},laneName:{type:String,default:""}},emits:["close","update:isOpen","added"],setup(c,{emit:m}){const i=c,p=m;ye();const u=je(),y=_e(),A=R(!1),E=R(!1),g=R(""),a=R(null),n=R([]),f=U(()=>{let B=n.value.filter(F=>!u.isSessionOnBoard(F.id));if(B=B.filter(F=>!F.parentSessionId),g.value.trim()){const F=g.value.toLowerCase();B=B.filter(d=>{var z;return(z=d.name)==null?void 0:z.toLowerCase().includes(F)})}return B});function r(B){switch(B){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}}function w(B){return B?new Date(B).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function $(B){a.value=B}function j(){}function l(){p("update:isOpen",!1),p("close"),g.value="",a.value=null}async function H(){if(i.projectId){A.value=!0;try{const B=await Be.getProjectSessions(i.projectId,!1,null);n.value=Array.isArray(B)?B:(B==null?void 0:B.sessions)||[]}catch(B){console.error("Failed to load sessions:",B),y.error("Failed to load sessions"),n.value=[]}finally{A.value=!1}}}async function W(){if(!(!a.value||!i.laneId)){E.value=!0;try{await u.addSessionToBoard(i.projectId,a.value,i.laneId),y.success("Session added to board"),p("added",a.value),l()}catch(B){console.error("Failed to add session to board:",B),y.error(B.message||"Failed to add session to board")}finally{E.value=!1}}}return de(()=>i.isOpen,B=>{B&&H()},{immediate:!0}),(B,F)=>c.isOpen?(s(),o("div",{key:0,class:"modal-backdrop",onClick:ae(l,["self"])},[e("div",mn,[e("div",pn,[e("h2",vn," Add Session to "+_(c.laneName),1),e("button",{class:"close-btn","aria-label":"Close",onClick:l}," × ")]),e("div",fn,[e("div",hn,[F[1]||(F[1]=e("label",{for:"session-search",class:"form-label"},"Search Sessions",-1)),N(e("input",{id:"session-search","onUpdate:modelValue":F[0]||(F[0]=d=>g.value=d),type:"text",class:"form-input",placeholder:"Search by name...",onInput:j},null,544),[[fe,g.value]])]),e("div",bn,[A.value?(s(),o("div",gn,[...F[2]||(F[2]=[e("span",{class:"loading-spinner"},null,-1),re(" Loading sessions... ",-1)])])):f.value.length===0?(s(),o("div",yn,[g.value?(s(),o("p",kn,' No sessions matching "'+_(g.value)+'" ',1)):(s(),o("p",Sn," No available sessions to add. "))])):(s(!0),o(J,{key:2},Q(f.value,d=>(s(),o("div",{key:d.id,class:ne(["session-item",{selected:a.value===d.id}]),onClick:z=>$(d.id)},[e("div",{class:ne(["session-status",`status-${d.status}`])},_(r(d.status)),3),e("div",En,[e("div",Cn,_(d.name),1),e("div",wn,[d.mode?(s(),o("span",_n,_(d.mode),1)):S("",!0),e("span",Tn,_(w(d.updatedAt||d.createdAt)),1)])])],10,$n))),128))])]),e("div",jn,[e("button",{class:"btn btn-secondary",onClick:l}," Cancel "),e("button",{class:"btn btn-primary",disabled:!a.value||E.value,onClick:W},_(E.value?"Adding...":"Add to Lane"),9,Mn)])])])):S("",!0)}},Ye=ge(Fn,[["__scopeId","data-v-916a53c8"]]),Rn={class:"modal-content"},An={class:"modal-body"},xn={class:"form-group"},Ln={key:0,class:"form-group"},Bn={class:"lane-position-controls"},Dn=["disabled"],On={class:"lane-position-label"},Pn=["disabled"],Un={class:"form-group"},Vn={class:"automation-options"},In={class:"radio-option"},Nn={class:"radio-option"},Gn={class:"radio-option"},Kn={key:1,class:"form-group"},qn={key:0,label:"Project Templates"},Hn=["value"],Wn={key:1,label:"Global Templates"},zn=["value"],Yn={key:2,class:"form-group"},Jn={class:"prompt-actions-row"},Qn={key:4,class:"agent-settings-section"},Xn={key:0,class:"agent-settings-body"},Zn={class:"form-group"},eo={class:"toggle-switch-row"},to={class:"toggle-switch"},so={key:0,class:"reschedule-settings"},no={class:"form-group"},oo={class:"checkbox-option"},lo={class:"checkbox-option"},ao={class:"form-group"},ro={class:"form-group"},io={class:"form-group"},uo={class:"form-group"},co={class:"danger-zone"},mo=["disabled"],po={class:"modal-footer"},vo=["disabled"],fo={__name:"LaneSettingsModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},lane:{type:Object,default:null}},emits:["close","update:isOpen","updated","deleted"],setup(c,{emit:m}){const i=c,p=m,u=je(),y=He(),A=_e(),E=Ue(),g=R(!1),a=R(!1),n=R("none"),f=R(!1),r=R(!1),w=R(null),$=R(-1),j=R(-1),l=Me({name:"",onEnterTemplateId:null,onEnterPrompt:"",onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:15,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}),H=U(()=>y.projectTemplates),W=U(()=>y.globalTemplates),B=U(()=>{const T=E.getProjectById(i.projectId);return(T==null?void 0:T.workingDirectory)||null}),F=U(()=>j.value),d=U(()=>{var T,t;return((t=(T=u.board)==null?void 0:T.lanes)==null?void 0:t.length)||0}),z=U(()=>!(!l.name.trim()||n.value==="template"&&!l.onEnterTemplateId||n.value==="prompt"&&!l.onEnterPrompt.trim()));function b(){var T,t;if(i.lane){l.name=i.lane.name||"",l.onEnterTemplateId=i.lane.onEnterTemplateId||null,l.onEnterPrompt=i.lane.onEnterPrompt||"",l.onEnterMode=i.lane.onEnterMode||null,l.onEnterModel=i.lane.onEnterModel||null,l.onEnterEffortLevel=i.lane.onEnterEffortLevel||null,l.onEnterThinkingEnabled=i.lane.onEnterThinkingEnabled??null,l.onEnterAutoRescheduleEnabled=i.lane.onEnterAutoRescheduleEnabled||!1,l.onEnterRescheduleDelayMinutes=i.lane.onEnterRescheduleDelayMinutes||15,l.onEnterRescheduleOnTokenLimit=i.lane.onEnterRescheduleOnTokenLimit??!0,l.onEnterRescheduleOnServiceError=i.lane.onEnterRescheduleOnServiceError??!0,l.onEnterMaxRescheduleCount=i.lane.onEnterMaxRescheduleCount||null,l.onEnterMaxTotalTokens=i.lane.onEnterMaxTotalTokens||null,l.onEnterRescheduleAtTokenCount=i.lane.onEnterRescheduleAtTokenCount||null,i.lane.onEnterTemplateId?n.value="template":i.lane.onEnterPrompt?n.value="prompt":n.value="none",f.value=!!(l.onEnterMode||l.onEnterModel||l.onEnterEffortLevel||l.onEnterThinkingEnabled!==null||l.onEnterAutoRescheduleEnabled);const h=((t=(T=u.board)==null?void 0:T.lanes)==null?void 0:t.findIndex(G=>G.id===i.lane.id))??-1;$.value=h,j.value=h}else l.name="",l.onEnterTemplateId=null,l.onEnterPrompt="",l.onEnterMode=null,l.onEnterModel=null,l.onEnterEffortLevel=null,l.onEnterThinkingEnabled=null,l.onEnterAutoRescheduleEnabled=!1,l.onEnterRescheduleDelayMinutes=15,l.onEnterRescheduleOnTokenLimit=!0,l.onEnterRescheduleOnServiceError=!0,l.onEnterMaxRescheduleCount=null,l.onEnterMaxTotalTokens=null,l.onEnterRescheduleAtTokenCount=null,n.value="none",f.value=!1,$.value=-1,j.value=-1}function ee(){j.value=$.value,p("update:isOpen",!1),p("close")}function oe({text:T}){const t=w.value;if(t){const h=t.selectionStart,G=t.selectionEnd,ie=l.onEnterPrompt.substring(0,h),le=l.onEnterPrompt.substring(G);l.onEnterPrompt=ie+T+le,Ze(()=>{t.selectionStart=t.selectionEnd=h+T.length,t.focus()})}}function te(T){const t=j.value;t<0||t===T||(j.value=T)}async function M(){var T;if(!(!i.lane||!z.value)){g.value=!0;try{const t={name:l.name.trim()};if(n.value==="template"?(t.onEnterTemplateId=l.onEnterTemplateId,t.onEnterPrompt=null,t.onEnterMode=null,t.onEnterModel=null,t.onEnterEffortLevel=null,t.onEnterThinkingEnabled=null,t.onEnterAutoRescheduleEnabled=!1,t.onEnterRescheduleDelayMinutes=15,t.onEnterRescheduleOnTokenLimit=!0,t.onEnterRescheduleOnServiceError=!0,t.onEnterMaxRescheduleCount=null,t.onEnterMaxTotalTokens=null,t.onEnterRescheduleAtTokenCount=null):n.value==="prompt"?(t.onEnterTemplateId=null,t.onEnterPrompt=l.onEnterPrompt.trim(),t.onEnterMode=l.onEnterMode,t.onEnterModel=l.onEnterModel,t.onEnterEffortLevel=l.onEnterEffortLevel,t.onEnterThinkingEnabled=l.onEnterThinkingEnabled,t.onEnterAutoRescheduleEnabled=l.onEnterAutoRescheduleEnabled,t.onEnterRescheduleDelayMinutes=l.onEnterRescheduleDelayMinutes,t.onEnterRescheduleOnTokenLimit=l.onEnterRescheduleOnTokenLimit,t.onEnterRescheduleOnServiceError=l.onEnterRescheduleOnServiceError,t.onEnterMaxRescheduleCount=l.onEnterMaxRescheduleCount,t.onEnterMaxTotalTokens=l.onEnterMaxTotalTokens,t.onEnterRescheduleAtTokenCount=l.onEnterRescheduleAtTokenCount):(t.onEnterTemplateId=null,t.onEnterPrompt=null,t.onEnterMode=null,t.onEnterModel=null,t.onEnterEffortLevel=null,t.onEnterThinkingEnabled=null,t.onEnterAutoRescheduleEnabled=!1,t.onEnterRescheduleDelayMinutes=15,t.onEnterRescheduleOnTokenLimit=!0,t.onEnterRescheduleOnServiceError=!0,t.onEnterMaxRescheduleCount=null,t.onEnterMaxTotalTokens=null,t.onEnterRescheduleAtTokenCount=null),j.value!==$.value&&j.value>=0){const h=(T=u.board)==null?void 0:T.lanes;if(h&&h.length>1){const G=h.map(ce=>ce.id),ie=i.lane.id,[le]=G.splice($.value,1);G.splice(j.value,0,le),await u.reorderLanes(i.projectId,G)}}await u.updateLane(i.projectId,i.lane.id,t),A.success("Lane settings saved"),p("updated"),ee()}catch(t){console.error("Failed to save lane settings:",t),A.error(t.message||"Failed to save lane settings")}finally{g.value=!1}}}async function P(){if(i.lane&&confirm(`Are you sure you want to delete the "${i.lane.name}" lane? This cannot be undone.`)){a.value=!0;try{await u.deleteLane(i.projectId,i.lane.id),A.success("Lane deleted"),p("deleted"),ee()}catch(T){console.error("Failed to delete lane:",T),A.error(T.message||"Failed to delete lane")}finally{a.value=!1}}}return de(()=>i.isOpen,T=>{T&&(b(),i.projectId&&y.projectTemplates.length===0&&y.globalTemplates.length===0&&y.fetchProjectTemplates(i.projectId))},{immediate:!0}),de(()=>i.lane,()=>{i.isOpen&&b()}),de(()=>{var T;return(T=u.board)==null?void 0:T.lanes},T=>{if(i.isOpen&&i.lane&&T){const t=T.findIndex(h=>h.id===i.lane.id);t>=0&&($.value=t,j.value=t)}},{deep:!0}),(T,t)=>c.isOpen?(s(),o("div",{key:0,class:"modal-backdrop",onClick:ae(ee,["self"])},[e("div",Rn,[e("div",{class:"modal-header"},[t[22]||(t[22]=e("h2",{class:"modal-title"}," Lane Settings ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:ee}," × ")]),e("div",An,[e("div",xn,[t[23]||(t[23]=e("label",{for:"lane-name",class:"form-label"},"Lane Name",-1)),N(e("input",{id:"lane-name","onUpdate:modelValue":t[0]||(t[0]=h=>l.name=h),type:"text",class:"form-input",placeholder:"Enter lane name"},null,512),[[fe,l.name]])]),d.value>1?(s(),o("div",Ln,[t[26]||(t[26]=e("label",{class:"form-label"},"Position",-1)),e("div",Bn,[e("button",{class:"btn btn-icon",disabled:F.value<=0,title:"Move left",onClick:t[1]||(t[1]=h=>te(F.value-1))},[...t[24]||(t[24]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,Dn),e("span",On,_(F.value+1)+" of "+_(d.value),1),e("button",{class:"btn btn-icon",disabled:F.value>=d.value-1,title:"Move right",onClick:t[2]||(t[2]=h=>te(F.value+1))},[...t[25]||(t[25]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,Pn)])])):S("",!0),e("div",Un,[t[30]||(t[30]=e("label",{class:"form-label"},"On-Enter Automation",-1)),e("div",Vn,[e("label",In,[N(e("input",{"onUpdate:modelValue":t[3]||(t[3]=h=>n.value=h),type:"radio",value:"none",name:"automation"},null,512),[[xe,n.value]]),t[27]||(t[27]=e("span",null,"None",-1))]),e("label",Nn,[N(e("input",{"onUpdate:modelValue":t[4]||(t[4]=h=>n.value=h),type:"radio",value:"template",name:"automation"},null,512),[[xe,n.value]]),t[28]||(t[28]=e("span",null,"Run a template",-1))]),e("label",Gn,[N(e("input",{"onUpdate:modelValue":t[5]||(t[5]=h=>n.value=h),type:"radio",value:"prompt",name:"automation"},null,512),[[xe,n.value]]),t[29]||(t[29]=e("span",null,"Run a custom prompt",-1))])])]),n.value==="template"?(s(),o("div",Kn,[t[32]||(t[32]=e("label",{for:"template-select",class:"form-label"},"Select Template",-1)),N(e("select",{id:"template-select","onUpdate:modelValue":t[6]||(t[6]=h=>l.onEnterTemplateId=h),class:"form-input"},[t[31]||(t[31]=e("option",{value:null}," Select a template... ",-1)),H.value.length?(s(),o("optgroup",qn,[(s(!0),o(J,null,Q(H.value,h=>(s(),o("option",{key:h.id,value:h.id},_(h.name),9,Hn))),128))])):S("",!0),W.value.length?(s(),o("optgroup",Wn,[(s(!0),o(J,null,Q(W.value,h=>(s(),o("option",{key:h.id,value:h.id},_(h.name),9,zn))),128))])):S("",!0)],512),[[$e,l.onEnterTemplateId]]),t[33]||(t[33]=e("p",{class:"form-help"}," When a session enters this lane, the selected template will automatically run. ",-1))])):S("",!0),n.value==="prompt"?(s(),o("div",Yn,[t[34]||(t[34]=e("label",{for:"custom-prompt",class:"form-label"},"Custom Prompt",-1)),Y(it,{id:"custom-prompt",ref_key:"promptTextareaRef",ref:w,modelValue:l.onEnterPrompt,"onUpdate:modelValue":t[7]||(t[7]=h=>l.onEnterPrompt=h),class:"form-input form-textarea",placeholder:"Enter the prompt to run when a session enters this lane...",rows:"4","min-height":80},null,8,["modelValue"]),e("div",Jn,[Y(We),B.value?(s(),Z(ut,{key:0,onOpen:t[8]||(t[8]=h=>r.value=!0)})):S("",!0)])])):S("",!0),n.value==="prompt"?(s(),Z(ct,{key:3,"is-open":r.value,"onUpdate:isOpen":t[9]||(t[9]=h=>r.value=h),"working-directory":B.value||"",mode:"insert","hide-builtin":!0,onInsert:oe},null,8,["is-open","working-directory"])):S("",!0),n.value==="prompt"?(s(),o("div",Qn,[e("button",{type:"button",class:"section-toggle",onClick:t[10]||(t[10]=h=>f.value=!f.value)},[e("span",{class:ne(["toggle-chevron",{open:f.value}])},"▶",2),t[35]||(t[35]=re(" Session Settings ",-1))]),f.value?(s(),o("div",Xn,[Y(dt,{mode:l.onEnterMode||"standard",model:l.onEnterModel,"effort-level":l.onEnterEffortLevel,"thinking-enabled":l.onEnterThinkingEnabled??!1,"hide-start-immediately":!0,"onUpdate:mode":t[11]||(t[11]=h=>l.onEnterMode=h),"onUpdate:model":t[12]||(t[12]=h=>l.onEnterModel=h),"onUpdate:effortLevel":t[13]||(t[13]=h=>l.onEnterEffortLevel=h),"onUpdate:thinkingEnabled":t[14]||(t[14]=h=>l.onEnterThinkingEnabled=h)},null,8,["mode","model","effort-level","thinking-enabled"]),e("div",Zn,[e("label",eo,[e("label",to,[N(e("input",{"onUpdate:modelValue":t[15]||(t[15]=h=>l.onEnterAutoRescheduleEnabled=h),type:"checkbox"},null,512),[[Le,l.onEnterAutoRescheduleEnabled]]),t[36]||(t[36]=e("span",{class:"toggle-slider"},null,-1))]),t[37]||(t[37]=e("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),l.onEnterAutoRescheduleEnabled?(s(),o("div",so,[e("div",no,[t[40]||(t[40]=e("p",{class:"settings-label"}," Reschedule Triggers ",-1)),e("label",oo,[N(e("input",{"onUpdate:modelValue":t[16]||(t[16]=h=>l.onEnterRescheduleOnTokenLimit=h),type:"checkbox"},null,512),[[Le,l.onEnterRescheduleOnTokenLimit]]),t[38]||(t[38]=e("span",null,"Token limit errors",-1))]),e("label",lo,[N(e("input",{"onUpdate:modelValue":t[17]||(t[17]=h=>l.onEnterRescheduleOnServiceError=h),type:"checkbox"},null,512),[[Le,l.onEnterRescheduleOnServiceError]]),t[39]||(t[39]=e("span",null,"Service unavailability",-1))])]),e("div",ao,[t[42]||(t[42]=e("label",{class:"form-label"},"Reschedule Delay",-1)),N(e("select",{"onUpdate:modelValue":t[18]||(t[18]=h=>l.onEnterRescheduleDelayMinutes=h),class:"form-input"},[...t[41]||(t[41]=[e("option",{value:5}," 5 minutes ",-1),e("option",{value:15}," 15 minutes ",-1),e("option",{value:30}," 30 minutes ",-1),e("option",{value:60}," 1 hour ",-1),e("option",{value:120}," 2 hours ",-1)])],512),[[$e,l.onEnterRescheduleDelayMinutes,void 0,{number:!0}]])]),e("div",ro,[t[43]||(t[43]=e("label",{class:"form-label"},"Max Reschedule Count",-1)),N(e("input",{"onUpdate:modelValue":t[19]||(t[19]=h=>l.onEnterMaxRescheduleCount=h),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[fe,l.onEnterMaxRescheduleCount,void 0,{number:!0}]])]),e("div",io,[t[44]||(t[44]=e("label",{class:"form-label"},"Max Total Tokens",-1)),N(e("input",{"onUpdate:modelValue":t[20]||(t[20]=h=>l.onEnterMaxTotalTokens=h),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[fe,l.onEnterMaxTotalTokens,void 0,{number:!0}]])]),e("div",uo,[t[45]||(t[45]=e("label",{class:"form-label"},"Reschedule At Token Count",-1)),N(e("input",{"onUpdate:modelValue":t[21]||(t[21]=h=>l.onEnterRescheduleAtTokenCount=h),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[fe,l.onEnterRescheduleAtTokenCount,void 0,{number:!0}]])])])):S("",!0)])):S("",!0)])):S("",!0),e("div",co,[t[46]||(t[46]=e("h4",{class:"danger-title"}," Danger Zone ",-1)),t[47]||(t[47]=e("p",{class:"danger-description"}," Deleting this lane will remove all cards from it. Sessions will remain in the project. ",-1)),e("button",{class:"btn btn-danger",disabled:a.value,onClick:P},_(a.value?"Deleting...":"Delete Lane"),9,mo)])]),e("div",po,[e("button",{class:"btn btn-secondary",onClick:ee}," Cancel "),e("button",{class:"btn btn-primary",disabled:g.value||!z.value,onClick:M},_(g.value?"Saving...":"Save Changes"),9,vo)])])])):S("",!0)}},ho=ge(fo,[["__scopeId","data-v-114a927d"]]),bo={class:"kanban-board"},go={key:0,class:"kanban-loading"},yo={key:1,class:"kanban-error"},ko={key:2,class:"kanban-empty"},So={key:3,class:"kanban-lanes-container"},$o=["onDragover","onDrop"],Eo={class:"lane-header"},Co={class:"lane-title-row"},wo={class:"lane-title"},_o={key:0,class:"lane-automation-indicator",title:"Automation enabled"},To={class:"lane-header-actions"},jo={class:"lane-count"},Mo=["onClick"],Fo={class:"lane-cards"},Ro={key:0,class:"card-drop-indicator"},Ao=["onDragstart","onDragover"],xo={class:"card-header"},Lo={class:"card-title"},Bo={class:"card-meta"},Do={key:0,class:"card-mode"},Oo={class:"card-reorder-arrows"},Po=["onClick"],Uo=["onClick"],Vo=["onClick"],Io=["onClick"],No={key:0,class:"card-drop-indicator"},Go={key:1,class:"lane-empty"},Ko={class:"lane-footer"},qo={key:0,class:"lane-automation"},Ho={key:1,class:"lane-automation"},Wo=["onClick"],zo={class:"add-lane-container"},Yo={key:1,class:"add-lane-form"},Jo={__name:"KanbanBoard",props:{projectId:{type:String,required:!0}},setup(c){const m=c,i=je(),p=R(!1),u=R(""),y=R(null),A=R(null),E=R(null),g=R(-1),a=R(null),n=R(-1),f=R(!1),r=R(null),w=R(!1),$=R(null),j=R(!1),l=R(null),H=R(null),W=U(()=>i.board),B=U(()=>i.loading),F=U(()=>i.error),d=async()=>{try{await i.fetchBoard(m.projectId)}catch(x){console.error("Failed to fetch kanban board:",x)}},z=x=>{switch(x){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}},b=(x,C,K,V)=>{y.value="card",A.value=C,E.value=K,g.value=V;const q=x.dataTransfer;q.effectAllowed="move",q.setData("text/plain",C.id)},ee=(x,C,K)=>{if(y.value!=="card")return;const V=x.currentTarget.getBoundingClientRect(),q=V.top+V.height/2,X=x.clientY<q?K:K+1;C===E.value&&(X===g.value||X===g.value+1)?(a.value=null,n.value=-1):(a.value=C,n.value=X)},oe=()=>{y.value=null,A.value=null,E.value=null,g.value=-1,a.value=null,n.value=-1},te=async(x,C,K)=>{var ue,se;const V=(se=(ue=W.value)==null?void 0:ue.lanes)==null?void 0:se.find(L=>L.id===x);if(!(V!=null&&V.cards))return;let q=K>=0?K:V.cards.length;if(q>C&&q--,q===C)return;const X=V.cards.map(L=>L.id),[pe]=X.splice(C,1);X.splice(q,0,pe);try{await i.reorderCards(m.projectId,x,X)}catch(L){console.error("Failed to reorder cards:",L)}},M=async(x,C)=>{try{await i.moveCard(m.projectId,x,C,{runOnEnterTemplate:!0})}catch(K){console.error("Failed to move card:",K)}},P=async(x,C)=>{if(x.preventDefault(),y.value!=="card"||!A.value){oe();return}const K=x.dataTransfer.getData("text/plain");if(!K){oe();return}E.value===C?await te(C,g.value,n.value):await M(K,C),oe()},T=async(x,C,K)=>{var pe,ue;const V=(ue=(pe=W.value)==null?void 0:pe.lanes)==null?void 0:ue.find(se=>se.id===x);if(!(V!=null&&V.cards))return;const q=V.cards.map(se=>se.id),[X]=q.splice(C,1);q.splice(K,0,X);try{await i.reorderCards(m.projectId,x,q)}catch(se){console.error("Failed to reorder cards:",se)}},t=async x=>{if(confirm("Remove this session from the board?"))try{await i.removeCard(m.projectId,x)}catch(C){console.error("Failed to remove card:",C)}},h=async()=>{if(u.value.trim())try{await i.createLane(m.projectId,{name:u.value.trim()}),G()}catch(x){console.error("Failed to add lane:",x)}},G=()=>{p.value=!1,u.value=""},ie=x=>{r.value=x,f.value=!0},le=()=>{f.value=!1,r.value=null},ce=()=>{},me=x=>{$.value=x,w.value=!0},he=()=>{w.value=!1,$.value=null},Se=()=>{},Fe=()=>{he()},Re=(x,C)=>{l.value=x,H.value=C,j.value=!0},O=()=>{j.value=!1,l.value=null,H.value=null},k=()=>{O()};return de(()=>m.projectId,x=>{x&&d()},{immediate:!0}),Oe(()=>{m.projectId&&d()}),(x,C)=>{var V,q,X,pe,ue,se;const K=Te("router-link");return s(),o("div",bo,[B.value?(s(),o("div",go,[...C[5]||(C[5]=[e("span",{class:"loading-spinner"},null,-1),re(" Loading board... ",-1)])])):F.value?(s(),o("div",yo,[C[6]||(C[6]=e("span",{class:"error-icon"},"!",-1)),re(" "+_(F.value)+" ",1),e("button",{class:"retry-btn",onClick:d}," Retry ")])):W.value?(s(),o("div",So,[(s(!0),o(J,null,Q(W.value.lanes,L=>{var Ee,Ce,we;return s(),o("div",{key:L.id,class:"kanban-lane",onDragover:ae(I=>{var D;return ee(I,L.id,((D=L.cards)==null?void 0:D.length)||0)},["prevent"]),onDrop:I=>P(I,L.id)},[e("div",Eo,[e("div",Co,[e("h3",wo,_(L.name),1),L.onEnterTemplateId||L.onEnterPrompt?(s(),o("span",_o,[...C[8]||(C[8]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):S("",!0)]),e("div",To,[e("span",jo,_(((Ee=L.cards)==null?void 0:Ee.length)||0),1),e("button",{class:"lane-settings-btn",title:"Lane settings",onClick:I=>me(L)},[...C[9]||(C[9]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"3"}),e("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})],-1)])],8,Mo)])]),e("div",Fo,[(s(!0),o(J,null,Q(L.cards,(I,D)=>{var be,Ae;return s(),o(J,{key:I.id},[y.value==="card"&&a.value===L.id&&n.value===D?(s(),o("div",Ro)):S("",!0),e("div",{class:ne(["kanban-card",{dragging:y.value==="card"&&((be=A.value)==null?void 0:be.id)===I.id}]),draggable:"true",onDragstart:ae(ke=>b(ke,I,L.id,D),["stop"]),onDragover:ae(ke=>ee(ke,L.id,D),["prevent","stop"]),onDragend:oe},[(Ae=I.sessions)!=null&&Ae[0]?(s(),Z(K,{key:0,to:`/sessions/${I.sessions[0].id}`,class:"card-link"},{default:ve(()=>[e("div",xo,[e("span",{class:ne(["card-status",`status-${I.sessions[0].status}`])},_(z(I.sessions[0].status)),3),e("h4",Lo,_(I.sessions[0].name),1)]),e("div",Bo,[I.sessions[0].mode?(s(),o("span",Do,_(I.sessions[0].mode),1)):S("",!0)])]),_:2},1032,["to"])):S("",!0),e("div",Oo,[D>0?(s(),o("button",{key:0,class:"card-reorder-btn",title:"Move card up",onClick:ae(ke=>T(L.id,D,D-1),["prevent"])},[...C[10]||(C[10]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"18 15 12 9 6 15"})],-1)])],8,Po)):S("",!0),D<L.cards.length-1?(s(),o("button",{key:1,class:"card-reorder-btn",title:"Move card down",onClick:ae(ke=>T(L.id,D,D+1),["prevent"])},[...C[11]||(C[11]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"6 9 12 15 18 9"})],-1)])],8,Uo)):S("",!0)]),e("button",{class:"card-move-btn",title:"Move to lane",onClick:ae(ke=>Re(I,L.id),["prevent"])},[...C[12]||(C[12]=[Pe('<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 4 19 4 19 8"></polyline><line x1="14" y1="10" x2="19" y2="4"></line><polyline points="9 20 5 20 5 16"></polyline><line x1="10" y1="14" x2="5" y2="20"></line></svg>',1)])],8,Vo),e("button",{class:"card-remove-btn",title:"Remove from board",onClick:ae(ke=>t(I.id),["prevent"])}," × ",8,Io)],42,Ao)],64)}),128)),y.value==="card"&&a.value===L.id&&n.value===(((Ce=L.cards)==null?void 0:Ce.length)||0)?(s(),o("div",No)):S("",!0),(we=L.cards)!=null&&we.length?S("",!0):(s(),o("div",Go,[...C[13]||(C[13]=[e("span",null,"Drop sessions here",-1)])]))]),e("div",Ko,[L.onEnterTemplateId?(s(),o("span",qo," Auto: triggers template on entry ")):L.onEnterPrompt?(s(),o("span",Ho," Auto: runs custom prompt on entry ")):S("",!0),e("button",{class:"add-session-btn",onClick:I=>ie(L)}," + Add Session ",8,Wo)])],40,$o)}),128)),e("div",zo,[p.value?(s(),o("div",Yo,[N(e("input",{"onUpdate:modelValue":C[1]||(C[1]=L=>u.value=L),type:"text",placeholder:"Lane name...",class:"add-lane-input",onKeyup:[Ve(h,["enter"]),Ve(G,["escape"])]},null,544),[[fe,u.value]]),e("div",{class:"add-lane-actions"},[e("button",{class:"add-lane-confirm",onClick:h}," Add "),e("button",{class:"add-lane-cancel",onClick:G}," Cancel ")])])):(s(),o("button",{key:0,class:"add-lane-btn",onClick:C[0]||(C[0]=L=>p.value=!0)}," + Add Lane "))])])):(s(),o("div",ko,[...C[7]||(C[7]=[e("p",null,"Kanban board is not available for this project.",-1)])])),Y(Ye,{"is-open":f.value,"project-id":c.projectId,"lane-id":(V=r.value)==null?void 0:V.id,"lane-name":(q=r.value)==null?void 0:q.name,"onUpdate:isOpen":C[2]||(C[2]=L=>f.value=L),onClose:le,onAdded:ce},null,8,["is-open","project-id","lane-id","lane-name"]),Y(ho,{"is-open":w.value,"project-id":c.projectId,lane:$.value,"onUpdate:isOpen":C[3]||(C[3]=L=>w.value=L),onClose:he,onUpdated:Se,onDeleted:Fe},null,8,["is-open","project-id","lane"]),Y(ot,{"is-open":j.value,"project-id":c.projectId,"card-id":(X=l.value)==null?void 0:X.id,"current-lane-id":H.value,"session-name":(se=(ue=(pe=l.value)==null?void 0:pe.sessions)==null?void 0:ue[0])==null?void 0:se.name,"onUpdate:isOpen":C[4]||(C[4]=L=>j.value=L),onClose:O,onMoved:k},null,8,["is-open","project-id","card-id","current-lane-id","session-name"])])}}},Qo={class:"container"},Xo={class:"page-header"},Zo={class:"project-title"},el=["href"],tl={class:"tabs"},sl={class:"tabs-desktop"},nl={class:"tabs-left"},ol={class:"tabs-mobile"},ll=["value"],al={key:0,value:"kanban"},rl={key:2,class:"tab-spacer"},il={key:3},dl={key:0,class:"skeleton-list"},ul={key:1,class:"error-message"},cl={key:2,class:"empty-state"},ml={key:3,class:"empty-state"},pl={key:4,class:"session-list"},vl={key:5},fl={key:6},hl={class:"modal-content lane-selector-modal"},bl={class:"modal-body"},gl={class:"modal-description"},yl={class:"lane-options"},kl=["onClick"],Sl={class:"lane-option-name"},$l={class:"lane-option-count"},El={key:0,class:"empty-lanes"},Vl={__name:"SessionListView",setup(c){const m=et(),i=Ne(),p=Ue(),u=ye(),y=je(),A=Ge();vt(),A.restoreCollapsedLogState();const E=U(()=>{switch(m.name){case"ArchivedSessions":return"archived";case"ProjectTemplates":return"templates";case"ProjectCommands":return"commands";case"ScheduledSessions":return"scheduled";case"ProjectKanban":return"kanban";default:return"sessions"}});function g(O){const k=m.params.id,x={sessions:`/projects/${k}/sessions`,archived:`/projects/${k}/archived`,templates:`/projects/${k}/templates`,commands:`/projects/${k}/commands`,scheduled:`/projects/${k}/scheduled`,kanban:`/projects/${k}/kanban`};i.push(x[O])}const a=U(()=>m.params.id),{summaries:n,loadingSummaries:f,summaryErrors:r,fetchSummariesBatch:w,retryFetchSummary:$,updateSummary:j,cleanupSummary:l}=mt(),{filteredGroupedSessions:H}=ze(),{archivedLoaded:W}=pt(a,{fetchSummariesBatch:w,updateSummary:j,cleanupSummary:l}),B=U(()=>u.scheduledSessions||[]),F=U(()=>u.loadingScheduled||!1);let d=null;de(()=>u.sessions,()=>{clearTimeout(d),d=setTimeout(()=>{w(u.sessions)},400)}),de(()=>m.name,async O=>{O==="ArchivedSessions"?await z():O==="ScheduledSessions"&&await ee()},{immediate:!0}),de(()=>u.starredFilter,async(O,k)=>{E.value==="archived"&&W.value&&O!==k&&(await u.fetchArchivedSessions(a.value,{reset:!0}),w(u.archivedSessions))});async function z(){W.value||(await u.fetchArchivedSessions(a.value,{reset:!0}),W.value=!0,w(u.archivedSessions))}async function b(){await u.loadMoreArchivedSessions(a.value),w(u.archivedSessions)}async function ee(){await u.fetchScheduledSessions(a.value)}const oe=R(!1),te=R(null),M=R(!1);function P(O){const k=u.sessions.find(x=>x.id===O);te.value=k||{id:O},oe.value=!0}async function T(O){if(te.value){M.value=!0;try{await u.archiveSession(te.value.id,{cleanup:O}),G.success("Session archived")}catch(k){G.error(k.message||"Failed to archive session")}finally{M.value=!1,oe.value=!1,te.value=null}}}function t(){oe.value=!1,te.value=null}async function h(O){try{await u.unarchiveSession(O)}catch(k){console.error("Failed to unarchive session:",k)}}const G=_e(),ie=R(!1),le=R(null),ce=R(!1),me=R(null);function he(O){me.value=O,ce.value=!0}function Se(){ce.value=!1,me.value=null}async function Fe(O){if(!(!me.value||!O))try{await y.addSessionToBoard(m.params.id,me.value.id,O.id),G.success(`Session added to "${O.name}"`),Se()}catch(k){console.error("Failed to add session to board:",k),G.error(k.message||"Failed to add session to board")}}function Re(){ie.value=!1,le.value=null}return Oe(()=>{u.restoreStatusFilter(),u.restoreStarredFilter(),u.restoreScheduledFilter();const O=m.params.id;O&&y.fetchBoard(O).catch(k=>{console.warn("Failed to fetch kanban board:",k)})}),De(()=>{clearTimeout(d)}),(O,k)=>{var C,K,V,q,X,pe,ue,se,L,Ee,Ce,we,I;const x=Te("router-link");return s(),o("div",Qo,[e("div",Xo,[e("div",null,[e("div",Zo,[e("h1",null,_(((C=v(p).currentProject)==null?void 0:C.name)||"Sessions"),1),(K=v(p).currentProject)!=null&&K.repoUrl?(s(),o("a",{key:0,href:v(p).currentProject.repoUrl,target:"_blank",rel:"noopener noreferrer",class:"repo-link",title:"Open repository"},[...k[8]||(k[8]=[e("svg",{class:"repo-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6m4-3l6 6m0 0l-6 6m6-6H9"})],-1)])],8,el)):S("",!0),Y(x,{to:`/projects/${v(m).params.id}/edit`,class:"settings-link",title:"Project settings"},{default:ve(()=>[...k[9]||(k[9]=[e("svg",{class:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)])]),_:1},8,["to"])])]),E.value==="sessions"?(s(),Z(x,{key:0,to:`/projects/${v(m).params.id}/sessions/new`,class:"btn btn-primary mobile-only"},{default:ve(()=>[...k[10]||(k[10]=[re(" + Session ",-1)])]),_:1},8,["to"])):S("",!0)]),e("div",tl,[e("div",sl,[e("div",nl,[e("button",{class:ne(["tab",{active:E.value==="sessions"}]),onClick:k[0]||(k[0]=D=>v(i).push(`/projects/${v(m).params.id}/sessions`))}," Sessions ",2),e("button",{class:ne(["tab",{active:E.value==="archived"}]),onClick:k[1]||(k[1]=D=>v(i).push(`/projects/${v(m).params.id}/archived`))}," Archived ",2),e("button",{class:ne(["tab",{active:E.value==="templates"}]),onClick:k[2]||(k[2]=D=>v(i).push(`/projects/${v(m).params.id}/templates`))}," Templates ",2),e("button",{class:ne(["tab",{active:E.value==="commands"}]),onClick:k[3]||(k[3]=D=>v(i).push(`/projects/${v(m).params.id}/commands`))}," Commands ",2),e("button",{class:ne(["tab",{active:E.value==="scheduled"}]),onClick:k[4]||(k[4]=D=>v(i).push(`/projects/${v(m).params.id}/scheduled`))}," Scheduled ",2),(V=v(p).currentProject)!=null&&V.kanbanEnabled?(s(),o("button",{key:0,class:ne(["tab",{active:E.value==="kanban"}]),onClick:k[5]||(k[5]=D=>v(i).push(`/projects/${v(m).params.id}/kanban`))}," Kanban ",2)):S("",!0)]),E.value==="sessions"?(s(),Z(x,{key:0,to:`/projects/${v(m).params.id}/sessions/new`,class:"btn btn-primary desktop-only","aria-label":"New Session"},{default:ve(()=>[...k[11]||(k[11]=[e("span",{class:"add-session-label-full"},"+ Session",-1),e("span",{class:"add-session-label-short"},"+",-1)])]),_:1},8,["to"])):S("",!0)]),e("div",ol,[e("select",{value:E.value,class:"tab-select",onChange:k[6]||(k[6]=D=>g(D.target.value))},[k[12]||(k[12]=Pe('<option value="sessions"> Sessions </option><option value="archived"> Archived </option><option value="templates"> Templates </option><option value="commands"> Commands </option><option value="scheduled"> Scheduled </option>',5)),(q=v(p).currentProject)!=null&&q.kanbanEnabled?(s(),o("option",al," Kanban ")):S("",!0)],40,ll)])]),E.value==="sessions"?(s(),Z(Ie,{key:0,"show-status-filters":!0,"show-scheduled-filter":!0})):E.value==="archived"?(s(),Z(Ie,{key:1,"show-status-filters":!1,"show-scheduled-filter":!1})):(s(),o("div",rl)),E.value==="sessions"?(s(),o("div",il,[v(u).loading?(s(),o("div",dl,[(s(),o(J,null,Q(3,D=>e("div",{key:D,class:"skeleton card",style:{height:"120px"}})),64))])):v(u).error?(s(),o("div",ul,_(v(u).error),1)):v(u).sessions.length===0?(s(),o("div",cl,[k[14]||(k[14]=e("p",null,"No sessions yet. Start a new session to interact with Claude.",-1)),Y(x,{to:`/projects/${v(m).params.id}/sessions/new`,class:"btn btn-primary"},{default:ve(()=>[...k[13]||(k[13]=[re(" New Session ",-1)])]),_:1},8,["to"])])):v(H).length===0?(s(),o("div",ml,[...k[15]||(k[15]=[e("p",null,"No sessions match the current filter.",-1)])])):(s(),o("div",pl,[(s(!0),o(J,null,Q(v(H),D=>{var be;return s(),Z(qe,{key:D.parent.id,session:D.parent,"show-summary":!0,summary:v(n)[D.parent.id],"summary-loading":v(f)[D.parent.id],"summary-error":v(r)[D.parent.id],"show-archive":!0,"kanban-enabled":((be=v(p).currentProject)==null?void 0:be.kanbanEnabled)??!0,"pr-url":D.parent.prUrl,"pr-summary":v(n)[D.parent.id],onRetrySummary:v($),onArchive:P,onAddToBoard:he},null,8,["session","summary","summary-loading","summary-error","kanban-enabled","pr-url","pr-summary","onRetrySummary"])}),128))]))])):S("",!0),E.value==="archived"?(s(),Z(Pt,{key:4,summaries:v(n),"loading-summaries":v(f),"summary-errors":v(r),onRetrySummary:v($),onUnarchive:h,onLoadMore:b},null,8,["summaries","loading-summaries","summary-errors","onRetrySummary"])):S("",!0),E.value==="templates"?(s(),o("div",vl,[Y(Ys,{"project-id":v(m).params.id},null,8,["project-id"])])):S("",!0),E.value==="commands"?(s(),o("div",fl,[Y(cn,{"project-id":v(m).params.id},null,8,["project-id"])])):S("",!0),E.value==="scheduled"?(s(),Z(as,{key:7,sessions:B.value,loading:F.value},null,8,["sessions","loading"])):S("",!0),E.value==="kanban"?(s(),Z(Jo,{key:8,"project-id":v(m).params.id},null,8,["project-id"])):S("",!0),Y(Ye,{"is-open":ie.value,"project-id":v(m).params.id,"lane-id":(X=le.value)==null?void 0:X.id,"lane-name":(pe=le.value)==null?void 0:pe.name,"onUpdate:isOpen":k[7]||(k[7]=D=>ie.value=D),onClose:Re},null,8,["is-open","project-id","lane-id","lane-name"]),ce.value?(s(),o("div",{key:9,class:"modal-backdrop",onClick:ae(Se,["self"])},[e("div",hl,[e("div",{class:"modal-header"},[k[16]||(k[16]=e("h2",{class:"modal-title"}," Add to Kanban Board ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:Se}," × ")]),e("div",bl,[e("p",gl,' Select a lane to add "'+_((ue=me.value)==null?void 0:ue.name)+'" to: ',1),e("div",yl,[(s(!0),o(J,null,Q((se=v(y).board)==null?void 0:se.lanes,D=>{var be;return s(),o("button",{key:D.id,class:"lane-option-btn",onClick:Ae=>Fe(D)},[e("span",Sl,_(D.name),1),e("span",$l,_(((be=D.cards)==null?void 0:be.length)||0)+" cards",1)],8,kl)}),128))]),(Ee=(L=v(y).board)==null?void 0:L.lanes)!=null&&Ee.length?S("",!0):(s(),o("p",El," No lanes available. Go to the Kanban tab to create lanes first. "))]),e("div",{class:"modal-footer"},[e("button",{class:"btn btn-secondary",onClick:Se}," Cancel ")])])])):S("",!0),Y(lt,{"is-open":oe.value,"session-name":((Ce=te.value)==null?void 0:Ce.name)||"this session","has-cleanup-script":!!((we=v(p).currentProject)!=null&&we.onSessionDeleted&&!((I=te.value)!=null&&I.parentSessionId)),loading:M.value,onConfirm:T,onCancel:t},null,8,["is-open","session-name","has-cleanup-script","loading"])])}}};export{Vl as default};
|