circuschief 0.8.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/server/src/agents/AgentGateway.js +2 -0
- package/packages/server/src/agents/adapters/GeminiAdapter.js +105 -0
- package/packages/server/src/agents/adapters/cliUtils.js +15 -0
- package/packages/server/src/agents/adapters/codexCliRunner.js +1 -8
- package/packages/server/src/agents/adapters/geminiCliRunner.js +183 -0
- package/packages/server/src/agents/adapters/geminiEventMapper.js +195 -0
- package/packages/server/src/api/commandButtons.js +16 -15
- package/packages/server/src/api/projects-commandButtons.js +6 -6
- package/packages/server/src/api/projects-session-create.js +109 -0
- package/packages/server/src/api/projects-session-defaults.js +51 -0
- package/packages/server/src/api/projects-session-helpers.js +47 -1
- package/packages/server/src/api/projects-templates.js +38 -0
- package/packages/server/src/api/projects.js +28 -180
- package/packages/server/src/api/sessions-commands.js +21 -18
- package/packages/server/src/api/sessions-patch.js +41 -1
- package/packages/server/src/db/ProviderRepository.js +4 -2
- package/packages/server/src/db/SessionRepository.js +1 -1
- package/packages/server/src/db/SessionTemplateRepository.js +23 -2
- package/packages/server/src/db/migrations/canvasItemsMigrations.js +109 -0
- package/packages/server/src/db/migrations/conversationsMigrations.js +187 -0
- package/packages/server/src/db/migrations/index.js +234 -6
- package/packages/server/src/db/migrations/kanbanMigrations.js +99 -0
- package/packages/server/src/db/migrations/miscMigrations.js +244 -0
- package/packages/server/src/db/migrations/projectsMigrations.js +130 -0
- package/packages/server/src/db/migrations/providerCommitAttributionMigrations.js +30 -0
- package/packages/server/src/db/migrations/providerMigrations.js +250 -0
- package/packages/server/src/db/migrations/sessionTableRecreate.js +136 -0
- package/packages/server/src/db/migrations/sessionsMigrations.js +300 -0
- package/packages/server/src/db/seedBaselineData.js +23 -1
- package/packages/server/src/db/session-helpers.js +26 -1
- package/packages/server/src/schema.sql +5 -1
- package/packages/server/src/services/commandButtonPrompts.js +9 -7
- package/packages/server/src/services/e2eSpawnCapture.js +47 -6
- package/packages/server/src/services/geminiSpawnHelper.js +47 -0
- package/packages/server/src/services/gitCommitAttribution.js +38 -8
- package/packages/server/src/services/gitDiff.js +107 -0
- package/packages/server/src/services/gitRepoUrl.js +174 -0
- package/packages/server/src/services/gitService.js +43 -311
- package/packages/server/src/services/gitWorktree.js +127 -0
- package/packages/server/src/services/providerTestService.js +59 -1
- package/packages/server/src/services/queryParamBuilder.js +33 -1
- package/packages/server/src/services/sessionExecution.js +4 -0
- package/packages/server/src/services/sessionPrompts.js +23 -1
- package/packages/server/src/services/sessionProvider.js +41 -1
- package/packages/shared/src/constants.js +1 -1
- package/packages/shared/src/contracts/providers.js +1 -1
- package/packages/shared/src/contracts/sessions.js +27 -1
- package/packages/shared/src/contracts/templates.js +10 -0
- package/packages/shared/src/types.js +7 -0
- package/packages/web/dist/assets/{ActiveSessionsView-B0XHqLmv.js → ActiveSessionsView-EdNxmPmZ.js} +1 -1
- package/packages/web/dist/assets/{AgentLogsView-DmsjUMlB.js → AgentLogsView-C2wX0JPP.js} +2 -2
- package/packages/web/dist/assets/ApiClient-DfbJwzpz.js +1 -0
- package/packages/web/dist/assets/ArchiveConfirmModal-DJERn5XO.js +1 -0
- package/packages/web/dist/assets/CommandButtonDetailView-CBPI8-US.js +1 -0
- package/packages/web/dist/assets/CommandButtonDetailView-D9zjx9ME.css +1 -0
- package/packages/web/dist/assets/EffortLevelSelector-PaBpUveC.js +1 -0
- package/packages/web/dist/assets/{GeneralSettingsView-D1nI8_zk.js → GeneralSettingsView-Dw-x83R0.js} +1 -1
- package/packages/web/dist/assets/{InputWithButton-CAkttyqx.js → InputWithButton-CHHcpF4I.js} +1 -1
- package/packages/web/dist/assets/{InterpolationHelp-BO1j9Z3_.js → InterpolationHelp-CLNPz8s8.js} +1 -1
- package/packages/web/dist/assets/MarkdownEditor-DYi1igfT.js +2 -0
- package/packages/web/dist/assets/ModelSelector-Cko_yTO5.js +1 -0
- package/packages/web/dist/assets/{ModelSelector-BSxKUSus.css → ModelSelector-Dtwe5xLH.css} +1 -1
- package/packages/web/dist/assets/{NewSessionView-BDPb-1qr.css → NewSessionView-DBl7T2Xp.css} +1 -1
- package/packages/web/dist/assets/NewSessionView-DwUfBg70.js +3 -0
- package/packages/web/dist/assets/ProjectEditView-CSbsea3U.js +1 -0
- package/packages/web/dist/assets/ProjectEditView-DbqTbA0q.css +1 -0
- package/packages/web/dist/assets/{ProjectListView-DcNyuINs.js → ProjectListView-CEc_LWZL.js} +1 -1
- package/packages/web/dist/assets/{ProjectNewView-B5YV62hv.js → ProjectNewView-D4U0uRlp.js} +1 -1
- package/packages/web/dist/assets/ProvidersView-2KCOiY6Q.css +1 -0
- package/packages/web/dist/assets/ProvidersView-CD1j8BOv.js +1 -0
- package/packages/web/dist/assets/QuickResponsesPanel-Dp39f12o.js +1 -0
- package/packages/web/dist/assets/QuickResponsesPanel-dk-Rj8xx.css +1 -0
- package/packages/web/dist/assets/ResizableTextarea-BWywIqOv.js +1 -0
- package/packages/web/dist/assets/ResizableTextarea-DERSH3Wz.css +1 -0
- package/packages/web/dist/assets/SessionCard-B6d5ijDW.js +1 -0
- package/packages/web/dist/assets/SessionDetailView-DWbXdx7A.js +36 -0
- package/packages/web/dist/assets/SessionDetailView-ULeIkWS0.css +1 -0
- package/packages/web/dist/assets/{SessionFormOptions-B6AxyREh.js → SessionFormOptions-Dz9ik4Fo.js} +1 -1
- package/packages/web/dist/assets/{SessionListView-B5_6gW49.css → SessionListView-3-xx6EVs.css} +1 -1
- package/packages/web/dist/assets/SessionListView-C129buBe.js +1 -0
- package/packages/web/dist/assets/{SessionLogStream-LlZ3z_Xj.js → SessionLogStream-BvXUNNBZ.js} +6 -6
- package/packages/web/dist/assets/{SettingsView-CTGiGvR2.js → SettingsView-DW1NvpX_.js} +1 -1
- package/packages/web/dist/assets/SlashCommandWizard-DleYBxrE.js +1 -0
- package/packages/web/dist/assets/{SummarySettingsView-BR2ZjEa3.js → SummarySettingsView-CLUfcWvf.js} +1 -1
- package/packages/web/dist/assets/TemplateDetailView-B5NI2oTR.css +1 -0
- package/packages/web/dist/assets/TemplateDetailView-Cukb205e.js +1 -0
- package/packages/web/dist/assets/{commandButtons-BfqR-fqq.js → commandButtons-DejH0rVN.js} +1 -1
- package/packages/web/dist/assets/index-BD7Y3rBE.js +3 -0
- package/packages/web/dist/assets/{index-BY174HVJ.css → index-Bd20AzX1.css} +1 -1
- package/packages/web/dist/assets/index-BgJiarKe.js +1 -0
- package/packages/web/dist/assets/index-Bk32fSSG.js +1 -0
- package/packages/web/dist/assets/index-BkA6pF2Z.js +1 -0
- package/packages/web/dist/assets/index-Cltr-Ldt.js +7 -0
- package/packages/web/dist/assets/index-Co-46Tp3.js +1 -0
- package/packages/web/dist/assets/index-Cpykk857.js +1 -0
- package/packages/web/dist/assets/index-CtABl0D1.js +1 -0
- package/packages/web/dist/assets/index-Cuqk5m9S.js +1 -0
- package/packages/web/dist/assets/{index-fK8FIZgP.js → index-CvXApbVC.js} +15 -15
- package/packages/web/dist/assets/index-D2gN-xEH.js +1 -0
- package/packages/web/dist/assets/index-Dd3WpmyQ.js +1 -0
- package/packages/web/dist/assets/index-Dk6--9rj.js +1 -0
- package/packages/web/dist/assets/{index-DgkC10TW.js → index-MZf7MlPX.js} +3 -3
- package/packages/web/dist/assets/{index-DtfUt785.js → index-NShCcwfj.js} +1 -1
- package/packages/web/dist/assets/index-hA3VEuSq.js +1 -0
- package/packages/web/dist/assets/index-p0mp3nca.js +1 -0
- package/packages/web/dist/assets/index-qntNa5r_.js +1 -0
- package/packages/web/dist/assets/index-qq9ceNSK.js +1 -0
- package/packages/web/dist/assets/projectDefaults-D9xkp2XR.js +1 -0
- package/packages/web/dist/assets/{projects-DXYQNJIi.js → projects-BvLADGKx.js} +1 -1
- package/packages/web/dist/assets/{providers-1bnH-exJ.js → providers-DZ-fOa4G.js} +1 -1
- package/packages/web/dist/assets/{sessions-6zGUlFrt.js → sessions-DETEyjPI.js} +1 -1
- package/packages/web/dist/assets/{settings-MbfRir0d.js → settings-TWfbahn5.js} +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/assets/ApiClient-C3ztI9s9.js +0 -1
- package/packages/web/dist/assets/ArchiveConfirmModal-BlCyn5Vt.js +0 -1
- package/packages/web/dist/assets/CommandButtonDetailView-CdSCPp78.js +0 -1
- package/packages/web/dist/assets/CommandButtonDetailView-DBm3rzhw.css +0 -1
- package/packages/web/dist/assets/EffortLevelSelector-hc2MNKg6.js +0 -1
- package/packages/web/dist/assets/MarkdownEditor-ucRAP_UM.js +0 -2
- package/packages/web/dist/assets/ModelSelector-CwTz8ZWO.js +0 -1
- package/packages/web/dist/assets/NewSessionView-BsDrp8mj.js +0 -3
- package/packages/web/dist/assets/ProjectEditView-CwTOeSun.js +0 -1
- package/packages/web/dist/assets/ProjectEditView-J15mcsWz.css +0 -1
- package/packages/web/dist/assets/ProvidersView-bZemq_Rv.css +0 -1
- package/packages/web/dist/assets/ProvidersView-nY9GnDdO.js +0 -1
- package/packages/web/dist/assets/QuickResponseSettings-B352c75l.css +0 -1
- package/packages/web/dist/assets/QuickResponseSettings-BQwQXuL7.js +0 -1
- package/packages/web/dist/assets/QuickResponsesPanel-BlFDvnZ2.css +0 -1
- package/packages/web/dist/assets/QuickResponsesPanel-BzSYcCSP.js +0 -1
- package/packages/web/dist/assets/ResizableTextarea-B3YIdIXv.js +0 -1
- package/packages/web/dist/assets/ResizableTextarea-DsU3TVwF.css +0 -1
- package/packages/web/dist/assets/SessionCard-CjE1tXiT.js +0 -1
- package/packages/web/dist/assets/SessionDetailView-3cPZrbS3.js +0 -36
- package/packages/web/dist/assets/SessionDetailView-CZRZMrfM.css +0 -1
- package/packages/web/dist/assets/SessionListView-CLXBfLcq.js +0 -1
- package/packages/web/dist/assets/SlashCommandWizard-Cy04d7-o.js +0 -1
- package/packages/web/dist/assets/TemplateDetailView-DH6Oswsp.js +0 -1
- package/packages/web/dist/assets/TemplateDetailView-DT2m06W7.css +0 -1
- package/packages/web/dist/assets/index-1zziPL6l.js +0 -1
- package/packages/web/dist/assets/index-7kzHPxSF.js +0 -1
- package/packages/web/dist/assets/index-B0N_obMc.js +0 -1
- package/packages/web/dist/assets/index-BNk_gdfI.js +0 -1
- package/packages/web/dist/assets/index-CSqaAH-0.js +0 -1
- package/packages/web/dist/assets/index-C_q4WlK8.js +0 -1
- package/packages/web/dist/assets/index-D1wpU4y0.js +0 -7
- package/packages/web/dist/assets/index-D5zCA8sD.js +0 -1
- package/packages/web/dist/assets/index-DGR8ELWY.js +0 -1
- package/packages/web/dist/assets/index-DHga8pXo.js +0 -1
- package/packages/web/dist/assets/index-DSby02Wl.js +0 -1
- package/packages/web/dist/assets/index-DqjXJTVI.js +0 -1
- package/packages/web/dist/assets/index-_4S2uLDI.js +0 -1
- package/packages/web/dist/assets/index-gmiZeFXN.js +0 -1
- package/packages/web/dist/assets/index-irD539ZM.js +0 -3
- package/packages/web/dist/assets/index-yq-E1Y00.js +0 -1
|
@@ -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}.template-selector[data-v-77a4f989]{padding:1rem;background:var(--color-bg-soft);border-radius:.5rem;margin-bottom:1rem}.selector-label[data-v-77a4f989]{display:block;font-weight:500;font-size:.875rem;margin-bottom:.5rem;color:var(--color-text)}.selector-wrapper[data-v-77a4f989]{display:flex;gap:.5rem;align-items:center}.selector-wrapper .form-input[data-v-77a4f989]{flex:1}.btn-clear[data-v-77a4f989]{background:none;border:1px solid var(--color-border);border-radius:4px;padding:.5rem .75rem;cursor:pointer;color:var(--color-text-soft);font-size:.875rem;transition:all .15s}.btn-clear[data-v-77a4f989]:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-error);border-color:var(--color-error)}.btn-clear[data-v-77a4f989]:disabled{opacity:.5;cursor:not-allowed}.template-preview[data-v-77a4f989]{margin-top:.75rem;padding:.75rem;background:var(--color-background);border-radius:.375rem;border:1px solid var(--color-border)}.template-prompt-preview[data-v-77a4f989]{margin:0;font-size:.8rem;color:var(--color-text-soft);line-height:1.4;font-style:italic}.chain-indicator[data-v-77a4f989]{display:inline-block;margin-top:.5rem;font-size:.75rem;padding:.2rem .5rem;background:var(--color-warning, #f0ad4e);color:#333;border-radius:4px}.selector-help[data-v-77a4f989]{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.saving-indicator[data-v-77a4f989]{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.75rem;color:var(--color-text-soft)}@media (max-width: 480px){.template-selector[data-v-77a4f989]{padding:.75rem}.selector-wrapper[data-v-77a4f989]{flex-direction:column;align-items:stretch}.btn-clear[data-v-77a4f989]{align-self:flex-end}}.orchestration-panel[data-v-9baeb9dc]{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-9baeb9dc]{display:flex;align-items:center;justify-content:space-between;margin-bottom:0;gap:.5rem}.panel-header.cursor-pointer[data-v-9baeb9dc]{cursor:pointer}.header-left[data-v-9baeb9dc]{display:flex;align-items:center;gap:.5rem;flex:1}.toggle-button[data-v-9baeb9dc]{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-9baeb9dc]:hover{color:var(--color-text);background:var(--color-background-mute)}.chevron-icon[data-v-9baeb9dc]{width:1rem;height:1rem;transition:transform .2s ease}.toggle-button[aria-expanded=true] .chevron-icon[data-v-9baeb9dc]{transform:rotate(180deg)}.panel-title[data-v-9baeb9dc]{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-soft);letter-spacing:.05em}.orchestration-content[data-v-9baeb9dc]{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.schedule-row[data-v-9baeb9dc]{display:flex;flex-direction:column;justify-content:flex-start}.template-row[data-v-9baeb9dc]{padding-top:.75rem;border-top:1px solid var(--color-border);margin-top:.75rem}.btn-secondary[data-v-9baeb9dc]{background-color:var(--color-background-soft);border:1px solid var(--color-border);color:var(--color-text-soft)}.btn-secondary[data-v-9baeb9dc]:hover{background-color:var(--color-background-mute)}.btn-schedule[data-v-9baeb9dc]{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-9baeb9dc]:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.btn-schedule[data-v-9baeb9dc]:disabled{opacity:.5;cursor:not-allowed}.schedule-disabled-hint[data-v-9baeb9dc]{margin:.5rem 0 0;padding-top:.5rem;font-size:.75rem;color:var(--color-text-soft);font-style:italic}.auto-reschedule-row[data-v-9baeb9dc]{padding-top:.75rem;border-top:1px solid var(--color-border);margin-top:.75rem}.auto-reschedule-content[data-v-9baeb9dc]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.reschedule-icon[data-v-9baeb9dc]{font-size:1rem;flex-shrink:0}.reschedule-label[data-v-9baeb9dc]{font-size:.9rem;color:var(--color-text)}.btn-status[data-v-9baeb9dc]{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-9baeb9dc]:hover{background:#22c5ff26;border-color:#22c5ff80;color:var(--color-text)}.status-badge[data-v-9baeb9dc]{font-size:.8rem;color:var(--color-text-soft)}.edit-link[data-v-9baeb9dc]{font-size:.8rem;text-decoration:underline;opacity:.7;transition:opacity .15s}.btn-status:hover .edit-link[data-v-9baeb9dc]{opacity:1}.btn-configure[data-v-9baeb9dc]{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-9baeb9dc]:hover{background:var(--color-background-mute);border-color:#22c5ff80;color:var(--color-text)}.modal-backdrop[data-v-c6c0f463]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1250}.modal-content[data-v-c6c0f463]{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-c6c0f463]{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-c6c0f463]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-c6c0f463]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-c6c0f463]:hover{color:var(--color-text)}.modal-body[data-v-c6c0f463]{flex:1;overflow-y:auto;min-height:0;padding:1.5rem}.form-section[data-v-c6c0f463]{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border)}.form-section[data-v-c6c0f463]:last-of-type{border-bottom:none}.section-title[data-v-c6c0f463]{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text)}.error-message[data-v-c6c0f463]{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-c6c0f463]{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-c6c0f463]{margin-bottom:1rem}.form-label[data-v-c6c0f463]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-c6c0f463]{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-c6c0f463]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-c6c0f463]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-c6c0f463]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-c6c0f463]{display:none}.toggle-slider[data-v-c6c0f463]{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-c6c0f463]: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-c6c0f463]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-c6c0f463]:after{transform:translate(1.25rem)}.toggle-label[data-v-c6c0f463]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-c6c0f463]{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-c6c0f463]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-c6c0f463]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-c6c0f463]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-c6c0f463]{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-c6c0f463]{background:var(--color-primary);color:#fff}.btn-primary[data-v-c6c0f463]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-c6c0f463]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-c6c0f463]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-c6c0f463]:hover{background:var(--color-background-secondary)}.modal-backdrop[data-v-41784ddc]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1250}.modal-content[data-v-41784ddc]{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-41784ddc]{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-41784ddc]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-41784ddc]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-41784ddc]:hover{color:var(--color-text)}.modal-body[data-v-41784ddc]{flex:1;overflow-y:auto;min-height:0;padding:1.5rem}.error-message[data-v-41784ddc]{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-41784ddc]{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-41784ddc]{margin-bottom:1rem}.form-label[data-v-41784ddc]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-41784ddc]{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-41784ddc]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-41784ddc]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-41784ddc]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-41784ddc]{display:none}.toggle-slider[data-v-41784ddc]{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-41784ddc]: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-41784ddc]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-41784ddc]:after{transform:translate(1.25rem)}.toggle-label[data-v-41784ddc]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-41784ddc]{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-41784ddc]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-41784ddc]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-41784ddc]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-41784ddc]{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-41784ddc]{background:var(--color-primary);color:#fff}.btn-primary[data-v-41784ddc]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-41784ddc]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-41784ddc]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-41784ddc]:hover{background:var(--color-background-secondary)}.scheduled-child-card[data-v-36c26187]{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;border:1px solid var(--color-border);border-left:3px solid var(--color-primary);border-radius:var(--border-radius, 4px);background:var(--color-background, rgba(255, 255, 255, .02))}.card-header[data-v-36c26187]{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.session-info[data-v-36c26187]{flex:1;min-width:0}.session-name-link[data-v-36c26187]{text-decoration:none;color:inherit;transition:color .2s}.session-name-link:hover .session-name[data-v-36c26187]{color:var(--color-primary, #22c5ff)}.session-name[data-v-36c26187]{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);word-break:break-word;transition:color .2s}.status-badge[data-v-36c26187]{display:inline-block;padding:.25rem .5rem;border-radius:.375rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;flex-shrink:0}.status-scheduled[data-v-36c26187]{background:#22c5ff33;color:#22c5ff;border:1px solid rgba(34,197,255,.3)}.timing-info[data-v-36c26187]{display:flex;flex-direction:column;gap:.5rem}.timing-item[data-v-36c26187]{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.timing-icon[data-v-36c26187]{font-size:1rem;flex-shrink:0}.timing-details[data-v-36c26187]{display:flex;flex-direction:column;gap:.125rem;min-width:0;flex:1}.timing-text[data-v-36c26187]{color:var(--color-text);font-weight:500}.timing-absolute[data-v-36c26187]{font-size:.8125rem;color:var(--color-text-soft)}.timing-actions[data-v-36c26187]{display:flex;gap:.5rem;flex-shrink:0}.btn-link[data-v-36c26187]{background:none;border:none;cursor:pointer;font-size:.8125rem;font-weight:500;white-space:nowrap;padding:0;color:var(--color-primary)}.btn-link[data-v-36c26187]:hover{text-decoration:underline}.btn-link[data-v-36c26187]:disabled{opacity:.5;cursor:not-allowed}.btn-cancel[data-v-36c26187]{color:var(--color-error, #cf222e)}.session-overview[data-v-6ec42dd5]{margin-bottom:1.5rem}.overview-header[data-v-6ec42dd5]{margin-bottom:1rem}.overview-header h3[data-v-6ec42dd5]{margin:0;font-size:1rem;font-weight:600}.overview-summary[data-v-6ec42dd5]{padding:.75rem 0;border-top:1px solid var(--color-border)}.overview-summary-loading[data-v-6ec42dd5]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem}.overview-summary .summary-text[data-v-6ec42dd5]{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text);line-height:1.4}.overview-metrics[data-v-6ec42dd5]{display:flex;gap:1.5rem;padding:.75rem 0;border-top:1px solid var(--color-border)}.metric[data-v-6ec42dd5]{display:flex;flex-direction:column;gap:.125rem}.metric-value[data-v-6ec42dd5]{font-size:.875rem;font-weight:600;color:var(--color-text)}.metric-label[data-v-6ec42dd5]{font-size:.6875rem;color:var(--color-text-soft);text-transform:uppercase;letter-spacing:.05em}.loading-spinner-small[data-v-6ec42dd5]{width:12px;height:12px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-6ec42dd5 1s linear infinite}@keyframes spin-6ec42dd5{to{transform:rotate(360deg)}}.status-badge[data-v-6ec42dd5]{display:inline-block;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.status-badge.pr-merged[data-v-6ec42dd5]{background:#8250df26;color:#8250df}.status-badge.pr-open[data-v-6ec42dd5]{background:#2ea04326;color:var(--color-success)}.status-badge.pr-closed[data-v-6ec42dd5]{background:#6e778126;color:#6e7781}.status-badge.pr-draft[data-v-6ec42dd5]{background:#d2992226;color:var(--color-warning)}.status-badge.ci-success[data-v-6ec42dd5]{background:#2ea04326;color:var(--color-success)}.status-badge.ci-pending[data-v-6ec42dd5]{background:#d2992226;color:var(--color-warning)}.pr-section[data-v-6ec42dd5]{padding-top:.75rem;border-top:1px solid var(--color-border)}.overview-pr[data-v-6ec42dd5]{display:flex;align-items:center;gap:.75rem}.pr-warnings[data-v-6ec42dd5]{margin-top:.5rem;padding:.5rem .75rem;background:#cf222e14;border-radius:6px;font-size:.8125rem;color:var(--color-error, #cf222e)}.warning-item[data-v-6ec42dd5]{padding:.125rem 0}.ci-failure-list[data-v-6ec42dd5]{margin-top:.25rem;padding-left:1rem}.ci-failure-item[data-v-6ec42dd5]{font-size:.75rem;color:var(--color-text-secondary, #8b949e);padding:.0625rem 0}.pr-link[data-v-6ec42dd5]{color:var(--color-primary);text-decoration:none;font-weight:500}.pr-link[data-v-6ec42dd5]:hover{text-decoration:underline}.overview-scheduled-sessions[data-v-6ec42dd5]{padding-top:.75rem;border-top:1px solid var(--color-border)}.scheduled-sessions-heading[data-v-6ec42dd5]{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--color-text-soft)}.scheduled-sessions-list[data-v-6ec42dd5]{display:flex;flex-direction:column;gap:.75rem}.scheduled-session-card[data-v-6ec42dd5]{padding:.75rem}.summary-tab[data-v-3c15cc1f]{padding:1rem 0}.loading-state[data-v-3c15cc1f],.generating-state[data-v-3c15cc1f]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.summary-empty-state[data-v-3c15cc1f]{display:flex;align-items:center;justify-content:center;min-height:300px;text-align:center}.summary-empty-state-content[data-v-3c15cc1f]{max-width:320px}.summary-empty-state-text[data-v-3c15cc1f]{font-size:1rem;font-weight:500;color:var(--color-text);margin:0 0 .5rem}.summary-empty-state-hint[data-v-3c15cc1f]{font-size:.875rem;color:var(--color-text-soft);margin:0;line-height:1.4}.summary-generate-action[data-v-3c15cc1f]{margin-top:1rem}.missing-summary-action[data-v-3c15cc1f]{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;color:var(--color-text-soft)}.missing-summary-text[data-v-3c15cc1f]{font-size:.875rem}.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-af066894]{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem;padding:0 .5rem}.session-header.is-archived[data-v-af066894]{border-left:3px solid #f59e0b;padding-left:calc(.5rem - 3px)}.session-header-row[data-v-af066894]{display:flex;align-items:center;gap:.5rem}.session-name-wrapper[data-v-af066894]{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.25rem;flex:1;min-width:0}.btn-icon[data-v-af066894]{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-af066894]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-icon[data-v-af066894]:active{background:#ffffff26}.btn-star[data-v-af066894]{display:inline-flex;align-items:center;gap:.375rem}.btn-star svg[data-v-af066894]{flex-shrink:0}.btn-star.is-starred[data-v-af066894]{color:var(--color-warning, #f0ad4e)}.lane-chip[data-v-af066894]{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-af066894]{cursor:pointer;transition:background-color .15s}.lane-chip-clickable[data-v-af066894]:hover{background:#ffffff1a}.lane-chip svg[data-v-af066894]{flex-shrink:0;opacity:.7}.session-name[data-v-af066894]{margin:0;font-size:1.25rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4;min-width:0}.archived-badge[data-v-af066894]{display:inline-flex;align-items:center;gap:.25rem;min-height:1.5rem;padding:.1875rem .5rem;border:1px solid rgba(245,158,11,.45);border-radius:4px;background:#f59e0b24;color:#fbbf24;font-size:.75rem;font-weight:600;line-height:1;text-transform:uppercase;white-space:nowrap}.archived-badge svg[data-v-af066894]{flex-shrink:0}.branch-pr-indicators[data-v-af066894]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.left-indicators[data-v-af066894]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex:1;min-width:0}@media (max-width: 768px){.session-header-row[data-v-af066894]{align-items:flex-start;min-height:auto;padding-top:.25rem}.session-name-wrapper[data-v-af066894]{grid-template-columns:minmax(0,1fr) auto;column-gap:.375rem;row-gap:.25rem}.name-edit-trigger[data-v-af066894]{grid-column:2;grid-row:1}.session-name[data-v-af066894]{font-size:1rem}.archived-badge[data-v-af066894]{grid-column:1 / -1;grid-row:2;justify-self:start;font-size:.6875rem;min-height:1.375rem}}.name-edit-form[data-v-af066894]{display:flex;align-items:center;gap:.5rem}.name-edit-input[data-v-af066894]{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-af066894]:focus{outline:none;border-color:var(--color-primary, #00bcd4)}.name-edit-input[data-v-af066894]::placeholder{color:var(--color-text-soft, #888)}.pr-edit-btn[data-v-af066894]{width:28px;height:28px;border-radius:4px}.pr-save-btn[data-v-af066894]{color:var(--color-success, #4caf50)}.pr-save-btn[data-v-af066894]:hover{background:#4caf501a}.pr-cancel-btn[data-v-af066894]{color:var(--color-text-soft, #888)}.pr-cancel-btn[data-v-af066894]:hover{background:#ffffff1a}.pr-clear-btn[data-v-af066894]{color:var(--color-error, #f44336)}.pr-clear-btn[data-v-af066894]:hover{background:#f443361a}.name-edit-trigger[data-v-af066894]{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-af066894]:hover{color:var(--color-primary, #00bcd4);background:#00bcd41a}.btn-link[data-v-af066894]{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-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-55317794]{-webkit-user-select:none;user-select:none}.tree-item-row[data-v-55317794]{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-55317794]:hover{background:var(--color-background-soft)}.tree-item-row.active[data-v-55317794]{background:#58a6ff1a;border-left:3px solid var(--color-primary);padding-left:calc(.75rem - 3px)}.tree-indent[data-v-55317794]{flex-shrink:0}.branch-indicator[data-v-55317794]{display:flex;align-items:center;color:#8b5cf6b3;flex-shrink:0}.expand-toggle[data-v-55317794]{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-55317794]:hover{background:var(--color-background-mute);color:var(--color-text)}.expand-icon[data-v-55317794]{font-size:.5rem;transition:transform .15s}.expand-icon.expanded[data-v-55317794]{transform:rotate(90deg)}.expand-placeholder[data-v-55317794]{width:16px;flex-shrink:0}.conv-name[data-v-55317794]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.conv-meta[data-v-55317794]{font-size:.75rem;color:var(--color-text-soft);white-space:nowrap;flex-shrink:0}.conv-tokens[data-v-55317794]{font-family:var(--font-mono)}.children-badge[data-v-55317794]{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-55317794]{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-55317794]{opacity:1}.delete-btn[data-v-55317794]:hover{background:var(--color-danger, #ef4444);color:#fff}.tree-children[data-v-55317794]{margin-left:.25rem;border-left:1px solid var(--color-border);padding-left:.25rem}.conversation-panel[data-v-7e3a4507]{background:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:1rem}.panel-header[data-v-7e3a4507]{padding:.5rem .75rem}.header-row[data-v-7e3a4507]{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.dropdown-container[data-v-7e3a4507]{position:relative;flex:1;max-width:300px}.dropdown-trigger[data-v-7e3a4507]{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-7e3a4507]:hover{border-color:var(--color-primary)}.dropdown-label[data-v-7e3a4507]{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow[data-v-7e3a4507]{font-size:.5rem;color:var(--color-text-soft);margin-left:.5rem}.dropdown-menu[data-v-7e3a4507]{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-7e3a4507]{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-7e3a4507]:hover{background:var(--color-background-mute)}.cost-label[data-v-7e3a4507]{font-size:.75rem;color:var(--color-text-soft)}.cost-value[data-v-7e3a4507]{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-accent, var(--color-primary))}.toggle-btn[data-v-7e3a4507]{background:none;border:none;color:var(--color-text-soft);font-size:.5rem;cursor:pointer;padding:.25rem}.toggle-btn[data-v-7e3a4507]:hover{color:var(--color-text)}.btn-new[data-v-7e3a4507]{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-7e3a4507]:hover{border-color:var(--color-primary);background:var(--color-background-soft)}@media (max-width: 480px){.btn-new[data-v-7e3a4507]{margin-left:0;flex:1 0 100%;justify-content:center}}.token-breakdown[data-v-7e3a4507]{padding:.75rem;border-top:1px solid var(--color-border)}.token-header[data-v-7e3a4507]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.token-label[data-v-7e3a4507]{font-size:.875rem;color:var(--color-text-soft)}.token-value[data-v-7e3a4507]{font-family:var(--font-mono);font-size:1.125rem;font-weight:700;color:var(--color-accent, var(--color-primary))}.token-grid[data-v-7e3a4507]{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.75rem}@media (min-width: 640px){.token-grid[data-v-7e3a4507]{grid-template-columns:repeat(4,1fr)}}.token-item[data-v-7e3a4507]{display:flex;flex-direction:column;align-items:center;padding:.5rem;background:var(--color-background);border-radius:.25rem;text-align:center}.token-type[data-v-7e3a4507]{font-size:.625rem;text-transform:uppercase;color:var(--color-text-soft);margin-bottom:.25rem}.token-count[data-v-7e3a4507]{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-text)}.token-weight[data-v-7e3a4507]{font-size:.625rem;color:var(--color-text-soft)}.token-weighted[data-v-7e3a4507]{font-family:var(--font-mono);font-size:.625rem;color:var(--color-accent, var(--color-primary))}.breakdown-footer[data-v-7e3a4507]{display:flex;align-items:center;justify-content:flex-end}.settings-btn[data-v-7e3a4507]{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-7e3a4507]: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-7ed8f10e]{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-7ed8f10e]{background-color:#58a6ff1a;border-color:#58a6ff4d}.message-assistant[data-v-7ed8f10e]{background-color:var(--color-background-soft)}.message-system[data-v-7ed8f10e]{background-color:#8b949e1a;border-color:#8b949e4d}.message-header[data-v-7ed8f10e]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.message-role[data-v-7ed8f10e]{font-weight:600;font-size:.875rem;text-transform:capitalize}.message-timestamp[data-v-7ed8f10e]{display:flex;flex-direction:column;align-items:flex-end;margin-left:auto;line-height:1.2}.message-date[data-v-7ed8f10e],.message-time[data-v-7ed8f10e]{font-size:.75rem;color:var(--color-text-soft)}.message-model[data-v-7ed8f10e]{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-7ed8f10e]{white-space:pre-wrap;word-break:break-word}.message-content[data-v-7ed8f10e] .markdown-viewer{white-space:normal}.message-tools[data-v-7ed8f10e]{margin-top:.75rem}.message-tools details[data-v-7ed8f10e]{margin-top:.5rem}.message-tools summary[data-v-7ed8f10e]{cursor:pointer;font-size:.875rem;color:var(--color-text-soft)}.message-tools pre[data-v-7ed8f10e]{margin-top:.5rem;font-size:.75rem}.message-attachments[data-v-7ed8f10e]{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem;padding-top:.5rem;border-top:1px dashed var(--color-border)}.attachment-chip[data-v-7ed8f10e]{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-7ed8f10e]{font-size:.875rem}.attachment-name[data-v-7ed8f10e]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.attachment-size[data-v-7ed8f10e]{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)}}.token-usage-panel[data-v-1f28bdb7]{display:flex;align-items:center;gap:.5rem;position:relative}.token-display[data-v-1f28bdb7]{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}.token-display[data-v-1f28bdb7]:hover{background:var(--color-background-mute)}.token-label[data-v-1f28bdb7]{font-size:.75rem;color:var(--color-text-soft)}.token-value[data-v-1f28bdb7]{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--color-accent, var(--color-primary))}.token-value.clickable[data-v-1f28bdb7]{cursor:pointer;transition:opacity .15s}.token-value.clickable[data-v-1f28bdb7]:hover{opacity:.8}.token-breakdown[data-v-1f28bdb7]{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}.token-header[data-v-1f28bdb7]{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.token-grid[data-v-1f28bdb7]{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}@media (min-width: 640px){.token-grid[data-v-1f28bdb7]{grid-template-columns:repeat(5,1fr)}}.token-item[data-v-1f28bdb7]{display:flex;flex-direction:column;align-items:center;padding:.5rem;background:var(--color-background);border-radius:.25rem;text-align:center}.token-type[data-v-1f28bdb7]{font-size:.625rem;text-transform:uppercase;color:var(--color-text-soft);margin-bottom:.25rem}.token-count[data-v-1f28bdb7]{font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-text)}.messages[data-v-87b2eefd]{padding:.25rem 0;position:relative;max-height:65vh;overflow-y:auto;scroll-behavior:smooth}.conversation-controls-row[data-v-87b2eefd]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem 0;position:relative;min-height:32px}.conversation-scroll-actions[data-v-87b2eefd]{display:flex;align-items:center;gap:.5rem}.conversation-scroll-btn[data-v-87b2eefd]{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-87b2eefd]:hover{background:#374151f2;color:#d1d5db}.conversation-scroll-btn[data-v-87b2eefd]:active{transform:scale(.95)}.scroll-to-claude-btn[data-v-87b2eefd]{font-size:1rem;white-space:nowrap;font-weight:500}@media (min-width: 1200px){.messages[data-v-87b2eefd]{max-height:70vh}}@media (max-height: 700px){.messages[data-v-87b2eefd]{max-height:50vh}}@media (max-height: 500px){.messages[data-v-87b2eefd]{max-height:40vh}}@media (max-width: 600px){.conversation-scroll-btn[data-v-87b2eefd]{padding:.5rem .75rem;min-width:44px;min-height:44px}}.input-form[data-v-cb4672a1]{display:flex;flex-direction:column;gap:.5rem}.input-form textarea[data-v-cb4672a1]{width:100%}.input-controls[data-v-cb4672a1]{display:flex;align-items:center;gap:1rem}.session-options[data-v-cb4672a1]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;flex:1}.thinking-toggle[data-v-cb4672a1]{display:flex;align-items:center;gap:.5rem}.toggle-label[data-v-cb4672a1]{font-size:.875rem;color:var(--color-text-soft)}.mode-switcher[data-v-cb4672a1]{display:flex;align-items:center;gap:.5rem}.toggle-switch[data-v-cb4672a1]{position:relative;display:inline-block;width:40px;height:22px}.toggle-switch input[data-v-cb4672a1]{opacity:0;width:0;height:0}.toggle-slider[data-v-cb4672a1]{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-cb4672a1]: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-cb4672a1]{background-color:var(--color-primary);border-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-cb4672a1]:before{transform:translate(18px);background-color:#fff}.toggle-switch input:disabled+.toggle-slider[data-v-cb4672a1]{opacity:.5;cursor:not-allowed}.auto-send-row[data-v-cb4672a1]{padding:.5rem 0}.auto-send-label[data-v-cb4672a1]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text-soft, #9ca3af)}.auto-send-checkbox[data-v-cb4672a1]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--color-primary, #06b6d4)}.auto-send-text[data-v-cb4672a1]{-webkit-user-select:none;user-select:none}.send-button-row[data-v-cb4672a1]{padding-top:.75rem;margin-bottom:14px;display:flex;justify-content:center}.btn-send-full[data-v-cb4672a1]{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-cb4672a1]{width:100%}@media (max-width: 600px){.input-controls[data-v-cb4672a1]{flex-wrap:wrap}.session-options[data-v-cb4672a1]{width:100%;justify-content:flex-start}}@media (max-width: 400px){.mode-label[data-v-cb4672a1]{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-306c39ee]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1250}.modal-content[data-v-306c39ee]{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-306c39ee]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-306c39ee]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-306c39ee]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-306c39ee]:hover{color:var(--color-text)}.modal-body[data-v-306c39ee]{padding:1.5rem}.modal-footer[data-v-306c39ee]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-306c39ee]{margin-bottom:1rem}.form-label[data-v-306c39ee]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-306c39ee]{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-306c39ee]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}textarea.form-input[data-v-306c39ee]{resize:vertical;min-height:80px}.form-help[data-v-306c39ee]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.btn[data-v-306c39ee]{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-306c39ee]{background:var(--color-primary);color:#fff}.btn-primary[data-v-306c39ee]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-306c39ee]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-306c39ee]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-306c39ee]:hover{background:var(--color-background-secondary)}.scheduling-info[data-v-308bc556]{border-radius:var(--border-radius, 6px);padding:1.5rem;margin-bottom:1rem}.scheduled-panel[data-v-308bc556]{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-308bc556]{margin-bottom:1rem}.configure-btn[data-v-308bc556]{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-308bc556]:hover{background:#22c5ff14;border-color:#22c5ff80;color:var(--color-text)}.configure-icon[data-v-308bc556]{font-size:1rem;opacity:.7}.configure-btn:hover .configure-icon[data-v-308bc556]{opacity:1}.configure-text[data-v-308bc556]{flex:1;text-align:left}.configure-arrow[data-v-308bc556]{opacity:.5;transition:transform .2s ease,opacity .2s ease}.configure-btn:hover .configure-arrow[data-v-308bc556]{opacity:1;transform:translate(2px)}.info-header[data-v-308bc556]{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}.info-icon[data-v-308bc556]{font-size:1.5rem;flex-shrink:0}.info-title[data-v-308bc556]{margin:0;font-size:1.1rem;font-weight:600;color:var(--color-text);flex:1}.info-content[data-v-308bc556]{display:flex;flex-direction:column;gap:1rem}.countdown-section[data-v-308bc556]{background:var(--color-background, rgba(255, 255, 255, .05));padding:1rem;border-radius:var(--border-radius, 4px)}.countdown-text[data-v-308bc556]{margin:0 0 .25rem;font-size:1rem;color:var(--color-text);line-height:1.4}.countdown-text strong[data-v-308bc556]{color:var(--color-primary);font-weight:600}.absolute-time[data-v-308bc556]{margin:0;font-size:.875rem;color:var(--color-text-soft)}.reschedule-info[data-v-308bc556]{display:flex;flex-direction:column;gap:.5rem}.reschedule-badge[data-v-308bc556]{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-308bc556]{font-size:1rem}.badge-label[data-v-308bc556]{font-size:.875rem;color:var(--color-text);font-weight:500}.actions[data-v-308bc556]{display:flex;gap:.75rem;flex-wrap:wrap}.btn[data-v-308bc556]{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-308bc556]{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary)}.btn-primary[data-v-308bc556]:hover:not(:disabled){opacity:.9;transform:translateY(-1px);box-shadow:0 4px 8px #22c5ff33}.btn-primary[data-v-308bc556]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-308bc556]{background:var(--color-background);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary[data-v-308bc556]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-308bc556]{background:var(--color-error, #dc2626);color:#fff;border:1px solid var(--color-error, #dc2626)}.btn-danger[data-v-308bc556]:hover:not(:disabled){opacity:.9}.btn-danger[data-v-308bc556]:disabled{opacity:.6;cursor:not-allowed}.btn-sm[data-v-308bc556]{padding:.5rem 1rem;font-size:.85rem}@media (max-width: 640px){.scheduling-info[data-v-308bc556]{padding:1rem}.info-header[data-v-308bc556]{gap:.5rem;margin-bottom:1rem}.info-icon[data-v-308bc556]{font-size:1.25rem}.info-title[data-v-308bc556]{font-size:1rem}}.conversation-tab[data-v-37ed6507]{display:flex;flex-direction:column;transition:opacity .3s ease}.conversation-tab.connection-stale[data-v-37ed6507]{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-ab4dff58]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;background:#111827;display:block;overflow:hidden;overflow-y:hidden;overscroll-behavior:none}@media (min-width: 700px) and (min-height: 700px){.overlay-backdrop[data-v-ab4dff58]{top:var(--viewport-offset-top, 0px);right:0;bottom:auto;left:0;height:var(--visual-viewport-height, 100dvh)}}.overlay-panel-wrapper[data-v-ab4dff58]{position:absolute;inset:0 0 0 auto;height:100%;display:flex;min-height:0;max-width:900px;width:100%;overflow:visible;overscroll-behavior:none}.overlay-close-handle[data-v-ab4dff58]{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-ab4dff58]:hover{background:#0891b2b3}.overlay-close-handle[data-v-ab4dff58]:focus-visible{outline:2px solid var(--color-primary, #06b6d4);outline-offset:2px}.overlay-close-handle .handle-icon[data-v-ab4dff58]{color:var(--color-text-soft, #9ca3af);transition:color .2s ease}.overlay-close-handle:hover .handle-icon[data-v-ab4dff58]{color:#fff}.overlay-close-handle .active-spinner[data-v-ab4dff58]{width:.75rem;height:.75rem;border:2px solid rgba(6,182,212,.3);border-top-color:#06b6d4;border-radius:50%;animation:spin-ab4dff58 .8s linear infinite}@keyframes spin-ab4dff58{to{transform:rotate(360deg)}}.overlay-content[data-v-ab4dff58]{flex:1;width:100%;display:flex;flex-direction:column;overflow:clip;padding:0;box-shadow:-4px 0 20px #00000080;position:relative;background:#111827}.overlay-body[data-v-ab4dff58]{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;background:#111827}.overlay-header[data-v-ab4dff58]{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%}.overlay-header-row[data-v-ab4dff58]{display:flex;align-items:center;width:100%;min-width:0}.overlay-header-selector[data-v-ab4dff58]{position:relative}.overlay-header-actions[data-v-ab4dff58]{justify-content:space-between}.overlay-root-name[data-v-ab4dff58]{font-size:1rem;font-weight:600;color:var(--color-primary, #06b6d4);word-break:break-word}.dropdown-trigger[data-v-ab4dff58]{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-ab4dff58]:hover{background:#ffffff1a}.dropdown-name[data-v-ab4dff58]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-chevron[data-v-ab4dff58]{color:var(--color-text-soft, #9ca3af);margin-left:.5rem;flex-shrink:0}.session-chat-overlay[data-v-ab4dff58] .messages{max-height:none!important;overflow-y:visible!important;flex:1}.session-chat-overlay[data-v-ab4dff58] .conversation-controls-row{position:sticky;bottom:0;z-index:10;background:#111827;pointer-events:none}.session-chat-overlay[data-v-ab4dff58] .conversation-controls-row>*{pointer-events:auto}@media (max-width: 768px){.overlay-body[data-v-ab4dff58]{padding-left:.5rem;padding-right:.5rem}.overlay-header[data-v-ab4dff58]{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-ab4dff58]{max-width:700px}}.session-name-wrapper[data-v-ab4dff58]{display:inline-flex;align-items:center;gap:.25rem;flex:1;min-width:0}.name-edit-form[data-v-ab4dff58]{display:flex;align-items:center;gap:.5rem;flex:1}.name-edit-input[data-v-ab4dff58]{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-ab4dff58]:focus{outline:none;border-color:var(--color-primary, #00bcd4)}.name-edit-input[data-v-ab4dff58]::placeholder{color:var(--color-text-soft, #888)}.btn-icon[data-v-ab4dff58]{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-ab4dff58]:hover{background:#ffffff1a;color:var(--color-text, #ccc)}.btn-icon[data-v-ab4dff58]:active{background:#ffffff26}.pr-edit-btn[data-v-ab4dff58]{width:28px;height:28px}.pr-save-btn[data-v-ab4dff58]{color:var(--color-success, #4caf50)}.pr-save-btn[data-v-ab4dff58]:hover{background:#4caf501a}.pr-cancel-btn[data-v-ab4dff58]{color:var(--color-text-soft, #888)}.pr-cancel-btn[data-v-ab4dff58]:hover{background:#ffffff1a}.pr-clear-btn[data-v-ab4dff58]{color:var(--color-error, #f44336)}.pr-clear-btn[data-v-ab4dff58]:hover{background:#f443361a}.name-edit-trigger[data-v-ab4dff58]{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-ab4dff58]:hover{color:var(--color-primary, #00bcd4);background:#00bcd41a}.add-session-btn[data-v-ab4dff58]{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-ab4dff58]:hover:not(:disabled){background:#06b6d41a;color:var(--color-primary, #06b6d4);border-color:#06b6d44d}.add-session-btn[data-v-ab4dff58]:disabled{opacity:.5;cursor:not-allowed}.btn-link[data-v-ab4dff58]{background:none;border:none;cursor:pointer}.back-to-sessions-link[data-v-ab4dff58]{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-ab4dff58]:hover{color:var(--color-primary, #06b6d4);background:#06b6d41a}.back-to-sessions-text[data-v-ab4dff58]{font-size:.8125rem;margin-left:.25rem}.loading-state[data-v-c1b24493]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.tab-content[data-v-c1b24493]{min-height:400px}.delete-overlay[data-v-c1b24493]{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-c1b24493]{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--color-text, #e0e0e0);font-size:1.125rem}.delete-spinner[data-v-c1b24493]{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-c1b24493 .8s linear infinite}@keyframes spin-c1b24493{to{transform:rotate(360deg)}}.fade-enter-active[data-v-c1b24493],.fade-leave-active[data-v-c1b24493]{transition:opacity .2s ease}.fade-enter-from[data-v-c1b24493],.fade-leave-to[data-v-c1b24493]{opacity:0}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as ve,y as je,x as K,z as Ie,A as Oe,n as R,B as Xe,C as Ze,_ as Ce,a as s,c as a,b as e,F as X,r as te,u as f,E as pe,t as j,i as w,G as ce,k as Fe,o as Be,g as Me,m as I,v as ye,d as Q,p as Ee,f as oe,j as me,w as ke,h as Ke,e as Ge,H as Re,q as Ae,I as Le,J as et,K as Ve,s as tt}from"./index-fK8FIZgP.js";import{u as Pe}from"./projects-DXYQNJIi.js";import{u as $e}from"./sessions-6zGUlFrt.js";import{u as Te,a as He}from"./SessionLogStream-LlZ3z_Xj.js";import{a as xe}from"./ApiClient-C3ztI9s9.js";import{u as We}from"./commandButtons-BfqR-fqq.js";import{S as qe}from"./SessionCard-CjE1tXiT.js";import{u as ze}from"./EffortLevelSelector-hc2MNKg6.js";import{u as nt}from"./providers-1bnH-exJ.js";import{M as st}from"./ModelSelector-CwTz8ZWO.js";import{I as Ye}from"./InterpolationHelp-BO1j9Z3_.js";import{R as ot}from"./ResizableTextarea-B3YIdIXv.js";import{S as at}from"./SessionFormOptions-B6AxyREh.js";import{S as lt,a as rt}from"./SlashCommandWizard-Cy04d7-o.js";import{M as it,A as dt}from"./ArchiveConfirmModal-BlCyn5Vt.js";function ut(){const m=je({}),c=je({}),p=je({});async function b(u){const l=u.filter(k=>!m[k.id]&&!c[k.id]).map(k=>k.id);if(l.length!==0){for(const k of l)c[k]=!0,p[k]=!1;try{const k=await xe.getSessionSummariesBatch(l);for(const r of l)k[r]&&(m[r]=k[r]),c[r]=!1}catch(k){console.warn("Failed to fetch summaries batch:",k.message);for(const r of l)p[r]=!0,c[r]=!1}}}async function d(u){var l;c[u]=!0,p[u]=!1;try{const k=await xe.getSessionSummary(u);k&&(m[u]=k)}catch(k){((l=k.response)==null?void 0:l.status)!==404&&(console.warn(`Failed to fetch summary for session ${u}:`,k.message),p[u]=!0)}finally{c[u]=!1}}async function _(u){p[u]=!1,await d(u)}function F(u,l){m[u]=l,c[u]=!1,p[u]=!1}function T(u){delete m[u],delete c[u],delete p[u]}function S(u,l=400){let k=null;const r=ve(u,()=>{clearTimeout(k),k=setTimeout(()=>{const $=u();b($)},l)});return()=>{clearTimeout(k),r()}}return{summaries:m,loadingSummaries:c,summaryErrors:p,fetchSummariesBatch:b,fetchSummary:d,retryFetchSummary:_,updateSummary:F,cleanupSummary:T,watchSessionsForSummaries:S}}function Je(){const m=$e();function c(u){m.statusFilter===u?m.setStatusFilter(null):m.setStatusFilter(u)}function p(u){m.starredFilter===u?m.setStarredFilter(null):m.setStarredFilter(u)}function b(){m.starredFilter===null?m.setStarredFilter("starred"):m.starredFilter==="starred"?m.setStarredFilter("unstarred"):m.setStarredFilter(null)}const d=K(()=>m.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":m.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred.");function _(){m.scheduledFilter===null?m.setScheduledFilter("scheduled"):m.scheduledFilter==="scheduled"?m.setScheduledFilter("not-scheduled"):m.setScheduledFilter(null)}const F=K(()=>m.scheduledFilter==="scheduled"?"Showing workflows with scheduled sessions. Click to filter non-scheduled.":m.scheduledFilter==="not-scheduled"?"Showing workflows without scheduled sessions. Click to show all.":"Showing all workflows. Click to filter by scheduled."),T=K(()=>{let u=m.groupedSessions;m.starredFilter==="starred"?u=u.filter(y=>y.parent.starred):m.starredFilter==="unstarred"&&(u=u.filter(y=>!y.parent.starred));const l=u.map(y=>({group:y,status:m.getWorkflowAggregatedStatus(y.parent.id)}));let k=l;m.scheduledFilter&&(k=l.filter(({status:y})=>{const E=y.scheduledCount>0;return m.scheduledFilter==="scheduled"?E:!E}));let r=0,$=0;for(const{status:y}of k)y.effectiveStatus==="running"?r++:$++;return{running:r,idle:$}}),S=K(()=>{const u=m.groupedSessions,l=new Map(u.map((r,$)=>[r.parent.id,$]));let k=u;return m.statusFilter&&(k=k.filter(r=>{const y=m.getWorkflowAggregatedStatus(r.parent.id).effectiveStatus;return m.statusFilter==="running"&&y==="running"||m.statusFilter==="idle"&&y==="idle"})),m.starredFilter==="starred"?k=k.filter(r=>r.parent.starred):m.starredFilter==="unstarred"&&(k=k.filter(r=>!r.parent.starred)),m.scheduledFilter&&(k=k.filter(r=>{const y=m.getWorkflowAggregatedStatus(r.parent.id).scheduledCount>0;return!!(m.scheduledFilter==="scheduled"&&y||m.scheduledFilter==="not-scheduled"&&!y)})),k.slice().sort((r,$)=>{const y=l.get(r.parent.id)??999999,E=l.get($.parent.id)??999999;return y-E})});return{toggleFilter:c,toggleStarredFilter:p,toggleStarFilterIcon:b,starFilterTooltip:d,toggleScheduledFilterIcon:_,scheduledFilterTooltip:F,filteredGroupedSessions:S,statusFilterCounts:T}}function ct(m,c){const p=Pe(),b=$e(),d=We(),_=Te(),{fetchSummariesBatch:F,updateSummary:T,cleanupSummary:S}=c,{onReconnect:u}=Ie();function l(h,o,x,v){var Y;const N=d.runs[h],ae=b.sessions.find(J=>J.id===o),ne=(Y=ae==null?void 0:ae.latestCommandRuns)==null?void 0:Y.find(J=>J.runId===h),z=(N==null?void 0:N.startedAt)||(ne==null?void 0:ne.startedAt)||Date.now();d.runs[h]||(d.runs[h]={runId:h,buttonId:x,sessionId:o,status:"running",output:"",exitCode:null,startedAt:z,outputTruncated:!1}),d.appendOutput(h,v),b.updateSessionCommandRun(o,x,{buttonId:x,status:"running",runId:h,startedAt:z})}function k({runId:h,sessionId:o,buttonId:x,exitCode:v,output:N}){d.runs[h]||(d.runs[h]={runId:h,buttonId:x,sessionId:o,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),d.completeRun(h,v,N);const Z=v===0?"success":"error";b.updateSessionCommandRun(o,x,{buttonId:x,status:Z,exitCode:v,runId:h,completedAt:Date.now()})}function r(h,o,x,v){d.runs[h]||(d.runs[h]={runId:h,buttonId:x,sessionId:o,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),d.errorRun(h,v),b.updateSessionCommandRun(o,x,{buttonId:x,status:"error",runId:h,completedAt:Date.now()})}function $(h,o,x){const{onSessionCreated:v,onSessionUpdated:N,onSessionDeleted:Z,onSessionSummaryUpdated:ae,onCommandRunOutput:ne,onCommandRunComplete:z,onCommandRunError:Y,onCommandRunDeleted:J,onKanbanBoardUpdated:le,onKanbanCardMoved:re,onKanbanCardAdded:ie,onKanbanCardRemoved:ge}=h,O=[];return O.push(v(P=>{o.sessionsStore.addSessionToList(P)})),O.push(N(P=>{o.sessionsStore.updateSession(P)})),O.push(Z(P=>{o.sessionsStore.removeSessionFromList(P),x.cleanupSummary(P)})),O.push(ae((P,i)=>{x.updateSummary(P,i)})),O.push(ne(l)),O.push(z(k)),O.push(Y(r)),O.push(J((P,i,t)=>{o.commandButtonsStore.clearRun(P),o.sessionsStore.removeSessionCommandRun(i,t)})),O.push(le(P=>{o.kanbanStore.handleBoardUpdated(P)})),O.push(re((P,i,t,n)=>{o.kanbanStore.handleCardMoved(P,i,t,n)})),O.push(ie((P,i)=>{o.kanbanStore.handleCardAdded(P,i)})),O.push(ge((P,i)=>{o.kanbanStore.handleCardRemoved(P,i)})),O}const y=[];let E=null;const g=R(!1);let V=0;const W=3e4,A=async()=>{if(document.visibilityState!=="visible")return;const h=Date.now();if(h-V<W)return;V=h;const o=m.value;o&&(await b.fetchSessions(o,{silent:!0}),F(b.sessions))};return document.addEventListener("visibilitychange",A),ve(m,async h=>{if(!h)return;g.value=!1,y.forEach(O=>O()),y.length=0,E&&(E(),E=null),await p.fetchProject(h),await b.fetchSessions(h),await d.fetchButtons(h),F(b.sessions),V=Date.now();const{subscribe:o,unsubscribe:x,onSessionCreated:v,onSessionUpdated:N,onSessionDeleted:Z,onSessionSummaryUpdated:ae,onCommandRunOutput:ne,onCommandRunComplete:z,onCommandRunError:Y,onCommandRunDeleted:J,onKanbanBoardUpdated:le,onKanbanCardMoved:re,onKanbanCardAdded:ie,onKanbanCardRemoved:ge}=Xe(h);E=x,o(),y.push(...$({onSessionCreated:v,onSessionUpdated:N,onSessionDeleted:Z,onSessionSummaryUpdated:ae,onCommandRunOutput:ne,onCommandRunComplete:z,onCommandRunError:Y,onCommandRunDeleted:J,onKanbanBoardUpdated:le,onKanbanCardMoved:re,onKanbanCardAdded:ie,onKanbanCardRemoved:ge},{sessionsStore:b,commandButtonsStore:d,kanbanStore:_},{updateSummary:T,cleanupSummary:S})),y.push(u(async()=>{const O=m.value;O&&(V=Date.now(),await b.fetchSessions(O,{silent:!0}),F(b.sessions))}))},{immediate:!0}),Oe(()=>{y.forEach(h=>h()),E&&E(),document.removeEventListener("visibilitychange",A)}),{archivedLoaded:g}}function mt(){const m=$e(),c=He(),p=R({}),b={},d=new Map,_=4;function F(r,$=0){fetch(`/api/sessions/${r}/streaming-state`).then(y=>y.ok?y.json():null).then(y=>{var E;if(y&&((E=y.workLogs)!=null&&E.length||y.partialText||y.thinking)){c.hydrateSessionState(r,y);const g=d.get(r);g&&(clearTimeout(g.timeout),d.delete(r))}else T(r,$)}).catch(()=>{T(r,$)})}function T(r,$=0){if($>=_||!p.value[r])return;const y=m.sessions.find(V=>V.id===r);if(!y||!["running","starting"].includes(y.status))return;const E=1500*Math.pow(2,$),g=setTimeout(()=>{d.delete(r),F(r,$+1)},E);d.set(r,{count:$,timeout:g})}function S(r){if(p.value[r])return;const $=Ze(r),y=[];y.push($.onWorkLog(E=>{c.addSessionWorkLog(r,E)})),y.push($.onPartial(E=>{E&&c.setSessionPartialText(r,E)})),y.push($.onThinkingPartial(E=>{E&&c.setPartialThinking(E,r)})),y.push($.onChangesUpdate(E=>{c.setSessionFileCount(r,E)})),y.push($.onStatus(E=>{["running","starting"].includes(E)?b[r]&&(clearTimeout(b[r]),delete b[r]):b[r]=setTimeout(()=>{delete b[r],c.clearSessionEphemeralState(r)},2e3)})),$.subscribe(),p.value[r]={subscription:$,cleanup:()=>{y.forEach(E=>E&&E()),$.unsubscribe()}},F(r)}function u(r){const $=p.value[r];$&&($.cleanup(),delete p.value[r]),b[r]&&(clearTimeout(b[r]),delete b[r]);const y=d.get(r);y&&(clearTimeout(y.timeout),d.delete(r))}ve(()=>m.sessions.filter(r=>["running","starting"].includes(r.status)).map(r=>r.id),(r,$=[])=>{const y=r.filter(g=>!$.includes(g)),E=$.filter(g=>!r.includes(g));y.forEach(g=>S(g)),E.forEach(g=>u(g))},{immediate:!0});const{onReconnect:l}=Ie(),k=l(()=>{for(const r of Object.keys(p.value))F(r)});return Oe(()=>{Object.keys(p.value).forEach(r=>u(r)),k()}),{activeSubscriptions:p}}const pt={class:"filters-container"},vt={class:"status-filters"},ft=["aria-label","onClick"],ht={class:"filter-label"},bt={class:"filter-count"},gt=["title"],yt={key:0,class:"star-icon"},kt={key:1,class:"star-icon star-crossed"},St={key:2,class:"star-icon"},$t=["title"],Et={key:0,class:"schedule-icon"},Ct={key:1,class:"schedule-icon schedule-crossed"},wt={key:2,class:"schedule-icon"},_t={__name:"SessionFiltersPanel",props:{showStatusFilters:{type:Boolean,default:!0},showScheduledFilter:{type:Boolean,default:!0}},setup(m){const c=$e(),{toggleFilter:p,toggleStarFilterIcon:b,starFilterTooltip:d,toggleScheduledFilterIcon:_,scheduledFilterTooltip:F,statusFilterCounts:T}=Je();return(S,u)=>(s(),a("div",pt,[e("div",vt,[m.showStatusFilters?(s(),a(X,{key:0},te(["running","idle"],l=>e("button",{key:l,class:pe(["filter-btn",{active:f(c).statusFilter===l,"filter-btn-empty":f(T)[l]===0}]),"aria-label":`${l} (${f(T)[l]})`,onClick:k=>f(p)(l)},[e("span",ht,j(l),1),e("span",bt,j(f(T)[l]),1)],10,ft)),64)):w("",!0),e("button",{class:pe(["filter-btn star-btn",{"star-filter-active":f(c).starredFilter==="starred","star-filter-unstarred":f(c).starredFilter==="unstarred","star-filter-all":f(c).starredFilter===null}]),title:f(d),onClick:u[0]||(u[0]=(...l)=>f(b)&&f(b)(...l))},[f(c).starredFilter==="starred"?(s(),a("span",yt,"⭐")):f(c).starredFilter==="unstarred"?(s(),a("span",kt,"⭐")):(s(),a("span",St,"☆"))],10,gt),m.showScheduledFilter?(s(),a("button",{key:1,class:pe(["filter-btn schedule-btn",{"schedule-filter-active":f(c).scheduledFilter==="scheduled","schedule-filter-not-scheduled":f(c).scheduledFilter==="not-scheduled","schedule-filter-all":f(c).scheduledFilter===null}]),title:f(F),onClick:u[1]||(u[1]=(...l)=>f(_)&&f(_)(...l))},[f(c).scheduledFilter==="scheduled"?(s(),a("span",Et,"⏰")):f(c).scheduledFilter==="not-scheduled"?(s(),a("span",Ct,"⏰")):(s(),a("span",wt,"⏰"))],10,$t)):w("",!0)])]))}},Ne=Ce(_t,[["__scopeId","data-v-2c9a63d9"]]),Tt={key:0,class:"skeleton-list"},jt={key:1,class:"error-message"},Ft={key:2,class:"empty-state"},Mt={key:3,class:"session-list"},Rt={key:0,class:"load-more-container"},At=["disabled"],Lt={key:0},xt={key:1},Ot={__name:"ArchivedTabContent",props:{summaries:{type:Object,required:!0},loadingSummaries:{type:Object,required:!0},summaryErrors:{type:Object,required:!0}},emits:["retrySummary","unarchive","loadMore"],setup(m){const c=$e(),p=K(()=>{const{total:b,offset:d}=c.archivedPagination;return Math.max(0,b-d)});return(b,d)=>(s(),a("div",null,[f(c).archivedPagination.loading&&f(c).archivedSessions.length===0?(s(),a("div",Tt,[(s(),a(X,null,te(3,_=>e("div",{key:_,class:"skeleton card",style:{height:"120px"}})),64))])):f(c).error?(s(),a("div",jt,j(f(c).error),1)):f(c).archivedSessions.length===0?(s(),a("div",Ft,[...d[3]||(d[3]=[e("p",null,"No archived sessions. Archive completed sessions to keep your session list tidy.",-1)])])):(s(),a("div",Mt,[(s(!0),a(X,null,te(f(c).archivedSessions,_=>(s(),ce(qe,{key:_.id,session:_,"show-summary":!0,summary:m.summaries[_.id],"summary-loading":m.loadingSummaries[_.id],"summary-error":m.summaryErrors[_.id],"show-unarchive":!0,"kanban-enabled":!1,"pr-url":_.prUrl,"pr-summary":m.summaries[_.id],onRetrySummary:d[0]||(d[0]=F=>b.$emit("retrySummary",F)),onUnarchive:d[1]||(d[1]=F=>b.$emit("unarchive",F))},null,8,["session","summary","summary-loading","summary-error","pr-url","pr-summary"]))),128)),f(c).archivedPagination.hasMore?(s(),a("div",Rt,[e("button",{class:"btn btn-secondary",disabled:f(c).archivedPagination.loading,onClick:d[2]||(d[2]=_=>b.$emit("loadMore"))},[f(c).archivedPagination.loading?(s(),a("span",Lt,"Loading...")):(s(),a("span",xt,"Load More ("+j(p.value)+" remaining)",1))],8,At)])):w("",!0)]))]))}},Bt=Ce(Ot,[["__scopeId","data-v-c0906664"]]),Pt={class:"templates-panel"},Ut={class:"templates-header"},Dt={key:0,class:"template-form card","data-testid":"template-form"},Vt={class:"form-group"},Nt={class:"form-group"},It={class:"form-group"},Kt=["disabled"],Gt={class:"form-group"},Ht=["value"],Wt={class:"form-group"},qt={class:"form-group"},zt={class:"form-group"},Yt={class:"form-group"},Jt={class:"form-actions"},Qt=["disabled"],Xt={key:0,class:"loading-spinner"},Zt={key:1,class:"loading-state"},en={key:2},tn={key:0,class:"template-section"},nn={class:"templates-list"},sn={class:"template-header"},on={class:"template-name"},an={class:"template-prompt"},ln={class:"template-meta"},rn={key:0,class:"meta-badge"},dn={key:1,class:"meta-badge"},un={key:2,class:"meta-badge"},cn={key:3,class:"meta-badge"},mn={key:4,class:"meta-badge meta-badge-chain"},pn={key:1,class:"template-section"},vn={class:"templates-list"},fn={class:"template-header"},hn={class:"template-name"},bn={class:"template-prompt"},gn={class:"template-meta"},yn={key:0,class:"meta-badge"},kn={key:1,class:"meta-badge"},Sn={key:2,class:"meta-badge"},$n={key:3,class:"meta-badge"},En={key:4,class:"meta-badge meta-badge-chain"},Cn={key:2,class:"empty-state"},wn={__name:"TemplatesPanel",props:{projectId:{type:String,required:!0}},setup(m,{expose:c}){const p=m,b=ze(),d=Fe(),_=nt(),F=R(!1),T=R(!1),S=R({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}),u=K(()=>b.loading),l=K(()=>b.projectTemplates),k=K(()=>b.globalTemplates),r=K(()=>[...b.projectTemplates,...b.globalTemplates]);Be(async()=>{_.providers.length===0&&await _.fetchProviders(),b.fetchProjectTemplates(p.projectId)}),ve(()=>p.projectId,h=>{b.fetchProjectTemplates(h)});function $(h,o=100){return h.length<=o?h:`${h.substring(0,o)}...`}function y(h){const o=b.getTemplateById(h);return(o==null?void 0:o.name)||"Unknown"}function E(h){var o;for(const x of _.providers){const v=(o=x.models)==null?void 0:o.find(N=>N.modelId===h);if(v)return x.isBuiltIn?v.displayName:v.modelId}return h}function g(){S.value={name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}}function V(){F.value=!0}function W(){F.value=!1,g()}async function A(){if(!T.value){T.value=!0;try{const h={name:S.value.name,prompt:S.value.prompt,nextTemplateId:S.value.nextTemplateId||void 0,thinkingEnabled:S.value.thinkingEnabled,gitBranch:S.value.gitBranch||void 0,model:S.value.model,mode:S.value.mode};S.value.isGlobal?(await b.createGlobalTemplate(h),d.success("Global template created")):(await b.createProjectTemplate(p.projectId,h),d.success("Template created")),W()}catch(h){d.error(h.message)}finally{T.value=!1}}}return c({formData:S,getModelName:E,resetForm:g}),(h,o)=>{const x=Me("router-link");return s(),a("div",Pt,[e("div",Ut,[o[8]||(o[8]=e("h2",null,"Session Templates",-1)),F.value?w("",!0):(s(),a("button",{key:0,class:"btn btn-primary btn-sm","data-testid":"new-template-btn",onClick:V}," New Template "))]),F.value?(s(),a("div",Dt,[o[23]||(o[23]=e("h3",null,"Create Template",-1)),e("form",{onSubmit:me(A,["prevent"])},[e("div",Vt,[o[9]||(o[9]=e("label",{class:"form-label"},"Name",-1)),I(e("input",{"onUpdate:modelValue":o[0]||(o[0]=v=>S.value.name=v),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[ye,S.value.name]])]),e("div",Nt,[o[10]||(o[10]=e("label",{class:"form-label"},"Prompt",-1)),I(e("textarea",{"onUpdate:modelValue":o[1]||(o[1]=v=>S.value.prompt=v),class:"form-input form-textarea",placeholder:"Session prompt. Use {{rootSession.summary}} to reference root session data.",rows:"4",required:""},null,512),[[ye,S.value.prompt]]),Q(Ye)]),e("div",It,[o[12]||(o[12]=e("label",{class:"form-label"},"Scope",-1)),I(e("select",{"onUpdate:modelValue":o[2]||(o[2]=v=>S.value.isGlobal=v),class:"form-input",disabled:h.editingTemplate},[...o[11]||(o[11]=[e("option",{value:!1}," Project Only ",-1),e("option",{value:!0}," Global (all projects) ",-1)])],8,Kt),[[Ee,S.value.isGlobal]])]),e("div",Gt,[o[14]||(o[14]=e("label",{class:"form-label"},"Next Template (Optional)",-1)),I(e("select",{"onUpdate:modelValue":o[3]||(o[3]=v=>S.value.nextTemplateId=v),class:"form-input"},[o[13]||(o[13]=e("option",{value:null}," None ",-1)),(s(!0),a(X,null,te(r.value,v=>(s(),a("option",{key:v.id,value:v.id},j(v.name)+" "+j(v.projectId?"":"(Global)"),9,Ht))),128))],512),[[Ee,S.value.nextTemplateId]]),o[15]||(o[15]=e("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),e("div",Wt,[o[16]||(o[16]=e("label",{class:"form-label"},"Model",-1)),Q(st,{modelValue:S.value.model,"onUpdate:modelValue":o[4]||(o[4]=v=>S.value.model=v),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),e("div",qt,[o[18]||(o[18]=e("label",{class:"form-label",for:"create-mode"},"Mode",-1)),I(e("select",{id:"create-mode","onUpdate:modelValue":o[5]||(o[5]=v=>S.value.mode=v),class:"form-input","data-testid":"mode-select"},[...o[17]||(o[17]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:"plan"}," Plan ",-1),e("option",{value:"standard"}," Standard ",-1),e("option",{value:"yolo"}," YOLO ",-1)])],512),[[Ee,S.value.mode]])]),e("div",zt,[o[20]||(o[20]=e("label",{class:"form-label",for:"create-thinking"},"Extended Thinking",-1)),I(e("select",{id:"create-thinking","onUpdate:modelValue":o[6]||(o[6]=v=>S.value.thinkingEnabled=v),class:"form-input","data-testid":"thinking-select"},[...o[19]||(o[19]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:!0}," Enabled ",-1),e("option",{value:!1}," Disabled ",-1)])],512),[[Ee,S.value.thinkingEnabled]])]),e("div",Yt,[o[21]||(o[21]=e("label",{class:"form-label"},"Git Branch (Optional)",-1)),I(e("input",{"onUpdate:modelValue":o[7]||(o[7]=v=>S.value.gitBranch=v),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[ye,S.value.gitBranch]])]),e("div",Jt,[e("button",{type:"button",class:"btn","data-testid":"cancel-btn",onClick:W}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:T.value,"data-testid":"submit-btn"},[T.value?(s(),a("span",Xt)):w("",!0),o[22]||(o[22]=oe(" Create ",-1))],8,Qt)])],32)])):w("",!0),u.value?(s(),a("div",Zt,[...o[24]||(o[24]=[e("span",{class:"loading-spinner"},null,-1),oe(" Loading templates... ",-1)])])):(s(),a("div",en,[l.value.length>0?(s(),a("div",tn,[o[25]||(o[25]=e("h3",{class:"section-title"}," Project Templates ",-1)),e("div",nn,[(s(!0),a(X,null,te(l.value,v=>(s(),ce(x,{key:v.id,to:`/projects/${m.projectId}/templates/${v.id}`,class:"template-card card","data-testid":`template-card-${v.id}`},{default:ke(()=>[e("div",sn,[e("h4",on,j(v.name),1)]),e("p",an,j($(v.prompt)),1),e("div",ln,[v.thinkingEnabled?(s(),a("span",rn,"Thinking")):w("",!0),v.gitBranch?(s(),a("span",dn,j(v.gitBranch),1)):w("",!0),v.model?(s(),a("span",un,j(E(v.model)),1)):w("",!0),v.mode?(s(),a("span",cn,j(v.mode),1)):w("",!0),v.nextTemplateId?(s(),a("span",mn," Chains to: "+j(y(v.nextTemplateId)),1)):w("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):w("",!0),k.value.length>0?(s(),a("div",pn,[o[27]||(o[27]=e("h3",{class:"section-title"}," Global Templates ",-1)),e("div",vn,[(s(!0),a(X,null,te(k.value,v=>(s(),ce(x,{key:v.id,to:`/projects/${m.projectId}/templates/${v.id}`,class:"template-card card","data-testid":`template-card-${v.id}`},{default:ke(()=>[e("div",fn,[e("h4",hn,j(v.name),1)]),e("p",bn,j($(v.prompt)),1),e("div",gn,[o[26]||(o[26]=e("span",{class:"meta-badge meta-badge-global"},"Global",-1)),v.thinkingEnabled?(s(),a("span",yn,"Thinking")):w("",!0),v.gitBranch?(s(),a("span",kn,j(v.gitBranch),1)):w("",!0),v.model?(s(),a("span",Sn,j(E(v.model)),1)):w("",!0),v.mode?(s(),a("span",$n,j(v.mode),1)):w("",!0),v.nextTemplateId?(s(),a("span",En," Chains to: "+j(y(v.nextTemplateId)),1)):w("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):w("",!0),l.value.length===0&&k.value.length===0&&!F.value?(s(),a("div",Cn,[o[28]||(o[28]=e("p",null,"No templates yet. Create a template to automate session workflows.",-1)),e("button",{class:"btn btn-primary","data-testid":"create-template-btn",onClick:V}," Create Template ")])):w("",!0)]))])}}},_n=Ce(wn,[["__scopeId","data-v-d08b4ac0"]]),Tn={class:"command-buttons-panel"},jn={class:"panel-header"},Fn={key:0,class:"loading-state"},Mn={key:1,class:"error-message"},Rn={key:2,class:"empty-state"},An={key:3,class:"buttons-table"},Ln=["onClick"],xn={class:"col-label"},On={class:"col-command"},Bn={class:"col-order"},Pn=["onClick"],Un={class:"modal-body"},Dn={class:"modal-footer"},Vn={__name:"CommandButtonsPanel",props:{projectId:{type:String,required:!0}},setup(m){const c=m,p=Ke(),b=We(),d=R(null),_=u=>u.length>50?`${u.substring(0,50)}...`:u,F=u=>{p.push(`/projects/${c.projectId}/command-buttons/${u.id}`)},T=u=>{d.value=u},S=async()=>{if(d.value)try{await b.deleteButton(c.projectId,d.value.id),d.value=null}catch(u){console.error("Failed to delete button:",u)}};return(u,l)=>{const k=Me("router-link");return s(),a("div",Tn,[e("div",jn,[l[5]||(l[5]=e("h3",null,"Command Buttons",-1)),Q(k,{to:`/projects/${m.projectId}/command-buttons/new`,class:"btn btn-primary btn-sm"},{default:ke(()=>[...l[4]||(l[4]=[oe(" + New Command Button ",-1)])]),_:1},8,["to"])]),f(b).loading?(s(),a("div",Fn,[...l[6]||(l[6]=[e("span",{class:"loading-spinner"},null,-1),oe(" Loading command buttons... ",-1)])])):f(b).error?(s(),a("div",Mn,j(f(b).error),1)):f(b).buttons.length===0?(s(),a("div",Rn,[l[8]||(l[8]=e("p",null,"No command buttons configured yet.",-1)),Q(k,{to:`/projects/${m.projectId}/command-buttons/new`,class:"btn btn-primary"},{default:ke(()=>[...l[7]||(l[7]=[oe(" Create First Button ",-1)])]),_:1},8,["to"])])):(s(),a("div",An,[l[9]||(l[9]=Ge('<div class="table-header" data-v-990a48bf><div class="col-label" data-v-990a48bf> Label </div><div class="col-command" data-v-990a48bf> Command </div><div class="col-order" data-v-990a48bf> Sort Order </div><div class="col-actions" data-v-990a48bf> Actions </div></div>',1)),(s(!0),a(X,null,te(f(b).buttons,r=>(s(),a("div",{key:r.id,class:"table-row",onClick:$=>F(r)},[e("div",xn,j(r.label),1),e("div",On,[e("code",null,j(_(r.command)),1)]),e("div",Bn,j(r.sortOrder),1),e("div",{class:"col-actions",onClick:l[0]||(l[0]=me(()=>{},["stop"]))},[e("button",{class:"btn btn-sm btn-outline-danger",onClick:$=>T(r)}," Delete ",8,Pn)])],8,Ln))),128))])),d.value?(s(),a("div",{key:4,class:"modal-overlay",onClick:l[3]||(l[3]=r=>d.value=null)},[e("div",{class:"modal-dialog",onClick:l[2]||(l[2]=me(()=>{},["stop"]))},[l[12]||(l[12]=e("div",{class:"modal-header"},[e("h4",null,"Delete Command Button")],-1)),e("div",Un,[e("p",null,[l[10]||(l[10]=oe('Are you sure you want to delete the command button "',-1)),e("strong",null,j(d.value.label),1),l[11]||(l[11]=oe('"?',-1))])]),e("div",Dn,[e("button",{class:"btn btn-outline-secondary",onClick:l[1]||(l[1]=r=>d.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:S}," Delete ")])])])):w("",!0)])}}},Nn=Ce(Vn,[["__scopeId","data-v-990a48bf"]]),In={class:"modal-content"},Kn={class:"modal-header"},Gn={class:"modal-title"},Hn={class:"modal-body"},Wn={class:"form-group"},qn={class:"sessions-list"},zn={key:0,class:"loading-state"},Yn={key:1,class:"empty-state"},Jn={key:0},Qn={key:1},Xn=["onClick"],Zn={class:"session-info"},es={class:"session-name"},ts={class:"session-meta"},ns={key:0,class:"session-mode"},ss=["title"],os={class:"modal-footer"},as=["disabled"],ls={__name:"AddSessionToLaneModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},laneId:{type:String,default:""},laneName:{type:String,default:""}},emits:["close","update:isOpen","added"],setup(m,{emit:c}){const p=m,b=c;$e();const d=Te(),_=Fe(),F=R(!1),T=R(!1),S=R(""),u=R(null),l=R([]),k=K(()=>{let A=l.value.filter(h=>!d.isSessionOnBoard(h.id));if(A=A.filter(h=>!h.parentSessionId),S.value.trim()){const h=S.value.toLowerCase();A=A.filter(o=>{var x;return(x=o.name)==null?void 0:x.toLowerCase().includes(h)})}return A});function r(A){switch(A){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}}function $(A){return A?new Date(A).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function y(A){u.value=A}function E(){}function g(){b("update:isOpen",!1),b("close"),S.value="",u.value=null}async function V(){if(p.projectId){F.value=!0;try{const A=await xe.getProjectSessions(p.projectId,!1,null);l.value=Array.isArray(A)?A:(A==null?void 0:A.sessions)||[]}catch(A){console.error("Failed to load sessions:",A),_.error("Failed to load sessions"),l.value=[]}finally{F.value=!1}}}async function W(){if(!(!u.value||!p.laneId)){T.value=!0;try{await d.addSessionToBoard(p.projectId,u.value,p.laneId),_.success("Session added to board"),b("added",u.value),g()}catch(A){console.error("Failed to add session to board:",A),_.error(A.message||"Failed to add session to board")}finally{T.value=!1}}}return ve(()=>p.isOpen,A=>{A&&V()},{immediate:!0}),(A,h)=>m.isOpen?(s(),a("div",{key:0,class:"modal-backdrop",onClick:me(g,["self"])},[e("div",In,[e("div",Kn,[e("h2",Gn," Add Session to "+j(m.laneName),1),e("button",{class:"close-btn","aria-label":"Close",onClick:g}," × ")]),e("div",Hn,[e("div",Wn,[h[1]||(h[1]=e("label",{for:"session-search",class:"form-label"},"Search Sessions",-1)),I(e("input",{id:"session-search","onUpdate:modelValue":h[0]||(h[0]=o=>S.value=o),type:"text",class:"form-input",placeholder:"Search by name...",onInput:E},null,544),[[ye,S.value]])]),e("div",qn,[F.value?(s(),a("div",zn,[...h[2]||(h[2]=[e("span",{class:"loading-spinner"},null,-1),oe(" Loading sessions... ",-1)])])):k.value.length===0?(s(),a("div",Yn,[S.value?(s(),a("p",Jn,' No sessions matching "'+j(S.value)+'" ',1)):(s(),a("p",Qn," No available sessions to add. "))])):(s(!0),a(X,{key:2},te(k.value,o=>(s(),a("div",{key:o.id,class:pe(["session-item",{selected:u.value===o.id}]),onClick:x=>y(o.id)},[e("div",{class:pe(["session-status",`status-${o.status}`])},j(r(o.status)),3),e("div",Zn,[e("div",es,j(o.name),1),e("div",ts,[o.mode?(s(),a("span",ns,j(o.mode),1)):w("",!0),e("span",{class:"session-date",title:o.lastActivityAt?"Last activity":"No activity yet"},j($(o.lastActivityAt||o.updatedAt||o.createdAt)),9,ss)])])],10,Xn))),128))])]),e("div",os,[e("button",{class:"btn btn-secondary",onClick:g}," Cancel "),e("button",{class:"btn btn-primary",disabled:!u.value||T.value,onClick:W},j(T.value?"Adding...":"Add to Lane"),9,as)])])])):w("",!0)}},Qe=Ce(ls,[["__scopeId","data-v-ab9b7c57"]]),rs={class:"modal-content"},is={class:"modal-body"},ds={class:"form-group"},us={key:0,class:"form-group"},cs={class:"lane-position-controls"},ms=["disabled"],ps={class:"lane-position-label"},vs=["disabled"],fs={class:"form-group"},hs={class:"automation-options"},bs={class:"radio-option"},gs={class:"radio-option"},ys={class:"radio-option"},ks={key:1,class:"form-group"},Ss={key:0,label:"Project Templates"},$s=["value"],Es={key:1,label:"Global Templates"},Cs=["value"],ws={key:2,class:"form-group"},_s={class:"prompt-actions-row"},Ts={key:4,class:"agent-settings-section"},js={key:0,class:"agent-settings-body"},Fs={class:"form-group"},Ms={class:"toggle-switch-row"},Rs={class:"toggle-switch"},As={key:0,class:"reschedule-settings"},Ls={class:"form-group"},xs={class:"checkbox-option"},Os={class:"checkbox-option"},Bs={class:"form-group"},Ps={class:"form-group"},Us={class:"form-group"},Ds={class:"form-group"},Vs={class:"danger-zone"},Ns=["disabled"],Is={class:"modal-footer"},Ks=["disabled"],Gs={__name:"LaneSettingsModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},lane:{type:Object,default:null}},emits:["close","update:isOpen","updated","deleted"],setup(m,{emit:c}){const p=m,b=c,d=Te(),_=ze(),F=Fe(),T=Pe(),S=R(!1),u=R(!1),l=R("none"),k=R(!1),r=R(!1),$=R(null),y=R(-1),E=R(-1),g=je({name:"",onEnterTemplateId:null,onEnterPrompt:"",onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}),V=K(()=>_.projectTemplates),W=K(()=>_.globalTemplates),A=K(()=>{const i=T.getProjectById(p.projectId);return(i==null?void 0:i.workingDirectory)||null}),h=K(()=>E.value),o=K(()=>{var i,t;return((t=(i=d.board)==null?void 0:i.lanes)==null?void 0:t.length)||0}),x=K(()=>!(!g.name.trim()||l.value==="template"&&!g.onEnterTemplateId||l.value==="prompt"&&!g.onEnterPrompt.trim()));function v(i){return{onEnterAutoRescheduleEnabled:i.onEnterAutoRescheduleEnabled||!1,onEnterRescheduleDelayMinutes:i.onEnterRescheduleDelayMinutes||Le,onEnterRescheduleOnTokenLimit:i.onEnterRescheduleOnTokenLimit??!0,onEnterRescheduleOnServiceError:i.onEnterRescheduleOnServiceError??!0,onEnterMaxRescheduleCount:i.onEnterMaxRescheduleCount||null,onEnterMaxTotalTokens:i.onEnterMaxTotalTokens||null,onEnterRescheduleAtTokenCount:i.onEnterRescheduleAtTokenCount||null}}function N(i){return{name:i.name||"",onEnterTemplateId:i.onEnterTemplateId||null,onEnterPrompt:i.onEnterPrompt||"",onEnterMode:i.onEnterMode||null,onEnterModel:i.onEnterModel||null,onEnterEffortLevel:i.onEnterEffortLevel||null,onEnterThinkingEnabled:i.onEnterThinkingEnabled??null,...v(i)}}function Z(i){return i.onEnterTemplateId?"template":i.onEnterPrompt?"prompt":"none"}function ae(i){return!!(i.onEnterMode||i.onEnterModel||i.onEnterEffortLevel||i.onEnterThinkingEnabled!==null||i.onEnterAutoRescheduleEnabled)}function ne(){var i,t;if(p.lane){const n=N(p.lane);Object.assign(g,n),l.value=Z(p.lane),k.value=ae(g);const q=((t=(i=d.board)==null?void 0:i.lanes)==null?void 0:t.findIndex(de=>de.id===p.lane.id))??-1;y.value=q,E.value=q}else{const n=N({});Object.assign(g,n),l.value="none",k.value=!1,y.value=-1,E.value=-1}}function z(){E.value=y.value,b("update:isOpen",!1),b("close")}function Y({text:i}){const t=$.value;if(t){const n=t.selectionStart,q=t.selectionEnd,de=g.onEnterPrompt.substring(0,n),he=g.onEnterPrompt.substring(q);g.onEnterPrompt=de+i+he,et(()=>{t.selectionStart=t.selectionEnd=n+i.length,t.focus()})}}function J(i){const t=E.value;t<0||t===i||(E.value=i)}function le(){return{onEnterTemplateId:null,onEnterPrompt:null,onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:Le,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}}function re(i){return{...le(),onEnterTemplateId:i.onEnterTemplateId,onEnterPrompt:null}}function ie(i){return{onEnterTemplateId:null,onEnterPrompt:i.onEnterPrompt.trim(),onEnterMode:i.onEnterMode,onEnterModel:i.onEnterModel,onEnterEffortLevel:i.onEnterEffortLevel,onEnterThinkingEnabled:i.onEnterThinkingEnabled,onEnterAutoRescheduleEnabled:i.onEnterAutoRescheduleEnabled,onEnterRescheduleDelayMinutes:i.onEnterRescheduleDelayMinutes,onEnterRescheduleOnTokenLimit:i.onEnterRescheduleOnTokenLimit,onEnterRescheduleOnServiceError:i.onEnterRescheduleOnServiceError,onEnterMaxRescheduleCount:i.onEnterMaxRescheduleCount,onEnterMaxTotalTokens:i.onEnterMaxTotalTokens,onEnterRescheduleAtTokenCount:i.onEnterRescheduleAtTokenCount}}async function ge(i,t,n,q){var L;if(n===t||n<0)return;const de=(L=d.board)==null?void 0:L.lanes;if(!de||de.length<=1)return;const he=de.map(C=>C.id);he.splice(t,1),he.splice(n,0,i.id),await d.reorderLanes(q,he)}async function O(){if(!(!p.lane||!x.value)){S.value=!0;try{const i={name:g.name.trim()};l.value==="template"?Object.assign(i,re(g)):l.value==="prompt"?Object.assign(i,ie(g)):Object.assign(i,le()),await ge(p.lane,y.value,E.value,p.projectId),await d.updateLane(p.projectId,p.lane.id,i),F.success("Lane settings saved"),b("updated"),z()}catch(i){console.error("Failed to save lane settings:",i),F.error(i.message||"Failed to save lane settings")}finally{S.value=!1}}}async function P(){if(p.lane&&confirm(`Are you sure you want to delete the "${p.lane.name}" lane? This cannot be undone.`)){u.value=!0;try{await d.deleteLane(p.projectId,p.lane.id),F.success("Lane deleted"),b("deleted"),z()}catch(i){console.error("Failed to delete lane:",i),F.error(i.message||"Failed to delete lane")}finally{u.value=!1}}}return ve(()=>p.isOpen,i=>{i&&(ne(),p.projectId&&_.projectTemplates.length===0&&_.globalTemplates.length===0&&_.fetchProjectTemplates(p.projectId))},{immediate:!0}),ve(()=>p.lane,()=>{p.isOpen&&ne()}),ve(()=>{var i;return(i=d.board)==null?void 0:i.lanes},i=>{if(p.isOpen&&p.lane&&i){const t=i.findIndex(n=>n.id===p.lane.id);t>=0&&(y.value=t,E.value=t)}},{deep:!0}),(i,t)=>m.isOpen?(s(),a("div",{key:0,class:"modal-backdrop",onClick:me(z,["self"])},[e("div",rs,[e("div",{class:"modal-header"},[t[22]||(t[22]=e("h2",{class:"modal-title"}," Lane Settings ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:z}," × ")]),e("div",is,[e("div",ds,[t[23]||(t[23]=e("label",{for:"lane-name",class:"form-label"},"Lane Name",-1)),I(e("input",{id:"lane-name","onUpdate:modelValue":t[0]||(t[0]=n=>g.name=n),type:"text",class:"form-input",placeholder:"Enter lane name"},null,512),[[ye,g.name]])]),o.value>1?(s(),a("div",us,[t[26]||(t[26]=e("label",{class:"form-label"},"Position",-1)),e("div",cs,[e("button",{class:"btn btn-icon",disabled:h.value<=0,title:"Move left",onClick:t[1]||(t[1]=n=>J(h.value-1))},[...t[24]||(t[24]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"15 18 9 12 15 6"})],-1)])],8,ms),e("span",ps,j(h.value+1)+" of "+j(o.value),1),e("button",{class:"btn btn-icon",disabled:h.value>=o.value-1,title:"Move right",onClick:t[2]||(t[2]=n=>J(h.value+1))},[...t[25]||(t[25]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"9 18 15 12 9 6"})],-1)])],8,vs)])])):w("",!0),e("div",fs,[t[30]||(t[30]=e("label",{class:"form-label"},"On-Enter Automation",-1)),e("div",hs,[e("label",bs,[I(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>l.value=n),type:"radio",value:"none",name:"automation"},null,512),[[Re,l.value]]),t[27]||(t[27]=e("span",null,"None",-1))]),e("label",gs,[I(e("input",{"onUpdate:modelValue":t[4]||(t[4]=n=>l.value=n),type:"radio",value:"template",name:"automation"},null,512),[[Re,l.value]]),t[28]||(t[28]=e("span",null,"Run a template",-1))]),e("label",ys,[I(e("input",{"onUpdate:modelValue":t[5]||(t[5]=n=>l.value=n),type:"radio",value:"prompt",name:"automation"},null,512),[[Re,l.value]]),t[29]||(t[29]=e("span",null,"Run a custom prompt",-1))])])]),l.value==="template"?(s(),a("div",ks,[t[32]||(t[32]=e("label",{for:"template-select",class:"form-label"},"Select Template",-1)),I(e("select",{id:"template-select","onUpdate:modelValue":t[6]||(t[6]=n=>g.onEnterTemplateId=n),class:"form-input"},[t[31]||(t[31]=e("option",{value:null}," Select a template... ",-1)),V.value.length?(s(),a("optgroup",Ss,[(s(!0),a(X,null,te(V.value,n=>(s(),a("option",{key:n.id,value:n.id},j(n.name),9,$s))),128))])):w("",!0),W.value.length?(s(),a("optgroup",Es,[(s(!0),a(X,null,te(W.value,n=>(s(),a("option",{key:n.id,value:n.id},j(n.name),9,Cs))),128))])):w("",!0)],512),[[Ee,g.onEnterTemplateId]]),t[33]||(t[33]=e("p",{class:"form-help"}," When a session enters this lane, the selected template will automatically run. ",-1))])):w("",!0),l.value==="prompt"?(s(),a("div",ws,[t[34]||(t[34]=e("label",{for:"custom-prompt",class:"form-label"},"Custom Prompt",-1)),Q(ot,{id:"custom-prompt",ref_key:"promptTextareaRef",ref:$,modelValue:g.onEnterPrompt,"onUpdate:modelValue":t[7]||(t[7]=n=>g.onEnterPrompt=n),class:"form-input form-textarea",placeholder:"Enter the prompt to run when a session enters this lane...",rows:"4","min-height":80},null,8,["modelValue"]),e("div",_s,[Q(Ye),A.value?(s(),ce(lt,{key:0,onOpen:t[8]||(t[8]=n=>r.value=!0)})):w("",!0)])])):w("",!0),l.value==="prompt"?(s(),ce(rt,{key:3,"is-open":r.value,"onUpdate:isOpen":t[9]||(t[9]=n=>r.value=n),"working-directory":A.value||"",mode:"insert","hide-builtin":!0,onInsert:Y},null,8,["is-open","working-directory"])):w("",!0),l.value==="prompt"?(s(),a("div",Ts,[e("button",{type:"button",class:"section-toggle",onClick:t[10]||(t[10]=n=>k.value=!k.value)},[e("span",{class:pe(["toggle-chevron",{open:k.value}])},"▶",2),t[35]||(t[35]=oe(" Session Settings ",-1))]),k.value?(s(),a("div",js,[Q(at,{mode:g.onEnterMode||"standard",model:g.onEnterModel,"effort-level":g.onEnterEffortLevel,"thinking-enabled":g.onEnterThinkingEnabled??!1,"hide-start-immediately":!0,"onUpdate:mode":t[11]||(t[11]=n=>g.onEnterMode=n),"onUpdate:model":t[12]||(t[12]=n=>g.onEnterModel=n),"onUpdate:effortLevel":t[13]||(t[13]=n=>g.onEnterEffortLevel=n),"onUpdate:thinkingEnabled":t[14]||(t[14]=n=>g.onEnterThinkingEnabled=n)},null,8,["mode","model","effort-level","thinking-enabled"]),e("div",Fs,[e("label",Ms,[e("label",Rs,[I(e("input",{"onUpdate:modelValue":t[15]||(t[15]=n=>g.onEnterAutoRescheduleEnabled=n),type:"checkbox"},null,512),[[Ae,g.onEnterAutoRescheduleEnabled]]),t[36]||(t[36]=e("span",{class:"toggle-slider"},null,-1))]),t[37]||(t[37]=e("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),g.onEnterAutoRescheduleEnabled?(s(),a("div",As,[e("div",Ls,[t[40]||(t[40]=e("p",{class:"settings-label"}," Reschedule Triggers ",-1)),e("label",xs,[I(e("input",{"onUpdate:modelValue":t[16]||(t[16]=n=>g.onEnterRescheduleOnTokenLimit=n),type:"checkbox"},null,512),[[Ae,g.onEnterRescheduleOnTokenLimit]]),t[38]||(t[38]=e("span",null,"Token limit errors",-1))]),e("label",Os,[I(e("input",{"onUpdate:modelValue":t[17]||(t[17]=n=>g.onEnterRescheduleOnServiceError=n),type:"checkbox"},null,512),[[Ae,g.onEnterRescheduleOnServiceError]]),t[39]||(t[39]=e("span",null,"Service unavailability",-1))])]),e("div",Bs,[t[42]||(t[42]=e("label",{class:"form-label"},"Reschedule Delay",-1)),I(e("select",{"onUpdate:modelValue":t[18]||(t[18]=n=>g.onEnterRescheduleDelayMinutes=n),class:"form-input"},[...t[41]||(t[41]=[e("option",{value:5}," 5 minutes ",-1),e("option",{value:15}," 15 minutes ",-1),e("option",{value:30}," 30 minutes ",-1),e("option",{value:60}," 1 hour ",-1),e("option",{value:120}," 2 hours ",-1)])],512),[[Ee,g.onEnterRescheduleDelayMinutes,void 0,{number:!0}]])]),e("div",Ps,[t[43]||(t[43]=e("label",{class:"form-label"},"Max Reschedule Count",-1)),I(e("input",{"onUpdate:modelValue":t[19]||(t[19]=n=>g.onEnterMaxRescheduleCount=n),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,g.onEnterMaxRescheduleCount,void 0,{number:!0}]])]),e("div",Us,[t[44]||(t[44]=e("label",{class:"form-label"},"Max Total Tokens",-1)),I(e("input",{"onUpdate:modelValue":t[20]||(t[20]=n=>g.onEnterMaxTotalTokens=n),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,g.onEnterMaxTotalTokens,void 0,{number:!0}]])]),e("div",Ds,[t[45]||(t[45]=e("label",{class:"form-label"},"Reschedule At Token Count",-1)),I(e("input",{"onUpdate:modelValue":t[21]||(t[21]=n=>g.onEnterRescheduleAtTokenCount=n),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[ye,g.onEnterRescheduleAtTokenCount,void 0,{number:!0}]])])])):w("",!0)])):w("",!0)])):w("",!0),e("div",Vs,[t[46]||(t[46]=e("h4",{class:"danger-title"}," Danger Zone ",-1)),t[47]||(t[47]=e("p",{class:"danger-description"}," Deleting this lane will remove all cards from it. Sessions will remain in the project. ",-1)),e("button",{class:"btn btn-danger",disabled:u.value,onClick:P},j(u.value?"Deleting...":"Delete Lane"),9,Ns)])]),e("div",Is,[e("button",{class:"btn btn-secondary",onClick:z}," Cancel "),e("button",{class:"btn btn-primary",disabled:S.value||!x.value,onClick:O},j(S.value?"Saving...":"Save Changes"),9,Ks)])])])):w("",!0)}},Hs=Ce(Gs,[["__scopeId","data-v-0fd3a197"]]),Ws={class:"kanban-board"},qs={key:0,class:"kanban-loading"},zs={key:1,class:"kanban-error"},Ys={key:2,class:"kanban-empty"},Js={key:3,class:"kanban-lanes-container"},Qs=["onDragover","onDrop"],Xs={class:"lane-header"},Zs={class:"lane-title-row"},eo={class:"lane-title"},to={key:0,class:"lane-automation-indicator",title:"Automation enabled"},no={class:"lane-header-actions"},so={class:"lane-count"},oo=["onClick"],ao={class:"lane-cards"},lo={key:0,class:"card-drop-indicator"},ro=["onDragstart","onDragover"],io={class:"card-header"},uo={class:"card-title"},co={class:"card-meta"},mo={key:0,class:"card-mode"},po={class:"card-reorder-arrows"},vo=["onClick"],fo=["onClick"],ho=["onClick"],bo=["onClick"],go={key:0,class:"card-drop-indicator"},yo={key:1,class:"lane-empty"},ko={class:"lane-footer"},So={key:0,class:"lane-automation"},$o={key:1,class:"lane-automation"},Eo=["onClick"],Co={class:"add-lane-container"},wo={key:1,class:"add-lane-form"},_o={__name:"KanbanBoard",props:{projectId:{type:String,required:!0}},setup(m){const c=m,p=Te(),b=R(!1),d=R(""),_=R(null),F=R(null),T=R(null),S=R(-1),u=R(null),l=R(-1),k=R(!1),r=R(null),$=R(!1),y=R(null),E=R(!1),g=R(null),V=R(null),W=K(()=>p.board),A=K(()=>p.loading),h=K(()=>p.error),o=async()=>{try{await p.fetchBoard(c.projectId)}catch(L){console.error("Failed to fetch kanban board:",L)}},x=L=>{switch(L){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}},v=(L,C,G,D)=>{_.value="card",F.value=C,T.value=G,S.value=D;const H=L.dataTransfer;H.effectAllowed="move",H.setData("text/plain",C.id)},N=(L,C,G)=>{if(_.value!=="card")return;const D=L.currentTarget.getBoundingClientRect(),H=D.top+D.height/2,ee=L.clientY<H?G:G+1;C===T.value&&(ee===S.value||ee===S.value+1)?(u.value=null,l.value=-1):(u.value=C,l.value=ee)},Z=()=>{_.value=null,F.value=null,T.value=null,S.value=-1,u.value=null,l.value=-1},ae=async(L,C,G)=>{var fe,se;const D=(se=(fe=W.value)==null?void 0:fe.lanes)==null?void 0:se.find(M=>M.id===L);if(!(D!=null&&D.cards))return;let H=G>=0?G:D.cards.length;if(H>C&&H--,H===C)return;const ee=D.cards.map(M=>M.id),[be]=ee.splice(C,1);ee.splice(H,0,be);try{await p.reorderCards(c.projectId,L,ee)}catch(M){console.error("Failed to reorder cards:",M)}},ne=async(L,C)=>{try{await p.moveCard(c.projectId,L,C,{runOnEnterTemplate:!0})}catch(G){console.error("Failed to move card:",G)}},z=async(L,C)=>{if(L.preventDefault(),_.value!=="card"||!F.value){Z();return}const G=L.dataTransfer.getData("text/plain");if(!G){Z();return}T.value===C?await ae(C,S.value,l.value):await ne(G,C),Z()},Y=async(L,C,G)=>{var be,fe;const D=(fe=(be=W.value)==null?void 0:be.lanes)==null?void 0:fe.find(se=>se.id===L);if(!(D!=null&&D.cards))return;const H=D.cards.map(se=>se.id),[ee]=H.splice(C,1);H.splice(G,0,ee);try{await p.reorderCards(c.projectId,L,H)}catch(se){console.error("Failed to reorder cards:",se)}},J=async L=>{if(confirm("Remove this session from the board?"))try{await p.removeCard(c.projectId,L)}catch(C){console.error("Failed to remove card:",C)}},le=async()=>{if(d.value.trim())try{await p.createLane(c.projectId,{name:d.value.trim()}),re()}catch(L){console.error("Failed to add lane:",L)}},re=()=>{b.value=!1,d.value=""},ie=L=>{r.value=L,k.value=!0},ge=()=>{k.value=!1,r.value=null},O=()=>{},P=L=>{y.value=L,$.value=!0},i=()=>{$.value=!1,y.value=null},t=()=>{},n=()=>{i()},q=(L,C)=>{g.value=L,V.value=C,E.value=!0},de=()=>{E.value=!1,g.value=null,V.value=null},he=()=>{de()};return ve(()=>c.projectId,L=>{L&&o()},{immediate:!0}),Be(()=>{c.projectId&&o()}),(L,C)=>{var D,H,ee,be,fe,se;const G=Me("router-link");return s(),a("div",Ws,[A.value?(s(),a("div",qs,[...C[5]||(C[5]=[e("span",{class:"loading-spinner"},null,-1),oe(" Loading board... ",-1)])])):h.value?(s(),a("div",zs,[C[6]||(C[6]=e("span",{class:"error-icon"},"!",-1)),oe(" "+j(h.value)+" ",1),e("button",{class:"retry-btn",onClick:o}," Retry ")])):W.value?(s(),a("div",Js,[(s(!0),a(X,null,te(W.value.lanes,M=>{var we,_e,B;return s(),a("div",{key:M.id,class:"kanban-lane",onDragover:me(U=>{var ue;return N(U,M.id,((ue=M.cards)==null?void 0:ue.length)||0)},["prevent"]),onDrop:U=>z(U,M.id)},[e("div",Xs,[e("div",Zs,[e("h3",eo,j(M.name),1),M.onEnterTemplateId||M.onEnterPrompt?(s(),a("span",to,[...C[8]||(C[8]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor"},[e("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):w("",!0)]),e("div",no,[e("span",so,j(((we=M.cards)==null?void 0:we.length)||0),1),e("button",{class:"lane-settings-btn",title:"Lane settings",onClick:U=>P(M)},[...C[9]||(C[9]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"3"}),e("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})],-1)])],8,oo)])]),e("div",ao,[(s(!0),a(X,null,te(M.cards,(U,ue)=>{var Ue,De;return s(),a(X,{key:U.id},[_.value==="card"&&u.value===M.id&&l.value===ue?(s(),a("div",lo)):w("",!0),e("div",{class:pe(["kanban-card",{dragging:_.value==="card"&&((Ue=F.value)==null?void 0:Ue.id)===U.id}]),draggable:"true",onDragstart:me(Se=>v(Se,U,M.id,ue),["stop"]),onDragover:me(Se=>N(Se,M.id,ue),["prevent","stop"]),onDragend:Z},[(De=U.sessions)!=null&&De[0]?(s(),ce(G,{key:0,to:`/sessions/${U.sessions[0].id}`,class:"card-link"},{default:ke(()=>[e("div",io,[e("span",{class:pe(["card-status",`status-${U.sessions[0].status}`])},j(x(U.sessions[0].status)),3),e("h4",uo,j(U.sessions[0].name),1)]),e("div",co,[U.sessions[0].mode?(s(),a("span",mo,j(U.sessions[0].mode),1)):w("",!0)])]),_:2},1032,["to"])):w("",!0),e("div",po,[ue>0?(s(),a("button",{key:0,class:"card-reorder-btn",title:"Move card up",onClick:me(Se=>Y(M.id,ue,ue-1),["prevent"])},[...C[10]||(C[10]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"18 15 12 9 6 15"})],-1)])],8,vo)):w("",!0),ue<M.cards.length-1?(s(),a("button",{key:1,class:"card-reorder-btn",title:"Move card down",onClick:me(Se=>Y(M.id,ue,ue+1),["prevent"])},[...C[11]||(C[11]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[e("polyline",{points:"6 9 12 15 18 9"})],-1)])],8,fo)):w("",!0)]),e("button",{class:"card-move-btn",title:"Move to lane",onClick:me(Se=>q(U,M.id),["prevent"])},[...C[12]||(C[12]=[Ge('<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 4 19 4 19 8"></polyline><line x1="14" y1="10" x2="19" y2="4"></line><polyline points="9 20 5 20 5 16"></polyline><line x1="10" y1="14" x2="5" y2="20"></line></svg>',1)])],8,ho),e("button",{class:"card-remove-btn",title:"Remove from board",onClick:me(Se=>J(U.id),["prevent"])}," × ",8,bo)],42,ro)],64)}),128)),_.value==="card"&&u.value===M.id&&l.value===(((_e=M.cards)==null?void 0:_e.length)||0)?(s(),a("div",go)):w("",!0),(B=M.cards)!=null&&B.length?w("",!0):(s(),a("div",yo,[...C[13]||(C[13]=[e("span",null,"Drop sessions here",-1)])]))]),e("div",ko,[M.onEnterTemplateId?(s(),a("span",So," Auto: triggers template on entry ")):M.onEnterPrompt?(s(),a("span",$o," Auto: runs custom prompt on entry ")):w("",!0),e("button",{class:"add-session-btn",onClick:U=>ie(M)}," + Add Session ",8,Eo)])],40,Qs)}),128)),e("div",Co,[b.value?(s(),a("div",wo,[I(e("input",{"onUpdate:modelValue":C[1]||(C[1]=M=>d.value=M),type:"text",placeholder:"Lane name...",class:"add-lane-input",onKeyup:[Ve(le,["enter"]),Ve(re,["escape"])]},null,544),[[ye,d.value]]),e("div",{class:"add-lane-actions"},[e("button",{class:"add-lane-confirm",onClick:le}," Add "),e("button",{class:"add-lane-cancel",onClick:re}," Cancel ")])])):(s(),a("button",{key:0,class:"add-lane-btn",onClick:C[0]||(C[0]=M=>b.value=!0)}," + Add Lane "))])])):(s(),a("div",Ys,[...C[7]||(C[7]=[e("p",null,"Kanban board is not available for this project.",-1)])])),Q(Qe,{"is-open":k.value,"project-id":m.projectId,"lane-id":(D=r.value)==null?void 0:D.id,"lane-name":(H=r.value)==null?void 0:H.name,"onUpdate:isOpen":C[2]||(C[2]=M=>k.value=M),onClose:ge,onAdded:O},null,8,["is-open","project-id","lane-id","lane-name"]),Q(Hs,{"is-open":$.value,"project-id":m.projectId,lane:y.value,"onUpdate:isOpen":C[3]||(C[3]=M=>$.value=M),onClose:i,onUpdated:t,onDeleted:n},null,8,["is-open","project-id","lane"]),Q(it,{"is-open":E.value,"project-id":m.projectId,"card-id":(ee=g.value)==null?void 0:ee.id,"current-lane-id":V.value,"session-name":(se=(fe=(be=g.value)==null?void 0:be.sessions)==null?void 0:fe[0])==null?void 0:se.name,"onUpdate:isOpen":C[4]||(C[4]=M=>E.value=M),onClose:de,onMoved:he},null,8,["is-open","project-id","card-id","current-lane-id","session-name"])])}}},To={class:"container"},jo={class:"page-header"},Fo={class:"project-title"},Mo=["href"],Ro={class:"tabs"},Ao={class:"tabs-desktop"},Lo={class:"tabs-left"},xo={class:"tabs-mobile"},Oo=["value"],Bo={key:0,value:"kanban"},Po={key:2,class:"tab-spacer"},Uo={key:3},Do={key:0,class:"skeleton-list"},Vo={key:1,class:"error-message"},No={key:2,class:"empty-state"},Io={key:3,class:"empty-state"},Ko={key:4,class:"session-list"},Go={key:5},Ho={key:6},Wo={class:"modal-content lane-selector-modal"},qo={class:"modal-body"},zo={class:"modal-description"},Yo={class:"lane-options"},Jo=["onClick"],Qo={class:"lane-option-name"},Xo={class:"lane-option-count"},Zo={key:0,class:"empty-lanes"},fa={__name:"SessionListView",setup(m){const c=tt(),p=Ke(),b=Pe(),d=$e(),_=Te(),F=He();mt(),F.restoreCollapsedLogState();const T=K(()=>{switch(c.name){case"ArchivedSessions":return"archived";case"ProjectTemplates":return"templates";case"ProjectCommands":return"commands";case"ProjectKanban":return"kanban";default:return"sessions"}});function S(t){const n=c.params.id,q={sessions:`/projects/${n}/sessions`,archived:`/projects/${n}/archived`,templates:`/projects/${n}/templates`,commands:`/projects/${n}/commands`,kanban:`/projects/${n}/kanban`};p.push(q[t])}const u=K(()=>c.params.id),{summaries:l,loadingSummaries:k,summaryErrors:r,fetchSummariesBatch:$,retryFetchSummary:y,updateSummary:E,cleanupSummary:g}=ut(),{filteredGroupedSessions:V}=Je(),{archivedLoaded:W}=ct(u,{fetchSummariesBatch:$,updateSummary:E,cleanupSummary:g});let A=null;ve(()=>d.sessions,()=>{clearTimeout(A),A=setTimeout(()=>{$(d.sessions)},400)}),ve(()=>c.name,async t=>{t==="ArchivedSessions"&&await h()},{immediate:!0}),ve([T,()=>{var t;return(t=b.currentProject)==null?void 0:t.kanbanEnabled}],([t,n])=>{t==="kanban"&&n===!1&&p.replace(`/projects/${c.params.id}/sessions`)},{immediate:!0}),ve(()=>d.starredFilter,async(t,n)=>{T.value==="archived"&&W.value&&t!==n&&(await d.fetchArchivedSessions(u.value,{reset:!0}),$(d.archivedSessions))});async function h(){W.value||(await d.fetchArchivedSessions(u.value,{reset:!0}),W.value=!0,$(d.archivedSessions))}async function o(){await d.loadMoreArchivedSessions(u.value),$(d.archivedSessions)}const x=R(!1),v=R(null),N=R(!1);function Z(t){const n=d.sessions.find(q=>q.id===t);v.value=n||{id:t},x.value=!0}async function ae(t){if(v.value){N.value=!0;try{await d.archiveSession(v.value.id,{cleanup:t}),Y.success("Session archived")}catch(n){Y.error(n.message||"Failed to archive session")}finally{N.value=!1,x.value=!1,v.value=null}}}function ne(){x.value=!1,v.value=null}async function z(t){try{await d.unarchiveSession(t)}catch(n){console.error("Failed to unarchive session:",n)}}const Y=Fe(),J=R(!1),le=R(null),re=R(!1),ie=R(null);function ge(t){ie.value=t,re.value=!0}function O(){re.value=!1,ie.value=null}async function P(t){if(!(!ie.value||!t))try{await _.addSessionToBoard(c.params.id,ie.value.id,t.id),Y.success(`Session added to "${t.name}"`),O()}catch(n){console.error("Failed to add session to board:",n),Y.error(n.message||"Failed to add session to board")}}function i(){J.value=!1,le.value=null}return Be(()=>{d.restoreStatusFilter(),d.restoreStarredFilter(),d.restoreScheduledFilter();const t=c.params.id;t&&_.fetchBoard(t).catch(n=>{console.warn("Failed to fetch kanban board:",n)})}),Oe(()=>{clearTimeout(A)}),(t,n)=>{var de,he,L,C,G,D,H,ee,be,fe,se,M,we,_e;const q=Me("router-link");return s(),a("div",To,[e("div",jo,[e("div",null,[e("div",Fo,[e("h1",null,j(((de=f(b).currentProject)==null?void 0:de.name)||"Sessions"),1),(he=f(b).currentProject)!=null&&he.repoUrl?(s(),a("a",{key:0,href:f(b).currentProject.repoUrl,target:"_blank",rel:"noopener noreferrer",class:"repo-link",title:"Open repository"},[...n[7]||(n[7]=[e("svg",{class:"repo-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6m4-3l6 6m0 0l-6 6m6-6H9"})],-1)])],8,Mo)):w("",!0),Q(q,{to:`/projects/${f(c).params.id}/edit`,class:"settings-link",title:"Project settings"},{default:ke(()=>[...n[8]||(n[8]=[e("svg",{class:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)])]),_:1},8,["to"])])]),T.value==="sessions"?(s(),ce(q,{key:0,to:`/projects/${f(c).params.id}/sessions/new`,class:"btn btn-primary mobile-only"},{default:ke(()=>[...n[9]||(n[9]=[oe(" + Session ",-1)])]),_:1},8,["to"])):w("",!0)]),e("div",Ro,[e("div",Ao,[e("div",Lo,[e("button",{class:pe(["tab",{active:T.value==="sessions"}]),onClick:n[0]||(n[0]=B=>f(p).push(`/projects/${f(c).params.id}/sessions`))}," Sessions ",2),e("button",{class:pe(["tab",{active:T.value==="archived"}]),onClick:n[1]||(n[1]=B=>f(p).push(`/projects/${f(c).params.id}/archived`))}," Archived ",2),e("button",{class:pe(["tab",{active:T.value==="templates"}]),onClick:n[2]||(n[2]=B=>f(p).push(`/projects/${f(c).params.id}/templates`))}," Templates ",2),e("button",{class:pe(["tab",{active:T.value==="commands"}]),onClick:n[3]||(n[3]=B=>f(p).push(`/projects/${f(c).params.id}/commands`))}," Commands ",2),(L=f(b).currentProject)!=null&&L.kanbanEnabled?(s(),a("button",{key:0,class:pe(["tab",{active:T.value==="kanban"}]),onClick:n[4]||(n[4]=B=>f(p).push(`/projects/${f(c).params.id}/kanban`))},[...n[10]||(n[10]=[oe(" Kanban ",-1),e("span",{class:"ml-1 rounded bg-amber-900/50 px-1.5 py-0.5 text-[10px] font-semibold uppercase text-amber-300"}," Experimental ",-1)])],2)):w("",!0)]),T.value==="sessions"?(s(),ce(q,{key:0,to:`/projects/${f(c).params.id}/sessions/new`,class:"btn btn-primary desktop-only","aria-label":"New Session"},{default:ke(()=>[...n[11]||(n[11]=[e("span",{class:"add-session-label-full"},"+ Session",-1),e("span",{class:"add-session-label-short"},"+",-1)])]),_:1},8,["to"])):w("",!0)]),e("div",xo,[e("select",{value:T.value,class:"tab-select",onChange:n[5]||(n[5]=B=>S(B.target.value))},[n[12]||(n[12]=e("option",{value:"sessions"}," Sessions ",-1)),n[13]||(n[13]=e("option",{value:"archived"}," Archived ",-1)),n[14]||(n[14]=e("option",{value:"templates"}," Templates ",-1)),n[15]||(n[15]=e("option",{value:"commands"}," Commands ",-1)),(C=f(b).currentProject)!=null&&C.kanbanEnabled?(s(),a("option",Bo," Kanban (experimental) ")):w("",!0)],40,Oo)])]),T.value==="sessions"?(s(),ce(Ne,{key:0,"show-status-filters":!0,"show-scheduled-filter":!0})):T.value==="archived"?(s(),ce(Ne,{key:1,"show-status-filters":!1,"show-scheduled-filter":!1})):(s(),a("div",Po)),T.value==="sessions"?(s(),a("div",Uo,[f(d).loading?(s(),a("div",Do,[(s(),a(X,null,te(3,B=>e("div",{key:B,class:"skeleton card",style:{height:"120px"}})),64))])):f(d).error?(s(),a("div",Vo,j(f(d).error),1)):f(d).sessions.length===0?(s(),a("div",No,[n[17]||(n[17]=e("p",null,"No sessions yet. Start a new session to interact with the agent.",-1)),Q(q,{to:`/projects/${f(c).params.id}/sessions/new`,class:"btn btn-primary"},{default:ke(()=>[...n[16]||(n[16]=[oe(" New Session ",-1)])]),_:1},8,["to"])])):f(V).length===0?(s(),a("div",Io,[...n[18]||(n[18]=[e("p",null,"No sessions match the current filter.",-1)])])):(s(),a("div",Ko,[(s(!0),a(X,null,te(f(V),B=>{var U;return s(),ce(qe,{key:B.parent.id,session:B.parent,"show-summary":!0,summary:f(l)[B.parent.id],"summary-loading":f(k)[B.parent.id],"summary-error":f(r)[B.parent.id],"show-archive":!0,"kanban-enabled":((U=f(b).currentProject)==null?void 0:U.kanbanEnabled)??!1,"pr-url":B.parent.prUrl,"pr-summary":f(l)[B.parent.id],onRetrySummary:f(y),onArchive:Z,onAddToBoard:ge},null,8,["session","summary","summary-loading","summary-error","kanban-enabled","pr-url","pr-summary","onRetrySummary"])}),128))]))])):w("",!0),T.value==="archived"?(s(),ce(Bt,{key:4,summaries:f(l),"loading-summaries":f(k),"summary-errors":f(r),onRetrySummary:f(y),onUnarchive:z,onLoadMore:o},null,8,["summaries","loading-summaries","summary-errors","onRetrySummary"])):w("",!0),T.value==="templates"?(s(),a("div",Go,[Q(_n,{"project-id":f(c).params.id},null,8,["project-id"])])):w("",!0),T.value==="commands"?(s(),a("div",Ho,[Q(Nn,{"project-id":f(c).params.id},null,8,["project-id"])])):w("",!0),T.value==="kanban"?(s(),ce(_o,{key:7,"project-id":f(c).params.id},null,8,["project-id"])):w("",!0),Q(Qe,{"is-open":J.value,"project-id":f(c).params.id,"lane-id":(G=le.value)==null?void 0:G.id,"lane-name":(D=le.value)==null?void 0:D.name,"onUpdate:isOpen":n[6]||(n[6]=B=>J.value=B),onClose:i},null,8,["is-open","project-id","lane-id","lane-name"]),re.value?(s(),a("div",{key:8,class:"modal-backdrop",onClick:me(O,["self"])},[e("div",Wo,[e("div",{class:"modal-header"},[n[19]||(n[19]=e("h2",{class:"modal-title"}," Add to Kanban Board ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:O}," × ")]),e("div",qo,[e("p",zo,' Select a lane to add "'+j((H=ie.value)==null?void 0:H.name)+'" to: ',1),e("div",Yo,[(s(!0),a(X,null,te((ee=f(_).board)==null?void 0:ee.lanes,B=>{var U;return s(),a("button",{key:B.id,class:"lane-option-btn",onClick:ue=>P(B)},[e("span",Qo,j(B.name),1),e("span",Xo,j(((U=B.cards)==null?void 0:U.length)||0)+" cards",1)],8,Jo)}),128))]),(fe=(be=f(_).board)==null?void 0:be.lanes)!=null&&fe.length?w("",!0):(s(),a("p",Zo," No lanes available. Go to the Kanban tab to create lanes first. "))]),e("div",{class:"modal-footer"},[e("button",{class:"btn btn-secondary",onClick:O}," Cancel ")])])])):w("",!0),Q(dt,{"is-open":x.value,"session-name":((se=v.value)==null?void 0:se.name)||"this session","has-cleanup-script":!!((M=f(b).currentProject)!=null&&M.onSessionDeleted&&((we=v.value)!=null&&we.gitWorktree)&&!((_e=v.value)!=null&&_e.parentSessionId)),loading:N.value,onConfirm:ae,onCancel:ne},null,8,["is-open","session-name","has-cleanup-script","loading"])])}}};export{fa as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as ae,C as X,D as oe,O as le}from"./EffortLevelSelector-hc2MNKg6.js";import{_ as T,k as Z,n as D,l as W,a as o,c as i,b as l,F as B,r as N,t as m,x as _,S as ie,M as re,o as ee,J as ce,m as z,v as A,K as G,i as k,f as q,j as K,p as de,G as E,d as ue,w as me,u as R,T as fe,U as pe}from"./index-fK8FIZgP.js";import{u as te}from"./providers-1bnH-exJ.js";import{a as F}from"./ApiClient-C3ztI9s9.js";const he={class:"mode-selector"},ge=["value","disabled"],ve=["value"],ye={__name:"ModeSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,c=t,a=ae(),u=Z(),d=D(!1),h=[{value:"plan",label:"Plan",description:"Agent plans before implementing"},{value:"standard",label:"Standard",description:"Balanced approach"},{value:"yolo",label:"YOLO",description:"Auto-approve mode"}],b=_(()=>{var p;return n.sessionId?(p=a.currentSession)==null?void 0:p.mode:n.modelValue}),C=D(b.value),g=ie(n,"modelValue");W([b,g],([p])=>{C.value=p},{flush:"sync"});async function r(p){if(!d.value&&C.value!==p)if(C.value=p,n.sessionId){d.value=!0;try{await a.updateSessionMode(n.sessionId,p)}catch(S){C.value=b.value,u.error(S.message)}finally{d.value=!1}}else c("update:modelValue",p)}return(p,S)=>(o(),i("div",he,[l("select",{id:"mode-select",value:C.value,disabled:e.disabled||d.value,class:"mode-select",onChange:S[0]||(S[0]=w=>r(w.target.value))},[(o(),i(B,null,N(h,w=>l("option",{key:w.value,value:w.value},m(w.label),9,ve)),64))],40,ge)]))}},Gt=T(ye,[["__scopeId","data-v-224ea1e6"]]),se=Object.freeze({streaming:!1,thinking:!1,reasoningEffort:!1,toolUse:!1,resume:!1}),I={byAgentType:new Map,fetchPromise:null,fetched:!1};async function J(){return I.fetched?I.byAgentType:(I.fetchPromise||(I.fetchPromise=(async()=>{try{const e=await F.getAgents();for(const t of e||[])t&&t.agentType&&I.byAgentType.set(t.agentType,t.capabilities||se)}catch{}finally{I.fetched=!0,I.fetchPromise=null}return I.byAgentType})()),I.fetchPromise)}function _e(e){return I.byAgentType.get(e)||{...se}}function ne(e){return(e==null?void 0:e.kind)==="openai"?"codex":"claude-code"}function Q(e,t){return(t==null?void 0:t.kind)==="openai"?le.find(n=>n.id===e)||null:(!t||ne(t)==="claude-code")&&X.find(n=>n.id===e)||null}function H(e){try{const n=te().allModels.filter(c=>c.modelId===e);return n.length<=1?n[0]||null:n.sort((c,a)=>{const u=O(c.providerId),d=O(a.providerId);return(u==null?void 0:u.isBuiltIn)!==(d==null?void 0:d.isBuiltIn)?u!=null&&u.isBuiltIn?1:-1:((u==null?void 0:u.name)||"").localeCompare((d==null?void 0:d.name)||"")})[0]||null}catch{return null}}function O(e){try{return te().getById(e)||null}catch{return null}}function Y(e){if(!e)return"Unknown";let t=e.replace(/^(.*\/)?models\//,"");return t=t.replace(/^accounts\/[^/]+\/models\//,""),t=t.replace(/-\d{8}$/,""),t=t.replace(/[-_]/g," "),t=t.split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()).join(" "),t||"Unknown"}function Rt(){function e(c){if(!c)return"Default";const a=H(c),u=a?O(a.providerId):null,d=Q(c,u);return d?d.name:a!=null&&a.displayName?a.displayName:Y(c)}function t(c){if(!c){const h=X.find(b=>b.id===oe);return h?h.description:""}const a=H(c),u=a?O(a.providerId):null,d=Q(c,u);return d?d.description:a!=null&&a.description?a.description:c}function n(c){J();const a=H(c),u=a?O(a.providerId):null,d=u?ne(u):"claude-code";return{name:e(c),description:t(c),providerId:(a==null?void 0:a.providerId)||null,providerName:(a==null?void 0:a.providerName)||(u==null?void 0:u.name)||null,agentType:d,capabilities:_e(d)}}return{getModelDisplayName:e,getModelDescription:t,getModelInfo:n,formatModelId:Y,fetchAgentCapabilities:J}}const ke={__name:"SlashCommandButton",emits:["open"],setup(e,{emit:t}){const n=t;return(c,a)=>(o(),i("button",{type:"button",class:"slash-command-btn",title:"Slash Commands","data-testid":"slash-command-button",onClick:a[0]||(a[0]=u=>n("open"))},[...a[1]||(a[1]=[l("span",{class:"slash-icon"},"/",-1),l("span",{class:"slash-text"},"Commands",-1)])]))}},Jt=T(ke,[["__scopeId","data-v-63f59216"]]),Ce=re("slashCommands",{state:()=>({commands:[],loading:!1,error:null,lastFetchedDirectory:null,executing:!1}),getters:{builtinCommands:e=>e.commands.filter(t=>t.source==="builtin"),projectCommands:e=>e.commands.filter(t=>t.source==="project"),userCommands:e=>e.commands.filter(t=>t.source==="user"),pluginCommands:e=>e.commands.filter(t=>t.source==="plugin"),customCommands:e=>e.commands.filter(t=>t.source!=="builtin"),projectSkills:e=>e.commands.filter(t=>t.source==="project-skill"),userSkills:e=>e.commands.filter(t=>t.source==="user-skill"),pluginSkills:e=>e.commands.filter(t=>t.source==="plugin-skill"),allSkills:e=>e.commands.filter(t=>t.isSkill===!0),hasSkills:e=>e.commands.some(t=>t.isSkill===!0),allProjectItems:e=>e.commands.filter(t=>t.source==="project"||t.source==="project-skill"),allUserItems:e=>e.commands.filter(t=>t.source==="user"||t.source==="user-skill"),hasCommands:e=>e.commands.length>0,hasCustomCommands:e=>e.commands.some(t=>t.source==="project"||t.source==="user")},actions:{async fetchCommandsFromSession(e){this.loading=!0,this.error=null;try{const t=await F.getSession(e),n=t.slashCommands?JSON.parse(t.slashCommands):[];return this.commands=n,n}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchCommands(e,t=!1){if(!t&&this.lastFetchedDirectory===e&&this.commands.length>0)return this.commands;this.loading=!0,this.error=null;try{const n=await F.getSlashCommands(e);return this.commands=n,this.lastFetchedDirectory=e,n}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async executeCommand(e,t,n={}){this.executing=!0,this.error=null;try{return await F.executeSlashCommand(e,t,n)}catch(c){throw this.error=c.message,c}finally{this.executing=!1}},getCommandByName(e){return this.commands.find(t=>t.name===e)||null},searchCommands(e){if(!e||!e.trim())return this.commands;const t=e.toLowerCase();return this.commands.filter(n=>n.name.toLowerCase().includes(t)||n.description&&n.description.toLowerCase().includes(t))},clearCommands(){this.commands=[],this.lastFetchedDirectory=null,this.error=null}}}),be={class:"command-grid"},Se={class:"search-box"},$e={key:0,class:"loading-state"},we={key:1,class:"error-state"},xe={key:2,class:"empty-state"},Ie={key:0},Be={key:1},Ne={key:3,class:"command-sections"},De={key:0,class:"command-section"},je={class:"command-cards"},Pe=["data-testid","onClick"],Ue={class:"command-name"},Me={class:"command-description"},Ve={key:1,class:"command-section"},Le={class:"command-cards"},ze=["data-testid","onClick"],Oe={class:"command-name"},Te={class:"command-description"},Ae={key:0,class:"command-args-badge"},Fe={key:2,class:"command-section"},qe={class:"command-cards"},Ee=["data-testid","onClick"],He={class:"command-name"},Ke={class:"command-description"},We={key:0,class:"command-args-badge"},Ge={key:3,class:"command-section"},Re={class:"command-cards"},Je=["data-testid","onClick"],Qe={class:"command-name"},Ye={class:"command-description"},Xe={key:0,class:"command-args-badge"},Ze={key:4,class:"command-section"},et={class:"command-cards"},tt=["data-testid","onClick"],st={class:"command-name"},nt={class:"command-description"},at={key:0,class:"command-args-badge"},ot={key:5,class:"command-section"},lt={class:"command-cards"},it=["data-testid","onClick"],rt={class:"command-name"},ct={class:"command-description"},dt={key:0,class:"command-args-badge"},ut={key:6,class:"command-section"},mt={class:"command-cards"},ft=["data-testid","onClick"],pt={class:"command-name"},ht={class:"command-description"},gt={key:0,class:"command-args-badge"},vt={__name:"CommandGrid",props:{commands:{type:Array,required:!0},loading:{type:Boolean,default:!1},error:{type:String,default:null},hideBuiltin:{type:Boolean,default:!1}},emits:["select","close"],setup(e,{emit:t}){const n=e,c=t,a=D(""),u=D(null),d=_(()=>n.commands.filter(v=>v.source==="builtin")),h=_(()=>n.commands.filter(v=>v.source==="project")),b=_(()=>n.commands.filter(v=>v.source==="user")),C=_(()=>n.commands.filter(v=>v.source==="plugin")),g=_(()=>n.commands.filter(v=>v.source==="project-skill")),r=_(()=>n.commands.filter(v=>v.source==="user-skill")),p=_(()=>n.commands.filter(v=>v.source==="plugin-skill"));function S(v){if(!a.value.trim())return v;const f=a.value.toLowerCase();return v.filter(s=>s.name.toLowerCase().includes(f)||s.description&&s.description.toLowerCase().includes(f))}const w=_(()=>S(d.value)),L=_(()=>S(h.value)),y=_(()=>S(b.value)),$=_(()=>S(C.value)),x=_(()=>S(g.value)),j=_(()=>S(r.value)),P=_(()=>S(p.value)),U=_(()=>[...w.value,...L.value,...y.value,...$.value,...x.value,...j.value,...P.value]);function M(v){c("select",v)}return ee(()=>{ce(()=>{var v;(v=u.value)==null||v.focus()})}),(v,f)=>(o(),i("div",be,[l("div",Se,[z(l("input",{ref_key:"searchInput",ref:u,"onUpdate:modelValue":f[0]||(f[0]=s=>a.value=s),type:"text",placeholder:"Search commands...",class:"search-input","data-testid":"command-search",onKeydown:f[1]||(f[1]=G(s=>c("close"),["escape"]))},null,544),[[A,a.value]])]),e.loading?(o(),i("div",$e,[...f[2]||(f[2]=[l("span",{class:"loading-spinner"},null,-1),l("span",null,"Loading commands...",-1)])])):e.error?(o(),i("div",we,[f[3]||(f[3]=l("span",{class:"error-icon"},"⚠️",-1)),l("span",null,m(e.error),1)])):U.value.length===0?(o(),i("div",xe,[a.value?(o(),i("span",Ie,'No commands match "'+m(a.value)+'"',1)):(o(),i("span",Be,"No slash commands available"))])):(o(),i("div",Ne,[w.value.length>0&&!e.hideBuiltin?(o(),i("div",De,[f[4]||(f[4]=l("h3",{class:"section-title"}," Built-in Commands ",-1)),l("div",je,[(o(!0),i(B,null,N(w.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`command-${s.name}`,onClick:V=>M(s)},[l("span",Ue,"/"+m(s.name),1),l("span",Me,m(s.description||"No description"),1)],8,Pe))),128))])])):k("",!0),L.value.length>0?(o(),i("div",Ve,[f[5]||(f[5]=l("h3",{class:"section-title"}," Project Commands ",-1)),l("div",Le,[(o(!0),i(B,null,N(L.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`command-${s.name}`,onClick:V=>M(s)},[l("span",Oe,"/"+m(s.name),1),l("span",Te,m(s.description||"No description"),1),s.arguments.length>0?(o(),i("span",Ae,m(s.arguments.length)+" arg"+m(s.arguments.length>1?"s":""),1)):k("",!0)],8,ze))),128))])])):k("",!0),y.value.length>0?(o(),i("div",Fe,[f[6]||(f[6]=l("h3",{class:"section-title"}," User Commands ",-1)),l("div",qe,[(o(!0),i(B,null,N(y.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`command-${s.name}`,onClick:V=>M(s)},[l("span",He,"/"+m(s.name),1),l("span",Ke,m(s.description||"No description"),1),s.arguments.length>0?(o(),i("span",We,m(s.arguments.length)+" arg"+m(s.arguments.length>1?"s":""),1)):k("",!0)],8,Ee))),128))])])):k("",!0),$.value.length>0?(o(),i("div",Ge,[f[7]||(f[7]=l("h3",{class:"section-title"}," Plugin Commands ",-1)),l("div",Re,[(o(!0),i(B,null,N($.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`command-${s.name}`,onClick:V=>M(s)},[l("span",Qe,"/"+m(s.name),1),l("span",Ye,m(s.description||"No description"),1),s.arguments.length>0?(o(),i("span",Xe,m(s.arguments.length)+" arg"+m(s.arguments.length>1?"s":""),1)):k("",!0)],8,Je))),128))])])):k("",!0),x.value.length>0?(o(),i("div",Ze,[f[8]||(f[8]=l("h3",{class:"section-title"}," Project Skills ",-1)),l("div",et,[(o(!0),i(B,null,N(x.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`skill-${s.name}`,onClick:V=>M(s)},[l("span",st,"/"+m(s.name),1),l("span",nt,m(s.description||"No description"),1),s.argumentHint?(o(),i("span",at,m(s.argumentHint),1)):k("",!0)],8,tt))),128))])])):k("",!0),j.value.length>0?(o(),i("div",ot,[f[9]||(f[9]=l("h3",{class:"section-title"}," User Skills ",-1)),l("div",lt,[(o(!0),i(B,null,N(j.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`skill-${s.name}`,onClick:V=>M(s)},[l("span",rt,"/"+m(s.name),1),l("span",ct,m(s.description||"No description"),1),s.argumentHint?(o(),i("span",dt,m(s.argumentHint),1)):k("",!0)],8,it))),128))])])):k("",!0),P.value.length>0?(o(),i("div",ut,[f[10]||(f[10]=l("h3",{class:"section-title"}," Plugin Skills ",-1)),l("div",mt,[(o(!0),i(B,null,N(P.value,s=>(o(),i("button",{key:s.name,type:"button",class:"command-card","data-testid":`skill-${s.name}`,onClick:V=>M(s)},[l("span",pt,"/"+m(s.name),1),l("span",ht,m(s.description||"No description"),1),s.argumentHint?(o(),i("span",gt,m(s.argumentHint),1)):k("",!0)],8,ft))),128))])])):k("",!0)]))]))}},yt=T(vt,[["__scopeId","data-v-8ec2a6ee"]]),_t={class:"arguments-form"},kt={class:"form-header"},Ct={class:"command-title"},bt={key:0,class:"command-description"},St={key:0,class:"form-field"},$t={for:"skill-args",class:"field-label"},wt={key:0,class:"hint"},xt=["placeholder","onKeydown"],It=["for"],Bt={key:0,class:"required-indicator"},Nt=["id","onUpdate:modelValue","required","data-testid"],Dt=["value"],jt=["id","onUpdate:modelValue","required","placeholder","data-testid"],Pt=["id","onUpdate:modelValue","required","placeholder","data-testid"],Ut={class:"form-actions"},Mt=["disabled"],Vt={key:0,class:"loading-spinner"},Lt={__name:"ArgumentsForm",props:{command:{type:Object,required:!0},executing:{type:Boolean,default:!1},executeLabel:{type:String,default:"Execute Command"}},emits:["back","submit"],setup(e,{emit:t}){const n=e,c=t,a=D({}),u=D("");function d(){const C={};for(const g of n.command.arguments||[])C[g.name]=g.default!==void 0?g.default:"";a.value=C}ee(()=>{d()}),W(()=>n.command,()=>{d()});const h=_(()=>{if(n.command.isSkill)return!0;for(const C of n.command.arguments||[])if(C.required){const g=a.value[C.name];if(g==null||g==="")return!1}return!0});function b(){if(!(!h.value||n.executing)){if(n.command.isSkill){c("submit",{_raw:u.value});return}c("submit",a.value)}}return(C,g)=>(o(),i("div",_t,[l("div",kt,[l("h3",Ct," /"+m(e.command.name),1),e.command.description?(o(),i("p",bt,m(e.command.description),1)):k("",!0)]),l("form",{class:"form-fields",onSubmit:K(b,["prevent"])},[e.command.isSkill?(o(),i("div",St,[l("label",$t,[g[2]||(g[2]=q(" Arguments ",-1)),e.command.argumentHint?(o(),i("span",wt,m(e.command.argumentHint),1)):k("",!0)]),z(l("input",{id:"skill-args","onUpdate:modelValue":g[0]||(g[0]=r=>u.value=r),type:"text",placeholder:e.command.argumentHint||"Enter arguments...",class:"field-input","data-testid":"skill-args-input",onKeydown:G(K(b,["prevent"]),["enter"])},null,40,xt),[[A,u.value]])])):(o(!0),i(B,{key:1},N(e.command.arguments,r=>(o(),i("div",{key:r.name,class:"form-field"},[l("label",{for:`arg-${r.name}`,class:"field-label"},[q(m(r.label)+" ",1),r.required?(o(),i("span",Bt,"*")):k("",!0)],8,It),r.type==="select"?z((o(),i("select",{key:0,id:`arg-${r.name}`,"onUpdate:modelValue":p=>a.value[r.name]=p,required:r.required,class:"field-select","data-testid":`arg-${r.name}`},[g[3]||(g[3]=l("option",{value:"",disabled:""}," Select an option... ",-1)),(o(!0),i(B,null,N(r.options||[],p=>(o(),i("option",{key:p.value,value:p.value},m(p.label),9,Dt))),128))],8,Nt)),[[de,a.value[r.name]]]):r.type==="multiline"?z((o(),i("textarea",{key:1,id:`arg-${r.name}`,"onUpdate:modelValue":p=>a.value[r.name]=p,required:r.required,placeholder:r.placeholder||"",class:"field-textarea",rows:"4","data-testid":`arg-${r.name}`},null,8,jt)),[[A,a.value[r.name]]]):z((o(),i("input",{key:2,id:`arg-${r.name}`,"onUpdate:modelValue":p=>a.value[r.name]=p,type:"text",required:r.required,placeholder:r.placeholder||"",class:"field-input","data-testid":`arg-${r.name}`},null,8,Pt)),[[A,a.value[r.name]]])]))),128)),l("div",Ut,[l("button",{type:"button",class:"btn btn-secondary",onClick:g[1]||(g[1]=r=>c("back"))}," Back "),l("button",{type:"submit",class:"btn btn-primary",disabled:!h.value||e.executing,"data-testid":"execute-command-btn"},[e.executing?(o(),i("span",Vt)):k("",!0),q(" "+m(e.executeLabel),1)],8,Mt)])],32)]))}},zt=T(Lt,[["__scopeId","data-v-aaa3cc39"]]),Ot={class:"wizard-modal",role:"dialog","aria-labelledby":"wizard-title"},Tt={class:"wizard-header"},At={id:"wizard-title",class:"wizard-title"},Ft={class:"wizard-content"},qt={__name:"SlashCommandWizard",props:{isOpen:{type:Boolean,required:!0},sessionId:{type:String,default:null},workingDirectory:{type:String,default:null},hideBuiltin:{type:Boolean,default:!1},mode:{type:String,default:"execute",validator:e=>["execute","insert"].includes(e)}},emits:["update:isOpen","executed","insert"],setup(e,{emit:t}){const n=e,c=t,a=Ce(),u=Z(),d=D(1),h=D(null),b=D(!1),C=_(()=>n.hideBuiltin?a.customCommands:a.commands),g=_(()=>n.mode==="insert"?"Insert Command":"Execute Command");W(()=>n.isOpen,async y=>{if(y){d.value=1,h.value=null,console.log("[SlashCommandWizard] Opening wizard, workingDirectory:",n.workingDirectory);try{n.workingDirectory?(await a.fetchCommands(n.workingDirectory),console.log("[SlashCommandWizard] Fetched commands:",a.commands.length,"commands")):console.warn("[SlashCommandWizard] No workingDirectory provided, skipping command fetch")}catch($){console.error("[SlashCommandWizard] Failed to fetch commands:",$)}}});function r(){c("update:isOpen",!1),d.value=1,h.value=null}function p(y){if(h.value=y,y.isSkill){d.value=2;return}!y.arguments||y.arguments.length===0?w({}):d.value=2}function S(){d.value=1,h.value=null}async function w(y){if(h.value){if(n.mode==="insert"){const $=L(h.value,y);c("insert",{command:h.value,args:y,text:$}),r();return}if(!n.sessionId){u.error("No session available to execute command");return}b.value=!0;try{await a.executeCommand(n.sessionId,h.value.name,y),c("executed",{command:h.value,args:y}),u.success(`Command /${h.value.name} executed`),r()}catch($){u.error(`Failed to execute command: ${$.message}`)}finally{b.value=!1}}}function L(y,$){let x=`/${y.name}`;if(y.isSkill){const P=$._raw||"";return P&&(x+=` ${P}`),x}const j=[];for(const P of y.arguments||[]){const U=$[P.name];U!==void 0&&U!==""&&(typeof U=="string"&&U.includes(" ")?j.push(`"${U}"`):j.push(String(U)))}return j.length>0&&(x+=` ${j.join(" ")}`),x}return(y,$)=>(o(),E(pe,{to:"body"},[ue(fe,{name:"modal"},{default:me(()=>{var x;return[e.isOpen?(o(),i("div",{key:0,class:"wizard-overlay","data-testid":"slash-command-wizard",onClick:K(r,["self"]),onKeydown:G(r,["escape"])},[l("div",Ot,[l("header",Tt,[l("h2",At,m(d.value===1?"Slash Commands":`Configure /${(x=h.value)==null?void 0:x.name}`),1),l("button",{type:"button",class:"close-btn","aria-label":"Close wizard",onClick:r}," × ")]),l("div",Ft,[d.value===1?(o(),E(yt,{key:0,commands:C.value,loading:R(a).loading,error:R(a).error,"hide-builtin":e.hideBuiltin,onSelect:p,onClose:r},null,8,["commands","loading","error","hide-builtin"])):d.value===2&&h.value?(o(),E(zt,{key:1,command:h.value,executing:b.value,"execute-label":g.value,onBack:S,onSubmit:w},null,8,["command","executing","execute-label"])):k("",!0)])])],32)):k("",!0)]}),_:1})]))}},Qt=T(qt,[["__scopeId","data-v-0f2f2245"]]);export{Gt as M,Jt as S,Qt as a,Rt as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as N,k as $,o as G,a as s,c as r,b as t,f as y,d as p,w as O,m as v,v as S,p as V,F as R,r as F,t as i,i as B,j as C,n as d,x as I,g as q,h as P,s as z}from"./index-fK8FIZgP.js";import{u as A,E as H}from"./EffortLevelSelector-hc2MNKg6.js";import{a as Y}from"./ApiClient-C3ztI9s9.js";import{M as J}from"./ModelSelector-CwTz8ZWO.js";import{I as K}from"./InterpolationHelp-BO1j9Z3_.js";import{R as Q}from"./ResizableTextarea-B3YIdIXv.js";import"./sessions-6zGUlFrt.js";import"./providers-1bnH-exJ.js";const W={class:"container template-detail"},X={key:0,class:"loading-state"},Z={key:1,class:"form-container"},_={class:"form-header"},ee={class:"form-group"},te={class:"form-group"},le={class:"form-group"},oe=["value"],ae={class:"form-group"},ne={class:"form-group"},se={class:"form-group"},re={class:"form-group"},ie={class:"form-group"},de={class:"form-actions"},ue=["disabled"],me={key:0,class:"form-error-message"},pe={class:"modal-body"},ve={class:"modal-footer"},fe=["disabled"],be={__name:"TemplateDetailView",setup(ge){const E=z(),T=P(),f=A(),u=$(),k=d(!1),b=d(!1),g=d(!1),m=d(!1),n=d(null),l=d({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null,effortLevel:null}),x=I(()=>E.params.projectId),c=I(()=>E.params.templateId),D=I(()=>[...f.projectTemplates,...f.globalTemplates].filter(e=>e.id!==c.value)),L=async()=>{k.value=!0,n.value=null;try{const o=await Y.getTemplate(c.value);o&&(l.value={name:o.name,prompt:o.prompt,isGlobal:!o.projectId,nextTemplateId:o.nextTemplateId||null,thinkingEnabled:o.thinkingEnabled,gitBranch:o.gitBranch||"",model:o.model,mode:o.mode,effortLevel:o.effortLevel??null})}catch(o){n.value=`Failed to load template: ${o.message}`,u.error(o.message)}finally{k.value=!1}},w=async()=>{n.value=null,b.value=!0;try{const o={name:l.value.name,prompt:l.value.prompt,nextTemplateId:l.value.nextTemplateId||void 0,thinkingEnabled:l.value.thinkingEnabled,gitBranch:l.value.gitBranch||void 0,model:l.value.model,mode:l.value.mode,effortLevel:l.value.effortLevel};await f.updateTemplate(c.value,o),u.success("Template updated"),T.push(`/projects/${x.value}/templates`)}catch(o){n.value=o.message,u.error(o.message)}finally{b.value=!1}},U=()=>{T.back()},j=()=>{m.value=!0},h=async()=>{g.value=!0,n.value=null;try{await f.deleteTemplate(c.value),u.success("Template deleted"),m.value=!1,T.push(`/projects/${x.value}/templates`)}catch(o){n.value=o.message,u.error(o.message)}finally{g.value=!1}};return G(async()=>{await L()}),(o,e)=>{const M=q("router-link");return s(),r("div",W,[k.value?(s(),r("div",X,[...e[11]||(e[11]=[t("span",{class:"loading-spinner"},null,-1),y(" Loading... ",-1)])])):(s(),r("div",Z,[t("div",_,[p(M,{to:`/projects/${x.value}/templates`,class:"btn btn-outline-secondary"},{default:O(()=>[...e[12]||(e[12]=[y(" ← Back ",-1)])]),_:1},8,["to"]),e[13]||(e[13]=t("h2",null,"Edit Template",-1))]),t("form",{class:"template-form",onSubmit:C(w,["prevent"])},[t("div",ee,[e[14]||(e[14]=t("label",{for:"name"},"Name",-1)),v(t("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=a=>l.value.name=a),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[S,l.value.name]])]),t("div",te,[e[15]||(e[15]=t("label",{for:"prompt"},"Prompt",-1)),p(Q,{id:"prompt",modelValue:l.value.prompt,"onUpdate:modelValue":e[1]||(e[1]=a=>l.value.prompt=a),class:"form-input form-textarea",placeholder:"Session prompt. Use {{rootSession.summary}} to reference root session data.","min-height":120,required:""},null,8,["modelValue"]),p(K)]),t("div",le,[e[17]||(e[17]=t("label",{for:"nextTemplate"},"Next Template (Optional)",-1)),v(t("select",{id:"nextTemplate","onUpdate:modelValue":e[2]||(e[2]=a=>l.value.nextTemplateId=a),class:"form-input"},[e[16]||(e[16]=t("option",{value:null}," None ",-1)),(s(!0),r(R,null,F(D.value,a=>(s(),r("option",{key:a.id,value:a.id},i(a.name)+" "+i(a.projectId?"":"(Global)"),9,oe))),128))],512),[[V,l.value.nextTemplateId]]),e[18]||(e[18]=t("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),t("div",ae,[e[20]||(e[20]=t("label",{for:"thinkingEnabled"},"Extended Thinking",-1)),v(t("select",{id:"thinkingEnabled","onUpdate:modelValue":e[3]||(e[3]=a=>l.value.thinkingEnabled=a),class:"form-input"},[...e[19]||(e[19]=[t("option",{value:null}," Inherit from root session ",-1),t("option",{value:!0}," Enabled ",-1),t("option",{value:!1}," Disabled ",-1)])],512),[[V,l.value.thinkingEnabled]])]),t("div",ne,[e[21]||(e[21]=t("label",{for:"model"},"Model",-1)),p(J,{modelValue:l.value.model,"onUpdate:modelValue":e[4]||(e[4]=a=>l.value.model=a),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),t("div",se,[e[23]||(e[23]=t("label",{for:"mode"},"Mode",-1)),v(t("select",{id:"mode","onUpdate:modelValue":e[5]||(e[5]=a=>l.value.mode=a),class:"form-input"},[...e[22]||(e[22]=[t("option",{value:null}," Inherit from root session ",-1),t("option",{value:"plan"}," Plan ",-1),t("option",{value:"standard"}," Standard ",-1),t("option",{value:"yolo"}," YOLO ",-1)])],512),[[V,l.value.mode]])]),t("div",re,[e[24]||(e[24]=t("label",{for:"effort-level"},"Effort Level",-1)),p(H,{modelValue:l.value.effortLevel,"onUpdate:modelValue":e[6]||(e[6]=a=>l.value.effortLevel=a)},null,8,["modelValue"])]),t("div",ie,[e[25]||(e[25]=t("label",{for:"gitBranch"},"Git Branch (Optional)",-1)),v(t("input",{id:"gitBranch","onUpdate:modelValue":e[7]||(e[7]=a=>l.value.gitBranch=a),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[S,l.value.gitBranch]])]),t("div",de,[t("button",{type:"button",class:"btn btn-outline-secondary",onClick:U}," Cancel "),t("button",{type:"button",class:"btn btn-outline-danger",onClick:j}," Delete "),t("button",{type:"submit",class:"btn btn-primary",disabled:b.value},i(b.value?"Saving...":"Save"),9,ue)]),n.value?(s(),r("div",me,i(n.value),1)):B("",!0)],32)])),m.value?(s(),r("div",{key:2,class:"modal-overlay",onClick:e[10]||(e[10]=a=>m.value=!1)},[t("div",{class:"modal-dialog",onClick:e[9]||(e[9]=C(()=>{},["stop"]))},[e[29]||(e[29]=t("div",{class:"modal-header"},[t("h4",null,"Delete Template")],-1)),t("div",pe,[t("p",null,[e[26]||(e[26]=y('Are you sure you want to delete "',-1)),t("strong",null,i(l.value.name),1),e[27]||(e[27]=y('"?',-1))]),e[28]||(e[28]=t("p",null,"This action cannot be undone.",-1))]),t("div",ve,[t("button",{class:"btn btn-outline-secondary",onClick:e[8]||(e[8]=a=>m.value=!1)}," Cancel "),t("button",{class:"btn btn-danger",disabled:g.value,onClick:h},i(g.value?"Deleting...":"Delete"),9,fe)])])])):B("",!0)])}}},Se=N(be,[["__scopeId","data-v-f2f40f55"]]);export{Se as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.template-detail[data-v-f2f40f55]{max-width:700px;margin:0 auto;padding:2rem 0}.loading-state[data-v-f2f40f55]{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:3rem;color:var(--color-text-soft)}.form-container[data-v-f2f40f55]{display:flex;flex-direction:column;gap:2rem}.form-header[data-v-f2f40f55]{display:flex;align-items:center;gap:1rem}.form-header h2[data-v-f2f40f55]{margin:0;color:var(--color-text);flex:1}.template-form[data-v-f2f40f55]{display:flex;flex-direction:column;gap:1.5rem;background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:2rem}.form-group[data-v-f2f40f55]{display:flex;flex-direction:column;gap:.5rem}.form-group label[data-v-f2f40f55]{font-weight:500;color:var(--color-text);font-size:.95rem}.form-input[data-v-f2f40f55]{padding:.75rem;background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);font-family:inherit;font-size:.95rem;transition:border-color .2s}.form-input[data-v-f2f40f55]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #58a6ff1a}.form-input[data-v-f2f40f55]:disabled{opacity:.6;cursor:not-allowed;background-color:var(--color-bg-soft)}.form-input[data-v-f2f40f55]::placeholder{color:var(--color-text-soft)}[data-v-f2f40f55] textarea.form-textarea{font-family:var(--font-mono);font-size:.85rem;min-height:120px;line-height:1.5}.form-help[data-v-f2f40f55]{font-size:.85rem;color:var(--color-text-soft);margin:0}.form-help code[data-v-f2f40f55]{background:var(--color-bg-soft);padding:.1rem .3rem;border-radius:3px;font-size:.8rem}.form-group-checkbox[data-v-f2f40f55]{gap:.25rem}.checkbox-label[data-v-f2f40f55]{display:flex;align-items:center;gap:.5rem;font-weight:500;color:var(--color-text);font-size:.95rem;cursor:pointer;-webkit-user-select:none;user-select:none}.form-checkbox[data-v-f2f40f55]{width:18px;height:18px;cursor:pointer;accent-color:var(--color-primary)}.form-error-message[data-v-f2f40f55]{padding:.75rem;background-color:#f851491a;border:1px solid var(--color-error);border-radius:var(--border-radius);color:var(--color-error);font-size:.9rem}.form-actions[data-v-f2f40f55]{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}.form-actions button[data-v-f2f40f55]:disabled{opacity:.6;cursor:not-allowed}.modal-overlay[data-v-f2f40f55]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-dialog[data-v-f2f40f55]{background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);max-width:400px;width:90%;overflow:hidden}.modal-header[data-v-f2f40f55]{padding:1rem;border-bottom:1px solid var(--color-border)}.modal-header h4[data-v-f2f40f55]{margin:0;color:var(--color-text)}.modal-body[data-v-f2f40f55]{padding:1.5rem 1rem;color:var(--color-text-soft)}.modal-body p[data-v-f2f40f55]{margin:.5rem 0}.modal-footer[data-v-f2f40f55]{padding:1rem;border-top:1px solid var(--color-border);display:flex;gap:.5rem;justify-content:flex-end}@media (max-width: 640px){.template-detail[data-v-f2f40f55]{padding:1rem}.form-header[data-v-f2f40f55]{flex-direction:column;align-items:flex-start}.template-form[data-v-f2f40f55]{padding:1.5rem 1rem}.form-actions[data-v-f2f40f55]{flex-direction:column-reverse}.form-actions button[data-v-f2f40f55]{width:100%}}
|