circuschief 0.2.1 → 0.4.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.
Files changed (121) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/api/git.js +15 -0
  3. package/packages/server/src/api/index.js +13 -2
  4. package/packages/server/src/api/projects-commandButtons.js +96 -0
  5. package/packages/server/src/api/projects-session-helpers.js +51 -33
  6. package/packages/server/src/api/projects.js +109 -113
  7. package/packages/server/src/api/sessions-archive.js +2 -1
  8. package/packages/server/src/api/sessions-lifecycle.js +2 -1
  9. package/packages/server/src/api/sessions-patch.js +2 -0
  10. package/packages/server/src/config.js +6 -0
  11. package/packages/server/src/database.js +1 -0
  12. package/packages/server/src/db/DatabaseManager.js +12 -1
  13. package/packages/server/src/db/ProjectRepository.js +22 -5
  14. package/packages/server/src/db/index.js +4 -0
  15. package/packages/server/src/db/migrations/index.js +7 -0
  16. package/packages/server/src/db/migrations/miscMigrations.js +78 -1
  17. package/packages/server/src/db/migrations/projectsMigrations.js +4 -0
  18. package/packages/server/src/index.js +10 -4
  19. package/packages/server/src/services/gitService.js +42 -6
  20. package/packages/server/src/services/gitSessionSetup.js +4 -3
  21. package/packages/server/src/services/kanbanTriggers.js +1 -0
  22. package/packages/server/src/services/schedulerService.js +32 -0
  23. package/packages/server/src/services/sessionExecution.js +2 -2
  24. package/packages/server/src/services/templateTriggerService.js +1 -0
  25. package/packages/shared/src/contracts/projects.js +4 -1
  26. package/packages/shared/src/types.js +4 -3
  27. package/packages/web/dist/assets/ActiveSessionsView-BVco8bPU.css +1 -0
  28. package/packages/web/dist/assets/ActiveSessionsView-D1daFFvI.js +1 -0
  29. package/packages/web/dist/assets/{AgentLogsView-D4l0N9ZA.js → AgentLogsView-B_NDIx2_.js} +1 -1
  30. package/packages/web/dist/assets/{ApiClient-Dbs1H78V.js → ApiClient-CcqJ-GAv.js} +1 -1
  31. package/packages/web/dist/assets/ArchiveConfirmModal-BHqbCCX2.js +1 -0
  32. package/packages/web/dist/assets/{ArchiveConfirmModal-CQZeuYBz.css → ArchiveConfirmModal-BQ-4gI0R.css} +1 -1
  33. package/packages/web/dist/assets/CommandButtonDetailView-B9crZey8.js +1 -0
  34. package/packages/web/dist/assets/EffortLevelSelector-HuOPegKI.js +1 -0
  35. package/packages/web/dist/assets/{GeneralSettingsView-BqCzCX-z.js → GeneralSettingsView-CzBagrDs.js} +1 -1
  36. package/packages/web/dist/assets/{PathChooser-CXFxb8Oj.js → InputWithButton-Cplkm8Ze.js} +1 -1
  37. package/packages/web/dist/assets/InputWithButton-cYdrEmTs.css +1 -0
  38. package/packages/web/dist/assets/InterpolationHelp-bG_y10VY.js +1 -0
  39. package/packages/web/dist/assets/MarkdownEditor-CXDVTLvp.js +2 -0
  40. package/packages/web/dist/assets/{ModelSelector-DSxaZWBL.js → ModelSelector-CgpqdZtV.js} +1 -1
  41. package/packages/web/dist/assets/{NewSessionView-BsI7JtO9.js → NewSessionView-91V-4qLi.js} +2 -2
  42. package/packages/web/dist/assets/{NewSessionView-Byoi1XdQ.css → NewSessionView-D_Hi7M9g.css} +1 -1
  43. package/packages/web/dist/assets/ProjectEditView-C3bOYnD6.js +1 -0
  44. package/packages/web/dist/assets/ProjectEditView-CpeKj-_w.css +1 -0
  45. package/packages/web/dist/assets/ProjectListView-BEo1p4dO.js +1 -0
  46. package/packages/web/dist/assets/ProjectListView-CumumZN-.css +1 -0
  47. package/packages/web/dist/assets/ProjectNewView-CXGjy3OL.js +1 -0
  48. package/packages/web/dist/assets/ProjectNewView-CaLXfFzd.css +1 -0
  49. package/packages/web/dist/assets/{ProvidersView-CgAr0qms.js → ProvidersView-CMAnPTEX.js} +1 -1
  50. package/packages/web/dist/assets/{ProvidersView-B_QQF3RM.css → ProvidersView-uD8SKWpA.css} +1 -1
  51. package/packages/web/dist/assets/{QuickResponseSettings-uDDpwaza.js → QuickResponseSettings-Ds4X-J-t.js} +1 -1
  52. package/packages/web/dist/assets/{QuickResponsesPanel-D0qs0Fm_.js → QuickResponsesPanel-BY2v23c5.js} +1 -1
  53. package/packages/web/dist/assets/{ResizableTextarea-_kHi1Mg3.js → ResizableTextarea-C2s6_7X9.js} +1 -1
  54. package/packages/web/dist/assets/{SessionCard-Be1-bK0C.js → SessionCard-C7vFzR16.js} +1 -1
  55. package/packages/web/dist/assets/{SessionDetailView-mnGRMaLY.css → SessionDetailView-BL83oPiI.css} +1 -1
  56. package/packages/web/dist/assets/SessionDetailView-D3f0FEV1.js +36 -0
  57. package/packages/web/dist/assets/{SessionFormOptions-DvhOyP6z.js → SessionFormOptions-3LfqiLiR.js} +1 -1
  58. package/packages/web/dist/assets/{SessionListView-CuHsWj85.js → SessionListView-NGW-u434.js} +1 -1
  59. package/packages/web/dist/assets/{SessionLogStream-Da_GniUZ.js → SessionLogStream-NR-AS676.js} +6 -6
  60. package/packages/web/dist/assets/SettingsView-DKINDb2z.js +1 -0
  61. package/packages/web/dist/assets/{SlashCommandWizard-B_8ifpxN.js → SlashCommandWizard-PXipO1yA.js} +1 -1
  62. package/packages/web/dist/assets/{SummarySettingsView-KvgSGHdd.js → SummarySettingsView-D_2bSsYD.js} +1 -1
  63. package/packages/web/dist/assets/{TemplateDetailView-BhOjYIvS.js → TemplateDetailView-C5rbgXwU.js} +1 -1
  64. package/packages/web/dist/assets/{commandButtons-B4OYZP0J.js → commandButtons-D_-wR8zJ.js} +1 -1
  65. package/packages/web/dist/assets/index-BCazaXF8.js +1 -0
  66. package/packages/web/dist/assets/index-BmQRt229.js +3 -0
  67. package/packages/web/dist/assets/index-CCQGqJXX.js +1 -0
  68. package/packages/web/dist/assets/index-CcCiJkwz.js +1 -0
  69. package/packages/web/dist/assets/index-Cs-001Bx.js +1 -0
  70. package/packages/web/dist/assets/index-CxiSnR0R.js +1 -0
  71. package/packages/web/dist/assets/index-D-lQSDZh.js +1 -0
  72. package/packages/web/dist/assets/{index-CSOPrlmq.js → index-D1Lg5reX.js} +3 -3
  73. package/packages/web/dist/assets/index-D9VgH58U.js +1 -0
  74. package/packages/web/dist/assets/index-D9Z6zsGS.js +1 -0
  75. package/packages/web/dist/assets/index-DP2i58hO.js +1 -0
  76. package/packages/web/dist/assets/index-DaL3nu0U.js +1 -0
  77. package/packages/web/dist/assets/index-Dfy1JGZs.js +1 -0
  78. package/packages/web/dist/assets/index-DgIOe3cM.js +1 -0
  79. package/packages/web/dist/assets/index-Dp3Eg3c0.js +1 -0
  80. package/packages/web/dist/assets/{index-BHVnr8MO.js → index-DveLfEiG.js} +2 -2
  81. package/packages/web/dist/assets/index-DyQ22-ut.js +1 -0
  82. package/packages/web/dist/assets/{index-BqVgX_Jy.js → index-Krfrs3sc.js} +3 -3
  83. package/packages/web/dist/assets/index-gylMFbgn.js +7 -0
  84. package/packages/web/dist/assets/{projects-B2du-GX8.js → projects-CMJJca64.js} +1 -1
  85. package/packages/web/dist/assets/{providers-B__J6FX0.js → providers-BCtNZWYw.js} +1 -1
  86. package/packages/web/dist/assets/{sessions-VDrd87yA.js → sessions-CoRS-wuR.js} +1 -1
  87. package/packages/web/dist/assets/{settings-CZ7Pc-Pt.js → settings-BN_W4nwV.js} +1 -1
  88. package/packages/web/dist/assets/useSummaryHelpers-GVg7sMWF.js +1 -0
  89. package/packages/web/dist/index.html +1 -1
  90. package/packages/web/dist/assets/ActiveSessionsView-3697sD8N.js +0 -1
  91. package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +0 -1
  92. package/packages/web/dist/assets/ArchiveConfirmModal-Bv3vGOMM.js +0 -1
  93. package/packages/web/dist/assets/CommandButtonDetailView-Bk_SHxpu.js +0 -1
  94. package/packages/web/dist/assets/EffortLevelSelector-VfBEelvO.js +0 -1
  95. package/packages/web/dist/assets/InterpolationHelp-Dc1Y0T6v.js +0 -1
  96. package/packages/web/dist/assets/MarkdownEditor-DwBQkZbs.js +0 -2
  97. package/packages/web/dist/assets/PathChooser-BoMGzeg2.css +0 -1
  98. package/packages/web/dist/assets/ProjectEditView-Bes4Mib4.js +0 -1
  99. package/packages/web/dist/assets/ProjectEditView-DNwBUNRk.css +0 -1
  100. package/packages/web/dist/assets/ProjectListView-C55H1JHQ.css +0 -1
  101. package/packages/web/dist/assets/ProjectListView-DzEu-C36.js +0 -1
  102. package/packages/web/dist/assets/ProjectNewView-CpgE4R-l.css +0 -1
  103. package/packages/web/dist/assets/ProjectNewView-Cv-iEAgl.js +0 -1
  104. package/packages/web/dist/assets/SessionDetailView-DUYb7qTA.js +0 -36
  105. package/packages/web/dist/assets/SettingsView-5RDCXNUa.js +0 -1
  106. package/packages/web/dist/assets/index-80Qu7W6P.js +0 -1
  107. package/packages/web/dist/assets/index-B8_Iqwcq.js +0 -1
  108. package/packages/web/dist/assets/index-B9JErft2.js +0 -1
  109. package/packages/web/dist/assets/index-BarVnQIj.js +0 -3
  110. package/packages/web/dist/assets/index-BsvRdU0B.js +0 -1
  111. package/packages/web/dist/assets/index-Bugg2M-E.js +0 -1
  112. package/packages/web/dist/assets/index-C2Pjy-M8.js +0 -1
  113. package/packages/web/dist/assets/index-CS_wb_Vj.js +0 -1
  114. package/packages/web/dist/assets/index-ClzNIdCp.js +0 -1
  115. package/packages/web/dist/assets/index-Cn9Ajkye.js +0 -1
  116. package/packages/web/dist/assets/index-CucpVX4L.js +0 -1
  117. package/packages/web/dist/assets/index-D9hZYvW3.js +0 -1
  118. package/packages/web/dist/assets/index-DA0dK_PG.js +0 -7
  119. package/packages/web/dist/assets/index-DgpSn-jR.js +0 -1
  120. package/packages/web/dist/assets/index-HZwIyC9t.js +0 -1
  121. package/packages/web/dist/assets/index-SS3wA2sI.js +0 -1
