circuschief 0.6.0 → 0.8.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 (187) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/agents/adapters/CodexAdapter.js +5 -4
  3. package/packages/server/src/api/canvas.js +22 -57
  4. package/packages/server/src/api/index.js +2 -0
  5. package/packages/server/src/api/kanban.js +4 -2
  6. package/packages/server/src/api/projects-helpers.js +20 -3
  7. package/packages/server/src/api/projects-session-helpers.js +35 -4
  8. package/packages/server/src/api/projects.js +11 -0
  9. package/packages/server/src/api/providers.js +11 -1
  10. package/packages/server/src/api/sessions-commands.js +35 -17
  11. package/packages/server/src/api/sessions-draft.js +1 -0
  12. package/packages/server/src/api/sessions-lifecycle.js +10 -10
  13. package/packages/server/src/api/sessions-patch.js +4 -0
  14. package/packages/server/src/api/sessions.js +6 -5
  15. package/packages/server/src/api/settings.js +52 -4
  16. package/packages/server/src/database.js +0 -2
  17. package/packages/server/src/db/ConversationRepository.js +16 -3
  18. package/packages/server/src/db/DatabaseManager.js +5 -1
  19. package/packages/server/src/db/ProjectDefaultsRepository.js +50 -40
  20. package/packages/server/src/db/ProviderRepository.js +87 -32
  21. package/packages/server/src/db/SessionRepository.js +13 -8
  22. package/packages/server/src/db/SettingsRepository.js +44 -16
  23. package/packages/server/src/db/conversation-helpers.js +1 -0
  24. package/packages/server/src/db/index.js +0 -3
  25. package/packages/server/src/db/migrations/index.js +36 -200
  26. package/packages/server/src/db/seedBaselineData.js +137 -0
  27. package/packages/server/src/db/session-helpers.js +9 -3
  28. package/packages/server/src/middleware/sessionLookup.js +81 -8
  29. package/packages/server/src/schema.sql +157 -132
  30. package/packages/server/src/scripts/backupDatabase.js +21 -0
  31. package/packages/server/src/scripts/dbUtils.js +81 -0
  32. package/packages/server/src/scripts/inspectDatabaseSchema.js +81 -0
  33. package/packages/server/src/scripts/validateDatabaseBaseline.js +212 -0
  34. package/packages/server/src/services/agentCallLogger.js +1 -1
  35. package/packages/server/src/services/codexSpawnHelper.js +9 -0
  36. package/packages/server/src/services/commandButtonPrompts.js +48 -0
  37. package/packages/server/src/services/commandRunner.js +7 -1
  38. package/packages/server/src/services/draftSessionService.js +2 -0
  39. package/packages/server/src/services/e2eSpawnCapture.js +147 -0
  40. package/packages/server/src/services/gitCommitAttribution.js +120 -0
  41. package/packages/server/src/services/gitService.js +11 -2
  42. package/packages/server/src/services/gitSessionSetup.js +11 -1
  43. package/packages/server/src/services/kanbanTriggers.js +6 -3
  44. package/packages/server/src/services/nodeSpawnHelper.js +9 -0
  45. package/packages/server/src/services/prUrlService.js +3 -3
  46. package/packages/server/src/services/queryParamBuilder.js +90 -0
  47. package/packages/server/src/services/sessionDuplicator.js +1 -5
  48. package/packages/server/src/services/sessionExecution.js +56 -106
  49. package/packages/server/src/services/sessionPrompts.js +16 -47
  50. package/packages/server/src/services/sessionProvider.js +16 -8
  51. package/packages/server/src/services/streamEventCallbacks.js +72 -40
  52. package/packages/server/src/services/streamEventHandler.js +13 -2
  53. package/packages/server/src/services/streamUsageHandler.js +6 -0
  54. package/packages/server/src/services/summaryClaudeClient.js +37 -12
  55. package/packages/server/src/services/summaryModelClient.js +154 -0
  56. package/packages/server/src/services/summaryModelResolver.js +148 -0
  57. package/packages/server/src/services/summaryService.js +11 -7
  58. package/packages/server/src/services/summaryStaleCheck.js +23 -4
  59. package/packages/server/src/services/templateTriggerService.js +3 -1
  60. package/packages/server/src/services/usageTracker.js +5 -1
  61. package/packages/server/src/services/visibleFinalErrorMessage.js +123 -0
  62. package/packages/shared/src/constants.js +4 -2
  63. package/packages/shared/src/contracts/commandButtons.js +16 -2
  64. package/packages/shared/src/contracts/projects.js +4 -2
  65. package/packages/shared/src/contracts/providers.js +60 -0
  66. package/packages/shared/src/contracts/sessions.js +2 -1
  67. package/packages/shared/src/contracts/templates.js +2 -2
  68. package/packages/shared/src/types.js +1 -9
  69. package/packages/shared/src/utils.js +11 -19
  70. package/packages/web/dist/assets/ActiveSessionsView-B0XHqLmv.js +1 -0
  71. package/packages/web/dist/assets/{AgentLogsView-Cdw4nmvd.js → AgentLogsView-DmsjUMlB.js} +2 -2
  72. package/packages/web/dist/assets/ApiClient-C3ztI9s9.js +1 -0
  73. package/packages/web/dist/assets/ArchiveConfirmModal-BlCyn5Vt.js +1 -0
  74. package/packages/web/dist/assets/ArchiveConfirmModal-DeoCVGXt.css +1 -0
  75. package/packages/web/dist/assets/{CommandButtonDetailView-DnFhJY5A.js → CommandButtonDetailView-CdSCPp78.js} +1 -1
  76. package/packages/web/dist/assets/EffortLevelSelector-hc2MNKg6.js +1 -0
  77. package/packages/web/dist/assets/{GeneralSettingsView-CQkmdczf.js → GeneralSettingsView-D1nI8_zk.js} +1 -1
  78. package/packages/web/dist/assets/InputWithButton-CAkttyqx.js +1 -0
  79. package/packages/web/dist/assets/{InputWithButton-cYdrEmTs.css → InputWithButton-D9HMvfR5.css} +1 -1
  80. package/packages/web/dist/assets/{InterpolationHelp-PfYR3KJo.js → InterpolationHelp-BO1j9Z3_.js} +1 -1
  81. package/packages/web/dist/assets/MarkdownEditor-ucRAP_UM.js +2 -0
  82. package/packages/web/dist/assets/{ModelSelector-BZOT1Jc6.css → ModelSelector-BSxKUSus.css} +1 -1
  83. package/packages/web/dist/assets/ModelSelector-CwTz8ZWO.js +1 -0
  84. package/packages/web/dist/assets/NewSessionView-BDPb-1qr.css +1 -0
  85. package/packages/web/dist/assets/NewSessionView-BsDrp8mj.js +3 -0
  86. package/packages/web/dist/assets/ProjectEditView-CwTOeSun.js +1 -0
  87. package/packages/web/dist/assets/ProjectEditView-J15mcsWz.css +1 -0
  88. package/packages/web/dist/assets/{ProjectListView-CuYMmd3O.js → ProjectListView-DcNyuINs.js} +1 -1
  89. package/packages/web/dist/assets/{ProjectNewView-CNaA4Maf.js → ProjectNewView-B5YV62hv.js} +1 -1
  90. package/packages/web/dist/assets/ProvidersView-bZemq_Rv.css +1 -0
  91. package/packages/web/dist/assets/ProvidersView-nY9GnDdO.js +1 -0
  92. package/packages/web/dist/assets/QuickResponseSettings-B352c75l.css +1 -0
  93. package/packages/web/dist/assets/QuickResponseSettings-BQwQXuL7.js +1 -0
  94. package/packages/web/dist/assets/{QuickResponsesPanel-DIBQFj0W.css → QuickResponsesPanel-BlFDvnZ2.css} +1 -1
  95. package/packages/web/dist/assets/{QuickResponsesPanel-BqMYSHb0.js → QuickResponsesPanel-BzSYcCSP.js} +1 -1
  96. package/packages/web/dist/assets/{ResizableTextarea-wYF3K2RO.js → ResizableTextarea-B3YIdIXv.js} +1 -1
  97. package/packages/web/dist/assets/{SessionCard-bLaQEWWX.js → SessionCard-CjE1tXiT.js} +1 -1
  98. package/packages/web/dist/assets/SessionDetailView-3cPZrbS3.js +36 -0
  99. package/packages/web/dist/assets/SessionDetailView-CZRZMrfM.css +1 -0
  100. package/packages/web/dist/assets/SessionFormOptions-B6AxyREh.js +1 -0
  101. package/packages/web/dist/assets/SessionFormOptions-BpUALRKn.css +1 -0
  102. package/packages/web/dist/assets/SessionListView-B5_6gW49.css +1 -0
  103. package/packages/web/dist/assets/SessionListView-CLXBfLcq.js +1 -0
  104. package/packages/web/dist/assets/{SessionLogStream-DTnDAF95.js → SessionLogStream-LlZ3z_Xj.js} +1 -1
  105. package/packages/web/dist/assets/{SettingsView-DNLUSsHV.js → SettingsView-CTGiGvR2.js} +1 -1
  106. package/packages/web/dist/assets/{SlashCommandWizard-CRGFaO8t.js → SlashCommandWizard-Cy04d7-o.js} +1 -1
  107. package/packages/web/dist/assets/{SlashCommandWizard-Dn7sNaBd.css → SlashCommandWizard-DJzw3LP5.css} +1 -1
  108. package/packages/web/dist/assets/SummarySettingsView-BR2ZjEa3.js +1 -0
  109. package/packages/web/dist/assets/SummarySettingsView-l2bxHmZZ.css +1 -0
  110. package/packages/web/dist/assets/TemplateDetailView-DH6Oswsp.js +1 -0
  111. package/packages/web/dist/assets/{commandButtons-Bbjf3fCt.js → commandButtons-BfqR-fqq.js} +1 -1
  112. package/packages/web/dist/assets/index-1zziPL6l.js +1 -0
  113. package/packages/web/dist/assets/index-7kzHPxSF.js +1 -0
  114. package/packages/web/dist/assets/index-B0N_obMc.js +1 -0
  115. package/packages/web/dist/assets/index-BNk_gdfI.js +1 -0
  116. package/packages/web/dist/assets/{index-gmCCsCQ1.css → index-BY174HVJ.css} +1 -1
  117. package/packages/web/dist/assets/index-CSqaAH-0.js +1 -0
  118. package/packages/web/dist/assets/index-C_q4WlK8.js +1 -0
  119. package/packages/web/dist/assets/index-D1wpU4y0.js +7 -0
  120. package/packages/web/dist/assets/index-D5zCA8sD.js +1 -0
  121. package/packages/web/dist/assets/index-DGR8ELWY.js +1 -0
  122. package/packages/web/dist/assets/index-DHga8pXo.js +1 -0
  123. package/packages/web/dist/assets/index-DSby02Wl.js +1 -0
  124. package/packages/web/dist/assets/{index-Cf6vdW-B.js → index-DgkC10TW.js} +3 -3
  125. package/packages/web/dist/assets/index-DqjXJTVI.js +1 -0
  126. package/packages/web/dist/assets/{index-Bs7Qf5D6.js → index-DtfUt785.js} +2 -2
  127. package/packages/web/dist/assets/index-_4S2uLDI.js +1 -0
  128. package/packages/web/dist/assets/{index-BQL_L4gL.js → index-fK8FIZgP.js} +15 -14
  129. package/packages/web/dist/assets/index-gmiZeFXN.js +1 -0
  130. package/packages/web/dist/assets/index-irD539ZM.js +3 -0
  131. package/packages/web/dist/assets/index-yq-E1Y00.js +1 -0
  132. package/packages/web/dist/assets/{projects-CPt3AB7U.js → projects-DXYQNJIi.js} +1 -1
  133. package/packages/web/dist/assets/{providers-ChfeMvUq.js → providers-1bnH-exJ.js} +1 -1
  134. package/packages/web/dist/assets/sessions-6zGUlFrt.js +1 -0
  135. package/packages/web/dist/assets/settings-MbfRir0d.js +1 -0
  136. package/packages/web/dist/index.html +2 -2
  137. package/packages/server/src/api/sessions-notes.js +0 -51
  138. package/packages/server/src/db/SessionNoteRepository.js +0 -60
  139. package/packages/server/src/db/migrations/canvasItemsMigrations.js +0 -109
  140. package/packages/server/src/db/migrations/conversationsMigrations.js +0 -183
  141. package/packages/server/src/db/migrations/kanbanMigrations.js +0 -99
  142. package/packages/server/src/db/migrations/miscMigrations.js +0 -369
  143. package/packages/server/src/db/migrations/projectsMigrations.js +0 -99
  144. package/packages/server/src/db/migrations/sessionsMigrations.js +0 -282
  145. package/packages/web/dist/assets/ActiveSessionsView-UCbQrF1b.js +0 -1
  146. package/packages/web/dist/assets/ApiClient-CWbXWDUY.js +0 -1
  147. package/packages/web/dist/assets/ArchiveConfirmModal-BQ-4gI0R.css +0 -1
  148. package/packages/web/dist/assets/ArchiveConfirmModal-J48eh3zw.js +0 -1
  149. package/packages/web/dist/assets/EffortLevelSelector-bXbPo4Zw.js +0 -1
  150. package/packages/web/dist/assets/InputWithButton-XyM3k6lN.js +0 -1
  151. package/packages/web/dist/assets/MarkdownEditor-P8F5kO-o.js +0 -2
  152. package/packages/web/dist/assets/ModelSelector-CowKfGMP.js +0 -1
  153. package/packages/web/dist/assets/NewSessionView-D_Hi7M9g.css +0 -1
  154. package/packages/web/dist/assets/NewSessionView-DkjFLvHU.js +0 -3
  155. package/packages/web/dist/assets/ProjectEditView-CpeKj-_w.css +0 -1
  156. package/packages/web/dist/assets/ProjectEditView-embVT7NC.js +0 -1
  157. package/packages/web/dist/assets/ProvidersView-C7rydtOd.js +0 -1
  158. package/packages/web/dist/assets/ProvidersView-DE82G_5W.css +0 -1
  159. package/packages/web/dist/assets/QuickResponseSettings-B8188A1D.css +0 -1
  160. package/packages/web/dist/assets/QuickResponseSettings-BTQEKhwJ.js +0 -1
  161. package/packages/web/dist/assets/SessionDetailView-Cv-xMzXp.css +0 -1
  162. package/packages/web/dist/assets/SessionDetailView-CvQOUsW2.js +0 -36
  163. package/packages/web/dist/assets/SessionFormOptions-3pzbgI2Q.js +0 -1
  164. package/packages/web/dist/assets/SessionFormOptions-DhhIkjIS.css +0 -1
  165. package/packages/web/dist/assets/SessionListView-Dranfb72.js +0 -1
  166. package/packages/web/dist/assets/SessionListView-fHlQyecX.css +0 -1
  167. package/packages/web/dist/assets/SummarySettingsView-C7G_suHp.js +0 -1
  168. package/packages/web/dist/assets/SummarySettingsView-DcsmSVJI.css +0 -1
  169. package/packages/web/dist/assets/TemplateDetailView-B78_DLMR.js +0 -1
  170. package/packages/web/dist/assets/index--V7c-VZf.js +0 -1
  171. package/packages/web/dist/assets/index-8Q04yd7H.js +0 -1
  172. package/packages/web/dist/assets/index-B47XRBDH.js +0 -1
  173. package/packages/web/dist/assets/index-BXbgZrhS.js +0 -1
  174. package/packages/web/dist/assets/index-CGhDVPen.js +0 -1
  175. package/packages/web/dist/assets/index-CKcRO1A6.js +0 -1
  176. package/packages/web/dist/assets/index-CTq-SLIW.js +0 -1
  177. package/packages/web/dist/assets/index-CYyos3iC.js +0 -1
  178. package/packages/web/dist/assets/index-CsCREAxF.js +0 -1
  179. package/packages/web/dist/assets/index-DJTTk_8T.js +0 -3
  180. package/packages/web/dist/assets/index-DPqUJ5JK.js +0 -1
  181. package/packages/web/dist/assets/index-EwAe1dKg.js +0 -1
  182. package/packages/web/dist/assets/index-JBA8axyA.js +0 -1
  183. package/packages/web/dist/assets/index-JkVHFtK5.js +0 -7
  184. package/packages/web/dist/assets/index-gMPUwT55.js +0 -1
  185. package/packages/web/dist/assets/index-wadc_0zT.js +0 -1
  186. package/packages/web/dist/assets/sessions-CwPsJOb1.js +0 -1
  187. package/packages/web/dist/assets/settings-BOj6wq6t.js +0 -1
