circuschief 0.1.3 → 0.2.0
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 +2 -2
- 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-Bd8FWObJ.js +1 -0
- package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +1 -0
- package/packages/web/dist/assets/{AgentLogsView-c42v_j_5.js → AgentLogsView-C4FTXUH8.js} +1 -1
- package/packages/web/dist/assets/{ArchiveConfirmModal-DBuOmtXu.js → ArchiveConfirmModal-MpqhAjWZ.js} +1 -1
- package/packages/web/dist/assets/{CommandButtonDetailView-CkKJ3Htz.js → CommandButtonDetailView-_tOjEGjk.js} +1 -1
- package/packages/web/dist/assets/{EffortLevelSelector-BHJHSqul.js → EffortLevelSelector-B4z3zfJ6.js} +1 -1
- package/packages/web/dist/assets/{GeneralSettingsView-CdxfteZ2.js → GeneralSettingsView-BZ4x6T_N.js} +1 -1
- package/packages/web/dist/assets/{InterpolationHelp-DabnHhE4.js → InterpolationHelp-CIlrD5JA.js} +1 -1
- package/packages/web/dist/assets/MarkdownEditor-DBvC-1OX.js +2 -0
- package/packages/web/dist/assets/{ModelSelector-BWIU4ud7.js → ModelSelector-BTmHxqCs.js} +1 -1
- package/packages/web/dist/assets/{NewSessionView-BIZl8QlH.js → NewSessionView-Cdgt6wnk.js} +2 -2
- package/packages/web/dist/assets/{PathChooser-nhat_Pz4.js → PathChooser-CPEkT0uu.js} +1 -1
- package/packages/web/dist/assets/{ProjectEditView-DD-2_VrW.js → ProjectEditView-D59hr-v2.js} +1 -1
- package/packages/web/dist/assets/{ProjectListView-BOWbfoXQ.js → ProjectListView-gG4AR1i9.js} +1 -1
- package/packages/web/dist/assets/{ProjectNewView-DC4uvSn2.js → ProjectNewView-BPjn1O4f.js} +1 -1
- package/packages/web/dist/assets/ProvidersView-C04jD9NZ.js +1 -0
- package/packages/web/dist/assets/{QuickResponseSettings-Bk9mq96x.js → QuickResponseSettings-DaEXIp3-.js} +1 -1
- package/packages/web/dist/assets/{QuickResponsesPanel-BRvcnkQr.js → QuickResponsesPanel-CIdblIbt.js} +1 -1
- package/packages/web/dist/assets/{ResizableTextarea-CwGM4P3c.js → ResizableTextarea-DJekfIXO.js} +1 -1
- package/packages/web/dist/assets/{SessionCard-BGDVHU9u.js → SessionCard-CAdetaVH.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-BOdnH-cW.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-Dy57kl-x.js} +1 -1
- package/packages/web/dist/assets/{SessionListView-BAIBtJF7.css → SessionListView-78k6TTz6.css} +1 -1
- package/packages/web/dist/assets/SessionListView-DUMUXfp4.js +1 -0
- package/packages/web/dist/assets/{SessionLogStream-B-w3n4c3.js → SessionLogStream-DHPxkaaK.js} +1 -1
- package/packages/web/dist/assets/{SettingsView-Dd0ZJ4Nv.js → SettingsView-BzrkWbH3.js} +1 -1
- package/packages/web/dist/assets/{SlashCommandWizard-CzyLjsdJ.js → SlashCommandWizard-BAC_oF5i.js} +1 -1
- package/packages/web/dist/assets/{SummarySettingsView-DTbh7uAF.js → SummarySettingsView-J8BQBEe9.js} +1 -1
- package/packages/web/dist/assets/{TemplateDetailView-BOnhkdtH.js → TemplateDetailView-2ilWbANb.js} +1 -1
- package/packages/web/dist/assets/{commandButtons-CY87n64i.js → commandButtons-aIO6hqZn.js} +1 -1
- package/packages/web/dist/assets/{index-DcA6pqXV.js → index-B6W39ctH.js} +1 -1
- package/packages/web/dist/assets/{index-NzLFVaCi.js → index-BGmIjKYB.js} +1 -1
- package/packages/web/dist/assets/{index-CO4EBOFw.js → index-BwChYYnJ.js} +1 -1
- package/packages/web/dist/assets/{index-BshkV3r5.js → index-CDRRIqmL.js} +1 -1
- package/packages/web/dist/assets/{index-Dx0sYW7H.js → index-CSA0abwg.js} +1 -1
- package/packages/web/dist/assets/{index-Ce6sL47U.js → index-CWTVEGZv.js} +1 -1
- package/packages/web/dist/assets/{index-i1o916sk.js → index-CjJX0Eli.js} +1 -1
- package/packages/web/dist/assets/{index-BRUlEEHm.js → index-CpNgrGiE.js} +1 -1
- package/packages/web/dist/assets/{index-gMpnPf1V.js → index-DCxYGijD.js} +1 -1
- package/packages/web/dist/assets/{index-jGjvGBfk.js → index-DF6g7nEj.js} +1 -1
- package/packages/web/dist/assets/{index-aCw-iXPX.js → index-DMl4xPIQ.js} +1 -1
- package/packages/web/dist/assets/{index--OtPwBbF.js → index-DMsWg7Ax.js} +3 -3
- package/packages/web/dist/assets/{index-CjHb9rXv.js → index-DePUHO3n.js} +1 -1
- package/packages/web/dist/assets/{index-C6m-WfqP.js → index-DvfYqZgb.js} +1 -1
- package/packages/web/dist/assets/{index-DkLkDgig.js → index-DxUd3T5E.js} +23 -23
- package/packages/web/dist/assets/{index-BXUcbV4K.js → index-GLkcnEcc.js} +1 -1
- package/packages/web/dist/assets/{index-DPwwgloE.js → index-ZDCxncSd.js} +1 -1
- package/packages/web/dist/assets/{index-DxboI9i-.js → index-f24-2-RT.js} +1 -1
- package/packages/web/dist/assets/{index-Bi4bQ_UB.js → index-uZfsnHcN.js} +1 -1
- package/packages/web/dist/assets/{projects-C2Y29PSJ.js → projects-DGF_kWVA.js} +1 -1
- package/packages/web/dist/assets/{providers-CeJXuo0Q.js → providers-Cm7emO-N.js} +1 -1
- package/packages/web/dist/assets/sessions-CH7PeypH.js +1 -0
- package/packages/web/dist/assets/{settings-BplIxCbi.js → settings-C7sXXJ-n.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{e as W,E as S,C as B,s as U,t as n,a as m,q as E,L as C,i as u,k as v,f as M,l as N}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 c=63,D=64,j=1,A=2,y=3,H=4,Z=5,F=6,I=7,z=65,K=66,J=8,OO=9,eO=10,aO=11,rO=12,V=13,tO=19,nO=20,oO=29,PO=33,QO=34,sO=47,lO=0,$=1,b=2,d=3,g=4;class s{constructor(e,a,r){this.parent=e,this.depth=a,this.type=r,this.hash=(e?e.hash+e.hash<<8:0)+a+(a<<4)+r}}s.top=new s(null,-1,lO);function X(O,e){for(let a=0,r=e-O.pos-1;;r--,a++){let o=O.peek(r);if(P(o)||o==-1)return a}}function x(O){return O==32||O==9}function P(O){return O==10||O==13}function _(O){return x(O)||P(O)}function l(O){return O<0||_(O)}const cO=new B({start:s.top,reduce(O,e){return O.type==d&&(e==nO||e==QO)?O.parent:O},shift(O,e,a,r){if(e==y)return new s(O,X(r,r.pos),$);if(e==z||e==Z)return new s(O,X(r,r.pos),b);if(e==c)return O.parent;if(e==tO||e==PO)return new s(O,0,d);if(e==V&&O.type==g)return O.parent;if(e==sO){let o=/[1-9]/.exec(r.read(r.pos,a.pos));if(o)return new s(O,O.depth+ +o[0],g)}return O},hash(O){return O.hash}});function f(O,e,a=0){return O.peek(a)==e&&O.peek(a+1)==e&&O.peek(a+2)==e&&l(O.peek(a+3))}const fO=new S((O,e)=>{if(O.next==-1&&e.canShift(D))return O.acceptToken(D);let a=O.peek(-1);if((P(a)||a<0)&&e.context.type!=d){if(f(O,45))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(j,3);if(f(O,46))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(A,3);let r=0;for(;O.next==32;)r++,O.advance();(r<e.context.depth||r==e.context.depth&&e.context.type==$&&(O.next!=45||!l(O.peek(1))))&&O.next!=-1&&!P(O.next)&&O.next!=35&&O.acceptToken(c,-r)}},{contextual:!0}),XO=new S((O,e)=>{if(e.context.type==d){O.next==63&&(O.advance(),l(O.next)&&O.acceptToken(I));return}if(O.next==45)O.advance(),l(O.next)&&O.acceptToken(e.context.type==$&&e.context.depth==X(O,O.pos-1)?H:y);else if(O.next==63)O.advance(),l(O.next)&&O.acceptToken(e.context.type==b&&e.context.depth==X(O,O.pos-1)?F:Z);else{let a=O.pos;for(;;)if(x(O.next)){if(O.pos==a)return;O.advance()}else if(O.next==33)G(O);else if(O.next==38)p(O);else if(O.next==42){p(O);break}else if(O.next==39||O.next==34){if(T(O,!0))break;return}else if(O.next==91||O.next==123){if(!RO(O))return;break}else{w(O,!0,!1,0);break}for(;x(O.next);)O.advance();if(O.next==58){if(O.pos==a&&e.canShift(oO))return;let r=O.peek(1);l(r)&&O.acceptTokenTo(e.context.type==b&&e.context.depth==X(O,a)?K:z,a)}}},{contextual:!0});function dO(O){return O>32&&O<127&&O!=34&&O!=37&&O!=44&&O!=60&&O!=62&&O!=92&&O!=94&&O!=96&&O!=123&&O!=124&&O!=125}function q(O){return O>=48&&O<=57||O>=97&&O<=102||O>=65&&O<=70}function Y(O,e){return O.next==37?(O.advance(),q(O.next)&&O.advance(),q(O.next)&&O.advance(),!0):dO(O.next)||e&&O.next==44?(O.advance(),!0):!1}function G(O){if(O.advance(),O.next==60){for(O.advance();;)if(!Y(O,!0)){O.next==62&&O.advance();break}}else for(;Y(O,!1););}function p(O){for(O.advance();!l(O.next)&&i(O.next)!="f";)O.advance()}function T(O,e){let a=O.next,r=!1,o=O.pos;for(O.advance();;){let t=O.next;if(t<0)break;if(O.advance(),t==a)if(t==39)if(O.next==39)O.advance();else break;else break;else if(t==92&&a==34)O.next>=0&&O.advance();else if(P(t)){if(e)return!1;r=!0}else if(e&&O.pos>=o+1024)return!1}return!r}function RO(O){for(let e=[],a=O.pos+1024;;)if(O.next==91||O.next==123)e.push(O.next),O.advance();else if(O.next==39||O.next==34){if(!T(O,!0))return!1}else if(O.next==93||O.next==125){if(e[e.length-1]!=O.next-2)return!1;if(e.pop(),O.advance(),!e.length)return!0}else{if(O.next<0||O.pos>a||P(O.next))return!1;O.advance()}}const iO="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function i(O){return O<33?"u":O>125?"s":iO[O-33]}function k(O,e){let a=i(O);return a!="u"&&!(e&&a=="f")}function w(O,e,a,r){if(i(O.next)=="s"||(O.next==63||O.next==58||O.next==45)&&k(O.peek(1),a))O.advance();else return!1;let o=O.pos;for(;;){let t=O.next,Q=0,R=r+1;for(;_(t);){if(P(t)){if(e)return!1;R=0}else R++;t=O.peek(++Q)}if(!(t>=0&&(t==58?k(O.peek(Q+1),a):t==35?O.peek(Q-1)!=32:k(t,a)))||!a&&R<=r||R==0&&!a&&(f(O,45,Q)||f(O,46,Q)))break;if(e&&i(t)=="f")return!1;for(let h=Q;h>=0;h--)O.advance();if(e&&O.pos>o+1024)return!1}return!0}const SO=new S((O,e)=>{if(O.next==33)G(O),O.acceptToken(rO);else if(O.next==38||O.next==42){let a=O.next==38?eO:aO;p(O),O.acceptToken(a)}else O.next==39||O.next==34?(T(O,!1),O.acceptToken(OO)):w(O,!1,e.context.type==d,e.context.depth)&&O.acceptToken(J)}),kO=new S((O,e)=>{let a=e.context.type==g?e.context.depth:-1,r=O.pos;O:for(;;){let o=0,t=O.next;for(;t==32;)t=O.peek(++o);if(!o&&(f(O,45,o)||f(O,46,o))||!P(t)&&(a<0&&(a=Math.max(e.context.depth+1,o)),o<a))break;for(;;){if(O.next<0)break O;let Q=P(O.next);if(O.advance(),Q)continue O;r=O.pos}}O.acceptTokenTo(V,r)}),mO=U({DirectiveName:n.keyword,DirectiveContent:n.attributeValue,"DirectiveEnd DocEnd":n.meta,QuotedLiteral:n.string,BlockLiteralHeader:n.special(n.string),BlockLiteralContent:n.content,Literal:n.content,"Key/Literal Key/QuotedLiteral":n.definition(n.propertyName),"Anchor Alias":n.labelName,Tag:n.typeName,Comment:n.lineComment,": , -":n.separator,"?":n.punctuation,"[ ]":n.squareBracket,"{ }":n.brace}),bO=W.deserialize({version:14,states:"5lQ!ZQgOOO#PQfO'#CpO#uQfO'#DOOOQR'#Dv'#DvO$qQgO'#DRO%gQdO'#DUO%nQgO'#DUO&ROaO'#D[OOQR'#Du'#DuO&{QgO'#D^O'rQgO'#D`OOQR'#Dt'#DtO(iOqO'#DbOOQP'#Dj'#DjO(zQaO'#CmO)YQgO'#CmOOQP'#Cm'#CmQ)jQaOOQ)uQgOOQ]QgOOO*PQdO'#CrO*nQdO'#CtOOQO'#Dw'#DwO+]Q`O'#CxO+hQdO'#CwO+rQ`O'#CwOOQO'#Cv'#CvO+wQdO'#CvOOQO'#Cq'#CqO,UQ`O,59[O,^QfO,59[OOQR,59[,59[OOQO'#Cx'#CxO,eQ`O'#DPO,pQdO'#DPOOQO'#Dx'#DxO,zQdO'#DxO-XQ`O,59jO-aQfO,59jOOQR,59j,59jOOQR'#DS'#DSO-hQcO,59mO-sQgO'#DVO.TQ`O'#DVO.YQcO,59pOOQR'#DX'#DXO#|QfO'#DWO.hQcO'#DWOOQR,59v,59vO.yOWO,59vO/OOaO,59vO/WOaO,59vO/cQgO'#D_OOQR,59x,59xO0VQgO'#DaOOQR,59z,59zOOQP,59|,59|O0yOaO,59|O1ROaO,59|O1aOqO,59|OOQP-E7h-E7hO1oQgO,59XOOQP,59X,59XO2PQaO'#DeO2_QgO'#DeO2oQgO'#DkOOQP'#Dk'#DkQ)jQaOOO3PQdO'#CsOOQO,59^,59^O3kQdO'#CuOOQO,59`,59`OOQO,59c,59cO4VQdO,59cO4aQdO'#CzO4kQ`O'#CzOOQO,59b,59bOOQU,5:Q,5:QOOQR1G.v1G.vO4pQ`O1G.vOOQU-E7d-E7dO4xQdO,59kOOQO,59k,59kO5SQdO'#DQO5^Q`O'#DQOOQO,5:d,5:dOOQU,5:R,5:ROOQR1G/U1G/UO5cQ`O1G/UOOQU-E7e-E7eO5kQgO'#DhO5xQcO1G/XOOQR1G/X1G/XOOQR,59q,59qO6TQgO,59qO6eQdO'#DiO6lQgO'#DiO7PQcO1G/[OOQR1G/[1G/[OOQR,59r,59rO#|QfO,59rOOQR1G/b1G/bO7_OWO1G/bO7dOaO1G/bOOQR,59y,59yOOQR,59{,59{OOQP1G/h1G/hO7lOaO1G/hO7tOaO1G/hO8POaO1G/hOOQP1G.s1G.sO8_QgO,5:POOQP,5:P,5:POOQP,5:V,5:VOOQP-E7i-E7iOOQO,59_,59_OOQO,59a,59aOOQO1G.}1G.}OOQO,59f,59fO8oQdO,59fOOQR7+$b7+$bP,XQ`O'#DfOOQO1G/V1G/VOOQO,59l,59lO8yQdO,59lOOQR7+$p7+$pP9TQ`O'#DgOOQR'#DT'#DTOOQR,5:S,5:SOOQR-E7f-E7fOOQR7+$s7+$sOOQR1G/]1G/]O9YQgO'#DYO9jQ`O'#DYOOQR,5:T,5:TO#|QfO'#DZO9oQcO'#DZOOQR-E7g-E7gOOQR7+$v7+$vOOQR1G/^1G/^OOQR7+$|7+$|O:QOWO7+$|OOQP7+%S7+%SO:VOaO7+%SO:_OaO7+%SOOQP1G/k1G/kOOQO1G/Q1G/QOOQO1G/W1G/WOOQR,59t,59tO:jQgO,59tOOQR,59u,59uO#|QfO,59uOOQR<<Hh<<HhOOQP<<Hn<<HnO:zOaO<<HnOOQR1G/`1G/`OOQR1G/a1G/aOOQPAN>YAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:cO,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[mO],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[fO,XO,SO,kO,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),gO=W.deserialize({version:14,states:"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d",stateData:"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~",goto:"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS",nodeNames:"⚠ Document Frontmatter DashLine FrontmatterContent Body",maxTerm:10,skippedNodes:[0],repeatNodeCount:2,tokenData:"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~",tokenizers:[0],topRules:{Document:[0,1]},tokenPrec:67}),L=C.define({name:"yaml",parser:bO.configure({props:[u.add({Stream:O=>{for(let e=O.node.resolve(O.pos,-1);e&&e.to>=O.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.from<e.to)return O.baseIndentFor(e);if(e.name=="BlockLiteral")return O.baseIndentFor(e)+O.unit;if(e.name=="BlockSequence"||e.name=="BlockMapping")return O.column(e.from,1);if(e.name=="QuotedLiteral")return null;if(e.name=="Literal"){let a=O.column(e.from,1);if(a==O.lineIndent(e.from,1))return a;if(e.to>O.pos)return null}}return null},FlowMapping:v({closing:"}"}),FlowSequence:v({closing:"]"})}),M.add({"FlowMapping FlowSequence":N,"Item Pair BlockLiteral":(O,e)=>({from:e.doc.lineAt(O.from).to,to:O.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function LO(){return new m(L)}const xO=C.define({name:"yaml-frontmatter",parser:gO.configure({props:[U({DashLine:n.meta})]})});function BO(O){let{language:e,support:a}=O.content instanceof m?O.content:{language:O.content,support:[]};return new m(xO.configure({wrap:E(r=>r.name=="FrontmatterContent"?{parser:L.parser}:r.name=="Body"?{parser:e.parser}:null)}),a)}export{LO as yaml,BO as yamlFrontmatter,L as yamlLanguage};
|
|
1
|
+
import{e as W,E as S,C as B,s as U,t as n,a as m,q as E,L as C,i as u,k as v,f as M,l as N}from"./index-DMsWg7Ax.js";import"./index-DxUd3T5E.js";import"./SessionDetailView-BOdnH-cW.js";import"./sessions-CH7PeypH.js";import"./ApiClient-Dbs1H78V.js";import"./settings-C7sXXJ-n.js";import"./projects-DGF_kWVA.js";import"./EffortLevelSelector-B4z3zfJ6.js";import"./SessionLogStream-DHPxkaaK.js";import"./commandButtons-aIO6hqZn.js";import"./ArchiveConfirmModal-MpqhAjWZ.js";import"./ModelSelector-BTmHxqCs.js";import"./providers-Cm7emO-N.js";import"./SlashCommandWizard-BAC_oF5i.js";import"./QuickResponseSettings-DaEXIp3-.js";import"./QuickResponsesPanel-CIdblIbt.js";import"./ResizableTextarea-DJekfIXO.js";const c=63,D=64,j=1,A=2,y=3,H=4,Z=5,F=6,I=7,z=65,K=66,J=8,OO=9,eO=10,aO=11,rO=12,V=13,tO=19,nO=20,oO=29,PO=33,QO=34,sO=47,lO=0,$=1,b=2,d=3,g=4;class s{constructor(e,a,r){this.parent=e,this.depth=a,this.type=r,this.hash=(e?e.hash+e.hash<<8:0)+a+(a<<4)+r}}s.top=new s(null,-1,lO);function X(O,e){for(let a=0,r=e-O.pos-1;;r--,a++){let o=O.peek(r);if(P(o)||o==-1)return a}}function x(O){return O==32||O==9}function P(O){return O==10||O==13}function _(O){return x(O)||P(O)}function l(O){return O<0||_(O)}const cO=new B({start:s.top,reduce(O,e){return O.type==d&&(e==nO||e==QO)?O.parent:O},shift(O,e,a,r){if(e==y)return new s(O,X(r,r.pos),$);if(e==z||e==Z)return new s(O,X(r,r.pos),b);if(e==c)return O.parent;if(e==tO||e==PO)return new s(O,0,d);if(e==V&&O.type==g)return O.parent;if(e==sO){let o=/[1-9]/.exec(r.read(r.pos,a.pos));if(o)return new s(O,O.depth+ +o[0],g)}return O},hash(O){return O.hash}});function f(O,e,a=0){return O.peek(a)==e&&O.peek(a+1)==e&&O.peek(a+2)==e&&l(O.peek(a+3))}const fO=new S((O,e)=>{if(O.next==-1&&e.canShift(D))return O.acceptToken(D);let a=O.peek(-1);if((P(a)||a<0)&&e.context.type!=d){if(f(O,45))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(j,3);if(f(O,46))if(e.canShift(c))O.acceptToken(c);else return O.acceptToken(A,3);let r=0;for(;O.next==32;)r++,O.advance();(r<e.context.depth||r==e.context.depth&&e.context.type==$&&(O.next!=45||!l(O.peek(1))))&&O.next!=-1&&!P(O.next)&&O.next!=35&&O.acceptToken(c,-r)}},{contextual:!0}),XO=new S((O,e)=>{if(e.context.type==d){O.next==63&&(O.advance(),l(O.next)&&O.acceptToken(I));return}if(O.next==45)O.advance(),l(O.next)&&O.acceptToken(e.context.type==$&&e.context.depth==X(O,O.pos-1)?H:y);else if(O.next==63)O.advance(),l(O.next)&&O.acceptToken(e.context.type==b&&e.context.depth==X(O,O.pos-1)?F:Z);else{let a=O.pos;for(;;)if(x(O.next)){if(O.pos==a)return;O.advance()}else if(O.next==33)G(O);else if(O.next==38)p(O);else if(O.next==42){p(O);break}else if(O.next==39||O.next==34){if(T(O,!0))break;return}else if(O.next==91||O.next==123){if(!RO(O))return;break}else{w(O,!0,!1,0);break}for(;x(O.next);)O.advance();if(O.next==58){if(O.pos==a&&e.canShift(oO))return;let r=O.peek(1);l(r)&&O.acceptTokenTo(e.context.type==b&&e.context.depth==X(O,a)?K:z,a)}}},{contextual:!0});function dO(O){return O>32&&O<127&&O!=34&&O!=37&&O!=44&&O!=60&&O!=62&&O!=92&&O!=94&&O!=96&&O!=123&&O!=124&&O!=125}function q(O){return O>=48&&O<=57||O>=97&&O<=102||O>=65&&O<=70}function Y(O,e){return O.next==37?(O.advance(),q(O.next)&&O.advance(),q(O.next)&&O.advance(),!0):dO(O.next)||e&&O.next==44?(O.advance(),!0):!1}function G(O){if(O.advance(),O.next==60){for(O.advance();;)if(!Y(O,!0)){O.next==62&&O.advance();break}}else for(;Y(O,!1););}function p(O){for(O.advance();!l(O.next)&&i(O.next)!="f";)O.advance()}function T(O,e){let a=O.next,r=!1,o=O.pos;for(O.advance();;){let t=O.next;if(t<0)break;if(O.advance(),t==a)if(t==39)if(O.next==39)O.advance();else break;else break;else if(t==92&&a==34)O.next>=0&&O.advance();else if(P(t)){if(e)return!1;r=!0}else if(e&&O.pos>=o+1024)return!1}return!r}function RO(O){for(let e=[],a=O.pos+1024;;)if(O.next==91||O.next==123)e.push(O.next),O.advance();else if(O.next==39||O.next==34){if(!T(O,!0))return!1}else if(O.next==93||O.next==125){if(e[e.length-1]!=O.next-2)return!1;if(e.pop(),O.advance(),!e.length)return!0}else{if(O.next<0||O.pos>a||P(O.next))return!1;O.advance()}}const iO="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function i(O){return O<33?"u":O>125?"s":iO[O-33]}function k(O,e){let a=i(O);return a!="u"&&!(e&&a=="f")}function w(O,e,a,r){if(i(O.next)=="s"||(O.next==63||O.next==58||O.next==45)&&k(O.peek(1),a))O.advance();else return!1;let o=O.pos;for(;;){let t=O.next,Q=0,R=r+1;for(;_(t);){if(P(t)){if(e)return!1;R=0}else R++;t=O.peek(++Q)}if(!(t>=0&&(t==58?k(O.peek(Q+1),a):t==35?O.peek(Q-1)!=32:k(t,a)))||!a&&R<=r||R==0&&!a&&(f(O,45,Q)||f(O,46,Q)))break;if(e&&i(t)=="f")return!1;for(let h=Q;h>=0;h--)O.advance();if(e&&O.pos>o+1024)return!1}return!0}const SO=new S((O,e)=>{if(O.next==33)G(O),O.acceptToken(rO);else if(O.next==38||O.next==42){let a=O.next==38?eO:aO;p(O),O.acceptToken(a)}else O.next==39||O.next==34?(T(O,!1),O.acceptToken(OO)):w(O,!1,e.context.type==d,e.context.depth)&&O.acceptToken(J)}),kO=new S((O,e)=>{let a=e.context.type==g?e.context.depth:-1,r=O.pos;O:for(;;){let o=0,t=O.next;for(;t==32;)t=O.peek(++o);if(!o&&(f(O,45,o)||f(O,46,o))||!P(t)&&(a<0&&(a=Math.max(e.context.depth+1,o)),o<a))break;for(;;){if(O.next<0)break O;let Q=P(O.next);if(O.advance(),Q)continue O;r=O.pos}}O.acceptTokenTo(V,r)}),mO=U({DirectiveName:n.keyword,DirectiveContent:n.attributeValue,"DirectiveEnd DocEnd":n.meta,QuotedLiteral:n.string,BlockLiteralHeader:n.special(n.string),BlockLiteralContent:n.content,Literal:n.content,"Key/Literal Key/QuotedLiteral":n.definition(n.propertyName),"Anchor Alias":n.labelName,Tag:n.typeName,Comment:n.lineComment,": , -":n.separator,"?":n.punctuation,"[ ]":n.squareBracket,"{ }":n.brace}),bO=W.deserialize({version:14,states:"5lQ!ZQgOOO#PQfO'#CpO#uQfO'#DOOOQR'#Dv'#DvO$qQgO'#DRO%gQdO'#DUO%nQgO'#DUO&ROaO'#D[OOQR'#Du'#DuO&{QgO'#D^O'rQgO'#D`OOQR'#Dt'#DtO(iOqO'#DbOOQP'#Dj'#DjO(zQaO'#CmO)YQgO'#CmOOQP'#Cm'#CmQ)jQaOOQ)uQgOOQ]QgOOO*PQdO'#CrO*nQdO'#CtOOQO'#Dw'#DwO+]Q`O'#CxO+hQdO'#CwO+rQ`O'#CwOOQO'#Cv'#CvO+wQdO'#CvOOQO'#Cq'#CqO,UQ`O,59[O,^QfO,59[OOQR,59[,59[OOQO'#Cx'#CxO,eQ`O'#DPO,pQdO'#DPOOQO'#Dx'#DxO,zQdO'#DxO-XQ`O,59jO-aQfO,59jOOQR,59j,59jOOQR'#DS'#DSO-hQcO,59mO-sQgO'#DVO.TQ`O'#DVO.YQcO,59pOOQR'#DX'#DXO#|QfO'#DWO.hQcO'#DWOOQR,59v,59vO.yOWO,59vO/OOaO,59vO/WOaO,59vO/cQgO'#D_OOQR,59x,59xO0VQgO'#DaOOQR,59z,59zOOQP,59|,59|O0yOaO,59|O1ROaO,59|O1aOqO,59|OOQP-E7h-E7hO1oQgO,59XOOQP,59X,59XO2PQaO'#DeO2_QgO'#DeO2oQgO'#DkOOQP'#Dk'#DkQ)jQaOOO3PQdO'#CsOOQO,59^,59^O3kQdO'#CuOOQO,59`,59`OOQO,59c,59cO4VQdO,59cO4aQdO'#CzO4kQ`O'#CzOOQO,59b,59bOOQU,5:Q,5:QOOQR1G.v1G.vO4pQ`O1G.vOOQU-E7d-E7dO4xQdO,59kOOQO,59k,59kO5SQdO'#DQO5^Q`O'#DQOOQO,5:d,5:dOOQU,5:R,5:ROOQR1G/U1G/UO5cQ`O1G/UOOQU-E7e-E7eO5kQgO'#DhO5xQcO1G/XOOQR1G/X1G/XOOQR,59q,59qO6TQgO,59qO6eQdO'#DiO6lQgO'#DiO7PQcO1G/[OOQR1G/[1G/[OOQR,59r,59rO#|QfO,59rOOQR1G/b1G/bO7_OWO1G/bO7dOaO1G/bOOQR,59y,59yOOQR,59{,59{OOQP1G/h1G/hO7lOaO1G/hO7tOaO1G/hO8POaO1G/hOOQP1G.s1G.sO8_QgO,5:POOQP,5:P,5:POOQP,5:V,5:VOOQP-E7i-E7iOOQO,59_,59_OOQO,59a,59aOOQO1G.}1G.}OOQO,59f,59fO8oQdO,59fOOQR7+$b7+$bP,XQ`O'#DfOOQO1G/V1G/VOOQO,59l,59lO8yQdO,59lOOQR7+$p7+$pP9TQ`O'#DgOOQR'#DT'#DTOOQR,5:S,5:SOOQR-E7f-E7fOOQR7+$s7+$sOOQR1G/]1G/]O9YQgO'#DYO9jQ`O'#DYOOQR,5:T,5:TO#|QfO'#DZO9oQcO'#DZOOQR-E7g-E7gOOQR7+$v7+$vOOQR1G/^1G/^OOQR7+$|7+$|O:QOWO7+$|OOQP7+%S7+%SO:VOaO7+%SO:_OaO7+%SOOQP1G/k1G/kOOQO1G/Q1G/QOOQO1G/W1G/WOOQR,59t,59tO:jQgO,59tOOQR,59u,59uO#|QfO,59uOOQR<<Hh<<HhOOQP<<Hn<<HnO:zOaO<<HnOOQR1G/`1G/`OOQR1G/a1G/aOOQPAN>YAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:cO,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[mO],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[fO,XO,SO,kO,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),gO=W.deserialize({version:14,states:"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d",stateData:"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~",goto:"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS",nodeNames:"⚠ Document Frontmatter DashLine FrontmatterContent Body",maxTerm:10,skippedNodes:[0],repeatNodeCount:2,tokenData:"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~",tokenizers:[0],topRules:{Document:[0,1]},tokenPrec:67}),L=C.define({name:"yaml",parser:bO.configure({props:[u.add({Stream:O=>{for(let e=O.node.resolve(O.pos,-1);e&&e.to>=O.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.from<e.to)return O.baseIndentFor(e);if(e.name=="BlockLiteral")return O.baseIndentFor(e)+O.unit;if(e.name=="BlockSequence"||e.name=="BlockMapping")return O.column(e.from,1);if(e.name=="QuotedLiteral")return null;if(e.name=="Literal"){let a=O.column(e.from,1);if(a==O.lineIndent(e.from,1))return a;if(e.to>O.pos)return null}}return null},FlowMapping:v({closing:"}"}),FlowSequence:v({closing:"]"})}),M.add({"FlowMapping FlowSequence":N,"Item Pair BlockLiteral":(O,e)=>({from:e.doc.lineAt(O.from).to,to:O.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function LO(){return new m(L)}const xO=C.define({name:"yaml-frontmatter",parser:gO.configure({props:[U({DashLine:n.meta})]})});function BO(O){let{language:e,support:a}=O.content instanceof m?O.content:{language:O.content,support:[]};return new m(xO.configure({wrap:E(r=>r.name=="FrontmatterContent"?{parser:L.parser}:r.name=="Body"?{parser:e.parser}:null)}),a)}export{LO as yaml,BO as yamlFrontmatter,L as yamlLanguage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as a}from"./index-
|
|
1
|
+
import{L as a}from"./index-DxUd3T5E.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-DxUd3T5E.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-DxUd3T5E.js";import{a as c}from"./ApiClient-Dbs1H78V.js";import{u as p}from"./settings-C7sXXJ-n.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-DxUd3T5E.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-DxUd3T5E.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as _,L as y}from"./index-DkLkDgig.js";import{a as c}from"./ApiClient-Dbs1H78V.js";import{u as p}from"./settings-BplIxCbi.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){this.loading=!0,this.error=null;try{this.sessions=await c.getProjectSessions(e,!1,null)}catch(s){this.error=s.message}finally{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};
|