@@ -0,0 +1,7 @@
1
+ import{e as s,E as R,h as Y,C as x,s as w,t as O,a as d,b as k,d as h,L as f,i as u,j as y,c as l,k as g,f as j,l as U,g as G,m as X,N as b,I as Z}from"./index-Krfrs3sc.js";import"./index-D1Lg5reX.js";import"./SessionDetailView-D3f0FEV1.js";import"./sessions-CoRS-wuR.js";import"./ApiClient-CcqJ-GAv.js";import"./settings-BN_W4nwV.js";import"./projects-CMJJca64.js";import"./EffortLevelSelector-HuOPegKI.js";import"./SessionLogStream-NR-AS676.js";import"./commandButtons-D_-wR8zJ.js";import"./ArchiveConfirmModal-BHqbCCX2.js";import"./ModelSelector-CgpqdZtV.js";import"./providers-BCtNZWYw.js";import"./SlashCommandWizard-PXipO1yA.js";import"./useSummaryHelpers-GVg7sMWF.js";import"./QuickResponseSettings-Ds4X-J-t.js";import"./QuickResponsesPanel-BY2v23c5.js";import"./ResizableTextarea-C2s6_7X9.js";const _=177,q=179,E=184,v=12,C=13,D=17,z=20,F=25,B=53,N=95,I=142,L=144,A=145,J=148,M=10,H=13,K=32,OO=9,$=47,QO=41,eO=125,aO=new R((Q,e)=>{for(let n=0,a=Q.next;(e.context&&(a<0||a==M||a==H||a==$&&Q.peek(n+1)==$)||a==QO||a==eO)&&Q.acceptToken(_),!(a!=K&&a!=OO);)a=Q.peek(++n)},{contextual:!0});let tO=new Set([N,E,z,v,D,L,A,I,J,C,B,F]);const iO=new x({start:!1,shift:(Q,e)=>e==q?Q:tO.has(e)}),XO=w({"func interface struct chan map const type var":O.definitionKeyword,"import package":O.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":O.controlKeyword,range:O.keyword,Bool:O.bool,String:O.string,Rune:O.character,Number:O.number,Nil:O.null,VariableName:O.variableName,DefName:O.definition(O.variableName),TypeName:O.typeName,LabelName:O.labelName,FieldName:O.propertyName,"FunctionDecl/DefName":O.function(O.definition(O.variableName)),"TypeSpec/DefName":O.definition(O.typeName),"CallExpr/VariableName":O.function(O.variableName),LineComment:O.lineComment,BlockComment:O.blockComment,LogicOp:O.logicOperator,ArithOp:O.arithmeticOperator,BitOp:O.bitwiseOperator,"DerefOp .":O.derefOperator,"UpdateOp IncDecOp":O.updateOperator,CompareOp:O.compareOperator,"= :=":O.definitionOperator,"<-":O.operator,'~ "*"':O.modifier,"; ,":O.separator,"... :":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),nO={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},PO=s.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuO<uQQO'#ExO<|QQO'#FRO4cQQO'#FWO=WQQO'#FYO=]QRO'#F_O=jQRO'#FaO=uQQO'#FaOOQP'#Fe'#FeO4cQQO'#FgP=zOWO'#C^POOO)CAz)CAzOOQO'#G]'#G]OOQO,5<W,5<WOOQO-E9j-E9jO?TQTO'#CqOOQO'#C|'#C|OOQP,59g,59gO?tQQO'#D_O@fQSO'#FuO@kQQO'#C}O@pQQO'#D[O9XQQO'#FqO@uQRO,5=TOAyQQO,59yOCVQSO,5:[O@kQQO'#C}OCaQQO'#DjOOQP,59^,59^OOQO,5<a,5<aO?tQQO'#DeOOQO,5:e,5:eOOQO-E9s-E9sOOQP,59z,59zOOQP,59|,59|OCqQSO,5:QO(kQQO,5:ROC{QQO,5:RO&]QRO'#FxOOQO'#Fx'#FxOFjQQO'#GpOFwQQO,5:^OF|QQO,5:_OHdQQO,5:`OHlQQO,5:aOHvQRO'#FyOIaQRO,5=]OIuQQO'#DzOOQP,5:d,5:dOOQO'#EV'#EVOOQO'#EW'#EWOOQO'#EX'#EXOOQO'#EZ'#EZOOQO'#E['#E[O4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:wOOQP,5:x,5:xO?tQQO'#EOOOQP,5:g,5:gOOQP,5:k,5:kO9yQQO,59vO4cQQO,5:zO4cQQO,5:}OI|QRO,5;_OOQO,5<Y,5<YOOQO-E9l-E9lO]QQOOOOQP'#Cb'#CbOOQP,58z,58zOOQP'#Cf'#CfOJWQQO'#CfOJ]QSO'#CkOOQP,59O,59OOJkQQO'#DPOLZQQO,5<UOLbQQO,59iOLsQQO,5<TOMpQQO'#DUOOQP,59n,59nOOQP,59v,59vONfQQO,59vONmQQO'#CwOOQP,59_,59_O?tQQO,5:SONxQRO'#EgO! VQQO'#EhOOQP,5;P,5;PO! |QQO'#EkO!!WQQO'#EnOOQP,5;T,5;TO!!`QRO'#EqO!!mQQO'#ErOOQP,5;Z,5;ZO!!uQTO'#CbO!!|QTO,5;aO&]QRO,5;aO!#WQQO,5;jO!$yQTO,5;dO!%WQQO'#EzOOQP,5;d,5;dO&]QRO,5;dO!%cQSO,5;mO!%mQQO'#E`O!%uQQO'#EcO!%zQQO'#FTO!&UQQO'#FTOOQP,5;m,5;mO!&ZQQO,5;mO!&`QTO,5;rO!&mQQO'#F[OOQP,5;t,5;tO!&xQTO'#GqOOQP,5;y,5;yOOQP'#Et'#EtOOQP,5;{,5;{O!']QTO,5<RPOOO'#Fk'#FkP!'jOWO,58xPOOO,58x,58xO!'uQQO,59yO!'zQQO'#GgOOQP,59i,59iO(kQQO,59vOOQP,5<],5<]OOQP-E9o-E9oOOQP1G/e1G/eOOQP1G/v1G/vO!([QSO'#DlO!(lQQO'#DlO!(wQQO'#DkOOQO'#Go'#GoO!(|QQO'#GoO!)UQQO,5:UO!)ZQQO'#GnO!)fQQO,5:PPOQO'#Cq'#CqO(kQQO1G/lOOQP1G/m1G/mO(kQQO1G/mOOQO,5<d,5<dOOQO-E9v-E9vOOQP1G/x1G/xO!)kQSO1G/yOOQP'#Cy'#CyOOQP1G/z1G/zO?tQQO1G/}O!)xQSO1G/{O!*YQQO1G/|O!*gQTO,5<eOOQP-E9w-E9wOOQP,5:f,5:fO!+QQQO,5:fOOQP1G0[1G0[O!,vQTO1G0[O!.wQTO1G0[O!/OQTO1G0[O!0pQTO1G0[O!1QQTO1G0cO!1bQQO,5:jOOQP1G/b1G/bOOQP1G0f1G0fOOQP1G0i1G0iOOQP1G0y1G0yOOQP,59Q,59QO&]QRO'#FmO!1mQSO,59VOOQP,59V,59VOOQO'#DQ'#DQO?tQQO'#DQO!1{QQO'#DQOOQO'#Gh'#GhO!2SQQO'#GhO!2[QQO,59kO!2aQSO'#CqOJkQQO'#DPOOQP,5=R,5=RO@kQQO1G1pOOQP1G/w1G/wO.hQQO'#ElO!2rQRO1G1oO@kQQO1G1oO@kQQO'#DVO?tQQO'#DWOOQP'#Gk'#GkO!2}QRO'#GjOOQP'#Gj'#GjO&]QRO'#FsO!3`QQO,59pOOQP,59p,59pO!3gQRO'#CxO!3uQQO'#CxO!3|QRO'#CxO.hQQO'#CxO&]QRO'#FoO!4XQQO,59cOOQP,59c,59cO!4dQQO1G/nO4cQQO,5;RO!4iQQO,5;RO&]QRO'#FzO!4nQQO,5;SOOQP,5;S,5;SO!6aQQO'#DgO?tQQO,5;VOOQP,5;V,5;VO&]QRO'#F}O!6hQQO,5;YOOQP,5;Y,5;YO!6pQRO,5;]O4cQQO,5;]O&]QRO'#GOO!6{QQO,5;^OOQP,5;^,5;^O!7TQRO1G0{O!7`QQO1G0{O4cQQO1G1UO!8vQQO1G1UOOQP1G1O1G1OO!9OQQO'#GPO!9YQQO,5;fOOQP,5;f,5;fO4cQQO'#E{O!9eQQO'#E{O<uQQO1G1OOOQP1G1X1G1XO!9jQQO,5:zO!9jQQO,5:}O!9tQSO,5;oO!:OQQO,5;oO!:VQQO,5;oO!9OQQO'#GRO!:aQQO,5;vOOQP,5;v,5;vO!<PQQO'#F]O!<WQQO'#F]POOO-E9i-E9iPOOO1G.d1G.dO!<]QQO,5:VO!<gQQO,5=ZO!<tQQO,5=ZOOQP1G/p1G/pO!<|QQO,5=YO!=WQQO,5=YOOQP1G/k1G/kOOQP7+%W7+%WOOQP7+%X7+%XOOQP7+%e7+%eO!=cQQO7+%eO!=hQQO7+%iOOQP7+%g7+%gO!=mQQO7+%gO!=rQQO7+%hO!>PQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5<X,5<XOOQO-E9k-E9kOOQP1G.q1G.qOOQO,59l,59lO?tQQO,59lO!?cQQO,5=SO!?jQQO,5=SOOQP1G/V1G/VO!?rQQO,59yO!?}QRO7+'[O!@YQQO'#EmO!@dQQO'#HOO!@lQQO,5;WOOQP7+'Z7+'ZO!@qQRO7+'ZOOQP,59q,59qOOQP,59r,59rOOQO'#DZ'#DZO!@]QQO'#FtO!@|QRO,59tOOQO,5<_,5<_OOQO-E9q-E9qOOQP1G/[1G/[OOQP,59d,59dOHgQQO'#FpO!3uQQO,59dO!A_QRO,59dO!AjQRO,59dOOQO,5<Z,5<ZOOQO-E9m-E9mOOQP1G.}1G.}O(kQQO7+%YOOQP1G0m1G0mO4cQQO1G0mOOQO,5<f,5<fOOQO-E9x-E9xOOQP1G0n1G0nO!AxQQO'#GdOOQP1G0q1G0qOOQO,5<i,5<iOOQO-E9{-E9{OOQP1G0t1G0tO4cQQO1G0wOOQP1G0w1G0wOOQO,5<j,5<jOOQO-E9|-E9|OOQP1G0x1G0xO!B]QQO7+&gO!BeQSO7+&gO!CsQSO7+&pO!CzQQO7+&pOOQO,5<k,5<kOOQO-E9}-E9}OOQP1G1Q1G1QO!DRQQO,5;gOOQO,5;g,5;gO!DWQSO7+&jOOQP7+&j7+&jO!DbQQO7+&pO!7`QQO1G1[O!DgQQO1G1ZOOQO1G1Z1G1ZO!DnQSO1G1ZOOQO,5<m,5<mOOQO-E:P-E:POOQP1G1b1G1bO!DxQSO'#GqO!E]QQO'#F^O!EbQQO'#F^O!EgQQO,5;wOOQO,5;w,5;wO!ElQSO1G/qOOQO1G/q1G/qO!EyQSO'#DoO!FZQQO'#DoO!FfQQO'#DnOOQO,5<c,5<cO!FkQQO1G2uOOQO-E9u-E9uOOQO,5<b,5<bO!FxQQO1G2tOOQO-E9t-E9tOOQP<<IP<<IPOOQP<<IT<<ITOOQP<<IR<<IRO!GSQSO<<ISOOQP<<IS<<ISO4cQQO<<ISO!GaQSO<<ISOOQP7+%l7+%lO!GkQQO7+%lOOQP7+%p7+%pO!GpQQO7+%pO!GuQQO7+%pOOQO1G/W1G/WOOQO,5<^,5<^O!G}QQO1G2nOOQO-E9p-E9pOOQP<<Jv<<JvO.hQQO'#F{O!@YQQO,5;XOOQO,5;X,5;XO!HUQQO,5=jO!H^QQO,5=jOOQO1G0r1G0rOOQP<<Ju<<JuOOQP,5<`,5<`OOQP-E9r-E9rOOQO,5<[,5<[OOQO-E9n-E9nO!HfQRO1G/OOOQP1G/O1G/OOOQP<<Ht<<HtOOQP7+&X7+&XO!HqQQO'#DeOOQP7+&c7+&cOOQP<<JR<<JRO!HxQRO<<JRO!ITQQO<<J[O!I]QQO<<J[OOQO1G1R1G1ROOQP<<JU<<JUO4cQQO<<J[O!IbQSO7+&vOOQO7+&u7+&uO!IlQQO7+&uO4cQQO,5;xOOQO1G1c1G1cO!<]QQO,5:YP!<]QQO'#FwP?tQQO'#FvOOQPAN>nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<<IW<<IWOOQP<<I[<<I[O!I}QQO<<I[P!>nQQO'#FrOOQO,5<g,5<gOOQO-E9y-E9yOOQO1G0s1G0sOOQO,5<h,5<hO!JVQQO1G3UOOQO-E9z-E9zOOQP7+$j7+$jO!J_QQO'#GnO!B]QQOAN?mO!JjQQOAN?vO!JqQQOAN?vO!KzQSOAN?vOOQO<<Ja<<JaO!LRQSO1G1dO!L]QSO1G/tOOQO1G/t1G/tO!LjQSOG24YOOQPG24YG24YOOQPAN>vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5<l,5<lOOQO-E:O-E:OOOQP1G1V1G1VO!MzQQO,5;lOOQO,5;l,5;lO!NPQQO!$'NhOOQO1G1W1G1WO!JqQQO!)9DSOOQP!.K9n!.K9nO# {QTO'#CqO#!`QTO'#CqO##}QSO'#CqO#$XQSO'#CqO#&]QSO'#CqO#&gQQO'#FyO#&tQQO'#FyO#'OQQO,5=]O#'ZQQO,5=]O#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO!7`QQO,5:wO!7`QQO,5:zO!7`QQO,5:}O#(yQSO'#CbO#)}QSO'#CbO#*bQSO'#GqO#*rQSO'#GqO#+PQRO'#GgO#+yQSO,5<eO#,ZQSO,5<eO#,hQSO1G0[O#-rQTO1G0[O#-yQSO1G0[O#.TQSO1G0[O#0{QTO1G0[O#1SQSO1G0[O#2eQSO1G0[O#2lQTO1G0[O#2sQSO1G0[O#4XQSO1G0[O#4`QTO1G0[O#4jQSO1G0[O#4wQSO1G0cO#5dQTO'#CqO#5kQTO'#CqO#6bQSO'#GqO#'cQQO'#EPO!7`QQO'#EPOF|QQO'#EPO#8]QQO'#EPO#8gQQO'#EPO#8qQQO'#EPO#8{QQO'#E`O#9TQQO'#EcO@kQQO'#C}O?tQQO,5:RO#9YQQO,59vO#:iQQO,59vO?tQQO,59vO?tQQO1G/lO?tQQO1G/mO?tQQO7+%YO?tQQO'#C{O#:pQQO'#DgO#9YQQO'#D[O#:wQQO'#D[O#:|QSO,5:QO#;WQQO,5:RO#;]QQO1G/nO?tQQO,5:SO#;bQQO'#Dh",stateData:"#;m~O$yOSPOS$zPQ~OVvOX{O[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO$v%QP~OTzO~P]O$z!`O~OVeXZeX^eX^!TXj!TXnUXneX!QeX!WeX!W!TX!|eX#ReX#TeX#UeX#WUX$weX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O!a#hX~P$XOV!bO$w!bO~O[!wX^pX^!wXa!wXd!wXhpXh!wXrpXr!wXwpXw!wX!PpX!P!wX!QpX!Q!wX!WpX!W!wX!]pX!]!wX!p!wX!q!wX%OpX%O!wX%U!wX%V!wX%YpX%Y!wX%f!wX%g!wX%h!wX%i!wX%j!wX~O^!hOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%O!eO%Y!fO~On!lO#W%]XV%]X^%]Xh%]Xr%]Xw%]X!P%]X!Q%]X!W%]X!]%]X#T%]X$w%]X%O%]X%Y%]Xu%]X~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO~P*aOj!qO^%XX]%XXn%XX!V%XX~O!W!tOV%TXZ%TX^%TXn%TX!Q%TX!W%TX!|%TX#R%TX#T%TX#U%TX$w%TX%Y%TX%`%TX%f%TX%g%TX%i%TX%j%TX%k%TX%l%TX%m%TX%n%TX%o%TX%p%TX%q%TX]%TX!V%TXj%TXi%TX!a%TXu%TX~OZ!sO~P,^O%O!eO~O!W!tO^%WXj%WX]%WXn%WX!V%WXu%WXV%WX$w%WX%`%WX#T%WX[%WX!a%WX~Ou!{O!QnO!V!zO~P*aOV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlOi%dP~O^#QO~OZ#RO^#VOn#TO!Q#cO!W#SO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX$w`X~O!|#`O~P2gO^#VO~O^#eO~O!QnO~P*aO[oO^YOaoOdoOh!POr!pOw}O!QnO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!P#hO~P4jO#T#iO#U#iO~O#W#jO~O!a#kO~OVvO[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O$v%QX~P6hO%O#oO~OZ#rO[#qO^#sO%O#oO~O^#uO%O#oO~Oj#yO~O^!hOh!POr!jOw}O!P!OO!Q#|O!WaO!]!QO%O!eO%Y!fO~Oj#}O~O!W$PO~O^$RO%O#oO~O^$UO%O#oO~O^$XO%O#oO~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O$ZO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oj$`O~P;_OV$fOjcO~P;_Oj$kO~O!QnOV$RX$w$RX~P*aO%O$oOV$TX$w$TX~O%O$oO~O${$rO$|$rO$}$tO~OZeX^!TX!W!TXj!TXn!TXh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~O]!TX!V!TXu!TX#T!TXV!TX$w!TX%`!TX[!TX!a!TX~P>VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:"⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl",maxTerm:218,context:iO,nodeProps:[["isolate",-3,2,12,20,""],["group",-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,"Expr",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,"Statement",-12,23,31,33,38,46,49,50,51,52,56,57,58,"Type"],["openedBy",13,"(",25,"{",53,"["],["closedBy",14,")",26,"}",54,"]"]],propSources:[XO],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[aO,1,2,new Y("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:Q=>nO[Q]||-1}],tokenPrec:5451}),oO=[X("func ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"declaration",type:"keyword"}),X("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"method declaration",type:"keyword"}),X("var ${name} = ${value}",{label:"var",detail:"declaration",type:"keyword"}),X("type ${name} ${type}",{label:"type",detail:"declaration",type:"keyword"}),X("const ${name} = ${value}",{label:"const",detail:"declaration",type:"keyword"}),X("type ${name} = ${type}",{label:"type",detail:"alias declaration",type:"keyword"}),X("for ${init}; ${test}; ${update} {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),X("for ${i} := range ${value} {\n ${}\n}",{label:"for",detail:"range",type:"keyword"}),X(`select {
2
+ \${}
3
+ }`,{label:"select",detail:"statement",type:"keyword"}),X("case ${}:\n${}",{label:"case",type:"keyword"}),X("switch ${} {\n ${}\n}",{label:"switch",detail:"statement",type:"keyword"}),X("switch ${}.(${type}) {\n ${}\n}",{label:"switch",detail:"type statement",type:"keyword"}),X("if ${} {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),X(`if \${} {
4
+ \${}
5
+ } else {
6
+ \${}
7
+ }`,{label:"if",detail:"/ else block",type:"keyword"}),X('import ${name} "${module}"\n${}',{label:"import",detail:"declaration",type:"keyword"})],S=new b,T=new Set(["SourceFile","Block","FunctionDecl","MethodDecl","FunctionLiteral","ForStatement","SwitchStatement","TypeSwitchStatement","IfStatement"]);function o(Q,e){return(n,a)=>{O:for(let t=n.node.firstChild,c=0,i=null;;){for(;!t;){if(!c)break O;c--,t=i.nextSibling,i=i.parent}e&&t.name==e||t.name=="SpecList"?(c++,i=t,t=t.firstChild):(t.name=="DefName"&&a(t,Q),t=t.nextSibling)}return!0}}const cO={FunctionDecl:o("function"),VarDecl:o("var","VarSpec"),ConstDecl:o("constant","ConstSpec"),TypeDecl:o("type","TypeSpec"),ImportDecl:o("constant","ImportSpec"),Parameter:o("var"),__proto__:null};function m(Q,e){let n=S.get(e);if(n)return n;let a=[],t=!0;function c(i,P){let V=Q.sliceString(i.from,i.to);a.push({label:V,type:P})}return e.cursor(Z.IncludeAnonymous).iterate(i=>{if(t)t=!1;else if(i.name){let P=cO[i.name];if(P&&P(i,c)||T.has(i.name))return!1}else if(i.to-i.from>8192){for(let P of m(Q,i.node))a.push(P);return!1}}),S.set(e,a),a}const p=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,W=["String","LineComment","BlockComment","DefName","LabelName","FieldName",".","?."],rO=Q=>{let e=G(Q.state).resolveInner(Q.pos,-1);if(W.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&p.test(Q.state.sliceDoc(e.from,e.to));if(!n&&!Q.explicit)return null;let a=[];for(let t=e;t;t=t.parent)T.has(t.name)&&(a=a.concat(m(Q.state.doc,t)));return{options:a,from:n?e.from:Q.pos,validFor:p}},r=f.define({name:"go",parser:PO.configure({props:[u.add({IfStatement:l({except:/^\s*({|else\b)/}),LabeledStatement:y,"SwitchBlock SelectBlock":Q=>{let e=Q.textAfter,n=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return Q.baseIndent+(n||a?0:Q.unit)},Block:g({closing:"}"}),BlockComment:()=>null,Statement:l({except:/^{/})}),j.add({"Block SwitchBlock SelectBlock LiteralValue InterfaceType StructType SpecList":U,BlockComment(Q){return{from:Q.from+2,to:Q.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case\b|default\b|\})$/}});let lO=Q=>({label:Q,type:"keyword"});const $O="interface struct chan map package go return break continue goto fallthrough else defer range true false nil".split(" ").map(lO);function jO(){let Q=oO.concat($O);return new d(r,[r.data.of({autocomplete:k(W,h(Q))}),r.data.of({autocomplete:rO})])}export{jO as go,r as goLanguage,rO as localCompletionSource,oO as snippets};
@@ -1 +1 @@
1
- import{L as a}from"./index-CSOPrlmq.js";import{a as i}from"./ApiClient-Dbs1H78V.js";const h=a("projects",{state:()=>({projects:[],currentProject:null,loading:!1,error:null}),getters:{getProjectById:r=>t=>r.projects.find(e=>e.id===t)},actions:{async fetchProjects(){this.loading=!0,this.error=null;try{this.projects=await i.getProjects()}catch(r){this.error=r.message}finally{this.loading=!1}},async fetchProject(r){this.loading=!0,this.error=null;try{const t=await i.getProject(r);this.currentProject=t,this.projects.find(e=>e.id===r)||this.projects.push(t)}catch(t){this.error=t.message}finally{this.loading=!1}},async createProject(r){this.loading=!0,this.error=null;try{const t=await i.createProject(r);return this.projects.unshift(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateProject(r,t){var e;this.loading=!0,this.error=null;try{const s=await i.updateProject(r,t),o=this.projects.findIndex(c=>c.id===r);return o!==-1&&(this.projects[o]=s),((e=this.currentProject)==null?void 0:e.id)===r&&(this.currentProject=s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteProject(r){var t;this.loading=!0,this.error=null;try{await i.deleteProject(r),this.projects=this.projects.filter(e=>e.id!==r),((t=this.currentProject)==null?void 0:t.id)===r&&(this.currentProject=null)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}});export{h as u};
1
+ import{L as a}from"./index-D1Lg5reX.js";import{a as i}from"./ApiClient-CcqJ-GAv.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-CSOPrlmq.js";import{a as s}from"./ApiClient-Dbs1H78V.js";const d=a("providers",{state:()=>({providers:[],loading:!1,error:null,testingConnection:!1,testResult:null}),getters:{customProviders:e=>e.providers.filter(r=>!r.isBuiltIn),getById:e=>r=>e.providers.find(t=>t.id===r),allModels:e=>{const r=[];for(const t of e.providers)if(t.models)for(const i of t.models)r.push({...i,providerName:t.name,providerId:t.id});return r}},actions:{async fetchProviders(){this.loading=!0,this.error=null;try{this.providers=await s.getProviders()}catch(e){this.error=e.message}finally{this.loading=!1}},async fetchProvider(e){this.loading=!0,this.error=null;try{const r=await s.getProvider(e),t=this.providers.findIndex(i=>i.id===e);return t!==-1&&(this.providers[t]=r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async createProvider(e){this.loading=!0,this.error=null;try{const r=await s.createProvider(e);return this.providers.push(r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async updateProvider(e,r){this.loading=!0,this.error=null;try{const t=await s.updateProvider(e,r),i=this.providers.findIndex(o=>o.id===e);return i!==-1&&(this.providers[i]=t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async deleteProvider(e){this.loading=!0,this.error=null;try{await s.deleteProvider(e),this.providers=this.providers.filter(r=>r.id!==e)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async testConnection(e){this.testingConnection=!0,this.testResult=null,this.error=null;try{return this.testResult=await s.testProviderConnection(e),this.testResult}catch(r){throw this.error=r.message,r}finally{this.testingConnection=!1}},async testExistingProvider(e){this.testingConnection=!0,this.testResult=null,this.error=null;try{return this.testResult=await s.testExistingProvider(e),this.testResult}catch(r){throw this.error=r.message,r}finally{this.testingConnection=!1}},async fetchModels(e){this.loading=!0,this.error=null;try{return await s.getProviderModels(e)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async addModel(e,r){this.loading=!0,this.error=null;try{return await s.addProviderModel(e,r)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateModel(e,r,t){this.loading=!0,this.error=null;try{return await s.updateProviderModel(e,r,t)}catch(i){throw this.error=i.message,i}finally{this.loading=!1}},async removeModel(e,r){this.loading=!0,this.error=null;try{await s.removeProviderModel(e,r)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},clearTestResult(){this.testResult=null}}});export{d as u};
1
+ import{L as a}from"./index-D1Lg5reX.js";import{a as s}from"./ApiClient-CcqJ-GAv.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};
@@ -1 +1 @@
1
- import{U as _,L as y}from"./index-CSOPrlmq.js";import{a as c}from"./ApiClient-Dbs1H78V.js";import{u as p}from"./settings-CZ7Pc-Pt.js";function R(){return Math.random().toString(16).substring(2,6)}function d(e,s=_){return e?Math.round((e.inputTokens||0)*s.input+(e.outputTokens||0)*s.output+(e.cacheReadInputTokens||0)*s.cacheRead+(e.cacheCreationInputTokens||0)*s.cacheCreation):0}function w(e){return!e||e===0?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function x(e,s=30){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").substring(0,s)}function A(e){const s=["a","an","the","to","and","or","for","in","on","at","of","with","is","it","this","that","i","me","my","we","our","you","your","can","please","help"];return e.toLowerCase().replace(/[^a-z0-9\s]/g,"").split(/\s+/).filter(i=>i.length>1&&!s.includes(i)).slice(0,4).join("-")||"session"}function O(e,s){const t=R();let i;return s&&s.trim()?i=x(A(s.trim())):i="session",i||(i="session"),`claude-tools/${t}-${i}`}const L=y("sessionFilters",{state:()=>({statusFilter:null,starredFilter:null,scheduledFilter:null}),actions:{setStatusFilter(e){this.statusFilter=e,this.saveStatusFilter()},saveStatusFilter(){try{this.statusFilter?localStorage.setItem("sessionStatusFilter",this.statusFilter):localStorage.removeItem("sessionStatusFilter")}catch(e){console.warn("Failed to save status filter:",e)}},restoreStatusFilter(){try{const e=localStorage.getItem("sessionStatusFilter");(e==="running"||e==="idle")&&(this.statusFilter=e)}catch(e){console.warn("Failed to restore status filter:",e)}},setStarredFilter(e){this.starredFilter=e,this.saveStarredFilter()},saveStarredFilter(){try{this.starredFilter?sessionStorage.setItem("sessionStarredFilter",this.starredFilter):sessionStorage.removeItem("sessionStarredFilter")}catch(e){console.warn("Failed to save starred filter:",e)}},restoreStarredFilter(){try{const e=sessionStorage.getItem("sessionStarredFilter");e==="starred"||e==="unstarred"?this.starredFilter=e:this.starredFilter=null}catch(e){console.warn("Failed to restore starred filter:",e)}},setScheduledFilter(e){this.scheduledFilter=e,this.saveScheduledFilter()},saveScheduledFilter(){try{this.scheduledFilter?sessionStorage.setItem("sessionScheduledFilter",this.scheduledFilter):sessionStorage.removeItem("sessionScheduledFilter")}catch(e){console.warn("Failed to save scheduled filter:",e)}},restoreScheduledFilter(){try{const e=sessionStorage.getItem("sessionScheduledFilter");e==="scheduled"||e==="not-scheduled"?this.scheduledFilter=e:this.scheduledFilter=null}catch(e){console.warn("Failed to restore scheduled filter:",e)}}}});function g(e){return e==null?"-":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function I(e,s,t,i){return{input:g(e),output:g(s),total:g((e||0)+(s||0)),cacheRead:g(t),cacheCreation:g(i)}}function T(e){return e.runningUsage?!e.activeConversationId||e.runningUsage.conversationId===e.activeConversationId:!1}function l(e){return e.conversations.find(s=>s.id===e.activeConversationId)}function k(e,s){return{inputTokens:((e==null?void 0:e.inputTokens)||0)+(s.inputTokens||0),outputTokens:((e==null?void 0:e.outputTokens)||0)+(s.outputTokens||0),cacheReadInputTokens:((e==null?void 0:e.cacheReadInputTokens)||0)+(s.cacheReadInputTokens||0),cacheCreationInputTokens:((e==null?void 0:e.cacheCreationInputTokens)||0)+(s.cacheCreationInputTokens||0)}}function C(e){return{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens}}const U={conversationTokens:e=>{const s=e.conversations.find(t=>t.id===e.activeConversationId);return s?{inputTokens:s.inputTokens||0,outputTokens:s.outputTokens||0,cacheReadInputTokens:s.cacheReadInputTokens||0,cacheCreationInputTokens:s.cacheCreationInputTokens||0,webSearchRequests:s.webSearchRequests||0,contextWindow:s.contextWindow||2e5}:null},totalTokens:e=>{const s=e.conversations.find(t=>t.id===e.activeConversationId);return s?(s.inputTokens||0)+(s.outputTokens||0):e.currentSession?(e.currentSession.inputTokens||0)+(e.currentSession.outputTokens||0):0},formattedTokens:e=>{if(T(e)){const s=k(l(e),e.runningUsage);return I(s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens)}if(e.activeConversationId&&e.conversations.length>0){const s=l(e);if(s)return I(s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens)}return{input:"-",output:"-",total:"-",cacheRead:"-",cacheCreation:"-"}},contextPercentage:e=>{if(T(e)){const n=l(e),o=k(n,e.runningUsage),r=o.inputTokens+o.outputTokens,a=e.runningUsage.contextWindow||(n==null?void 0:n.contextWindow)||2e5;return Math.min(100,Math.round(r/a*100))}const t=l(e)||e.currentSession;if(!t)return 0;const i=(t.inputTokens||0)+(t.outputTokens||0);return Math.min(100,Math.round(i/(t.contextWindow||2e5)*100))},isUsageUpdating:e=>!(!e.runningUsage||e.activeConversationId&&e.runningUsage.conversationId!==e.activeConversationId),getConversationDisplayTokens:e=>s=>{const t=e.conversations.find(i=>i.id===s);if(!t)return{inputTokens:0,outputTokens:0,total:0};if(e.runningUsage&&e.runningUsage.conversationId===s){const i=(t.inputTokens||0)+(e.runningUsage.inputTokens||0),n=(t.outputTokens||0)+(e.runningUsage.outputTokens||0);return{inputTokens:i,outputTokens:n,total:i+n}}return{inputTokens:t.inputTokens||0,outputTokens:t.outputTokens||0,total:(t.inputTokens||0)+(t.outputTokens||0)}},billableTokens:e=>{const t=p().tokenCostWeights;if(T(e))return d(k(l(e),e.runningUsage),t);if(e.activeConversationId&&e.conversations.length>0){const i=l(e);if(i)return d(C(i),t)}return 0},formattedBillableTokens:e=>{const t=p().tokenCostWeights;if(T(e))return w(d(k(l(e),e.runningUsage),t));if(e.activeConversationId&&e.conversations.length>0){const i=l(e);if(i)return w(d(C(i),t))}return"-"},getConversationBillableTokens:e=>s=>{const i=p().tokenCostWeights,n=e.conversations.find(o=>o.id===s);return n?e.runningUsage&&e.runningUsage.conversationId===s?d({inputTokens:(n.inputTokens||0)+(e.runningUsage.inputTokens||0),outputTokens:(n.outputTokens||0)+(e.runningUsage.outputTokens||0),cacheReadInputTokens:(n.cacheReadInputTokens||0)+(e.runningUsage.cacheReadInputTokens||0),cacheCreationInputTokens:(n.cacheCreationInputTokens||0)+(e.runningUsage.cacheCreationInputTokens||0)},i):d({inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheReadInputTokens:n.cacheReadInputTokens,cacheCreationInputTokens:n.cacheCreationInputTokens},i):0},getFormattedConversationBillableTokens:e=>s=>{const i=p().tokenCostWeights,n=e.conversations.find(r=>r.id===s);if(!n)return"-";let o;return e.runningUsage&&e.runningUsage.conversationId===s?o={inputTokens:(n.inputTokens||0)+(e.runningUsage.inputTokens||0),outputTokens:(n.outputTokens||0)+(e.runningUsage.outputTokens||0),cacheReadInputTokens:(n.cacheReadInputTokens||0)+(e.runningUsage.cacheReadInputTokens||0),cacheCreationInputTokens:(n.cacheCreationInputTokens||0)+(e.runningUsage.cacheCreationInputTokens||0)}:o={inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheReadInputTokens:n.cacheReadInputTokens,cacheCreationInputTokens:n.cacheCreationInputTokens},w(d(o,i))},getSessionBillableTokens:e=>s=>{var f;const i=p().tokenCostWeights,n=h=>h?d({inputTokens:h.inputTokens||0,outputTokens:h.outputTokens||0,cacheReadInputTokens:h.cacheReadInputTokens||0,cacheCreationInputTokens:h.cacheCreationInputTokens||0},i):0,o=e.sessions.find(h=>h.id===s)||(((f=e.currentSession)==null?void 0:f.id)===s?e.currentSession:null);if(!o)return 0;let r=n(o);const a=[s],u=new Set;for(;a.length>0;){const h=a.pop();if(u.has(h))continue;u.add(h);const m=e.sessions.filter(S=>S.parentSessionId===h);for(const S of m)r+=n(S),a.push(S.id)}return r}};function v(e,s,t=!1){const i=e,n=i.findIndex(o=>o.id===s.id);n!==-1?i[n]={...i[n],...s}:t&&i.unshift(s)}async function P(e,s,t){try{const o=(await c.getProjectSessions(s)).filter(r=>r.parentSessionId===t).filter(r=>!e.find(a=>a.id===r.id));e.push(...o)}catch(i){console.error("Failed to fetch child sessions:",i)}}function F(e,s,t){const i=e.find(o=>o.id===t.id),n=i?{...i,...t}:t;return v(s,n,!0),e.filter(o=>o.id!==t.id)}async function b(e,s){let t=s;for(;t;){const i=e.find(n=>n.id===t);if(i){t=i.parentSessionId;continue}try{const n=await c.getSession(t);e.push(n),t=n.parentSessionId}catch(n){console.error("Failed to fetch parent session:",n);break}}}const W={async fetchActiveSessions(e=!0){e&&(this.loading=!0),this.error=null;try{this.activeSessions=await c.getActiveSessions()}catch(s){this.error=s.message}finally{e&&(this.loading=!1)}},async fetchScheduledSessions(e=null){this.loadingScheduled=!0,this.error=null;try{const s=await c.getScheduledSessions(e);this.scheduledSessions=s.sort((t,i)=>new Date(t.scheduledAt)-new Date(i.scheduledAt))}catch(s){this.error=s.message,console.error("Failed to fetch scheduled sessions:",s)}finally{this.loadingScheduled=!1}},async fetchSessions(e,{silent:s=!1}={}){s||(this.loading=!0),this.error=null;try{this.sessions=await c.getProjectSessions(e,!1,null)}catch(t){this.error=t.message}finally{s||(this.loading=!1)}},async fetchArchivedSessions(e,{reset:s=!0}={}){s&&(this.archivedSessions=[],this.archivedPagination.offset=0),this.archivedPagination.loading=!0,this.error=null;try{const i=await c.getProjectSessions(e,!0,this.starredFilter,{limit:25,offset:this.archivedPagination.offset});this.archivedSessions=s?i.sessions:[...this.archivedSessions,...i.sessions],this.archivedPagination={total:i.pagination.total,offset:this.archivedPagination.offset+i.sessions.length,hasMore:i.pagination.hasMore,loading:!1}}catch(i){this.error=i.message,this.archivedPagination.loading=!1}},async loadMoreArchivedSessions(e){this.archivedPagination.hasMore&&!this.archivedPagination.loading&&await this.fetchArchivedSessions(e,{reset:!1})},async fetchSession(e,s=!0){var t,i;s&&(this.loading=!0),this.error=null;try{const n=await c.getSession(e);if(this.viewedSessionId&&this.viewedSessionId!==e){const r=this.sessions.findIndex(a=>a.id===e);r!==-1&&(this.sessions[r]={...this.sessions[r],...n});return}this.currentSession=n;const o=this.sessions.findIndex(r=>r.id===e);o!==-1?this.sessions[o]=n:this.sessions.push(n),(t=this.currentSession)!=null&&t.parentSessionId&&await b(this.sessions,this.currentSession.parentSessionId),(i=this.currentSession)!=null&&i.projectId&&await P(this.sessions,this.currentSession.projectId,e)}catch(n){this.error=n.message}finally{s&&(this.loading=!1)}},async createSession(e,s){this.loading=!0,this.error=null;try{const t=await c.createSession(e,s);return this.sessions.unshift(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async sendMessage(e,s,t=[],i=null){this.error=null;try{await c.sendMessage(e,s,t,i),this._updateSessionInAllLists(e,{status:"running"})}catch(n){throw this.error=n.message,n}},async stopSession(e){this.error=null;try{await c.stopSession(e),this._updateSessionInAllLists(e,{status:"stopped"})}catch(s){throw this.error=s.message,s}},async restartSession(e){this.error=null;try{await c.restartSession(e),this._updateSessionInAllLists(e,{status:"stopped",error:null})}catch(s){throw this.error=s.message,s}},async startSession(e,s=void 0,t=void 0){this.error=null;try{const i=await c.startSession(e,s,t);return this._updateSessionInAllLists(e,{status:"starting"}),i}catch(i){throw this.error=i.message,i}},async deleteSession(e){var s;this.error=null;try{await c.deleteSession(e),this.sessions=this.sessions.filter(t=>t.id!==e),this.archivedSessions=this.archivedSessions.filter(t=>t.id!==e),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession=null)}catch(t){throw this.error=t.message,t}},async archiveSession(e,{cleanup:s=!1}={}){var t;this.error=null;try{const i=await c.archiveSession(e,{cleanup:s});return this.sessions=this.sessions.filter(n=>n.id!==e),this.archivedSessions.unshift(i),this.activeSessions=this.activeSessions.filter(n=>n.id!==e),((t=this.currentSession)==null?void 0:t.id)===e&&(this.currentSession={...this.currentSession,archived:!0}),i}catch(i){throw this.error=i.message,i}},async unarchiveSession(e){var s;this.error=null;try{const t=await c.unarchiveSession(e);return this.archivedSessions=this.archivedSessions.filter(i=>i.id!==e),this.sessions.unshift(t),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession={...this.currentSession,archived:!1}),t}catch(t){throw this.error=t.message,t}},async duplicateSession(e,s={}){this.error=null;try{return await c.duplicateSession(e,s)}catch(t){throw this.error=t.message,t}},async toggleSessionStar(e){this.error=null;try{const s=await c.toggleSessionStar(e);return this._updateSessionInAllLists(e,{starred:s.starred}),s}catch(s){throw this.error=s.message,s}},updateSessionStatus(e,s){const t=this.sessions.find(o=>o.id===e)||this.currentSession,i=(t==null?void 0:t.status)==="running",n={status:s};i&&(s==="waiting"||s==="completed")&&(n.hasResponses=!0),this._updateSessionInAllLists(e,n)},async updateSessionThinking(e,s){return this.updateSessionFields(e,{thinkingEnabled:s})},async updateSessionMode(e,s){return this.updateSessionFields(e,{mode:s})},async updateSessionModel(e,s,t=void 0){var i;this.error=null;try{const n={model:s};t!==void 0&&(n.providerId=t);const o=this.sessions.find(a=>a.id===e)||(((i=this.currentSession)==null?void 0:i.id)===e?this.currentSession:null);o&&o.status==="waiting"&&(n.pendingModel=s);const r=await c.updateSession(e,n);return this._updateSessionInAllLists(e,n),r}catch(n){throw this.error=n.message,n}},async updateNextTemplate(e,s){return this.updateSessionFields(e,{nextTemplateId:s})},async updateAutoSendPendingPrompt(e,s){return this.updateSessionFields(e,{autoSendPendingPrompt:s})},async updateSessionFields(e,s){this.error=null;try{const t=await c.updateSession(e,s);return this._updateSessionInAllLists(e,s),t}catch(t){throw this.error=t.message,t}},updateSession(e){var s;e!=null&&e.id&&(e.archived===!0?(this.sessions=F(this.sessions,this.archivedSessions,e),this.activeSessions=this.activeSessions.filter(t=>t.id!==e.id)):e.archived===!1?this.archivedSessions=F(this.archivedSessions,this.sessions,e):(v(this.sessions,e),v(this.archivedSessions,e)),((s=this.currentSession)==null?void 0:s.id)===e.id&&(this.currentSession={...this.currentSession,...e}),v(this.activeSessions,e),e.status==="scheduled"?(v(this.scheduledSessions,e,!0),this.scheduledSessions.sort((t,i)=>new Date(t.scheduledAt)-new Date(i.scheduledAt))):this.scheduledSessions=this.scheduledSessions.filter(t=>t.id!==e.id))},addSessionToList(e){e!=null&&e.id&&(this.sessions.some(s=>s.id===e.id)||this.sessions.unshift(e),["running","waiting","starting"].includes(e.status)&&(this.activeSessions.some(s=>s.id===e.id)||this.activeSessions.unshift(e)))},removeSessionFromList(e){var s;e&&(this.sessions=this.sessions.filter(t=>t.id!==e),this.archivedSessions=this.archivedSessions.filter(t=>t.id!==e),this.activeSessions=this.activeSessions.filter(t=>t.id!==e),((s=this.currentSession)==null?void 0:s.id)===e&&(this.currentSession=null))}},M={async fetchConversations(e){var s;if(!(this.viewedSessionId&&this.viewedSessionId!==e)){this.error=null;try{const t=await c.getConversations(e);if(this.viewedSessionId&&this.viewedSessionId!==e)return;this.conversations=t;const i=this.conversations.find(n=>n.isActive);this.activeConversationId=(i==null?void 0:i.id)||((s=this.conversations[0])==null?void 0:s.id)||null}catch(t){this.viewedSessionId&&this.viewedSessionId===e&&(this.error=t.message,this.conversations=[],this.activeConversationId=null)}}},async createConversation(e,s=null){this.error=null;try{const t=await c.createConversation(e,s);return this.conversations.push(t),this.conversations=this.conversations.map(i=>({...i,isActive:i.id===t.id})),this.activeConversationId=t.id,this.messages=[],this.runningUsage=null,t}catch(t){throw this.error=t.message,t}},async switchConversation(e,s){if(this.activeConversationId!==s){this.error=null;try{this.runningUsage=null,this.clearPartialThinking(),this.messages=[],this.workLogs={},await c.updateConversation(e,s,{isActive:!0}),this.conversations=this.conversations.map(t=>({...t,isActive:t.id===s})),this.activeConversationId=s,this.messages=await c.getConversationMessages(e,s),this.clearPartialThinking(e),await this.fetchWorkLogs(e)}catch(t){throw this.error=t.message,t}}},async renameConversation(e,s,t){this.error=null;try{const i=await c.updateConversation(e,s,{name:t}),n=this.conversations.findIndex(o=>o.id===s);return n!==-1&&(this.conversations[n]={...this.conversations[n],...i}),i}catch(i){throw this.error=i.message,i}},async deleteConversation(e,s){this.error=null;try{await c.deleteConversation(e,s),this.conversations=this.conversations.filter(t=>t.id!==s),this.activeConversationId===s&&this.conversations.length>0?(await this.fetchConversations(e),this.activeConversationId&&(this.messages=await c.getConversationMessages(e,this.activeConversationId))):this.activeConversationId===s&&(this.activeConversationId=null,this.messages=[])}catch(t){throw this.error=t.message,t}},async branchConversation(e,s,t={}){const{messageId:i=null,prompt:n=null}=t||{};this.error=null;try{const o=await c.branchConversation(e,s,{messageId:i,prompt:n});return this.conversations.some(r=>r.id===o.id)||this.conversations.push(o),this.conversations=this.conversations.map(r=>({...r,isActive:r.id===o.id})),this.activeConversationId=o.id,this.messages=[],this.workLogs={},this.clearPartialThinking(e),Promise.all([c.getConversationMessages(e,o.id).then(r=>{this.activeConversationId===o.id&&(this.messages=r)}).catch(r=>console.error("Failed to fetch messages for branch:",r)),this.fetchWorkLogs(e).catch(r=>console.error("Failed to fetch work logs for branch:",r))]),o}catch(o){throw this.error=o.message,o}},updateConversation(e){if(!(e!=null&&e.id)||this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id)return;const s=this.conversations.findIndex(t=>t.id===e.id);s!==-1&&this.conversations.splice(s,1,{...this.conversations[s],...e}),e.isActive&&(this.conversations=this.conversations.map(t=>({...t,isActive:t.id===e.id})),this.activeConversationId=e.id)},addConversation(e){e!=null&&e.id&&(this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id||(this.conversations.some(s=>s.id===e.id)||this.conversations.push(e),e.isActive&&(this.conversations=this.conversations.map(s=>({...s,isActive:s.id===e.id})),this.activeConversationId=e.id)))},removeConversation(e,s=null,t=null){var i;this.currentSession&&t&&t!==this.currentSession.id||(this.conversations=this.conversations.filter(n=>n.id!==e),s?(this.conversations.some(n=>n.id===s.id)||this.conversations.push(s),this.conversations=this.conversations.map(n=>({...n,isActive:n.id===s.id})),this.activeConversationId=s.id):this.activeConversationId===e&&(this.activeConversationId=((i=this.conversations[0])==null?void 0:i.id)||null))},clearConversations(){this.conversations=[],this.activeConversationId=null}},B={_isStaleSession(e){return this.viewedSessionId&&this.viewedSessionId!==e},_isActiveSession(e){return this.viewedSessionId&&this.viewedSessionId===e},async fetchMessages(e,s=!0,t=null){if(!this._isStaleSession(e)){s&&(this.loading=!0),this.error=null;try{const i=t||this.activeConversationId,n=i?await c.getConversationMessages(e,i):await c.getSessionMessages(e);if(this._isStaleSession(e))return;const o=new Set(n.map(a=>a.id)),r=this.messages.filter(a=>a.sessionId===e&&!o.has(a.id));r.length>0?this.messages=[...n,...r]:this.messages=n}catch(i){this._isActiveSession(e)&&(this.error=i.message)}finally{s&&(this.loading=!1)}}},addMessage(e){this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id||this.messages.some(s=>s.id===e.id)||this.messages.push(e)},async fetchWorkLogs(e){if(!this._isStaleSession(e)){this.error=null;try{const s=await c.getSessionWorkLogs(e);if(this._isStaleSession(e))return;const t=new Set;for(const r of Object.keys(s))for(const a of s[r]||[])t.add(a.id);const n=(this.workLogs._unassociated||[]).filter(r=>!t.has(r.id)),o=s._unassociated||[];this.workLogs={...s,_unassociated:[...o,...n]}}catch(s){this._isActiveSession(e)&&(this.error=s.message)}}},addWorkLog(e){if(this.currentSession&&e.sessionId&&e.sessionId!==this.currentSession.id)return;const s=e.messageId||"_unassociated",t=this.workLogs[s]||[];t.some(i=>i.id===e.id)||(this.workLogs={...this.workLogs,[s]:[...t,e]})},setWorkLogs(e){this.workLogs=e},clearWorkLogs(){this.workLogs={},this.clearAllPartialThinking()},associateWorkLogs(e){const s=this.workLogs._unassociated||[];if(s.length>0){const t=this.workLogs[e]||[],i=new Set(t.map(o=>o.id)),n=s.filter(o=>!i.has(o.id));this.workLogs={...this.workLogs,[e]:[...t,...n],_unassociated:[]}}},setPartialThinking(e,s=null){var i;const t=s||((i=this.currentSession)==null?void 0:i.id);t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:e})},clearPartialThinking(e=null){var t;const s=e||((t=this.currentSession)==null?void 0:t.id);s&&(this.partialThinkingBySession={...this.partialThinkingBySession,[s]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},setPartialText(e){this._pendingPartialText=e,this._partialThrottleTimer||(this.partialText=e,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},updateRunningUsage(e,s=null){this.runningUsage={...e,conversationId:s}},finalizeUsage(e,s=null){if(s){const t=this.conversations.findIndex(i=>i.id===s);t!==-1&&this.conversations.splice(t,1,{...this.conversations[t],inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens,webSearchRequests:e.webSearchRequests,contextWindow:e.contextWindow,model:e.model})}this.currentSession&&(this.currentSession={...this.currentSession,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadInputTokens:e.cacheReadInputTokens,cacheCreationInputTokens:e.cacheCreationInputTokens,webSearchRequests:e.webSearchRequests,contextWindow:e.contextWindow}),this.runningUsage=null},updateConversationUsage(e,s){const t=this.conversations.findIndex(i=>i.id===e);t!==-1&&this.conversations.splice(t,1,{...this.conversations[t],inputTokens:s.inputTokens,outputTokens:s.outputTokens,cacheReadInputTokens:s.cacheReadInputTokens,cacheCreationInputTokens:s.cacheCreationInputTokens,webSearchRequests:s.webSearchRequests,contextWindow:s.contextWindow,model:s.model})},clearRunningUsage(){this.runningUsage=null,this.clearPartialThinking()}},E={isDraftSession:e=>s=>!s||s.status!=="waiting"?!1:s.hasResponses!==void 0?!s.hasResponses:!e.messages.some(t=>t.role==="assistant"),isScheduledDraft:e=>s=>!s||s.status!=="scheduled"?!1:s.hasResponses!==void 0?!s.hasResponses:!e.messages.some(t=>t.role==="assistant"),getWorkLogsForMessage:e=>s=>e.workLogs[s]||[],getUnassociatedWorkLogs:e=>e.workLogs._unassociated||[],partialThinking:e=>{var s;return(s=e.currentSession)!=null&&s.id&&e.partialThinkingBySession[e.currentSession.id]||null},activeConversation:e=>e.conversations.find(s=>s.id===e.activeConversationId)||null,getConversationById:e=>s=>e.conversations.find(t=>t.id===s),rootConversations:e=>e.conversations.filter(s=>!s.parentConversationId),conversationTree:e=>{const s=(t=null)=>e.conversations.filter(i=>i.parentConversationId===t).map(i=>({...i,children:s(i.id)}));return s(null)},getConversationChildren:e=>s=>e.conversations.filter(t=>t.parentConversationId===s),getConversationParent:e=>s=>{const t=e.conversations.find(i=>i.id===s);return t!=null&&t.parentConversationId?e.conversations.find(i=>i.id===t.parentConversationId):null}},G=y("sessions",{state:()=>({sessions:[],archivedSessions:[],activeSessions:[],scheduledSessions:[],currentSession:null,viewedSessionId:null,messages:[],conversations:[],activeConversationId:null,workLogs:{},partialThinkingBySession:{},partialText:"",_partialThrottleTimer:null,_pendingPartialText:null,statusFilter:null,starredFilter:null,scheduledFilter:null,runningUsage:null,loading:!1,loadingScheduled:!1,error:null,commandRunVersion:0,archivedPagination:{total:0,offset:0,hasMore:!1,loading:!1}}),getters:{_findSessionById:e=>s=>e.sessions.find(t=>t.id===s)||e.activeSessions.find(t=>t.id===s),_findChildren:e=>s=>{const t=e.sessions.filter(r=>r.parentSessionId===s),i=e.activeSessions.filter(r=>r.parentSessionId===s),n=new Set(t.map(r=>r.id)),o=[...t];for(const r of i)n.has(r.id)||(o.push(r),n.add(r.id));return o},getSessionById:e=>s=>e.sessions.find(t=>t.id===s),getChildSessions(){return e=>this._findChildren(e)},hasChildren(){return e=>this._findChildren(e).length>0},getChildCount(){return e=>this._findChildren(e).length},getAllDescendants(){return e=>{const s=[],t=[e],i=new Set;for(;t.length>0;){const n=t.pop();if(i.has(n))continue;i.add(n);const o=this._findChildren(n);for(const r of o)s.push(r),t.push(r.id)}return s}},getWorkflowEffectiveStatus(){return e=>{const s=this._findSessionById(e);if(!s)return"idle";const t=[s],i=[e],n=new Set;for(;i.length>0;){const r=i.pop();if(n.has(r))continue;n.add(r);const a=this._findChildren(r);for(const u of a)t.push(u),i.push(u.id)}const o=["running","starting"];return t.some(r=>o.includes(r.status))?"running":"idle"}},getSessionPath(){return e=>{const s=[],t=n=>{var o;return((o=this.currentSession)==null?void 0:o.id)===n?this.currentSession:this._findSessionById(n)};let i=t(e);for(;i&&(s.unshift(i),!!i.parentSessionId);)i=t(i.parentSessionId);return s}},getRootSession(){return e=>{let s=this._findSessionById(e);for(;s!=null&&s.parentSessionId;)s=this._findSessionById(s.parentSessionId);return s||null}},getWorkflowAggregatedStatus(){return e=>{const s=this._findSessionById(e);if(!s)return{effectiveStatus:"idle",runningCount:0,scheduledCount:0,waitingCount:0,completedCount:0,totalCount:0,hasScheduledDescendant:!1,rootIsScheduled:!1};const t=[s],i=[e],n=new Set;for(;i.length>0;){const h=i.pop();if(n.has(h))continue;n.add(h);const m=this._findChildren(h);for(const S of m)t.push(S),i.push(S.id)}const o=["running","starting"];let r=0,a=0,u=0,f=0;for(const h of t)o.includes(h.status)?r++:h.status==="scheduled"?a++:h.status==="waiting"?u++:(h.status==="completed"||h.status==="stopped")&&f++;return{effectiveStatus:r>0?"running":"idle",runningCount:r,scheduledCount:a,waitingCount:u,completedCount:f,totalCount:t.length-1,hasScheduledDescendant:t.slice(1).some(h=>h.status==="scheduled"),rootIsScheduled:s.status==="scheduled"}}},getWorkflowSessions(){return e=>{const s=this._findSessionById(e);if(!s)return[];const t=[s],i=[e],n=new Set;for(;i.length>0;){const o=i.pop();if(n.has(o))continue;n.add(o);const r=this._findChildren(o);for(const a of r)t.push(a),i.push(a.id)}return t}},groupedSessions:e=>{const s=[],t=new Set;return e.sessions.forEach(i=>{!i.parentSessionId&&!t.has(i.id)&&(s.push({parent:i,children:e.sessions.filter(n=>n.parentSessionId===i.id)}),t.add(i.id))}),e.sessions.forEach(i=>{!i.parentSessionId&&!s.find(n=>n.parent.id===i.id)&&s.push({parent:i,children:[]})}),s},...E,...U},actions:{_updateSessionInAllLists(e,s){var i;const t=(n,o)=>{const r=n;o!==-1&&(r[o]={...r[o],...s})};t(this.sessions,this.sessions.findIndex(n=>n.id===e)),t(this.archivedSessions,this.archivedSessions.findIndex(n=>n.id===e)),t(this.activeSessions,this.activeSessions.findIndex(n=>n.id===e)),((i=this.currentSession)==null?void 0:i.id)===e&&(this.currentSession={...this.currentSession,...s})},...W,setStatusFilter(e){this.statusFilter=e,this._syncFilterToSubStore("statusFilter"),this._filtersStore().saveStatusFilter()},saveStatusFilter(){this._syncFilterToSubStore("statusFilter"),this._filtersStore().saveStatusFilter()},restoreStatusFilter(){this._filtersStore().restoreStatusFilter(),this.statusFilter=this._filtersStore().statusFilter},setStarredFilter(e){this.starredFilter=e,this._syncFilterToSubStore("starredFilter"),this._filtersStore().saveStarredFilter()},saveStarredFilter(){this._syncFilterToSubStore("starredFilter"),this._filtersStore().saveStarredFilter()},restoreStarredFilter(){this._filtersStore().restoreStarredFilter(),this.starredFilter=this._filtersStore().starredFilter},setScheduledFilter(e){this.scheduledFilter=e,this._syncFilterToSubStore("scheduledFilter"),this._filtersStore().saveScheduledFilter()},saveScheduledFilter(){this._syncFilterToSubStore("scheduledFilter"),this._filtersStore().saveScheduledFilter()},restoreScheduledFilter(){this._filtersStore().restoreScheduledFilter(),this.scheduledFilter=this._filtersStore().scheduledFilter},_filtersStore(){return L()},_syncFilterToSubStore(e){this._filtersStore()[e]=this[e]},updateSessionCommandRun(e,s,t){const i=r=>{if(!r)return null;const a=[...r.latestCommandRuns||[]],u=a.findIndex(f=>f.buttonId===s);return u>=0?a[u]=t:a.push(t),a},n=this.sessions.find(r=>r.id===e)||this.archivedSessions.find(r=>r.id===e)||this.activeSessions.find(r=>r.id===e)||this.currentSession,o=i(n);o&&this._updateSessionInAllLists(e,{latestCommandRuns:o}),this.commandRunVersion++},removeSessionCommandRun(e,s){const t=this.sessions.find(n=>n.id===e)||this.archivedSessions.find(n=>n.id===e)||this.activeSessions.find(n=>n.id===e)||this.currentSession;if(!t)return;const i=(t.latestCommandRuns||[]).filter(n=>n.buttonId!==s);this._updateSessionInAllLists(e,{latestCommandRuns:i}),this.commandRunVersion++},updateSessionCommandRuns(e,s){this._updateSessionInAllLists(e,{latestCommandRuns:s}),this.commandRunVersion++},...B,...M}});export{E as a,M as c,w as f,O as g,B as p,U as t,G as u};
1
+ import{U as _,L as y}from"./index-D1Lg5reX.js";import{a as c}from"./ApiClient-CcqJ-GAv.js";import{u as p}from"./settings-BN_W4nwV.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-CSOPrlmq.js";import{a as s}from"./ApiClient-Dbs1H78V.js";const l=i("settings",{state:()=>({tokenCostWeights:{...r},summarySettings:{disableSessionSummaries:!1,sessionTitlePrompt:"",defaultSessionTitlePrompt:""},generalSettings:{disableAnalytics:!1},loading:!1,error:null}),getters:{weights:t=>t.tokenCostWeights},actions:{async fetchTokenCostWeights(){this.loading=!0,this.error=null;try{const t=await s.getTokenCostWeights();this.tokenCostWeights=t}catch(t){this.error=t.message,this.tokenCostWeights={...r}}finally{this.loading=!1}},async updateTokenCostWeights(t){this.loading=!0,this.error=null;try{const e=await s.updateTokenCostWeights(t);return this.tokenCostWeights=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetTokenCostWeights(){this.loading=!0,this.error=null;try{const t=await s.resetTokenCostWeights();return this.tokenCostWeights=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchSummarySettings(){this.loading=!0,this.error=null;try{const t=await s.getSummarySettings();this.summarySettings=t}catch(t){this.error=t.message,this.summarySettings={disableSessionSummaries:!1,sessionTitlePrompt:"",defaultSessionTitlePrompt:""}}finally{this.loading=!1}},async updateSummarySettings(t){this.loading=!0,this.error=null;try{const e=await s.updateSummarySettings(t);return this.summarySettings=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetSummarySettings(){this.loading=!0,this.error=null;try{const t=await s.resetSummarySettings();return this.summarySettings=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchGeneralSettings(){this.loading=!0,this.error=null;try{const t=await s.getGeneralSettings();this.generalSettings=t}catch(t){this.error=t.message,this.generalSettings={disableAnalytics:!1}}finally{this.loading=!1}},async updateGeneralSettings(t){this.loading=!0,this.error=null;try{const e=await s.updateGeneralSettings(t);return this.generalSettings=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async resetGeneralSettings(){this.loading=!0,this.error=null;try{const t=await s.resetGeneralSettings();return this.generalSettings=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}}}});export{l as u};
1
+ import{L as i,U as r}from"./index-D1Lg5reX.js";import{a as s}from"./ApiClient-CcqJ-GAv.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};
@@ -0,0 +1 @@
1
+ function c(t){const n=t.createdAt;if(!n)return null;const r=t.lastActivityAt||t.updatedAt;return r?r-n:Date.now()-n}function f(t,n){const r=t.createdAt;if(!r)return null;const o=t.lastActivityAt||t.updatedAt;if(!o)return null;const e=o-r;return n(t.id)>0||e>=5e3?e:null}function l(t){if(!t||t<0||t===0)return null;const n=Math.floor(t/1e3),r=Math.floor(n/60),o=Math.floor(r/60),e=Math.floor(o/24);return e>0?`${e}d ${o%24}h`:o>0?`${o}h ${r%60}m`:r>0?`${r}m`:`${n}s`}function i(t){if(!t)return"";const r=Date.now()-t,o=Math.floor(r/1e3),e=Math.floor(o/60),a=Math.floor(e/60),u=Math.floor(a/24);return o<60?"just now":e<60?`${e}m ago`:a<24?`${a}h ago`:u<7?`${u}d ago`:new Date(t).toLocaleDateString()}function s(t){return{merged:"Merged",open:"Open",closed:"Closed",draft:"Draft"}[t]||t}function d(t){if(!t)return"PR";const n=t.match(/\/pull\/(\d+)/);return n?`PR #${n[1]}`:"PR"}export{s as a,l as b,c,f as d,d as e,i as f};
@@ -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-CSOPrlmq.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-D1Lg5reX.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 J}from"./sessions-VDrd87yA.js";import{u as K}from"./commandButtons-B4OYZP0J.js";import{z as g,W as c,_ as Q,o as X,A as Z,m as ee,a,c as l,b as S,F as k,r as A,E as T,u as p,t as O,d as te,w as se,e as re,x as b,f as ne,l as oe,y as C,G as ie}from"./index-CSOPrlmq.js";import{a as x}from"./ApiClient-Dbs1H78V.js";import{S as ae}from"./SessionCard-Be1-bK0C.js";import"./settings-CZ7Pc-Pt.js";import"./SessionLogStream-Da_GniUZ.js";function le(){const{on:F,off:s}=g(),d=_=>m=>{const i=u=>{u.session&&m(u.session,u.projectId)};return F(_,i),()=>s(_,i)},E=d(c.SESSION_CREATED),I=d(c.SESSION_UPDATED);return{onSessionCreated:E,onSessionUpdated:I,onSessionDeleted:_=>{const m=i=>{i.sessionId&&_(i.sessionId,i.projectId)};return F(c.SESSION_DELETED,m),()=>s(c.SESSION_DELETED,m)},onSessionSummaryUpdated:_=>{const m=i=>{i.sessionId&&i.summary&&_(i.sessionId,i.summary,i.projectId)};return F(c.SESSION_SUMMARY_UPDATED,m),()=>s(c.SESSION_SUMMARY_UPDATED,m)}}}const ce={class:"container"},de={class:"filters-container"},ue={class:"status-filters"},fe=["onClick"],Se=["title"],pe={key:0,class:"star-icon"},me={key:1,class:"star-icon star-crossed"},he={key:2,class:"star-icon"},_e={key:0,class:"skeleton-list"},ye={key:1,class:"error-message"},ve={key:2,class:"empty-state"},Fe={key:3,class:"empty-state"},Ee={key:4,class:"session-list"},Ie={__name:"ActiveSessionsView",setup(F){const s=J(),d=K(),E=["waiting","stopped","error"],I=["running","starting"],v=oe(new Set),D=e=>{s.statusFilter===e?s.setStatusFilter(null):s.setStatusFilter(e)},_=()=>{s.starredFilter===null?s.setStarredFilter("starred"):s.starredFilter==="starred"?s.setStarredFilter("unstarred"):s.setStarredFilter(null)},m=b(()=>s.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":s.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred."),i=b(()=>{let e=s.activeSessions;return s.statusFilter&&(e=e.filter(t=>{const r=t.status;return!!(s.statusFilter==="idle"&&E.includes(r)||s.statusFilter==="running"&&I.includes(r))})),s.starredFilter==="starred"?e=e.filter(t=>t.starred):s.starredFilter==="unstarred"&&(e=e.filter(t=>!t.starred)),e}),u=C({}),f=C({}),h=C({});let w=null;const y=[],{onSessionCreated:j,onSessionUpdated:P,onSessionDeleted:B,onSessionSummaryUpdated:L}=le();async function R(){const e=new Set(s.activeSessions.map(t=>t.projectId).filter(t=>t&&!v.value.has(t)));for(const t of e)try{await d.fetchButtons(t),await d.fetchLatestRunsForProject(t),v.value.add(t)}catch(r){console.error(`Failed to fetch buttons for project ${t}:`,r)}}function N(e,t,r){d.runs[e]||(d.runs[e]={runId:e,buttonId:t,sessionId:r,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1})}function V(e){["running","waiting","starting"].includes(e.status)&&(s.activeSessions.some(r=>r.id===e.id)||(s.activeSessions.unshift(e),e.projectId&&!v.value.has(e.projectId)&&(d.fetchButtons(e.projectId),v.value.add(e.projectId))))}function H(e){const t=["running","waiting","starting"].includes(e.status),r=s.activeSessions.findIndex(n=>n.id===e.id);t?r>=0?s.activeSessions[r]=e:s.activeSessions.unshift(e):r>=0&&(s.activeSessions.splice(r,1),delete u[e.id],delete f[e.id],delete h[e.id])}function G(e){const t=s.activeSessions.findIndex(r=>r.id===e);t>=0&&s.activeSessions.splice(t,1),delete u[e],delete f[e],delete h[e]}function W(e,t){u[e]=t,f[e]=!1,h[e]=!1}function Y(e,t,r){const n=o=>{N(o.runId,o.buttonId,o.sessionId),d.appendOutput(o.runId,o.output)};e(c.COMMAND_RUN_OUTPUT,n),r.push(()=>t(c.COMMAND_RUN_OUTPUT,n));const U=o=>{N(o.runId,o.buttonId,o.sessionId),d.completeRun(o.runId,o.exitCode,o.output)};e(c.COMMAND_RUN_COMPLETE,U),r.push(()=>t(c.COMMAND_RUN_COMPLETE,U));const M=o=>{N(o.runId,o.buttonId,o.sessionId),d.errorRun(o.runId,o.error)};e(c.COMMAND_RUN_ERROR,M),r.push(()=>t(c.COMMAND_RUN_ERROR,M))}X(async()=>{s.restoreStatusFilter(),s.restoreStarredFilter(),await s.fetchActiveSessions(),await R(),y.push(j(V)),y.push(P(H)),y.push(B(G)),y.push(L(W));const{on:e,off:t}=g();Y(e,t,y),w=setInterval(()=>{s.fetchActiveSessions(!1)},3e4)}),Z(()=>{y.forEach(e=>e()),w&&clearInterval(w)}),ee(()=>s.activeSessions,()=>{$(),R()},{immediate:!0});async function $(){const t=s.activeSessions.filter(r=>!u[r.id]&&!f[r.id]).map(r=>r.id);if(t.length!==0){for(const r of t)f[r]=!0,h[r]=!1;try{const r=await x.getSessionSummariesBatch(t);for(const n of t)r[n]&&(u[n]=r[n]),f[n]=!1}catch(r){console.warn("Failed to fetch summaries batch:",r.message);for(const n of t)h[n]=!0,f[n]=!1}}}async function z(e){var t;f[e]=!0,h[e]=!1;try{const r=await x.getSessionSummary(e);r&&(u[e]=r)}catch(r){((t=r.response)==null?void 0:t.status)!==404&&(console.warn(`Failed to fetch summary for session ${e}:`,r.message),h[e]=!0)}finally{f[e]=!1}}async function q(e){h[e]=!1,await z(e)}return(e,t)=>{const r=ne("router-link");return a(),l("div",ce,[t[3]||(t[3]=S("div",{class:"page-header"},[S("div",null,[S("p",{class:"page-description"}," All active sessions across your projects ")])],-1)),S("div",de,[S("div",ue,[(a(),l(k,null,A(["running","idle"],n=>S("button",{key:n,class:T(["filter-btn",{active:p(s).statusFilter===n}]),onClick:U=>D(n)},O(n),11,fe)),64)),S("button",{class:T(["filter-btn star-btn",{"star-filter-active":p(s).starredFilter==="starred","star-filter-unstarred":p(s).starredFilter==="unstarred","star-filter-all":p(s).starredFilter===null}]),title:m.value,onClick:_},[p(s).starredFilter==="starred"?(a(),l("span",pe,"⭐")):p(s).starredFilter==="unstarred"?(a(),l("span",me,"⭐")):(a(),l("span",he,"☆"))],10,Se)])]),p(s).loading?(a(),l("div",_e,[(a(),l(k,null,A(3,n=>S("div",{key:n,class:"skeleton card",style:{height:"120px"}})),64))])):p(s).error?(a(),l("div",ye,O(p(s).error),1)):p(s).activeSessions.length===0?(a(),l("div",ve,[t[1]||(t[1]=S("p",null,"No active sessions. All sessions are completed or there are no sessions yet.",-1)),te(r,{to:"/",class:"btn btn-primary"},{default:se(()=>[...t[0]||(t[0]=[re(" View Projects ",-1)])]),_:1})])):i.value.length===0?(a(),l("div",Fe,[...t[2]||(t[2]=[S("p",null,"No sessions match the current filter.",-1)])])):(a(),l("div",Ee,[(a(!0),l(k,null,A(i.value,n=>(a(),ie(ae,{key:n.id,session:n,"show-project":!0,"show-summary":!0,summary:u[n.id],"summary-loading":f[n.id],"summary-error":h[n.id],onRetrySummary:q},null,8,["session","summary","summary-loading","summary-error"]))),128))]))])}}},Re=Q(Ie,[["__scopeId","data-v-35d4c59f"]]);export{Re as default};
@@ -1 +0,0 @@
1
- .page-header[data-v-35d4c59f]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem}.page-header h1[data-v-35d4c59f]{margin:0}.page-description[data-v-35d4c59f]{margin:.25rem 0 0;font-size:.875rem;color:var(--color-text-soft)}.skeleton-list[data-v-35d4c59f]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-35d4c59f]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-35d4c59f]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-35d4c59f]{margin-bottom:1rem}.session-list[data-v-35d4c59f]{display:flex;flex-direction:column;gap:1rem}.status-filters[data-v-35d4c59f]{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.filter-label[data-v-35d4c59f]{font-size:.875rem;color:var(--color-text-soft)}.filter-btn[data-v-35d4c59f]{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-35d4c59f]:hover{border-color:var(--color-primary);color:var(--color-text)}.star-icon[data-v-35d4c59f]{position:relative;display:inline-block}.filter-btn.star-filter-all[data-v-35d4c59f]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.star-filter-all[data-v-35d4c59f]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.star-filter-active[data-v-35d4c59f],.filter-btn.active[data-v-35d4c59f]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.star-filter-unstarred[data-v-35d4c59f]{background:transparent;border-color:#f97316;color:#f97316}.star-crossed[data-v-35d4c59f]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}
@@ -1 +0,0 @@
1
- import{_ as L,l as I,m as O,o as N,a,c as d,b as t,j as T,n as q,F as j,r as D,t as C,k as f,e as B,x,$ as K,i as P,G as z,d as U,p as R,v as A,h as F,V as G,y as W,A as H,E as Y,H as J}from"./index-CSOPrlmq.js";import{u as Q,b as X}from"./EffortLevelSelector-VfBEelvO.js";import{M as Z}from"./ModelSelector-DSxaZWBL.js";import{M as ee}from"./SlashCommandWizard-B_8ifpxN.js";import{u as te}from"./SessionLogStream-Da_GniUZ.js";const se={class:"template-selector"},le={class:"selector-wrapper"},ne=["disabled"],oe={key:0,label:"Project Templates"},ae=["value"],de={key:1,label:"Global Templates"},ie=["value"],ue=["disabled"],re={key:0,class:"template-preview"},ce={class:"template-prompt-preview"},me={key:0,class:"chain-indicator"},pe={key:1,class:"selector-help"},ve={key:2,class:"saving-indicator"},be={__name:"TemplateSelector",props:{sessionId:{type:String,required:!1,default:null},projectId:{type:String,required:!0},currentTemplateId:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:templateId"],setup(o,{emit:M}){const n=o,k=M,p=Q(),v=I(n.currentTemplateId),u=I(!1),h=x(()=>p.loading),s=x(()=>p.projectTemplates),g=x(()=>p.globalTemplates),c=x(()=>v.value?p.getTemplateById(v.value):null),$=x(()=>{var S;if(!((S=c.value)!=null&&S.nextTemplateId))return null;const e=[];let i=c.value.nextTemplateId;const m=new Set;for(;i&&!m.has(i);){m.add(i);const l=p.getTemplateById(i);if(l)e.push(l.name),i=l.nextTemplateId;else{e.push("Unknown");break}if(e.length>=3){e.push("...");break}}return e.length>0?`Chains to: ${e.join(" → ")}`:null}),w=K(n,"currentTemplateId");O(w,e=>{v.value=e},{flush:"sync"}),N(()=>{n.projectId&&p.projectTemplates.length===0&&p.globalTemplates.length===0&&p.fetchProjectTemplates(n.projectId)});function _(e,i=100){return e?e.length<=i?e:`${e.substring(0,i)}...`:""}function E(e){var S;const i=((S=e==null?void 0:e.target)==null?void 0:S.value)||v.value,m=i===""?null:i;u.value=!0,k("update:templateId",m),setTimeout(()=>{u.value=!1},1e3)}function r(){v.value=null,E()}return(e,i)=>(a(),d("div",se,[i[3]||(i[3]=t("label",{class:"selector-label"},"Next Template",-1)),t("div",le,[T(t("select",{"onUpdate:modelValue":i[0]||(i[0]=m=>v.value=m),class:"form-input",disabled:o.disabled||h.value,onChange:E},[i[1]||(i[1]=t("option",{value:null}," Select a template to run... ",-1)),s.value.length?(a(),d("optgroup",oe,[(a(!0),d(j,null,D(s.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ae))),128))])):f("",!0),g.value.length?(a(),d("optgroup",de,[(a(!0),d(j,null,D(g.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ie))),128))])):f("",!0)],40,ne),[[q,v.value]]),v.value?(a(),d("button",{key:0,class:"btn-clear",title:"Clear selection",disabled:o.disabled||u.value,onClick:r}," ✕ ",8,ue)):f("",!0)]),c.value?(a(),d("div",re,[t("p",ce,C(_(c.value.prompt)),1),$.value?(a(),d("span",me,C($.value),1)):f("",!0)])):(a(),d("p",pe," When Claude finishes responding, a new session will automatically start using this template. ")),u.value?(a(),d("div",ve,[...i[2]||(i[2]=[t("span",{class:"loading-spinner"},null,-1),B(" Saving... ",-1)])])):f("",!0)]))}},he=L(be,[["__scopeId","data-v-d206f8db"]]),fe={class:"modal-content"},ge={class:"modal-header"},ke={class:"modal-title"},ye={class:"modal-body"},Te={key:0,class:"error-message"},Ce={class:"form-section"},Se={class:"form-group"},$e={class:"form-group"},xe={class:"form-group"},Ie={class:"toggle-switch"},Me={key:1,class:"form-group"},Ee=["min"],Re={key:2,class:"form-section"},we={class:"form-group"},_e={class:"toggle-switch"},Oe={key:3,class:"reschedule-settings"},Ae={class:"form-group"},Le={class:"checkbox-option"},Ve={class:"checkbox-option"},Ue={class:"form-group"},je={class:"form-group"},De={class:"form-group"},Be={class:"form-group"},Ne={key:0,class:"form-group"},Fe={class:"checkbox-option"},qe={class:"form-help"},Pe={class:"modal-footer"},ze=["disabled"],Ge={__name:"SchedulingEditModal",props:{isOpen:{type:Boolean,default:!1},session:{type:Object,default:null}},emits:["close","saved"],setup(o,{emit:M}){const n=o,k=M,p=X(),v=P(),u=I(!1),h=I(null),s=W({scheduledAtLocal:"",model:null,mode:"standard",thinkingEnabled:!1,nextTemplateId:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null,resetRescheduleCount:!1}),g=x(()=>{const r=new Date;return r.setMinutes(r.getMinutes()+1),r.toISOString().slice(0,16)}),c=x(()=>{var r;return((r=n.session)==null?void 0:r.status)==="scheduled"?"Edit Scheduling Settings":"Auto-Reschedule Settings"});function $(){k("close")}function w(r){s.nextTemplateId=r}function _(r){if(!r)return"";const e=new Date(r),i=e.getFullYear(),m=String(e.getMonth()+1).padStart(2,"0"),S=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),b=String(e.getMinutes()).padStart(2,"0");return`${i}-${m}-${S}T${l}:${b}`}async function E(){var r;u.value=!0,h.value=null;try{const e={model:s.model,mode:s.mode,thinkingEnabled:s.thinkingEnabled,nextTemplateId:s.nextTemplateId,autoRescheduleEnabled:s.autoRescheduleEnabled,rescheduleDelayMinutes:s.rescheduleDelayMinutes,rescheduleOnTokenLimit:s.rescheduleOnTokenLimit,rescheduleOnServiceError:s.rescheduleOnServiceError,maxRescheduleCount:s.maxRescheduleCount||null,maxTotalTokens:s.maxTotalTokens||null,rescheduleAtTokenCount:s.rescheduleAtTokenCount||null};((r=n.session)==null?void 0:r.status)==="scheduled"&&s.scheduledAtLocal&&(e.scheduledAt=new Date(s.scheduledAtLocal).getTime()),s.resetRescheduleCount&&(e.rescheduleCount=0),await p.updateSessionFields(n.session.id,e),v.success("Settings saved"),k("saved"),$()}catch(e){h.value=e.message||"Failed to save settings",v.error(`Failed to save settings: ${h.value}`)}finally{u.value=!1}}return O(()=>n.isOpen,r=>{r&&n.session&&(h.value=null,s.scheduledAtLocal=_(n.session.scheduledAt),s.model=n.session.model||null,s.mode=n.session.mode||"standard",s.thinkingEnabled=n.session.thinkingEnabled||!1,s.nextTemplateId=n.session.nextTemplateId||null,s.autoRescheduleEnabled=n.session.autoRescheduleEnabled||!1,s.rescheduleDelayMinutes=n.session.rescheduleDelayMinutes||15,s.rescheduleOnTokenLimit=n.session.rescheduleOnTokenLimit??!0,s.rescheduleOnServiceError=n.session.rescheduleOnServiceError??!0,s.maxRescheduleCount=n.session.maxRescheduleCount,s.maxTotalTokens=n.session.maxTotalTokens,s.rescheduleAtTokenCount=n.session.rescheduleAtTokenCount,s.resetRescheduleCount=!1)}),(r,e)=>{var i,m,S;return a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F($,["self"])},[t("div",fe,[t("div",ge,[t("h2",ke,C(c.value),1),t("button",{class:"close-btn","aria-label":"Close",onClick:$}," × ")]),t("div",ye,[h.value?(a(),d("div",Te,C(h.value),1)):f("",!0),t("div",Ce,[e[16]||(e[16]=t("h3",{class:"section-title"}," Session Settings ",-1)),t("div",Se,[e[12]||(e[12]=t("label",{class:"form-label"},"Model",-1)),U(Z,{modelValue:s.model,"onUpdate:modelValue":e[0]||(e[0]=l=>s.model=l)},null,8,["modelValue"])]),t("div",$e,[e[13]||(e[13]=t("label",{class:"form-label"},"Mode",-1)),U(ee,{modelValue:s.mode,"onUpdate:modelValue":e[1]||(e[1]=l=>s.mode=l)},null,8,["modelValue"])]),t("div",xe,[t("label",Ie,[T(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s.thinkingEnabled=l),type:"checkbox"},null,512),[[R,s.thinkingEnabled]]),e[14]||(e[14]=t("span",{class:"toggle-slider"},null,-1)),e[15]||(e[15]=t("span",{class:"toggle-label"},"Extended Thinking",-1))])])]),((i=o.session)==null?void 0:i.status)==="scheduled"?(a(),d("div",Me,[e[17]||(e[17]=t("label",{for:"scheduled-at",class:"form-label"},"Scheduled Time",-1)),T(t("input",{id:"scheduled-at","onUpdate:modelValue":e[3]||(e[3]=l=>s.scheduledAtLocal=l),type:"datetime-local",min:g.value,class:"form-input"},null,8,Ee),[[A,s.scheduledAtLocal]])])):f("",!0),((m=o.session)==null?void 0:m.status)==="scheduled"?(a(),d("div",Re,[e[18]||(e[18]=t("h3",{class:"section-title"}," Template Chain ",-1)),U(he,{"session-id":o.session.id,"project-id":o.session.projectId,"current-template-id":s.nextTemplateId,disabled:u.value,"onUpdate:templateId":w},null,8,["session-id","project-id","current-template-id","disabled"])])):f("",!0),t("div",we,[t("label",_e,[T(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s.autoRescheduleEnabled=l),type:"checkbox"},null,512),[[R,s.autoRescheduleEnabled]]),e[19]||(e[19]=t("span",{class:"toggle-slider"},null,-1)),e[20]||(e[20]=t("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),s.autoRescheduleEnabled?(a(),d("div",Oe,[t("div",Ae,[e[23]||(e[23]=t("p",{class:"settings-label"}," Reschedule Triggers ",-1)),t("label",Le,[T(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>s.rescheduleOnTokenLimit=l),type:"checkbox"},null,512),[[R,s.rescheduleOnTokenLimit]]),e[21]||(e[21]=t("span",null,"Token limit errors",-1))]),t("label",Ve,[T(t("input",{"onUpdate:modelValue":e[6]||(e[6]=l=>s.rescheduleOnServiceError=l),type:"checkbox"},null,512),[[R,s.rescheduleOnServiceError]]),e[22]||(e[22]=t("span",null,"Service unavailability",-1))])]),t("div",Ue,[e[25]||(e[25]=t("label",{class:"form-label"},"Reschedule Delay",-1)),T(t("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>s.rescheduleDelayMinutes=l),class:"form-input"},[...e[24]||(e[24]=[t("option",{value:5}," 5 minutes ",-1),t("option",{value:15}," 15 minutes ",-1),t("option",{value:30}," 30 minutes ",-1),t("option",{value:60}," 1 hour ",-1),t("option",{value:120}," 2 hours ",-1)])],512),[[q,s.rescheduleDelayMinutes,void 0,{number:!0}]])]),t("div",je,[e[26]||(e[26]=t("label",{class:"form-label"},"Max Reschedule Count",-1)),T(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>s.maxRescheduleCount=l),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[A,s.maxRescheduleCount,void 0,{number:!0}]])]),t("div",De,[e[27]||(e[27]=t("label",{class:"form-label"},"Max Total Tokens",-1)),T(t("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>s.maxTotalTokens=l),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[A,s.maxTotalTokens,void 0,{number:!0}]])]),t("div",Be,[e[28]||(e[28]=t("label",{class:"form-label"},"Reschedule At Token Count",-1)),T(t("input",{"onUpdate:modelValue":e[10]||(e[10]=l=>s.rescheduleAtTokenCount=l),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[A,s.rescheduleAtTokenCount,void 0,{number:!0}]])]),((S=o.session)==null?void 0:S.rescheduleCount)>0?(a(),d("div",Ne,[t("label",Fe,[T(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>s.resetRescheduleCount=l),type:"checkbox"},null,512),[[R,s.resetRescheduleCount]]),e[29]||(e[29]=t("span",null,"Reset reschedule count to 0",-1))]),t("p",qe," Current count: "+C(o.session.rescheduleCount),1)])):f("",!0)])):f("",!0)]),t("div",Pe,[t("button",{class:"btn btn-secondary",onClick:$}," Cancel "),t("button",{class:"btn btn-primary",disabled:u.value,onClick:E},C(u.value?"Updating...":"Update"),9,ze)])])])):f("",!0)])}}},Mt=L(Ge,[["__scopeId","data-v-e1ffc2da"]]),He={class:"modal-content",role:"dialog","aria-labelledby":"modal-title"},Ke={class:"modal-body"},We={class:"moving-info"},Ye={class:"moving-session-name"},Je={key:0,class:"empty-state"},Qe={key:1,class:"lanes-list"},Xe={class:"lane-label"},Ze=["name","value","disabled","aria-disabled","aria-label"],et={class:"lane-info"},tt={class:"lane-name"},st={key:0,class:"lane-current-badge"},lt={key:1,class:"lane-automation-icon",title:"Automation enabled"},nt={key:2,class:"automation-option"},ot={class:"checkbox-label"},at={class:"modal-footer"},dt=["disabled"],it=["disabled","aria-label"],ut=["disabled"],rt={__name:"MoveCardModal",props:{isOpen:Boolean,projectId:{type:String,required:!0},cardId:{type:String,required:!0},currentLaneId:{type:String,required:!0},sessionName:{type:String,default:""}},emits:["update:isOpen","close","moved"],setup(o,{emit:M}){const n=o,k=M,p=te(),v=P(),u=I(null),h=I(!0),s=I(!1),g=I(!1),c=x(()=>{var l;return((l=p.board)==null?void 0:l.lanes)||[]}),$=x(()=>n.sessionName?n.sessionName:n.cardId||"Unnamed session"),w=x(()=>u.value&&c.value.find(l=>l.id===u.value)||null),_=x(()=>w.value?r(w.value):!1),E=x(()=>u.value&&u.value!==n.currentLaneId);function r(l){return l?!!(l.onEnterTemplateId||l.onEnterPrompt):!1}function e(){k("update:isOpen",!1),k("close"),u.value=null,h.value=!0}async function i(){if(!(!E.value||!n.cardId)){s.value=!0;try{await p.moveCard(n.projectId,n.cardId,u.value,{runOnEnterTemplate:h.value}),v.success("Card moved successfully"),k("moved"),e()}catch(l){console.error("Failed to move card:",l),v.error(l.message||"Failed to move card")}finally{s.value=!1}}}async function m(){if(confirm("Remove this session from the board?")){g.value=!0;try{await p.removeCard(n.projectId,n.cardId),v.success("Session removed from board"),k("close")}catch(l){console.error("Failed to remove card:",l),v.error(l.message||"Failed to remove session")}finally{g.value=!1}}}O(u,(l,b)=>{if(l!==b){const y=c.value.find(V=>V.id===l);h.value=r(y)}}),O(()=>n.isOpen,l=>{l&&(u.value=null,h.value=!0)});function S(l){l.key==="Escape"&&n.isOpen&&e()}return N(()=>{document.addEventListener("keydown",S)}),H(()=>{document.removeEventListener("keydown",S)}),(l,b)=>o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(e,["self"])},[t("div",He,[t("div",{class:"modal-header"},[b[2]||(b[2]=t("h2",{id:"modal-title",class:"modal-title"}," Move to Lane ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",onClick:e}," × ")]),t("div",Ke,[t("div",We,[b[3]||(b[3]=t("span",{class:"moving-label"},"Moving:",-1)),t("span",Ye,C($.value),1)]),c.value.length===0?(a(),d("div",Je,[...b[4]||(b[4]=[t("p",null,"No lanes available",-1)])])):(a(),d("div",Qe,[(a(!0),d(j,null,D(c.value,y=>(a(),d("div",{key:y.id,class:Y(["lane-row",{"lane-row-current":y.id===o.currentLaneId,"lane-row-disabled":y.id===o.currentLaneId}])},[t("label",Xe,[T(t("input",{"onUpdate:modelValue":b[0]||(b[0]=V=>u.value=V),type:"radio",name:`lane-${o.cardId}`,value:y.id,disabled:y.id===o.currentLaneId,"aria-disabled":y.id===o.currentLaneId,"aria-label":`Move to ${y.name}`},null,8,Ze),[[J,u.value]]),t("span",et,[t("span",tt,C(y.name),1),y.id===o.currentLaneId?(a(),d("span",st,"(current)")):f("",!0),r(y)?(a(),d("span",lt,[...b[5]||(b[5]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):f("",!0)])])],2))),128))])),_.value?(a(),d("div",nt,[t("label",ot,[T(t("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>h.value=y),type:"checkbox","aria-label":"Run automation on entry"},null,512),[[R,h.value]]),b[6]||(b[6]=t("span",null,"Run automation on entry",-1))])])):f("",!0)]),t("div",at,[t("button",{class:"btn btn-secondary",disabled:g.value,onClick:e}," Cancel ",8,dt),t("button",{class:"btn btn-danger",disabled:g.value,"aria-label":`Remove ${$.value} from board`,onClick:m},C(g.value?"Removing...":"Remove from Board"),9,it),t("button",{class:"btn btn-primary",disabled:!E.value||s.value||g.value,"aria-label":"Move card to selected lane",onClick:i},C(s.value?"Moving...":"Move"),9,ut)])])])):f("",!0)}},Et=L(rt,[["__scopeId","data-v-bddc7788"]]),ct={class:"modal-content",role:"dialog","aria-labelledby":"archive-modal-title"},mt={class:"modal-header"},pt=["disabled"],vt={class:"modal-body"},bt={class:"confirm-message"},ht={key:0,class:"cleanup-option"},ft={class:"checkbox-label"},gt={class:"modal-footer"},kt=["disabled"],yt=["disabled"],Tt={__name:"ArchiveConfirmModal",props:{isOpen:{type:Boolean,default:!1},sessionName:{type:String,default:"this session"},hasCleanupScript:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(o,{emit:M}){const n=o,k=M,p=I(!0);O(()=>n.isOpen,g=>{g&&(p.value=!0)});function v(){k("confirm",p.value)}function u(){n.loading||k("cancel")}function h(){n.loading||k("cancel")}function s(g){g.key==="Escape"&&n.isOpen&&!n.loading&&k("cancel")}return N(()=>{document.addEventListener("keydown",s)}),H(()=>{document.removeEventListener("keydown",s)}),(g,c)=>(a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(h,["self"])},[t("div",ct,[t("div",mt,[c[1]||(c[1]=t("h2",{id:"archive-modal-title",class:"modal-title"}," Archive Session ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",disabled:o.loading,onClick:u}," × ",8,pt)]),t("div",vt,[t("p",bt,[c[2]||(c[2]=B(" Are you sure you want to archive ",-1)),t("strong",null,C(o.sessionName),1),c[3]||(c[3]=B("? ",-1))]),o.hasCleanupScript?(a(),d("div",ht,[t("label",ft,[T(t("input",{"onUpdate:modelValue":c[0]||(c[0]=$=>p.value=$),type:"checkbox","aria-label":"Run project cleanup script"},null,512),[[R,p.value]]),c[4]||(c[4]=t("span",null,"Run project cleanup script",-1))])])):f("",!0)]),t("div",gt,[t("button",{class:"btn btn-secondary",disabled:o.loading,onClick:u}," Cancel ",8,kt),t("button",{class:"btn btn-primary",disabled:o.loading,onClick:v},C(o.loading?"Archiving...":"Archive"),9,yt)])])])):f("",!0)]))}},Rt=L(Tt,[["__scopeId","data-v-58eef4e8"]]);export{Rt as A,Et as M,Mt as S,he as T};
@@ -1 +0,0 @@
1
- import{_ as N,i as U,o as V,a as r,c as u,b as t,e as _,d as j,w as P,u as I,t as i,j as k,v as D,k as v,p as J,h,x as M,s as $,l as m,f as A,g as q}from"./index-CSOPrlmq.js";import{u as F}from"./commandButtons-B4OYZP0J.js";import{a as W}from"./ApiClient-Dbs1H78V.js";const p={PROJECT_ID:"projectId",PROJECT_ID_ALT:"id",BUTTON_ID:"buttonId",SESSION_ID:"id",SESSION_TAB:"tab"},z={class:"container command-button-detail"},G={key:0,class:"loading-state"},H={key:1,class:"form-container"},K={class:"form-header"},Q={class:"form-group"},X={key:0,class:"form-error"},Y={class:"form-group"},Z={key:0,class:"form-error"},ee={class:"form-group"},te={key:0,class:"form-error"},oe={class:"form-group form-group-checkbox"},se={for:"showOnList",class:"checkbox-label"},ae={class:"form-actions"},le=["disabled"],ne={key:0,class:"form-error-message"},re={class:"modal-body"},ue={class:"modal-footer"},de=["disabled"],ie={__name:"CommandButtonDetailView",setup(me){const d=$(),w=q(),O=F(),b=U(),B=m(!1),C=m(!1),g=m(!1),f=m(!1),c=m(null),a=m({}),o=m({label:"",command:"",sortOrder:0,showOnList:!1}),y=M(()=>!!d.params.buttonId),S=async s=>{B.value=!0;try{const e=d.params[p.PROJECT_ID];let l=O.getButtonById(s);l||(l=await W.getCommandButton(e,s)),l&&(o.value={label:l.label,command:l.command,sortOrder:l.sortOrder||0,showOnList:l.showOnList||!1})}catch(e){c.value=`Failed to load button: ${e.message}`}finally{B.value=!1}},T=()=>(a.value={},o.value.label.trim()||(a.value.label="Label is required"),o.value.command.trim()||(a.value.command="Command is required"),o.value.sortOrder<0&&(a.value.sortOrder="Sort order must be 0 or greater"),Object.keys(a.value).length===0),L=async()=>{if(c.value=null,!!T()){C.value=!0;try{const s=d.params[p.PROJECT_ID],e={label:o.value.label,command:o.value.command,sortOrder:o.value.sortOrder,showOnList:o.value.showOnList};y.value?(await O.updateButton(s,d.params[p.BUTTON_ID],e),b.success("Command button updated")):(await O.createButton(s,e),b.success("Command button created")),w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{C.value=!1}}},x=()=>{w.back()},E=()=>{f.value=!0},R=async()=>{g.value=!0;try{const s=d.params[p.PROJECT_ID],e=d.params[p.BUTTON_ID];await O.deleteButton(s,e),b.success("Command button deleted"),f.value=!1,w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{g.value=!1}};return V(async()=>{y.value&&await S(d.params.buttonId)}),(s,e)=>{const l=A("router-link");return r(),u("div",z,[B.value?(r(),u("div",G,[...e[7]||(e[7]=[t("span",{class:"loading-spinner"},null,-1),_(" Loading... ",-1)])])):(r(),u("div",H,[t("div",K,[j(l,{to:`/projects/${I(d).params[I(p).PROJECT_ID]}/sessions`,class:"btn btn-outline-secondary"},{default:P(()=>[...e[8]||(e[8]=[_(" ← Back ",-1)])]),_:1},8,["to"]),t("h2",null,i(y.value?"Edit Command Button":"New Command Button"),1)]),t("form",{class:"command-button-form",onSubmit:h(L,["prevent"])},[t("div",Q,[e[9]||(e[9]=t("label",{for:"label"},"Label",-1)),k(t("input",{id:"label","onUpdate:modelValue":e[0]||(e[0]=n=>o.value.label=n),type:"text",class:"form-input",placeholder:"e.g., Run Tests",required:""},null,512),[[D,o.value.label]]),a.value.label?(r(),u("span",X,i(a.value.label),1)):v("",!0)]),t("div",Y,[e[10]||(e[10]=t("label",{for:"command"},"Command",-1)),k(t("textarea",{id:"command","onUpdate:modelValue":e[1]||(e[1]=n=>o.value.command=n),class:"form-input",placeholder:"e.g., npm test",rows:"4",required:""},null,512),[[D,o.value.command]]),a.value.command?(r(),u("span",Z,i(a.value.command),1)):v("",!0)]),t("div",ee,[e[11]||(e[11]=t("label",{for:"sortOrder"},"Sort Order (optional)",-1)),k(t("input",{id:"sortOrder","onUpdate:modelValue":e[2]||(e[2]=n=>o.value.sortOrder=n),type:"number",class:"form-input",placeholder:"0",min:"0"},null,512),[[D,o.value.sortOrder,void 0,{number:!0}]]),a.value.sortOrder?(r(),u("span",te,i(a.value.sortOrder),1)):v("",!0),e[12]||(e[12]=t("span",{class:"form-help"},"Buttons are displayed in ascending order. Leave as 0 for default.",-1))]),t("div",oe,[t("label",se,[k(t("input",{id:"showOnList","onUpdate:modelValue":e[3]||(e[3]=n=>o.value.showOnList=n),type:"checkbox",class:"form-checkbox"},null,512),[[J,o.value.showOnList]]),e[13]||(e[13]=t("span",null,"Show status indicator on session lists",-1))]),e[14]||(e[14]=t("span",{class:"form-help"},"When enabled, the button status will be displayed on session cards",-1))]),t("div",ae,[t("button",{type:"button",class:"btn btn-outline-secondary",onClick:x}," Cancel "),y.value?(r(),u("button",{key:0,type:"button",class:"btn btn-outline-danger",onClick:E}," Delete ")):v("",!0),t("button",{type:"submit",class:"btn btn-primary",disabled:C.value},i(C.value?"Saving...":y.value?"Update":"Create"),9,le)]),c.value?(r(),u("div",ne,i(c.value),1)):v("",!0)],32)])),f.value?(r(),u("div",{key:2,class:"modal-overlay",onClick:e[6]||(e[6]=n=>f.value=!1)},[t("div",{class:"modal-dialog",onClick:e[5]||(e[5]=h(()=>{},["stop"]))},[e[18]||(e[18]=t("div",{class:"modal-header"},[t("h4",null,"Delete Command Button")],-1)),t("div",re,[t("p",null,[e[15]||(e[15]=_('Are you sure you want to delete "',-1)),t("strong",null,i(o.value.label),1),e[16]||(e[16]=_('"?',-1))]),e[17]||(e[17]=t("p",null,"This action cannot be undone.",-1))]),t("div",ue,[t("button",{class:"btn btn-outline-secondary",onClick:e[4]||(e[4]=n=>f.value=!1)}," Cancel "),t("button",{class:"btn btn-danger",disabled:g.value,onClick:R},i(g.value?"Deleting...":"Delete"),9,de)])])])):v("",!0)])}}},be=N(ie,[["__scopeId","data-v-b4855495"]]);export{be as default};
@@ -1 +0,0 @@
1
- import{L as f,a0 as g,_ as b,i as _,l as m,m as E,a as p,c as h,b as j,F as L,r as x,t as w,u as I,x as C,$ as O}from"./index-CSOPrlmq.js";import{a as r}from"./ApiClient-Dbs1H78V.js";import{u as V}from"./sessions-VDrd87yA.js";const D=["low","medium","high","max","auto"],$=[{id:"claude-haiku-4-5-20251001",name:"Haiku 4.5",description:"Fast & lightweight"},{id:"claude-sonnet-4-6",name:"Sonnet 4.6",description:"Balanced"},{id:"claude-opus-4-6",name:"Opus 4.6",description:"Most capable (default)"}],H="claude-opus-4-6",F=f("todos",{state:()=>({items:[],loading:!1,error:null,expanded:!1,currentConversationId:null}),getters:{hasTodos:t=>t.items.length>0,pendingCount:t=>t.items.filter(e=>e.status==="pending").length,inProgressCount:t=>t.items.filter(e=>e.status==="in_progress").length,completedCount:t=>t.items.filter(e=>e.status==="completed").length},actions:{async fetchTodos(t,e=null){this.loading=!0,this.error=null,this.currentConversationId=e;try{this.items=await r.getSessionTodos(t,e)}catch(s){this.error=s.message}finally{this.loading=!1}},updateTodos(t,e=null){(e===null||this.currentConversationId===null||e===this.currentConversationId)&&(this.items=t)},clearTodos(){this.items=[],this.loading=!1,this.error=null,this.currentConversationId=null,this.expanded=!1},toggleExpanded(){this.expanded=!this.expanded},setExpanded(t){this.expanded=t}}}),B=Symbol("overlay-sessions-store"),k=Symbol("overlay-todos-store");function P(){return g(B,V())}function q(){return g(k,F())}const z=f("templates",{state:()=>({projectTemplates:[],globalTemplates:[],loading:!1,error:null}),getters:{allTemplates:t=>[...t.projectTemplates,...t.globalTemplates],getTemplateById:t=>e=>t.projectTemplates.find(s=>s.id===e)||t.globalTemplates.find(s=>s.id===e)},actions:{async fetchProjectTemplates(t){this.loading=!0,this.error=null;try{const e=await r.getProjectTemplates(t);this.projectTemplates=e.project||[],this.globalTemplates=e.global||[]}catch(e){this.error=e.message}finally{this.loading=!1}},async createProjectTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.createProjectTemplate(t,e);return this.projectTemplates.unshift(s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async createGlobalTemplate(t){this.loading=!0,this.error=null;try{const e=await r.createGlobalTemplate(t);return this.globalTemplates.unshift(e),e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async updateTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.updateTemplate(t,e);let l=this.projectTemplates.findIndex(o=>o.id===t);return l!==-1?this.projectTemplates[l]=s:(l=this.globalTemplates.findIndex(o=>o.id===t),l!==-1&&(this.globalTemplates[l]=s)),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteTemplate(t){this.loading=!0,this.error=null;try{await r.deleteTemplate(t),this.projectTemplates=this.projectTemplates.filter(e=>e.id!==t),this.globalTemplates=this.globalTemplates.filter(e=>e.id!==t)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}}),R={class:"effort-selector"},U=["value","disabled"],A=["value"],M={__name:"EffortLevelSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:e}){const s=t,l=e,o=P(),T=_(),u=m(!1),y=["auto",...D.filter(a=>a!=="auto")].map(a=>({value:a,label:`${a.charAt(0).toUpperCase()+a.slice(1)} Effort`})),c=C(()=>{var a;return s.sessionId?((a=o.currentSession)==null?void 0:a.effortLevel)||"auto":s.modelValue||"auto"}),n=m(c.value),S=O(s,"modelValue");E([c,S],([a])=>{n.value=a||"auto"},{flush:"sync"});async function v(a){if(!u.value&&n.value!==a)if(n.value=a,s.sessionId){u.value=!0;try{await o.updateSessionFields(s.sessionId,{effortLevel:a==="auto"?null:a})}catch(d){n.value=c.value,T.error(d.message)}finally{u.value=!1}}else l("update:modelValue",a==="auto"?null:a)}return(a,d)=>(p(),h("div",R,[j("select",{id:"effort-select",value:n.value,disabled:t.disabled||u.value,class:"effort-select","aria-label":"Effort level",onChange:d[0]||(d[0]=i=>v(i.target.value))},[(p(!0),h(L,null,x(I(y),i=>(p(),h("option",{key:i.value,value:i.value},w(i.label),9,A))),128))],40,U)]))}},J=b(M,[["__scopeId","data-v-8bc1fe64"]]);export{$ as C,H as D,J as E,B as S,k as T,F as a,P as b,q as c,z as u};
@@ -1 +0,0 @@
1
- import{_ as t,a,c as n,e,b as o}from"./index-CSOPrlmq.js";const r={class:"form-help"},l={__name:"InterpolationHelp",setup(c){return(p,s)=>(a(),n("p",r,[...s[0]||(s[0]=[e(" Available variables: ",-1),o("code",null,"{{rootSession.id}}",-1),e(", ",-1),o("code",null,"{{rootSession.name}}",-1),e(", ",-1),o("code",null,"{{rootSession.summary}}",-1),e(", ",-1),o("code",null,"{{rootSession.status}}",-1)])]))}},i=t(l,[["__scopeId","data-v-26718cef"]]);export{i as I};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BqVgX_Jy.js","assets/index-CSOPrlmq.js","assets/index-gmCCsCQ1.css","assets/SessionDetailView-DUYb7qTA.js","assets/sessions-VDrd87yA.js","assets/ApiClient-Dbs1H78V.js","assets/settings-CZ7Pc-Pt.js","assets/projects-B2du-GX8.js","assets/EffortLevelSelector-VfBEelvO.js","assets/EffortLevelSelector-BQaQmU2d.css","assets/SessionLogStream-Da_GniUZ.js","assets/commandButtons-B4OYZP0J.js","assets/SessionLogStream-zPUTiGbe.css","assets/ArchiveConfirmModal-Bv3vGOMM.js","assets/ModelSelector-DSxaZWBL.js","assets/providers-B__J6FX0.js","assets/ModelSelector-DPPD-92R.css","assets/SlashCommandWizard-B_8ifpxN.js","assets/SlashCommandWizard-BB30cSvo.css","assets/ArchiveConfirmModal-CQZeuYBz.css","assets/QuickResponseSettings-uDDpwaza.js","assets/QuickResponseSettings-B8188A1D.css","assets/QuickResponsesPanel-D0qs0Fm_.js","assets/QuickResponsesPanel-DIBQFj0W.css","assets/ResizableTextarea-_kHi1Mg3.js","assets/ResizableTextarea-B5nAA0RV.css","assets/SessionDetailView-mnGRMaLY.css","assets/style-BTin-zR_.css"])))=>i.map(i=>d[i]);
2
- import{l as E,m as d,A as w,a as l,c as y,G as T,w as u,b as m,e as V,d as k,u as h,a3 as x,O as A,P as p}from"./index-CSOPrlmq.js";import{u as P}from"./SessionDetailView-DUYb7qTA.js";import"./sessions-VDrd87yA.js";import"./ApiClient-Dbs1H78V.js";import"./settings-CZ7Pc-Pt.js";import"./projects-B2du-GX8.js";import"./EffortLevelSelector-VfBEelvO.js";import"./SessionLogStream-Da_GniUZ.js";import"./commandButtons-B4OYZP0J.js";import"./ArchiveConfirmModal-Bv3vGOMM.js";import"./ModelSelector-DSxaZWBL.js";import"./providers-B__J6FX0.js";import"./SlashCommandWizard-B_8ifpxN.js";import"./QuickResponseSettings-uDDpwaza.js";import"./QuickResponsesPanel-D0qs0Fm_.js";import"./ResizableTextarea-_kHi1Mg3.js";const b={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 _=A(()=>p(()=>import("./index-BqVgX_Jy.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(async e=>(await p(()=>Promise.resolve({}),__vite__mapDeps([27])),e.MdEditor))),r=c,n=f,g=P(),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||"")}),w(()=>{s(),g.endEditing(r.filename)}),(e,a)=>(l(),y("div",b,[(l(),T(x,null,{default:u(()=>[k(h(_),{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"}),V(" Loading editor... ")],-1)])]),_:1}))]))}};export{J as default};
@@ -1 +0,0 @@
1
- .path-chooser[data-v-26aaee7f]{width:100%}.path-input-group[data-v-26aaee7f]{display:flex;gap:.5rem}.path-input-group .form-input[data-v-26aaee7f]{flex:1}.path-browser-overlay[data-v-26aaee7f]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.path-browser[data-v-26aaee7f]{background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column}.browser-header[data-v-26aaee7f]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:var(--border-radius) var(--border-radius) 0 0}.browser-path[data-v-26aaee7f]{font-family:var(--font-mono);font-size:.875rem;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:1rem}.browser-close[data-v-26aaee7f]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;line-height:1;padding:0;cursor:pointer;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius)}.browser-close[data-v-26aaee7f]:hover{background-color:var(--color-background);color:var(--color-text)}.browser-content[data-v-26aaee7f]{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}.browser-item[data-v-26aaee7f]{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;cursor:pointer;border-radius:var(--border-radius);color:var(--color-text);font-size:.875rem}.browser-item[data-v-26aaee7f]:hover{background-color:var(--color-background-mute)}.browser-item.parent[data-v-26aaee7f]{color:var(--color-primary);border-bottom:1px solid var(--color-border);margin-bottom:.5rem;border-radius:0}.browser-item.parent[data-v-26aaee7f]:hover{background-color:var(--color-background)}.browser-item-icon[data-v-26aaee7f]{flex-shrink:0}.browser-loading[data-v-26aaee7f]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-soft)}.browser-error[data-v-26aaee7f]{padding:1rem;color:var(--color-error);text-align:center}.browser-empty[data-v-26aaee7f]{padding:2rem;color:var(--color-text-soft);text-align:center}.browser-footer[data-v-26aaee7f]{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:0 0 var(--border-radius) var(--border-radius)}
@@ -1 +0,0 @@
1
- import{_ as W,i as K,o as Y,m as G,a as d,c as m,b as s,u as y,e as r,h as z,j as a,v as S,d as j,D as J,k as w,n as O,p as T,q as X,t as Z,w as _,s as ee,l,f as se,g as te}from"./index-CSOPrlmq.js";import{u as oe}from"./projects-B2du-GX8.js";import{u as le,a as ae,Q as ne}from"./QuickResponseSettings-uDDpwaza.js";import{P as re}from"./PathChooser-CXFxb8Oj.js";import{M as ie}from"./ModelSelector-DSxaZWBL.js";import"./ApiClient-Dbs1H78V.js";import"./providers-B__J6FX0.js";const ue={class:"container"},de={key:0,class:"loading-state"},me={class:"form-group"},pe={class:"form-group"},fe={class:"form-group"},ve={class:"form-group"},be={class:"form-label",for:"systemPrompt"},ge={class:"advanced-settings"},ce={class:"form-group"},ye={class:"form-group"},Se={class:"advanced-settings"},ke={class:"form-group"},Ce={class:"form-group"},we={class:"checkbox-label"},Ee={class:"form-group"},De={class:"form-group"},Ue={class:"checkbox-label"},Pe={class:"form-group"},Me={class:"form-group"},Ve={class:"form-group"},xe=["disabled"],Ie={key:0,class:"loading-spinner"},Re={class:"advanced-settings"},he={class:"advanced-settings"},je={class:"form-group"},Le={class:"checkbox-label"},Ne={key:0,class:"error-message"},Oe={class:"form-actions"},Te={class:"form-actions-right"},Be=["disabled"],Ge={key:0,class:"loading-spinner"},Fe={__name:"ProjectEditView",setup(He){const E=J,n=ee(),B=te(),p=oe(),D=le(),F=ae(),L=K(),U=l(""),P=l(""),M=l(""),i=l(""),V=l(""),x=l(""),I=l(!1),f=l(""),k=l(!1),v=l(""),C=l(!0),b=l(""),g=l(""),c=l(""),R=l(!1),h=l(!1),u=l(null),N=l(!1);Y(()=>{p.fetchProject(n.params.id),D.fetchDefaults(n.params.id),F.fetchForProject(n.params.id)}),G(()=>p.currentProject,t=>{t&&(U.value=t.name,P.value=t.workingDirectory,M.value=t.repoUrl||"",i.value=t.systemPrompt||E,V.value=t.onSessionCreated||"",x.value=t.onSessionDeleted||"",I.value=t.kanbanEnabled||!1)},{immediate:!0}),G(()=>D.getDefaultsForProject(n.params.id),t=>{t&&(f.value=t.mode||"",k.value=t.thinkingEnabled||!1,v.value=t.effortLevel??"",C.value=t.startImmediately!==!1,b.value=t.gitMode||"",g.value=t.gitBranch||"",c.value=t.model||"")},{immediate:!0});function H(){const t={};return f.value&&(t.mode=f.value),k.value&&(t.thinkingEnabled=!0),v.value&&(t.effortLevel=v.value),C.value||(t.startImmediately=!1),b.value&&(t.gitMode=b.value),g.value&&(t.gitBranch=g.value),c.value&&(t.model=c.value),t}async function A(){R.value=!0,u.value=null;try{await p.updateProject(n.params.id,{name:U.value,workingDirectory:P.value,repoUrl:M.value||null,systemPrompt:i.value===E?null:i.value,onSessionCreated:V.value||null,onSessionDeleted:x.value||null,kanbanEnabled:I.value});const t=H();Object.keys(t).length>0&&await D.updateDefaults(n.params.id,t),L.success("Project updated successfully"),B.push(`/projects/${n.params.id}/sessions`)}catch(t){u.value=t.message}finally{R.value=!1}}async function Q(){if(confirm("Reset all session defaults to system defaults?")){h.value=!0,u.value=null;try{await D.resetDefaults(n.params.id),f.value="",k.value=!1,v.value="",C.value=!0,b.value="",g.value="",c.value="",L.success("Session defaults reset to system defaults")}catch(t){u.value=t.message}finally{h.value=!1}}}async function $(){if(confirm("Are you sure you want to delete this project?"))try{await p.deleteProject(n.params.id),L.success("Project deleted successfully"),B.push("/")}catch(t){u.value=t.message}}return(t,e)=>{const q=se("router-link");return d(),m("div",ue,[e[55]||(e[55]=s("h1",null,"Edit Project",-1)),y(p).loading?(d(),m("div",de,[...e[17]||(e[17]=[s("span",{class:"loading-spinner"},null,-1),r(" Loading... ",-1)])])):y(p).currentProject?(d(),m("form",{key:1,class:"form card",onSubmit:z(A,["prevent"])},[s("div",me,[e[18]||(e[18]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),a(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),type:"text",class:"form-input",required:""},null,512),[[S,U.value]])]),s("div",pe,[e[19]||(e[19]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),j(re,{modelValue:P.value,"onUpdate:modelValue":e[1]||(e[1]=o=>P.value=o)},null,8,["modelValue"])]),s("div",fe,[e[20]||(e[20]=s("label",{class:"form-label",for:"repoUrl"},"Repository URL",-1)),a(s("input",{id:"repoUrl","onUpdate:modelValue":e[2]||(e[2]=o=>M.value=o),type:"url",class:"form-input",placeholder:"https://github.com/username/repo"},null,512),[[S,M.value]]),e[21]||(e[21]=s("p",{class:"form-help"}," Link to the project's repository (e.g., GitHub, GitLab). This can be automatically populated from session summaries. ",-1))]),s("div",ve,[s("label",be,[e[22]||(e[22]=r(" System Prompt ",-1)),i.value!==y(E)?(d(),m("button",{key:0,type:"button",class:"btn-link",onClick:e[3]||(e[3]=o=>i.value=y(E))}," Reset to Default ")):w("",!0)]),a(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[4]||(e[4]=o=>i.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[S,i.value]]),e[23]||(e[23]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("details",ge,[e[28]||(e[28]=s("summary",null,"Session Lifecycle Hooks",-1)),s("div",ce,[e[24]||(e[24]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),a(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[5]||(e[5]=o=>V.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[S,V.value]]),e[25]||(e[25]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",ye,[e[26]||(e[26]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),a(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[6]||(e[6]=o=>x.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[S,x.value]]),e[27]||(e[27]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),s("details",Se,[e[46]||(e[46]=s("summary",null,"Session Defaults",-1)),e[47]||(e[47]=s("p",{class:"form-help"}," Set default values for new sessions created in this project. These values can be overridden when creating individual sessions. ",-1)),s("div",ke,[e[30]||(e[30]=s("label",{class:"form-label",for:"defaultMode"},"Mode",-1)),a(s("select",{id:"defaultMode","onUpdate:modelValue":e[7]||(e[7]=o=>f.value=o),class:"form-input"},[...e[29]||(e[29]=[s("option",{value:""}," Use system default (standard) ",-1),s("option",{value:"plan"}," Plan ",-1),s("option",{value:"standard"}," Standard ",-1),s("option",{value:"yolo"}," YOLO ",-1)])],512),[[O,f.value]])]),s("div",Ce,[s("label",we,[a(s("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>k.value=o),type:"checkbox"},null,512),[[T,k.value]]),e[31]||(e[31]=r(" Enable thinking (extended thinking) by default ",-1))]),e[32]||(e[32]=s("p",{class:"form-help"}," Enable Claude's extended thinking capability for new sessions. ",-1))]),s("div",Ee,[e[34]||(e[34]=s("label",{class:"form-label",for:"defaultEffortLevel"},"Default Effort Level",-1)),a(s("select",{id:"defaultEffortLevel","onUpdate:modelValue":e[9]||(e[9]=o=>v.value=o),class:"form-input"},[...e[33]||(e[33]=[X('<option value="" data-v-315cba61> Auto (default) </option><option value="low" data-v-315cba61> Low </option><option value="medium" data-v-315cba61> Medium </option><option value="high" data-v-315cba61> High </option><option value="max" data-v-315cba61> Max </option>',5)])],512),[[O,v.value]]),e[35]||(e[35]=s("p",{class:"form-help"}," Set the default effort level for new sessions. Controls how much effort Claude puts into responses. ",-1))]),s("div",De,[s("label",Ue,[a(s("input",{"onUpdate:modelValue":e[10]||(e[10]=o=>C.value=o),type:"checkbox"},null,512),[[T,C.value]]),e[36]||(e[36]=r(" Start sessions immediately ",-1))]),e[37]||(e[37]=s("p",{class:"form-help"},' When enabled, sessions will start automatically. When disabled, sessions will be created in "waiting" state. ',-1))]),s("div",Pe,[e[39]||(e[39]=s("label",{class:"form-label",for:"defaultGitMode"},"Git Mode",-1)),a(s("select",{id:"defaultGitMode","onUpdate:modelValue":e[11]||(e[11]=o=>b.value=o),class:"form-input"},[...e[38]||(e[38]=[s("option",{value:""}," No git isolation ",-1),s("option",{value:"branch"}," Create branch for each session ",-1),s("option",{value:"worktree"}," Create worktree for each session ",-1)])],512),[[O,b.value]]),e[40]||(e[40]=s("p",{class:"form-help"}," Controls how git changes are isolated for each session. ",-1))]),s("div",Me,[e[41]||(e[41]=s("label",{class:"form-label",for:"defaultGitBranch"},"Default Git Branch",-1)),a(s("input",{id:"defaultGitBranch","onUpdate:modelValue":e[12]||(e[12]=o=>g.value=o),type:"text",class:"form-input",placeholder:"e.g., feature/ai-implementation"},null,512),[[S,g.value]]),e[42]||(e[42]=s("p",{class:"form-help"}," When using git branch mode, this is the branch name pattern for new sessions. ",-1))]),s("div",Ve,[e[43]||(e[43]=s("label",{class:"form-label",for:"defaultModel"},"Model",-1)),j(ie,{modelValue:c.value,"onUpdate:modelValue":e[13]||(e[13]=o=>c.value=o),"allow-empty":!0,"empty-label":"Use system default","select-class":"form-input"},null,8,["modelValue"]),e[44]||(e[44]=s("p",{class:"form-help"}," Choose the default Claude model for new sessions in this project. ",-1))]),s("button",{type:"button",class:"btn btn-secondary",disabled:h.value,onClick:Q},[h.value?(d(),m("span",Ie)):w("",!0),e[45]||(e[45]=r(" Reset to System Defaults ",-1))],8,xe)]),s("details",Re,[e[48]||(e[48]=s("summary",null,"Quick Responses",-1)),e[49]||(e[49]=s("p",{class:"form-help"}," Quick responses are shortcuts that can be inserted into the chat input. You can create project-specific or global responses. ",-1)),s("button",{type:"button",class:"btn btn-secondary",onClick:e[14]||(e[14]=o=>N.value=!0)}," Manage Quick Responses ")]),s("details",he,[e[52]||(e[52]=s("summary",null,"Kanban Board",-1)),s("div",je,[s("label",Le,[a(s("input",{"onUpdate:modelValue":e[15]||(e[15]=o=>I.value=o),type:"checkbox"},null,512),[[T,I.value]]),e[50]||(e[50]=r(" Enable Kanban board ",-1))]),e[51]||(e[51]=s("p",{class:"form-help"}," Enable a Kanban board to visually organize sessions into lanes. Sessions can be dragged between lanes, and lanes can trigger automated workflows. ",-1))])]),u.value?(d(),m("div",Ne,Z(u.value),1)):w("",!0),s("div",Oe,[s("button",{type:"button",class:"btn btn-danger",onClick:$}," Delete "),s("div",Te,[j(q,{to:`/projects/${y(n).params.id}/sessions`,class:"btn"},{default:_(()=>[...e[53]||(e[53]=[r(" Cancel ",-1)])]),_:1},8,["to"]),s("button",{type:"submit",class:"btn btn-primary",disabled:R.value},[R.value?(d(),m("span",Ge)):w("",!0),e[54]||(e[54]=r(" Save ",-1))],8,Be)])])],32)):w("",!0),j(ne,{"is-open":N.value,"project-id":y(n).params.id,onClose:e[16]||(e[16]=o=>N.value=!1)},null,8,["is-open","project-id"])])}}},ze=W(Fe,[["__scopeId","data-v-315cba61"]]);export{ze as default};
@@ -1 +0,0 @@
1
- h1[data-v-315cba61]{margin-bottom:2rem}.loading-state[data-v-315cba61]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.form[data-v-315cba61]{max-width:500px}.form-actions[data-v-315cba61]{display:flex;justify-content:space-between;align-items:center}.form-actions-right[data-v-315cba61]{display:flex;gap:.5rem}.error-message[data-v-315cba61]{color:var(--color-error);margin-bottom:1rem}.form-textarea[data-v-315cba61]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-315cba61]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.advanced-settings[data-v-315cba61]{margin-bottom:1rem}.advanced-settings summary[data-v-315cba61]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-315cba61]{margin-bottom:1rem}.form-textarea-small[data-v-315cba61]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.checkbox-label[data-v-315cba61]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:500}.checkbox-label input[type=checkbox][data-v-315cba61]{width:1rem;height:1rem;cursor:pointer}.form-input[type=select][data-v-315cba61],select.form-input[data-v-315cba61]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem}.btn-link[data-v-315cba61]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-315cba61]:hover{color:var(--color-primary-hover)}
@@ -1 +0,0 @@
1
- .page-header[data-v-6a29d6f6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.page-header h1[data-v-6a29d6f6]{margin:0}.skeleton-list[data-v-6a29d6f6]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-6a29d6f6]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-6a29d6f6]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-6a29d6f6]{margin-bottom:1rem}.project-list[data-v-6a29d6f6]{display:flex;flex-direction:column;gap:1rem}.project-card[data-v-6a29d6f6]{display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background-color .15s ease}.project-card[data-v-6a29d6f6]:hover{background-color:var(--color-background-soft)}.project-name[data-v-6a29d6f6]{margin:0 0 .25rem;font-size:1rem}.project-path[data-v-6a29d6f6]{margin:0;font-size:.875rem;color:var(--color-text-soft);font-family:var(--font-mono)}.project-actions[data-v-6a29d6f6]{display:flex;gap:.5rem}
@@ -1 +0,0 @@
1
- import{_ as k,o as y,a as s,c as e,b as o,d as c,w as d,e as l,u as i,F as u,r as j,t as p,f as v,g as h,h as g}from"./index-CSOPrlmq.js";import{u as w}from"./projects-B2du-GX8.js";import"./ApiClient-Dbs1H78V.js";const C={class:"container"},P={class:"page-header"},b={key:0,class:"skeleton-list"},x={key:1,class:"error-message"},N={key:2,class:"empty-state"},V={key:3,class:"project-list"},S=["onClick"],B={class:"project-info"},L={class:"project-name"},$={class:"project-path"},D={class:"project-actions"},E={__name:"ProjectListView",setup(F){const m=h(),n=w();function f(_){m.push(`/projects/${_}/sessions`)}return y(()=>{n.fetchProjects()}),(_,t)=>{const a=v("router-link");return s(),e("div",C,[o("div",P,[t[2]||(t[2]=o("h1",null,"Projects",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[1]||(t[1]=[l(" New Project ",-1)])]),_:1})]),i(n).loading?(s(),e("div",b,[(s(),e(u,null,j(3,r=>o("div",{key:r,class:"skeleton card",style:{height:"80px"}})),64))])):i(n).error?(s(),e("div",x,p(i(n).error),1)):i(n).projects.length===0?(s(),e("div",N,[t[4]||(t[4]=o("p",null,"No projects yet. Create your first project to get started.",-1)),c(a,{to:"/projects/new",class:"btn btn-primary"},{default:d(()=>[...t[3]||(t[3]=[l(" Create Project ",-1)])]),_:1})])):(s(),e("div",V,[(s(!0),e(u,null,j(i(n).projects,r=>(s(),e("div",{key:r.id,class:"project-card card",onClick:M=>f(r.id)},[o("div",B,[o("h3",L,p(r.name),1),o("p",$,p(r.workingDirectory),1)]),o("div",D,[c(a,{to:`/projects/${r.id}/edit`,class:"btn",onClick:t[0]||(t[0]=g(()=>{},["stop"]))},{default:d(()=>[...t[5]||(t[5]=[l(" Edit ",-1)])]),_:1},8,["to"])])],8,S))),128))]))])}}},q=k(E,[["__scopeId","data-v-6a29d6f6"]]);export{q as default};
@@ -1 +0,0 @@
1
- h1[data-v-e2431044]{margin-bottom:2rem}.form[data-v-e2431044]{max-width:500px}.form-actions[data-v-e2431044]{display:flex;gap:.5rem;justify-content:flex-end}.error-message[data-v-e2431044]{color:var(--color-error);margin-bottom:1rem}.advanced-settings[data-v-e2431044]{margin-bottom:1rem}.advanced-settings summary[data-v-e2431044]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-e2431044]{margin-bottom:1rem}.form-textarea[data-v-e2431044]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-e2431044]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.form-textarea-small[data-v-e2431044]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.btn-link[data-v-e2431044]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-e2431044]:hover{color:var(--color-primary-hover)}
@@ -1 +0,0 @@
1
- import{_ as k,i as N,a as i,c as u,b as s,j as d,v as m,d as y,e as C,u as I,D as P,k as b,t as j,w as x,h as R,l as t,f as U,g as V}from"./index-CSOPrlmq.js";import{u as O}from"./projects-B2du-GX8.js";import{P as T}from"./PathChooser-CXFxb8Oj.js";import"./ApiClient-Dbs1H78V.js";const F={class:"container"},M={class:"form-group"},H={class:"form-group"},A={class:"advanced-settings"},B={class:"form-group"},h={class:"form-label",for:"systemPrompt"},J={class:"form-group"},$={class:"form-group"},q={key:0,class:"error-message"},z={class:"form-actions"},L=["disabled"],W={key:0,class:"loading-spinner"},Y={__name:"ProjectNewView",setup(G){const g=V(),E=O(),_=N(),p=P,f=t(""),v=t(""),l=t(P),S=t(""),c=t(""),r=t(!1),n=t(null);async function w(){r.value=!0,n.value=null;try{const a=await E.createProject({name:f.value,workingDirectory:v.value,systemPrompt:l.value===p?null:l.value,onSessionCreated:S.value||void 0,onSessionDeleted:c.value||void 0});_.success("Project created successfully"),g.push(`/projects/${a.id}/sessions`)}catch(a){n.value=a.message}finally{r.value=!1}}return(a,e)=>{const D=U("router-link");return i(),u("div",F,[e[17]||(e[17]=s("h1",null,"New Project",-1)),s("form",{class:"form card",onSubmit:R(w,["prevent"])},[s("div",M,[e[6]||(e[6]=s("label",{class:"form-label",for:"name"},"Project Name",-1)),d(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>f.value=o),type:"text",class:"form-input",placeholder:"My Project",required:""},null,512),[[m,f.value]])]),s("div",H,[e[7]||(e[7]=s("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),y(T,{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=o=>v.value=o)},null,8,["modelValue"])]),s("details",A,[e[14]||(e[14]=s("summary",null,"Advanced Settings",-1)),s("div",B,[s("label",h,[e[8]||(e[8]=C(" System Prompt ",-1)),l.value!==I(p)?(i(),u("button",{key:0,type:"button",class:"btn-link",onClick:e[2]||(e[2]=o=>l.value=I(p))}," Reset to Default ")):b("",!0)]),d(s("textarea",{id:"systemPrompt","onUpdate:modelValue":e[3]||(e[3]=o=>l.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[m,l.value]]),e[9]||(e[9]=s("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),s("div",J,[e[10]||(e[10]=s("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),d(s("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[4]||(e[4]=o=>S.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[m,S.value]]),e[11]||(e[11]=s("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),s("div",$,[e[12]||(e[12]=s("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),d(s("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[5]||(e[5]=o=>c.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[m,c.value]]),e[13]||(e[13]=s("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),n.value?(i(),u("div",q,j(n.value),1)):b("",!0),s("div",z,[y(D,{to:"/",class:"btn"},{default:x(()=>[...e[15]||(e[15]=[C(" Cancel ",-1)])]),_:1}),s("button",{type:"submit",class:"btn btn-primary",disabled:r.value},[r.value?(i(),u("span",W)):b("",!0),e[16]||(e[16]=C(" Create Project ",-1))],8,L)])],32)])}}},ee=k(Y,[["__scopeId","data-v-e2431044"]]);export{ee as default};