@@ -1,3 +0,0 @@
1
- import{I as ge,n as m,_ as de,a as r,c as d,b as l,E as ue,i as h,t as D,f as re,F as L,y as Ve,l as R,m as E,v as X,q as ie,p as _,k as Oe,A as xe,o as Me,d as $,w as Le,u as v,K as Z,r as H,G as fe,j as Ne,s as Ue,g as qe,x as A,h as Ge}from"./index-BQL_L4gL.js";import{g as je,u as Fe}from"./sessions-CwPsJOb1.js";import{u as Pe}from"./EffortLevelSelector-bXbPo4Zw.js";import{u as We,a as Qe,Q as ze}from"./QuickResponseSettings-BTQEKhwJ.js";import{a as He}from"./ApiClient-CWbXWDUY.js";import{F as Ke,Q as Ye,u as Je}from"./QuickResponsesPanel-BqMYSHb0.js";import{S as Xe}from"./SessionFormOptions-3pzbgI2Q.js";import{R as Ze}from"./ResizableTextarea-wYF3K2RO.js";import{S as _e,a as et}from"./SlashCommandWizard-CRGFaO8t.js";import{u as tt}from"./projects-CPt3AB7U.js";import"./settings-BOj6wq6t.js";import"./ModelSelector-CowKfGMP.js";import"./providers-ChfeMvUq.js";function lt(t){const u=m(""),a=m(!1),f=m("yolo"),o=m(null),S=m(null),x=m(!0),C=m(null),g=m(!0),n=m("worktree"),c=m(""),I=m(!1),k=m(""),N=m(null),V=m(null),K=m(null),w=m({scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}),T=m({mode:!1,model:!1,thinkingEnabled:!1,startImmediately:!1,quickGitMode:!1,quickWorktreeBranch:!1});function U(p){p.mode&&(f.value=p.mode,T.value.mode=!0),p.model?(o.value=p.model,T.value.model=!0):(o.value="sonnet",T.value.model=!0),p.thinkingEnabled!==null&&p.thinkingEnabled!==void 0&&(x.value=p.thinkingEnabled,T.value.thinkingEnabled=!0),p.effortLevel&&(C.value=p.effortLevel),p.startImmediately!==null&&p.startImmediately!==void 0&&(g.value=p.startImmediately,T.value.startImmediately=!0),p.gitMode&&(n.value=p.gitMode,T.value.quickGitMode=!0),p.gitBranch&&(c.value=p.gitBranch,T.value.quickWorktreeBranch=!0)}function ee(p){const y=localStorage.getItem(t.value);y&&(u.value=y,ge(()=>{p.value&&(p.value.value=y,a.value=y.trim().length>0)}))}function Y(){w.value={scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}}function q(){I.value=!0}function O(){I.value=!1,c.value=k.value}function M(p){k.value=je("",p),I.value||(c.value=k.value)}return{prompt:u,promptHasContent:a,mode:f,model:o,providerId:S,thinkingEnabled:x,effortLevel:C,startImmediately:g,quickGitMode:n,quickWorktreeBranch:c,editingBranch:I,autoBranchName:k,selectedTemplateId:N,startFromTemplateId:V,parentSessionId:K,schedulingData:w,usingDefaults:T,applyProjectDefaults:U,restoreDraftFromStorage:ee,resetSchedulingData:Y,handleBranchEdit:q,resetBranchName:O,updateAutoBranchName:M}}function nt(t,u){if(!t)return;const a=t.selectionStart,f=t.selectionEnd,o=t.value.substring(0,a),S=t.value.substring(f);t.value=o+u+S,t.selectionStart=t.selectionEnd=a+u.length,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus()}function ot(t,u){if(!t)return;const a=t.value.trim(),f=a?`${a}
2
-
3
- ${u}`:u;t.value=f,t.dispatchEvent(new Event("input",{bubbles:!0}))}function st(t,u,a){t&&(u.prompt.value=t.prompt,a.value&&(a.value.value=t.prompt,a.value.dispatchEvent(new Event("input",{bubbles:!0}))),t.thinkingEnabled!=null&&(u.thinkingEnabled.value=t.thinkingEnabled),t.model&&(u.model.value=t.model),t.mode&&(u.mode.value=t.mode),t.gitBranch&&(u.quickWorktreeBranch.value=t.gitBranch,u.editingBranch.value=!0),t.gitMode&&(u.quickGitMode.value=t.gitMode),t.effortLevel!=null&&(u.effortLevel.value=t.effortLevel),t.nextTemplateId&&(u.selectedTemplateId.value=t.nextTemplateId))}function at(t,u){const{currentPrompt:a,gitStatus:f,files:o}=u,S=t.quickGitMode.value&&(f!=null&&f.isGitRepo)?t.quickGitMode.value:void 0;return{prompt:a,mode:t.mode.value,model:t.model.value,providerId:t.providerId.value,thinkingEnabled:t.thinkingEnabled.value,effortLevel:t.effortLevel.value,startImmediately:t.startImmediately.value,gitMode:S,gitBranch:S?t.quickWorktreeBranch.value:void 0,files:o,templateId:t.selectedTemplateId.value,parentSessionId:t.parentSessionId.value||null,scheduledAt:t.schedulingData.value.scheduledAt,autoRescheduleEnabled:t.schedulingData.value.autoRescheduleEnabled,rescheduleDelayMinutes:t.schedulingData.value.rescheduleDelayMinutes,rescheduleOnTokenLimit:t.schedulingData.value.rescheduleOnTokenLimit,rescheduleOnServiceError:t.schedulingData.value.rescheduleOnServiceError,maxRescheduleCount:t.schedulingData.value.maxRescheduleCount,maxTotalTokens:t.schedulingData.value.maxTotalTokens,rescheduleAtTokenCount:t.schedulingData.value.rescheduleAtTokenCount}}const ut={key:0,class:"form-group"},it={class:"segmented-control"},rt={key:0,class:"branch-input-row"},dt={class:"quick-branch-input"},mt=["value","placeholder"],ct={key:1,class:"current-branch-hint"},pt={key:1,class:"git-loading"},vt={__name:"GitOptionsPanel",props:{gitStatus:{type:Object,default:null},modelValue:{type:String,default:""},branchName:{type:String,default:""},autoBranchName:{type:String,default:""},editingBranch:{type:Boolean,default:!1},loadingGit:{type:Boolean,default:!1}},emits:["update:modelValue","update:branchName","branchEdit","resetBranch"],setup(t){return(u,a)=>{var f;return r(),d(L,null,[(f=t.gitStatus)!=null&&f.isGitRepo?(r(),d("div",ut,[a[9]||(a[9]=l("label",{class:"form-label"},"Git Options",-1)),l("div",it,[l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="worktree"}]),onClick:a[0]||(a[0]=o=>u.$emit("update:modelValue","worktree"))},[...a[6]||(a[6]=[l("span",{class:"segment-label-full"},"Worktree",-1),l("span",{class:"segment-label-short"},"WT",-1)])],2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="branch"}]),onClick:a[1]||(a[1]=o=>u.$emit("update:modelValue","branch"))}," Branch ",2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue===""}]),onClick:a[2]||(a[2]=o=>u.$emit("update:modelValue",""))}," Current ",2)]),t.modelValue?(r(),d("div",rt,[a[7]||(a[7]=l("label",{class:"form-label form-label-small"},"Branch Name",-1)),l("div",dt,[l("input",{value:t.branchName,type:"text",class:"form-input",placeholder:t.autoBranchName,onInput:a[3]||(a[3]=o=>u.$emit("update:branchName",o.target.value)),onFocus:a[4]||(a[4]=o=>u.$emit("branchEdit"))},null,40,mt),t.editingBranch?(r(),d("button",{key:0,type:"button",class:"btn btn-small",onClick:a[5]||(a[5]=o=>u.$emit("resetBranch"))}," Reset ")):h("",!0)]),a[8]||(a[8]=l("p",{class:"form-help"}," Auto-generated from prompt ",-1))])):h("",!0),t.modelValue===""?(r(),d("p",ct," On: "+D(t.gitStatus.currentBranch),1)):h("",!0)])):h("",!0),t.loadingGit?(r(),d("div",pt,[...a[10]||(a[10]=[l("span",{class:"loading-spinner"},null,-1),re(" Loading git info... ",-1)])])):h("",!0)],64)}}},ht=de(vt,[["__scopeId","data-v-59edf73d"]]),ft={class:"scheduling-options"},gt={key:0,class:"form-group"},bt={class:"form-group"},kt={class:"toggle-switch"},yt={key:1,class:"reschedule-settings"},Tt={class:"form-group"},St={class:"checkbox-option"},Et={class:"checkbox-option"},Ct={class:"form-group"},It={class:"limits-section"},Rt={class:"form-group"},wt={class:"form-group"},Bt={class:"form-group"},$t={__name:"SchedulingOptions",props:{modelValue:{type:Object,default:()=>({})},hideScheduledAt:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:u}){const a=t,f=u,o=Ve({scheduledAt:a.modelValue.scheduledAt||null,scheduledAtLocal:"",autoRescheduleEnabled:a.modelValue.autoRescheduleEnabled??!1,rescheduleDelayMinutes:a.modelValue.rescheduleDelayMinutes??15,rescheduleOnTokenLimit:a.modelValue.rescheduleOnTokenLimit??!0,rescheduleOnServiceError:a.modelValue.rescheduleOnServiceError??!0,maxRescheduleCount:a.modelValue.maxRescheduleCount??null,maxTotalTokens:a.modelValue.maxTotalTokens??null,rescheduleAtTokenCount:a.modelValue.rescheduleAtTokenCount??null});function S(){if(o.scheduledAtLocal){const g=new Date(o.scheduledAtLocal);o.scheduledAt=g.getTime()}else o.scheduledAt=null;C()}function x(g){if(!g)return"";const n=new Date(g),c=n.getFullYear(),I=String(n.getMonth()+1).padStart(2,"0"),k=String(n.getDate()).padStart(2,"0"),N=String(n.getHours()).padStart(2,"0"),V=String(n.getMinutes()).padStart(2,"0");return`${c}-${I}-${k}T${N}:${V}`}R(()=>a.modelValue.scheduledAt,g=>{g&&(o.scheduledAtLocal=x(g))},{immediate:!0});function C(){f("update:modelValue",{scheduledAt:o.scheduledAt,autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount})}return R(()=>({autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount}),()=>{C()},{deep:!0}),(g,n)=>(r(),d("div",ft,[t.hideScheduledAt?h("",!0):(r(),d("div",gt,[n[8]||(n[8]=l("label",{for:"scheduled-at",class:"form-label"},"Schedule Start Time (optional)",-1)),E(l("input",{id:"scheduled-at","onUpdate:modelValue":n[0]||(n[0]=c=>o.scheduledAtLocal=c),type:"datetime-local",class:"form-input",onChange:S},null,544),[[X,o.scheduledAtLocal]]),n[9]||(n[9]=l("p",{class:"form-help"}," Leave empty to start immediately ",-1))])),l("div",bt,[l("label",kt,[E(l("input",{"onUpdate:modelValue":n[1]||(n[1]=c=>o.autoRescheduleEnabled=c),type:"checkbox"},null,512),[[ie,o.autoRescheduleEnabled]]),n[10]||(n[10]=l("span",{class:"toggle-slider"},null,-1)),n[11]||(n[11]=l("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),o.autoRescheduleEnabled?(r(),d("div",yt,[l("div",Tt,[n[14]||(n[14]=l("p",{class:"settings-label"}," Reschedule Triggers ",-1)),l("label",St,[E(l("input",{"onUpdate:modelValue":n[2]||(n[2]=c=>o.rescheduleOnTokenLimit=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnTokenLimit]]),n[12]||(n[12]=l("span",{class:"checkbox-label"},"Token limit errors",-1))]),l("label",Et,[E(l("input",{"onUpdate:modelValue":n[3]||(n[3]=c=>o.rescheduleOnServiceError=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnServiceError]]),n[13]||(n[13]=l("span",{class:"checkbox-label"},"Service unavailability",-1))])]),l("div",Ct,[n[16]||(n[16]=l("label",{for:"reschedule-delay",class:"form-label"},"Reschedule Delay",-1)),E(l("select",{id:"reschedule-delay","onUpdate:modelValue":n[4]||(n[4]=c=>o.rescheduleDelayMinutes=c),class:"form-input"},[...n[15]||(n[15]=[l("option",{value:5}," 5 minutes ",-1),l("option",{value:15}," 15 minutes ",-1),l("option",{value:30}," 30 minutes ",-1),l("option",{value:60}," 1 hour ",-1),l("option",{value:120}," 2 hours ",-1)])],512),[[_,o.rescheduleDelayMinutes,void 0,{number:!0}]])]),l("div",It,[n[23]||(n[23]=l("p",{class:"settings-label"}," Limits (optional) ",-1)),l("div",Rt,[n[17]||(n[17]=l("label",{for:"max-reschedule-count",class:"form-label"},"Max Reschedule Count",-1)),E(l("input",{id:"max-reschedule-count","onUpdate:modelValue":n[5]||(n[5]=c=>o.maxRescheduleCount=c),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxRescheduleCount,void 0,{number:!0}]]),n[18]||(n[18]=l("p",{class:"form-help"}," Stop after N reschedule attempts ",-1))]),l("div",wt,[n[19]||(n[19]=l("label",{for:"max-total-tokens",class:"form-label"},"Max Total Tokens (Hard Limit)",-1)),E(l("input",{id:"max-total-tokens","onUpdate:modelValue":n[6]||(n[6]=c=>o.maxTotalTokens=c),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxTotalTokens,void 0,{number:!0}]]),n[20]||(n[20]=l("p",{class:"form-help"}," Stop rescheduling after consuming this many tokens ",-1))]),l("div",Bt,[n[21]||(n[21]=l("label",{for:"reschedule-at-token-count",class:"form-label"},"Reschedule At Token Count",-1)),E(l("input",{id:"reschedule-at-token-count","onUpdate:modelValue":n[7]||(n[7]=c=>o.rescheduleAtTokenCount=c),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[X,o.rescheduleAtTokenCount,void 0,{number:!0}]]),n[22]||(n[22]=l("p",{class:"form-help"}," Proactively reschedule when session reaches this token count ",-1))])])])):h("",!0)]))}},At=de($t,[["__scopeId","data-v-cfbba021"]]),Dt={class:"container"},Vt={key:0,class:"form-group"},Ot={key:0,label:"Project Templates"},xt=["value"],Mt={key:1,label:"Global Templates"},Lt=["value"],Nt={class:"form-group"},Ut={class:"attachment-row"},qt={key:1,class:"error-message"},Gt={key:1,class:"form-group"},jt={key:0,label:"Project Templates"},Ft=["value"],Pt={key:1,label:"Global Templates"},Wt=["value"],Qt={key:2,class:"form-group"},zt=["value"],Ht={class:"form-actions"},Kt=["disabled"],Yt={key:0,class:"loading-spinner"},Jt={__name:"NewSessionView",setup(t){const u=Ue(),a=Ge(),f=Fe();Oe();const o=Pe(),S=We(),x=tt(),C=A(()=>`new-session-draft-${u.params.id}`),g=lt(C),{prompt:n,promptHasContent:c,mode:I,model:k,providerId:N,thinkingEnabled:V,effortLevel:K,startImmediately:w,quickGitMode:T,quickWorktreeBranch:U,editingBranch:ee,autoBranchName:Y,selectedTemplateId:q,startFromTemplateId:O,parentSessionId:M,schedulingData:p,usingDefaults:y,applyProjectDefaults:be,restoreDraftFromStorage:ke,resetSchedulingData:ye,handleBranchEdit:Te,resetBranchName:Se,updateAutoBranchName:me}=g,B=m(null);let G=null,j=null,F=null;const P=m(!1),te=m(!1),le=m(!1),Ee=A(()=>window.innerWidth<=480?80:120),Ce=Je(()=>{var e;const i=((e=B.value)==null?void 0:e.value)||n.value;!P.value&&i.trim()&&ae()}),W=m(null),ce=m([]),pe=m(null),ve=m(null),Q=A(()=>o.projectTemplates),z=A(()=>o.globalTemplates),ne=A(()=>[...Q.value,...z.value]),he=A(()=>{const i=x.getProjectById(u.params.id);return(i==null?void 0:i.workingDirectory)||null}),oe=A(()=>f.sessions.filter(i=>i.status==="completed").sort((i,e)=>new Date(e.createdAt)-new Date(i.createdAt))),Ie=A(()=>!w.value||ne.value.length>0||oe.value.length>0),se=m(!1),J=m(null);function Re(i){var s;const e=i.target.value,b=e.trim().length>0;c.value!==b&&(c.value=b),G&&clearTimeout(G),G=setTimeout(()=>{n.value=e},150),(s=W.value)!=null&&s.isGitRepo&&(F&&clearTimeout(F),F=setTimeout(()=>me(e),300))}R(()=>W.value,i=>{i!=null&&i.isGitRepo&&!Y.value&&me(n.value)},{immediate:!0}),R(I,()=>{y.value.mode=!1}),R(k,()=>{y.value.model=!1}),R(V,()=>{y.value.thinkingEnabled=!1}),R(w,i=>{y.value.startImmediately=!1,i?ye():ge(()=>{var e;(e=ve.value)==null||e.scrollIntoView({behavior:"smooth",block:"nearest"})})}),R(T,()=>{y.value.quickGitMode=!1}),R(U,()=>{y.value.quickWorktreeBranch=!1}),R(n,i=>{j&&clearTimeout(j),j=setTimeout(()=>{i.trim()?localStorage.setItem(C.value,i):localStorage.removeItem(C.value)},500)}),xe(()=>{F&&clearTimeout(F),G&&clearTimeout(G),j&&clearTimeout(j)}),Me(async()=>{const i=u.params.id;ke(B);try{await S.fetchDefaults(i);const b=S.getDefaultsForProject(i);b?be(b):(k.value="sonnet",y.value.model=!0)}catch(b){console.warn("Failed to fetch project defaults:",b),k.value||(k.value="sonnet",y.value.model=!0)}se.value=!0;try{W.value=await He.getGitStatus(i)}catch{}finally{se.value=!1}o.fetchProjectTemplates(i),Qe().fetchForProject(i),u.query.parentSessionId&&(M.value=u.query.parentSessionId)});function we(){a.push(`/projects/${u.params.id}/sessions`)}function Be({text:i}){nt(B.value,i)}function $e({content:i,autoSubmit:e}){var b;ot(B.value,i),e?setTimeout(()=>ae(),0):(b=B.value)==null||b.blur()}function Ae(){const i=O.value&&o.getTemplateById(O.value);st(i,g,B)}async function ae(){var e,b;const i=((e=B.value)==null?void 0:e.value)||n.value;if(i.trim()){P.value=!0,J.value=null;try{const s=at(g,{currentPrompt:i,gitStatus:W.value,files:ce.value}),De=await f.createSession(u.params.id,s);(b=pe.value)==null||b.clear(),localStorage.removeItem(C.value),a.push(`/sessions/${De.id}?overlay=open`)}catch(s){J.value=s.message}finally{P.value=!1}}}return(i,e)=>{const b=qe("router-link");return r(),d("div",Dt,[$(b,{to:`/projects/${v(u).params.id}/sessions`,class:"back-link"},{default:Le(()=>[...e[17]||(e[17]=[re(" ← Sessions ",-1)])]),_:1},8,["to"]),e[26]||(e[26]=l("h1",null,"New Session",-1)),l("form",{class:"form card",onSubmit:Ne(ae,["prevent"])},[ne.value.length>0?(r(),d("div",Vt,[e[19]||(e[19]=l("label",{class:"form-label",for:"start-from-template"},"Start From Template",-1)),E(l("select",{id:"start-from-template","onUpdate:modelValue":e[0]||(e[0]=s=>Z(O)?O.value=s:null),class:"form-input",title:"Selecting a template will populate all form fields below. You can still edit before starting.",onChange:Ae},[e[18]||(e[18]=l("option",{value:null}," Select a template to pre-fill... ",-1)),Q.value.length?(r(),d("optgroup",Ot,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,xt))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Mt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Lt))),128))])):h("",!0)],544),[[_,v(O)]])])):h("",!0),l("div",Nt,[$(Ze,{id:"prompt",ref_key:"textareaRef",ref:B,class:"form-input form-textarea",placeholder:"What would you like the agent to help you with?","min-height":Ee.value,required:"",onInput:Re,onKeydown:v(Ce)},null,8,["min-height","onKeydown"]),l("div",Ut,[$(Ke,{ref_key:"fileAttachment",ref:pe,"onUpdate:files":e[1]||(e[1]=s=>ce.value=s)},null,512),he.value?(r(),fe(_e,{key:0,onOpen:e[2]||(e[2]=s=>te.value=!0)})):h("",!0)])]),$(Ye,{"show-empty":!0,onInsert:$e,onOpenSettings:e[3]||(e[3]=s=>le.value=!0)}),$(Xe,{mode:v(I),model:v(k),"effort-level":v(K),"thinking-enabled":v(V),"start-immediately":v(w),"onUpdate:mode":e[4]||(e[4]=s=>I.value=s),"onUpdate:model":e[5]||(e[5]=s=>k.value=s),"onUpdate:providerId":e[6]||(e[6]=s=>N.value=s),"onUpdate:effortLevel":e[7]||(e[7]=s=>K.value=s),"onUpdate:thinkingEnabled":e[8]||(e[8]=s=>V.value=s),"onUpdate:startImmediately":e[9]||(e[9]=s=>w.value=s)},null,8,["mode","model","effort-level","thinking-enabled","start-immediately"]),J.value?(r(),d("div",qt,D(J.value),1)):h("",!0),$(ht,{"git-status":W.value,"model-value":v(T),"branch-name":v(U),"auto-branch-name":v(Y),"editing-branch":v(ee),"loading-git":se.value,"onUpdate:modelValue":e[10]||(e[10]=s=>T.value=s),"onUpdate:branchName":e[11]||(e[11]=s=>U.value=s),onBranchEdit:v(Te),onResetBranch:v(Se)},null,8,["git-status","model-value","branch-name","auto-branch-name","editing-branch","loading-git","onBranchEdit","onResetBranch"]),Ie.value?(r(),d("div",{key:2,ref_key:"advancedOptionsRef",ref:ve,class:"advanced-options"},[v(w)?h("",!0):(r(),fe(At,{key:0,modelValue:v(p),"onUpdate:modelValue":e[12]||(e[12]=s=>Z(p)?p.value=s:null)},null,8,["modelValue"])),ne.value.length>0?(r(),d("div",Gt,[e[21]||(e[21]=l("label",{class:"form-label",for:"template"},"Next Template (optional)",-1)),E(l("select",{id:"template","onUpdate:modelValue":e[13]||(e[13]=s=>Z(q)?q.value=s:null),class:"form-input"},[e[20]||(e[20]=l("option",{value:null}," None - single session ",-1)),Q.value.length?(r(),d("optgroup",jt,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Ft))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Pt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Wt))),128))])):h("",!0)],512),[[_,v(q)]]),e[22]||(e[22]=l("p",{class:"form-help"}," After this session completes, the selected template will automatically start a new session. ",-1))])):h("",!0),oe.value.length>0?(r(),d("div",Qt,[e[24]||(e[24]=l("label",{class:"form-label",for:"parent-session"},"Parent Session (optional)",-1)),E(l("select",{id:"parent-session","onUpdate:modelValue":e[14]||(e[14]=s=>Z(M)?M.value=s:null),class:"form-input"},[e[23]||(e[23]=l("option",{value:null}," None - create standalone session ",-1)),(r(!0),d(L,null,H(oe.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,zt))),128))],512),[[_,v(M)]]),e[25]||(e[25]=l("p",{class:"form-help"}," Choose a parent session to link this as a child session. Child sessions help organize related work. ",-1))])):h("",!0)],512)):h("",!0),l("div",Ht,[l("button",{type:"button",class:"btn btn-secondary",onClick:we}," Cancel "),l("button",{type:"submit",class:"btn btn-primary btn-submit",disabled:P.value},[P.value?(r(),d("span",Yt)):h("",!0),re(" "+D(v(w)?"Start Session":"Create Draft"),1)],8,Kt)])],32),$(et,{"is-open":te.value,"onUpdate:isOpen":e[15]||(e[15]=s=>te.value=s),"working-directory":he.value||"",mode:"insert","hide-builtin":!0,onInsert:Be},null,8,["is-open","working-directory"]),$(ze,{"is-open":le.value,"project-id":v(u).params.id,onClose:e[16]||(e[16]=s=>le.value=!1)},null,8,["is-open","project-id"])])}}},dl=de(Jt,[["__scopeId","data-v-7c8773e3"]]);export{dl as default};
@@ -1 +0,0 @@
1
- h1[data-v-23028e3b]{margin-bottom:2rem}.loading-state[data-v-23028e3b]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.form[data-v-23028e3b]{max-width:500px}.form-actions[data-v-23028e3b]{display:flex;justify-content:space-between;align-items:center}.form-actions-right[data-v-23028e3b]{display:flex;gap:.5rem}.error-message[data-v-23028e3b]{color:var(--color-error);margin-bottom:1rem}.form-textarea[data-v-23028e3b]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-23028e3b]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.advanced-settings[data-v-23028e3b]{margin-bottom:1rem}.advanced-settings summary[data-v-23028e3b]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-23028e3b]{margin-bottom:1rem}.form-textarea-small[data-v-23028e3b]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.checkbox-label[data-v-23028e3b]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:500}.checkbox-label input[type=checkbox][data-v-23028e3b]{width:1rem;height:1rem;cursor:pointer}.form-input[type=select][data-v-23028e3b],select.form-input[data-v-23028e3b]{-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-23028e3b]{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-23028e3b]:hover{color:var(--color-primary-hover)}
@@ -1 +0,0 @@
1
- import{_ as z,k as J,o as X,l as H,a as p,c as m,b as t,u as S,f as r,j as Z,m as a,v as f,d as L,D as _,i as E,p as B,q as G,e as ee,t as te,w as se,s as oe,n as l,g as le,h as ae}from"./index-BQL_L4gL.js";import{u as ne}from"./projects-CPt3AB7U.js";import{u as re,a as ie,Q as ue}from"./QuickResponseSettings-BTQEKhwJ.js";import{P as de}from"./InputWithButton-XyM3k6lN.js";import{M as pe}from"./ModelSelector-CowKfGMP.js";import{a as me}from"./ApiClient-CWbXWDUY.js";import"./providers-ChfeMvUq.js";const fe={class:"container"},ve={key:0,class:"loading-state"},be={class:"form-group"},ge={class:"form-group"},ce={class:"form-group"},ye={class:"input-with-button"},ke=["placeholder"],Se=["disabled"],we={class:"form-group"},Ce={class:"form-group"},he={class:"form-label",for:"systemPrompt"},Ee={class:"advanced-settings"},Pe={class:"form-group"},De={class:"form-group"},xe={class:"advanced-settings"},Ue={class:"form-group"},Me={class:"form-group"},Re={class:"checkbox-label"},Ve={class:"form-group"},Ie={class:"form-group"},je={class:"checkbox-label"},Le={class:"form-group"},Ne={class:"form-group"},Oe={class:"form-group"},Te=["disabled"],Be={key:0,class:"loading-spinner"},Ge={class:"advanced-settings"},Fe={class:"advanced-settings"},He={class:"form-group"},We={class:"checkbox-label"},Ae={key:0,class:"error-message"},Qe={class:"form-actions"},$e={class:"form-actions-right"},qe=["disabled"],Ke={key:0,class:"loading-spinner"},Ye={__name:"ProjectEditView",setup(ze){const P=_,n=oe(),F=ae(),v=ne(),D=re(),W=ie(),N=J(),x=l(""),i=l(""),w=l(""),U=l(""),u=l(""),M=l(""),R=l(""),V=l(!1),O=l(!1),b=l(""),C=l(!1),g=l(""),h=l(!0),c=l(""),y=l(""),k=l(""),I=l(!1),j=l(!1),d=l(null),T=l(!1);X(()=>{v.fetchProject(n.params.id),D.fetchDefaults(n.params.id),W.fetchForProject(n.params.id)}),H(()=>v.currentProject,s=>{s&&(x.value=s.name,i.value=s.workingDirectory,w.value=s.worktreePath||"",U.value=s.repoUrl||"",u.value=s.systemPrompt||P,M.value=s.onSessionCreated||"",R.value=s.onSessionDeleted||"",V.value=s.kanbanEnabled||!1)},{immediate:!0}),H(()=>D.getDefaultsForProject(n.params.id),s=>{s&&(b.value=s.mode||"",C.value=s.thinkingEnabled||!1,g.value=s.effortLevel??"",h.value=s.startImmediately!==!1,c.value=s.gitMode||"",y.value=s.gitBranch||"",k.value=s.model||"")},{immediate:!0});async function A(){if(i.value){O.value=!0;try{const s=await me.detectWorktreePath(i.value);w.value=s.worktreePath}catch{}finally{O.value=!1}}}function Q(){const s={};return b.value&&(s.mode=b.value),C.value&&(s.thinkingEnabled=!0),g.value&&(s.effortLevel=g.value),h.value||(s.startImmediately=!1),c.value&&(s.gitMode=c.value),y.value&&(s.gitBranch=y.value),k.value&&(s.model=k.value),s}async function $(){I.value=!0,d.value=null;try{await v.updateProject(n.params.id,{name:x.value,workingDirectory:i.value,worktreePath:w.value||null,repoUrl:U.value||null,systemPrompt:u.value===P?null:u.value,onSessionCreated:M.value||null,onSessionDeleted:R.value||null,kanbanEnabled:V.value});const s=Q();Object.keys(s).length>0&&await D.updateDefaults(n.params.id,s),N.success("Repository updated"),F.push(`/projects/${n.params.id}/sessions`)}catch(s){d.value=s.message}finally{I.value=!1}}async function q(){if(confirm("Reset all session defaults to system defaults?")){j.value=!0,d.value=null;try{await D.resetDefaults(n.params.id),b.value="",C.value=!1,g.value="",h.value=!0,c.value="",y.value="",k.value="",N.success("Session defaults reset to system defaults")}catch(s){d.value=s.message}finally{j.value=!1}}}async function K(){if(confirm("Are you sure you want to delete this project?"))try{await v.deleteProject(n.params.id),N.success("Repository removed"),F.push("/")}catch(s){d.value=s.message}}return(s,e)=>{const Y=le("router-link");return p(),m("div",fe,[e[58]||(e[58]=t("h1",null,"Edit Project",-1)),S(v).loading?(p(),m("div",ve,[...e[18]||(e[18]=[t("span",{class:"loading-spinner"},null,-1),r(" Loading... ",-1)])])):S(v).currentProject?(p(),m("form",{key:1,class:"form card",onSubmit:Z($,["prevent"])},[t("div",be,[e[19]||(e[19]=t("label",{class:"form-label",for:"name"},"Project Name",-1)),a(t("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>x.value=o),type:"text",class:"form-input",required:""},null,512),[[f,x.value]])]),t("div",ge,[e[20]||(e[20]=t("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),L(de,{modelValue:i.value,"onUpdate:modelValue":e[1]||(e[1]=o=>i.value=o)},null,8,["modelValue"])]),t("div",ce,[e[21]||(e[21]=t("label",{class:"form-label",for:"worktreePath"},"Worktree Path",-1)),t("div",ye,[a(t("input",{id:"worktreePath","onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),type:"text",class:"form-input",placeholder:i.value+"/.worktrees"},null,8,ke),[[f,w.value]]),t("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:!i.value||O.value,onClick:A}," Detect ",8,Se)]),e[22]||(e[22]=t("p",{class:"form-help"}," Where git worktrees are created for sessions. Changing this only affects new sessions. ",-1))]),t("div",we,[e[23]||(e[23]=t("label",{class:"form-label",for:"repoUrl"},"Repository URL",-1)),a(t("input",{id:"repoUrl","onUpdate:modelValue":e[3]||(e[3]=o=>U.value=o),type:"url",class:"form-input",placeholder:"https://github.com/username/repo"},null,512),[[f,U.value]]),e[24]||(e[24]=t("p",{class:"form-help"}," Link to the project's repository (e.g., GitHub, GitLab). This can be automatically populated from session summaries. ",-1))]),t("div",Ce,[t("label",he,[e[25]||(e[25]=r(" System Prompt ",-1)),u.value!==S(P)?(p(),m("button",{key:0,type:"button",class:"btn-link",onClick:e[4]||(e[4]=o=>u.value=S(P))}," Reset to Default ")):E("",!0)]),a(t("textarea",{id:"systemPrompt","onUpdate:modelValue":e[5]||(e[5]=o=>u.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[f,u.value]]),e[26]||(e[26]=t("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),t("details",Ee,[e[31]||(e[31]=t("summary",null,"Session Lifecycle Hooks",-1)),t("div",Pe,[e[27]||(e[27]=t("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),a(t("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[6]||(e[6]=o=>M.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[f,M.value]]),e[28]||(e[28]=t("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),t("div",De,[e[29]||(e[29]=t("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),a(t("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[7]||(e[7]=o=>R.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[f,R.value]]),e[30]||(e[30]=t("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),t("details",xe,[e[49]||(e[49]=t("summary",null,"Session Defaults",-1)),e[50]||(e[50]=t("p",{class:"form-help"}," Set default values for new sessions created in this project. These values can be overridden when creating individual sessions. ",-1)),t("div",Ue,[e[33]||(e[33]=t("label",{class:"form-label",for:"defaultMode"},"Mode",-1)),a(t("select",{id:"defaultMode","onUpdate:modelValue":e[8]||(e[8]=o=>b.value=o),class:"form-input"},[...e[32]||(e[32]=[t("option",{value:""}," Use system default (standard) ",-1),t("option",{value:"plan"}," Plan ",-1),t("option",{value:"standard"}," Standard ",-1),t("option",{value:"yolo"}," YOLO ",-1)])],512),[[B,b.value]])]),t("div",Me,[t("label",Re,[a(t("input",{"onUpdate:modelValue":e[9]||(e[9]=o=>C.value=o),type:"checkbox"},null,512),[[G,C.value]]),e[34]||(e[34]=r(" Enable thinking (extended thinking) by default ",-1))]),e[35]||(e[35]=t("p",{class:"form-help"}," Enable the agent's extended thinking capability for new sessions. ",-1))]),t("div",Ve,[e[37]||(e[37]=t("label",{class:"form-label",for:"defaultEffortLevel"},"Default Effort Level",-1)),a(t("select",{id:"defaultEffortLevel","onUpdate:modelValue":e[10]||(e[10]=o=>g.value=o),class:"form-input"},[...e[36]||(e[36]=[ee('<option value="" data-v-23028e3b> Auto (default) </option><option value="low" data-v-23028e3b> Low </option><option value="medium" data-v-23028e3b> Medium </option><option value="high" data-v-23028e3b> High </option><option value="max" data-v-23028e3b> Max </option>',5)])],512),[[B,g.value]]),e[38]||(e[38]=t("p",{class:"form-help"}," Set the default effort level for new sessions. Controls how much effort the agent puts into responses. ",-1))]),t("div",Ie,[t("label",je,[a(t("input",{"onUpdate:modelValue":e[11]||(e[11]=o=>h.value=o),type:"checkbox"},null,512),[[G,h.value]]),e[39]||(e[39]=r(" Start sessions immediately ",-1))]),e[40]||(e[40]=t("p",{class:"form-help"},' When enabled, sessions will start automatically. When disabled, sessions will be created in "waiting" state. ',-1))]),t("div",Le,[e[42]||(e[42]=t("label",{class:"form-label",for:"defaultGitMode"},"Git Mode",-1)),a(t("select",{id:"defaultGitMode","onUpdate:modelValue":e[12]||(e[12]=o=>c.value=o),class:"form-input"},[...e[41]||(e[41]=[t("option",{value:""}," No git isolation ",-1),t("option",{value:"branch"}," Create branch for each session ",-1),t("option",{value:"worktree"}," Create worktree for each session ",-1)])],512),[[B,c.value]]),e[43]||(e[43]=t("p",{class:"form-help"}," Controls how git changes are isolated for each session. ",-1))]),t("div",Ne,[e[44]||(e[44]=t("label",{class:"form-label",for:"defaultGitBranch"},"Default Git Branch",-1)),a(t("input",{id:"defaultGitBranch","onUpdate:modelValue":e[13]||(e[13]=o=>y.value=o),type:"text",class:"form-input",placeholder:"e.g., feature/ai-implementation"},null,512),[[f,y.value]]),e[45]||(e[45]=t("p",{class:"form-help"}," When using git branch mode, this is the branch name pattern for new sessions. ",-1))]),t("div",Oe,[e[46]||(e[46]=t("label",{class:"form-label",for:"defaultModel"},"Model",-1)),L(pe,{modelValue:k.value,"onUpdate:modelValue":e[14]||(e[14]=o=>k.value=o),"allow-empty":!0,"empty-label":"Use system default","select-class":"form-input"},null,8,["modelValue"]),e[47]||(e[47]=t("p",{class:"form-help"}," Choose the default model for new sessions in this project. ",-1))]),t("button",{type:"button",class:"btn btn-secondary",disabled:j.value,onClick:q},[j.value?(p(),m("span",Be)):E("",!0),e[48]||(e[48]=r(" Reset to System Defaults ",-1))],8,Te)]),t("details",Ge,[e[51]||(e[51]=t("summary",null,"Quick Responses",-1)),e[52]||(e[52]=t("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)),t("button",{type:"button",class:"btn btn-secondary",onClick:e[15]||(e[15]=o=>T.value=!0)}," Manage Quick Responses ")]),t("details",Fe,[e[55]||(e[55]=t("summary",null,[r("Kanban Board "),t("span",{class:"inline-block rounded bg-amber-900/50 px-1.5 py-0.5 text-[10px] font-semibold uppercase text-amber-300 ml-2"},"Experimental")],-1)),t("div",He,[t("label",We,[a(t("input",{"onUpdate:modelValue":e[16]||(e[16]=o=>V.value=o),type:"checkbox"},null,512),[[G,V.value]]),e[53]||(e[53]=r(" Enable Kanban board ",-1))]),e[54]||(e[54]=t("p",{class:"form-help"},[t("strong",null,"Experimental."),r(" This feature is in active development and may change or be removed. Enable a Kanban board to visually organize sessions into lanes. Sessions can be dragged between lanes, and lanes can trigger automated workflows. ")],-1))])]),d.value?(p(),m("div",Ae,te(d.value),1)):E("",!0),t("div",Qe,[t("button",{type:"button",class:"btn btn-danger",onClick:K}," Delete "),t("div",$e,[L(Y,{to:`/projects/${S(n).params.id}/sessions`,class:"btn"},{default:se(()=>[...e[56]||(e[56]=[r(" Cancel ",-1)])]),_:1},8,["to"]),t("button",{type:"submit",class:"btn btn-primary",disabled:I.value},[I.value?(p(),m("span",Ke)):E("",!0),e[57]||(e[57]=r(" Save ",-1))],8,qe)])])],32)):E("",!0),L(ue,{"is-open":T.value,"project-id":S(n).params.id,onClose:e[17]||(e[17]=o=>T.value=!1)},null,8,["is-open","project-id"])])}}},ot=z(Ye,[["__scopeId","data-v-23028e3b"]]);export{ot as default};
@@ -1 +0,0 @@
1
- import{k as Q,l as se,x as O,n as $,_ as W,a as i,c as d,b as e,e as oe,F as L,r as K,m as I,v as N,p as X,t as y,u as s,j as z,f as w,i as V,a1 as le,d as Z,E as ne,$ as J,o as ae}from"./index-BQL_L4gL.js";import{u as ee}from"./providers-ChfeMvUq.js";import"./ApiClient-CWbXWDUY.js";const ie=Object.freeze(["anthropic","openai"]);function te(){return{name:"",kind:"anthropic",baseUrl:null,authToken:null,apiTimeoutMs:null,additionalEnvVars:{}}}function de(_){const m={name:_.name,kind:_.kind||"anthropic",baseUrl:_.baseUrl,authToken:_.authToken==="••••••••"?null:_.authToken,apiTimeoutMs:_.apiTimeoutMs,additionalEnvVars:_.additionalEnvVars?{..._.additionalEnvVars}:{}},p=Object.keys(m.additionalEnvVars),v=(_.models||[]).map(l=>({_serverId:l.id,modelId:l.modelId,displayName:l.displayName,tier:l.tier||"custom"}));return{formData:m,envKeys:p,models:v,authModified:!1}}function re(){return{form:$(te()),localModels:$([]),envVarKeys:$([]),showAuthToken:$(!1),saving:$(!1),testing:$(!1),error:$(null),testResult:$(null),authTokenModified:$(!1)}}function ue(_,m,p){const v=ee(),l=Q(),f=re(),{form:n,localModels:b,envVarKeys:M,showAuthToken:A,saving:P,testing:h,error:E,testResult:C,authTokenModified:U}=f,S=O(()=>!!m.value),g=O(()=>!(n.value.name.trim().length===0||!S.value&&!ie.includes(n.value.kind))),a=O(()=>n.value.baseUrl||n.value.authToken);se(()=>[_.value,m.value],([t,u])=>{if(t){if(u){const c=de(u);n.value=c.formData,M.value=c.envKeys,b.value=c.models,U.value=c.authModified}else n.value=te(),M.value=[],b.value=[],U.value=!0;A.value=!1,E.value=null,C.value=null}},{deep:!0});function r(){b.value.push({modelId:"",displayName:"",tier:"custom"})}function B(t){b.value.splice(t,1)}function H(){const t=`ENV_VAR_${Object.keys(n.value.additionalEnvVars).length+1}`;n.value.additionalEnvVars[t]="",M.value.push(t)}function R(t){delete n.value.additionalEnvVars[t],M.value=M.value.filter(u=>u!==t)}function D(t,u){const c=M.value[t];if(c!==u&&c.trim()){const k=n.value.additionalEnvVars[u];delete n.value.additionalEnvVars[u],n.value.additionalEnvVars[c]=k}}async function j(){h.value=!0,E.value=null,C.value=null;try{const t=b.value.find(c=>c.tier==="sonnet"),u={kind:n.value.kind||"anthropic",baseUrl:n.value.baseUrl||void 0,authToken:n.value.authToken||void 0,defaultSonnetModel:(t==null?void 0:t.modelId)||void 0,apiTimeoutMs:n.value.apiTimeoutMs||void 0};C.value=await v.testConnection(u)}catch(t){E.value=t.message}finally{h.value=!1}}function q(t,u){return t.modelId.trim()!==u.modelId||t.displayName.trim()!==u.displayName||t.tier!==u.tier}function F(t){return{modelId:t.modelId.trim(),displayName:t.displayName.trim()||t.modelId.trim(),tier:t.tier||"custom"}}async function x(t,u,c){if(!t._serverId&&t.modelId.trim()){await v.addModel(u,F(t));return}const k=c.get(t._serverId);k&&q(t,k)&&await v.updateModel(u,t._serverId,F(t))}async function Y(t){var G;const u=new Set(b.value.filter(T=>T._serverId).map(T=>T._serverId)),c=((G=m.value)==null?void 0:G.models)||[],k=new Map(c.map(T=>[T.id,T]));for(const T of c)u.has(T.id)||await v.removeModel(t,T.id);for(const T of b.value)await x(T,t,k);await v.fetchProviders()}async function o(){var t,u;P.value=!0,E.value=null;try{const c={name:n.value.name.trim(),baseUrl:((t=n.value.baseUrl)==null?void 0:t.trim())||null,apiTimeoutMs:n.value.apiTimeoutMs||null,additionalEnvVars:Object.keys(n.value.additionalEnvVars).length>0?n.value.additionalEnvVars:null};U.value&&(c.authToken=((u=n.value.authToken)==null?void 0:u.trim())||null);let k;S.value?(k=await v.updateProvider(m.value.id,c),l.success("Provider updated successfully")):(c.kind=n.value.kind||"anthropic",k=await v.createProvider(c),l.success("Provider created successfully")),await Y(k.id),p()}catch(c){E.value=c.message}finally{P.value=!1}}return{form:n,localModels:b,envVarKeys:M,showAuthToken:A,saving:P,testing:h,error:E,testResult:C,authTokenModified:U,isEditing:S,isValid:g,canTest:a,addLocalModel:r,removeLocalModel:B,addEnvVar:H,removeEnvVar:R,updateEnvVarKey:D,testConnection:j,save:o}}const ce={class:"models-section"},ve={key:0,class:"models-list"},me=["onUpdate:modelValue"],pe=["onUpdate:modelValue"],fe=["onUpdate:modelValue"],be=["onClick"],ye={key:1,class:"models-empty"},_e={__name:"ProviderModelsList",props:{models:{type:Array,required:!0}},emits:["add","remove"],setup(_){return(m,p)=>(i(),d("div",ce,[p[3]||(p[3]=e("div",{class:"models-header"},[e("span",{class:"models-title"},"Models"),e("span",{class:"models-hint"},"Assign tiers to map provider models to Opus / Sonnet / Haiku roles")],-1)),_.models.length>0?(i(),d("div",ve,[p[2]||(p[2]=oe('<div class="model-row model-row-header" data-v-3aa7217a><span class="col-model-id" data-v-3aa7217a>Model ID</span><span class="col-display-name" data-v-3aa7217a>Display Name</span><span class="col-tier" data-v-3aa7217a>Tier</span><span class="col-actions" data-v-3aa7217a></span></div>',1)),(i(!0),d(L,null,K(_.models,(v,l)=>(i(),d("div",{key:l,class:"model-row"},[I(e("input",{"onUpdate:modelValue":f=>v.modelId=f,type:"text",placeholder:"anthropic.claude-3-sonnet-…",class:"col-model-id model-input"},null,8,me),[[N,v.modelId]]),I(e("input",{"onUpdate:modelValue":f=>v.displayName=f,type:"text",placeholder:"My Sonnet",class:"col-display-name model-input"},null,8,pe),[[N,v.displayName]]),I(e("select",{"onUpdate:modelValue":f=>v.tier=f,class:"col-tier model-input tier-select"},[...p[1]||(p[1]=[e("option",{value:"opus"}," Opus ",-1),e("option",{value:"sonnet"}," Sonnet ",-1),e("option",{value:"haiku"}," Haiku ",-1),e("option",{value:"custom"}," Custom ",-1)])],8,fe),[[X,v.tier]]),e("button",{type:"button",class:"col-actions remove-model-btn",title:"Remove model",onClick:f=>m.$emit("remove",l)}," × ",8,be)]))),128))])):(i(),d("div",ye," No models added yet. ")),e("button",{type:"button",class:"btn btn-sm btn-secondary add-model-btn",onClick:p[0]||(p[0]=v=>m.$emit("add"))}," + Add Model ")]))}},ke=W(_e,[["__scopeId","data-v-3aa7217a"]]),he={class:"modal"},ge={class:"modal-header"},Ve={class:"modal-body"},Me={class:"form-group"},$e={class:"form-group"},Ce=["disabled","title"],Te={key:0,class:"field-note"},Ee={class:"form-group"},Ie={for:"base-url"},Pe={class:"label-hint"},Ue=["placeholder"],we={class:"form-group"},Ae={for:"auth-token"},Se={class:"label-hint"},Ne={class:"token-input-wrapper"},Be=["type"],De=["title"],Oe={class:"expandable-section"},xe={class:"section-content"},Re={class:"form-group"},Fe={class:"form-group"},Le={class:"env-vars-list"},Ke=["onUpdate:modelValue","onBlur"],He=["onUpdate:modelValue"],je=["onClick"],qe={key:0,class:"error-message"},ze={class:"test-result-header"},We={class:"test-icon"},Ye={class:"test-message"},Ge={key:0,class:"test-details"},Je={key:0,class:"test-detail"},Qe={key:1,class:"test-detail"},Xe={class:"modal-footer"},Ze=["disabled"],et={class:"footer-actions"},tt=["disabled"],st=["disabled"],ot={__name:"ProviderForm",props:{isOpen:{type:Boolean,default:!1},provider:{type:Object,default:null}},emits:["close","saved"],setup(_,{emit:m}){const p=_,v=m,{form:l,localModels:f,envVarKeys:n,showAuthToken:b,saving:M,testing:A,error:P,testResult:h,authTokenModified:E,isEditing:C,isValid:U,canTest:S,addLocalModel:g,removeLocalModel:a,addEnvVar:r,removeEnvVar:B,updateEnvVarKey:H,testConnection:R,save:D}=ue(J(p,"isOpen"),J(p,"provider"),()=>v("saved")),j=O(()=>l.value.kind==="openai"?"OPENAI_BASE_URL":"ANTHROPIC_BASE_URL"),q=O(()=>l.value.kind==="openai"?"OPENAI_API_KEY":"ANTHROPIC_AUTH_TOKEN"),F=O(()=>l.value.kind==="openai"?"https://api.openai.com/v1":"https://bedrock-runtime.us-east-1.amazonaws.com");function x(){v("close")}return(Y,o)=>_.isOpen?(i(),d("div",{key:0,class:"modal-overlay",onClick:z(x,["self"])},[e("div",he,[e("div",ge,[e("h2",null,y(s(C)?"Edit Provider":"Add Provider"),1),e("button",{type:"button",class:"close-btn",title:"Close",onClick:x}," × ")]),e("div",Ve,[e("form",{onSubmit:o[8]||(o[8]=z((...t)=>s(D)&&s(D)(...t),["prevent"]))},[e("div",Me,[o[11]||(o[11]=e("label",{for:"provider-name"},"Provider Name*",-1)),I(e("input",{id:"provider-name","onUpdate:modelValue":o[0]||(o[0]=t=>s(l).name=t),type:"text",placeholder:"e.g., AWS Bedrock",required:"",maxlength:"100"},null,512),[[N,s(l).name]])]),e("div",$e,[o[13]||(o[13]=e("label",{for:"provider-kind"},[w(" Compatibility* "),e("span",{class:"label-hint"},"Wire protocol & env-var convention")],-1)),I(e("select",{id:"provider-kind","onUpdate:modelValue":o[1]||(o[1]=t=>s(l).kind=t),disabled:s(C),title:s(C)?"Compatibility cannot be changed after creation":void 0,class:"kind-select",required:""},[...o[12]||(o[12]=[e("option",{value:"anthropic"}," Anthropic (Claude Code) ",-1),e("option",{value:"openai"}," OpenAI / Codex ",-1)])],8,Ce),[[X,s(l).kind]]),s(C)?(i(),d("p",Te," Compatibility cannot be changed after creation. ")):V("",!0)]),e("div",Ee,[e("label",Ie,[o[14]||(o[14]=w(" Base URL ",-1)),e("span",Pe,"("+y(j.value)+")",1)]),I(e("input",{id:"base-url","onUpdate:modelValue":o[2]||(o[2]=t=>s(l).baseUrl=t),type:"url",placeholder:F.value},null,8,Ue),[[N,s(l).baseUrl]])]),e("div",we,[e("label",Ae,[o[15]||(o[15]=w(" Auth Token ",-1)),e("span",Se,"("+y(q.value)+")",1)]),e("div",Ne,[I(e("input",{id:"auth-token","onUpdate:modelValue":o[3]||(o[3]=t=>s(l).authToken=t),type:s(b)?"text":"password",placeholder:"Your authentication token",onInput:o[4]||(o[4]=t=>E.value=!0)},null,40,Be),[[le,s(l).authToken]]),e("button",{type:"button",class:"toggle-visibility-btn",title:s(b)?"Hide":"Show",onClick:o[5]||(o[5]=t=>b.value=!s(b))},y(s(b)?"Hide":"Show"),9,De)])]),Z(ke,{models:s(f),onAdd:s(g),onRemove:s(a)},null,8,["models","onAdd","onRemove"]),e("details",Oe,[o[18]||(o[18]=e("summary",{class:"section-header"}," Advanced Settings ",-1)),e("div",xe,[e("div",Re,[o[16]||(o[16]=e("label",{for:"api-timeout"},"API Timeout (ms)",-1)),I(e("input",{id:"api-timeout","onUpdate:modelValue":o[6]||(o[6]=t=>s(l).apiTimeoutMs=t),type:"number",placeholder:"120000",min:"1000",step:"1000"},null,512),[[N,s(l).apiTimeoutMs,void 0,{number:!0}]])]),e("div",Fe,[o[17]||(o[17]=e("label",null,"Additional Environment Variables",-1)),e("div",Le,[(i(!0),d(L,null,K(s(l).additionalEnvVars,(t,u,c)=>(i(),d("div",{key:c,class:"env-var-row"},[I(e("input",{"onUpdate:modelValue":k=>s(n)[c]=k,type:"text",placeholder:"KEY",class:"env-key",onBlur:k=>s(H)(c,u)},null,40,Ke),[[N,s(n)[c]]]),I(e("input",{"onUpdate:modelValue":k=>s(l).additionalEnvVars[u]=k,type:"text",placeholder:"value",class:"env-value"},null,8,He),[[N,s(l).additionalEnvVars[u]]]),e("button",{type:"button",class:"remove-env-btn",title:"Remove",onClick:k=>s(B)(u)}," × ",8,je)]))),128)),e("button",{type:"button",class:"btn btn-sm btn-secondary",onClick:o[7]||(o[7]=(...t)=>s(r)&&s(r)(...t))}," + Add Variable ")])])])]),s(P)?(i(),d("div",qe,y(s(P)),1)):V("",!0),s(h)?(i(),d("div",{key:1,class:ne(["test-result",s(h).success?"success":"failure"])},[e("div",ze,[e("span",We,y(s(h).success?"✓":"✗"),1),e("span",Ye,y(s(h).message),1)]),s(h).details?(i(),d("div",Ge,[s(h).details.model?(i(),d("div",Je,[o[19]||(o[19]=w(" Model: ",-1)),e("code",null,y(s(h).details.model),1)])):V("",!0),s(h).details.code?(i(),d("div",Qe,[o[20]||(o[20]=w(" Error Code: ",-1)),e("code",null,y(s(h).details.code),1)])):V("",!0)])):V("",!0)],2)):V("",!0)],32)]),e("div",Xe,[e("button",{type:"button",class:"btn btn-secondary",disabled:s(M)||s(A)||!s(S),onClick:o[9]||(o[9]=(...t)=>s(R)&&s(R)(...t))},y(s(A)?"Testing...":"Test Connection"),9,Ze),e("div",et,[e("button",{type:"button",class:"btn btn-secondary",disabled:s(M),onClick:x}," Cancel ",8,tt),e("button",{type:"button",class:"btn btn-primary",disabled:s(M)||!s(U),onClick:o[10]||(o[10]=(...t)=>s(D)&&s(D)(...t))},y(s(M)?"Saving...":"Save"),9,st)])])])])):V("",!0)}},lt=W(ot,[["__scopeId","data-v-1d0519fa"]]),nt={class:"container"},at={key:0,class:"skeleton-list"},it={key:1,class:"error-message"},dt={key:2,class:"provider-list"},rt={class:"provider-header"},ut={class:"provider-title"},ct={key:0,class:"built-in-badge"},vt={class:"provider-actions"},mt=["disabled","onClick"],pt=["onClick"],ft=["onClick"],bt={class:"provider-details"},yt={key:0,class:"provider-detail"},_t={class:"detail-value"},kt={key:1,class:"provider-detail"},ht={class:"detail-value"},gt={key:2,class:"provider-detail"},Vt={class:"detail-value"},Mt={class:"modal confirm-modal"},$t={class:"modal-header"},Ct={class:"modal-body"},Tt={class:"modal-footer"},Et=["disabled"],It={__name:"ProvidersView",setup(_){const m=ee(),p=Q(),v=$(!1),l=$(null),f=$(null),n=$(!1),b=$(null);ae(()=>{m.fetchProviders()});function M(){l.value=null,v.value=!0}function A(g){l.value=g,v.value=!0}function P(){v.value=!1,l.value=null}function h(){P(),m.fetchProviders()}function E(g){return g.kind==="openai"?"Uses official OpenAI API":"Uses official Anthropic API"}async function C(g){b.value=g;try{const a=await m.testExistingProvider(g);a.success?p.success(`Connection successful (model: ${a.details.model})`):p.error(`Connection failed: ${a.message}`)}catch(a){p.error(`Test failed: ${a.message}`)}finally{b.value=null}}function U(g){f.value=g}async function S(){n.value=!0;try{await m.deleteProvider(f.value.id),p.success("Provider deleted"),f.value=null}catch(g){p.error(`Failed to delete provider: ${g.message}`)}finally{n.value=!1}}return(g,a)=>(i(),d("div",nt,[e("div",{class:"page-header"},[e("button",{class:"btn btn-primary",onClick:M},[...a[3]||(a[3]=[e("span",null,"+ Add Provider",-1)])])]),a[10]||(a[10]=e("p",{class:"page-description"}," Configure custom model providers to use the agent through alternative endpoints like AWS Bedrock, Google Vertex AI, or self-hosted proxies. ",-1)),s(m).loading?(i(),d("div",at,[(i(),d(L,null,K(3,r=>e("div",{key:r,class:"skeleton card",style:{height:"120px"}})),64))])):s(m).error?(i(),d("div",it,y(s(m).error),1)):(i(),d("div",dt,[(i(!0),d(L,null,K(s(m).providers,r=>(i(),d("div",{key:r.id,class:"provider-card card"},[e("div",rt,[e("div",ut,[e("h3",null,[w(y(r.name)+" ",1),r.isBuiltIn?(i(),d("span",ct,"Built-in")):V("",!0)])]),e("div",vt,[r.isBuiltIn?V("",!0):(i(),d("button",{key:0,class:"btn btn-sm",disabled:b.value===r.id,title:"Test Connection",onClick:B=>C(r.id)},y(b.value===r.id?"Testing...":"Test"),9,mt)),r.isBuiltIn?V("",!0):(i(),d("button",{key:1,class:"btn btn-sm",onClick:B=>A(r)}," Edit ",8,pt)),r.isBuiltIn?V("",!0):(i(),d("button",{key:2,class:"btn btn-sm btn-danger",onClick:B=>U(r)}," Delete ",8,ft))])]),e("div",bt,[r.baseUrl?(i(),d("div",yt,[a[4]||(a[4]=e("span",{class:"detail-label"},"Base URL:",-1)),e("code",_t,y(r.baseUrl),1)])):V("",!0),r.defaultSonnetModel?(i(),d("div",kt,[a[5]||(a[5]=e("span",{class:"detail-label"},"Default Sonnet Model:",-1)),e("code",ht,y(r.defaultSonnetModel),1)])):V("",!0),!r.baseUrl&&r.isBuiltIn?(i(),d("div",gt,[e("span",Vt,y(E(r)),1)])):V("",!0)])]))),128))])),Z(lt,{"is-open":v.value,provider:l.value,onClose:P,onSaved:h},null,8,["is-open","provider"]),f.value?(i(),d("div",{key:3,class:"modal-overlay",onClick:a[2]||(a[2]=z(r=>f.value=null,["self"]))},[e("div",Mt,[e("div",$t,[a[6]||(a[6]=e("h2",null,"Delete Provider",-1)),e("button",{type:"button",class:"close-btn",onClick:a[0]||(a[0]=r=>f.value=null)}," × ")]),e("div",Ct,[e("p",null,[a[7]||(a[7]=w("Are you sure you want to delete ",-1)),e("strong",null,y(f.value.name),1),a[8]||(a[8]=w("?",-1))]),a[9]||(a[9]=e("p",{class:"warning-text"}," This action cannot be undone. ",-1))]),e("div",Tt,[e("button",{type:"button",class:"btn btn-secondary",onClick:a[1]||(a[1]=r=>f.value=null)}," Cancel "),e("button",{type:"button",class:"btn btn-danger",disabled:n.value,onClick:S},y(n.value?"Deleting...":"Delete"),9,Et)])])])):V("",!0)]))}},At=W(It,[["__scopeId","data-v-6db72ff4"]]);export{At as default};
@@ -1 +0,0 @@
1
- .models-section[data-v-3aa7217a]{margin-bottom:1.25rem;border:1px solid var(--color-border);border-radius:.25rem;overflow:hidden}.models-header[data-v-3aa7217a]{display:flex;align-items:baseline;gap:.75rem;padding:.75rem 1rem;background:var(--color-background-soft);border-bottom:1px solid var(--color-border)}.models-title[data-v-3aa7217a]{font-weight:500;font-size:.875rem;color:var(--color-text)}.models-hint[data-v-3aa7217a]{font-size:.8125rem;color:var(--color-text-soft)}.models-list[data-v-3aa7217a]{padding:.5rem .75rem}.model-row[data-v-3aa7217a]{display:grid;grid-template-columns:1fr 10rem 6.5rem 2rem;gap:.5rem;align-items:center;margin-bottom:.375rem}.model-row-header[data-v-3aa7217a]{font-size:.75rem;font-weight:500;color:var(--color-text-soft);margin-bottom:.25rem}.model-row-header span[data-v-3aa7217a]{padding:0 .25rem}.model-input[data-v-3aa7217a]{padding:.4rem .6rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-size:.8125rem}.model-input[data-v-3aa7217a]:focus{outline:none;border-color:var(--color-primary)}.tier-select[data-v-3aa7217a]{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;cursor:pointer}.remove-model-btn[data-v-3aa7217a]{background:none;border:1px solid var(--color-border);color:var(--color-text-soft);font-size:1.125rem;cursor:pointer;padding:.2rem .4rem;line-height:1;border-radius:.25rem;text-align:center}.remove-model-btn[data-v-3aa7217a]:hover{color:var(--color-danger, #ef4444);border-color:var(--color-danger, #ef4444)}.models-empty[data-v-3aa7217a]{padding:.75rem 1rem;font-size:.8125rem;color:var(--color-text-soft);font-style:italic}.add-model-btn[data-v-3aa7217a]{margin:.5rem .75rem .75rem}.btn[data-v-3aa7217a]{padding:.5rem 1rem;border-radius:.25rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-sm[data-v-3aa7217a]{padding:.375rem .75rem;font-size:.8125rem}.btn-secondary[data-v-3aa7217a]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-3aa7217a]:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-background-soft)}.modal-overlay[data-v-1d0519fa]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-1d0519fa]{background:var(--color-background);border:1px solid var(--color-border);border-radius:.5rem;width:100%;max-width:680px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.modal-header[data-v-1d0519fa]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-header h2[data-v-1d0519fa]{margin:0;font-size:1.125rem;font-weight:600}.close-btn[data-v-1d0519fa]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;cursor:pointer;padding:.25rem;line-height:1;border-radius:.25rem}.close-btn[data-v-1d0519fa]:hover{color:var(--color-text);background:var(--color-background-soft)}.modal-body[data-v-1d0519fa]{padding:1.25rem;overflow-y:auto}.form-group[data-v-1d0519fa]{margin-bottom:1.25rem}.form-group label[data-v-1d0519fa]{display:block;margin-bottom:.5rem;font-weight:500;font-size:.875rem;color:var(--color-text)}.label-hint[data-v-1d0519fa]{font-weight:400;color:var(--color-text-soft);font-size:.8125rem}.form-group input[type=text][data-v-1d0519fa],.form-group input[type=url][data-v-1d0519fa],.form-group input[type=password][data-v-1d0519fa],.form-group input[type=number][data-v-1d0519fa],.form-group select.kind-select[data-v-1d0519fa]{width:100%;padding:.5rem .75rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-size:.875rem}.form-group input[data-v-1d0519fa]:focus,.form-group select.kind-select[data-v-1d0519fa]:focus{outline:none;border-color:var(--color-primary)}.form-group select.kind-select[data-v-1d0519fa]:disabled{opacity:.6;cursor:not-allowed}.field-note[data-v-1d0519fa]{margin:.375rem 0 0;font-size:.75rem;color:var(--color-text-soft);font-style:italic}.token-input-wrapper[data-v-1d0519fa]{display:flex;gap:.5rem}.token-input-wrapper input[data-v-1d0519fa]{flex:1}.toggle-visibility-btn[data-v-1d0519fa]{padding:.5rem 1rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-size:.8125rem;cursor:pointer;white-space:nowrap}.toggle-visibility-btn[data-v-1d0519fa]:hover{background:var(--color-background-soft)}.expandable-section[data-v-1d0519fa]{margin-bottom:1.25rem;border:1px solid var(--color-border);border-radius:.25rem}.section-header[data-v-1d0519fa]{padding:.75rem 1rem;background:var(--color-background-soft);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;font-size:.875rem;color:var(--color-text)}.section-header[data-v-1d0519fa]:hover{background:var(--color-background-mute)}.section-content[data-v-1d0519fa]{padding:1rem}.env-vars-list[data-v-1d0519fa]{display:flex;flex-direction:column;gap:.5rem}.env-var-row[data-v-1d0519fa]{display:flex;gap:.5rem}.env-key[data-v-1d0519fa],.env-value[data-v-1d0519fa]{padding:.5rem .75rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-size:.875rem;font-family:var(--font-mono)}.env-key[data-v-1d0519fa]{flex:0 0 150px}.env-value[data-v-1d0519fa]{flex:1}.env-key[data-v-1d0519fa]:focus,.env-value[data-v-1d0519fa]:focus{outline:none;border-color:var(--color-primary)}.remove-env-btn[data-v-1d0519fa]{background:none;border:1px solid var(--color-border);color:var(--color-text-soft);font-size:1.25rem;cursor:pointer;padding:.25rem .5rem;line-height:1;border-radius:.25rem}.remove-env-btn[data-v-1d0519fa]:hover{color:var(--color-danger, #ef4444);border-color:var(--color-danger, #ef4444)}.error-message[data-v-1d0519fa]{margin-top:1rem;padding:.75rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.25rem;color:var(--color-danger, #ef4444);font-size:.875rem}.test-result[data-v-1d0519fa]{margin-top:1rem;padding:.75rem;border-radius:.25rem;font-size:.875rem}.test-result.success[data-v-1d0519fa]{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:var(--color-success, #22c55e)}.test-result.failure[data-v-1d0519fa]{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:var(--color-danger, #ef4444)}.test-result-header[data-v-1d0519fa]{display:flex;align-items:center;gap:.5rem;font-weight:500}.test-icon[data-v-1d0519fa]{font-size:1.125rem}.test-details[data-v-1d0519fa]{margin-top:.5rem;padding-top:.5rem;border-top:1px solid currentColor;opacity:.8}.test-detail[data-v-1d0519fa]{margin-top:.25rem}.test-detail code[data-v-1d0519fa]{font-family:var(--font-mono);font-size:.8125rem}.modal-footer[data-v-1d0519fa]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-top:1px solid var(--color-border);background:var(--color-background-soft)}.footer-actions[data-v-1d0519fa]{display:flex;gap:.75rem}.btn[data-v-1d0519fa]{padding:.5rem 1rem;border-radius:.25rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.btn[data-v-1d0519fa]:disabled{opacity:.5;cursor:not-allowed}.btn-sm[data-v-1d0519fa]{padding:.375rem .75rem;font-size:.8125rem}.btn-secondary[data-v-1d0519fa]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-1d0519fa]:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-background-soft)}.btn-primary[data-v-1d0519fa]{background:var(--color-primary);border:1px solid var(--color-primary);color:#fff}.btn-primary[data-v-1d0519fa]:hover:not(:disabled){filter:brightness(1.1)}.page-header[data-v-6db72ff4]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:.5rem}.page-description[data-v-6db72ff4]{color:var(--color-text-soft);margin:0 0 1.5rem;font-size:.875rem;line-height:1.5}.skeleton-list[data-v-6db72ff4]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-6db72ff4]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.provider-list[data-v-6db72ff4]{display:flex;flex-direction:column;gap:1rem}.provider-card[data-v-6db72ff4]{padding:1.25rem}.provider-header[data-v-6db72ff4]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;gap:1rem}.provider-title h3[data-v-6db72ff4]{margin:0;font-size:1rem;display:flex;align-items:center;gap:.5rem}.built-in-badge[data-v-6db72ff4]{display:inline-block;padding:.125rem .5rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:.25rem;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;color:var(--color-text-soft)}.provider-actions[data-v-6db72ff4]{display:flex;gap:.5rem;flex-shrink:0}.provider-details[data-v-6db72ff4]{display:flex;flex-direction:column;gap:.5rem}.provider-detail[data-v-6db72ff4]{display:flex;gap:.5rem;font-size:.875rem}.detail-label[data-v-6db72ff4]{color:var(--color-text-soft);font-weight:500}.detail-value[data-v-6db72ff4]{color:var(--color-text);font-family:var(--font-mono);font-size:.8125rem}.btn-sm[data-v-6db72ff4]{padding:.375rem .75rem;font-size:.8125rem}.btn-danger[data-v-6db72ff4]{background:var(--color-danger, #ef4444);border:1px solid var(--color-danger, #ef4444);color:#fff}.btn-danger[data-v-6db72ff4]:hover:not(:disabled){filter:brightness(1.1)}.modal-overlay[data-v-6db72ff4]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-6db72ff4]{background:var(--color-background);border:1px solid var(--color-border);border-radius:.5rem;width:100%;max-width:450px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.confirm-modal[data-v-6db72ff4]{max-width:400px}.modal-header[data-v-6db72ff4]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-header h2[data-v-6db72ff4]{margin:0;font-size:1.125rem;font-weight:600}.close-btn[data-v-6db72ff4]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;cursor:pointer;padding:.25rem;line-height:1;border-radius:.25rem}.close-btn[data-v-6db72ff4]:hover{color:var(--color-text);background:var(--color-background-soft)}.modal-body[data-v-6db72ff4]{padding:1.25rem}.modal-body p[data-v-6db72ff4]{margin:0 0 .75rem}.warning-text[data-v-6db72ff4]{color:var(--color-warning, #f59e0b);font-size:.875rem;font-weight:500}.modal-footer[data-v-6db72ff4]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid var(--color-border);background:var(--color-background-soft)}
@@ -1 +0,0 @@
1
- .dialog-overlay[data-v-f2c13fd9]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1015}.dialog[data-v-f2c13fd9]{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-lg, 12px);width:100%;max-width:500px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 25px -5px #0000004d}.dialog-header[data-v-f2c13fd9]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.dialog-title[data-v-f2c13fd9]{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.close-button[data-v-f2c13fd9]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:.25rem;line-height:1}.close-button[data-v-f2c13fd9]:hover{color:var(--color-text)}.dialog-form[data-v-f2c13fd9]{display:flex;flex-direction:column;flex:1;min-height:0}.dialog-content[data-v-f2c13fd9]{flex:1;overflow-y:auto;padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.form-group[data-v-f2c13fd9]{display:flex;flex-direction:column;gap:.25rem}.form-label[data-v-f2c13fd9]{font-size:.875rem;font-weight:500;color:var(--color-text)}.form-input[data-v-f2c13fd9],.form-textarea[data-v-f2c13fd9]{padding:.625rem .75rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);font-size:.875rem;font-family:inherit;transition:border-color .15s}.form-input[data-v-f2c13fd9]:focus,.form-textarea[data-v-f2c13fd9]:focus{outline:none;border-color:var(--color-accent)}.form-textarea[data-v-f2c13fd9]{resize:vertical;min-height:80px}.form-help[data-v-f2c13fd9]{font-size:.75rem;color:var(--color-text-soft)}.form-help.indent[data-v-f2c13fd9]{margin-left:1.5rem}.form-error[data-v-f2c13fd9]{font-size:.75rem;color:var(--color-danger, #ef4444)}.checkbox-label[data-v-f2c13fd9],.radio-label[data-v-f2c13fd9]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.checkbox-input[data-v-f2c13fd9],.radio-input[data-v-f2c13fd9]{width:1rem;height:1rem;accent-color:var(--color-accent)}.checkbox-text[data-v-f2c13fd9],.radio-text[data-v-f2c13fd9]{font-size:.875rem;color:var(--color-text)}.radio-group[data-v-f2c13fd9]{display:flex;flex-direction:column;gap:.5rem;margin-top:.25rem}.error-message[data-v-f2c13fd9]{padding:.75rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--border-radius);color:#ef4444;font-size:.875rem}.dialog-footer[data-v-f2c13fd9]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;border-top:1px solid var(--color-border);flex-shrink:0}.btn[data-v-f2c13fd9]{padding:.625rem 1rem;border-radius:var(--border-radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-secondary[data-v-f2c13fd9]{background:var(--color-background-soft);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-f2c13fd9]:hover{background:var(--color-background-mute)}.btn-primary[data-v-f2c13fd9]{background:var(--color-accent, #22d3ee);border:1px solid var(--color-accent, #22d3ee);color:var(--color-background, #0d1117)}.btn-primary[data-v-f2c13fd9]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-f2c13fd9]:disabled{opacity:.5;cursor:not-allowed}.settings-overlay[data-v-9fffa8ff]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1010}.settings-panel[data-v-9fffa8ff]{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-lg, 12px);width:100%;max-width:600px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 25px -5px #0000004d}.settings-header[data-v-9fffa8ff]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.settings-title[data-v-9fffa8ff]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-button[data-v-9fffa8ff]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:.25rem;line-height:1}.close-button[data-v-9fffa8ff]:hover{color:var(--color-text)}.settings-content[data-v-9fffa8ff]{flex:1;overflow-y:auto;padding:1rem 1.25rem}.section[data-v-9fffa8ff]{margin-bottom:1.5rem}.section[data-v-9fffa8ff]:last-child{margin-bottom:0}.section-header[data-v-9fffa8ff]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.section-title[data-v-9fffa8ff]{margin:0;font-size:1rem;font-weight:600;color:var(--color-text)}.add-button[data-v-9fffa8ff]{background:var(--color-accent, #22d3ee);color:#000;border:none;padding:.5rem 1rem;border-radius:var(--border-radius);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .15s}.add-button[data-v-9fffa8ff]:hover{background:var(--color-accent-hover, #06b6d4);transform:translateY(-1px)}.loading-state[data-v-9fffa8ff],.empty-state[data-v-9fffa8ff]{padding:1rem;text-align:center;color:var(--color-text-soft);font-size:.875rem;background:var(--color-background-soft);border-radius:var(--border-radius)}.response-list[data-v-9fffa8ff]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.response-item[data-v-9fffa8ff]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);gap:1rem}.response-info[data-v-9fffa8ff]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.response-label[data-v-9fffa8ff]{font-weight:600;color:var(--color-text);font-size:.875rem}.response-content[data-v-9fffa8ff]{font-size:.75rem;color:var(--color-text-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auto-badge[data-v-9fffa8ff]{display:inline-flex;align-items:center;padding:.125rem .375rem;background:#f59e0b26;color:#f59e0b;border-radius:4px;font-size:.625rem;font-weight:500;text-transform:uppercase;width:fit-content}.response-actions[data-v-9fffa8ff]{display:flex;gap:.375rem;flex-shrink:0}.action-button[data-v-9fffa8ff]{background:var(--color-background-mute);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:.375rem;cursor:pointer;color:var(--color-text-soft);transition:all .15s;display:flex;align-items:center;justify-content:center}.action-button[data-v-9fffa8ff]:hover{color:var(--color-text);background:var(--color-background)}.action-button[data-v-9fffa8ff]:disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.action-button.action-danger[data-v-9fffa8ff]:hover{color:#ef4444;background:#ef44441a;border-color:#ef44444d}.action-icon[data-v-9fffa8ff]{width:1rem;height:1rem}.confirm-overlay[data-v-9fffa8ff]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1020}.confirm-dialog[data-v-9fffa8ff]{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-lg, 12px);padding:1.5rem;max-width:400px;width:100%}.confirm-message[data-v-9fffa8ff]{margin:0 0 1rem;color:var(--color-text);font-size:.9375rem}.confirm-actions[data-v-9fffa8ff]{display:flex;justify-content:flex-end;gap:.75rem}.btn[data-v-9fffa8ff]{padding:.625rem 1rem;border-radius:var(--border-radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.btn-secondary[data-v-9fffa8ff]{background:var(--color-background-soft);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-9fffa8ff]:hover{background:var(--color-background-mute)}.btn-danger[data-v-9fffa8ff]{background:#ef4444;border:1px solid #ef4444;color:#fff}.btn-danger[data-v-9fffa8ff]:hover{background:#dc2626;border-color:#dc2626}
@@ -1 +0,0 @@
1
- import{L as F,_ as T,l as L,a as r,G as M,c as d,b as e,t as y,j as G,m as I,v as q,i as R,q as z,H as O,V,x as w,n as j,I as H,F as E,r as A,d as K}from"./index-BQL_L4gL.js";import{a as k}from"./ApiClient-CWbXWDUY.js";const Je=F("projectDefaults",{state:()=>({defaultsByProjectId:{},loading:!1,error:null}),getters:{getDefaultsForProject:l=>o=>l.defaultsByProjectId[o]||null},actions:{async fetchDefaults(l){this.loading=!0,this.error=null;try{const o=await k.getProjectSessionDefaults(l);return this.defaultsByProjectId[l]=o,o}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async updateDefaults(l,o){this.loading=!0,this.error=null;try{const s=await k.updateProjectSessionDefaults(l,o);return this.defaultsByProjectId[l]=s,s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async resetDefaults(l){this.loading=!0,this.error=null;try{return await k.resetProjectSessionDefaults(l),this.defaultsByProjectId[l]={mode:null,thinkingEnabled:null,effortLevel:null,startImmediately:null,gitMode:null,gitBranch:null,model:null},this.defaultsByProjectId[l]}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},clearProjectDefaults(l){delete this.defaultsByProjectId[l]},clearAllDefaults(){this.defaultsByProjectId={}}}}),U=F("quickResponses",{state:()=>({projectResponses:[],globalResponses:[],loading:!1,error:null,currentProjectId:null}),getters:{allResponses:l=>[...l.projectResponses,...l.globalResponses],hasResponses:l=>l.projectResponses.length>0||l.globalResponses.length>0},actions:{async fetchForProject(l){this.loading=!0,this.error=null,this.currentProjectId=l;try{const o=await k.getQuickResponses(l);return this.projectResponses=o.project,this.globalResponses=o.global,o}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async createResponse(l,o){this.loading=!0,this.error=null;try{const s=await k.createQuickResponse(l,o);return s.projectId===null?this.globalResponses.push(s):this.projectResponses.push(s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async updateResponse(l,o){this.loading=!0,this.error=null;try{const s=await k.updateQuickResponse(l,o),c=this.projectResponses.findIndex(p=>p.id===l);if(c!==-1)this.projectResponses[c]=s;else{const p=this.globalResponses.findIndex(_=>_.id===l);p!==-1&&(this.globalResponses[p]=s)}return s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteResponse(l){this.loading=!0,this.error=null;try{await k.deleteQuickResponse(l);const o=this.projectResponses.findIndex(s=>s.id===l);if(o!==-1)this.projectResponses.splice(o,1);else{const s=this.globalResponses.findIndex(c=>c.id===l);s!==-1&&this.globalResponses.splice(s,1)}}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async reorderResponses(l,o){this.loading=!0,this.error=null;try{const s=o.map((c,p)=>({id:c,sortOrder:p}));if(l){const c=await k.reorderQuickResponses(l,s);this.projectResponses=c.project,this.globalResponses=c.global}else{const c=await k.reorderGlobalQuickResponses(s);this.globalResponses=c}}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},clearResponses(){this.projectResponses=[],this.globalResponses=[],this.currentProjectId=null,this.error=null}}}),Y={class:"dialog-header"},J={class:"dialog-content"},W={class:"form-group"},X={key:0,class:"form-error"},Z={class:"form-group"},ee={key:0,class:"form-error"},se={class:"form-group"},te={class:"form-group"},le={class:"checkbox-label"},oe={key:0,class:"form-group"},ne={class:"radio-group"},ae={class:"radio-label"},ie={class:"radio-label"},re={key:1,class:"error-message"},ue={class:"dialog-footer"},ce=["disabled"],de={__name:"QuickResponseDialog",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,required:!0},editingResponse:{type:Object,default:null},defaultIsGlobal:{type:Boolean,default:!1}},emits:["close","saved"],setup(l,{emit:o}){const s=l,c=o,p=U(),_=j(null),v=`dialog-title-${Math.random().toString(36).slice(2)}`,n=j({label:"",content:"",category:"",autoSubmit:!1,isGlobal:!1}),g=j(!1),h=j(null),C=w(()=>!!s.editingResponse),S=w(()=>n.value.label&&n.value.label.length>50?"Label must be 50 characters or less":null),x=w(()=>n.value.content&&n.value.content.length>1e4?"Content must be 10,000 characters or less":null),P=w(()=>n.value.label.trim().length>0&&n.value.label.length<=50&&n.value.content.trim().length>0&&n.value.content.length<=1e4);L(()=>s.isOpen,b=>{b&&(s.editingResponse?n.value={label:s.editingResponse.label||"",content:s.editingResponse.content||"",category:s.editingResponse.category||"",autoSubmit:s.editingResponse.autoSubmit||!1,isGlobal:s.editingResponse.projectId===null}:n.value={label:"",content:"",category:"",autoSubmit:!1,isGlobal:s.defaultIsGlobal},h.value=null,H(()=>{var t;(t=_.value)==null||t.focus()}))}),L(()=>s.isOpen,b=>{if(b){const t=a=>{a.key==="Escape"&&$()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}});function $(){c("close")}async function B(){if(!(!P.value||g.value)){g.value=!0,h.value=null;try{const b={label:n.value.label.trim(),content:n.value.content,category:n.value.category.trim()||null,autoSubmit:n.value.autoSubmit};C.value?await p.updateResponse(s.editingResponse.id,b):(b.isGlobal=n.value.isGlobal,await p.createResponse(s.projectId,b)),c("saved"),c("close")}catch(b){h.value=b.message||"Failed to save quick response"}finally{g.value=!1}}}return(b,t)=>(r(),M(V,{to:"body"},[l.isOpen?(r(),d("div",{key:0,class:"dialog-overlay",onClick:G($,["self"])},[e("div",{class:"dialog",role:"dialog","aria-modal":"true","aria-labelledby":v},[e("div",Y,[e("h2",{id:v,class:"dialog-title"},y(C.value?"Edit Quick Response":"Add Quick Response"),1),e("button",{class:"close-button","aria-label":"Close dialog",onClick:$}," × ")]),e("form",{class:"dialog-form",onSubmit:G(B,["prevent"])},[e("div",J,[e("div",W,[t[7]||(t[7]=e("label",{for:"qr-label",class:"form-label"},"Label *",-1)),I(e("input",{id:"qr-label",ref_key:"labelInput",ref:_,"onUpdate:modelValue":t[0]||(t[0]=a=>n.value.label=a),type:"text",class:"form-input",placeholder:"e.g., Yes, LGTM, Run tests",maxlength:"50",required:"",onBlur:t[1]||(t[1]=a=>n.value.label=n.value.label.trim())},null,544),[[q,n.value.label]]),t[8]||(t[8]=e("span",{class:"form-help"},"Short text shown on the button (max 50 characters)",-1)),S.value?(r(),d("span",X,y(S.value),1)):R("",!0)]),e("div",Z,[t[9]||(t[9]=e("label",{for:"qr-content",class:"form-label"},"Content *",-1)),I(e("textarea",{id:"qr-content","onUpdate:modelValue":t[2]||(t[2]=a=>n.value.content=a),class:"form-textarea",placeholder:"The full message that will be inserted into the prompt",rows:"4",maxlength:"10000",required:""},null,512),[[q,n.value.content]]),t[10]||(t[10]=e("span",{class:"form-help"},"The full message that will be inserted (max 10,000 characters)",-1)),x.value?(r(),d("span",ee,y(x.value),1)):R("",!0)]),e("div",se,[t[11]||(t[11]=e("label",{for:"qr-category",class:"form-label"},"Category (optional)",-1)),I(e("input",{id:"qr-category","onUpdate:modelValue":t[3]||(t[3]=a=>n.value.category=a),type:"text",class:"form-input",placeholder:"e.g., feedback, commands",maxlength:"50"},null,512),[[q,n.value.category]]),t[12]||(t[12]=e("span",{class:"form-help"},"Optional grouping for organization",-1))]),e("div",te,[e("label",le,[I(e("input",{"onUpdate:modelValue":t[4]||(t[4]=a=>n.value.autoSubmit=a),type:"checkbox",class:"checkbox-input"},null,512),[[z,n.value.autoSubmit]]),t[13]||(t[13]=e("span",{class:"checkbox-text"},"Auto-submit",-1))]),t[14]||(t[14]=e("span",{class:"form-help indent"},"Send immediately when clicked (no confirmation)",-1))]),C.value?R("",!0):(r(),d("div",oe,[t[17]||(t[17]=e("span",{class:"form-label"},"Scope",-1)),e("div",ne,[e("label",ae,[I(e("input",{"onUpdate:modelValue":t[5]||(t[5]=a=>n.value.isGlobal=a),type:"radio",value:!1,class:"radio-input"},null,512),[[O,n.value.isGlobal]]),t[15]||(t[15]=e("span",{class:"radio-text"},"Project-specific",-1))]),e("label",ie,[I(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>n.value.isGlobal=a),type:"radio",value:!0,class:"radio-input"},null,512),[[O,n.value.isGlobal]]),t[16]||(t[16]=e("span",{class:"radio-text"},"Global (all projects)",-1))])])])),h.value?(r(),d("div",re,y(h.value),1)):R("",!0)]),e("div",ue,[e("button",{type:"button",class:"btn btn-secondary",onClick:$}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:!P.value||g.value},y(g.value?"Saving...":C.value?"Save Changes":"Save Quick Response"),9,ce)])],32)])])):R("",!0)]))}},pe=T(de,[["__scopeId","data-v-f2c13fd9"]]),be={class:"settings-panel",role:"dialog","aria-modal":"true"},fe={class:"settings-header"},ve={class:"settings-content"},ge={class:"section"},he={class:"section-header"},me={key:0,class:"loading-state"},ye={key:1,class:"empty-state"},ke={key:2,class:"response-list"},Re={class:"response-info"},_e={class:"response-label"},je={class:"response-content"},Ce={key:0,class:"auto-badge"},we={class:"response-actions"},$e=["disabled","onClick"],Ie=["disabled","onClick"],Se=["onClick"],xe=["onClick"],De={class:"section"},Pe={class:"section-header"},Be={key:0,class:"loading-state"},Ge={key:1,class:"empty-state"},Qe={key:2,class:"response-list"},qe={class:"response-info"},Ee={class:"response-label"},Me={class:"response-content"},Ve={key:0,class:"auto-badge"},Le={class:"response-actions"},Oe=["disabled","onClick"],Ae=["disabled","onClick"],Fe=["onClick"],Te=["onClick"],Ue={class:"confirm-dialog"},Ne={class:"confirm-message"},ze={class:"confirm-actions"},He={__name:"QuickResponseSettings",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,required:!0}},emits:["close"],setup(l,{expose:o}){const s=U(),c=j(!1),p=j(null),_=j(!1),v=j(null),n=w(()=>s.loading),g=w(()=>s.projectResponses),h=w(()=>s.globalResponses);function C(a){return a.length<=60?a:`${a.substring(0,60)}...`}function S(a){p.value=null,_.value=a,c.value=!0}function x(a){p.value=a,_.value=a.projectId===null,c.value=!0}function P(){c.value=!1,p.value=null}function $(){}function B(a){v.value=a}async function b(){if(v.value)try{await s.deleteResponse(v.value.id),v.value=null}catch(a){console.error("Failed to delete response:",a)}}async function t(a,u,i,m){const f=i+m;if(f<0||f>=u.length)return;const D=[...u];[D[i],D[f]]=[D[f],D[i]];const N=D.map(Q=>Q.id);try{await s.reorderResponses(a,N)}catch(Q){console.error("Failed to reorder responses:",Q)}}return o({moveResponse:t}),(a,u)=>(r(),d(E,null,[(r(),M(V,{to:"body"},[l.isOpen?(r(),d("div",{key:0,class:"settings-overlay",onClick:u[3]||(u[3]=G(i=>a.$emit("close"),["self"]))},[e("div",be,[e("div",fe,[u[6]||(u[6]=e("h2",{class:"settings-title"}," Quick Responses ",-1)),e("button",{class:"close-button","aria-label":"Close settings",onClick:u[0]||(u[0]=i=>a.$emit("close"))}," × ")]),e("div",ve,[e("div",ge,[e("div",he,[u[7]||(u[7]=e("h3",{class:"section-title"}," Project Responses ",-1)),e("button",{class:"add-button",onClick:u[1]||(u[1]=i=>S(!1))}," + Add ")]),n.value?(r(),d("div",me," Loading... ")):g.value.length===0?(r(),d("div",ye," No project-specific quick responses yet. ")):(r(),d("ul",ke,[(r(!0),d(E,null,A(g.value,(i,m)=>(r(),d("li",{key:i.id,class:"response-item"},[e("div",Re,[e("span",_e,y(i.label),1),e("span",je,y(C(i.content)),1),i.autoSubmit?(r(),d("span",Ce,"Auto-submit")):R("",!0)]),e("div",we,[e("button",{class:"action-button",disabled:m===0,title:"Move up",onClick:f=>t(l.projectId,g.value,m,-1)}," ↑ ",8,$e),e("button",{class:"action-button",disabled:m===g.value.length-1,title:"Move down",onClick:f=>t(l.projectId,g.value,m,1)}," ↓ ",8,Ie),e("button",{class:"action-button",title:"Edit","aria-label":"Edit",onClick:f=>x(i)}," ✏️ ",8,Se),e("button",{class:"action-button action-danger",title:"Delete",onClick:f=>B(i)}," 🗑️ ",8,xe)])]))),128))]))]),e("div",De,[e("div",Pe,[u[8]||(u[8]=e("h3",{class:"section-title"}," Global Responses ",-1)),e("button",{class:"add-button",onClick:u[2]||(u[2]=i=>S(!0))}," + Add ")]),n.value?(r(),d("div",Be," Loading... ")):h.value.length===0?(r(),d("div",Ge," No global quick responses yet. Global responses appear in all projects. ")):(r(),d("ul",Qe,[(r(!0),d(E,null,A(h.value,(i,m)=>(r(),d("li",{key:i.id,class:"response-item"},[e("div",qe,[e("span",Ee,y(i.label),1),e("span",Me,y(C(i.content)),1),i.autoSubmit?(r(),d("span",Ve,"Auto-submit")):R("",!0)]),e("div",Le,[e("button",{class:"action-button",disabled:m===0,title:"Move up",onClick:f=>t(null,h.value,m,-1)}," ↑ ",8,Oe),e("button",{class:"action-button",disabled:m===h.value.length-1,title:"Move down",onClick:f=>t(null,h.value,m,1)}," ↓ ",8,Ae),e("button",{class:"action-button",title:"Edit","aria-label":"Edit",onClick:f=>x(i)}," ✏️ ",8,Fe),e("button",{class:"action-button action-danger",title:"Delete",onClick:f=>B(i)}," 🗑️ ",8,Te)])]))),128))]))])])])])):R("",!0)])),K(pe,{"is-open":c.value,"project-id":l.projectId,"editing-response":p.value,"default-is-global":_.value,onClose:P,onSaved:$},null,8,["is-open","project-id","editing-response","default-is-global"]),(r(),M(V,{to:"body"},[v.value?(r(),d("div",{key:0,class:"confirm-overlay",onClick:u[5]||(u[5]=G(i=>v.value=null,["self"]))},[e("div",Ue,[e("p",Ne,' Are you sure you want to delete "'+y(v.value.label)+'"? ',1),e("div",ze,[e("button",{class:"btn btn-secondary",onClick:u[4]||(u[4]=i=>v.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:b}," Delete ")])])])):R("",!0)]))],64))}},We=T(He,[["__scopeId","data-v-9fffa8ff"]]);export{We as Q,U as a,Je as u};
@@ -1 +0,0 @@
1
- .markdown-viewer[data-v-302edca0]{line-height:1.6;word-wrap:break-word}.markdown-viewer[data-v-302edca0] h1,.markdown-viewer[data-v-302edca0] h2,.markdown-viewer[data-v-302edca0] h3,.markdown-viewer[data-v-302edca0] h4,.markdown-viewer[data-v-302edca0] h5,.markdown-viewer[data-v-302edca0] h6{margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.25;color:var(--color-text)}.markdown-viewer[data-v-302edca0] h1{font-size:1.75em;border-bottom:1px solid var(--color-border);padding-bottom:.3em}.markdown-viewer[data-v-302edca0] h2{font-size:1.5em;border-bottom:1px solid var(--color-border);padding-bottom:.3em}.markdown-viewer[data-v-302edca0] h3{font-size:1.25em}.markdown-viewer[data-v-302edca0] h4{font-size:1em}.markdown-viewer[data-v-302edca0] h5{font-size:.875em}.markdown-viewer[data-v-302edca0] h6{font-size:.85em;color:var(--color-text-soft)}.markdown-viewer[data-v-302edca0]>h1:first-child,.markdown-viewer[data-v-302edca0]>h2:first-child,.markdown-viewer[data-v-302edca0]>h3:first-child,.markdown-viewer[data-v-302edca0]>h4:first-child,.markdown-viewer[data-v-302edca0]>h5:first-child,.markdown-viewer[data-v-302edca0]>h6:first-child{margin-top:0}.markdown-viewer[data-v-302edca0] p{margin-top:0;margin-bottom:1em}.markdown-viewer[data-v-302edca0] a{color:var(--color-primary);text-decoration:none}.markdown-viewer[data-v-302edca0] a:hover{text-decoration:underline}.markdown-viewer[data-v-302edca0] ul,.markdown-viewer[data-v-302edca0] ol{margin-top:0;margin-bottom:1em;padding-left:2em}.markdown-viewer[data-v-302edca0] ul{list-style-type:disc}.markdown-viewer[data-v-302edca0] ol{list-style-type:decimal}.markdown-viewer[data-v-302edca0] li{margin-bottom:.25em}.markdown-viewer[data-v-302edca0] li>ul,.markdown-viewer[data-v-302edca0] li>ol{margin-top:.25em;margin-bottom:0}.markdown-viewer[data-v-302edca0] blockquote{margin:0 0 1em;padding:.5em 1em;border-left:4px solid var(--color-border);background-color:var(--color-background-soft);color:var(--color-text-soft)}.markdown-viewer[data-v-302edca0] blockquote p:last-child{margin-bottom:0}.markdown-viewer[data-v-302edca0] code{font-family:var(--font-mono);font-size:.875em;padding:.2em .4em;background-color:var(--color-background-mute);border-radius:3px}.markdown-viewer[data-v-302edca0] pre{margin:0 0 1em;padding:1em;overflow-x:auto;background-color:var(--color-background-mute);border-radius:var(--border-radius);border:1px solid var(--color-border)}.markdown-viewer[data-v-302edca0] pre code{padding:0;background-color:transparent;border-radius:0;font-size:.8125em;line-height:1.5}.markdown-viewer[data-v-302edca0] table{width:100%;margin-bottom:1em;border-collapse:collapse;border-spacing:0}.markdown-viewer[data-v-302edca0] th,.markdown-viewer[data-v-302edca0] td{padding:.5em 1em;border:1px solid var(--color-border);text-align:left}.markdown-viewer[data-v-302edca0] th{font-weight:600;background-color:var(--color-background-soft)}.markdown-viewer[data-v-302edca0] tr:nth-child(2n){background-color:var(--color-background-soft)}.markdown-viewer[data-v-302edca0] hr{height:1px;margin:1.5em 0;background-color:var(--color-border);border:none}.markdown-viewer[data-v-302edca0] img{max-width:100%;height:auto;border-radius:var(--border-radius)}.markdown-viewer[data-v-302edca0] strong{font-weight:600}.markdown-viewer[data-v-302edca0] em{font-style:italic}.markdown-viewer[data-v-302edca0] del,.markdown-viewer[data-v-302edca0] s{text-decoration:line-through;color:var(--color-text-soft)}.markdown-viewer[data-v-302edca0] .hljs{color:#c9d1d9;background:var(--color-background-mute)}.markdown-viewer[data-v-302edca0] .hljs-comment,.markdown-viewer[data-v-302edca0] .hljs-punctuation{color:#8b949e}.markdown-viewer[data-v-302edca0] .hljs-attr,.markdown-viewer[data-v-302edca0] .hljs-attribute,.markdown-viewer[data-v-302edca0] .hljs-meta,.markdown-viewer[data-v-302edca0] .hljs-selector-attr,.markdown-viewer[data-v-302edca0] .hljs-selector-class,.markdown-viewer[data-v-302edca0] .hljs-selector-id{color:#79c0ff}.markdown-viewer[data-v-302edca0] .hljs-variable,.markdown-viewer[data-v-302edca0] .hljs-literal,.markdown-viewer[data-v-302edca0] .hljs-number,.markdown-viewer[data-v-302edca0] .hljs-doctag{color:#f2cc60}.markdown-viewer[data-v-302edca0] .hljs-params{color:#c9d1d9}.markdown-viewer[data-v-302edca0] .hljs-function{color:#d2a8ff}.markdown-viewer[data-v-302edca0] .hljs-class,.markdown-viewer[data-v-302edca0] .hljs-tag,.markdown-viewer[data-v-302edca0] .hljs-title,.markdown-viewer[data-v-302edca0] .hljs-built_in{color:#7ee787}.markdown-viewer[data-v-302edca0] .hljs-keyword,.markdown-viewer[data-v-302edca0] .hljs-type,.markdown-viewer[data-v-302edca0] .hljs-selector-tag,.markdown-viewer[data-v-302edca0] .hljs-addition,.markdown-viewer[data-v-302edca0] .hljs-template-tag,.markdown-viewer[data-v-302edca0] .hljs-template-variable{color:#ff7b72}.markdown-viewer[data-v-302edca0] .hljs-string,.markdown-viewer[data-v-302edca0] .hljs-bullet,.markdown-viewer[data-v-302edca0] .hljs-subst,.markdown-viewer[data-v-302edca0] .hljs-section,.markdown-viewer[data-v-302edca0] .hljs-link,.markdown-viewer[data-v-302edca0] .hljs-regexp{color:#a5d6ff}.markdown-viewer[data-v-302edca0] .hljs-name,.markdown-viewer[data-v-302edca0] .hljs-selector-pseudo,.markdown-viewer[data-v-302edca0] .hljs-symbol,.markdown-viewer[data-v-302edca0] .hljs-quote{color:#7ee787}.markdown-viewer[data-v-302edca0] .hljs-deletion{color:#ffa198;background-color:#ff818226}.markdown-viewer[data-v-302edca0] .hljs-emphasis{font-style:italic}.markdown-viewer[data-v-302edca0] .hljs-strong{font-weight:700}.diff-file-content[data-v-68865be7]{background-color:var(--color-background)}.diff-hunk[data-v-68865be7]{border-top:1px solid var(--color-border)}.diff-hunk-header[data-v-68865be7]{padding:.5rem .75rem;background-color:#58a6ff1a;color:var(--color-text-soft);font-size:.75rem}.diff-table-wrapper[data-v-68865be7]{overflow-x:auto}.diff-table[data-v-68865be7]{min-width:100%;border-collapse:collapse}.diff-line[data-v-68865be7]{height:1.5rem}.diff-line-context[data-v-68865be7]{background-color:var(--color-background)}.diff-line-addition[data-v-68865be7]{background-color:#3fb95026}.diff-line-deletion[data-v-68865be7]{background-color:#f8514926}.diff-line-num[data-v-68865be7]{width:3rem;min-width:3rem;padding:0 .5rem;text-align:right;color:var(--color-text-soft);background-color:var(--color-background-soft);border-right:1px solid var(--color-border);-webkit-user-select:none;user-select:none;vertical-align:top}.diff-line-addition .diff-line-num[data-v-68865be7]{background-color:#3fb95033}.diff-line-deletion .diff-line-num[data-v-68865be7]{background-color:#f8514933}.diff-line-prefix[data-v-68865be7]{width:1.5rem;min-width:1.5rem;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:top}.diff-line-addition .diff-line-prefix[data-v-68865be7]{color:var(--color-success)}.diff-line-deletion .diff-line-prefix[data-v-68865be7]{color:var(--color-error)}.diff-line-content[data-v-68865be7]{padding:0 .5rem;white-space:pre;vertical-align:top}.markdown-preview-container[data-v-68865be7]{padding:1rem;background-color:var(--color-background);border-top:1px solid var(--color-border);font-family:var(--font-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:.875rem}.markdown-preview-split[data-v-68865be7]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.markdown-preview-pane[data-v-68865be7]{border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden}.markdown-preview-pane[data-v-68865be7]>.markdown-viewer{padding:1rem;max-height:400px;overflow-y:auto}.markdown-preview-single[data-v-68865be7]{border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden}.markdown-preview-single[data-v-68865be7]>.markdown-viewer{padding:1rem;max-height:400px;overflow-y:auto}.markdown-preview-label[data-v-68865be7]{padding:.5rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.markdown-preview-label-old[data-v-68865be7]{background-color:#f851491a;color:var(--color-error);border-bottom:1px solid rgba(248,81,73,.2)}.markdown-preview-label-new[data-v-68865be7]{background-color:#3fb9501a;color:var(--color-success);border-bottom:1px solid rgba(63,185,80,.2)}@media (max-width: 768px){.markdown-preview-split[data-v-68865be7]{grid-template-columns:1fr}}.binary-file-notice[data-v-68865be7]{display:flex;align-items:center;gap:1rem;padding:2rem;background-color:var(--color-background-soft);border:1px dashed var(--color-border);border-radius:var(--border-radius);text-align:center}.binary-icon[data-v-68865be7]{font-size:2rem;flex-shrink:0}.binary-message[data-v-68865be7]{flex:1}.binary-message p[data-v-68865be7]{margin:.25rem 0;color:var(--color-text-soft);font-family:var(--font-base);font-size:.9375rem}.binary-message p[data-v-68865be7]:first-child{font-weight:600;color:var(--color-text)}.image-preview-container[data-v-68865be7]{padding:1rem;background-color:var(--color-background-soft);border-radius:var(--border-radius);display:flex;justify-content:center;align-items:center;min-height:100px}.image-loading[data-v-68865be7],.image-error[data-v-68865be7],.image-deleted[data-v-68865be7]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-family:var(--font-base);font-size:.875rem}.image-error[data-v-68865be7]{color:var(--color-error)}.image-deleted[data-v-68865be7]{color:var(--color-text-soft);font-style:italic}.error-icon[data-v-68865be7],.deleted-icon[data-v-68865be7]{font-size:1.25rem}.image-wrapper[data-v-68865be7]{display:flex;justify-content:center;align-items:center;width:100%}.diff-image[data-v-68865be7]{max-width:100%;max-height:500px;height:auto;border-radius:var(--border-radius);box-shadow:0 2px 8px #0000004d}@media (max-width: 768px){.diff-image[data-v-68865be7]{max-height:300px}}@media (min-width: 1200px){.diff-image[data-v-68865be7]{max-height:600px}}.diff-viewer[data-v-2672650f]{font-family:var(--font-mono);font-size:.75rem;line-height:1.4}.diff-empty[data-v-2672650f]{color:var(--color-text-soft);padding:1rem;text-align:center}.diff-file[data-v-2672650f]{border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:1rem;overflow:hidden}.diff-file-header[data-v-2672650f]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background-color:var(--color-background-mute);cursor:pointer;-webkit-user-select:none;user-select:none}.diff-file-header[data-v-2672650f]:hover{background-color:var(--color-border)}.diff-file-toggle[data-v-2672650f]{color:var(--color-text-soft);font-size:.625rem;width:1rem}.diff-file-icon[data-v-2672650f]{display:flex;align-items:center}.file-badge[data-v-2672650f]{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:3px;font-size:.625rem;font-weight:600}.file-badge-new[data-v-2672650f]{background-color:#3fb95033;color:var(--color-success)}.file-badge-deleted[data-v-2672650f]{background-color:#f8514933;color:var(--color-error)}.file-badge-renamed[data-v-2672650f]{background-color:#d2992233;color:var(--color-warning)}.file-badge-modified[data-v-2672650f]{background-color:#58a6ff33;color:var(--color-primary)}.diff-file-path[data-v-2672650f]{flex:1;min-width:0;color:var(--color-text);word-break:break-word}.diff-file-stats[data-v-2672650f]{display:flex;gap:.5rem;font-size:.75rem}.stat-additions[data-v-2672650f]{color:var(--color-success)}.stat-deletions[data-v-2672650f]{color:var(--color-error)}.copy-button[data-v-2672650f]{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding:.25rem;margin:0 .25rem;border:none;background-color:transparent;color:var(--color-text-soft);cursor:pointer;border-radius:4px;transition:all .2s ease-out;flex-shrink:0}.copy-button[data-v-2672650f]:hover{color:var(--color-text);background-color:#ffffff0d}.copy-button[data-v-2672650f]:active{background-color:#ffffff1a}.copy-button.copied[data-v-2672650f]{color:var(--color-success);animation:copySuccess-2672650f .3s ease-out}.copy-button-icon[data-v-2672650f]{font-size:1rem;display:inline-block}@keyframes copySuccess-2672650f{0%{transform:scale(.8);opacity:.7}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.preview-toggle[data-v-2672650f]{margin-left:auto}.changes-tab[data-v-e3da4c75]{padding:1rem 0}.loading-state[data-v-e3da4c75]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.error-message[data-v-e3da4c75]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-e3da4c75]{text-align:center;padding:2rem;color:var(--color-text-soft)}.changes-toolbar[data-v-e3da4c75]{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap}.mode-toggle[data-v-e3da4c75]{display:flex;gap:.25rem;background-color:var(--color-background-soft);border-radius:4px;padding:.25rem}.toggle-button[data-v-e3da4c75]{display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;padding:.5rem .75rem;border:1px solid transparent;background-color:transparent;color:var(--color-text-soft);cursor:pointer;font-size:.875rem;border-radius:3px;transition:all .2s ease-out;white-space:nowrap;flex-shrink:0}.toggle-button[data-v-e3da4c75]:hover:not(:disabled){background-color:#ffffff0d;color:var(--color-text)}.toggle-button[data-v-e3da4c75]:disabled{opacity:.6;cursor:not-allowed}.toggle-button.active[data-v-e3da4c75]{background-color:var(--color-primary);color:var(--color-background);border-color:var(--color-primary);font-weight:600}.toggle-button.active[data-v-e3da4c75]:hover:not(:disabled){background-color:var(--color-primary);filter:brightness(1.1)}.btn-link[data-v-e3da4c75]{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.875rem;padding:.25rem .5rem;min-height:2.75rem;display:flex;align-items:center}.btn-link[data-v-e3da4c75]:hover:not(:disabled){text-decoration:underline}.btn-link[data-v-e3da4c75]:disabled{opacity:.6;cursor:not-allowed}.diff-section[data-v-e3da4c75]{margin-bottom:1.5rem}.diff-section h3[data-v-e3da4c75]{font-size:.875rem;margin-bottom:.5rem;color:var(--color-text-soft)}.local-changes-header[data-v-e3da4c75]{margin-top:1.5rem;margin-bottom:.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.local-changes-header h3[data-v-e3da4c75]{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-soft);margin:0}.canvas-file-list[data-v-8223fdcb]{display:flex;flex-direction:column;gap:.25rem}.file-row[data-v-8223fdcb]{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);cursor:pointer;transition:background-color .15s;min-height:48px}.file-row[data-v-8223fdcb]:hover{background:var(--color-background-mute)}.file-row-top[data-v-8223fdcb]{width:100%;display:flex;align-items:center}.file-row-bottom[data-v-8223fdcb]{display:flex;align-items:center;gap:.75rem;width:100%}.file-name[data-v-8223fdcb]{font-weight:500;word-break:break-word;line-height:1.4}.version-badge[data-v-8223fdcb]{font-size:.7rem;padding:.15rem .4rem;background:var(--color-primary);color:#fff;border-radius:9999px;font-weight:600;flex-shrink:0}.file-time[data-v-8223fdcb]{font-size:.75rem;color:var(--color-text-soft);flex-shrink:0}.file-arrow[data-v-8223fdcb]{color:var(--color-text-soft);font-size:1.25rem;flex-shrink:0}.file-menu-container[data-v-8223fdcb]{position:relative;display:inline-block;flex-shrink:0}.btn-menu[data-v-8223fdcb]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;font-size:1.25rem;line-height:1;flex-shrink:0}.btn-menu[data-v-8223fdcb]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-menu[data-v-8223fdcb]:active{background:#ffffff26}.menu-overlay[data-v-8223fdcb]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99}.file-menu-items[data-v-8223fdcb]{position:absolute;top:100%;right:0;min-width:200px;margin-top:.5rem;padding:.25rem 0;list-style:none;background:var(--color-bg-secondary, #222);border:1px solid var(--color-border, #444);border-radius:6px;box-shadow:0 4px 6px #0000004d;z-index:100}.menu-item[data-v-8223fdcb]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;border:none;background:transparent;color:var(--color-text, #ccc);cursor:pointer;text-align:left;font-size:.875rem;transition:all .15s ease}.menu-item[data-v-8223fdcb]:hover{background:var(--color-bg-hover, #333)}.menu-item.is-danger[data-v-8223fdcb]{color:var(--color-error, #f87171)}.menu-item.is-danger[data-v-8223fdcb]:hover{background:#f871711a}.menu-item-icon[data-v-8223fdcb]{font-size:1rem;flex-shrink:0}.menu-item-text[data-v-8223fdcb]{flex:1;font-weight:500}.menu-divider[data-v-8223fdcb]{height:1px;background:var(--color-border, #444);margin:.25rem 0;list-style:none}.fade-enter-active[data-v-8223fdcb],.fade-leave-active[data-v-8223fdcb]{transition:opacity .15s ease}.fade-enter-from[data-v-8223fdcb],.fade-leave-to[data-v-8223fdcb]{opacity:0}.slide-enter-active[data-v-8223fdcb],.slide-leave-active[data-v-8223fdcb]{transition:all .15s ease}.slide-enter-from[data-v-8223fdcb],.slide-leave-to[data-v-8223fdcb]{opacity:0;transform:translateY(-4px)}.list-header[data-v-8223fdcb]{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:.5rem;font-weight:600;font-size:.9rem}.select-all-checkbox[data-v-8223fdcb]{width:18px;height:18px;cursor:pointer;flex-shrink:0}.select-all-checkbox[data-v-8223fdcb]:disabled{opacity:.5;cursor:not-allowed}.header-label[data-v-8223fdcb]{flex:1}.selection-count[data-v-8223fdcb]{color:var(--color-text-soft);font-size:.85rem;font-weight:400;margin-left:auto}.item-checkbox[data-v-8223fdcb]{width:18px;height:18px;cursor:pointer;flex-shrink:0;margin:0}.item-checkbox[data-v-8223fdcb]:disabled{opacity:.5;cursor:not-allowed}.file-row.selected[data-v-8223fdcb]{background:#22c55e1a;border-color:#22c55e4d}.file-row.selected[data-v-8223fdcb]:hover{background:#22c55e26}@media (max-width: 640px){.file-row[data-v-8223fdcb]{padding:.875rem 1rem;gap:.5rem}.file-row-top[data-v-8223fdcb]{padding-bottom:.25rem}.file-row-bottom[data-v-8223fdcb]{gap:.5rem}.file-name[data-v-8223fdcb]{font-size:.95rem;word-break:break-word}.file-time[data-v-8223fdcb]{font-size:.6875rem}.btn-menu[data-v-8223fdcb]{width:44px;height:44px}.file-menu-items[data-v-8223fdcb]{min-width:180px}.item-checkbox[data-v-8223fdcb],.select-all-checkbox[data-v-8223fdcb]{width:16px;height:16px}}.viewer-header[data-v-0f0a432d]{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:1rem}.viewer-header-top[data-v-0f0a432d],.viewer-header-bottom[data-v-0f0a432d]{width:100%;display:flex;align-items:center}.viewer-header-middle[data-v-0f0a432d]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.breadcrumb-container[data-v-0f0a432d],.header-actions[data-v-0f0a432d]{display:flex;align-items:center;flex-shrink:0}.header-actions[data-v-0f0a432d]{gap:.5rem}.breadcrumb-back[data-v-0f0a432d]{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.9rem;font-weight:500;padding:0;white-space:nowrap;transition:text-decoration .15s ease}.breadcrumb-back[data-v-0f0a432d]:hover{text-decoration:underline}.viewer-filename[data-v-0f0a432d]{font-weight:600;font-size:1rem;word-break:break-word;line-height:1.4}.viewer-meta[data-v-0f0a432d]{color:var(--color-text-soft);font-size:.75rem;font-weight:400}.btn-edit-toggle[data-v-0f0a432d]{display:flex;align-items:center;justify-content:center;padding:.35rem .75rem;border-radius:6px;border:1px solid var(--color-border, #374151);background:transparent;color:var(--color-primary, #22d3ee);cursor:pointer;font-size:.8125rem;font-weight:500;transition:background .15s ease,border-color .15s ease;white-space:nowrap;min-height:28px}.btn-edit-toggle[data-v-0f0a432d]:hover{background:#22d3ee1a;border-color:var(--color-primary, #22d3ee)}.version-dropdown[data-v-0f0a432d]{position:relative}.version-dropdown summary[data-v-0f0a432d]{display:flex;align-items:center;gap:.25rem;padding:.35rem .6rem;background:var(--color-primary);color:#fff;border-radius:9999px;font-size:.75rem;font-weight:600;cursor:pointer;list-style:none;min-height:28px}.version-dropdown summary[data-v-0f0a432d]::-webkit-details-marker{display:none}.dropdown-arrow[data-v-0f0a432d]{font-size:.6rem}.version-list[data-v-0f0a432d]{position:absolute;top:100%;right:0;margin-top:.25rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);list-style:none;padding:.25rem 0;min-width:160px;z-index:100;box-shadow:0 4px 12px #0000004d}.version-list li[data-v-0f0a432d]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;font-size:.875rem}.version-list li[data-v-0f0a432d]:hover,.version-list li.active[data-v-0f0a432d]{background:var(--color-background-mute)}.version-number[data-v-0f0a432d]{font-weight:600}.version-time[data-v-0f0a432d]{color:var(--color-text-soft);font-size:.75rem}.version-current[data-v-0f0a432d]{color:var(--color-primary);font-size:.75rem}.file-menu-container[data-v-0f0a432d]{position:relative;display:inline-block;flex-shrink:0}.btn-menu[data-v-0f0a432d]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;font-size:1.25rem;line-height:1;flex-shrink:0}.btn-menu[data-v-0f0a432d]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-menu[data-v-0f0a432d]:active{background:#ffffff26}.menu-overlay[data-v-0f0a432d]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99}.file-menu-items[data-v-0f0a432d]{position:absolute;top:100%;right:0;min-width:200px;margin-top:.5rem;padding:.25rem 0;list-style:none;background:var(--color-bg-secondary, #222);border:1px solid var(--color-border, #444);border-radius:6px;box-shadow:0 4px 6px #0000004d;z-index:100}.menu-item[data-v-0f0a432d]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;border:none;background:transparent;color:var(--color-text, #ccc);cursor:pointer;text-align:left;font-size:.875rem;transition:all .15s ease}.menu-item[data-v-0f0a432d]:hover,.menu-item.is-highlighted[data-v-0f0a432d]{background:var(--color-bg-hover, #333)}.menu-item.is-danger[data-v-0f0a432d]{color:var(--color-error, #f87171)}.menu-item.is-danger[data-v-0f0a432d]:hover{background:#f871711a}.menu-item-icon[data-v-0f0a432d]{font-size:1rem;flex-shrink:0}.menu-item-text[data-v-0f0a432d]{flex:1;font-weight:500}.menu-divider[data-v-0f0a432d]{height:1px;background:var(--color-border, #444);margin:.25rem 0;list-style:none}.fade-enter-active[data-v-0f0a432d],.fade-leave-active[data-v-0f0a432d]{transition:opacity .15s ease}.fade-enter-from[data-v-0f0a432d],.fade-leave-to[data-v-0f0a432d]{opacity:0}.slide-enter-active[data-v-0f0a432d],.slide-leave-active[data-v-0f0a432d]{transition:all .15s ease}.slide-enter-from[data-v-0f0a432d],.slide-leave-to[data-v-0f0a432d]{opacity:0;transform:translateY(-4px)}@media (max-width: 640px){.viewer-header[data-v-0f0a432d]{padding:.75rem;gap:.5rem}.viewer-header-middle[data-v-0f0a432d]{flex-wrap:wrap;gap:.5rem}.breadcrumb-back[data-v-0f0a432d]{font-size:.875rem}.viewer-filename[data-v-0f0a432d]{font-size:.95rem}.viewer-meta[data-v-0f0a432d]{font-size:.6875rem}.header-actions[data-v-0f0a432d]{gap:.375rem}.version-dropdown summary[data-v-0f0a432d]{min-height:44px;padding:.5rem .75rem}.btn-menu[data-v-0f0a432d]{width:44px;height:44px}.file-menu-items[data-v-0f0a432d]{min-width:180px}}.canvas-file-viewer[data-v-622e16b5]{display:flex;flex-direction:column}.content-loading[data-v-622e16b5]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem;color:var(--color-text-soft)}.loading-spinner[data-v-622e16b5]{display:inline-block;width:1rem;height:1rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-622e16b5 .8s linear infinite}@keyframes spin-622e16b5{to{transform:rotate(360deg)}}.viewer-content[data-v-622e16b5]{flex:1;overflow:auto;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:1rem}.viewer-content-editing[data-v-622e16b5]{padding:0;display:flex;flex-direction:column;min-height:400px}.viewer-image[data-v-622e16b5]{max-width:100%;height:auto;border-radius:var(--border-radius)}.viewer-markdown[data-v-622e16b5]{font-size:.9375rem;line-height:1.6}.viewer-markdown-raw[data-v-622e16b5]{font-size:.8125rem;margin:0;white-space:pre-wrap;word-wrap:break-word;font-family:var(--font-mono)}.viewer-json[data-v-622e16b5]{font-size:.8125rem;margin:0;font-family:var(--font-mono)}.viewer-text[data-v-622e16b5]{white-space:pre-wrap;font-size:.9375rem}.viewer-code[data-v-622e16b5]{font-size:.8125rem;margin:0;font-family:var(--font-mono);overflow-x:auto;white-space:pre;line-height:1.5}.viewer-code code[data-v-622e16b5]{display:block}.canvas-trash[data-v-73524f88]{padding:1rem 0}.trash-header[data-v-73524f88]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.trash-header h3[data-v-73524f88]{margin:0;font-size:1.125rem}.loading-state[data-v-73524f88],.empty-state[data-v-73524f88]{text-align:center;padding:2rem;color:var(--color-text-soft)}.empty-state-hint[data-v-73524f88]{font-size:.875rem;margin-top:.5rem;opacity:.8}.trash-list[data-v-73524f88]{display:flex;flex-direction:column;gap:.5rem}.trash-row[data-v-73524f88]{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);min-height:56px}.file-icon[data-v-73524f88]{font-size:1.25rem;flex-shrink:0}.file-info[data-v-73524f88]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.file-name[data-v-73524f88]{font-weight:500;word-break:break-word}.file-meta[data-v-73524f88]{font-size:.75rem;color:var(--color-text-soft)}.trash-actions[data-v-73524f88]{display:flex;gap:.5rem;flex-shrink:0}.btn[data-v-73524f88]{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s ease-out;font-weight:500}.btn[data-v-73524f88]:disabled{opacity:.6;cursor:not-allowed}.btn-sm[data-v-73524f88]{padding:.375rem .75rem;font-size:.8125rem}.btn-success[data-v-73524f88]{background:var(--color-success);color:#fff}.btn-success[data-v-73524f88]:hover:not(:disabled){background:#2ea043}.btn-danger[data-v-73524f88]{background:transparent;border:1px solid var(--color-error);color:var(--color-error)}.btn-danger[data-v-73524f88]:hover:not(:disabled){background:#f851491a}.item-checkbox[data-v-73524f88]{width:18px;height:18px;cursor:pointer;flex-shrink:0;margin:0}.item-checkbox[data-v-73524f88]:disabled{opacity:.5;cursor:not-allowed}.trash-row.selected[data-v-73524f88]{background:#22c55e1a;border-color:#22c55e4d}.trash-row.selected[data-v-73524f88]:hover{background:#22c55e26}.bulk-action-toolbar[data-v-73524f88]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:var(--border-radius);margin-bottom:1rem;flex-wrap:wrap}.toolbar-left[data-v-73524f88]{display:flex;align-items:center;gap:1rem;flex:1;min-width:0}.toolbar-right[data-v-73524f88]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.selection-info[data-v-73524f88]{color:var(--color-text);font-weight:500;font-size:.9rem;white-space:nowrap}.btn-secondary[data-v-73524f88]{background-color:var(--color-background-mute);color:var(--color-text-soft);border:1px solid var(--color-border)}.btn-secondary[data-v-73524f88]:hover:not(:disabled){background-color:var(--color-background-soft);color:var(--color-text)}@media (max-width: 640px){.trash-row[data-v-73524f88]{flex-wrap:wrap}.trash-actions[data-v-73524f88]{width:100%;margin-top:.5rem}.trash-actions .btn[data-v-73524f88]{flex:1;min-height:44px}.item-checkbox[data-v-73524f88]{width:16px;height:16px}.bulk-action-toolbar[data-v-73524f88]{flex-direction:column;align-items:stretch}.toolbar-left[data-v-73524f88],.toolbar-right[data-v-73524f88]{justify-content:center}.toolbar-right .btn[data-v-73524f88]{flex:1;min-height:44px}}.stale-badge[data-v-9c2aa874]{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--color-warning);background-color:#d299221a;border:1px solid rgba(210,153,34,.25);border-radius:var(--border-radius);text-align:center;margin-bottom:.5rem}.canvas-tab[data-v-7d192f9a]{padding:1rem 0;min-height:200px;transition:background-color .2s,border-color .2s,opacity .3s ease}.canvas-tab.connection-stale[data-v-7d192f9a]{opacity:.5}.canvas-tab.drag-over[data-v-7d192f9a]{background-color:#58a6ff1a;border:2px dashed var(--color-primary);border-radius:var(--border-radius)}.canvas-header[data-v-7d192f9a]{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.canvas-header label.disabled[data-v-7d192f9a]{opacity:.6;cursor:not-allowed;pointer-events:none}.trash-toggle[data-v-7d192f9a]{background:var(--color-background-mute);border:1px solid var(--color-border);color:var(--color-text-soft);padding:.375rem .75rem;border-radius:var(--border-radius);cursor:pointer;font-size:.8125rem;display:flex;align-items:center;gap:.5rem;white-space:nowrap;transition:all .2s ease-out}.trash-toggle[data-v-7d192f9a]:hover{color:var(--color-text);background:var(--color-background-soft)}.trash-count[data-v-7d192f9a]{display:inline-block;background:var(--color-error);color:#fff;border-radius:9999px;padding:.125rem .4rem;font-size:.75rem;font-weight:600;min-width:1.25rem;text-align:center}.drag-hint[data-v-7d192f9a]{color:var(--color-primary);font-weight:500}.loading-state[data-v-7d192f9a]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.empty-state[data-v-7d192f9a]{text-align:center;padding:2rem;color:var(--color-text-soft)}.empty-state-hint[data-v-7d192f9a]{font-size:.875rem;margin-top:.5rem;opacity:.8}.bulk-action-toolbar[data-v-7d192f9a]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);border-radius:var(--border-radius);margin-bottom:1rem;flex-wrap:wrap}.toolbar-left[data-v-7d192f9a]{display:flex;align-items:center;gap:1rem;flex:1;min-width:0}.toolbar-right[data-v-7d192f9a]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.toolbar-checkbox[data-v-7d192f9a]{width:18px;height:18px;cursor:pointer;flex-shrink:0;margin:0}.toolbar-checkbox[data-v-7d192f9a]:disabled{opacity:.5;cursor:not-allowed}.selection-info[data-v-7d192f9a]{color:var(--color-text);font-weight:500;font-size:.9rem;white-space:nowrap}.btn-danger[data-v-7d192f9a]{background-color:var(--color-error);color:#fff;border-color:var(--color-error)}.btn-danger[data-v-7d192f9a]:hover:not(:disabled){background-color:#dc2626;border-color:#dc2626}.btn-secondary[data-v-7d192f9a]{background-color:var(--color-background-mute);color:var(--color-text-soft);border-color:var(--color-border)}.btn-secondary[data-v-7d192f9a]:hover:not(:disabled){background-color:var(--color-background-soft);color:var(--color-text)}@media (max-width: 640px){.canvas-header[data-v-7d192f9a]{flex-wrap:wrap;gap:.5rem}.canvas-header .btn-primary[data-v-7d192f9a]{flex:1;min-height:44px}.drag-hint[data-v-7d192f9a]{display:none}.bulk-action-toolbar[data-v-7d192f9a]{flex-direction:column;align-items:stretch}.toolbar-left[data-v-7d192f9a],.toolbar-right[data-v-7d192f9a]{justify-content:center}.toolbar-right .btn[data-v-7d192f9a]{flex:1;min-height:44px}.toolbar-checkbox[data-v-7d192f9a]{width:16px;height:16px}}@media (hover: none){.drag-hint[data-v-7d192f9a]{display:none}}.summary-content[data-v-706ddd1a]{position:relative}.summary-updating[data-v-706ddd1a]{position:absolute;top:.5rem;right:.5rem;display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-text-soft)}.summary-section[data-v-706ddd1a]{margin-bottom:1.5rem}.summary-section[data-v-706ddd1a]:last-of-type{margin-bottom:0}.summary-section h3[data-v-706ddd1a]{font-size:.875rem;font-weight:600;color:var(--color-text-soft);margin:0 0 .75rem;text-transform:uppercase;letter-spacing:.05em}.full-summary[data-v-706ddd1a]{margin:0;line-height:1.6}.summary-footer[data-v-706ddd1a]{display:flex;justify-content:space-between;align-items:center;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.summary-date[data-v-706ddd1a]{font-size:.75rem;color:var(--color-text-soft)}.btn-link[data-v-706ddd1a]{background:none;border:none;color:var(--color-primary);font-size:.75rem;cursor:pointer;padding:0;display:flex;align-items:center;gap:.25rem}.btn-link[data-v-706ddd1a]:hover{text-decoration:underline}.btn-link[data-v-706ddd1a]:disabled{opacity:.5;cursor:not-allowed}.latest-response[data-v-c05bdd9e]{margin-bottom:1.5rem}.latest-response-header[data-v-c05bdd9e]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.75rem}.latest-response-header h3[data-v-c05bdd9e]{margin:0;font-size:1rem;font-weight:600}.latest-response-meta[data-v-c05bdd9e]{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--color-text-soft)}.response-model[data-v-c05bdd9e]{padding:.125rem .375rem;border-radius:4px;background:#63b3ed1a;color:var(--color-primary, #63b3ed);font-weight:500;font-size:.6875rem}.response-session-name[data-v-c05bdd9e]{opacity:.8}.latest-response-content[data-v-c05bdd9e]{position:relative;font-size:.875rem;line-height:1.5}.latest-response-content.collapsed[data-v-c05bdd9e]{max-height:300px;overflow:hidden}.latest-response-content.collapsed[data-v-c05bdd9e]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:60px;background:linear-gradient(transparent,var(--color-background-soft, #1e1e1e));pointer-events:none}.expand-toggle[data-v-c05bdd9e]{display:inline-block;margin-top:.5rem;padding:0;background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.8125rem;font-weight:500}.expand-toggle[data-v-c05bdd9e]:hover{text-decoration:underline}.session-overview[data-v-855f7818]{margin-bottom:1.5rem}.overview-header[data-v-855f7818]{margin-bottom:1rem}.overview-header h3[data-v-855f7818]{margin:0;font-size:1rem;font-weight:600}.overview-summary[data-v-855f7818]{padding:.75rem 0;border-top:1px solid var(--color-border)}.overview-summary-loading[data-v-855f7818]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem}.overview-summary .summary-text[data-v-855f7818]{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text);line-height:1.4}.overview-metrics[data-v-855f7818]{display:flex;gap:1.5rem;padding:.75rem 0;border-top:1px solid var(--color-border)}.metric[data-v-855f7818]{display:flex;flex-direction:column;gap:.125rem}.metric-value[data-v-855f7818]{font-size:.875rem;font-weight:600;color:var(--color-text)}.metric-label[data-v-855f7818]{font-size:.6875rem;color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.05em}.loading-spinner-small[data-v-855f7818]{width:12px;height:12px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-855f7818 1s linear infinite}@keyframes spin-855f7818{to{transform:rotate(360deg)}}.status-badge[data-v-855f7818]{display:inline-block;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.status-badge.pr-merged[data-v-855f7818]{background:#8250df26;color:#8250df}.status-badge.pr-open[data-v-855f7818]{background:#2ea04326;color:var(--color-success)}.status-badge.pr-closed[data-v-855f7818]{background:#6e778126;color:#6e7781}.status-badge.pr-draft[data-v-855f7818]{background:#d2992226;color:var(--color-warning)}.status-badge.ci-success[data-v-855f7818]{background:#2ea04326;color:var(--color-success)}.status-badge.ci-pending[data-v-855f7818]{background:#d2992226;color:var(--color-warning)}.pr-section[data-v-855f7818]{padding-top:.75rem;border-top:1px solid var(--color-border)}.overview-pr[data-v-855f7818]{display:flex;align-items:center;gap:.75rem}.pr-warnings[data-v-855f7818]{margin-top:.5rem;padding:.5rem .75rem;background:#cf222e14;border-radius:6px;font-size:.8125rem;color:var(--color-error, #cf222e)}.warning-item[data-v-855f7818]{padding:.125rem 0}.ci-failure-list[data-v-855f7818]{margin-top:.25rem;padding-left:1rem}.ci-failure-item[data-v-855f7818]{font-size:.75rem;color:var(--color-text-secondary, #8b949e);padding:.0625rem 0}.pr-link[data-v-855f7818]{color:var(--color-primary);text-decoration:none;font-weight:500}.pr-link[data-v-855f7818]:hover{text-decoration:underline}.overview-scheduling[data-v-855f7818]{display:flex;align-items:center;gap:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.overview-scheduling .scheduling-icon[data-v-855f7818]{font-size:1.25rem;flex-shrink:0}.scheduling-details[data-v-855f7818]{flex:1;min-width:0}.scheduling-time[data-v-855f7818]{margin:0;font-size:.875rem;color:var(--color-text)}.scheduling-time strong[data-v-855f7818]{color:var(--color-primary);font-weight:600}.scheduling-countdown[data-v-855f7818]{margin:0;font-size:.8125rem;color:var(--color-text-soft)}.scheduling-edit-link[data-v-855f7818]{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.8125rem;font-weight:500;white-space:nowrap;padding:0}.scheduling-edit-link[data-v-855f7818]:hover{text-decoration:underline}.summary-tab[data-v-d6f79b11]{padding:1rem 0}.loading-state[data-v-d6f79b11],.generating-state[data-v-d6f79b11]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.summary-empty-state[data-v-d6f79b11]{display:flex;align-items:center;justify-content:center;min-height:300px;text-align:center}.summary-empty-state-content[data-v-d6f79b11]{max-width:320px}.summary-empty-state-text[data-v-d6f79b11]{font-size:1rem;font-weight:500;color:var(--color-text);margin:0 0 .5rem}.summary-empty-state-hint[data-v-d6f79b11]{font-size:.875rem;color:var(--color-text-soft);margin:0;line-height:1.4}.action-menu-container[data-v-4b2ffa29]{position:relative;display:inline-block;flex-shrink:0}.btn-kebab[data-v-4b2ffa29]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;font-size:1.25rem;line-height:1;flex-shrink:0}.btn-kebab[data-v-4b2ffa29]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-kebab[data-v-4b2ffa29]:active{background:#ffffff26}.menu-overlay[data-v-4b2ffa29]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99}.menu-items[data-v-4b2ffa29]{position:absolute;top:100%;right:0;min-width:160px;margin-top:.5rem;padding:.25rem 0;list-style:none;background:var(--color-bg-secondary, #222);border:1px solid var(--color-border, #444);border-radius:6px;box-shadow:0 4px 6px #0000004d;z-index:100}.menu-item[data-v-4b2ffa29]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;border:none;background:transparent;color:var(--color-text, #ccc);cursor:pointer;text-align:left;font-size:.875rem;transition:all .15s ease}.menu-item[data-v-4b2ffa29]:hover,.menu-item.is-highlighted[data-v-4b2ffa29]{background:var(--color-bg-hover, #333)}.menu-item.is-danger[data-v-4b2ffa29]{color:var(--color-error, #f87171)}.menu-item.is-danger[data-v-4b2ffa29]:hover{background:#f871711a}.menu-item-icon[data-v-4b2ffa29]{font-size:1rem;flex-shrink:0}.menu-item-text[data-v-4b2ffa29]{flex:1;font-weight:500}.fade-enter-active[data-v-4b2ffa29],.fade-leave-active[data-v-4b2ffa29]{transition:opacity .15s ease}.fade-enter-from[data-v-4b2ffa29],.fade-leave-to[data-v-4b2ffa29]{opacity:0}.slide-enter-active[data-v-4b2ffa29],.slide-leave-active[data-v-4b2ffa29]{transition:all .15s ease}.slide-enter-from[data-v-4b2ffa29],.slide-leave-to[data-v-4b2ffa29]{opacity:0;transform:translateY(-4px)}.command-button-item[data-v-272badcf]{background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:1rem;display:flex;flex-direction:column;gap:1rem}.button-header[data-v-272badcf]{display:flex;justify-content:space-between;align-items:center;gap:1rem}.button-info[data-v-272badcf]{flex:1;display:flex;flex-direction:column;gap:.25rem}.button-label[data-v-272badcf]{font-weight:500;color:var(--color-text);font-size:1rem}.button-command[data-v-272badcf]{color:var(--color-text-soft);font-size:.85rem;font-family:var(--font-mono)}.button-actions[data-v-272badcf]{display:flex;align-items:center;gap:.75rem}.status-indicator[data-v-272badcf]{width:1.5rem;height:1.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center}.status-indicator[data-v-272badcf] svg{width:.875rem;height:.875rem}.status-success[data-v-272badcf]{background-color:#3fb95033;color:var(--color-success)}.status-success[data-v-272badcf] svg{animation:pop-in-272badcf .3s ease-out}.status-error[data-v-272badcf]{background-color:#f8514933;color:var(--color-error)}.status-error[data-v-272badcf] svg{animation:shake-272badcf .4s ease-in-out}.status-running[data-v-272badcf]{background-color:#d299224d;color:#d29922;border-color:#d29922;animation:hourglass-flip-272badcf 2s ease-in-out infinite}.output-section[data-v-272badcf]{border-top:1px solid var(--color-border);padding-top:.75rem}.output-header[data-v-272badcf]{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;border-radius:4px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.output-header[data-v-272badcf]:hover{background-color:#58a6ff1a}.expand-icon[data-v-272badcf]{color:var(--color-text-soft);font-size:.85rem}.output-label[data-v-272badcf]{color:var(--color-text);font-size:.9rem}.exit-code[data-v-272badcf]{color:var(--color-text-soft);font-size:.8rem;margin-left:.5rem}.output-content[data-v-272badcf]{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem;padding:.75rem;background-color:var(--color-background);border:1px solid var(--color-border);border-radius:4px;position:relative}.output-display-truncated[data-v-272badcf]{background-color:#58a6ff1a;border:1px solid rgba(88,166,255,.2);color:var(--color-text-soft);padding:.5rem .75rem;border-radius:4px;font-size:.8rem}.output-text[data-v-272badcf]{font-family:var(--font-mono);font-size:.8rem;color:var(--color-text-soft);white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto;line-height:1.4}.running-indicator[data-v-272badcf]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.9rem;margin-top:.5rem}.elapsed-time[data-v-272badcf]{font-family:var(--font-mono);font-size:.85rem;color:var(--color-text);font-weight:500;min-width:2.5rem}.spinner[data-v-272badcf]{display:inline-block;width:1rem;height:1rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-272badcf .8s linear infinite}.spinner-inline[data-v-272badcf]{display:inline-block;width:.75rem;height:.75rem;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-272badcf .8s linear infinite;margin-right:.5rem;opacity:.8}.btn.is-loading[data-v-272badcf]{opacity:.8;position:relative}@keyframes spin-272badcf{to{transform:rotate(360deg)}}@keyframes hourglass-flip-272badcf{0%,80%{transform:rotate(0)}90%{transform:rotate(180deg)}to{transform:rotate(180deg)}}@keyframes pop-in-272badcf{0%{transform:scale(0)}70%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes shake-272badcf{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@media (max-width: 640px){.button-header[data-v-272badcf]{flex-direction:column;align-items:stretch}.button-actions[data-v-272badcf]{width:100%;justify-content:space-between}.button-actions button[data-v-272badcf]{flex:1}}.commands-tab[data-v-3d607ed5]{display:flex;flex-direction:column;gap:1.5rem}.tab-header[data-v-3d607ed5]{display:flex;justify-content:space-between;align-items:center;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.tab-header h3[data-v-3d607ed5]{margin:0;font-size:1rem;color:var(--color-text)}.loading-state[data-v-3d607ed5],.empty-state[data-v-3d607ed5]{padding:2rem;text-align:center;background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text-soft)}.error-banner[data-v-3d607ed5]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background-color:#f851491a;border:1px solid var(--color-error);border-radius:var(--border-radius);color:var(--color-error)}.error-banner .dismiss-btn[data-v-3d607ed5]{background:none;border:1px solid var(--color-error);border-radius:4px;color:var(--color-error);padding:.25rem .5rem;font-size:.75rem;cursor:pointer;transition:background-color .2s}.error-banner .dismiss-btn[data-v-3d607ed5]:hover{background-color:#f8514933}.loading-state[data-v-3d607ed5]{display:flex;align-items:center;justify-content:center;gap:.75rem}.empty-state[data-v-3d607ed5]{display:flex;flex-direction:column;gap:1rem;align-items:center}.commands-list[data-v-3d607ed5]{display:flex;flex-direction:column;gap:1.5rem}@media (max-width: 640px){.tab-header[data-v-3d607ed5]{flex-direction:column;align-items:flex-start;gap:1rem}.commands-list[data-v-3d607ed5]{gap:1rem}}.overflow-menu-container[data-v-84c0a012]{position:relative;display:inline-block;margin-left:auto;flex-shrink:0}.btn-kebab[data-v-84c0a012]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;font-size:1.25rem;line-height:1;flex-shrink:0}.btn-kebab[data-v-84c0a012]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-kebab[data-v-84c0a012]:active{background:#ffffff26}.menu-overlay[data-v-84c0a012]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99}.menu-items[data-v-84c0a012]{position:absolute;top:100%;right:0;min-width:160px;margin-top:.5rem;padding:.25rem 0;list-style:none;background:var(--color-bg-secondary, #222);border:1px solid var(--color-border, #444);border-radius:6px;box-shadow:0 4px 6px #0000004d;z-index:100}.menu-item[data-v-84c0a012]{display:flex;align-items:center;gap:.75rem;width:100%;padding:.5rem 1rem;border:none;background:transparent;color:var(--color-text, #ccc);cursor:pointer;text-align:left;font-size:.875rem;transition:all .15s ease}.menu-item[data-v-84c0a012]:hover,.menu-item.is-highlighted[data-v-84c0a012]{background:var(--color-bg-hover, #333)}.menu-item.is-danger[data-v-84c0a012]{color:var(--color-error, #f87171)}.menu-item.is-danger[data-v-84c0a012]:hover{background:#f871711a}.menu-item.is-disabled[data-v-84c0a012]{opacity:.5;cursor:not-allowed;pointer-events:none}.menu-item.is-disabled[data-v-84c0a012]:hover{background:transparent}.menu-item-icon[data-v-84c0a012]{font-size:1rem;flex-shrink:0}.menu-item-spinner[data-v-84c0a012]{display:inline-block;width:1rem;height:1rem;border:2px solid rgba(248,113,113,.3);border-top-color:#f87171;border-radius:50%;animation:spin-84c0a012 .6s linear infinite;flex-shrink:0}@keyframes spin-84c0a012{to{transform:rotate(360deg)}}.menu-item-text[data-v-84c0a012]{flex:1;font-weight:500}.menu-divider[data-v-84c0a012]{height:1px;background:var(--color-border, #444);margin:.25rem 0}.fade-enter-active[data-v-84c0a012],.fade-leave-active[data-v-84c0a012]{transition:opacity .15s ease}.fade-enter-from[data-v-84c0a012],.fade-leave-to[data-v-84c0a012]{opacity:0}.slide-enter-active[data-v-84c0a012],.slide-leave-active[data-v-84c0a012]{transition:all .15s ease}.slide-enter-from[data-v-84c0a012],.slide-leave-to[data-v-84c0a012]{opacity:0;transform:translateY(-4px)}.pr-edit-form[data-v-eeeebfa4]{display:flex;align-items:center;gap:.5rem}.pr-url-input[data-v-eeeebfa4]{background:var(--color-bg-input, #1e1e1e);border:1px solid var(--color-border, #333);border-radius:4px;padding:.375rem .5rem;font-size:.8125rem;color:var(--color-text, #e0e0e0);min-width:280px;max-width:400px}.pr-url-input[data-v-eeeebfa4]:focus{outline:none;border-color:var(--color-primary, #00bcd4)}.pr-url-input[data-v-eeeebfa4]::placeholder{color:var(--color-text-soft, #888)}.btn-icon[data-v-eeeebfa4]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.btn-icon[data-v-eeeebfa4]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-icon[data-v-eeeebfa4]:active{background:#ffffff26}.pr-edit-btn[data-v-eeeebfa4]{width:28px;height:28px;border-radius:4px}.pr-save-btn[data-v-eeeebfa4]{color:var(--color-success, #4caf50)}.pr-save-btn[data-v-eeeebfa4]:hover{background:#4caf501a}.pr-cancel-btn[data-v-eeeebfa4]{color:var(--color-text-soft, #888)}.pr-cancel-btn[data-v-eeeebfa4]:hover{background:#ffffff1a}.pr-clear-btn[data-v-eeeebfa4]{color:var(--color-error, #f44336)}.pr-clear-btn[data-v-eeeebfa4]:hover{background:#f443361a}.pr-edit-trigger[data-v-eeeebfa4]{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;color:var(--color-text-soft, #888);font-size:.75rem;cursor:pointer;padding:.25rem .375rem;border-radius:4px;transition:color .15s,background-color .15s}.pr-edit-trigger[data-v-eeeebfa4]:hover{color:var(--color-primary, #00bcd4);background:#00bcd41a}.btn-link[data-v-eeeebfa4]{background:none;border:none;cursor:pointer}@media (max-width: 480px){.pr-url-input[data-v-eeeebfa4]{min-width:180px;max-width:100%}.pr-edit-form[data-v-eeeebfa4]{flex-wrap:wrap}}.command-status-bar[data-v-564f9ea5]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex-shrink:0}.button-status-indicator[data-v-564f9ea5]{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;border:1px solid transparent}.button-status-indicator[data-v-564f9ea5] svg{width:.875rem;height:.875rem}.button-status-indicator[data-v-564f9ea5]:hover{transform:scale(1.15);box-shadow:0 0 8px #fff3}.button-status-running[data-v-564f9ea5]{background-color:#d299224d;color:#d29922;border-color:#d29922;animation:hourglass-flip-564f9ea5 2s ease-in-out infinite}.button-status-success[data-v-564f9ea5]{background-color:#3fb9504d;color:#3fb950;border-color:#3fb950}.button-status-success[data-v-564f9ea5] svg{animation:pop-in-564f9ea5 .3s ease-out}.button-status-error[data-v-564f9ea5]{background-color:#f851494d;color:#f85149;border-color:#f85149}.button-status-error[data-v-564f9ea5] svg{animation:shake-564f9ea5 .4s ease-in-out}.button-status-killed[data-v-564f9ea5]{background-color:#f851494d;color:#f85149;border-color:#f85149}@keyframes hourglass-flip-564f9ea5{0%,80%{transform:rotate(0)}90%{transform:rotate(180deg)}to{transform:rotate(180deg)}}@keyframes pop-in-564f9ea5{0%{transform:scale(0)}70%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes shake-564f9ea5{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@media (max-width: 768px){.command-status-bar[data-v-564f9ea5]{flex-wrap:wrap;gap:.5rem}.status-label[data-v-564f9ea5]{font-size:.8rem}.button-status-indicator[data-v-564f9ea5]{width:1.375rem;height:1.375rem}}.session-header[data-v-d3c541e5]{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem;padding:0 .5rem}.session-header-row[data-v-d3c541e5]{display:flex;align-items:center;gap:.5rem}.session-name-wrapper[data-v-d3c541e5]{display:inline-flex;align-items:center;gap:.25rem;flex:1;min-width:0}.btn-icon[data-v-d3c541e5]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.btn-icon[data-v-d3c541e5]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-icon[data-v-d3c541e5]:active{background:#ffffff26}.btn-star[data-v-d3c541e5]{display:inline-flex;align-items:center;gap:.375rem}.btn-star svg[data-v-d3c541e5]{flex-shrink:0}.btn-star.is-starred[data-v-d3c541e5]{color:var(--color-warning, #f0ad4e)}.lane-chip[data-v-d3c541e5]{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border:1px solid var(--color-border);border-radius:4px;font-size:.75rem;color:var(--color-text-soft)}.lane-chip-clickable[data-v-d3c541e5]{cursor:pointer;transition:background-color .15s}.lane-chip-clickable[data-v-d3c541e5]:hover{background:#ffffff1a}.lane-chip svg[data-v-d3c541e5]{flex-shrink:0;opacity:.7}.session-name[data-v-d3c541e5]{margin:0;font-size:1.25rem;font-weight:600;overflow:hidden;word-break:break-word;line-height:1.4}.branch-pr-indicators[data-v-d3c541e5]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.left-indicators[data-v-d3c541e5]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex:1;min-width:0}@media (max-width: 768px){.session-header-row[data-v-d3c541e5]{align-items:flex-start;min-height:auto;padding-top:.25rem}.session-name[data-v-d3c541e5]{font-size:1rem}}.name-edit-form[data-v-d3c541e5]{display:flex;align-items:center;gap:.5rem}.name-edit-input[data-v-d3c541e5]{background:var(--color-bg-input, #1e1e1e);border:1px solid var(--color-border, #333);border-radius:4px;padding:.375rem .5rem;font-size:.8125rem;color:var(--color-text, #e0e0e0);min-width:200px;max-width:400px}.name-edit-input[data-v-d3c541e5]:focus{outline:none;border-color:var(--color-primary, #00bcd4)}.name-edit-input[data-v-d3c541e5]::placeholder{color:var(--color-text-soft, #888)}.pr-edit-btn[data-v-d3c541e5]{width:28px;height:28px;border-radius:4px}.pr-save-btn[data-v-d3c541e5]{color:var(--color-success, #4caf50)}.pr-save-btn[data-v-d3c541e5]:hover{background:#4caf501a}.pr-cancel-btn[data-v-d3c541e5]{color:var(--color-text-soft, #888)}.pr-cancel-btn[data-v-d3c541e5]:hover{background:#ffffff1a}.pr-clear-btn[data-v-d3c541e5]{color:var(--color-error, #f44336)}.pr-clear-btn[data-v-d3c541e5]:hover{background:#f443361a}.name-edit-trigger[data-v-d3c541e5]{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;color:var(--color-text-soft, #888);font-size:.75rem;cursor:pointer;padding:.25rem .375rem;border-radius:4px;transition:color .15s,background-color .15s}.name-edit-trigger[data-v-d3c541e5]:hover{color:var(--color-primary, #00bcd4);background:#00bcd41a}.btn-link[data-v-d3c541e5]{background:none;border:none;cursor:pointer}.changes-indicator[data-v-c78bf9e2],.canvas-indicator[data-v-c78bf9e2]{display:inline-block;width:6px;height:6px;background-color:var(--color-warning, #d29922);border-radius:50%;margin-left:4px;vertical-align:middle}.tabs-mobile[data-v-c78bf9e2]{align-items:center;gap:.5rem}.back-icon[data-v-c78bf9e2]{display:inline-flex;align-items:center;gap:.25rem}.back-icon svg[data-v-c78bf9e2]{display:inline-block;vertical-align:middle}.tabs-session-detail .tabs-desktop[data-v-c78bf9e2]{flex:1;min-width:0}.tabs-session-detail .tabs-desktop .tab[data-v-c78bf9e2]{flex:1 1 0;text-align:center;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-breadcrumb[data-v-b1e60718]{margin-bottom:.75rem;padding:.5rem .75rem;background:var(--color-background-secondary, rgba(0, 0, 0, .1));border-radius:var(--border-radius, 6px);border:1px solid var(--color-border)}.breadcrumb-list[data-v-b1e60718]{display:flex;align-items:center;gap:.25rem;list-style:none;margin:0;padding:0;flex-wrap:wrap}.breadcrumb-item[data-v-b1e60718]{display:flex;align-items:center;gap:.25rem;font-size:.8rem}.breadcrumb-link[data-v-b1e60718]{color:var(--color-primary);text-decoration:none;transition:color .15s}.breadcrumb-link[data-v-b1e60718]:hover{color:var(--color-primary-bright, #06ffff);text-decoration:underline}.breadcrumb-current[data-v-b1e60718]{color:var(--color-text);font-weight:500}.breadcrumb-separator[data-v-b1e60718]{color:var(--color-text-soft);margin:0 .25rem}.session-chat-handle[data-v-189ca246]{position:fixed;right:0;top:50%;transform:translateY(-50%);width:40px;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#374151cc;border-radius:8px 0 0 8px;cursor:pointer;z-index:900;transition:background-color .2s ease,transform .2s ease;min-width:44px;min-height:44px}.session-chat-handle[data-v-189ca246]:hover{background:#0891b2e6;transform:translateY(-50%) translate(-4px)}.session-chat-handle[data-v-189ca246]:focus-visible{outline:2px solid var(--color-primary, #06b6d4);outline-offset:2px}.handle-icon[data-v-189ca246]{color:var(--color-text-soft, #9ca3af);transition:color .2s ease}.session-chat-handle:hover .handle-icon[data-v-189ca246]{color:#fff}.active-spinner[data-v-189ca246]{width:.75rem;height:.75rem;border:2px solid rgba(6,182,212,.3);border-top-color:#06b6d4;border-radius:50%;animation:spin-189ca246 .8s linear infinite}@keyframes spin-189ca246{to{transform:rotate(360deg)}}.todo-drawer[data-v-88d56995]{border-top:1px solid var(--color-border);background-color:var(--color-background-soft)}.todo-header[data-v-88d56995]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;cursor:pointer;-webkit-user-select:none;user-select:none}.todo-header[data-v-88d56995]:hover{background-color:var(--color-background-mute)}.todo-label[data-v-88d56995]{font-weight:600;font-size:.875rem;color:var(--color-text)}.todo-summary[data-v-88d56995]{display:flex;align-items:center;gap:.75rem;flex:1;overflow:hidden}.todo-chip[data-v-88d56995]{display:flex;align-items:center;gap:.25rem;font-size:.75rem;color:var(--color-text-soft);white-space:nowrap}.todo-text[data-v-88d56995]{max-width:150px;overflow:hidden;text-overflow:ellipsis}.todo-more[data-v-88d56995]{font-size:.75rem;color:var(--color-text-soft);white-space:nowrap}.todo-counts[data-v-88d56995]{display:flex;align-items:center;gap:.75rem;flex:1}.count[data-v-88d56995]{font-size:.75rem}.count.completed[data-v-88d56995]{color:var(--color-success, #10b981)}.count.in-progress[data-v-88d56995]{color:var(--color-accent, #22d3ee)}.count.pending[data-v-88d56995]{color:var(--color-text-soft)}.expand-toggle[data-v-88d56995]{background:none;border:none;color:var(--color-text-soft);cursor:pointer;padding:.25rem;font-size:.75rem;line-height:1}.expand-toggle[data-v-88d56995]:hover{color:var(--color-text)}.todo-list[data-v-88d56995]{padding:.5rem 1rem 1rem;display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto}.todo-item[data-v-88d56995]{display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem;padding:.25rem 0}.todo-item.todo-completed[data-v-88d56995]{opacity:.6}.todo-item.todo-completed .todo-content[data-v-88d56995]{text-decoration:line-through}.todo-content[data-v-88d56995]{flex:1;color:var(--color-text)}.status-icon[data-v-88d56995]{width:14px;height:14px;border-radius:50%;flex-shrink:0;margin-top:2px}.status-icon.status-pending[data-v-88d56995]{border:2px solid var(--color-text-soft);background:transparent}.status-icon.status-in_progress[data-v-88d56995]{border:2px solid var(--color-accent, #22d3ee);background:linear-gradient(to right,var(--color-accent, #22d3ee) 50%,transparent 50%)}.status-icon.status-completed[data-v-88d56995]{border:2px solid var(--color-success, #10b981);background-color:var(--color-success, #10b981)}.tree-item[data-v-b0423493]{-webkit-user-select:none;user-select:none}.tree-item-row[data-v-b0423493]{display:flex;align-items:center;padding:.5rem .75rem;cursor:pointer;transition:background-color .15s;gap:.375rem;border-radius:.25rem;margin-bottom:1px}.tree-item-row[data-v-b0423493]:hover{background:var(--color-background-soft)}.tree-item-row.active[data-v-b0423493]{background:#58a6ff1a;border-left:3px solid var(--color-primary);padding-left:calc(.75rem - 3px)}.tree-indent[data-v-b0423493]{flex-shrink:0}.branch-indicator[data-v-b0423493]{display:flex;align-items:center;color:#8b5cf6b3;flex-shrink:0}.expand-toggle[data-v-b0423493]{display:flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;background:transparent;border:none;color:var(--color-text-soft);cursor:pointer;flex-shrink:0;border-radius:2px}.expand-toggle[data-v-b0423493]:hover{background:var(--color-background-mute);color:var(--color-text)}.expand-icon[data-v-b0423493]{font-size:.5rem;transition:transform .15s}.expand-icon.expanded[data-v-b0423493]{transform:rotate(90deg)}.expand-placeholder[data-v-b0423493]{width:16px;flex-shrink:0}.conv-name[data-v-b0423493]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.conv-meta[data-v-b0423493]{font-size:.75rem;color:var(--color-text-soft);white-space:nowrap;flex-shrink:0}.conv-tokens[data-v-b0423493]{font-family:var(--font-mono)}.children-badge[data-v-b0423493]{display:flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 .25rem;background:#8b5cf626;color:#8b5cf6e6;border-radius:9px;font-size:.6875rem;font-weight:600;flex-shrink:0}.delete-btn[data-v-b0423493]{padding:.125rem .375rem;background:transparent;border:none;color:var(--color-text-soft);font-size:1rem;cursor:pointer;border-radius:.25rem;opacity:0;transition:opacity .15s,color .15s,background-color .15s;flex-shrink:0}.tree-item-row:hover .delete-btn[data-v-b0423493]{opacity:1}.delete-btn[data-v-b0423493]:hover{background:var(--color-danger, #ef4444);color:#fff}.tree-children[data-v-b0423493]{margin-left:.25rem;border-left:1px solid var(--color-border);padding-left:.25rem}.conversation-panel[data-v-be8a2309]{background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:1rem}.panel-header[data-v-be8a2309]{padding:.5rem .75rem}.header-row[data-v-be8a2309]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.dropdown-container[data-v-be8a2309]{position:relative;flex:1;max-width:300px}.dropdown-trigger[data-v-be8a2309]{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.4rem .6rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);font-size:.875rem;cursor:pointer;transition:border-color .15s}.dropdown-trigger[data-v-be8a2309]:hover{border-color:var(--color-primary)}.dropdown-label[data-v-be8a2309]{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow[data-v-be8a2309]{font-size:.5rem;color:var(--color-text-soft);margin-left:.5rem}.dropdown-menu[data-v-be8a2309]{position:absolute;top:100%;left:0;min-width:100%;width:max-content;max-width:450px;margin-top:.25rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 4px 12px #00000026;z-index:100;max-height:350px;overflow-y:auto;padding:.25rem}.cost-display[data-v-be8a2309]{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:var(--color-background);border-radius:var(--border-radius);cursor:pointer;transition:background-color .15s}.cost-display[data-v-be8a2309]:hover{background:var(--color-background-mute)}.cost-label[data-v-be8a2309]{font-size:.75rem;color:var(--color-text-soft)}.cost-value[data-v-be8a2309]{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-accent, var(--color-primary))}.toggle-btn[data-v-be8a2309]{background:none;border:none;color:var(--color-text-soft);font-size:.5rem;cursor:pointer;padding:.25rem}.toggle-btn[data-v-be8a2309]:hover{color:var(--color-text)}.btn-new[data-v-be8a2309]{display:flex;align-items:center;gap:.25rem;padding:.4rem .6rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);font-size:.8rem;font-weight:500;cursor:pointer;transition:border-color .15s,background-color .15s;white-space:nowrap;margin-left:auto}.btn-new[data-v-be8a2309]:hover{border-color:var(--color-primary);background:var(--color-background-soft)}@media (max-width: 480px){.btn-new[data-v-be8a2309]{margin-left:0;flex:1 0 100%;justify-content:center}}.token-breakdown[data-v-be8a2309]{padding:.75rem;border-top:1px solid var(--color-border)}.bte-header[data-v-be8a2309]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.bte-label[data-v-be8a2309]{font-size:.875rem;color:var(--color-text-soft)}.bte-value[data-v-be8a2309]{font-family:var(--font-mono);font-size:1.125rem;font-weight:700;color:var(--color-accent, var(--color-primary))}.token-grid[data-v-be8a2309]{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.75rem}@media (min-width: 640px){.token-grid[data-v-be8a2309]{grid-template-columns:repeat(4,1fr)}}.token-item[data-v-be8a2309]{display:flex;flex-direction:column;align-items:center;padding:.5rem;background:var(--color-background);border-radius:.25rem;text-align:center}.token-type[data-v-be8a2309]{font-size:.625rem;text-transform:uppercase;color:var(--color-text-soft);margin-bottom:.25rem}.token-count[data-v-be8a2309]{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-text)}.token-weight[data-v-be8a2309]{font-size:.625rem;color:var(--color-text-soft)}.token-weighted[data-v-be8a2309]{font-family:var(--font-mono);font-size:.625rem;color:var(--color-accent, var(--color-primary))}.breakdown-footer[data-v-be8a2309]{display:flex;align-items:center;justify-content:flex-end}.settings-btn[data-v-be8a2309]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text-soft);cursor:pointer;transition:all .15s}.settings-btn[data-v-be8a2309]:hover{border-color:var(--color-primary);color:var(--color-text);background:var(--color-background-soft)}.thinking-block[data-v-400b3f73]{background:#58a6ff14;border:1px solid rgba(88,166,255,.2);border-radius:6px;padding:.625rem;font-size:.8125rem}.thinking-header[data-v-400b3f73]{display:flex;align-items:center;gap:.375rem;margin-bottom:.5rem;color:var(--color-primary)}.thinking-icon[data-v-400b3f73]{display:flex;align-items:center;opacity:.8}.thinking-label[data-v-400b3f73]{font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.025em}.thinking-time[data-v-400b3f73]{margin-left:auto;font-size:.6875rem;color:var(--color-text-soft);font-weight:400}.thinking-content[data-v-400b3f73]{color:var(--color-text-soft);line-height:1.5}.thinking-text[data-v-400b3f73]{white-space:pre-wrap;word-break:break-word;font-style:italic}.show-more-btn[data-v-400b3f73]{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:.25rem 0;font-size:.75rem;text-decoration:underline;opacity:.8}.show-more-btn[data-v-400b3f73]:hover{opacity:1}.thinking-streaming[data-v-400b3f73]{border-style:dashed;animation:streamPulse-400b3f73 2s ease-in-out infinite}@keyframes streamPulse-400b3f73{0%,to{border-color:#58a6ff33}50%{border-color:#58a6ff80}}.streaming-dots[data-v-400b3f73]{display:flex;gap:.15rem;align-items:center;margin-left:.25rem}.streaming-dots .dot[data-v-400b3f73]{width:4px;height:4px;border-radius:50%;background-color:var(--color-primary);animation:pulse-400b3f73 1.4s ease-in-out infinite}.streaming-dots .dot[data-v-400b3f73]:nth-child(2){animation-delay:.2s}.streaming-dots .dot[data-v-400b3f73]:nth-child(3){animation-delay:.4s}@keyframes pulse-400b3f73{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion: reduce){.thinking-streaming[data-v-400b3f73]{animation:none}.streaming-dots .dot[data-v-400b3f73]{animation:none;opacity:.6}}.command-block[data-v-c3b9c4c5]{background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:6px;padding:.625rem;font-size:.8125rem}.command-tool_input[data-v-c3b9c4c5]{border-left:3px solid var(--color-warning, #d29922)}.command-tool_output[data-v-c3b9c4c5]{border-left:3px solid var(--color-success, #3fb950)}.command-header[data-v-c3b9c4c5]{display:flex;align-items:center;gap:.375rem;margin-bottom:.5rem}.command-icon[data-v-c3b9c4c5]{display:flex;align-items:center;opacity:.7}.command-tool_input .command-icon[data-v-c3b9c4c5]{color:var(--color-warning, #d29922)}.command-tool_output .command-icon[data-v-c3b9c4c5]{color:var(--color-success, #3fb950)}.command-label[data-v-c3b9c4c5]{font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.025em;color:var(--color-text-soft)}.command-tool-name[data-v-c3b9c4c5]{background:var(--color-background-mute);padding:.125rem .375rem;border-radius:3px;font-size:.6875rem;font-family:var(--font-mono, monospace);color:var(--color-text)}.command-time[data-v-c3b9c4c5]{margin-left:auto;font-size:.6875rem;color:var(--color-text-soft)}.command-content[data-v-c3b9c4c5]{position:relative}.command-summary[data-v-c3b9c4c5]{margin-bottom:.5rem}.command-summary code[data-v-c3b9c4c5]{display:block;padding:.5rem;background:var(--color-background);border-radius:4px;font-size:.8125rem;font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace);color:var(--color-text);word-break:break-word;white-space:pre-wrap}.raw-json-details[data-v-c3b9c4c5]{margin-top:.25rem}.raw-json-details summary[data-v-c3b9c4c5]{cursor:pointer;font-size:.75rem;color:var(--color-text-soft);-webkit-user-select:none;user-select:none;padding:.25rem 0}.raw-json-details summary[data-v-c3b9c4c5]:hover{color:var(--color-primary)}.raw-json-details[open] summary[data-v-c3b9c4c5]{margin-bottom:.375rem}.command-pre[data-v-c3b9c4c5]{margin:0;padding:.5rem;background:var(--color-background);border-radius:4px;font-size:.75rem;font-family:var(--font-mono, "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace);overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:var(--color-text);line-height:1.4;max-height:300px;overflow-y:auto}.command-pre.expanded[data-v-c3b9c4c5]{max-height:none}.show-more-btn[data-v-c3b9c4c5]{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:.25rem 0;font-size:.75rem;text-decoration:underline;opacity:.8}.show-more-btn[data-v-c3b9c4c5]:hover{opacity:1}.work-log-panel[data-v-5fda898d]{margin-top:.75rem;border-left:2px solid var(--color-border);padding-left:.75rem}.work-log-header[data-v-5fda898d]{cursor:pointer;display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--color-text-soft);padding:.25rem 0;-webkit-user-select:none;user-select:none;list-style:none}.work-log-header[data-v-5fda898d]::-webkit-details-marker{display:none}.work-log-header[data-v-5fda898d]:hover{color:var(--color-text)}.work-log-icon[data-v-5fda898d]{display:flex;align-items:center;opacity:.7}.work-log-title[data-v-5fda898d]{font-weight:500}.work-log-count[data-v-5fda898d]{opacity:.7}.work-log-chevron[data-v-5fda898d]{margin-left:auto;display:flex;align-items:center;transition:transform .15s ease}.work-log-chevron.expanded[data-v-5fda898d]{transform:rotate(90deg)}.work-log-content[data-v-5fda898d]{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.message[data-v-9372c109]{padding:1rem;margin-bottom:1rem;border-radius:var(--border-radius);background-color:var(--color-background-soft);border:1px solid var(--color-border)}.message-user[data-v-9372c109]{background-color:#58a6ff1a;border-color:#58a6ff4d}.message-assistant[data-v-9372c109]{background-color:var(--color-background-soft)}.message-system[data-v-9372c109]{background-color:#8b949e1a;border-color:#8b949e4d}.message-header[data-v-9372c109]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.message-role[data-v-9372c109]{font-weight:600;font-size:.875rem;text-transform:capitalize}.message-time[data-v-9372c109]{margin-left:auto;font-size:.75rem;color:var(--color-text-soft)}.message-model[data-v-9372c109]{font-size:.75rem;color:var(--color-text-soft);padding:.125rem .375rem;background:var(--color-background-mute);border-radius:.25rem;font-family:ui-monospace,monospace}.message-content[data-v-9372c109]{white-space:pre-wrap;word-break:break-word}.message-content[data-v-9372c109] .markdown-viewer{white-space:normal}.message-tools[data-v-9372c109]{margin-top:.75rem}.message-tools details[data-v-9372c109]{margin-top:.5rem}.message-tools summary[data-v-9372c109]{cursor:pointer;font-size:.875rem;color:var(--color-text-soft)}.message-tools pre[data-v-9372c109]{margin-top:.5rem;font-size:.75rem}.message-attachments[data-v-9372c109]{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem;padding-top:.5rem;border-top:1px dashed var(--color-border)}.attachment-chip[data-v-9372c109]{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.375rem;font-size:.75rem}.attachment-icon[data-v-9372c109]{font-size:.875rem}.attachment-name[data-v-9372c109]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.attachment-size[data-v-9372c109]{color:var(--color-text-soft);font-size:.625rem}.message[data-v-b4ae019c]{padding:1rem;margin-bottom:1rem;border-radius:var(--border-radius);background-color:var(--color-background-soft);border:1px solid var(--color-border)}.message-assistant[data-v-b4ae019c]{background-color:var(--color-background-soft)}.message-streaming[data-v-b4ae019c]{border-color:var(--color-accent);border-style:dashed}.message-header[data-v-b4ae019c]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.message-role[data-v-b4ae019c]{font-weight:600;font-size:.875rem;text-transform:capitalize}.message-content[data-v-b4ae019c]{white-space:pre-wrap;word-break:break-word}.message-content[data-v-b4ae019c] .markdown-viewer{white-space:normal}.streaming-indicator[data-v-b4ae019c]{display:flex;gap:.25rem;align-items:center}.streaming-indicator .dot[data-v-b4ae019c]{width:6px;height:6px;border-radius:50%;background-color:var(--color-accent);animation:pulse-b4ae019c 1.4s ease-in-out infinite}.streaming-indicator .dot[data-v-b4ae019c]:nth-child(2){animation-delay:.2s}.streaming-indicator .dot[data-v-b4ae019c]:nth-child(3){animation-delay:.4s}@keyframes pulse-b4ae019c{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.modal-overlay[data-v-dc502987]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-dc502987]{background:var(--color-background);border:1px solid var(--color-border);border-radius:.5rem;width:100%;max-width:450px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.modal-header[data-v-dc502987]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-header h2[data-v-dc502987]{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-dc502987]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;cursor:pointer;padding:.25rem;line-height:1;border-radius:.25rem}.close-btn[data-v-dc502987]:hover{color:var(--color-text);background:var(--color-background-soft)}.modal-body[data-v-dc502987]{padding:1.25rem;overflow-y:auto}.description[data-v-dc502987]{color:var(--color-text-soft);font-size:.875rem;margin:0 0 1.5rem;line-height:1.5}.weights-form[data-v-dc502987]{display:flex;flex-direction:column;gap:1.25rem}.weight-field[data-v-dc502987]{display:flex;flex-direction:column;gap:.5rem}.weight-field label[data-v-dc502987]{font-weight:500;font-size:.875rem;color:var(--color-text)}.input-row[data-v-dc502987]{display:flex;align-items:center;gap:.75rem}.weight-input[data-v-dc502987]{width:100px;padding:.5rem .75rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-family:var(--font-mono);font-size:.875rem}.weight-input[data-v-dc502987]:focus{outline:none;border-color:var(--color-primary)}.hint[data-v-dc502987]{font-size:.75rem;color:var(--color-text-soft)}.error-message[data-v-dc502987]{margin-top:1rem;padding:.75rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.25rem;color:var(--color-danger, #ef4444);font-size:.875rem}.modal-footer[data-v-dc502987]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-top:1px solid var(--color-border);background:var(--color-background-soft)}.footer-actions[data-v-dc502987]{display:flex;gap:.75rem}.btn[data-v-dc502987]{padding:.5rem 1rem;border-radius:.25rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.btn[data-v-dc502987]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-dc502987]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-dc502987]:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-background-soft)}.btn-primary[data-v-dc502987]{background:var(--color-primary);border:1px solid var(--color-primary);color:#fff}.btn-primary[data-v-dc502987]:hover:not(:disabled){filter:brightness(1.1)}.token-cost-panel[data-v-9629abd3]{display:flex;align-items:center;gap:.5rem;position:relative}.cost-display[data-v-9629abd3]{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);cursor:pointer;transition:background-color .15s}.cost-display[data-v-9629abd3]:hover{background:var(--color-background-mute)}.cost-label[data-v-9629abd3]{font-size:.75rem;color:var(--color-text-soft)}.cost-value[data-v-9629abd3]{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-accent, var(--color-primary))}.toggle-btn[data-v-9629abd3]{background:none;border:none;color:var(--color-text-soft);font-size:.5rem;cursor:pointer;padding:.25rem}.toggle-btn[data-v-9629abd3]:hover{color:var(--color-text)}.token-breakdown[data-v-9629abd3]{position:absolute;top:100%;left:0;z-index:100;padding:.75rem;background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);min-width:400px}.bte-header[data-v-9629abd3]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.bte-label[data-v-9629abd3]{font-size:.875rem;color:var(--color-text-soft)}.bte-value[data-v-9629abd3]{font-family:var(--font-mono);font-size:1.125rem;font-weight:700;color:var(--color-accent, var(--color-primary))}.bte-value.clickable[data-v-9629abd3]{cursor:pointer;transition:opacity .15s}.bte-value.clickable[data-v-9629abd3]:hover{opacity:.8}.token-grid[data-v-9629abd3]{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.75rem}@media (min-width: 640px){.token-grid[data-v-9629abd3]{grid-template-columns:repeat(4,1fr)}}.token-item[data-v-9629abd3]{display:flex;flex-direction:column;align-items:center;padding:.5rem;background:var(--color-background);border-radius:.25rem;text-align:center}.token-type[data-v-9629abd3]{font-size:.625rem;text-transform:uppercase;color:var(--color-text-soft);margin-bottom:.25rem}.token-count[data-v-9629abd3]{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-text)}.token-weight[data-v-9629abd3]{font-size:.625rem;color:var(--color-text-soft)}.token-weighted[data-v-9629abd3]{font-family:var(--font-mono);font-size:.625rem;color:var(--color-accent, var(--color-primary))}.breakdown-footer[data-v-9629abd3]{display:flex;align-items:center;justify-content:flex-end}.settings-btn[data-v-9629abd3]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text-soft);cursor:pointer;transition:all .15s}.settings-btn[data-v-9629abd3]:hover{border-color:var(--color-primary);color:var(--color-text);background:var(--color-background-soft)}.messages[data-v-084e35ef]{padding:.25rem 0;position:relative;max-height:65vh;overflow-y:auto;scroll-behavior:smooth}.conversation-controls-row[data-v-084e35ef]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem 0;position:relative;min-height:32px}.conversation-scroll-actions[data-v-084e35ef]{display:flex;align-items:center;gap:.5rem}.conversation-scroll-btn[data-v-084e35ef]{padding:.5rem .75rem;background:#1f2937d9;border:1px solid rgba(75,85,99,.5);border-radius:6px;color:#9ca3afe6;cursor:pointer;transition:all .15s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 4px #0003;display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;line-height:1}.conversation-scroll-btn[data-v-084e35ef]:hover{background:#374151f2;color:#d1d5db}.conversation-scroll-btn[data-v-084e35ef]:active{transform:scale(.95)}.scroll-to-claude-btn[data-v-084e35ef]{font-size:1rem;white-space:nowrap;font-weight:500}@media (min-width: 1200px){.messages[data-v-084e35ef]{max-height:70vh}}@media (max-height: 700px){.messages[data-v-084e35ef]{max-height:50vh}}@media (max-height: 500px){.messages[data-v-084e35ef]{max-height:40vh}}@media (max-width: 600px){.conversation-scroll-btn[data-v-084e35ef]{padding:.5rem .75rem;min-width:44px;min-height:44px}}.orchestration-panel[data-v-0493d7fd]{background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:.5rem .75rem;margin-bottom:.5rem}.panel-header[data-v-0493d7fd]{display:flex;align-items:center;justify-content:space-between;margin-bottom:0;gap:.5rem}.panel-header.cursor-pointer[data-v-0493d7fd]{cursor:pointer}.header-left[data-v-0493d7fd]{display:flex;align-items:center;gap:.5rem;flex:1}.toggle-button[data-v-0493d7fd]{background:none;border:none;padding:.25rem;cursor:pointer;color:var(--color-text-soft);display:flex;align-items:center;justify-content:center;border-radius:4px;transition:color .15s,background .15s,transform .2s ease;flex-shrink:0}.toggle-button[data-v-0493d7fd]:hover{color:var(--color-text);background:var(--color-background-mute)}.chevron-icon[data-v-0493d7fd]{width:1rem;height:1rem;transition:transform .2s ease}.toggle-button[aria-expanded=true] .chevron-icon[data-v-0493d7fd]{transform:rotate(180deg)}.panel-title[data-v-0493d7fd]{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-soft);letter-spacing:.05em}.orchestration-content[data-v-0493d7fd]{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.schedule-row[data-v-0493d7fd]{display:flex;flex-direction:column;justify-content:flex-start}.template-row[data-v-0493d7fd]{padding-top:.75rem;border-top:1px solid var(--color-border);margin-top:.75rem}.btn-secondary[data-v-0493d7fd]{background-color:var(--color-background-soft);border:1px solid var(--color-border);color:var(--color-text-soft)}.btn-secondary[data-v-0493d7fd]:hover{background-color:var(--color-background-mute)}.btn-schedule[data-v-0493d7fd]{min-width:48px;min-height:48px;padding:.75rem;display:flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,color .15s}.btn-schedule[data-v-0493d7fd]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.btn-schedule[data-v-0493d7fd]:disabled{opacity:.5;cursor:not-allowed}.schedule-disabled-hint[data-v-0493d7fd]{margin:.5rem 0 0;padding-top:.5rem;font-size:.75rem;color:var(--color-text-soft);font-style:italic}.auto-reschedule-row[data-v-0493d7fd]{padding-top:.75rem;border-top:1px solid var(--color-border);margin-top:.75rem}.auto-reschedule-content[data-v-0493d7fd]{display:flex;align-items:center;gap:.5rem}.reschedule-icon[data-v-0493d7fd]{font-size:1rem;flex-shrink:0}.reschedule-label[data-v-0493d7fd]{font-size:.9rem;color:var(--color-text);flex:1}.btn-status[data-v-0493d7fd]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.85rem;background:#22c5ff1a;border:1px solid rgba(34,197,255,.3);border-radius:.375rem;color:var(--color-text-soft);cursor:pointer;transition:all .15s}.btn-status[data-v-0493d7fd]:hover{background:#22c5ff26;border-color:#22c5ff80;color:var(--color-text)}.status-badge[data-v-0493d7fd]{font-size:.8rem;color:var(--color-text-soft)}.edit-link[data-v-0493d7fd]{font-size:.8rem;text-decoration:underline;opacity:.7;transition:opacity .15s}.btn-status:hover .edit-link[data-v-0493d7fd]{opacity:1}.btn-configure[data-v-0493d7fd]{padding:.5rem .75rem;font-size:.85rem;background:var(--color-background-soft);border:1px solid var(--color-border);color:var(--color-text-soft);cursor:pointer;border-radius:.375rem;transition:all .15s}.btn-configure[data-v-0493d7fd]:hover{background:var(--color-background-mute);border-color:#22c5ff80;color:var(--color-text)}.input-form[data-v-1d8f7e39]{display:flex;flex-direction:column;gap:.5rem}.input-form textarea[data-v-1d8f7e39]{width:100%}.input-controls[data-v-1d8f7e39]{display:flex;align-items:center;gap:1rem}.session-options[data-v-1d8f7e39]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;flex:1}.thinking-toggle[data-v-1d8f7e39]{display:flex;align-items:center;gap:.5rem}.toggle-label[data-v-1d8f7e39]{font-size:.875rem;color:var(--color-text-soft)}.mode-switcher[data-v-1d8f7e39]{display:flex;align-items:center;gap:.5rem}.toggle-switch[data-v-1d8f7e39]{position:relative;display:inline-block;width:40px;height:22px}.toggle-switch input[data-v-1d8f7e39]{opacity:0;width:0;height:0}.toggle-slider[data-v-1d8f7e39]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-background-mute);border:1px solid var(--color-border);border-radius:22px;transition:.2s}.toggle-slider[data-v-1d8f7e39]:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:2px;background-color:var(--color-text-soft);border-radius:50%;transition:.2s}.toggle-switch input:checked+.toggle-slider[data-v-1d8f7e39]{background-color:var(--color-primary);border-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-1d8f7e39]:before{transform:translate(18px);background-color:#fff}.toggle-switch input:disabled+.toggle-slider[data-v-1d8f7e39]{opacity:.5;cursor:not-allowed}.auto-send-row[data-v-1d8f7e39]{padding:.5rem 0}.auto-send-label[data-v-1d8f7e39]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text-soft, #9ca3af)}.auto-send-checkbox[data-v-1d8f7e39]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--color-primary, #06b6d4)}.auto-send-text[data-v-1d8f7e39]{-webkit-user-select:none;user-select:none}.send-button-row[data-v-1d8f7e39]{padding-top:.75rem;margin-bottom:14px;display:flex;justify-content:center}.btn-send-full[data-v-1d8f7e39]{width:100%;min-height:52px;padding:1rem 1.5rem;font-size:1.1rem;font-weight:600;text-align:center;display:flex;align-items:center;justify-content:center;gap:.5rem}.draft-actions[data-v-1d8f7e39]{width:100%}@media (max-width: 600px){.input-controls[data-v-1d8f7e39]{flex-wrap:wrap}.session-options[data-v-1d8f7e39]{width:100%;justify-content:flex-start}}@media (max-width: 400px){.mode-label[data-v-1d8f7e39]{display:none}}.live-work-log-panel[data-v-6fa2cf53]{border-top:1px solid var(--color-border);padding:.75rem 0}.live-work-log-panel[data-v-6fa2cf53]:not(:has(.live-header)){border-top:none;padding-top:0}.live-header[data-v-6fa2cf53]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem}.live-title[data-v-6fa2cf53]{font-weight:500}.live-count[data-v-6fa2cf53]{opacity:.7;font-size:.8125rem}.live-logs[data-v-6fa2cf53]{margin-top:.75rem;max-height:250px;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;padding-right:.25rem;border-left:2px solid var(--color-primary);padding-left:.75rem}.live-log-item[data-v-6fa2cf53]{animation:slideIn-6fa2cf53 .2s ease}@keyframes slideIn-6fa2cf53{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.live-logs[data-v-6fa2cf53]::-webkit-scrollbar{width:6px}.live-logs[data-v-6fa2cf53]::-webkit-scrollbar-track{background:var(--color-background-soft);border-radius:3px}.live-logs[data-v-6fa2cf53]::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.live-logs[data-v-6fa2cf53]::-webkit-scrollbar-thumb:hover{background:var(--color-text-soft)}@media (prefers-reduced-motion: reduce){.live-log-item[data-v-6fa2cf53]{animation:none}}@media (max-width: 360px){.live-title[data-v-6fa2cf53]{display:none}}.running-state[data-v-99a76c95]{border-top:1px solid var(--color-border);padding-top:1rem}.running-header[data-v-99a76c95]{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem}.running-status[data-v-99a76c95]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem}.running-title[data-v-99a76c95]{font-weight:500}.btn-stop[data-v-99a76c95]{min-height:36px;padding:.5rem 1rem;font-size:.875rem;flex-shrink:0}.running-actions[data-v-99a76c95]{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.running-model-label[data-v-99a76c95]{font-size:.75rem;color:var(--color-text-soft, #888);white-space:nowrap}.template-pending[data-v-99a76c95]{display:flex;align-items:center;gap:.5rem;padding:.75rem;margin-top:.75rem;background:var(--color-bg-soft);border-radius:.375rem;border:1px solid var(--color-border);font-size:.875rem}.template-pending-label[data-v-99a76c95]{color:var(--color-text-soft);font-weight:500}.template-pending-link[data-v-99a76c95]{color:var(--color-accent);text-decoration:none;font-weight:500;transition:color .15s}.template-pending-link[data-v-99a76c95]:hover{color:var(--color-accent);text-decoration:underline}.template-pending-description[data-v-99a76c95]{color:var(--color-text-soft);font-size:.75rem;font-style:italic}@media (max-width: 360px){.running-title[data-v-99a76c95]{display:none}}.modal-backdrop[data-v-9bc8b873]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-9bc8b873]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;border:1px solid var(--color-border)}.modal-header[data-v-9bc8b873]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-9bc8b873]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-9bc8b873]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-9bc8b873]:hover{color:var(--color-text)}.modal-body[data-v-9bc8b873]{padding:1.5rem}.modal-footer[data-v-9bc8b873]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-9bc8b873]{margin-bottom:1rem}.form-label[data-v-9bc8b873]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-9bc8b873]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:.25rem;background:var(--color-background);color:var(--color-text);font-size:.95rem}.form-input[data-v-9bc8b873]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}textarea.form-input[data-v-9bc8b873]{resize:vertical;min-height:80px}.form-help[data-v-9bc8b873]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.btn[data-v-9bc8b873]{padding:.5rem 1rem;border-radius:.25rem;font-weight:500;cursor:pointer;border:none;font-size:.9rem;transition:opacity .2s,background-color .2s}.btn-primary[data-v-9bc8b873]{background:var(--color-primary);color:#fff}.btn-primary[data-v-9bc8b873]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-9bc8b873]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-9bc8b873]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-9bc8b873]:hover{background:var(--color-background-secondary)}.modal-backdrop[data-v-fccb3328]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-fccb3328]{display:flex;flex-direction:column;background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow:hidden;border:1px solid var(--color-border)}.modal-header[data-v-fccb3328]{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-fccb3328]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-fccb3328]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-fccb3328]:hover{color:var(--color-text)}.modal-body[data-v-fccb3328]{flex:1;overflow-y:auto;min-height:0;padding:1.5rem}.error-message[data-v-fccb3328]{padding:.75rem;margin-bottom:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.25rem;color:#fca5a5;font-size:.9rem}.modal-footer[data-v-fccb3328]{flex-shrink:0;display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-fccb3328]{margin-bottom:1rem}.form-label[data-v-fccb3328]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-fccb3328]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:.25rem;background:var(--color-background);color:var(--color-text);font-size:.95rem}.form-input[data-v-fccb3328]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-fccb3328]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-fccb3328]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-fccb3328]{display:none}.toggle-slider[data-v-fccb3328]{position:relative;display:inline-block;width:2.5rem;height:1.25rem;background-color:var(--color-border);border-radius:1rem;transition:background-color .2s;flex-shrink:0}.toggle-slider[data-v-fccb3328]:after{content:"";position:absolute;width:1rem;height:1rem;border-radius:50%;background-color:#fff;top:.125rem;left:.125rem;transition:transform .2s}.toggle-switch input:checked+.toggle-slider[data-v-fccb3328]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-fccb3328]:after{transform:translate(1.25rem)}.toggle-label[data-v-fccb3328]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-fccb3328]{padding:1rem;margin-top:1rem;border-left:2px solid var(--color-primary);background:var(--color-background, rgba(255, 255, 255, .02));border-radius:0 .25rem .25rem 0}.settings-label[data-v-fccb3328]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-fccb3328]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-fccb3328]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-fccb3328]{padding:.5rem 1rem;border-radius:.25rem;font-weight:500;cursor:pointer;border:none;font-size:.9rem;transition:opacity .2s,background-color .2s}.btn-primary[data-v-fccb3328]{background:var(--color-primary);color:#fff}.btn-primary[data-v-fccb3328]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-fccb3328]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-fccb3328]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-fccb3328]:hover{background:var(--color-background-secondary)}.scheduling-info[data-v-8e40f1e4]{border-radius:var(--border-radius, 6px);padding:1.5rem;margin-bottom:1rem}.scheduled-panel[data-v-8e40f1e4]{background:linear-gradient(135deg,#22c5ff1a,#22c5ff0d);border:1px solid rgba(34,197,255,.3);border-left:4px solid var(--color-primary)}.configure-reschedule-panel[data-v-8e40f1e4]{margin-bottom:1rem}.configure-btn[data-v-8e40f1e4]{display:flex;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:var(--color-background, rgba(255, 255, 255, .02));border:1px dashed rgba(34,197,255,.3);border-radius:var(--border-radius, 6px);color:var(--color-text-soft);cursor:pointer;transition:all .2s ease;font-size:.9rem}.configure-btn[data-v-8e40f1e4]:hover{background:#22c5ff14;border-color:#22c5ff80;color:var(--color-text)}.configure-icon[data-v-8e40f1e4]{font-size:1rem;opacity:.7}.configure-btn:hover .configure-icon[data-v-8e40f1e4]{opacity:1}.configure-text[data-v-8e40f1e4]{flex:1;text-align:left}.configure-arrow[data-v-8e40f1e4]{opacity:.5;transition:transform .2s ease,opacity .2s ease}.configure-btn:hover .configure-arrow[data-v-8e40f1e4]{opacity:1;transform:translate(2px)}.info-header[data-v-8e40f1e4]{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.info-icon[data-v-8e40f1e4]{font-size:1.5rem;flex-shrink:0}.info-title[data-v-8e40f1e4]{margin:0;font-size:1.1rem;font-weight:600;color:var(--color-text);flex:1}.info-content[data-v-8e40f1e4]{display:flex;flex-direction:column;gap:1rem}.countdown-section[data-v-8e40f1e4]{background:var(--color-background, rgba(255, 255, 255, .05));padding:1rem;border-radius:var(--border-radius, 4px)}.countdown-text[data-v-8e40f1e4]{margin:0 0 .25rem;font-size:1rem;color:var(--color-text);line-height:1.4}.countdown-text strong[data-v-8e40f1e4]{color:var(--color-primary);font-weight:600}.absolute-time[data-v-8e40f1e4]{margin:0;font-size:.875rem;color:var(--color-text-soft)}.reschedule-info[data-v-8e40f1e4]{display:flex;flex-direction:column;gap:.5rem}.reschedule-badge[data-v-8e40f1e4]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#22c5ff26;border:1px solid rgba(34,197,255,.3);border-radius:.375rem;width:fit-content}.badge-icon[data-v-8e40f1e4]{font-size:1rem}.badge-label[data-v-8e40f1e4]{font-size:.875rem;color:var(--color-text);font-weight:500}.actions[data-v-8e40f1e4]{display:flex;gap:.75rem;flex-wrap:wrap}.btn[data-v-8e40f1e4]{padding:.625rem 1.25rem;border-radius:var(--border-radius, 4px);font-size:.9rem;font-weight:500;cursor:pointer;border:none;transition:all .2s}.btn-primary[data-v-8e40f1e4]{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary)}.btn-primary[data-v-8e40f1e4]:hover:not(:disabled){opacity:.9;transform:translateY(-1px);box-shadow:0 4px 8px #22c5ff33}.btn-primary[data-v-8e40f1e4]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-8e40f1e4]{background:var(--color-background);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary[data-v-8e40f1e4]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-8e40f1e4]{background:var(--color-error, #dc2626);color:#fff;border:1px solid var(--color-error, #dc2626)}.btn-danger[data-v-8e40f1e4]:hover:not(:disabled){opacity:.9}.btn-danger[data-v-8e40f1e4]:disabled{opacity:.6;cursor:not-allowed}.btn-sm[data-v-8e40f1e4]{padding:.5rem 1rem;font-size:.85rem}@media (max-width: 640px){.scheduling-info[data-v-8e40f1e4]{padding:1rem}.info-header[data-v-8e40f1e4]{gap:.5rem;margin-bottom:1rem}.info-icon[data-v-8e40f1e4]{font-size:1.25rem}.info-title[data-v-8e40f1e4]{font-size:1rem}}.conversation-tab[data-v-9f7ad746]{display:flex;flex-direction:column;transition:opacity .3s ease}.conversation-tab.connection-stale[data-v-9f7ad746]{opacity:.5}.session-chat-picker[data-v-56c3e102]{position:absolute;top:100%;left:0;width:100%;z-index:50;margin-top:.25rem;background:var(--color-background-secondary, #1f2937);border:1px solid var(--color-border, rgba(255, 255, 255, .1));border-radius:6px;max-height:50vh;overflow-y:auto}.picker-item[data-v-56c3e102]{padding:.5rem;border-radius:var(--border-radius, 6px);cursor:pointer;transition:background-color .15s}.picker-item[data-v-56c3e102]:hover{background-color:#ffffff0d}.picker-item--active[data-v-56c3e102]{background-color:#374151}.picker-item[data-v-56c3e102]:focus-visible{outline:2px solid var(--color-primary, #06b6d4);outline-offset:-2px}.picker-item-label[data-v-56c3e102]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem}.picker-item-role[data-v-56c3e102]{font-size:.65rem;font-weight:600;color:var(--color-text-soft, #9ca3af);letter-spacing:.05em}.picker-item-status[data-v-56c3e102]{font-size:.7rem;display:inline-flex;align-items:center;gap:.25rem}.picker-item-status.status-running[data-v-56c3e102],.picker-item-status.status-starting[data-v-56c3e102]{color:var(--color-success, #3fb950)}.picker-item-status.status-scheduled[data-v-56c3e102]{color:var(--color-primary, #06b6d4)}.picker-item-name[data-v-56c3e102]{font-size:.875rem;font-weight:500;margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text, #e5e7eb)}.picker-item-meta[data-v-56c3e102]{display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:var(--color-text-soft, #9ca3af)}.picker-item-summary[data-v-56c3e102]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:.5rem}.picker-item-date[data-v-56c3e102]{flex-shrink:0}.slide-left-enter-active,.slide-left-leave-active{transition:transform .4s cubic-bezier(.4,0,.2,1)}.slide-left-enter-from{transform:translate(100%)}.slide-left-enter-to,.slide-left-leave-from{transform:translate(0)}.slide-left-leave-to{transform:translate(100%)}@media (prefers-reduced-motion: reduce){.slide-left-enter-active,.slide-left-leave-active{transition:transform .15s ease}}.session-switch-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;gap:.75rem;flex:1}.session-switch-spinner{display:inline-block;width:1.5rem;height:1.5rem;border:2px solid rgba(6,182,212,.2);border-top-color:#06b6d4;border-radius:50%;animation:session-switch-spin .8s linear infinite}@keyframes session-switch-spin{to{transform:rotate(360deg)}}.session-switch-text{color:#9ca3af;font-size:.8125rem}.overlay-backdrop[data-v-17c8d84d]{position:fixed;top:var(--viewport-offset-top, 0px);right:0;bottom:0;left:0;z-index:1000;background:#111827;display:block;overflow:hidden;overflow-y:hidden;overscroll-behavior:none}.overlay-panel-wrapper[data-v-17c8d84d]{position:fixed;top:var(--viewport-offset-top, 0px);right:0;bottom:0;display:flex;min-height:0;max-width:900px;width:100%;overflow:visible;overscroll-behavior:none}.overlay-close-handle[data-v-17c8d84d]{position:absolute;left:0;top:50%;transform:translateY(-50%);width:44px;height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#37415166;border-radius:8px;cursor:pointer;z-index:30;transition:background-color .2s ease;min-width:44px;min-height:44px;border:none}.overlay-close-handle[data-v-17c8d84d]:hover{background:#0891b2b3}.overlay-close-handle[data-v-17c8d84d]:focus-visible{outline:2px solid var(--color-primary, #06b6d4);outline-offset:2px}.overlay-close-handle .handle-icon[data-v-17c8d84d]{color:var(--color-text-soft, #9ca3af);transition:color .2s ease}.overlay-close-handle:hover .handle-icon[data-v-17c8d84d]{color:#fff}.overlay-close-handle .active-spinner[data-v-17c8d84d]{width:.75rem;height:.75rem;border:2px solid rgba(6,182,212,.3);border-top-color:#06b6d4;border-radius:50%;animation:spin-17c8d84d .8s linear infinite}@keyframes spin-17c8d84d{to{transform:rotate(360deg)}}.overlay-content[data-v-17c8d84d]{flex:1;width:100%;display:flex;flex-direction:column;overflow:clip;padding:0;box-shadow:-4px 0 20px #00000080;position:relative}.overlay-body[data-v-17c8d84d]{padding:0 1rem;padding-bottom:max(0px,env(safe-area-inset-bottom));flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.overlay-header[data-v-17c8d84d]{position:sticky;top:0;display:flex;flex-direction:column;gap:.375rem;padding:.75rem 1rem .375rem;padding-top:max(.75rem,env(safe-area-inset-top));background:var(--color-background-secondary, #1f2937);border-radius:0;border-bottom:1px solid var(--color-border, rgba(255, 255, 255, .1));flex-shrink:0;z-index:20;width:100%;transition:padding .2s ease,gap .2s ease}.overlay-header.header-compact[data-v-17c8d84d]{flex-direction:row;align-items:center;gap:.5rem;padding:.375rem .5rem}.overlay-header.header-compact .overlay-header-selector[data-v-17c8d84d],.overlay-header.header-compact .overlay-header-actions[data-v-17c8d84d]{display:none}.overlay-header.header-compact .overlay-root-name[data-v-17c8d84d]{font-size:.8125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overlay-header.header-compact .name-edit-trigger[data-v-17c8d84d]{display:none}.overlay-header-row[data-v-17c8d84d]{display:flex;align-items:center;width:100%;min-width:0}.overlay-header-selector[data-v-17c8d84d]{position:relative}.overlay-header-actions[data-v-17c8d84d]{justify-content:space-between}.overlay-root-name[data-v-17c8d84d]{font-size:1rem;font-weight:600;color:var(--color-primary, #06b6d4);word-break:break-word}.dropdown-trigger[data-v-17c8d84d]{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.625rem .75rem;background:#ffffff0d;border:1px solid var(--color-border, rgba(255, 255, 255, .1));border-radius:var(--border-radius, 6px);color:var(--color-text, #e5e7eb);cursor:pointer;font-size:.8125rem;transition:background-color .15s}.dropdown-trigger[data-v-17c8d84d]:hover{background:#ffffff1a}.dropdown-name[data-v-17c8d84d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-chevron[data-v-17c8d84d]{color:var(--color-text-soft, #9ca3af);margin-left:.5rem;flex-shrink:0}.session-chat-overlay[data-v-17c8d84d] .messages{max-height:none!important;overflow-y:visible!important;flex:1}.session-chat-overlay[data-v-17c8d84d] .conversation-controls-row{position:sticky;bottom:0;z-index:10;background:#111827;pointer-events:none}.session-chat-overlay[data-v-17c8d84d] .conversation-controls-row>*{pointer-events:auto}@media (max-width: 768px){.overlay-body[data-v-17c8d84d]{padding-left:.5rem;padding-right:.5rem}.overlay-header[data-v-17c8d84d]{padding-right:.5rem;padding-bottom:.375rem;padding-left:.5rem;padding-top:max(1rem,env(safe-area-inset-top))}}@media (min-width: 769px) and (max-width: 1024px){.overlay-panel-wrapper[data-v-17c8d84d]{max-width:700px}}.session-name-wrapper[data-v-17c8d84d]{display:inline-flex;align-items:center;gap:.25rem;flex:1;min-width:0}.name-edit-form[data-v-17c8d84d]{display:flex;align-items:center;gap:.5rem;flex:1}.name-edit-input[data-v-17c8d84d]{background:var(--color-bg-input, #1e1e1e);border:1px solid var(--color-border, #333);border-radius:4px;padding:.375rem .5rem;font-size:.8125rem;color:var(--color-text, #e0e0e0);min-width:200px;max-width:400px;flex:1}.name-edit-input[data-v-17c8d84d]:focus{outline:none;border-color:var(--color-primary, #00bcd4)}.name-edit-input[data-v-17c8d84d]::placeholder{color:var(--color-text-soft, #888)}.btn-icon[data-v-17c8d84d]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:8px;border:none;background:transparent;color:var(--color-text-soft, #888);cursor:pointer;transition:background .15s ease,color .15s ease;flex-shrink:0}.btn-icon[data-v-17c8d84d]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-icon[data-v-17c8d84d]:active{background:#ffffff26}.pr-edit-btn[data-v-17c8d84d]{width:28px;height:28px}.pr-save-btn[data-v-17c8d84d]{color:var(--color-success, #4caf50)}.pr-save-btn[data-v-17c8d84d]:hover{background:#4caf501a}.pr-cancel-btn[data-v-17c8d84d]{color:var(--color-text-soft, #888)}.pr-cancel-btn[data-v-17c8d84d]:hover{background:#ffffff1a}.pr-clear-btn[data-v-17c8d84d]{color:var(--color-error, #f44336)}.pr-clear-btn[data-v-17c8d84d]:hover{background:#f443361a}.name-edit-trigger[data-v-17c8d84d]{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;color:var(--color-text-soft, #888);font-size:.75rem;cursor:pointer;padding:.25rem .375rem;border-radius:4px;transition:color .15s,background-color .15s}.name-edit-trigger[data-v-17c8d84d]:hover{color:var(--color-primary, #00bcd4);background:#00bcd41a}.add-session-btn[data-v-17c8d84d]{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;background:#ffffff0d;border:1px solid var(--color-border, rgba(255, 255, 255, .1));border-radius:var(--border-radius, 6px);color:var(--color-text-soft, #9ca3af);font-size:.8125rem;white-space:nowrap;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}.add-session-btn[data-v-17c8d84d]:hover:not(:disabled){background:#06b6d41a;color:var(--color-primary, #06b6d4);border-color:#06b6d44d}.add-session-btn[data-v-17c8d84d]:disabled{opacity:.5;cursor:not-allowed}.btn-link[data-v-17c8d84d]{background:none;border:none;cursor:pointer}.back-to-sessions-link[data-v-17c8d84d]{display:inline-flex;align-items:center;gap:.25rem;color:var(--color-text-soft, #9ca3af);text-decoration:none;transition:color .15s,background-color .15s;flex-shrink:0;margin-right:1.5rem;padding:.25rem .75rem;min-height:44px;min-width:44px;border-radius:6px}.back-to-sessions-link[data-v-17c8d84d]:hover{color:var(--color-primary, #06b6d4);background:#06b6d41a}.back-to-sessions-text[data-v-17c8d84d]{font-size:.8125rem;margin-left:.25rem}.loading-state[data-v-64b4adcc]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.tab-content[data-v-64b4adcc]{min-height:400px}.delete-overlay[data-v-64b4adcc]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;display:flex;align-items:center;justify-content:center}.delete-overlay-content[data-v-64b4adcc]{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--color-text, #e0e0e0);font-size:1.125rem}.delete-spinner[data-v-64b4adcc]{display:inline-block;width:3rem;height:3rem;border:3px solid rgba(0,188,212,.2);border-top-color:var(--color-primary, #00bcd4);border-radius:50%;animation:spin-64b4adcc .8s linear infinite}@keyframes spin-64b4adcc{to{transform:rotate(360deg)}}.fade-enter-active[data-v-64b4adcc],.fade-leave-active[data-v-64b4adcc]{transition:opacity .2s ease}.fade-enter-from[data-v-64b4adcc],.fade-leave-to[data-v-64b4adcc]{opacity:0}