circuschief 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/server/src/api/commands.js +50 -55
- package/packages/server/src/api/projects-helpers.js +13 -4
- package/packages/server/src/api/projects.js +33 -18
- package/packages/server/src/cli.js +82 -0
- package/packages/server/src/db/AgentCallLogRepository.js +30 -31
- package/packages/server/src/db/ConversationRepository.js +27 -16
- package/packages/server/src/db/ProjectRepository.js +21 -31
- package/packages/server/src/db/QuickResponseRepository.js +14 -19
- package/packages/server/src/db/migrations/sessionsMigrations.js +61 -61
- package/packages/server/src/index.js +42 -29
- package/packages/server/src/services/commandRunner.js +52 -99
- package/packages/server/src/services/kanbanTriggers.js +83 -56
- package/packages/server/src/services/schedulerService.js +68 -44
- package/packages/server/src/services/sessionExecution.js +102 -61
- package/packages/server/src/services/sessionManager.js +63 -37
- package/packages/server/src/services/summaryService.js +56 -53
- package/packages/server/src/services/templateTriggerService.js +58 -31
- package/packages/server/src/ws/WebSocketManager.js +5 -0
- package/packages/web/dist/assets/ActiveSessionsView-Bd8FWObJ.js +1 -0
- package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +1 -0
- package/packages/web/dist/assets/{AgentLogsView-c42v_j_5.js → AgentLogsView-C4FTXUH8.js} +1 -1
- package/packages/web/dist/assets/{ArchiveConfirmModal-DBuOmtXu.js → ArchiveConfirmModal-MpqhAjWZ.js} +1 -1
- package/packages/web/dist/assets/{CommandButtonDetailView-CkKJ3Htz.js → CommandButtonDetailView-_tOjEGjk.js} +1 -1
- package/packages/web/dist/assets/{EffortLevelSelector-BHJHSqul.js → EffortLevelSelector-B4z3zfJ6.js} +1 -1
- package/packages/web/dist/assets/{GeneralSettingsView-CdxfteZ2.js → GeneralSettingsView-BZ4x6T_N.js} +1 -1
- package/packages/web/dist/assets/{InterpolationHelp-DabnHhE4.js → InterpolationHelp-CIlrD5JA.js} +1 -1
- package/packages/web/dist/assets/MarkdownEditor-DBvC-1OX.js +2 -0
- package/packages/web/dist/assets/{ModelSelector-BWIU4ud7.js → ModelSelector-BTmHxqCs.js} +1 -1
- package/packages/web/dist/assets/{NewSessionView-BIZl8QlH.js → NewSessionView-Cdgt6wnk.js} +2 -2
- package/packages/web/dist/assets/{PathChooser-nhat_Pz4.js → PathChooser-CPEkT0uu.js} +1 -1
- package/packages/web/dist/assets/{ProjectEditView-DD-2_VrW.js → ProjectEditView-D59hr-v2.js} +1 -1
- package/packages/web/dist/assets/{ProjectListView-BOWbfoXQ.js → ProjectListView-gG4AR1i9.js} +1 -1
- package/packages/web/dist/assets/{ProjectNewView-DC4uvSn2.js → ProjectNewView-BPjn1O4f.js} +1 -1
- package/packages/web/dist/assets/ProvidersView-C04jD9NZ.js +1 -0
- package/packages/web/dist/assets/{QuickResponseSettings-Bk9mq96x.js → QuickResponseSettings-DaEXIp3-.js} +1 -1
- package/packages/web/dist/assets/{QuickResponsesPanel-BRvcnkQr.js → QuickResponsesPanel-CIdblIbt.js} +1 -1
- package/packages/web/dist/assets/{ResizableTextarea-CwGM4P3c.js → ResizableTextarea-DJekfIXO.js} +1 -1
- package/packages/web/dist/assets/{SessionCard-BGDVHU9u.js → SessionCard-CAdetaVH.js} +1 -1
- package/packages/web/dist/assets/{SessionCard-D20G3bX8.css → SessionCard-CcqIjL8q.css} +1 -1
- package/packages/web/dist/assets/{SessionDetailView-CHYrx2Ab.js → SessionDetailView-BOdnH-cW.js} +17 -17
- package/packages/web/dist/assets/{SessionDetailView-7bWgC7Es.css → SessionDetailView-mnGRMaLY.css} +1 -1
- package/packages/web/dist/assets/{SessionFormOptions-8qvL25ca.js → SessionFormOptions-Dy57kl-x.js} +1 -1
- package/packages/web/dist/assets/{SessionListView-BAIBtJF7.css → SessionListView-78k6TTz6.css} +1 -1
- package/packages/web/dist/assets/SessionListView-DUMUXfp4.js +1 -0
- package/packages/web/dist/assets/{SessionLogStream-B-w3n4c3.js → SessionLogStream-DHPxkaaK.js} +1 -1
- package/packages/web/dist/assets/{SettingsView-Dd0ZJ4Nv.js → SettingsView-BzrkWbH3.js} +1 -1
- package/packages/web/dist/assets/{SlashCommandWizard-CzyLjsdJ.js → SlashCommandWizard-BAC_oF5i.js} +1 -1
- package/packages/web/dist/assets/{SummarySettingsView-DTbh7uAF.js → SummarySettingsView-J8BQBEe9.js} +1 -1
- package/packages/web/dist/assets/{TemplateDetailView-BOnhkdtH.js → TemplateDetailView-2ilWbANb.js} +1 -1
- package/packages/web/dist/assets/{commandButtons-CY87n64i.js → commandButtons-aIO6hqZn.js} +1 -1
- package/packages/web/dist/assets/{index-DcA6pqXV.js → index-B6W39ctH.js} +1 -1
- package/packages/web/dist/assets/{index-NzLFVaCi.js → index-BGmIjKYB.js} +1 -1
- package/packages/web/dist/assets/{index-CO4EBOFw.js → index-BwChYYnJ.js} +1 -1
- package/packages/web/dist/assets/{index-BshkV3r5.js → index-CDRRIqmL.js} +1 -1
- package/packages/web/dist/assets/{index-Dx0sYW7H.js → index-CSA0abwg.js} +1 -1
- package/packages/web/dist/assets/{index-Ce6sL47U.js → index-CWTVEGZv.js} +1 -1
- package/packages/web/dist/assets/{index-i1o916sk.js → index-CjJX0Eli.js} +1 -1
- package/packages/web/dist/assets/{index-BRUlEEHm.js → index-CpNgrGiE.js} +1 -1
- package/packages/web/dist/assets/{index-gMpnPf1V.js → index-DCxYGijD.js} +1 -1
- package/packages/web/dist/assets/{index-jGjvGBfk.js → index-DF6g7nEj.js} +1 -1
- package/packages/web/dist/assets/{index-aCw-iXPX.js → index-DMl4xPIQ.js} +1 -1
- package/packages/web/dist/assets/{index--OtPwBbF.js → index-DMsWg7Ax.js} +3 -3
- package/packages/web/dist/assets/{index-CjHb9rXv.js → index-DePUHO3n.js} +1 -1
- package/packages/web/dist/assets/{index-C6m-WfqP.js → index-DvfYqZgb.js} +1 -1
- package/packages/web/dist/assets/{index-DkLkDgig.js → index-DxUd3T5E.js} +23 -23
- package/packages/web/dist/assets/{index-BXUcbV4K.js → index-GLkcnEcc.js} +1 -1
- package/packages/web/dist/assets/{index-DPwwgloE.js → index-ZDCxncSd.js} +1 -1
- package/packages/web/dist/assets/{index-DxboI9i-.js → index-f24-2-RT.js} +1 -1
- package/packages/web/dist/assets/{index-Bi4bQ_UB.js → index-uZfsnHcN.js} +1 -1
- package/packages/web/dist/assets/{projects-C2Y29PSJ.js → projects-DGF_kWVA.js} +1 -1
- package/packages/web/dist/assets/{providers-CeJXuo0Q.js → providers-Cm7emO-N.js} +1 -1
- package/packages/web/dist/assets/sessions-CH7PeypH.js +1 -0
- package/packages/web/dist/assets/{settings-BplIxCbi.js → settings-C7sXXJ-n.js} +1 -1
- package/packages/web/dist/index.html +1 -1
- package/packages/web/dist/assets/ActiveSessionsView-BryJ-V3f.js +0 -1
- package/packages/web/dist/assets/ActiveSessionsView-ofSvx-K1.css +0 -1
- package/packages/web/dist/assets/MarkdownEditor-k4zBLGqU.js +0 -2
- package/packages/web/dist/assets/ProvidersView-DT5afh1V.js +0 -1
- package/packages/web/dist/assets/SessionListView-927Yq6Il.js +0 -1
- package/packages/web/dist/assets/sessions-CMby7ij3.js +0 -1
package/packages/web/dist/assets/{SessionListView-BAIBtJF7.css → SessionListView-78k6TTz6.css}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
.status-filters[data-v-2c9a63d9]{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.filter-btn[data-v-2c9a63d9]{display:inline-flex;align-items:center;gap:.5rem;background:none;border:1px solid var(--color-border);padding:.375rem .75rem;font-size:.8rem;color:var(--color-text-soft);cursor:pointer;border-radius:var(--border-radius);transition:all .15s;text-transform:capitalize}.filter-count[data-v-2c9a63d9]{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;padding:0 .375rem;border-radius:999px;background:var(--color-background-mute);color:var(--color-text-soft);font-size:.7rem;font-weight:600;line-height:1.25rem;text-transform:none}.filter-btn.active .filter-count[data-v-2c9a63d9]{background:var(--color-background);color:var(--color-primary)}.filter-btn-empty[data-v-2c9a63d9]{opacity:.55}.filter-btn[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.star-icon[data-v-2c9a63d9]{position:relative;display:inline-block}.filter-btn.star-filter-all[data-v-2c9a63d9]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.star-filter-all[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.star-filter-active[data-v-2c9a63d9],.filter-btn.active[data-v-2c9a63d9]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.star-filter-unstarred[data-v-2c9a63d9]{background:transparent;border-color:#f97316;color:#f97316}.star-crossed[data-v-2c9a63d9]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}.schedule-icon[data-v-2c9a63d9]{position:relative;display:inline-block}.filter-btn.schedule-filter-all[data-v-2c9a63d9]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.schedule-filter-all[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.schedule-filter-active[data-v-2c9a63d9]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.schedule-filter-not-scheduled[data-v-2c9a63d9]{background:transparent;border-color:#f97316;color:#f97316}.schedule-crossed[data-v-2c9a63d9]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}.skeleton-list[data-v-c0906664]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-c0906664]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-c0906664]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-c0906664]{margin-bottom:1rem}.session-list[data-v-c0906664]{display:flex;flex-direction:column;gap:1rem}.load-more-container[data-v-c0906664]{display:flex;justify-content:center;padding:1.5rem}.scheduled-session-card[data-v-d41e6b57]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border);border-left:3px solid var(--color-primary)}.card-header[data-v-d41e6b57]{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.session-info[data-v-d41e6b57]{flex:1;min-width:0}.session-name-link[data-v-d41e6b57]{text-decoration:none;color:inherit;transition:color .2s}.session-name-link:hover .session-name[data-v-d41e6b57]{color:var(--color-primary, #22c5ff)}.session-name[data-v-d41e6b57]{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:var(--color-text);word-break:break-word;transition:color .2s}.status-badge-container[data-v-d41e6b57]{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.status-badge[data-v-d41e6b57]{display:inline-block;padding:.375rem .75rem;border-radius:.375rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.status-scheduled[data-v-d41e6b57]{background:#22c5ff33;color:#22c5ff;border:1px solid rgba(34,197,255,.3)}.timing-info[data-v-d41e6b57]{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;background:var(--color-background, rgba(255, 255, 255, .02));border-radius:var(--border-radius, 4px)}.timing-item[data-v-d41e6b57]{display:flex;align-items:center;gap:.75rem;font-size:.95rem}.timing-icon[data-v-d41e6b57]{font-size:1.2rem;flex-shrink:0}.timing-details[data-v-d41e6b57]{display:flex;flex-direction:column;gap:.125rem;min-width:0}.timing-text[data-v-d41e6b57]{color:var(--color-text);font-weight:500}.timing-absolute[data-v-d41e6b57]{font-size:.825rem;color:var(--color-text-soft)}.card-actions[data-v-d41e6b57]{display:flex;gap:.75rem;flex-wrap:wrap}.btn-small[data-v-d41e6b57]{padding:.5rem 1rem;font-size:.875rem}.btn-primary[data-v-d41e6b57]{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary);border-radius:var(--border-radius, 4px);cursor:pointer;transition:opacity .2s}.btn-primary[data-v-d41e6b57]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-d41e6b57]{background:transparent;color:var(--color-text-soft);border:1px solid var(--color-border);border-radius:var(--border-radius, 4px);cursor:pointer;transition:color .2s,border-color .2s}.btn-secondary[data-v-d41e6b57]:hover:not(:disabled){color:var(--color-text);border-color:var(--color-text)}.btn-secondary[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.btn-danger[data-v-d41e6b57]{background:#dc2626;color:#fff;border:1px solid #dc2626;border-radius:var(--border-radius, 4px);cursor:pointer;transition:opacity .2s}.btn-danger[data-v-d41e6b57]:hover:not(:disabled){opacity:.9}.btn-danger[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.skeleton-list[data-v-75cf4e60]{display:flex;flex-direction:column;gap:1rem}.empty-state[data-v-75cf4e60]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-75cf4e60]{margin-bottom:1rem}.session-list[data-v-75cf4e60]{display:flex;flex-direction:column;gap:1rem}.templates-panel[data-v-d08b4ac0]{padding:1rem 0}.templates-header[data-v-d08b4ac0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.templates-header h2[data-v-d08b4ac0]{margin:0;font-size:1.25rem}.template-form[data-v-d08b4ac0]{margin-bottom:1.5rem}.template-form h3[data-v-d08b4ac0]{margin:0 0 1rem;font-size:1rem}.form-group[data-v-d08b4ac0]{margin-bottom:1rem}.form-label[data-v-d08b4ac0]{display:block;margin-bottom:.25rem;font-weight:500;font-size:.875rem}.form-help[data-v-d08b4ac0]{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.form-help code[data-v-d08b4ac0]{background:var(--color-bg-soft);padding:.1rem .3rem;border-radius:3px;font-size:.7rem}.form-check[data-v-d08b4ac0]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem}.form-check input[data-v-d08b4ac0]{cursor:pointer}.form-row[data-v-d08b4ac0]{display:flex;gap:1rem}.form-actions[data-v-d08b4ac0]{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.loading-state[data-v-d08b4ac0]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.template-section[data-v-d08b4ac0]{margin-bottom:1.5rem}.section-title[data-v-d08b4ac0]{font-size:.875rem;color:var(--color-text-soft);margin:0 0 .75rem;text-transform:uppercase;letter-spacing:.05em}.templates-list[data-v-d08b4ac0]{display:flex;flex-direction:column;gap:.75rem}.template-card[data-v-d08b4ac0]{padding:1rem;text-decoration:none;color:inherit;display:block;transition:transform .15s ease,box-shadow .15s ease}.template-card[data-v-d08b4ac0]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.template-header[data-v-d08b4ac0]{margin-bottom:.5rem}.template-name[data-v-d08b4ac0]{margin:0;font-size:1rem;font-weight:600;color:var(--color-text)}.template-prompt[data-v-d08b4ac0]{margin:0 0 .75rem;font-size:.875rem;color:var(--color-text-soft);line-height:1.4}.template-meta[data-v-d08b4ac0]{display:flex;flex-wrap:wrap;gap:.5rem}.meta-badge[data-v-d08b4ac0]{font-size:.7rem;padding:.15rem .4rem;background:var(--color-bg-soft);border-radius:4px;color:var(--color-text-soft)}.meta-badge-global[data-v-d08b4ac0]{background:var(--color-primary);color:#fff}.meta-badge-chain[data-v-d08b4ac0]{background:var(--color-warning, #f0ad4e);color:#333}.empty-state[data-v-d08b4ac0]{text-align:center;padding:2rem;color:var(--color-text-soft)}.empty-state p[data-v-d08b4ac0]{margin-bottom:1rem}.btn-sm[data-v-d08b4ac0]{padding:.35rem .75rem;font-size:.875rem}@media (max-width: 480px){.templates-header[data-v-d08b4ac0]{flex-direction:column;align-items:flex-start;gap:.75rem}.form-row[data-v-d08b4ac0]{flex-direction:column}}.command-buttons-panel[data-v-990a48bf]{display:flex;flex-direction:column;gap:1rem}.panel-header[data-v-990a48bf]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.panel-header h3[data-v-990a48bf]{margin:0;font-size:1.25rem;color:var(--color-text)}.loading-state[data-v-990a48bf],.error-message[data-v-990a48bf],.empty-state[data-v-990a48bf]{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-message[data-v-990a48bf]{color:var(--color-error);background-color:#f851491a}.loading-state[data-v-990a48bf]{display:flex;align-items:center;justify-content:center;gap:.75rem}.empty-state[data-v-990a48bf]{display:flex;flex-direction:column;gap:1rem;align-items:center}.buttons-table[data-v-990a48bf]{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden}.table-header[data-v-990a48bf]{display:grid;grid-template-columns:200px 1fr 100px 100px;gap:1rem;padding:1rem;background-color:var(--color-background-mute);border-bottom:1px solid var(--color-border);font-weight:500;color:var(--color-text);font-size:.875rem;text-transform:uppercase}.table-row[data-v-990a48bf]{display:grid;grid-template-columns:200px 1fr 100px 100px;gap:1rem;padding:1rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background);cursor:pointer;transition:background-color .2s}.table-row[data-v-990a48bf]:last-child{border-bottom:none}.table-row[data-v-990a48bf]:hover{background-color:var(--color-background-soft)}.col-label[data-v-990a48bf]{color:var(--color-text);font-weight:500;word-break:break-word}.col-command[data-v-990a48bf]{color:var(--color-text-soft);font-size:.875rem;word-break:break-all}.col-command code[data-v-990a48bf]{background-color:#0003;padding:.25rem .5rem;border-radius:3px;font-family:var(--font-mono);font-size:.8rem}.col-order[data-v-990a48bf]{color:var(--color-text-soft);font-size:.875rem}.col-actions[data-v-990a48bf]{display:flex;justify-content:flex-end}.modal-overlay[data-v-990a48bf]{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-990a48bf]{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-990a48bf]{padding:1rem;border-bottom:1px solid var(--color-border)}.modal-header h4[data-v-990a48bf]{margin:0;color:var(--color-text)}.modal-body[data-v-990a48bf]{padding:1.5rem 1rem;color:var(--color-text-soft)}.modal-footer[data-v-990a48bf]{padding:1rem;border-top:1px solid var(--color-border);display:flex;gap:.5rem;justify-content:flex-end}@media (max-width: 640px){.table-header[data-v-990a48bf],.table-row[data-v-990a48bf]{grid-template-columns:1fr;gap:.5rem}.col-label[data-v-990a48bf]:before{content:"Label: ";font-weight:700;color:var(--color-text-soft)}.col-command[data-v-990a48bf]:before{content:"Command: ";font-weight:700;color:var(--color-text-soft)}.col-order[data-v-990a48bf]:before{content:"Order: ";font-weight:700;color:var(--color-text-soft)}.col-actions[data-v-990a48bf]:before{content:"Actions: ";font-weight:700;color:var(--color-text-soft)}.col-label[data-v-990a48bf],.col-command[data-v-990a48bf],.col-order[data-v-990a48bf],.col-actions[data-v-990a48bf]{display:block}}.modal-backdrop[data-v-916a53c8]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-916a53c8]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--color-border)}.modal-header[data-v-916a53c8]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-916a53c8]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-916a53c8]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-916a53c8]:hover{color:var(--color-text)}.modal-body[data-v-916a53c8]{padding:1.5rem;flex:1;overflow-y:auto}.modal-footer[data-v-916a53c8]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-916a53c8]{margin-bottom:1rem}.form-label[data-v-916a53c8]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-916a53c8]{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-916a53c8]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.sessions-list[data-v-916a53c8]{max-height:300px;overflow-y:auto;border:1px solid var(--color-border);border-radius:.25rem}.loading-state[data-v-916a53c8],.empty-state[data-v-916a53c8]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-soft)}.session-item[data-v-916a53c8]{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;cursor:pointer;border-bottom:1px solid var(--color-border);transition:background-color .15s}.session-item[data-v-916a53c8]:last-child{border-bottom:none}.session-item[data-v-916a53c8]:hover{background:var(--color-bg-soft)}.session-item.selected[data-v-916a53c8]{background:#22c5ff1a;border-color:var(--color-primary)}.session-status[data-v-916a53c8]{flex-shrink:0;font-size:.875rem;line-height:1.5}.session-status.status-running[data-v-916a53c8],.session-status.status-starting[data-v-916a53c8]{color:#10b981}.session-status.status-waiting[data-v-916a53c8]{color:#f59e0b}.session-status.status-completed[data-v-916a53c8]{color:#3b82f6}.session-status.status-error[data-v-916a53c8],.session-status.status-stopped[data-v-916a53c8]{color:#ef4444}.session-status.status-scheduled[data-v-916a53c8]{color:#6b7280}.session-info[data-v-916a53c8]{flex:1;min-width:0}.session-name[data-v-916a53c8]{font-size:.875rem;font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-meta[data-v-916a53c8]{display:flex;gap:.5rem;font-size:.75rem;color:var(--color-text-soft);margin-top:.25rem}.session-mode[data-v-916a53c8]{text-transform:capitalize}.btn[data-v-916a53c8]{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-916a53c8]{background:var(--color-primary);color:#fff}.btn-primary[data-v-916a53c8]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-916a53c8]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-916a53c8]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-916a53c8]:hover{background:var(--color-background-secondary)}.loading-spinner[data-v-916a53c8]{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-916a53c8 1s linear infinite}@keyframes spin-916a53c8{to{transform:rotate(360deg)}}.modal-backdrop[data-v-114a927d]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-114a927d]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;border:1px solid var(--color-border)}.modal-header[data-v-114a927d]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-114a927d]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-114a927d]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-114a927d]:hover{color:var(--color-text)}.modal-body[data-v-114a927d]{padding:1.5rem}.modal-footer[data-v-114a927d]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-114a927d]{margin-bottom:1.25rem}.form-label[data-v-114a927d]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-114a927d]{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-114a927d]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-textarea[data-v-114a927d]{min-height:80px;font-family:var(--font-mono, monospace);font-size:.875rem}.form-help[data-v-114a927d]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.automation-options[data-v-114a927d]{display:flex;flex-direction:column;gap:.5rem}.radio-option[data-v-114a927d]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem;color:var(--color-text)}.radio-option input[data-v-114a927d]{cursor:pointer}.prompt-actions-row[data-v-114a927d]{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem}.agent-settings-section[data-v-114a927d]{margin-bottom:1.25rem}.section-toggle[data-v-114a927d]{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:var(--color-text-soft);font-size:.9rem;font-weight:500;cursor:pointer;padding:.5rem 0;transition:color .15s}.section-toggle[data-v-114a927d]:hover{color:var(--color-text)}.toggle-chevron[data-v-114a927d]{display:inline-block;font-size:.65rem;transition:transform .2s}.toggle-chevron.open[data-v-114a927d]{transform:rotate(90deg)}.agent-settings-body[data-v-114a927d]{padding:1rem;margin-top:.5rem;border:1px solid var(--color-border);border-radius:.375rem;background:var(--color-background, rgba(255, 255, 255, .02))}.toggle-switch-row[data-v-114a927d]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch[data-v-114a927d]{position:relative;display:inline-block;width:40px;height:22px}.toggle-switch input[data-v-114a927d]{opacity:0;width:0;height:0}.toggle-slider[data-v-114a927d]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-border);border-radius:22px;transition:.2s}.toggle-slider[data-v-114a927d]:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:3px;background-color:#fff;border-radius:50%;transition:.2s}.toggle-switch input:checked+.toggle-slider[data-v-114a927d]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-114a927d]:before{transform:translate(18px)}.toggle-label[data-v-114a927d]{font-size:.875rem;font-weight:500;color:var(--color-text)}.reschedule-settings[data-v-114a927d]{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-114a927d]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-114a927d]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-114a927d]{width:1rem;height:1rem;cursor:pointer}.danger-zone[data-v-114a927d]{margin-top:2rem;padding:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.5rem}.danger-title[data-v-114a927d]{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:#ef4444}.danger-description[data-v-114a927d]{margin:0 0 1rem;font-size:.8rem;color:var(--color-text-soft)}.btn[data-v-114a927d]{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-114a927d]{background:var(--color-primary);color:#fff}.btn-primary[data-v-114a927d]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-114a927d]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-114a927d]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-114a927d]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-114a927d]{background:#ef4444;color:#fff}.btn-danger[data-v-114a927d]:hover:not(:disabled){background:#dc2626}.btn-danger[data-v-114a927d]:disabled{opacity:.5;cursor:not-allowed}.lane-position-controls[data-v-114a927d]{display:flex;align-items:center;gap:.75rem}.lane-position-label[data-v-114a927d]{font-size:.875rem;color:var(--color-text-soft);min-width:3.5rem;text-align:center}.btn-icon[data-v-114a927d]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:var(--color-background);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);cursor:pointer;transition:border-color .15s,color .15s,background-color .15s}.btn-icon[data-v-114a927d]:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-icon[data-v-114a927d]:disabled{opacity:.3;cursor:not-allowed}.kanban-board{height:100%;display:flex;flex-direction:column}.kanban-loading,.kanban-error,.kanban-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:var(--color-text-soft);gap:1rem}.loading-spinner{width:24px;height:24px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:var(--color-warning);color:#fff;border-radius:50%;font-weight:700}.retry-btn{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:.5rem 1rem}.retry-btn:hover{text-decoration:underline}.kanban-lanes-container{display:flex;gap:1rem;padding:1rem;overflow-x:auto;flex:1;align-items:flex-start}.kanban-lane{flex-shrink:0;width:280px;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border-radius:8px;display:flex;flex-direction:column;max-height:calc(100vh - 200px)}.lane-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.lane-title-row{display:flex;align-items:center;gap:.375rem;flex:1;min-width:0}.lane-title{margin:0;font-size:.875rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lane-automation-indicator{color:#f59e0b;flex-shrink:0}.lane-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.lane-count{font-size:.75rem;color:var(--color-text-soft);background:var(--color-border);padding:.125rem .5rem;border-radius:10px}.lane-settings-btn{background:none;border:none;color:var(--color-text-soft);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .15s,color .15s,background-color .15s}.kanban-lane:hover .lane-settings-btn{opacity:1}.lane-settings-btn:hover{color:var(--color-primary);background:var(--color-bg-soft)}.lane-cards{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem;min-height:100px}.lane-empty{display:flex;align-items:center;justify-content:center;padding:2rem 1rem;color:var(--color-text-soft);font-size:.75rem;border:2px dashed var(--color-border);border-radius:6px;opacity:.6}.kanban-card{position:relative;background:var(--color-background);border:1px solid var(--color-border);border-radius:6px;cursor:grab;transition:border-color .2s,box-shadow .2s}.kanban-card:hover{border-color:var(--color-primary)}.kanban-card:active{cursor:grabbing}.card-link{display:block;padding:.75rem;color:var(--color-text);text-decoration:none}.card-header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.card-status{flex-shrink:0;font-size:.75rem}.card-status.status-running,.card-status.status-starting{color:#10b981}.card-status.status-waiting{color:#f59e0b}.card-status.status-completed{color:#3b82f6}.card-status.status-error,.card-status.status-stopped{color:#ef4444}.card-status.status-scheduled{color:#6b7280}.card-title{margin:0;font-size:.875rem;font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.card-meta{display:flex;gap:.5rem;font-size:.75rem;color:var(--color-text-soft)}.card-mode{text-transform:capitalize}.card-move-btn{position:absolute;top:.25rem;right:1.75rem;background:none;border:none;color:var(--color-text-soft);cursor:pointer;opacity:0;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:opacity .2s,color .2s}.kanban-card:hover .card-move-btn{opacity:1}.card-move-btn:hover{color:var(--color-primary)}.card-remove-btn{position:absolute;top:.25rem;right:.25rem;background:none;border:none;color:var(--color-text-soft);cursor:pointer;opacity:0;padding:.25rem;font-size:1rem;line-height:1;transition:opacity .2s,color .2s}.kanban-card:hover .card-remove-btn{opacity:1}.card-remove-btn:hover{color:var(--color-danger, #ef4444)}.lane-footer{padding:.5rem;border-top:1px solid var(--color-border);font-size:.7rem;color:var(--color-text-soft);display:flex;flex-direction:column;gap:.5rem}.lane-automation{display:flex;align-items:center;gap:.25rem;padding:0 .5rem}.add-session-btn{width:100%;padding:.5rem;background:transparent;border:1px dashed var(--color-border);border-radius:4px;color:var(--color-text-soft);cursor:pointer;font-size:.75rem;transition:border-color .15s,color .15s,background-color .15s}.add-session-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:#22c5ff0d}.add-lane-container{flex-shrink:0;min-width:200px}.add-lane-btn{width:100%;padding:.75rem 1rem;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border:2px dashed var(--color-border);border-radius:8px;color:var(--color-text-soft);cursor:pointer;transition:border-color .2s,color .2s}.add-lane-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.add-lane-form{background:var(--color-bg-soft, rgba(255, 255, 255, .05));border:1px solid var(--color-border);border-radius:8px;padding:.75rem}.add-lane-input{width:100%;padding:.5rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:.875rem;margin-bottom:.5rem}.add-lane-input:focus{outline:none;border-color:var(--color-primary)}.add-lane-actions{display:flex;gap:.5rem}.add-lane-confirm,.add-lane-cancel{flex:1;padding:.375rem .75rem;border:none;border-radius:4px;cursor:pointer;font-size:.75rem}.add-lane-confirm{background:var(--color-primary);color:#fff}.add-lane-cancel{background:var(--color-border);color:var(--color-text)}.card-reorder-arrows{position:absolute;bottom:.25rem;right:.25rem;display:flex;flex-direction:column;gap:1px;opacity:0;transition:opacity .2s}.kanban-card:hover .card-reorder-arrows{opacity:1}.card-reorder-btn{background:none;border:none;color:var(--color-text-soft);cursor:pointer;padding:.125rem;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:color .15s,background-color .15s}.card-reorder-btn:hover{color:var(--color-primary);background:var(--color-bg-soft)}.kanban-card.dragging{opacity:.4}.card-drop-indicator{height:3px;background:var(--color-primary);border-radius:2px;margin:-.125rem 0}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.page-header h1{margin:0}.project-title{display:flex;align-items:center;gap:.75rem}.repo-link{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;color:var(--color-primary);transition:color .15s,transform .15s;padding:.25rem}.repo-link:hover{color:var(--color-primary-bright, #06ffff);transform:scale(1.1)}.repo-icon{width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}.settings-link{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;color:var(--color-primary);transition:color .15s,transform .15s;padding:.25rem}.settings-link:hover{color:var(--color-primary-bright, #06ffff);transform:scale(1.1)}.settings-icon{width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}.tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem;position:-webkit-sticky;position:sticky;top:calc(var(--header-height-computed, 51px) + var(--viewport-offset-top, 0px));background-color:var(--color-background);z-index:99;padding:.5rem .5rem 0}@media (min-width: 768px){.tabs{top:calc(var(--header-height-computed, 80px) + var(--viewport-offset-top, 0px))}}.tabs-desktop{display:flex;align-items:center;justify-content:space-between;width:100%}.tabs-mobile{display:none;width:100%}.tabs-left{display:flex;gap:0}.tab{background:none;border:none;padding:.75rem 1.25rem;font-size:.9rem;color:var(--color-text-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:500}.skeleton-list{display:flex;flex-direction:column;gap:1rem}.error-message{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p{margin-bottom:1rem}.session-list{display:flex;flex-direction:column;gap:1rem}.tab-spacer{height:1rem}@media (max-width: 480px){.page-header{flex-direction:column;gap:1rem}.page-header .btn{width:100%;justify-content:center}.tabs-desktop{display:none!important}.tabs-mobile{display:block}.desktop-only{display:none!important}}.mobile-only{display:block}.desktop-only{display:none}@media (min-width: 481px){.mobile-only{display:none!important}}@media (min-width: 481px){.desktop-only{display:inline-flex!important}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:400px;max-height:90vh;overflow-y:auto;border:1px solid var(--color-border)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn:hover{color:var(--color-text)}.modal-body{padding:1.5rem}.modal-description{margin:0 0 1rem;font-size:.9rem;color:var(--color-text-soft)}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.lane-options{display:flex;flex-direction:column;gap:.5rem}.lane-option-btn{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.375rem;color:var(--color-text);cursor:pointer;transition:border-color .15s,background-color .15s}.lane-option-btn:hover{border-color:var(--color-primary);background:#22c5ff0d}.lane-option-name{font-weight:500}.lane-option-count{font-size:.75rem;color:var(--color-text-soft)}.empty-lanes{text-align:center;color:var(--color-text-soft);font-size:.875rem}.btn{padding:.5rem 1rem;border-radius:.25rem;font-weight:500;cursor:pointer;border:none;font-size:.9rem}.add-session-label-short{display:none}.add-session-label-full{display:inline}@media (max-width: 768px){.add-session-label-full{display:none}.add-session-label-short{display:inline}}.tabs-desktop .btn-primary{flex-shrink:0;white-space:nowrap}.btn-secondary{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary:hover{background:var(--color-background-secondary)}
|
|
1
|
+
.status-filters[data-v-2c9a63d9]{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.filter-btn[data-v-2c9a63d9]{display:inline-flex;align-items:center;gap:.5rem;background:none;border:1px solid var(--color-border);padding:.375rem .75rem;font-size:.8rem;color:var(--color-text-soft);cursor:pointer;border-radius:var(--border-radius);transition:all .15s;text-transform:capitalize}.filter-count[data-v-2c9a63d9]{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;padding:0 .375rem;border-radius:999px;background:var(--color-background-mute);color:var(--color-text-soft);font-size:.7rem;font-weight:600;line-height:1.25rem;text-transform:none}.filter-btn.active .filter-count[data-v-2c9a63d9]{background:var(--color-background);color:var(--color-primary)}.filter-btn-empty[data-v-2c9a63d9]{opacity:.55}.filter-btn[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.star-icon[data-v-2c9a63d9]{position:relative;display:inline-block}.filter-btn.star-filter-all[data-v-2c9a63d9]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.star-filter-all[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.star-filter-active[data-v-2c9a63d9],.filter-btn.active[data-v-2c9a63d9]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.star-filter-unstarred[data-v-2c9a63d9]{background:transparent;border-color:#f97316;color:#f97316}.star-crossed[data-v-2c9a63d9]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}.schedule-icon[data-v-2c9a63d9]{position:relative;display:inline-block}.filter-btn.schedule-filter-all[data-v-2c9a63d9]{background:transparent;border-color:var(--color-border);color:var(--color-text-soft)}.filter-btn.schedule-filter-all[data-v-2c9a63d9]:hover{border-color:var(--color-primary);color:var(--color-text)}.filter-btn.schedule-filter-active[data-v-2c9a63d9]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.filter-btn.schedule-filter-not-scheduled[data-v-2c9a63d9]{background:transparent;border-color:#f97316;color:#f97316}.schedule-crossed[data-v-2c9a63d9]:after{content:"";position:absolute;top:50%;left:-10%;right:-10%;height:2px;background:currentColor;transform:translateY(-50%) rotate(-45deg);pointer-events:none}.skeleton-list[data-v-c0906664]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-c0906664]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-c0906664]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-c0906664]{margin-bottom:1rem}.session-list[data-v-c0906664]{display:flex;flex-direction:column;gap:1rem}.load-more-container[data-v-c0906664]{display:flex;justify-content:center;padding:1.5rem}.scheduled-session-card[data-v-d41e6b57]{display:flex;flex-direction:column;gap:1rem;border:1px solid var(--color-border);border-left:3px solid var(--color-primary)}.card-header[data-v-d41e6b57]{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.session-info[data-v-d41e6b57]{flex:1;min-width:0}.session-name-link[data-v-d41e6b57]{text-decoration:none;color:inherit;transition:color .2s}.session-name-link:hover .session-name[data-v-d41e6b57]{color:var(--color-primary, #22c5ff)}.session-name[data-v-d41e6b57]{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:var(--color-text);word-break:break-word;transition:color .2s}.status-badge-container[data-v-d41e6b57]{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.status-badge[data-v-d41e6b57]{display:inline-block;padding:.375rem .75rem;border-radius:.375rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.status-scheduled[data-v-d41e6b57]{background:#22c5ff33;color:#22c5ff;border:1px solid rgba(34,197,255,.3)}.timing-info[data-v-d41e6b57]{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;background:var(--color-background, rgba(255, 255, 255, .02));border-radius:var(--border-radius, 4px)}.timing-item[data-v-d41e6b57]{display:flex;align-items:center;gap:.75rem;font-size:.95rem}.timing-icon[data-v-d41e6b57]{font-size:1.2rem;flex-shrink:0}.timing-details[data-v-d41e6b57]{display:flex;flex-direction:column;gap:.125rem;min-width:0}.timing-text[data-v-d41e6b57]{color:var(--color-text);font-weight:500}.timing-absolute[data-v-d41e6b57]{font-size:.825rem;color:var(--color-text-soft)}.card-actions[data-v-d41e6b57]{display:flex;gap:.75rem;flex-wrap:wrap}.btn-small[data-v-d41e6b57]{padding:.5rem 1rem;font-size:.875rem}.btn-primary[data-v-d41e6b57]{background:var(--color-primary);color:#fff;border:1px solid var(--color-primary);border-radius:var(--border-radius, 4px);cursor:pointer;transition:opacity .2s}.btn-primary[data-v-d41e6b57]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-d41e6b57]{background:transparent;color:var(--color-text-soft);border:1px solid var(--color-border);border-radius:var(--border-radius, 4px);cursor:pointer;transition:color .2s,border-color .2s}.btn-secondary[data-v-d41e6b57]:hover:not(:disabled){color:var(--color-text);border-color:var(--color-text)}.btn-secondary[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.btn-danger[data-v-d41e6b57]{background:#dc2626;color:#fff;border:1px solid #dc2626;border-radius:var(--border-radius, 4px);cursor:pointer;transition:opacity .2s}.btn-danger[data-v-d41e6b57]:hover:not(:disabled){opacity:.9}.btn-danger[data-v-d41e6b57]:disabled{opacity:.6;cursor:not-allowed}.skeleton-list[data-v-75cf4e60]{display:flex;flex-direction:column;gap:1rem}.empty-state[data-v-75cf4e60]{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p[data-v-75cf4e60]{margin-bottom:1rem}.session-list[data-v-75cf4e60]{display:flex;flex-direction:column;gap:1rem}.templates-panel[data-v-d08b4ac0]{padding:1rem 0}.templates-header[data-v-d08b4ac0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.templates-header h2[data-v-d08b4ac0]{margin:0;font-size:1.25rem}.template-form[data-v-d08b4ac0]{margin-bottom:1.5rem}.template-form h3[data-v-d08b4ac0]{margin:0 0 1rem;font-size:1rem}.form-group[data-v-d08b4ac0]{margin-bottom:1rem}.form-label[data-v-d08b4ac0]{display:block;margin-bottom:.25rem;font-weight:500;font-size:.875rem}.form-help[data-v-d08b4ac0]{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.form-help code[data-v-d08b4ac0]{background:var(--color-bg-soft);padding:.1rem .3rem;border-radius:3px;font-size:.7rem}.form-check[data-v-d08b4ac0]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem}.form-check input[data-v-d08b4ac0]{cursor:pointer}.form-row[data-v-d08b4ac0]{display:flex;gap:1rem}.form-actions[data-v-d08b4ac0]{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.loading-state[data-v-d08b4ac0]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:2rem}.template-section[data-v-d08b4ac0]{margin-bottom:1.5rem}.section-title[data-v-d08b4ac0]{font-size:.875rem;color:var(--color-text-soft);margin:0 0 .75rem;text-transform:uppercase;letter-spacing:.05em}.templates-list[data-v-d08b4ac0]{display:flex;flex-direction:column;gap:.75rem}.template-card[data-v-d08b4ac0]{padding:1rem;text-decoration:none;color:inherit;display:block;transition:transform .15s ease,box-shadow .15s ease}.template-card[data-v-d08b4ac0]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.template-header[data-v-d08b4ac0]{margin-bottom:.5rem}.template-name[data-v-d08b4ac0]{margin:0;font-size:1rem;font-weight:600;color:var(--color-text)}.template-prompt[data-v-d08b4ac0]{margin:0 0 .75rem;font-size:.875rem;color:var(--color-text-soft);line-height:1.4}.template-meta[data-v-d08b4ac0]{display:flex;flex-wrap:wrap;gap:.5rem}.meta-badge[data-v-d08b4ac0]{font-size:.7rem;padding:.15rem .4rem;background:var(--color-bg-soft);border-radius:4px;color:var(--color-text-soft)}.meta-badge-global[data-v-d08b4ac0]{background:var(--color-primary);color:#fff}.meta-badge-chain[data-v-d08b4ac0]{background:var(--color-warning, #f0ad4e);color:#333}.empty-state[data-v-d08b4ac0]{text-align:center;padding:2rem;color:var(--color-text-soft)}.empty-state p[data-v-d08b4ac0]{margin-bottom:1rem}.btn-sm[data-v-d08b4ac0]{padding:.35rem .75rem;font-size:.875rem}@media (max-width: 480px){.templates-header[data-v-d08b4ac0]{flex-direction:column;align-items:flex-start;gap:.75rem}.form-row[data-v-d08b4ac0]{flex-direction:column}}.command-buttons-panel[data-v-990a48bf]{display:flex;flex-direction:column;gap:1rem}.panel-header[data-v-990a48bf]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.panel-header h3[data-v-990a48bf]{margin:0;font-size:1.25rem;color:var(--color-text)}.loading-state[data-v-990a48bf],.error-message[data-v-990a48bf],.empty-state[data-v-990a48bf]{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-message[data-v-990a48bf]{color:var(--color-error);background-color:#f851491a}.loading-state[data-v-990a48bf]{display:flex;align-items:center;justify-content:center;gap:.75rem}.empty-state[data-v-990a48bf]{display:flex;flex-direction:column;gap:1rem;align-items:center}.buttons-table[data-v-990a48bf]{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden}.table-header[data-v-990a48bf]{display:grid;grid-template-columns:200px 1fr 100px 100px;gap:1rem;padding:1rem;background-color:var(--color-background-mute);border-bottom:1px solid var(--color-border);font-weight:500;color:var(--color-text);font-size:.875rem;text-transform:uppercase}.table-row[data-v-990a48bf]{display:grid;grid-template-columns:200px 1fr 100px 100px;gap:1rem;padding:1rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background);cursor:pointer;transition:background-color .2s}.table-row[data-v-990a48bf]:last-child{border-bottom:none}.table-row[data-v-990a48bf]:hover{background-color:var(--color-background-soft)}.col-label[data-v-990a48bf]{color:var(--color-text);font-weight:500;word-break:break-word}.col-command[data-v-990a48bf]{color:var(--color-text-soft);font-size:.875rem;word-break:break-all}.col-command code[data-v-990a48bf]{background-color:#0003;padding:.25rem .5rem;border-radius:3px;font-family:var(--font-mono);font-size:.8rem}.col-order[data-v-990a48bf]{color:var(--color-text-soft);font-size:.875rem}.col-actions[data-v-990a48bf]{display:flex;justify-content:flex-end}.modal-overlay[data-v-990a48bf]{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-990a48bf]{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-990a48bf]{padding:1rem;border-bottom:1px solid var(--color-border)}.modal-header h4[data-v-990a48bf]{margin:0;color:var(--color-text)}.modal-body[data-v-990a48bf]{padding:1.5rem 1rem;color:var(--color-text-soft)}.modal-footer[data-v-990a48bf]{padding:1rem;border-top:1px solid var(--color-border);display:flex;gap:.5rem;justify-content:flex-end}@media (max-width: 640px){.table-header[data-v-990a48bf],.table-row[data-v-990a48bf]{grid-template-columns:1fr;gap:.5rem}.col-label[data-v-990a48bf]:before{content:"Label: ";font-weight:700;color:var(--color-text-soft)}.col-command[data-v-990a48bf]:before{content:"Command: ";font-weight:700;color:var(--color-text-soft)}.col-order[data-v-990a48bf]:before{content:"Order: ";font-weight:700;color:var(--color-text-soft)}.col-actions[data-v-990a48bf]:before{content:"Actions: ";font-weight:700;color:var(--color-text-soft)}.col-label[data-v-990a48bf],.col-command[data-v-990a48bf],.col-order[data-v-990a48bf],.col-actions[data-v-990a48bf]{display:block}}.modal-backdrop[data-v-916a53c8]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-916a53c8]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--color-border)}.modal-header[data-v-916a53c8]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-916a53c8]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-916a53c8]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-916a53c8]:hover{color:var(--color-text)}.modal-body[data-v-916a53c8]{padding:1.5rem;flex:1;overflow-y:auto}.modal-footer[data-v-916a53c8]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-916a53c8]{margin-bottom:1rem}.form-label[data-v-916a53c8]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-916a53c8]{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-916a53c8]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.sessions-list[data-v-916a53c8]{max-height:300px;overflow-y:auto;border:1px solid var(--color-border);border-radius:.25rem}.loading-state[data-v-916a53c8],.empty-state[data-v-916a53c8]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-soft)}.session-item[data-v-916a53c8]{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;cursor:pointer;border-bottom:1px solid var(--color-border);transition:background-color .15s}.session-item[data-v-916a53c8]:last-child{border-bottom:none}.session-item[data-v-916a53c8]:hover{background:var(--color-bg-soft)}.session-item.selected[data-v-916a53c8]{background:#22c5ff1a;border-color:var(--color-primary)}.session-status[data-v-916a53c8]{flex-shrink:0;font-size:.875rem;line-height:1.5}.session-status.status-running[data-v-916a53c8],.session-status.status-starting[data-v-916a53c8]{color:#10b981}.session-status.status-waiting[data-v-916a53c8]{color:#f59e0b}.session-status.status-completed[data-v-916a53c8]{color:#3b82f6}.session-status.status-error[data-v-916a53c8],.session-status.status-stopped[data-v-916a53c8]{color:#ef4444}.session-status.status-scheduled[data-v-916a53c8]{color:#6b7280}.session-info[data-v-916a53c8]{flex:1;min-width:0}.session-name[data-v-916a53c8]{font-size:.875rem;font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-meta[data-v-916a53c8]{display:flex;gap:.5rem;font-size:.75rem;color:var(--color-text-soft);margin-top:.25rem}.session-mode[data-v-916a53c8]{text-transform:capitalize}.btn[data-v-916a53c8]{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-916a53c8]{background:var(--color-primary);color:#fff}.btn-primary[data-v-916a53c8]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-916a53c8]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-916a53c8]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-916a53c8]:hover{background:var(--color-background-secondary)}.loading-spinner[data-v-916a53c8]{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin-916a53c8 1s linear infinite}@keyframes spin-916a53c8{to{transform:rotate(360deg)}}.modal-backdrop[data-v-93f5604f]{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-93f5604f]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;border:1px solid var(--color-border)}.modal-header[data-v-93f5604f]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-93f5604f]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-93f5604f]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-93f5604f]:hover{color:var(--color-text)}.modal-body[data-v-93f5604f]{padding:1.5rem}.modal-footer[data-v-93f5604f]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-93f5604f]{margin-bottom:1.25rem}.form-label[data-v-93f5604f]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-93f5604f]{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-93f5604f]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-textarea[data-v-93f5604f]{min-height:80px;font-family:var(--font-mono, monospace);font-size:.875rem}.form-help[data-v-93f5604f]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.automation-options[data-v-93f5604f]{display:flex;flex-direction:column;gap:.5rem}.radio-option[data-v-93f5604f]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.9rem;color:var(--color-text)}.radio-option input[data-v-93f5604f]{cursor:pointer}.prompt-actions-row[data-v-93f5604f]{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem}.agent-settings-section[data-v-93f5604f]{margin-bottom:1.25rem}.section-toggle[data-v-93f5604f]{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:var(--color-text-soft);font-size:.9rem;font-weight:500;cursor:pointer;padding:.5rem 0;transition:color .15s}.section-toggle[data-v-93f5604f]:hover{color:var(--color-text)}.toggle-chevron[data-v-93f5604f]{display:inline-block;font-size:.65rem;transition:transform .2s}.toggle-chevron.open[data-v-93f5604f]{transform:rotate(90deg)}.agent-settings-body[data-v-93f5604f]{padding:1rem;margin-top:.5rem;border:1px solid var(--color-border);border-radius:.375rem;background:var(--color-background, rgba(255, 255, 255, .02))}.toggle-switch-row[data-v-93f5604f]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch[data-v-93f5604f]{position:relative;display:inline-block;width:40px;height:22px}.toggle-switch input[data-v-93f5604f]{opacity:0;width:0;height:0}.toggle-slider[data-v-93f5604f]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-border);border-radius:22px;transition:.2s}.toggle-slider[data-v-93f5604f]:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:3px;background-color:#fff;border-radius:50%;transition:.2s}.toggle-switch input:checked+.toggle-slider[data-v-93f5604f]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-93f5604f]:before{transform:translate(18px)}.toggle-label[data-v-93f5604f]{font-size:.875rem;font-weight:500;color:var(--color-text)}.reschedule-settings[data-v-93f5604f]{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-93f5604f]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-93f5604f]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-93f5604f]{width:1rem;height:1rem;cursor:pointer}.danger-zone[data-v-93f5604f]{margin-top:2rem;padding:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.5rem}.danger-title[data-v-93f5604f]{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:#ef4444}.danger-description[data-v-93f5604f]{margin:0 0 1rem;font-size:.8rem;color:var(--color-text-soft)}.btn[data-v-93f5604f]{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-93f5604f]{background:var(--color-primary);color:#fff}.btn-primary[data-v-93f5604f]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-93f5604f]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-93f5604f]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-93f5604f]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-93f5604f]{background:#ef4444;color:#fff}.btn-danger[data-v-93f5604f]:hover:not(:disabled){background:#dc2626}.btn-danger[data-v-93f5604f]:disabled{opacity:.5;cursor:not-allowed}.lane-position-controls[data-v-93f5604f]{display:flex;align-items:center;gap:.75rem}.lane-position-label[data-v-93f5604f]{font-size:.875rem;color:var(--color-text-soft);min-width:3.5rem;text-align:center}.btn-icon[data-v-93f5604f]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:var(--color-background);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);cursor:pointer;transition:border-color .15s,color .15s,background-color .15s}.btn-icon[data-v-93f5604f]:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-icon[data-v-93f5604f]:disabled{opacity:.3;cursor:not-allowed}.kanban-board{height:100%;display:flex;flex-direction:column}.kanban-loading,.kanban-error,.kanban-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:var(--color-text-soft);gap:1rem}.loading-spinner{width:24px;height:24px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:var(--color-warning);color:#fff;border-radius:50%;font-weight:700}.retry-btn{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:.5rem 1rem}.retry-btn:hover{text-decoration:underline}.kanban-lanes-container{display:flex;gap:1rem;padding:1rem;overflow-x:auto;flex:1;align-items:flex-start}.kanban-lane{flex-shrink:0;width:280px;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border-radius:8px;display:flex;flex-direction:column;max-height:calc(100vh - 200px)}.lane-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.lane-title-row{display:flex;align-items:center;gap:.375rem;flex:1;min-width:0}.lane-title{margin:0;font-size:.875rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lane-automation-indicator{color:#f59e0b;flex-shrink:0}.lane-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.lane-count{font-size:.75rem;color:var(--color-text-soft);background:var(--color-border);padding:.125rem .5rem;border-radius:10px}.lane-settings-btn{background:none;border:none;color:var(--color-text-soft);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:.6;transition:opacity .15s,color .15s,background-color .15s}.kanban-lane:hover .lane-settings-btn{opacity:1}.lane-settings-btn:hover{color:var(--color-primary);background:var(--color-bg-soft)}.lane-cards{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.5rem;min-height:100px}.lane-empty{display:flex;align-items:center;justify-content:center;padding:2rem 1rem;color:var(--color-text-soft);font-size:.75rem;border:2px dashed var(--color-border);border-radius:6px;opacity:.6}.kanban-card{position:relative;background:var(--color-background);border:1px solid var(--color-border);border-radius:6px;cursor:grab;transition:border-color .2s,box-shadow .2s}.kanban-card:hover{border-color:var(--color-primary)}.kanban-card:active{cursor:grabbing}.card-link{display:block;padding:.75rem;color:var(--color-text);text-decoration:none}.card-header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.card-status{flex-shrink:0;font-size:.75rem}.card-status.status-running,.card-status.status-starting{color:#10b981}.card-status.status-waiting{color:#f59e0b}.card-status.status-completed{color:#3b82f6}.card-status.status-error,.card-status.status-stopped{color:#ef4444}.card-status.status-scheduled{color:#6b7280}.card-title{margin:0;font-size:.875rem;font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.card-meta{display:flex;gap:.5rem;font-size:.75rem;color:var(--color-text-soft)}.card-mode{text-transform:capitalize}.card-move-btn{position:absolute;top:.25rem;right:1.75rem;background:none;border:none;color:var(--color-text-soft);cursor:pointer;opacity:0;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:opacity .2s,color .2s}.kanban-card:hover .card-move-btn{opacity:1}.card-move-btn:hover{color:var(--color-primary)}.card-remove-btn{position:absolute;top:.25rem;right:.25rem;background:none;border:none;color:var(--color-text-soft);cursor:pointer;opacity:0;padding:.25rem;font-size:1rem;line-height:1;transition:opacity .2s,color .2s}.kanban-card:hover .card-remove-btn{opacity:1}.card-remove-btn:hover{color:var(--color-danger, #ef4444)}.lane-footer{padding:.5rem;border-top:1px solid var(--color-border);font-size:.7rem;color:var(--color-text-soft);display:flex;flex-direction:column;gap:.5rem}.lane-automation{display:flex;align-items:center;gap:.25rem;padding:0 .5rem}.add-session-btn{width:100%;padding:.5rem;background:transparent;border:1px dashed var(--color-border);border-radius:4px;color:var(--color-text-soft);cursor:pointer;font-size:.75rem;transition:border-color .15s,color .15s,background-color .15s}.add-session-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:#22c5ff0d}.add-lane-container{flex-shrink:0;min-width:200px}.add-lane-btn{width:100%;padding:.75rem 1rem;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border:2px dashed var(--color-border);border-radius:8px;color:var(--color-text-soft);cursor:pointer;transition:border-color .2s,color .2s}.add-lane-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.add-lane-form{background:var(--color-bg-soft, rgba(255, 255, 255, .05));border:1px solid var(--color-border);border-radius:8px;padding:.75rem}.add-lane-input{width:100%;padding:.5rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:.875rem;margin-bottom:.5rem}.add-lane-input:focus{outline:none;border-color:var(--color-primary)}.add-lane-actions{display:flex;gap:.5rem}.add-lane-confirm,.add-lane-cancel{flex:1;padding:.375rem .75rem;border:none;border-radius:4px;cursor:pointer;font-size:.75rem}.add-lane-confirm{background:var(--color-primary);color:#fff}.add-lane-cancel{background:var(--color-border);color:var(--color-text)}.card-reorder-arrows{position:absolute;bottom:.25rem;right:.25rem;display:flex;flex-direction:column;gap:1px;opacity:0;transition:opacity .2s}.kanban-card:hover .card-reorder-arrows{opacity:1}.card-reorder-btn{background:none;border:none;color:var(--color-text-soft);cursor:pointer;padding:.125rem;border-radius:3px;display:flex;align-items:center;justify-content:center;transition:color .15s,background-color .15s}.card-reorder-btn:hover{color:var(--color-primary);background:var(--color-bg-soft)}.kanban-card.dragging{opacity:.4}.card-drop-indicator{height:3px;background:var(--color-primary);border-radius:2px;margin:-.125rem 0}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.page-header h1{margin:0}.project-title{display:flex;align-items:center;gap:.75rem}.repo-link{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;color:var(--color-primary);transition:color .15s,transform .15s;padding:.25rem}.repo-link:hover{color:var(--color-primary-bright, #06ffff);transform:scale(1.1)}.repo-icon{width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}.settings-link{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;color:var(--color-primary);transition:color .15s,transform .15s;padding:.25rem}.settings-link:hover{color:var(--color-primary-bright, #06ffff);transform:scale(1.1)}.settings-icon{width:100%;height:100%;stroke-linecap:round;stroke-linejoin:round}.tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem;position:-webkit-sticky;position:sticky;top:calc(var(--header-height-computed, 51px) + var(--viewport-offset-top, 0px));background-color:var(--color-background);z-index:99;padding:.5rem .5rem 0}@media (min-width: 768px){.tabs{top:calc(var(--header-height-computed, 80px) + var(--viewport-offset-top, 0px))}}.tabs-desktop{display:flex;align-items:center;justify-content:space-between;width:100%}.tabs-mobile{display:none;width:100%}.tabs-left{display:flex;gap:0}.tab{background:none;border:none;padding:.75rem 1.25rem;font-size:.9rem;color:var(--color-text-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.tab:hover{color:var(--color-text)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:500}.skeleton-list{display:flex;flex-direction:column;gap:1rem}.error-message{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state{text-align:center;padding:3rem;color:var(--color-text-soft)}.empty-state p{margin-bottom:1rem}.session-list{display:flex;flex-direction:column;gap:1rem}.tab-spacer{height:1rem}@media (max-width: 480px){.page-header{flex-direction:column;gap:1rem}.page-header .btn{width:100%;justify-content:center}.tabs-desktop{display:none!important}.tabs-mobile{display:block}.desktop-only{display:none!important}}.mobile-only{display:block}.desktop-only{display:none}@media (min-width: 481px){.mobile-only{display:none!important}}@media (min-width: 481px){.desktop-only{display:inline-flex!important}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:400px;max-height:90vh;overflow-y:auto;border:1px solid var(--color-border)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn:hover{color:var(--color-text)}.modal-body{padding:1.5rem}.modal-description{margin:0 0 1rem;font-size:.9rem;color:var(--color-text-soft)}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.lane-options{display:flex;flex-direction:column;gap:.5rem}.lane-option-btn{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.375rem;color:var(--color-text);cursor:pointer;transition:border-color .15s,background-color .15s}.lane-option-btn:hover{border-color:var(--color-primary);background:#22c5ff0d}.lane-option-name{font-weight:500}.lane-option-count{font-size:.75rem;color:var(--color-text-soft)}.empty-lanes{text-align:center;color:var(--color-text-soft);font-size:.875rem}.btn{padding:.5rem 1rem;border-radius:.25rem;font-weight:500;cursor:pointer;border:none;font-size:.9rem}.add-session-label-short{display:none}.add-session-label-full{display:inline}@media (max-width: 768px){.add-session-label-full{display:none}.add-session-label-short{display:inline}}.tabs-desktop .btn-primary{flex-shrink:0;white-space:nowrap}.btn-secondary{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary:hover{background:var(--color-background-secondary)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as ce,y as Re,x as V,z as Ie,A as Be,l as A,B as Qe,C as Xe,_ as Se,a as t,c as o,b as e,F as X,r as Z,u as v,E as re,t as F,k as C,G as ne,i as je,f as Fe,d as Q,w as ge,o as Pe,j as G,v as ye,n as we,e as ue,h as de,g as Ke,q as Ue,H as xe,p as Le,I as Ze,J as Ve,s as et}from"./index-DxUd3T5E.js";import{u as De}from"./projects-DGF_kWVA.js";import{u as $e}from"./sessions-CH7PeypH.js";import{u as Me,a as Ge,f as tt,b as st}from"./SessionLogStream-DHPxkaaK.js";import{a as Oe}from"./ApiClient-Dbs1H78V.js";import{u as He}from"./commandButtons-aIO6hqZn.js";import{S as qe}from"./SessionCard-CAdetaVH.js";import{S as nt,M as ot,A as at}from"./ArchiveConfirmModal-MpqhAjWZ.js";import{u as We}from"./EffortLevelSelector-B4z3zfJ6.js";import{u as lt}from"./providers-Cm7emO-N.js";import{M as rt}from"./ModelSelector-BTmHxqCs.js";import{I as ze}from"./InterpolationHelp-CIlrD5JA.js";import{R as it}from"./ResizableTextarea-DJekfIXO.js";import{S as dt}from"./SessionFormOptions-Dy57kl-x.js";import{S as ut,a as ct}from"./SlashCommandWizard-BAC_oF5i.js";import"./settings-C7sXXJ-n.js";function mt(){const u=Re({}),c=Re({}),m=Re({});async function p(r){const a=r.filter(g=>!u[g.id]&&!c[g.id]).map(g=>g.id);if(a.length!==0){for(const g of a)c[g]=!0,m[g]=!1;try{const g=await Oe.getSessionSummariesBatch(a);for(const i of a)g[i]&&(u[i]=g[i]),c[i]=!1}catch(g){console.warn("Failed to fetch summaries batch:",g.message);for(const i of a)m[i]=!0,c[i]=!1}}}async function l(r){var a;c[r]=!0,m[r]=!1;try{const g=await Oe.getSessionSummary(r);g&&(u[r]=g)}catch(g){((a=g.response)==null?void 0:a.status)!==404&&(console.warn(`Failed to fetch summary for session ${r}:`,g.message),m[r]=!0)}finally{c[r]=!1}}async function E(r){m[r]=!1,await l(r)}function R(r,a){u[r]=a,c[r]=!1,m[r]=!1}function _(r){delete u[r],delete c[r],delete m[r]}function S(r,a=400){let g=null;const i=ce(r,()=>{clearTimeout(g),g=setTimeout(()=>{const j=r();p(j)},a)});return()=>{clearTimeout(g),i()}}return{summaries:u,loadingSummaries:c,summaryErrors:m,fetchSummariesBatch:p,fetchSummary:l,retryFetchSummary:E,updateSummary:R,cleanupSummary:_,watchSessionsForSummaries:S}}function Ye(){const u=$e();function c(r){u.statusFilter===r?u.setStatusFilter(null):u.setStatusFilter(r)}function m(r){u.starredFilter===r?u.setStarredFilter(null):u.setStarredFilter(r)}function p(){u.starredFilter===null?u.setStarredFilter("starred"):u.starredFilter==="starred"?u.setStarredFilter("unstarred"):u.setStarredFilter(null)}const l=V(()=>u.starredFilter==="starred"?"Showing starred sessions only. Click to filter unstarred.":u.starredFilter==="unstarred"?"Showing unstarred sessions only. Click to show all.":"Showing all sessions. Click to filter by starred.");function E(){u.scheduledFilter===null?u.setScheduledFilter("scheduled"):u.scheduledFilter==="scheduled"?u.setScheduledFilter("not-scheduled"):u.setScheduledFilter(null)}const R=V(()=>u.scheduledFilter==="scheduled"?"Showing workflows with scheduled sessions. Click to filter non-scheduled.":u.scheduledFilter==="not-scheduled"?"Showing workflows without scheduled sessions. Click to show all.":"Showing all workflows. Click to filter by scheduled."),_=V(()=>{let r=u.groupedSessions;u.starredFilter==="starred"?r=r.filter($=>$.parent.starred):u.starredFilter==="unstarred"&&(r=r.filter($=>!$.parent.starred));const a=r.map($=>({group:$,status:u.getWorkflowAggregatedStatus($.parent.id)}));let g=a;u.scheduledFilter&&(g=a.filter(({status:$})=>{const T=$.scheduledCount>0;return u.scheduledFilter==="scheduled"?T:!T}));let i=0,j=0;for(const{status:$}of g)$.effectiveStatus==="running"?i++:j++;return{running:i,idle:j}}),S=V(()=>{let r=u.groupedSessions;return u.statusFilter&&(r=r.filter(a=>{const i=u.getWorkflowAggregatedStatus(a.parent.id).effectiveStatus;return u.statusFilter==="running"&&i==="running"||u.statusFilter==="idle"&&i==="idle"})),u.starredFilter==="starred"?r=r.filter(a=>a.parent.starred):u.starredFilter==="unstarred"&&(r=r.filter(a=>!a.parent.starred)),u.scheduledFilter&&(r=r.filter(a=>{const i=u.getWorkflowAggregatedStatus(a.parent.id).scheduledCount>0;return!!(u.scheduledFilter==="scheduled"&&i||u.scheduledFilter==="not-scheduled"&&!i)})),r});return{toggleFilter:c,toggleStarredFilter:m,toggleStarFilterIcon:p,starFilterTooltip:l,toggleScheduledFilterIcon:E,scheduledFilterTooltip:R,filteredGroupedSessions:S,statusFilterCounts:_}}function pt(u,c){const m=De(),p=$e(),l=He(),E=Me(),{fetchSummariesBatch:R,updateSummary:_,cleanupSummary:S}=c,{onReconnect:r}=Ie();function a(f,n,P,b){var ie;const H=l.runs[f],q=p.sessions.find(oe=>oe.id===n),ee=(ie=q==null?void 0:q.latestCommandRuns)==null?void 0:ie.find(oe=>oe.runId===f),te=(H==null?void 0:H.startedAt)||(ee==null?void 0:ee.startedAt)||Date.now();l.runs[f]||(l.runs[f]={runId:f,buttonId:P,sessionId:n,status:"running",output:"",exitCode:null,startedAt:te,outputTruncated:!1}),l.appendOutput(f,b),p.updateSessionCommandRun(n,P,{buttonId:P,status:"running",runId:f,startedAt:te})}function g({runId:f,sessionId:n,buttonId:P,exitCode:b,output:H}){l.runs[f]||(l.runs[f]={runId:f,buttonId:P,sessionId:n,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),l.completeRun(f,b,H);const J=b===0?"success":"error";p.updateSessionCommandRun(n,P,{buttonId:P,status:J,exitCode:b,runId:f,completedAt:Date.now()})}function i(f,n,P,b){l.runs[f]||(l.runs[f]={runId:f,buttonId:P,sessionId:n,status:"running",output:"",exitCode:null,startedAt:Date.now(),outputTruncated:!1}),l.errorRun(f,b),p.updateSessionCommandRun(n,P,{buttonId:P,status:"error",runId:f,completedAt:Date.now()})}function j(f,n,P){const{onSessionCreated:b,onSessionUpdated:H,onSessionDeleted:J,onSessionSummaryUpdated:q,onCommandRunOutput:ee,onCommandRunComplete:te,onCommandRunError:ie,onCommandRunDeleted:oe,onKanbanBoardUpdated:me,onKanbanCardMoved:ae,onKanbanCardAdded:pe,onKanbanCardRemoved:ve}=f,D=[];return D.push(b(U=>{n.sessionsStore.addSessionToList(U)})),D.push(H(U=>{n.sessionsStore.updateSession(U)})),D.push(J(U=>{n.sessionsStore.removeSessionFromList(U),P.cleanupSummary(U)})),D.push(q((U,d)=>{P.updateSummary(U,d)})),D.push(ee(a)),D.push(te(g)),D.push(ie(i)),D.push(oe((U,d,s)=>{n.commandButtonsStore.clearRun(U),n.sessionsStore.removeSessionCommandRun(d,s)})),D.push(me(U=>{n.kanbanStore.handleBoardUpdated(U)})),D.push(ae((U,d,s,y)=>{n.kanbanStore.handleCardMoved(U,d,s,y)})),D.push(pe((U,d)=>{n.kanbanStore.handleCardAdded(U,d)})),D.push(ve((U,d)=>{n.kanbanStore.handleCardRemoved(U,d)})),D}const $=[];let T=null;const h=A(!1);let I=0;const Y=3e4,L=async()=>{if(document.visibilityState!=="visible")return;const f=Date.now();if(f-I<Y)return;I=f;const n=u.value;n&&(await p.fetchSessions(n,{silent:!0}),R(p.sessions))};return document.addEventListener("visibilitychange",L),ce(u,async f=>{if(!f)return;h.value=!1,$.forEach(D=>D()),$.length=0,T&&(T(),T=null),await m.fetchProject(f),await p.fetchSessions(f),await l.fetchButtons(f),R(p.sessions),I=Date.now();const{subscribe:n,unsubscribe:P,onSessionCreated:b,onSessionUpdated:H,onSessionDeleted:J,onSessionSummaryUpdated:q,onCommandRunOutput:ee,onCommandRunComplete:te,onCommandRunError:ie,onCommandRunDeleted:oe,onKanbanBoardUpdated:me,onKanbanCardMoved:ae,onKanbanCardAdded:pe,onKanbanCardRemoved:ve}=Qe(f);T=P,n(),$.push(...j({onSessionCreated:b,onSessionUpdated:H,onSessionDeleted:J,onSessionSummaryUpdated:q,onCommandRunOutput:ee,onCommandRunComplete:te,onCommandRunError:ie,onCommandRunDeleted:oe,onKanbanBoardUpdated:me,onKanbanCardMoved:ae,onKanbanCardAdded:pe,onKanbanCardRemoved:ve},{sessionsStore:p,commandButtonsStore:l,kanbanStore:E},{updateSummary:_,cleanupSummary:S})),$.push(r(async()=>{const D=u.value;D&&(I=Date.now(),await p.fetchSessions(D,{silent:!0}),R(p.sessions))}))},{immediate:!0}),Be(()=>{$.forEach(f=>f()),T&&T(),document.removeEventListener("visibilitychange",L)}),{archivedLoaded:h}}function vt(){const u=$e(),c=Ge(),m=A({}),p={},l=new Map,E=4;function R(i,j=0){fetch(`/api/sessions/${i}/streaming-state`).then($=>$.ok?$.json():null).then($=>{var T;if($&&((T=$.workLogs)!=null&&T.length||$.partialText||$.thinking)){c.hydrateSessionState(i,$);const h=l.get(i);h&&(clearTimeout(h.timeout),l.delete(i))}else _(i,j)}).catch(()=>{_(i,j)})}function _(i,j=0){if(j>=E||!m.value[i])return;const $=u.sessions.find(I=>I.id===i);if(!$||!["running","starting"].includes($.status))return;const T=1500*Math.pow(2,j),h=setTimeout(()=>{l.delete(i),R(i,j+1)},T);l.set(i,{count:j,timeout:h})}function S(i){if(m.value[i])return;const j=Xe(i),$=[];$.push(j.onWorkLog(T=>{c.addSessionWorkLog(i,T)})),$.push(j.onPartial(T=>{T&&c.setSessionPartialText(i,T)})),$.push(j.onThinkingPartial(T=>{T&&c.setPartialThinking(T,i)})),$.push(j.onChangesUpdate(T=>{c.setSessionFileCount(i,T)})),$.push(j.onStatus(T=>{["running","starting"].includes(T)?p[i]&&(clearTimeout(p[i]),delete p[i]):p[i]=setTimeout(()=>{delete p[i],c.clearSessionEphemeralState(i)},2e3)})),j.subscribe(),m.value[i]={subscription:j,cleanup:()=>{$.forEach(T=>T&&T()),j.unsubscribe()}},R(i)}function r(i){const j=m.value[i];j&&(j.cleanup(),delete m.value[i]),p[i]&&(clearTimeout(p[i]),delete p[i]);const $=l.get(i);$&&(clearTimeout($.timeout),l.delete(i))}ce(()=>u.sessions.filter(i=>["running","starting"].includes(i.status)).map(i=>i.id),(i,j=[])=>{const $=i.filter(h=>!j.includes(h)),T=j.filter(h=>!i.includes(h));$.forEach(h=>S(h)),T.forEach(h=>r(h))},{immediate:!0});const{onReconnect:a}=Ie(),g=a(()=>{for(const i of Object.keys(m.value))R(i)});return Be(()=>{Object.keys(m.value).forEach(i=>r(i)),g()}),{activeSubscriptions:m}}const ft={class:"filters-container"},ht={class:"status-filters"},bt=["aria-label","onClick"],gt={class:"filter-label"},yt={class:"filter-count"},kt=["title"],St={key:0,class:"star-icon"},$t={key:1,class:"star-icon star-crossed"},Ct={key:2,class:"star-icon"},wt=["title"],Et={key:0,class:"schedule-icon"},_t={key:1,class:"schedule-icon schedule-crossed"},Tt={key:2,class:"schedule-icon"},jt={__name:"SessionFiltersPanel",props:{showStatusFilters:{type:Boolean,default:!0},showScheduledFilter:{type:Boolean,default:!0}},setup(u){const c=$e(),{toggleFilter:m,toggleStarFilterIcon:p,starFilterTooltip:l,toggleScheduledFilterIcon:E,scheduledFilterTooltip:R,statusFilterCounts:_}=Ye();return(S,r)=>(t(),o("div",ft,[e("div",ht,[u.showStatusFilters?(t(),o(X,{key:0},Z(["running","idle"],a=>e("button",{key:a,class:re(["filter-btn",{active:v(c).statusFilter===a,"filter-btn-empty":v(_)[a]===0}]),"aria-label":`${a} (${v(_)[a]})`,onClick:g=>v(m)(a)},[e("span",gt,F(a),1),e("span",yt,F(v(_)[a]),1)],10,bt)),64)):C("",!0),e("button",{class:re(["filter-btn star-btn",{"star-filter-active":v(c).starredFilter==="starred","star-filter-unstarred":v(c).starredFilter==="unstarred","star-filter-all":v(c).starredFilter===null}]),title:v(l),onClick:r[0]||(r[0]=(...a)=>v(p)&&v(p)(...a))},[v(c).starredFilter==="starred"?(t(),o("span",St,"⭐")):v(c).starredFilter==="unstarred"?(t(),o("span",$t,"⭐")):(t(),o("span",Ct,"☆"))],10,kt),u.showScheduledFilter?(t(),o("button",{key:1,class:re(["filter-btn schedule-btn",{"schedule-filter-active":v(c).scheduledFilter==="scheduled","schedule-filter-not-scheduled":v(c).scheduledFilter==="not-scheduled","schedule-filter-all":v(c).scheduledFilter===null}]),title:v(R),onClick:r[1]||(r[1]=(...a)=>v(E)&&v(E)(...a))},[v(c).scheduledFilter==="scheduled"?(t(),o("span",Et,"⏰")):v(c).scheduledFilter==="not-scheduled"?(t(),o("span",_t,"⏰")):(t(),o("span",Tt,"⏰"))],10,wt)):C("",!0)])]))}},Ne=Se(jt,[["__scopeId","data-v-2c9a63d9"]]),Ft={key:0,class:"skeleton-list"},Mt={key:1,class:"error-message"},Rt={key:2,class:"empty-state"},At={key:3,class:"session-list"},xt={key:0,class:"load-more-container"},Lt=["disabled"],Ot={key:0},Bt={key:1},Pt={__name:"ArchivedTabContent",props:{summaries:{type:Object,required:!0},loadingSummaries:{type:Object,required:!0},summaryErrors:{type:Object,required:!0}},emits:["retrySummary","unarchive","loadMore"],setup(u){const c=$e(),m=V(()=>{const{total:p,offset:l}=c.archivedPagination;return Math.max(0,p-l)});return(p,l)=>(t(),o("div",null,[v(c).archivedPagination.loading&&v(c).archivedSessions.length===0?(t(),o("div",Ft,[(t(),o(X,null,Z(3,E=>e("div",{key:E,class:"skeleton card",style:{height:"120px"}})),64))])):v(c).error?(t(),o("div",Mt,F(v(c).error),1)):v(c).archivedSessions.length===0?(t(),o("div",Rt,[...l[3]||(l[3]=[e("p",null,"No archived sessions. Archive completed sessions to keep your session list tidy.",-1)])])):(t(),o("div",At,[(t(!0),o(X,null,Z(v(c).archivedSessions,E=>(t(),ne(qe,{key:E.id,session:E,"show-summary":!0,summary:u.summaries[E.id],"summary-loading":u.loadingSummaries[E.id],"summary-error":u.summaryErrors[E.id],"show-unarchive":!0,"kanban-enabled":!1,"pr-url":E.prUrl,"pr-summary":u.summaries[E.id],onRetrySummary:l[0]||(l[0]=R=>p.$emit("retrySummary",R)),onUnarchive:l[1]||(l[1]=R=>p.$emit("unarchive",R))},null,8,["session","summary","summary-loading","summary-error","pr-url","pr-summary"]))),128)),v(c).archivedPagination.hasMore?(t(),o("div",xt,[e("button",{class:"btn btn-secondary",disabled:v(c).archivedPagination.loading,onClick:l[2]||(l[2]=E=>p.$emit("loadMore"))},[v(c).archivedPagination.loading?(t(),o("span",Ot,"Loading...")):(t(),o("span",Bt,"Load More ("+F(m.value)+" remaining)",1))],8,Lt)])):C("",!0)]))]))}},Ut=Se(Pt,[["__scopeId","data-v-c0906664"]]),Dt={class:"scheduled-session-card card"},Vt={class:"card-header"},Nt={class:"session-info"},It={class:"session-name"},Kt={class:"timing-info"},Gt={class:"timing-item"},Ht={class:"timing-details"},qt={class:"timing-text"},Wt={class:"timing-absolute"},zt={key:0,class:"timing-item"},Yt={class:"timing-details"},Jt={class:"timing-absolute"},Qt={class:"card-actions"},Xt=["disabled"],Zt=["disabled"],es={__name:"ScheduledSessionCard",props:{session:{type:Object,required:!0}},setup(u){const c=u,m=$e(),p=je(),l=A(!1),E=A(!1),R=V(()=>{const a=new Date(c.session.scheduledAt);return tt(a,{addSuffix:!0})}),_=V(()=>{const a=new Date(c.session.scheduledAt);return st(a,"MMM d, h:mm a")});async function S(){if(confirm("Cancel this scheduled session?")){l.value=!0;try{await m.updateSessionFields(c.session.id,{status:"stopped"}),p.success("Session cancelled")}catch(a){console.error("Failed to cancel session:",a),p.error(`Failed to cancel session: ${a.message}`)}finally{l.value=!1}}}function r(){}return(a,g)=>{const i=Fe("router-link");return t(),o("div",Dt,[e("div",Vt,[e("div",Nt,[Q(i,{to:`/sessions/${u.session.id}`,class:"session-name-link"},{default:ge(()=>[e("h3",It,F(u.session.name),1)]),_:1},8,["to"])]),g[2]||(g[2]=e("div",{class:"status-badge-container"},[e("span",{class:"status-badge status-scheduled"},"scheduled")],-1))]),e("div",Kt,[e("div",Gt,[g[3]||(g[3]=e("span",{class:"timing-icon"},"⏰",-1)),e("div",Ht,[e("span",qt,F(R.value),1),e("span",Wt,F(_.value),1)])]),u.session.autoRescheduleEnabled?(t(),o("div",zt,[g[5]||(g[5]=e("span",{class:"timing-icon"},"🔄",-1)),e("div",Yt,[g[4]||(g[4]=e("span",{class:"timing-text"},"Auto-reschedule",-1)),e("span",Jt," Attempt "+F(u.session.rescheduleCount)+"/"+F(u.session.maxRescheduleCount||"∞"),1)])])):C("",!0)]),e("div",Qt,[e("button",{class:"btn btn-secondary btn-small",disabled:l.value,onClick:g[0]||(g[0]=j=>E.value=!0)}," Edit Schedule ",8,Xt),e("button",{class:"btn btn-danger btn-small",disabled:l.value,onClick:S}," Cancel ",8,Zt)]),Q(nt,{"is-open":E.value,session:u.session,onClose:g[1]||(g[1]=j=>E.value=!1),onSaved:r},null,8,["is-open","session"])])}}},ts=Se(es,[["__scopeId","data-v-d41e6b57"]]),ss={key:0,class:"skeleton-list"},ns={key:1,class:"empty-state"},os={key:2,class:"session-list"},as={__name:"ScheduledTabContent",props:{sessions:{type:Array,required:!0},loading:{type:Boolean,default:!1}},setup(u){return(c,m)=>(t(),o("div",null,[u.loading?(t(),o("div",ss,[(t(),o(X,null,Z(3,p=>e("div",{key:p,class:"skeleton card",style:{height:"120px"}})),64))])):u.sessions.length===0?(t(),o("div",ns,[...m[0]||(m[0]=[e("p",null,"No scheduled sessions. Use scheduling options when creating a new session to schedule it for later.",-1)])])):(t(),o("div",os,[(t(!0),o(X,null,Z(u.sessions,p=>(t(),ne(ts,{key:p.id,session:p},null,8,["session"]))),128))]))]))}},ls=Se(as,[["__scopeId","data-v-75cf4e60"]]),rs={class:"templates-panel"},is={class:"templates-header"},ds={key:0,class:"template-form card","data-testid":"template-form"},us={class:"form-group"},cs={class:"form-group"},ms={class:"form-group"},ps=["disabled"],vs={class:"form-group"},fs=["value"],hs={class:"form-group"},bs={class:"form-group"},gs={class:"form-group"},ys={class:"form-group"},ks={class:"form-actions"},Ss=["disabled"],$s={key:0,class:"loading-spinner"},Cs={key:1,class:"loading-state"},ws={key:2},Es={key:0,class:"template-section"},_s={class:"templates-list"},Ts={class:"template-header"},js={class:"template-name"},Fs={class:"template-prompt"},Ms={class:"template-meta"},Rs={key:0,class:"meta-badge"},As={key:1,class:"meta-badge"},xs={key:2,class:"meta-badge"},Ls={key:3,class:"meta-badge"},Os={key:4,class:"meta-badge meta-badge-chain"},Bs={key:1,class:"template-section"},Ps={class:"templates-list"},Us={class:"template-header"},Ds={class:"template-name"},Vs={class:"template-prompt"},Ns={class:"template-meta"},Is={key:0,class:"meta-badge"},Ks={key:1,class:"meta-badge"},Gs={key:2,class:"meta-badge"},Hs={key:3,class:"meta-badge"},qs={key:4,class:"meta-badge meta-badge-chain"},Ws={key:2,class:"empty-state"},zs={__name:"TemplatesPanel",props:{projectId:{type:String,required:!0}},setup(u,{expose:c}){const m=u,p=We(),l=je(),E=lt(),R=A(!1),_=A(!1),S=A({name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}),r=V(()=>p.loading),a=V(()=>p.projectTemplates),g=V(()=>p.globalTemplates),i=V(()=>[...p.projectTemplates,...p.globalTemplates]);Pe(async()=>{E.providers.length===0&&await E.fetchProviders(),p.fetchProjectTemplates(m.projectId)}),ce(()=>m.projectId,f=>{p.fetchProjectTemplates(f)});function j(f,n=100){return f.length<=n?f:`${f.substring(0,n)}...`}function $(f){const n=p.getTemplateById(f);return(n==null?void 0:n.name)||"Unknown"}function T(f){var n;for(const P of E.providers){const b=(n=P.models)==null?void 0:n.find(H=>H.modelId===f);if(b)return P.isBuiltIn?b.displayName:b.modelId}return f}function h(){S.value={name:"",prompt:"",isGlobal:!1,nextTemplateId:null,thinkingEnabled:null,gitBranch:"",model:null,mode:null}}function I(){R.value=!0}function Y(){R.value=!1,h()}async function L(){if(!_.value){_.value=!0;try{const f={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 p.createGlobalTemplate(f),l.success("Global template created")):(await p.createProjectTemplate(m.projectId,f),l.success("Template created")),Y()}catch(f){l.error(f.message)}finally{_.value=!1}}}return c({formData:S,getModelName:T,resetForm:h}),(f,n)=>{const P=Fe("router-link");return t(),o("div",rs,[e("div",is,[n[8]||(n[8]=e("h2",null,"Session Templates",-1)),R.value?C("",!0):(t(),o("button",{key:0,class:"btn btn-primary btn-sm","data-testid":"new-template-btn",onClick:I}," New Template "))]),R.value?(t(),o("div",ds,[n[23]||(n[23]=e("h3",null,"Create Template",-1)),e("form",{onSubmit:de(L,["prevent"])},[e("div",us,[n[9]||(n[9]=e("label",{class:"form-label"},"Name",-1)),G(e("input",{"onUpdate:modelValue":n[0]||(n[0]=b=>S.value.name=b),type:"text",class:"form-input",placeholder:"Template name",required:""},null,512),[[ye,S.value.name]])]),e("div",cs,[n[10]||(n[10]=e("label",{class:"form-label"},"Prompt",-1)),G(e("textarea",{"onUpdate:modelValue":n[1]||(n[1]=b=>S.value.prompt=b),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(ze)]),e("div",ms,[n[12]||(n[12]=e("label",{class:"form-label"},"Scope",-1)),G(e("select",{"onUpdate:modelValue":n[2]||(n[2]=b=>S.value.isGlobal=b),class:"form-input",disabled:f.editingTemplate},[...n[11]||(n[11]=[e("option",{value:!1}," Project Only ",-1),e("option",{value:!0}," Global (all projects) ",-1)])],8,ps),[[we,S.value.isGlobal]])]),e("div",vs,[n[14]||(n[14]=e("label",{class:"form-label"},"Next Template (Optional)",-1)),G(e("select",{"onUpdate:modelValue":n[3]||(n[3]=b=>S.value.nextTemplateId=b),class:"form-input"},[n[13]||(n[13]=e("option",{value:null}," None ",-1)),(t(!0),o(X,null,Z(i.value,b=>(t(),o("option",{key:b.id,value:b.id},F(b.name)+" "+F(b.projectId?"":"(Global)"),9,fs))),128))],512),[[we,S.value.nextTemplateId]]),n[15]||(n[15]=e("p",{class:"form-help"}," Chain another template to run after this one completes. ",-1))]),e("div",hs,[n[16]||(n[16]=e("label",{class:"form-label"},"Model",-1)),Q(rt,{modelValue:S.value.model,"onUpdate:modelValue":n[4]||(n[4]=b=>S.value.model=b),"allow-empty":!0,"empty-label":"Inherit from root session"},null,8,["modelValue"])]),e("div",bs,[n[18]||(n[18]=e("label",{class:"form-label",for:"create-mode"},"Mode",-1)),G(e("select",{id:"create-mode","onUpdate:modelValue":n[5]||(n[5]=b=>S.value.mode=b),class:"form-input","data-testid":"mode-select"},[...n[17]||(n[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),[[we,S.value.mode]])]),e("div",gs,[n[20]||(n[20]=e("label",{class:"form-label",for:"create-thinking"},"Extended Thinking",-1)),G(e("select",{id:"create-thinking","onUpdate:modelValue":n[6]||(n[6]=b=>S.value.thinkingEnabled=b),class:"form-input","data-testid":"thinking-select"},[...n[19]||(n[19]=[e("option",{value:null}," Inherit from root session ",-1),e("option",{value:!0}," Enabled ",-1),e("option",{value:!1}," Disabled ",-1)])],512),[[we,S.value.thinkingEnabled]])]),e("div",ys,[n[21]||(n[21]=e("label",{class:"form-label"},"Git Branch (Optional)",-1)),G(e("input",{"onUpdate:modelValue":n[7]||(n[7]=b=>S.value.gitBranch=b),type:"text",class:"form-input",placeholder:"Leave empty to inherit from root session"},null,512),[[ye,S.value.gitBranch]])]),e("div",ks,[e("button",{type:"button",class:"btn","data-testid":"cancel-btn",onClick:Y}," Cancel "),e("button",{type:"submit",class:"btn btn-primary",disabled:_.value,"data-testid":"submit-btn"},[_.value?(t(),o("span",$s)):C("",!0),n[22]||(n[22]=ue(" Create ",-1))],8,Ss)])],32)])):C("",!0),r.value?(t(),o("div",Cs,[...n[24]||(n[24]=[e("span",{class:"loading-spinner"},null,-1),ue(" Loading templates... ",-1)])])):(t(),o("div",ws,[a.value.length>0?(t(),o("div",Es,[n[25]||(n[25]=e("h3",{class:"section-title"}," Project Templates ",-1)),e("div",_s,[(t(!0),o(X,null,Z(a.value,b=>(t(),ne(P,{key:b.id,to:`/projects/${u.projectId}/templates/${b.id}`,class:"template-card card","data-testid":`template-card-${b.id}`},{default:ge(()=>[e("div",Ts,[e("h4",js,F(b.name),1)]),e("p",Fs,F(j(b.prompt)),1),e("div",Ms,[b.thinkingEnabled?(t(),o("span",Rs,"Thinking")):C("",!0),b.gitBranch?(t(),o("span",As,F(b.gitBranch),1)):C("",!0),b.model?(t(),o("span",xs,F(T(b.model)),1)):C("",!0),b.mode?(t(),o("span",Ls,F(b.mode),1)):C("",!0),b.nextTemplateId?(t(),o("span",Os," Chains to: "+F($(b.nextTemplateId)),1)):C("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):C("",!0),g.value.length>0?(t(),o("div",Bs,[n[27]||(n[27]=e("h3",{class:"section-title"}," Global Templates ",-1)),e("div",Ps,[(t(!0),o(X,null,Z(g.value,b=>(t(),ne(P,{key:b.id,to:`/projects/${u.projectId}/templates/${b.id}`,class:"template-card card","data-testid":`template-card-${b.id}`},{default:ge(()=>[e("div",Us,[e("h4",Ds,F(b.name),1)]),e("p",Vs,F(j(b.prompt)),1),e("div",Ns,[n[26]||(n[26]=e("span",{class:"meta-badge meta-badge-global"},"Global",-1)),b.thinkingEnabled?(t(),o("span",Is,"Thinking")):C("",!0),b.gitBranch?(t(),o("span",Ks,F(b.gitBranch),1)):C("",!0),b.model?(t(),o("span",Gs,F(T(b.model)),1)):C("",!0),b.mode?(t(),o("span",Hs,F(b.mode),1)):C("",!0),b.nextTemplateId?(t(),o("span",qs," Chains to: "+F($(b.nextTemplateId)),1)):C("",!0)])]),_:2},1032,["to","data-testid"]))),128))])])):C("",!0),a.value.length===0&&g.value.length===0&&!R.value?(t(),o("div",Ws,[n[28]||(n[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:I}," Create Template ")])):C("",!0)]))])}}},Ys=Se(zs,[["__scopeId","data-v-d08b4ac0"]]),Js={class:"command-buttons-panel"},Qs={class:"panel-header"},Xs={key:0,class:"loading-state"},Zs={key:1,class:"error-message"},en={key:2,class:"empty-state"},tn={key:3,class:"buttons-table"},sn=["onClick"],nn={class:"col-label"},on={class:"col-command"},an={class:"col-order"},ln=["onClick"],rn={class:"modal-body"},dn={class:"modal-footer"},un={__name:"CommandButtonsPanel",props:{projectId:{type:String,required:!0}},setup(u){const c=u,m=Ke(),p=He(),l=A(null),E=r=>r.length>50?`${r.substring(0,50)}...`:r,R=r=>{m.push(`/projects/${c.projectId}/command-buttons/${r.id}`)},_=r=>{l.value=r},S=async()=>{if(l.value)try{await p.deleteButton(c.projectId,l.value.id),l.value=null}catch(r){console.error("Failed to delete button:",r)}};return(r,a)=>{const g=Fe("router-link");return t(),o("div",Js,[e("div",Qs,[a[5]||(a[5]=e("h3",null,"Command Buttons",-1)),Q(g,{to:`/projects/${u.projectId}/command-buttons/new`,class:"btn btn-primary btn-sm"},{default:ge(()=>[...a[4]||(a[4]=[ue(" + New Command Button ",-1)])]),_:1},8,["to"])]),v(p).loading?(t(),o("div",Xs,[...a[6]||(a[6]=[e("span",{class:"loading-spinner"},null,-1),ue(" Loading command buttons... ",-1)])])):v(p).error?(t(),o("div",Zs,F(v(p).error),1)):v(p).buttons.length===0?(t(),o("div",en,[a[8]||(a[8]=e("p",null,"No command buttons configured yet.",-1)),Q(g,{to:`/projects/${u.projectId}/command-buttons/new`,class:"btn btn-primary"},{default:ge(()=>[...a[7]||(a[7]=[ue(" Create First Button ",-1)])]),_:1},8,["to"])])):(t(),o("div",tn,[a[9]||(a[9]=Ue('<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)),(t(!0),o(X,null,Z(v(p).buttons,i=>(t(),o("div",{key:i.id,class:"table-row",onClick:j=>R(i)},[e("div",nn,F(i.label),1),e("div",on,[e("code",null,F(E(i.command)),1)]),e("div",an,F(i.sortOrder),1),e("div",{class:"col-actions",onClick:a[0]||(a[0]=de(()=>{},["stop"]))},[e("button",{class:"btn btn-sm btn-outline-danger",onClick:j=>_(i)}," Delete ",8,ln)])],8,sn))),128))])),l.value?(t(),o("div",{key:4,class:"modal-overlay",onClick:a[3]||(a[3]=i=>l.value=null)},[e("div",{class:"modal-dialog",onClick:a[2]||(a[2]=de(()=>{},["stop"]))},[a[12]||(a[12]=e("div",{class:"modal-header"},[e("h4",null,"Delete Command Button")],-1)),e("div",rn,[e("p",null,[a[10]||(a[10]=ue('Are you sure you want to delete the command button "',-1)),e("strong",null,F(l.value.label),1),a[11]||(a[11]=ue('"?',-1))])]),e("div",dn,[e("button",{class:"btn btn-outline-secondary",onClick:a[1]||(a[1]=i=>l.value=null)}," Cancel "),e("button",{class:"btn btn-danger",onClick:S}," Delete ")])])])):C("",!0)])}}},cn=Se(un,[["__scopeId","data-v-990a48bf"]]),mn={class:"modal-content"},pn={class:"modal-header"},vn={class:"modal-title"},fn={class:"modal-body"},hn={class:"form-group"},bn={class:"sessions-list"},gn={key:0,class:"loading-state"},yn={key:1,class:"empty-state"},kn={key:0},Sn={key:1},$n=["onClick"],Cn={class:"session-info"},wn={class:"session-name"},En={class:"session-meta"},_n={key:0,class:"session-mode"},Tn={class:"session-date"},jn={class:"modal-footer"},Fn=["disabled"],Mn={__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(u,{emit:c}){const m=u,p=c;$e();const l=Me(),E=je(),R=A(!1),_=A(!1),S=A(""),r=A(null),a=A([]),g=V(()=>{let L=a.value.filter(f=>!l.isSessionOnBoard(f.id));if(L=L.filter(f=>!f.parentSessionId),S.value.trim()){const f=S.value.toLowerCase();L=L.filter(n=>{var P;return(P=n.name)==null?void 0:P.toLowerCase().includes(f)})}return L});function i(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"○"}}function j(L){return L?new Date(L).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function $(L){r.value=L}function T(){}function h(){p("update:isOpen",!1),p("close"),S.value="",r.value=null}async function I(){if(m.projectId){R.value=!0;try{const L=await Oe.getProjectSessions(m.projectId,!1,null);a.value=Array.isArray(L)?L:(L==null?void 0:L.sessions)||[]}catch(L){console.error("Failed to load sessions:",L),E.error("Failed to load sessions"),a.value=[]}finally{R.value=!1}}}async function Y(){if(!(!r.value||!m.laneId)){_.value=!0;try{await l.addSessionToBoard(m.projectId,r.value,m.laneId),E.success("Session added to board"),p("added",r.value),h()}catch(L){console.error("Failed to add session to board:",L),E.error(L.message||"Failed to add session to board")}finally{_.value=!1}}}return ce(()=>m.isOpen,L=>{L&&I()},{immediate:!0}),(L,f)=>u.isOpen?(t(),o("div",{key:0,class:"modal-backdrop",onClick:de(h,["self"])},[e("div",mn,[e("div",pn,[e("h2",vn," Add Session to "+F(u.laneName),1),e("button",{class:"close-btn","aria-label":"Close",onClick:h}," × ")]),e("div",fn,[e("div",hn,[f[1]||(f[1]=e("label",{for:"session-search",class:"form-label"},"Search Sessions",-1)),G(e("input",{id:"session-search","onUpdate:modelValue":f[0]||(f[0]=n=>S.value=n),type:"text",class:"form-input",placeholder:"Search by name...",onInput:T},null,544),[[ye,S.value]])]),e("div",bn,[R.value?(t(),o("div",gn,[...f[2]||(f[2]=[e("span",{class:"loading-spinner"},null,-1),ue(" Loading sessions... ",-1)])])):g.value.length===0?(t(),o("div",yn,[S.value?(t(),o("p",kn,' No sessions matching "'+F(S.value)+'" ',1)):(t(),o("p",Sn," No available sessions to add. "))])):(t(!0),o(X,{key:2},Z(g.value,n=>(t(),o("div",{key:n.id,class:re(["session-item",{selected:r.value===n.id}]),onClick:P=>$(n.id)},[e("div",{class:re(["session-status",`status-${n.status}`])},F(i(n.status)),3),e("div",Cn,[e("div",wn,F(n.name),1),e("div",En,[n.mode?(t(),o("span",_n,F(n.mode),1)):C("",!0),e("span",Tn,F(j(n.updatedAt||n.createdAt)),1)])])],10,$n))),128))])]),e("div",jn,[e("button",{class:"btn btn-secondary",onClick:h}," Cancel "),e("button",{class:"btn btn-primary",disabled:!r.value||_.value,onClick:Y},F(_.value?"Adding...":"Add to Lane"),9,Fn)])])])):C("",!0)}},Je=Se(Mn,[["__scopeId","data-v-916a53c8"]]),Rn={class:"modal-content"},An={class:"modal-body"},xn={class:"form-group"},Ln={key:0,class:"form-group"},On={class:"lane-position-controls"},Bn=["disabled"],Pn={class:"lane-position-label"},Un=["disabled"],Dn={class:"form-group"},Vn={class:"automation-options"},Nn={class:"radio-option"},In={class:"radio-option"},Kn={class:"radio-option"},Gn={key:1,class:"form-group"},Hn={key:0,label:"Project Templates"},qn=["value"],Wn={key:1,label:"Global Templates"},zn=["value"],Yn={key:2,class:"form-group"},Jn={class:"prompt-actions-row"},Qn={key:4,class:"agent-settings-section"},Xn={key:0,class:"agent-settings-body"},Zn={class:"form-group"},eo={class:"toggle-switch-row"},to={class:"toggle-switch"},so={key:0,class:"reschedule-settings"},no={class:"form-group"},oo={class:"checkbox-option"},ao={class:"checkbox-option"},lo={class:"form-group"},ro={class:"form-group"},io={class:"form-group"},uo={class:"form-group"},co={class:"danger-zone"},mo=["disabled"],po={class:"modal-footer"},vo=["disabled"],fo={__name:"LaneSettingsModal",props:{isOpen:{type:Boolean,default:!1},projectId:{type:String,default:""},lane:{type:Object,default:null}},emits:["close","update:isOpen","updated","deleted"],setup(u,{emit:c}){const m=u,p=c,l=Me(),E=We(),R=je(),_=De(),S=A(!1),r=A(!1),a=A("none"),g=A(!1),i=A(!1),j=A(null),$=A(-1),T=A(-1),h=Re({name:"",onEnterTemplateId:null,onEnterPrompt:"",onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:15,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}),I=V(()=>E.projectTemplates),Y=V(()=>E.globalTemplates),L=V(()=>{const d=_.getProjectById(m.projectId);return(d==null?void 0:d.workingDirectory)||null}),f=V(()=>T.value),n=V(()=>{var d,s;return((s=(d=l.board)==null?void 0:d.lanes)==null?void 0:s.length)||0}),P=V(()=>!(!h.name.trim()||a.value==="template"&&!h.onEnterTemplateId||a.value==="prompt"&&!h.onEnterPrompt.trim()));function b(d){return{onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled||!1,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes||15,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit??!0,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError??!0,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount||null,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens||null,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount||null}}function H(d){return{name:d.name||"",onEnterTemplateId:d.onEnterTemplateId||null,onEnterPrompt:d.onEnterPrompt||"",onEnterMode:d.onEnterMode||null,onEnterModel:d.onEnterModel||null,onEnterEffortLevel:d.onEnterEffortLevel||null,onEnterThinkingEnabled:d.onEnterThinkingEnabled??null,...b(d)}}function J(d){return d.onEnterTemplateId?"template":d.onEnterPrompt?"prompt":"none"}function q(d){return!!(d.onEnterMode||d.onEnterModel||d.onEnterEffortLevel||d.onEnterThinkingEnabled!==null||d.onEnterAutoRescheduleEnabled)}function ee(){var d,s;if(m.lane){const y=H(m.lane);Object.assign(h,y),a.value=J(m.lane),g.value=q(h);const he=((s=(d=l.board)==null?void 0:d.lanes)==null?void 0:s.findIndex(B=>B.id===m.lane.id))??-1;$.value=he,T.value=he}else{const y=H({});Object.assign(h,y),a.value="none",g.value=!1,$.value=-1,T.value=-1}}function te(){T.value=$.value,p("update:isOpen",!1),p("close")}function ie({text:d}){const s=j.value;if(s){const y=s.selectionStart,he=s.selectionEnd,B=h.onEnterPrompt.substring(0,y),k=h.onEnterPrompt.substring(he);h.onEnterPrompt=B+d+k,Ze(()=>{s.selectionStart=s.selectionEnd=y+d.length,s.focus()})}}function oe(d){const s=T.value;s<0||s===d||(T.value=d)}function me(){return{onEnterTemplateId:null,onEnterPrompt:null,onEnterMode:null,onEnterModel:null,onEnterEffortLevel:null,onEnterThinkingEnabled:null,onEnterAutoRescheduleEnabled:!1,onEnterRescheduleDelayMinutes:15,onEnterRescheduleOnTokenLimit:!0,onEnterRescheduleOnServiceError:!0,onEnterMaxRescheduleCount:null,onEnterMaxTotalTokens:null,onEnterRescheduleAtTokenCount:null}}function ae(d){return{...me(),onEnterTemplateId:d.onEnterTemplateId,onEnterPrompt:null}}function pe(d){return{onEnterTemplateId:null,onEnterPrompt:d.onEnterPrompt.trim(),onEnterMode:d.onEnterMode,onEnterModel:d.onEnterModel,onEnterEffortLevel:d.onEnterEffortLevel,onEnterThinkingEnabled:d.onEnterThinkingEnabled,onEnterAutoRescheduleEnabled:d.onEnterAutoRescheduleEnabled,onEnterRescheduleDelayMinutes:d.onEnterRescheduleDelayMinutes,onEnterRescheduleOnTokenLimit:d.onEnterRescheduleOnTokenLimit,onEnterRescheduleOnServiceError:d.onEnterRescheduleOnServiceError,onEnterMaxRescheduleCount:d.onEnterMaxRescheduleCount,onEnterMaxTotalTokens:d.onEnterMaxTotalTokens,onEnterRescheduleAtTokenCount:d.onEnterRescheduleAtTokenCount}}async function ve(d,s,y,he){var M;if(y===s||y<0)return;const B=(M=l.board)==null?void 0:M.lanes;if(!B||B.length<=1)return;const k=B.map(w=>w.id);k.splice(s,1),k.splice(y,0,d.id),await l.reorderLanes(he,k)}async function D(){if(!(!m.lane||!P.value)){S.value=!0;try{const d={name:h.name.trim()};a.value==="template"?Object.assign(d,ae(h)):a.value==="prompt"?Object.assign(d,pe(h)):Object.assign(d,me()),await ve(m.lane,$.value,T.value,m.projectId),await l.updateLane(m.projectId,m.lane.id,d),R.success("Lane settings saved"),p("updated"),te()}catch(d){console.error("Failed to save lane settings:",d),R.error(d.message||"Failed to save lane settings")}finally{S.value=!1}}}async function U(){if(m.lane&&confirm(`Are you sure you want to delete the "${m.lane.name}" lane? This cannot be undone.`)){r.value=!0;try{await l.deleteLane(m.projectId,m.lane.id),R.success("Lane deleted"),p("deleted"),te()}catch(d){console.error("Failed to delete lane:",d),R.error(d.message||"Failed to delete lane")}finally{r.value=!1}}}return ce(()=>m.isOpen,d=>{d&&(ee(),m.projectId&&E.projectTemplates.length===0&&E.globalTemplates.length===0&&E.fetchProjectTemplates(m.projectId))},{immediate:!0}),ce(()=>m.lane,()=>{m.isOpen&&ee()}),ce(()=>{var d;return(d=l.board)==null?void 0:d.lanes},d=>{if(m.isOpen&&m.lane&&d){const s=d.findIndex(y=>y.id===m.lane.id);s>=0&&($.value=s,T.value=s)}},{deep:!0}),(d,s)=>u.isOpen?(t(),o("div",{key:0,class:"modal-backdrop",onClick:de(te,["self"])},[e("div",Rn,[e("div",{class:"modal-header"},[s[22]||(s[22]=e("h2",{class:"modal-title"}," Lane Settings ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:te}," × ")]),e("div",An,[e("div",xn,[s[23]||(s[23]=e("label",{for:"lane-name",class:"form-label"},"Lane Name",-1)),G(e("input",{id:"lane-name","onUpdate:modelValue":s[0]||(s[0]=y=>h.name=y),type:"text",class:"form-input",placeholder:"Enter lane name"},null,512),[[ye,h.name]])]),n.value>1?(t(),o("div",Ln,[s[26]||(s[26]=e("label",{class:"form-label"},"Position",-1)),e("div",On,[e("button",{class:"btn btn-icon",disabled:f.value<=0,title:"Move left",onClick:s[1]||(s[1]=y=>oe(f.value-1))},[...s[24]||(s[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,Bn),e("span",Pn,F(f.value+1)+" of "+F(n.value),1),e("button",{class:"btn btn-icon",disabled:f.value>=n.value-1,title:"Move right",onClick:s[2]||(s[2]=y=>oe(f.value+1))},[...s[25]||(s[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,Un)])])):C("",!0),e("div",Dn,[s[30]||(s[30]=e("label",{class:"form-label"},"On-Enter Automation",-1)),e("div",Vn,[e("label",Nn,[G(e("input",{"onUpdate:modelValue":s[3]||(s[3]=y=>a.value=y),type:"radio",value:"none",name:"automation"},null,512),[[xe,a.value]]),s[27]||(s[27]=e("span",null,"None",-1))]),e("label",In,[G(e("input",{"onUpdate:modelValue":s[4]||(s[4]=y=>a.value=y),type:"radio",value:"template",name:"automation"},null,512),[[xe,a.value]]),s[28]||(s[28]=e("span",null,"Run a template",-1))]),e("label",Kn,[G(e("input",{"onUpdate:modelValue":s[5]||(s[5]=y=>a.value=y),type:"radio",value:"prompt",name:"automation"},null,512),[[xe,a.value]]),s[29]||(s[29]=e("span",null,"Run a custom prompt",-1))])])]),a.value==="template"?(t(),o("div",Gn,[s[32]||(s[32]=e("label",{for:"template-select",class:"form-label"},"Select Template",-1)),G(e("select",{id:"template-select","onUpdate:modelValue":s[6]||(s[6]=y=>h.onEnterTemplateId=y),class:"form-input"},[s[31]||(s[31]=e("option",{value:null}," Select a template... ",-1)),I.value.length?(t(),o("optgroup",Hn,[(t(!0),o(X,null,Z(I.value,y=>(t(),o("option",{key:y.id,value:y.id},F(y.name),9,qn))),128))])):C("",!0),Y.value.length?(t(),o("optgroup",Wn,[(t(!0),o(X,null,Z(Y.value,y=>(t(),o("option",{key:y.id,value:y.id},F(y.name),9,zn))),128))])):C("",!0)],512),[[we,h.onEnterTemplateId]]),s[33]||(s[33]=e("p",{class:"form-help"}," When a session enters this lane, the selected template will automatically run. ",-1))])):C("",!0),a.value==="prompt"?(t(),o("div",Yn,[s[34]||(s[34]=e("label",{for:"custom-prompt",class:"form-label"},"Custom Prompt",-1)),Q(it,{id:"custom-prompt",ref_key:"promptTextareaRef",ref:j,modelValue:h.onEnterPrompt,"onUpdate:modelValue":s[7]||(s[7]=y=>h.onEnterPrompt=y),class:"form-input form-textarea",placeholder:"Enter the prompt to run when a session enters this lane...",rows:"4","min-height":80},null,8,["modelValue"]),e("div",Jn,[Q(ze),L.value?(t(),ne(ut,{key:0,onOpen:s[8]||(s[8]=y=>i.value=!0)})):C("",!0)])])):C("",!0),a.value==="prompt"?(t(),ne(ct,{key:3,"is-open":i.value,"onUpdate:isOpen":s[9]||(s[9]=y=>i.value=y),"working-directory":L.value||"",mode:"insert","hide-builtin":!0,onInsert:ie},null,8,["is-open","working-directory"])):C("",!0),a.value==="prompt"?(t(),o("div",Qn,[e("button",{type:"button",class:"section-toggle",onClick:s[10]||(s[10]=y=>g.value=!g.value)},[e("span",{class:re(["toggle-chevron",{open:g.value}])},"▶",2),s[35]||(s[35]=ue(" Session Settings ",-1))]),g.value?(t(),o("div",Xn,[Q(dt,{mode:h.onEnterMode||"standard",model:h.onEnterModel,"effort-level":h.onEnterEffortLevel,"thinking-enabled":h.onEnterThinkingEnabled??!1,"hide-start-immediately":!0,"onUpdate:mode":s[11]||(s[11]=y=>h.onEnterMode=y),"onUpdate:model":s[12]||(s[12]=y=>h.onEnterModel=y),"onUpdate:effortLevel":s[13]||(s[13]=y=>h.onEnterEffortLevel=y),"onUpdate:thinkingEnabled":s[14]||(s[14]=y=>h.onEnterThinkingEnabled=y)},null,8,["mode","model","effort-level","thinking-enabled"]),e("div",Zn,[e("label",eo,[e("label",to,[G(e("input",{"onUpdate:modelValue":s[15]||(s[15]=y=>h.onEnterAutoRescheduleEnabled=y),type:"checkbox"},null,512),[[Le,h.onEnterAutoRescheduleEnabled]]),s[36]||(s[36]=e("span",{class:"toggle-slider"},null,-1))]),s[37]||(s[37]=e("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),h.onEnterAutoRescheduleEnabled?(t(),o("div",so,[e("div",no,[s[40]||(s[40]=e("p",{class:"settings-label"}," Reschedule Triggers ",-1)),e("label",oo,[G(e("input",{"onUpdate:modelValue":s[16]||(s[16]=y=>h.onEnterRescheduleOnTokenLimit=y),type:"checkbox"},null,512),[[Le,h.onEnterRescheduleOnTokenLimit]]),s[38]||(s[38]=e("span",null,"Token limit errors",-1))]),e("label",ao,[G(e("input",{"onUpdate:modelValue":s[17]||(s[17]=y=>h.onEnterRescheduleOnServiceError=y),type:"checkbox"},null,512),[[Le,h.onEnterRescheduleOnServiceError]]),s[39]||(s[39]=e("span",null,"Service unavailability",-1))])]),e("div",lo,[s[42]||(s[42]=e("label",{class:"form-label"},"Reschedule Delay",-1)),G(e("select",{"onUpdate:modelValue":s[18]||(s[18]=y=>h.onEnterRescheduleDelayMinutes=y),class:"form-input"},[...s[41]||(s[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),[[we,h.onEnterRescheduleDelayMinutes,void 0,{number:!0}]])]),e("div",ro,[s[43]||(s[43]=e("label",{class:"form-label"},"Max Reschedule Count",-1)),G(e("input",{"onUpdate:modelValue":s[19]||(s[19]=y=>h.onEnterMaxRescheduleCount=y),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,h.onEnterMaxRescheduleCount,void 0,{number:!0}]])]),e("div",io,[s[44]||(s[44]=e("label",{class:"form-label"},"Max Total Tokens",-1)),G(e("input",{"onUpdate:modelValue":s[20]||(s[20]=y=>h.onEnterMaxTotalTokens=y),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[ye,h.onEnterMaxTotalTokens,void 0,{number:!0}]])]),e("div",uo,[s[45]||(s[45]=e("label",{class:"form-label"},"Reschedule At Token Count",-1)),G(e("input",{"onUpdate:modelValue":s[21]||(s[21]=y=>h.onEnterRescheduleAtTokenCount=y),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[ye,h.onEnterRescheduleAtTokenCount,void 0,{number:!0}]])])])):C("",!0)])):C("",!0)])):C("",!0),e("div",co,[s[46]||(s[46]=e("h4",{class:"danger-title"}," Danger Zone ",-1)),s[47]||(s[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:r.value,onClick:U},F(r.value?"Deleting...":"Delete Lane"),9,mo)])]),e("div",po,[e("button",{class:"btn btn-secondary",onClick:te}," Cancel "),e("button",{class:"btn btn-primary",disabled:S.value||!P.value,onClick:D},F(S.value?"Saving...":"Save Changes"),9,vo)])])])):C("",!0)}},ho=Se(fo,[["__scopeId","data-v-93f5604f"]]),bo={class:"kanban-board"},go={key:0,class:"kanban-loading"},yo={key:1,class:"kanban-error"},ko={key:2,class:"kanban-empty"},So={key:3,class:"kanban-lanes-container"},$o=["onDragover","onDrop"],Co={class:"lane-header"},wo={class:"lane-title-row"},Eo={class:"lane-title"},_o={key:0,class:"lane-automation-indicator",title:"Automation enabled"},To={class:"lane-header-actions"},jo={class:"lane-count"},Fo=["onClick"],Mo={class:"lane-cards"},Ro={key:0,class:"card-drop-indicator"},Ao=["onDragstart","onDragover"],xo={class:"card-header"},Lo={class:"card-title"},Oo={class:"card-meta"},Bo={key:0,class:"card-mode"},Po={class:"card-reorder-arrows"},Uo=["onClick"],Do=["onClick"],Vo=["onClick"],No=["onClick"],Io={key:0,class:"card-drop-indicator"},Ko={key:1,class:"lane-empty"},Go={class:"lane-footer"},Ho={key:0,class:"lane-automation"},qo={key:1,class:"lane-automation"},Wo=["onClick"],zo={class:"add-lane-container"},Yo={key:1,class:"add-lane-form"},Jo={__name:"KanbanBoard",props:{projectId:{type:String,required:!0}},setup(u){const c=u,m=Me(),p=A(!1),l=A(""),E=A(null),R=A(null),_=A(null),S=A(-1),r=A(null),a=A(-1),g=A(!1),i=A(null),j=A(!1),$=A(null),T=A(!1),h=A(null),I=A(null),Y=V(()=>m.board),L=V(()=>m.loading),f=V(()=>m.error),n=async()=>{try{await m.fetchBoard(c.projectId)}catch(M){console.error("Failed to fetch kanban board:",M)}},P=M=>{switch(M){case"running":case"starting":return"●";case"waiting":return"◐";case"completed":return"✓";case"error":return"✕";case"stopped":return"■";case"scheduled":return"⏰";default:return"○"}},b=(M,w,W,N)=>{E.value="card",R.value=w,_.value=W,S.value=N;const z=M.dataTransfer;z.effectAllowed="move",z.setData("text/plain",w.id)},H=(M,w,W)=>{if(E.value!=="card")return;const N=M.currentTarget.getBoundingClientRect(),z=N.top+N.height/2,se=M.clientY<z?W:W+1;w===_.value&&(se===S.value||se===S.value+1)?(r.value=null,a.value=-1):(r.value=w,a.value=se)},J=()=>{E.value=null,R.value=null,_.value=null,S.value=-1,r.value=null,a.value=-1},q=async(M,w,W)=>{var fe,le;const N=(le=(fe=Y.value)==null?void 0:fe.lanes)==null?void 0:le.find(x=>x.id===M);if(!(N!=null&&N.cards))return;let z=W>=0?W:N.cards.length;if(z>w&&z--,z===w)return;const se=N.cards.map(x=>x.id),[be]=se.splice(w,1);se.splice(z,0,be);try{await m.reorderCards(c.projectId,M,se)}catch(x){console.error("Failed to reorder cards:",x)}},ee=async(M,w)=>{try{await m.moveCard(c.projectId,M,w,{runOnEnterTemplate:!0})}catch(W){console.error("Failed to move card:",W)}},te=async(M,w)=>{if(M.preventDefault(),E.value!=="card"||!R.value){J();return}const W=M.dataTransfer.getData("text/plain");if(!W){J();return}_.value===w?await q(w,S.value,a.value):await ee(W,w),J()},ie=async(M,w,W)=>{var be,fe;const N=(fe=(be=Y.value)==null?void 0:be.lanes)==null?void 0:fe.find(le=>le.id===M);if(!(N!=null&&N.cards))return;const z=N.cards.map(le=>le.id),[se]=z.splice(w,1);z.splice(W,0,se);try{await m.reorderCards(c.projectId,M,z)}catch(le){console.error("Failed to reorder cards:",le)}},oe=async M=>{if(confirm("Remove this session from the board?"))try{await m.removeCard(c.projectId,M)}catch(w){console.error("Failed to remove card:",w)}},me=async()=>{if(l.value.trim())try{await m.createLane(c.projectId,{name:l.value.trim()}),ae()}catch(M){console.error("Failed to add lane:",M)}},ae=()=>{p.value=!1,l.value=""},pe=M=>{i.value=M,g.value=!0},ve=()=>{g.value=!1,i.value=null},D=()=>{},U=M=>{$.value=M,j.value=!0},d=()=>{j.value=!1,$.value=null},s=()=>{},y=()=>{d()},he=(M,w)=>{h.value=M,I.value=w,T.value=!0},B=()=>{T.value=!1,h.value=null,I.value=null},k=()=>{B()};return ce(()=>c.projectId,M=>{M&&n()},{immediate:!0}),Pe(()=>{c.projectId&&n()}),(M,w)=>{var N,z,se,be,fe,le;const W=Fe("router-link");return t(),o("div",bo,[L.value?(t(),o("div",go,[...w[5]||(w[5]=[e("span",{class:"loading-spinner"},null,-1),ue(" Loading board... ",-1)])])):f.value?(t(),o("div",yo,[w[6]||(w[6]=e("span",{class:"error-icon"},"!",-1)),ue(" "+F(f.value)+" ",1),e("button",{class:"retry-btn",onClick:n}," Retry ")])):Y.value?(t(),o("div",So,[(t(!0),o(X,null,Z(Y.value.lanes,x=>{var Ee,_e,Te;return t(),o("div",{key:x.id,class:"kanban-lane",onDragover:de(K=>{var O;return H(K,x.id,((O=x.cards)==null?void 0:O.length)||0)},["prevent"]),onDrop:K=>te(K,x.id)},[e("div",Co,[e("div",wo,[e("h3",Eo,F(x.name),1),x.onEnterTemplateId||x.onEnterPrompt?(t(),o("span",_o,[...w[8]||(w[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)])])):C("",!0)]),e("div",To,[e("span",jo,F(((Ee=x.cards)==null?void 0:Ee.length)||0),1),e("button",{class:"lane-settings-btn",title:"Lane settings",onClick:K=>U(x)},[...w[9]||(w[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,Fo)])]),e("div",Mo,[(t(!0),o(X,null,Z(x.cards,(K,O)=>{var ke,Ae;return t(),o(X,{key:K.id},[E.value==="card"&&r.value===x.id&&a.value===O?(t(),o("div",Ro)):C("",!0),e("div",{class:re(["kanban-card",{dragging:E.value==="card"&&((ke=R.value)==null?void 0:ke.id)===K.id}]),draggable:"true",onDragstart:de(Ce=>b(Ce,K,x.id,O),["stop"]),onDragover:de(Ce=>H(Ce,x.id,O),["prevent","stop"]),onDragend:J},[(Ae=K.sessions)!=null&&Ae[0]?(t(),ne(W,{key:0,to:`/sessions/${K.sessions[0].id}`,class:"card-link"},{default:ge(()=>[e("div",xo,[e("span",{class:re(["card-status",`status-${K.sessions[0].status}`])},F(P(K.sessions[0].status)),3),e("h4",Lo,F(K.sessions[0].name),1)]),e("div",Oo,[K.sessions[0].mode?(t(),o("span",Bo,F(K.sessions[0].mode),1)):C("",!0)])]),_:2},1032,["to"])):C("",!0),e("div",Po,[O>0?(t(),o("button",{key:0,class:"card-reorder-btn",title:"Move card up",onClick:de(Ce=>ie(x.id,O,O-1),["prevent"])},[...w[10]||(w[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,Uo)):C("",!0),O<x.cards.length-1?(t(),o("button",{key:1,class:"card-reorder-btn",title:"Move card down",onClick:de(Ce=>ie(x.id,O,O+1),["prevent"])},[...w[11]||(w[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,Do)):C("",!0)]),e("button",{class:"card-move-btn",title:"Move to lane",onClick:de(Ce=>he(K,x.id),["prevent"])},[...w[12]||(w[12]=[Ue('<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 4 19 4 19 8"></polyline><line x1="14" y1="10" x2="19" y2="4"></line><polyline points="9 20 5 20 5 16"></polyline><line x1="10" y1="14" x2="5" y2="20"></line></svg>',1)])],8,Vo),e("button",{class:"card-remove-btn",title:"Remove from board",onClick:de(Ce=>oe(K.id),["prevent"])}," × ",8,No)],42,Ao)],64)}),128)),E.value==="card"&&r.value===x.id&&a.value===(((_e=x.cards)==null?void 0:_e.length)||0)?(t(),o("div",Io)):C("",!0),(Te=x.cards)!=null&&Te.length?C("",!0):(t(),o("div",Ko,[...w[13]||(w[13]=[e("span",null,"Drop sessions here",-1)])]))]),e("div",Go,[x.onEnterTemplateId?(t(),o("span",Ho," Auto: triggers template on entry ")):x.onEnterPrompt?(t(),o("span",qo," Auto: runs custom prompt on entry ")):C("",!0),e("button",{class:"add-session-btn",onClick:K=>pe(x)}," + Add Session ",8,Wo)])],40,$o)}),128)),e("div",zo,[p.value?(t(),o("div",Yo,[G(e("input",{"onUpdate:modelValue":w[1]||(w[1]=x=>l.value=x),type:"text",placeholder:"Lane name...",class:"add-lane-input",onKeyup:[Ve(me,["enter"]),Ve(ae,["escape"])]},null,544),[[ye,l.value]]),e("div",{class:"add-lane-actions"},[e("button",{class:"add-lane-confirm",onClick:me}," Add "),e("button",{class:"add-lane-cancel",onClick:ae}," Cancel ")])])):(t(),o("button",{key:0,class:"add-lane-btn",onClick:w[0]||(w[0]=x=>p.value=!0)}," + Add Lane "))])])):(t(),o("div",ko,[...w[7]||(w[7]=[e("p",null,"Kanban board is not available for this project.",-1)])])),Q(Je,{"is-open":g.value,"project-id":u.projectId,"lane-id":(N=i.value)==null?void 0:N.id,"lane-name":(z=i.value)==null?void 0:z.name,"onUpdate:isOpen":w[2]||(w[2]=x=>g.value=x),onClose:ve,onAdded:D},null,8,["is-open","project-id","lane-id","lane-name"]),Q(ho,{"is-open":j.value,"project-id":u.projectId,lane:$.value,"onUpdate:isOpen":w[3]||(w[3]=x=>j.value=x),onClose:d,onUpdated:s,onDeleted:y},null,8,["is-open","project-id","lane"]),Q(ot,{"is-open":T.value,"project-id":u.projectId,"card-id":(se=h.value)==null?void 0:se.id,"current-lane-id":I.value,"session-name":(le=(fe=(be=h.value)==null?void 0:be.sessions)==null?void 0:fe[0])==null?void 0:le.name,"onUpdate:isOpen":w[4]||(w[4]=x=>T.value=x),onClose:B,onMoved:k},null,8,["is-open","project-id","card-id","current-lane-id","session-name"])])}}},Qo={class:"container"},Xo={class:"page-header"},Zo={class:"project-title"},ea=["href"],ta={class:"tabs"},sa={class:"tabs-desktop"},na={class:"tabs-left"},oa={class:"tabs-mobile"},aa=["value"],la={key:0,value:"kanban"},ra={key:2,class:"tab-spacer"},ia={key:3},da={key:0,class:"skeleton-list"},ua={key:1,class:"error-message"},ca={key:2,class:"empty-state"},ma={key:3,class:"empty-state"},pa={key:4,class:"session-list"},va={key:5},fa={key:6},ha={class:"modal-content lane-selector-modal"},ba={class:"modal-body"},ga={class:"modal-description"},ya={class:"lane-options"},ka=["onClick"],Sa={class:"lane-option-name"},$a={class:"lane-option-count"},Ca={key:0,class:"empty-lanes"},Va={__name:"SessionListView",setup(u){const c=et(),m=Ke(),p=De(),l=$e(),E=Me(),R=Ge();vt(),R.restoreCollapsedLogState();const _=V(()=>{switch(c.name){case"ArchivedSessions":return"archived";case"ProjectTemplates":return"templates";case"ProjectCommands":return"commands";case"ScheduledSessions":return"scheduled";case"ProjectKanban":return"kanban";default:return"sessions"}});function S(B){const k=c.params.id,M={sessions:`/projects/${k}/sessions`,archived:`/projects/${k}/archived`,templates:`/projects/${k}/templates`,commands:`/projects/${k}/commands`,scheduled:`/projects/${k}/scheduled`,kanban:`/projects/${k}/kanban`};m.push(M[B])}const r=V(()=>c.params.id),{summaries:a,loadingSummaries:g,summaryErrors:i,fetchSummariesBatch:j,retryFetchSummary:$,updateSummary:T,cleanupSummary:h}=mt(),{filteredGroupedSessions:I}=Ye(),{archivedLoaded:Y}=pt(r,{fetchSummariesBatch:j,updateSummary:T,cleanupSummary:h}),L=V(()=>l.scheduledSessions||[]),f=V(()=>l.loadingScheduled||!1);let n=null;ce(()=>l.sessions,()=>{clearTimeout(n),n=setTimeout(()=>{j(l.sessions)},400)}),ce(()=>c.name,async B=>{B==="ArchivedSessions"?await P():B==="ScheduledSessions"&&await H()},{immediate:!0}),ce(()=>l.starredFilter,async(B,k)=>{_.value==="archived"&&Y.value&&B!==k&&(await l.fetchArchivedSessions(r.value,{reset:!0}),j(l.archivedSessions))});async function P(){Y.value||(await l.fetchArchivedSessions(r.value,{reset:!0}),Y.value=!0,j(l.archivedSessions))}async function b(){await l.loadMoreArchivedSessions(r.value),j(l.archivedSessions)}async function H(){await l.fetchScheduledSessions(r.value)}const J=A(!1),q=A(null),ee=A(!1);function te(B){const k=l.sessions.find(M=>M.id===B);q.value=k||{id:B},J.value=!0}async function ie(B){if(q.value){ee.value=!0;try{await l.archiveSession(q.value.id,{cleanup:B}),ae.success("Session archived")}catch(k){ae.error(k.message||"Failed to archive session")}finally{ee.value=!1,J.value=!1,q.value=null}}}function oe(){J.value=!1,q.value=null}async function me(B){try{await l.unarchiveSession(B)}catch(k){console.error("Failed to unarchive session:",k)}}const ae=je(),pe=A(!1),ve=A(null),D=A(!1),U=A(null);function d(B){U.value=B,D.value=!0}function s(){D.value=!1,U.value=null}async function y(B){if(!(!U.value||!B))try{await E.addSessionToBoard(c.params.id,U.value.id,B.id),ae.success(`Session added to "${B.name}"`),s()}catch(k){console.error("Failed to add session to board:",k),ae.error(k.message||"Failed to add session to board")}}function he(){pe.value=!1,ve.value=null}return Pe(()=>{l.restoreStatusFilter(),l.restoreStarredFilter(),l.restoreScheduledFilter();const B=c.params.id;B&&E.fetchBoard(B).catch(k=>{console.warn("Failed to fetch kanban board:",k)})}),Be(()=>{clearTimeout(n)}),(B,k)=>{var w,W,N,z,se,be,fe,le,x,Ee,_e,Te,K;const M=Fe("router-link");return t(),o("div",Qo,[e("div",Xo,[e("div",null,[e("div",Zo,[e("h1",null,F(((w=v(p).currentProject)==null?void 0:w.name)||"Sessions"),1),(W=v(p).currentProject)!=null&&W.repoUrl?(t(),o("a",{key:0,href:v(p).currentProject.repoUrl,target:"_blank",rel:"noopener noreferrer",class:"repo-link",title:"Open repository"},[...k[8]||(k[8]=[e("svg",{class:"repo-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6m4-3l6 6m0 0l-6 6m6-6H9"})],-1)])],8,ea)):C("",!0),Q(M,{to:`/projects/${v(c).params.id}/edit`,class:"settings-link",title:"Project settings"},{default:ge(()=>[...k[9]||(k[9]=[e("svg",{class:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[e("path",{d:"M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"}),e("circle",{cx:"12",cy:"12",r:"3"})],-1)])]),_:1},8,["to"])])]),_.value==="sessions"?(t(),ne(M,{key:0,to:`/projects/${v(c).params.id}/sessions/new`,class:"btn btn-primary mobile-only"},{default:ge(()=>[...k[10]||(k[10]=[ue(" + Session ",-1)])]),_:1},8,["to"])):C("",!0)]),e("div",ta,[e("div",sa,[e("div",na,[e("button",{class:re(["tab",{active:_.value==="sessions"}]),onClick:k[0]||(k[0]=O=>v(m).push(`/projects/${v(c).params.id}/sessions`))}," Sessions ",2),e("button",{class:re(["tab",{active:_.value==="archived"}]),onClick:k[1]||(k[1]=O=>v(m).push(`/projects/${v(c).params.id}/archived`))}," Archived ",2),e("button",{class:re(["tab",{active:_.value==="templates"}]),onClick:k[2]||(k[2]=O=>v(m).push(`/projects/${v(c).params.id}/templates`))}," Templates ",2),e("button",{class:re(["tab",{active:_.value==="commands"}]),onClick:k[3]||(k[3]=O=>v(m).push(`/projects/${v(c).params.id}/commands`))}," Commands ",2),e("button",{class:re(["tab",{active:_.value==="scheduled"}]),onClick:k[4]||(k[4]=O=>v(m).push(`/projects/${v(c).params.id}/scheduled`))}," Scheduled ",2),(N=v(p).currentProject)!=null&&N.kanbanEnabled?(t(),o("button",{key:0,class:re(["tab",{active:_.value==="kanban"}]),onClick:k[5]||(k[5]=O=>v(m).push(`/projects/${v(c).params.id}/kanban`))}," Kanban ",2)):C("",!0)]),_.value==="sessions"?(t(),ne(M,{key:0,to:`/projects/${v(c).params.id}/sessions/new`,class:"btn btn-primary desktop-only","aria-label":"New Session"},{default:ge(()=>[...k[11]||(k[11]=[e("span",{class:"add-session-label-full"},"+ Session",-1),e("span",{class:"add-session-label-short"},"+",-1)])]),_:1},8,["to"])):C("",!0)]),e("div",oa,[e("select",{value:_.value,class:"tab-select",onChange:k[6]||(k[6]=O=>S(O.target.value))},[k[12]||(k[12]=Ue('<option value="sessions"> Sessions </option><option value="archived"> Archived </option><option value="templates"> Templates </option><option value="commands"> Commands </option><option value="scheduled"> Scheduled </option>',5)),(z=v(p).currentProject)!=null&&z.kanbanEnabled?(t(),o("option",la," Kanban ")):C("",!0)],40,aa)])]),_.value==="sessions"?(t(),ne(Ne,{key:0,"show-status-filters":!0,"show-scheduled-filter":!0})):_.value==="archived"?(t(),ne(Ne,{key:1,"show-status-filters":!1,"show-scheduled-filter":!1})):(t(),o("div",ra)),_.value==="sessions"?(t(),o("div",ia,[v(l).loading?(t(),o("div",da,[(t(),o(X,null,Z(3,O=>e("div",{key:O,class:"skeleton card",style:{height:"120px"}})),64))])):v(l).error?(t(),o("div",ua,F(v(l).error),1)):v(l).sessions.length===0?(t(),o("div",ca,[k[14]||(k[14]=e("p",null,"No sessions yet. Start a new session to interact with Claude.",-1)),Q(M,{to:`/projects/${v(c).params.id}/sessions/new`,class:"btn btn-primary"},{default:ge(()=>[...k[13]||(k[13]=[ue(" New Session ",-1)])]),_:1},8,["to"])])):v(I).length===0?(t(),o("div",ma,[...k[15]||(k[15]=[e("p",null,"No sessions match the current filter.",-1)])])):(t(),o("div",pa,[(t(!0),o(X,null,Z(v(I),O=>{var ke;return t(),ne(qe,{key:O.parent.id,session:O.parent,"show-summary":!0,summary:v(a)[O.parent.id],"summary-loading":v(g)[O.parent.id],"summary-error":v(i)[O.parent.id],"show-archive":!0,"kanban-enabled":((ke=v(p).currentProject)==null?void 0:ke.kanbanEnabled)??!0,"pr-url":O.parent.prUrl,"pr-summary":v(a)[O.parent.id],onRetrySummary:v($),onArchive:te,onAddToBoard:d},null,8,["session","summary","summary-loading","summary-error","kanban-enabled","pr-url","pr-summary","onRetrySummary"])}),128))]))])):C("",!0),_.value==="archived"?(t(),ne(Ut,{key:4,summaries:v(a),"loading-summaries":v(g),"summary-errors":v(i),onRetrySummary:v($),onUnarchive:me,onLoadMore:b},null,8,["summaries","loading-summaries","summary-errors","onRetrySummary"])):C("",!0),_.value==="templates"?(t(),o("div",va,[Q(Ys,{"project-id":v(c).params.id},null,8,["project-id"])])):C("",!0),_.value==="commands"?(t(),o("div",fa,[Q(cn,{"project-id":v(c).params.id},null,8,["project-id"])])):C("",!0),_.value==="scheduled"?(t(),ne(ls,{key:7,sessions:L.value,loading:f.value},null,8,["sessions","loading"])):C("",!0),_.value==="kanban"?(t(),ne(Jo,{key:8,"project-id":v(c).params.id},null,8,["project-id"])):C("",!0),Q(Je,{"is-open":pe.value,"project-id":v(c).params.id,"lane-id":(se=ve.value)==null?void 0:se.id,"lane-name":(be=ve.value)==null?void 0:be.name,"onUpdate:isOpen":k[7]||(k[7]=O=>pe.value=O),onClose:he},null,8,["is-open","project-id","lane-id","lane-name"]),D.value?(t(),o("div",{key:9,class:"modal-backdrop",onClick:de(s,["self"])},[e("div",ha,[e("div",{class:"modal-header"},[k[16]||(k[16]=e("h2",{class:"modal-title"}," Add to Kanban Board ",-1)),e("button",{class:"close-btn","aria-label":"Close",onClick:s}," × ")]),e("div",ba,[e("p",ga,' Select a lane to add "'+F((fe=U.value)==null?void 0:fe.name)+'" to: ',1),e("div",ya,[(t(!0),o(X,null,Z((le=v(E).board)==null?void 0:le.lanes,O=>{var ke;return t(),o("button",{key:O.id,class:"lane-option-btn",onClick:Ae=>y(O)},[e("span",Sa,F(O.name),1),e("span",$a,F(((ke=O.cards)==null?void 0:ke.length)||0)+" cards",1)],8,ka)}),128))]),(Ee=(x=v(E).board)==null?void 0:x.lanes)!=null&&Ee.length?C("",!0):(t(),o("p",Ca," No lanes available. Go to the Kanban tab to create lanes first. "))]),e("div",{class:"modal-footer"},[e("button",{class:"btn btn-secondary",onClick:s}," Cancel ")])])])):C("",!0),Q(at,{"is-open":J.value,"session-name":((_e=q.value)==null?void 0:_e.name)||"this session","has-cleanup-script":!!((Te=v(p).currentProject)!=null&&Te.onSessionDeleted&&!((K=q.value)!=null&&K.parentSessionId)),loading:ee.value,onConfirm:ie,onCancel:oe},null,8,["is-open","session-name","has-cleanup-script","loading"])])}}};export{Va as default};
|
package/packages/web/dist/assets/{SessionLogStream-B-w3n4c3.js → SessionLogStream-DHPxkaaK.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{L as Fn,_ as $e,m as De,o as To,N as So,a as E,c as A,b as d,t as _,k as P,E as Ne,e as Ge,F as Pe,h as ie,x as J,l as mt,r as Eo}from"./index-DkLkDgig.js";import{a as gt}from"./ApiClient-Dbs1H78V.js";import{u as Ao}from"./commandButtons-CY87n64i.js";import{u as Lo}from"./sessions-CMby7ij3.js";const x$=Fn("kanban",{state:()=>({board:null,loading:!1,error:null,currentProjectId:null}),getters:{getLaneById:t=>e=>{var n,o;return((o=(n=t.board)==null?void 0:n.lanes)==null?void 0:o.find(r=>r.id===e))||null},getCardById:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>c.id===e);if(s)return s}return null},getCardBySessionId:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)});if(s)return s}return null},isSessionOnBoard:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[])if((o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)}))return!0;return!1},laneNames:t=>{var e,n;return((n=(e=t.board)==null?void 0:e.lanes)==null?void 0:n.map(o=>o.name))||[]},totalCardCount:t=>{var n,o;let e=0;for(const r of((n=t.board)==null?void 0:n.lanes)||[])e+=((o=r.cards)==null?void 0:o.length)||0;return e}},actions:{_findCardLocation(t){var e;if(!this.board)return null;for(const n of this.board.lanes){const o=(e=n.cards)==null?void 0:e.findIndex(r=>r.id===t);if(o!==-1)return{lane:n,cardIndex:o,card:n.cards[o]}}return null},_moveCardOptimistic(t,e){const n=this._findCardLocation(t);if(!n)return null;const{lane:o,cardIndex:r,card:s}=n;o.cards.splice(r,1);const c=this.board.lanes.find(i=>i.id===e);return c&&(c.cards=c.cards||[],c.cards.push({...s,laneId:e})),{sourceLane:o,card:s}},_revertCardMove(t,e,n){var s;const o=t;if(!this.board)return;const r=this.board.lanes.find(c=>c.id===n);r&&(r.cards=((s=r.cards)==null?void 0:s.filter(c=>c.id!==e.id))||[]),o.cards=o.cards||[],o.cards.push(e)},async fetchBoard(t){this.loading=!0,this.error=null,this.currentProjectId=t;try{const e=await gt.getKanbanBoard(t);return this.board=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},reset(){this.board=null,this.loading=!1,this.error=null,this.currentProjectId=null},async createLane(t,e){this.loading=!0,this.error=null;try{return await gt.createKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async updateLane(t,e,n){this.loading=!0,this.error=null;try{return await gt.updateKanbanLane(t,e,n)}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async deleteLane(t,e){this.loading=!0,this.error=null;try{await gt.deleteKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async reorderLanes(t,e){var o;this.error=null;const n=[...((o=this.board)==null?void 0:o.lanes)||[]];if(this.board){const r=new Map(this.board.lanes.map(s=>[s.id,s]));this.board.lanes=e.map(s=>r.get(s)).filter(Boolean)}try{const r=await gt.reorderKanbanLanes(t,e);return this.board=r,r}catch(r){throw this.board&&(this.board.lanes=n),this.error=r.message,r}},async addSessionToBoard(t,e,n){var o;this.loading=!0,this.error=null;try{const r=await gt.createKanbanCard(t,{sessionId:e,laneId:n}),s=(o=this.board)==null?void 0:o.lanes.find(c=>c.id===n);return s&&(s.cards=s.cards||[],s.cards.some(c=>c.id===r.id)||s.cards.push(r)),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async moveCard(t,e,n,o={}){this.error=null;const r=this._moveCardOptimistic(e,n);try{const s=await gt.moveKanbanCard(t,e,{targetLaneId:n,...o}),c=this._findCardLocation(e);return c&&(c.lane.cards[c.cardIndex]=s),s}catch(s){throw r&&this._revertCardMove(r.sourceLane,r.card,n),this.error=s.message,s}},async removeCard(t,e){var n,o;this.loading=!0,this.error=null;try{await gt.deleteKanbanCard(t,e);const r=((n=this.board)==null?void 0:n.lanes)||[];for(const s of r){const c=(o=s.cards)==null?void 0:o.findIndex(i=>i.id===e);if(c!==-1){s.cards.splice(c,1);break}}}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async reorderCards(t,e,n){var s,c;this.error=null;const o=(c=(s=this.board)==null?void 0:s.lanes)==null?void 0:c.find(i=>i.id===e),r=o!=null&&o.cards?[...o.cards]:[];if(o){const i=new Map(o.cards.map(l=>[l.id,l]));o.cards=n.map(l=>i.get(l)).filter(Boolean)}try{await gt.reorderKanbanCards(t,e,n)}catch(i){throw o&&(o.cards=r),this.error=i.message,i}},handleBoardUpdated(t){this.board=t},handleCardAdded(t,e){var o,r;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(s=>s.id===e);n&&(n.cards=n.cards||[],n.cards.some(s=>s.id===t.id)||n.cards.push(t))},handleCardMoved(t,e,n,o){var c,i,l,f,y;const r=(i=(c=this.board)==null?void 0:c.lanes)==null?void 0:i.find(h=>h.id===e);r&&(r.cards=((l=r.cards)==null?void 0:l.filter(h=>h.id!==t))||[]);const s=(y=(f=this.board)==null?void 0:f.lanes)==null?void 0:y.find(h=>h.id===n);s&&(s.cards=s.cards||[],s.cards.some(h=>h.id===t)||s.cards.push(o))},handleCardRemoved(t,e){var o,r,s;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(c=>c.id===e);n&&(n.cards=((s=n.cards)==null?void 0:s.filter(c=>c.id!==t))||[])},handleSessionUpdated(t){var e;if(this.board)for(const n of this.board.lanes)for(const o of n.cards||[]){const r=(e=o.sessions)==null?void 0:e.findIndex(s=>s.id===t.id);if(r!==-1&&r!==void 0){o.sessions[r]={...o.sessions[r],name:t.name,status:t.status,mode:t.mode,costUsd:t.costUsd,starred:t.starred,prUrl:t.prUrl,updatedAt:t.updatedAt};return}}}}}),Do=Fn("sessionStreaming",{state:()=>({partialText:"",partialThinkingBySession:{},_partialThrottleTimer:null,_pendingPartialText:null,sessionWorkLogs:{},sessionPartialText:{},sessionFileCounts:{},collapsedSessionLogs:new Set}),getters:{getPartialThinking:t=>e=>e&&t.partialThinkingBySession[e]||null,getSessionWorkLogs:t=>e=>t.sessionWorkLogs[e]||[],getSessionPartialText:t=>e=>t.sessionPartialText[e]||"",getSessionFileCount:t=>e=>t.sessionFileCounts[e]||0,isSessionLogCollapsed:t=>e=>t.collapsedSessionLogs.has(e)},actions:{setPartialText(t){this._pendingPartialText=t,this._partialThrottleTimer||(this.partialText=t,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},setPartialThinking(t,e){e&&(this.partialThinkingBySession={...this.partialThinkingBySession,[e]:t||null})},clearPartialThinking(t){t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},addSessionWorkLog(t,e){this.sessionWorkLogs[t]||(this.sessionWorkLogs[t]=[]),this.sessionWorkLogs[t].push(e),this.sessionWorkLogs[t].length>15&&(this.sessionWorkLogs[t]=this.sessionWorkLogs[t].slice(-15)),this.sessionWorkLogs={...this.sessionWorkLogs}},setSessionPartialText(t,e){this.sessionPartialText={...this.sessionPartialText,[t]:e||""}},setSessionFileCount(t,e){this.sessionFileCounts={...this.sessionFileCounts,[t]:e}},hydrateSessionState(t,{workLogs:e,partialText:n,thinking:o}={}){if(e!=null&&e.length){const r=this.sessionWorkLogs[t]||[],s=new Set(r.map(i=>i.id)),c=e.filter(i=>!s.has(i.id));c.length&&(this.sessionWorkLogs={...this.sessionWorkLogs,[t]:[...r,...c].slice(-15)})}o&&!this.partialThinkingBySession[t]&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:o}),n&&!this.sessionPartialText[t]&&(this.sessionPartialText={...this.sessionPartialText,[t]:n})},clearSessionStreamingState(t){const{[t]:e,...n}=this.sessionWorkLogs;this.sessionWorkLogs=n;const{[t]:o,...r}=this.sessionPartialText;this.sessionPartialText=r;const{[t]:s,...c}=this.partialThinkingBySession;this.partialThinkingBySession=c;const{[t]:i,...l}=this.sessionFileCounts;this.sessionFileCounts=l},clearSessionEphemeralState(t){const{[t]:e,...n}=this.sessionPartialText;this.sessionPartialText=n;const{[t]:o,...r}=this.partialThinkingBySession;this.partialThinkingBySession=r},toggleSessionLogCollapsed(t){this.collapsedSessionLogs.has(t)?this.collapsedSessionLogs.delete(t):this.collapsedSessionLogs.add(t),this.collapsedSessionLogs=new Set(this.collapsedSessionLogs),this.saveCollapsedLogState()},saveCollapsedLogState(){try{localStorage.setItem("collapsedSessionLogs",JSON.stringify([...this.collapsedSessionLogs]))}catch{}},restoreCollapsedLogState(){try{const t=localStorage.getItem("collapsedSessionLogs");t&&(this.collapsedSessionLogs=new Set(JSON.parse(t)))}catch{}}}});function le(t){"@babel/helpers - typeof";return le=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(t)}function Et(t){if(t===null||t===!0||t===!1)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function R(t,e){if(e.length<t)throw new TypeError(t+" argument"+(t>1?"s":"")+" required, but only "+e.length+" present")}function k(t){R(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||le(t)==="object"&&e==="[object Date]"?new Date(t.getTime()):typeof t=="number"||e==="[object Number]"?new Date(t):((typeof t=="string"||e==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function qo(t,e){R(2,arguments);var n=k(t).getTime(),o=Et(e);return new Date(n+o)}var _o={};function Vt(){return _o}function Ue(t){var e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),t.getTime()-e.getTime()}function oe(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getTime()-o.getTime();return r<0?-1:r>0?1:r}function ko(t){return R(1,arguments),t instanceof Date||le(t)==="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Co(t){if(R(1,arguments),!ko(t)&&typeof t!="number")return!1;var e=k(t);return!isNaN(Number(e))}function xo(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getFullYear()-o.getFullYear(),s=n.getMonth()-o.getMonth();return r*12+s}function Ro(t,e){return R(2,arguments),k(t).getTime()-k(e).getTime()}var Mo={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)}},Oo="trunc";function No(t){return Mo[Oo]}function Po(t){R(1,arguments);var e=k(t);return e.setHours(23,59,59,999),e}function Uo(t){R(1,arguments);var e=k(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function Io(t){R(1,arguments);var e=k(t);return Po(e).getTime()===Uo(e).getTime()}function Ho(t,e){R(2,arguments);var n=k(t),o=k(e),r=oe(n,o),s=Math.abs(xo(n,o)),c;if(s<1)c=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*s);var i=oe(n,o)===-r;Io(k(t))&&s===1&&oe(t,o)===1&&(i=!1),c=r*(s-Number(i))}return c===0?0:c}function Fo(t,e,n){R(2,arguments);var o=Ro(t,e)/1e3;return No()(o)}function Bo(t,e){R(2,arguments);var n=Et(e);return qo(t,-n)}var $o=864e5;function Go(t){R(1,arguments);var e=k(t),n=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var o=e.getTime(),r=n-o;return Math.floor(r/$o)+1}function ue(t){R(1,arguments);var e=1,n=k(t),o=n.getUTCDay(),r=(o<e?7:0)+o-e;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Bn(t){R(1,arguments);var e=k(t),n=e.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=ue(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var c=ue(s);return e.getTime()>=r.getTime()?n+1:e.getTime()>=c.getTime()?n:n-1}function Wo(t){R(1,arguments);var e=Bn(t),n=new Date(0);n.setUTCFullYear(e,0,4),n.setUTCHours(0,0,0,0);var o=ue(n);return o}var Vo=6048e5;function zo(t){R(1,arguments);var e=k(t),n=ue(e).getTime()-Wo(e).getTime();return Math.round(n/Vo)+1}function de(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.weekStartsOn)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.weekStartsOn)!==null&&r!==void 0?r:y.weekStartsOn)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.weekStartsOn)!==null&&n!==void 0?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var D=k(t),w=D.getUTCDay(),v=(w<h?7:0)+w-h;return D.setUTCDate(D.getUTCDate()-v),D.setUTCHours(0,0,0,0),D}function $n(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=k(t),h=y.getUTCFullYear(),D=Vt(),w=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:D.firstWeekContainsDate)!==null&&o!==void 0?o:(l=D.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1);if(!(w>=1&&w<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var v=new Date(0);v.setUTCFullYear(h+1,0,w),v.setUTCHours(0,0,0,0);var b=de(v,e),C=new Date(0);C.setUTCFullYear(h,0,w),C.setUTCHours(0,0,0,0);var X=de(C,e);return y.getTime()>=b.getTime()?h+1:y.getTime()>=X.getTime()?h:h-1}function Yo(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:y.firstWeekContainsDate)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1),D=$n(t,e),w=new Date(0);w.setUTCFullYear(D,0,h),w.setUTCHours(0,0,0,0);var v=de(w,e);return v}var jo=6048e5;function Xo(t,e){R(1,arguments);var n=k(t),o=de(n,e).getTime()-Yo(n,e).getTime();return Math.round(o/jo)+1}function q(t,e){for(var n=t<0?"-":"",o=Math.abs(t).toString();o.length<e;)o="0"+o;return n+o}var bt={y:function(e,n){var o=e.getUTCFullYear(),r=o>0?o:1-o;return q(n==="yy"?r%100:r,n.length)},M:function(e,n){var o=e.getUTCMonth();return n==="M"?String(o+1):q(o+1,2)},d:function(e,n){return q(e.getUTCDate(),n.length)},a:function(e,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.toUpperCase();case"aaa":return o;case"aaaaa":return o[0];case"aaaa":default:return o==="am"?"a.m.":"p.m."}},h:function(e,n){return q(e.getUTCHours()%12||12,n.length)},H:function(e,n){return q(e.getUTCHours(),n.length)},m:function(e,n){return q(e.getUTCMinutes(),n.length)},s:function(e,n){return q(e.getUTCSeconds(),n.length)},S:function(e,n){var o=n.length,r=e.getUTCMilliseconds(),s=Math.floor(r*Math.pow(10,o-3));return q(s,n.length)}},xt={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Zo={G:function(e,n,o){var r=e.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return o.era(r,{width:"abbreviated"});case"GGGGG":return o.era(r,{width:"narrow"});case"GGGG":default:return o.era(r,{width:"wide"})}},y:function(e,n,o){if(n==="yo"){var r=e.getUTCFullYear(),s=r>0?r:1-r;return o.ordinalNumber(s,{unit:"year"})}return bt.y(e,n)},Y:function(e,n,o,r){var s=$n(e,r),c=s>0?s:1-s;if(n==="YY"){var i=c%100;return q(i,2)}return n==="Yo"?o.ordinalNumber(c,{unit:"year"}):q(c,n.length)},R:function(e,n){var o=Bn(e);return q(o,n.length)},u:function(e,n){var o=e.getUTCFullYear();return q(o,n.length)},Q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"Q":return String(r);case"QQ":return q(r,2);case"Qo":return o.ordinalNumber(r,{unit:"quarter"});case"QQQ":return o.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return o.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return o.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"q":return String(r);case"qq":return q(r,2);case"qo":return o.ordinalNumber(r,{unit:"quarter"});case"qqq":return o.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return o.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return o.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,n,o){var r=e.getUTCMonth();switch(n){case"M":case"MM":return bt.M(e,n);case"Mo":return o.ordinalNumber(r+1,{unit:"month"});case"MMM":return o.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return o.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return o.month(r,{width:"wide",context:"formatting"})}},L:function(e,n,o){var r=e.getUTCMonth();switch(n){case"L":return String(r+1);case"LL":return q(r+1,2);case"Lo":return o.ordinalNumber(r+1,{unit:"month"});case"LLL":return o.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return o.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return o.month(r,{width:"wide",context:"standalone"})}},w:function(e,n,o,r){var s=Xo(e,r);return n==="wo"?o.ordinalNumber(s,{unit:"week"}):q(s,n.length)},I:function(e,n,o){var r=zo(e);return n==="Io"?o.ordinalNumber(r,{unit:"week"}):q(r,n.length)},d:function(e,n,o){return n==="do"?o.ordinalNumber(e.getUTCDate(),{unit:"date"}):bt.d(e,n)},D:function(e,n,o){var r=Go(e);return n==="Do"?o.ordinalNumber(r,{unit:"dayOfYear"}):q(r,n.length)},E:function(e,n,o){var r=e.getUTCDay();switch(n){case"E":case"EE":case"EEE":return o.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return o.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return o.day(r,{width:"short",context:"formatting"});case"EEEE":default:return o.day(r,{width:"wide",context:"formatting"})}},e:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return q(c,2);case"eo":return o.ordinalNumber(c,{unit:"day"});case"eee":return o.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return o.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return o.day(s,{width:"short",context:"formatting"});case"eeee":default:return o.day(s,{width:"wide",context:"formatting"})}},c:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return q(c,n.length);case"co":return o.ordinalNumber(c,{unit:"day"});case"ccc":return o.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return o.day(s,{width:"narrow",context:"standalone"});case"cccccc":return o.day(s,{width:"short",context:"standalone"});case"cccc":default:return o.day(s,{width:"wide",context:"standalone"})}},i:function(e,n,o){var r=e.getUTCDay(),s=r===0?7:r;switch(n){case"i":return String(s);case"ii":return q(s,n.length);case"io":return o.ordinalNumber(s,{unit:"day"});case"iii":return o.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return o.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return o.day(r,{width:"short",context:"formatting"});case"iiii":default:return o.day(r,{width:"wide",context:"formatting"})}},a:function(e,n,o){var r=e.getUTCHours(),s=r/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(e,n,o){var r=e.getUTCHours(),s;switch(r===12?s=xt.noon:r===0?s=xt.midnight:s=r/12>=1?"pm":"am",n){case"b":case"bb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(e,n,o){var r=e.getUTCHours(),s;switch(r>=17?s=xt.evening:r>=12?s=xt.afternoon:r>=4?s=xt.morning:s=xt.night,n){case"B":case"BB":case"BBB":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(e,n,o){if(n==="ho"){var r=e.getUTCHours()%12;return r===0&&(r=12),o.ordinalNumber(r,{unit:"hour"})}return bt.h(e,n)},H:function(e,n,o){return n==="Ho"?o.ordinalNumber(e.getUTCHours(),{unit:"hour"}):bt.H(e,n)},K:function(e,n,o){var r=e.getUTCHours()%12;return n==="Ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},k:function(e,n,o){var r=e.getUTCHours();return r===0&&(r=24),n==="ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},m:function(e,n,o){return n==="mo"?o.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):bt.m(e,n)},s:function(e,n,o){return n==="so"?o.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):bt.s(e,n)},S:function(e,n){return bt.S(e,n)},X:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();if(c===0)return"Z";switch(n){case"X":return hn(c);case"XXXX":case"XX":return St(c);case"XXXXX":case"XXX":default:return St(c,":")}},x:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"x":return hn(c);case"xxxx":case"xx":return St(c);case"xxxxx":case"xxx":default:return St(c,":")}},O:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+gn(c,":");case"OOOO":default:return"GMT"+St(c,":")}},z:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+gn(c,":");case"zzzz":default:return"GMT"+St(c,":")}},t:function(e,n,o,r){var s=r._originalDate||e,c=Math.floor(s.getTime()/1e3);return q(c,n.length)},T:function(e,n,o,r){var s=r._originalDate||e,c=s.getTime();return q(c,n.length)}};function gn(t,e){var n=t>0?"-":"+",o=Math.abs(t),r=Math.floor(o/60),s=o%60;if(s===0)return n+String(r);var c=e;return n+String(r)+c+q(s,2)}function hn(t,e){if(t%60===0){var n=t>0?"-":"+";return n+q(Math.abs(t)/60,2)}return St(t,e)}function St(t,e){var n=e||"",o=t>0?"-":"+",r=Math.abs(t),s=q(Math.floor(r/60),2),c=q(r%60,2);return o+s+n+c}var vn=function(e,n){switch(e){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},Gn=function(e,n){switch(e){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},Qo=function(e,n){var o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return vn(e,n);var c;switch(r){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",vn(r,n)).replace("{{time}}",Gn(s,n))},Ko={p:Gn,P:Qo},Jo=["D","DD"],tr=["YY","YYYY"];function er(t){return Jo.indexOf(t)!==-1}function nr(t){return tr.indexOf(t)!==-1}function bn(t,e,n){if(t==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var or={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},rr=function(e,n,o){var r,s=or[e];return typeof s=="string"?r=s:n===1?r=s.one:r=s.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};function qe(t){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.width?String(e.width):t.defaultWidth,o=t.formats[n]||t.formats[t.defaultWidth];return o}}var sr={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ar={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},cr={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ir={date:qe({formats:sr,defaultWidth:"full"}),time:qe({formats:ar,defaultWidth:"full"}),dateTime:qe({formats:cr,defaultWidth:"full"})},lr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ur=function(e,n,o,r){return lr[e]};function It(t){return function(e,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&t.formattingValues){var s=t.defaultFormattingWidth||t.defaultWidth,c=n!=null&&n.width?String(n.width):s;r=t.formattingValues[c]||t.formattingValues[s]}else{var i=t.defaultWidth,l=n!=null&&n.width?String(n.width):t.defaultWidth;r=t.values[l]||t.values[i]}var f=t.argumentCallback?t.argumentCallback(e):e;return r[f]}}var dr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},fr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},pr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},mr={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},gr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},hr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},vr=function(e,n){var o=Number(e),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},br={ordinalNumber:vr,era:It({values:dr,defaultWidth:"wide"}),quarter:It({values:fr,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:It({values:pr,defaultWidth:"wide"}),day:It({values:mr,defaultWidth:"wide"}),dayPeriod:It({values:gr,defaultWidth:"wide",formattingValues:hr,defaultFormattingWidth:"wide"})};function Ht(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],s=e.match(r);if(!s)return null;var c=s[0],i=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(i)?yr(i,function(h){return h.test(c)}):wr(i,function(h){return h.test(c)}),f;f=t.valueCallback?t.valueCallback(l):l,f=n.valueCallback?n.valueCallback(f):f;var y=e.slice(c.length);return{value:f,rest:y}}}function wr(t,e){for(var n in t)if(t.hasOwnProperty(n)&&e(t[n]))return n}function yr(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n}function Tr(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=e.match(t.matchPattern);if(!o)return null;var r=o[0],s=e.match(t.parsePattern);if(!s)return null;var c=t.valueCallback?t.valueCallback(s[0]):s[0];c=n.valueCallback?n.valueCallback(c):c;var i=e.slice(r.length);return{value:c,rest:i}}}var Sr=/^(\d+)(th|st|nd|rd)?/i,Er=/\d+/i,Ar={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Lr={any:[/^b/i,/^(a|c)/i]},Dr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},qr={any:[/1/i,/2/i,/3/i,/4/i]},_r={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},kr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Cr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},xr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Rr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Mr={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Or={ordinalNumber:Tr({matchPattern:Sr,parsePattern:Er,valueCallback:function(e){return parseInt(e,10)}}),era:Ht({matchPatterns:Ar,defaultMatchWidth:"wide",parsePatterns:Lr,defaultParseWidth:"any"}),quarter:Ht({matchPatterns:Dr,defaultMatchWidth:"wide",parsePatterns:qr,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Ht({matchPatterns:_r,defaultMatchWidth:"wide",parsePatterns:kr,defaultParseWidth:"any"}),day:Ht({matchPatterns:Cr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),dayPeriod:Ht({matchPatterns:Rr,defaultMatchWidth:"any",parsePatterns:Mr,defaultParseWidth:"any"})},Wn={code:"en-US",formatDistance:rr,formatLong:ir,formatRelative:ur,localize:br,match:Or,options:{weekStartsOn:0,firstWeekContainsDate:1}},Nr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pr=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ur=/^'([^]*?)'?$/,Ir=/''/g,Hr=/[a-zA-Z]/;function R$(t,e,n){var o,r,s,c,i,l,f,y,h,D,w,v,b,C;R(2,arguments);var X=String(e),Z=Vt(),$=(o=(r=void 0)!==null&&r!==void 0?r:Z.locale)!==null&&o!==void 0?o:Wn,M=Et((s=(c=(i=(l=void 0)!==null&&l!==void 0?l:void 0)!==null&&i!==void 0?i:Z.firstWeekContainsDate)!==null&&c!==void 0?c:(f=Z.locale)===null||f===void 0||(y=f.options)===null||y===void 0?void 0:y.firstWeekContainsDate)!==null&&s!==void 0?s:1);if(!(M>=1&&M<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=Et((h=(D=(w=(v=void 0)!==null&&v!==void 0?v:void 0)!==null&&w!==void 0?w:Z.weekStartsOn)!==null&&D!==void 0?D:(b=Z.locale)===null||b===void 0||(C=b.options)===null||C===void 0?void 0:C.weekStartsOn)!==null&&h!==void 0?h:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!$.localize)throw new RangeError("locale must contain localize property");if(!$.formatLong)throw new RangeError("locale must contain formatLong property");var x=k(t);if(!Co(x))throw new RangeError("Invalid time value");var ot=Ue(x),et=Bo(x,ot),lt={firstWeekContainsDate:M,weekStartsOn:O,locale:$,_originalDate:x},ut=X.match(Pr).map(function(L){var Q=L[0];if(Q==="p"||Q==="P"){var st=Ko[Q];return st(L,$.formatLong)}return L}).join("").match(Nr).map(function(L){if(L==="''")return"'";var Q=L[0];if(Q==="'")return Fr(L);var st=Zo[Q];if(st)return nr(L)&&bn(L,e,String(t)),er(L)&&bn(L,e,String(t)),st(et,L,$.localize,lt);if(Q.match(Hr))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Q+"`");return L}).join("");return ut}function Fr(t){var e=t.match(Ur);return e?e[1].replace(Ir,"'"):t}function Vn(t,e){if(t==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function Br(t){return Vn({},t)}var wn=1440,$r=2520,_e=43200,Gr=86400;function Wr(t,e,n){var o,r;R(2,arguments);var s=Vt(),c=(o=(r=n==null?void 0:n.locale)!==null&&r!==void 0?r:s.locale)!==null&&o!==void 0?o:Wn;if(!c.formatDistance)throw new RangeError("locale must contain formatDistance property");var i=oe(t,e);if(isNaN(i))throw new RangeError("Invalid time value");var l=Vn(Br(n),{addSuffix:!!(n!=null&&n.addSuffix),comparison:i}),f,y;i>0?(f=k(e),y=k(t)):(f=k(t),y=k(e));var h=Fo(y,f),D=(Ue(y)-Ue(f))/1e3,w=Math.round((h-D)/60),v;if(w<2)return n!=null&&n.includeSeconds?h<5?c.formatDistance("lessThanXSeconds",5,l):h<10?c.formatDistance("lessThanXSeconds",10,l):h<20?c.formatDistance("lessThanXSeconds",20,l):h<40?c.formatDistance("halfAMinute",0,l):h<60?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",1,l):w===0?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",w,l);if(w<45)return c.formatDistance("xMinutes",w,l);if(w<90)return c.formatDistance("aboutXHours",1,l);if(w<wn){var b=Math.round(w/60);return c.formatDistance("aboutXHours",b,l)}else{if(w<$r)return c.formatDistance("xDays",1,l);if(w<_e){var C=Math.round(w/wn);return c.formatDistance("xDays",C,l)}else if(w<Gr)return v=Math.round(w/_e),c.formatDistance("aboutXMonths",v,l)}if(v=Ho(y,f),v<12){var X=Math.round(w/_e);return c.formatDistance("xMonths",X,l)}else{var Z=v%12,$=Math.floor(v/12);return Z<3?c.formatDistance("aboutXYears",$,l):Z<9?c.formatDistance("overXYears",$,l):c.formatDistance("almostXYears",$+1,l)}}function M$(t,e){return R(1,arguments),Wr(t,Date.now(),e)}const yn={running:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor"
|
|
1
|
+
import{L as Fn,_ as $e,m as De,o as To,N as So,a as E,c as A,b as d,t as _,k as P,E as Ne,e as Ge,F as Pe,h as ie,x as J,l as mt,r as Eo}from"./index-DxUd3T5E.js";import{a as gt}from"./ApiClient-Dbs1H78V.js";import{u as Ao}from"./commandButtons-aIO6hqZn.js";import{u as Lo}from"./sessions-CH7PeypH.js";const x$=Fn("kanban",{state:()=>({board:null,loading:!1,error:null,currentProjectId:null}),getters:{getLaneById:t=>e=>{var n,o;return((o=(n=t.board)==null?void 0:n.lanes)==null?void 0:o.find(r=>r.id===e))||null},getCardById:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>c.id===e);if(s)return s}return null},getCardBySessionId:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[]){const s=(o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)});if(s)return s}return null},isSessionOnBoard:t=>e=>{var n,o;for(const r of((n=t.board)==null?void 0:n.lanes)||[])if((o=r.cards)==null?void 0:o.find(c=>{var i;return(i=c.sessions)==null?void 0:i.some(l=>l.id===e)}))return!0;return!1},laneNames:t=>{var e,n;return((n=(e=t.board)==null?void 0:e.lanes)==null?void 0:n.map(o=>o.name))||[]},totalCardCount:t=>{var n,o;let e=0;for(const r of((n=t.board)==null?void 0:n.lanes)||[])e+=((o=r.cards)==null?void 0:o.length)||0;return e}},actions:{_findCardLocation(t){var e;if(!this.board)return null;for(const n of this.board.lanes){const o=(e=n.cards)==null?void 0:e.findIndex(r=>r.id===t);if(o!==-1)return{lane:n,cardIndex:o,card:n.cards[o]}}return null},_moveCardOptimistic(t,e){const n=this._findCardLocation(t);if(!n)return null;const{lane:o,cardIndex:r,card:s}=n;o.cards.splice(r,1);const c=this.board.lanes.find(i=>i.id===e);return c&&(c.cards=c.cards||[],c.cards.push({...s,laneId:e})),{sourceLane:o,card:s}},_revertCardMove(t,e,n){var s;const o=t;if(!this.board)return;const r=this.board.lanes.find(c=>c.id===n);r&&(r.cards=((s=r.cards)==null?void 0:s.filter(c=>c.id!==e.id))||[]),o.cards=o.cards||[],o.cards.push(e)},async fetchBoard(t){this.loading=!0,this.error=null,this.currentProjectId=t;try{const e=await gt.getKanbanBoard(t);return this.board=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},reset(){this.board=null,this.loading=!1,this.error=null,this.currentProjectId=null},async createLane(t,e){this.loading=!0,this.error=null;try{return await gt.createKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async updateLane(t,e,n){this.loading=!0,this.error=null;try{return await gt.updateKanbanLane(t,e,n)}catch(o){throw this.error=o.message,o}finally{this.loading=!1}},async deleteLane(t,e){this.loading=!0,this.error=null;try{await gt.deleteKanbanLane(t,e)}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async reorderLanes(t,e){var o;this.error=null;const n=[...((o=this.board)==null?void 0:o.lanes)||[]];if(this.board){const r=new Map(this.board.lanes.map(s=>[s.id,s]));this.board.lanes=e.map(s=>r.get(s)).filter(Boolean)}try{const r=await gt.reorderKanbanLanes(t,e);return this.board=r,r}catch(r){throw this.board&&(this.board.lanes=n),this.error=r.message,r}},async addSessionToBoard(t,e,n){var o;this.loading=!0,this.error=null;try{const r=await gt.createKanbanCard(t,{sessionId:e,laneId:n}),s=(o=this.board)==null?void 0:o.lanes.find(c=>c.id===n);return s&&(s.cards=s.cards||[],s.cards.some(c=>c.id===r.id)||s.cards.push(r)),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async moveCard(t,e,n,o={}){this.error=null;const r=this._moveCardOptimistic(e,n);try{const s=await gt.moveKanbanCard(t,e,{targetLaneId:n,...o}),c=this._findCardLocation(e);return c&&(c.lane.cards[c.cardIndex]=s),s}catch(s){throw r&&this._revertCardMove(r.sourceLane,r.card,n),this.error=s.message,s}},async removeCard(t,e){var n,o;this.loading=!0,this.error=null;try{await gt.deleteKanbanCard(t,e);const r=((n=this.board)==null?void 0:n.lanes)||[];for(const s of r){const c=(o=s.cards)==null?void 0:o.findIndex(i=>i.id===e);if(c!==-1){s.cards.splice(c,1);break}}}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async reorderCards(t,e,n){var s,c;this.error=null;const o=(c=(s=this.board)==null?void 0:s.lanes)==null?void 0:c.find(i=>i.id===e),r=o!=null&&o.cards?[...o.cards]:[];if(o){const i=new Map(o.cards.map(l=>[l.id,l]));o.cards=n.map(l=>i.get(l)).filter(Boolean)}try{await gt.reorderKanbanCards(t,e,n)}catch(i){throw o&&(o.cards=r),this.error=i.message,i}},handleBoardUpdated(t){this.board=t},handleCardAdded(t,e){var o,r;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(s=>s.id===e);n&&(n.cards=n.cards||[],n.cards.some(s=>s.id===t.id)||n.cards.push(t))},handleCardMoved(t,e,n,o){var c,i,l,f,y;const r=(i=(c=this.board)==null?void 0:c.lanes)==null?void 0:i.find(h=>h.id===e);r&&(r.cards=((l=r.cards)==null?void 0:l.filter(h=>h.id!==t))||[]);const s=(y=(f=this.board)==null?void 0:f.lanes)==null?void 0:y.find(h=>h.id===n);s&&(s.cards=s.cards||[],s.cards.some(h=>h.id===t)||s.cards.push(o))},handleCardRemoved(t,e){var o,r,s;const n=(r=(o=this.board)==null?void 0:o.lanes)==null?void 0:r.find(c=>c.id===e);n&&(n.cards=((s=n.cards)==null?void 0:s.filter(c=>c.id!==t))||[])},handleSessionUpdated(t){var e;if(this.board)for(const n of this.board.lanes)for(const o of n.cards||[]){const r=(e=o.sessions)==null?void 0:e.findIndex(s=>s.id===t.id);if(r!==-1&&r!==void 0){o.sessions[r]={...o.sessions[r],name:t.name,status:t.status,mode:t.mode,costUsd:t.costUsd,starred:t.starred,prUrl:t.prUrl,updatedAt:t.updatedAt};return}}}}}),Do=Fn("sessionStreaming",{state:()=>({partialText:"",partialThinkingBySession:{},_partialThrottleTimer:null,_pendingPartialText:null,sessionWorkLogs:{},sessionPartialText:{},sessionFileCounts:{},collapsedSessionLogs:new Set}),getters:{getPartialThinking:t=>e=>e&&t.partialThinkingBySession[e]||null,getSessionWorkLogs:t=>e=>t.sessionWorkLogs[e]||[],getSessionPartialText:t=>e=>t.sessionPartialText[e]||"",getSessionFileCount:t=>e=>t.sessionFileCounts[e]||0,isSessionLogCollapsed:t=>e=>t.collapsedSessionLogs.has(e)},actions:{setPartialText(t){this._pendingPartialText=t,this._partialThrottleTimer||(this.partialText=t,this._partialThrottleTimer=setTimeout(()=>{this._pendingPartialText!==null&&this._pendingPartialText!==this.partialText&&(this.partialText=this._pendingPartialText),this._partialThrottleTimer=null,this._pendingPartialText=null},150))},clearPartialText(){this.partialText="",this._pendingPartialText=null,this._partialThrottleTimer&&(clearTimeout(this._partialThrottleTimer),this._partialThrottleTimer=null)},setPartialThinking(t,e){e&&(this.partialThinkingBySession={...this.partialThinkingBySession,[e]:t||null})},clearPartialThinking(t){t&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:null})},clearAllPartialThinking(){this.partialThinkingBySession={}},addSessionWorkLog(t,e){this.sessionWorkLogs[t]||(this.sessionWorkLogs[t]=[]),this.sessionWorkLogs[t].push(e),this.sessionWorkLogs[t].length>15&&(this.sessionWorkLogs[t]=this.sessionWorkLogs[t].slice(-15)),this.sessionWorkLogs={...this.sessionWorkLogs}},setSessionPartialText(t,e){this.sessionPartialText={...this.sessionPartialText,[t]:e||""}},setSessionFileCount(t,e){this.sessionFileCounts={...this.sessionFileCounts,[t]:e}},hydrateSessionState(t,{workLogs:e,partialText:n,thinking:o}={}){if(e!=null&&e.length){const r=this.sessionWorkLogs[t]||[],s=new Set(r.map(i=>i.id)),c=e.filter(i=>!s.has(i.id));c.length&&(this.sessionWorkLogs={...this.sessionWorkLogs,[t]:[...r,...c].slice(-15)})}o&&!this.partialThinkingBySession[t]&&(this.partialThinkingBySession={...this.partialThinkingBySession,[t]:o}),n&&!this.sessionPartialText[t]&&(this.sessionPartialText={...this.sessionPartialText,[t]:n})},clearSessionStreamingState(t){const{[t]:e,...n}=this.sessionWorkLogs;this.sessionWorkLogs=n;const{[t]:o,...r}=this.sessionPartialText;this.sessionPartialText=r;const{[t]:s,...c}=this.partialThinkingBySession;this.partialThinkingBySession=c;const{[t]:i,...l}=this.sessionFileCounts;this.sessionFileCounts=l},clearSessionEphemeralState(t){const{[t]:e,...n}=this.sessionPartialText;this.sessionPartialText=n;const{[t]:o,...r}=this.partialThinkingBySession;this.partialThinkingBySession=r},toggleSessionLogCollapsed(t){this.collapsedSessionLogs.has(t)?this.collapsedSessionLogs.delete(t):this.collapsedSessionLogs.add(t),this.collapsedSessionLogs=new Set(this.collapsedSessionLogs),this.saveCollapsedLogState()},saveCollapsedLogState(){try{localStorage.setItem("collapsedSessionLogs",JSON.stringify([...this.collapsedSessionLogs]))}catch{}},restoreCollapsedLogState(){try{const t=localStorage.getItem("collapsedSessionLogs");t&&(this.collapsedSessionLogs=new Set(JSON.parse(t)))}catch{}}}});function le(t){"@babel/helpers - typeof";return le=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(t)}function Et(t){if(t===null||t===!0||t===!1)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function R(t,e){if(e.length<t)throw new TypeError(t+" argument"+(t>1?"s":"")+" required, but only "+e.length+" present")}function k(t){R(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||le(t)==="object"&&e==="[object Date]"?new Date(t.getTime()):typeof t=="number"||e==="[object Number]"?new Date(t):((typeof t=="string"||e==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function qo(t,e){R(2,arguments);var n=k(t).getTime(),o=Et(e);return new Date(n+o)}var _o={};function Vt(){return _o}function Ue(t){var e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),t.getTime()-e.getTime()}function oe(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getTime()-o.getTime();return r<0?-1:r>0?1:r}function ko(t){return R(1,arguments),t instanceof Date||le(t)==="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Co(t){if(R(1,arguments),!ko(t)&&typeof t!="number")return!1;var e=k(t);return!isNaN(Number(e))}function xo(t,e){R(2,arguments);var n=k(t),o=k(e),r=n.getFullYear()-o.getFullYear(),s=n.getMonth()-o.getMonth();return r*12+s}function Ro(t,e){return R(2,arguments),k(t).getTime()-k(e).getTime()}var Mo={ceil:Math.ceil,round:Math.round,floor:Math.floor,trunc:function(e){return e<0?Math.ceil(e):Math.floor(e)}},Oo="trunc";function No(t){return Mo[Oo]}function Po(t){R(1,arguments);var e=k(t);return e.setHours(23,59,59,999),e}function Uo(t){R(1,arguments);var e=k(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function Io(t){R(1,arguments);var e=k(t);return Po(e).getTime()===Uo(e).getTime()}function Ho(t,e){R(2,arguments);var n=k(t),o=k(e),r=oe(n,o),s=Math.abs(xo(n,o)),c;if(s<1)c=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-r*s);var i=oe(n,o)===-r;Io(k(t))&&s===1&&oe(t,o)===1&&(i=!1),c=r*(s-Number(i))}return c===0?0:c}function Fo(t,e,n){R(2,arguments);var o=Ro(t,e)/1e3;return No()(o)}function Bo(t,e){R(2,arguments);var n=Et(e);return qo(t,-n)}var $o=864e5;function Go(t){R(1,arguments);var e=k(t),n=e.getTime();e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0);var o=e.getTime(),r=n-o;return Math.floor(r/$o)+1}function ue(t){R(1,arguments);var e=1,n=k(t),o=n.getUTCDay(),r=(o<e?7:0)+o-e;return n.setUTCDate(n.getUTCDate()-r),n.setUTCHours(0,0,0,0),n}function Bn(t){R(1,arguments);var e=k(t),n=e.getUTCFullYear(),o=new Date(0);o.setUTCFullYear(n+1,0,4),o.setUTCHours(0,0,0,0);var r=ue(o),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var c=ue(s);return e.getTime()>=r.getTime()?n+1:e.getTime()>=c.getTime()?n:n-1}function Wo(t){R(1,arguments);var e=Bn(t),n=new Date(0);n.setUTCFullYear(e,0,4),n.setUTCHours(0,0,0,0);var o=ue(n);return o}var Vo=6048e5;function zo(t){R(1,arguments);var e=k(t),n=ue(e).getTime()-Wo(e).getTime();return Math.round(n/Vo)+1}function de(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.weekStartsOn)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.weekStartsOn)!==null&&r!==void 0?r:y.weekStartsOn)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.weekStartsOn)!==null&&n!==void 0?n:0);if(!(h>=0&&h<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var D=k(t),w=D.getUTCDay(),v=(w<h?7:0)+w-h;return D.setUTCDate(D.getUTCDate()-v),D.setUTCHours(0,0,0,0),D}function $n(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=k(t),h=y.getUTCFullYear(),D=Vt(),w=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:D.firstWeekContainsDate)!==null&&o!==void 0?o:(l=D.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1);if(!(w>=1&&w<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var v=new Date(0);v.setUTCFullYear(h+1,0,w),v.setUTCHours(0,0,0,0);var b=de(v,e),C=new Date(0);C.setUTCFullYear(h,0,w),C.setUTCHours(0,0,0,0);var X=de(C,e);return y.getTime()>=b.getTime()?h+1:y.getTime()>=X.getTime()?h:h-1}function Yo(t,e){var n,o,r,s,c,i,l,f;R(1,arguments);var y=Vt(),h=Et((n=(o=(r=(s=e==null?void 0:e.firstWeekContainsDate)!==null&&s!==void 0?s:e==null||(c=e.locale)===null||c===void 0||(i=c.options)===null||i===void 0?void 0:i.firstWeekContainsDate)!==null&&r!==void 0?r:y.firstWeekContainsDate)!==null&&o!==void 0?o:(l=y.locale)===null||l===void 0||(f=l.options)===null||f===void 0?void 0:f.firstWeekContainsDate)!==null&&n!==void 0?n:1),D=$n(t,e),w=new Date(0);w.setUTCFullYear(D,0,h),w.setUTCHours(0,0,0,0);var v=de(w,e);return v}var jo=6048e5;function Xo(t,e){R(1,arguments);var n=k(t),o=de(n,e).getTime()-Yo(n,e).getTime();return Math.round(o/jo)+1}function q(t,e){for(var n=t<0?"-":"",o=Math.abs(t).toString();o.length<e;)o="0"+o;return n+o}var bt={y:function(e,n){var o=e.getUTCFullYear(),r=o>0?o:1-o;return q(n==="yy"?r%100:r,n.length)},M:function(e,n){var o=e.getUTCMonth();return n==="M"?String(o+1):q(o+1,2)},d:function(e,n){return q(e.getUTCDate(),n.length)},a:function(e,n){var o=e.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.toUpperCase();case"aaa":return o;case"aaaaa":return o[0];case"aaaa":default:return o==="am"?"a.m.":"p.m."}},h:function(e,n){return q(e.getUTCHours()%12||12,n.length)},H:function(e,n){return q(e.getUTCHours(),n.length)},m:function(e,n){return q(e.getUTCMinutes(),n.length)},s:function(e,n){return q(e.getUTCSeconds(),n.length)},S:function(e,n){var o=n.length,r=e.getUTCMilliseconds(),s=Math.floor(r*Math.pow(10,o-3));return q(s,n.length)}},xt={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Zo={G:function(e,n,o){var r=e.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return o.era(r,{width:"abbreviated"});case"GGGGG":return o.era(r,{width:"narrow"});case"GGGG":default:return o.era(r,{width:"wide"})}},y:function(e,n,o){if(n==="yo"){var r=e.getUTCFullYear(),s=r>0?r:1-r;return o.ordinalNumber(s,{unit:"year"})}return bt.y(e,n)},Y:function(e,n,o,r){var s=$n(e,r),c=s>0?s:1-s;if(n==="YY"){var i=c%100;return q(i,2)}return n==="Yo"?o.ordinalNumber(c,{unit:"year"}):q(c,n.length)},R:function(e,n){var o=Bn(e);return q(o,n.length)},u:function(e,n){var o=e.getUTCFullYear();return q(o,n.length)},Q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"Q":return String(r);case"QQ":return q(r,2);case"Qo":return o.ordinalNumber(r,{unit:"quarter"});case"QQQ":return o.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return o.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return o.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,n,o){var r=Math.ceil((e.getUTCMonth()+1)/3);switch(n){case"q":return String(r);case"qq":return q(r,2);case"qo":return o.ordinalNumber(r,{unit:"quarter"});case"qqq":return o.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return o.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return o.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,n,o){var r=e.getUTCMonth();switch(n){case"M":case"MM":return bt.M(e,n);case"Mo":return o.ordinalNumber(r+1,{unit:"month"});case"MMM":return o.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return o.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return o.month(r,{width:"wide",context:"formatting"})}},L:function(e,n,o){var r=e.getUTCMonth();switch(n){case"L":return String(r+1);case"LL":return q(r+1,2);case"Lo":return o.ordinalNumber(r+1,{unit:"month"});case"LLL":return o.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return o.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return o.month(r,{width:"wide",context:"standalone"})}},w:function(e,n,o,r){var s=Xo(e,r);return n==="wo"?o.ordinalNumber(s,{unit:"week"}):q(s,n.length)},I:function(e,n,o){var r=zo(e);return n==="Io"?o.ordinalNumber(r,{unit:"week"}):q(r,n.length)},d:function(e,n,o){return n==="do"?o.ordinalNumber(e.getUTCDate(),{unit:"date"}):bt.d(e,n)},D:function(e,n,o){var r=Go(e);return n==="Do"?o.ordinalNumber(r,{unit:"dayOfYear"}):q(r,n.length)},E:function(e,n,o){var r=e.getUTCDay();switch(n){case"E":case"EE":case"EEE":return o.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return o.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return o.day(r,{width:"short",context:"formatting"});case"EEEE":default:return o.day(r,{width:"wide",context:"formatting"})}},e:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"e":return String(c);case"ee":return q(c,2);case"eo":return o.ordinalNumber(c,{unit:"day"});case"eee":return o.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return o.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return o.day(s,{width:"short",context:"formatting"});case"eeee":default:return o.day(s,{width:"wide",context:"formatting"})}},c:function(e,n,o,r){var s=e.getUTCDay(),c=(s-r.weekStartsOn+8)%7||7;switch(n){case"c":return String(c);case"cc":return q(c,n.length);case"co":return o.ordinalNumber(c,{unit:"day"});case"ccc":return o.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return o.day(s,{width:"narrow",context:"standalone"});case"cccccc":return o.day(s,{width:"short",context:"standalone"});case"cccc":default:return o.day(s,{width:"wide",context:"standalone"})}},i:function(e,n,o){var r=e.getUTCDay(),s=r===0?7:r;switch(n){case"i":return String(s);case"ii":return q(s,n.length);case"io":return o.ordinalNumber(s,{unit:"day"});case"iii":return o.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return o.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return o.day(r,{width:"short",context:"formatting"});case"iiii":default:return o.day(r,{width:"wide",context:"formatting"})}},a:function(e,n,o){var r=e.getUTCHours(),s=r/12>=1?"pm":"am";switch(n){case"a":case"aa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(e,n,o){var r=e.getUTCHours(),s;switch(r===12?s=xt.noon:r===0?s=xt.midnight:s=r/12>=1?"pm":"am",n){case"b":case"bb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(e,n,o){var r=e.getUTCHours(),s;switch(r>=17?s=xt.evening:r>=12?s=xt.afternoon:r>=4?s=xt.morning:s=xt.night,n){case"B":case"BB":case"BBB":return o.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return o.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return o.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(e,n,o){if(n==="ho"){var r=e.getUTCHours()%12;return r===0&&(r=12),o.ordinalNumber(r,{unit:"hour"})}return bt.h(e,n)},H:function(e,n,o){return n==="Ho"?o.ordinalNumber(e.getUTCHours(),{unit:"hour"}):bt.H(e,n)},K:function(e,n,o){var r=e.getUTCHours()%12;return n==="Ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},k:function(e,n,o){var r=e.getUTCHours();return r===0&&(r=24),n==="ko"?o.ordinalNumber(r,{unit:"hour"}):q(r,n.length)},m:function(e,n,o){return n==="mo"?o.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):bt.m(e,n)},s:function(e,n,o){return n==="so"?o.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):bt.s(e,n)},S:function(e,n){return bt.S(e,n)},X:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();if(c===0)return"Z";switch(n){case"X":return hn(c);case"XXXX":case"XX":return St(c);case"XXXXX":case"XXX":default:return St(c,":")}},x:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"x":return hn(c);case"xxxx":case"xx":return St(c);case"xxxxx":case"xxx":default:return St(c,":")}},O:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+gn(c,":");case"OOOO":default:return"GMT"+St(c,":")}},z:function(e,n,o,r){var s=r._originalDate||e,c=s.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+gn(c,":");case"zzzz":default:return"GMT"+St(c,":")}},t:function(e,n,o,r){var s=r._originalDate||e,c=Math.floor(s.getTime()/1e3);return q(c,n.length)},T:function(e,n,o,r){var s=r._originalDate||e,c=s.getTime();return q(c,n.length)}};function gn(t,e){var n=t>0?"-":"+",o=Math.abs(t),r=Math.floor(o/60),s=o%60;if(s===0)return n+String(r);var c=e;return n+String(r)+c+q(s,2)}function hn(t,e){if(t%60===0){var n=t>0?"-":"+";return n+q(Math.abs(t)/60,2)}return St(t,e)}function St(t,e){var n=e||"",o=t>0?"-":"+",r=Math.abs(t),s=q(Math.floor(r/60),2),c=q(r%60,2);return o+s+n+c}var vn=function(e,n){switch(e){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},Gn=function(e,n){switch(e){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},Qo=function(e,n){var o=e.match(/(P+)(p+)?/)||[],r=o[1],s=o[2];if(!s)return vn(e,n);var c;switch(r){case"P":c=n.dateTime({width:"short"});break;case"PP":c=n.dateTime({width:"medium"});break;case"PPP":c=n.dateTime({width:"long"});break;case"PPPP":default:c=n.dateTime({width:"full"});break}return c.replace("{{date}}",vn(r,n)).replace("{{time}}",Gn(s,n))},Ko={p:Gn,P:Qo},Jo=["D","DD"],tr=["YY","YYYY"];function er(t){return Jo.indexOf(t)!==-1}function nr(t){return tr.indexOf(t)!==-1}function bn(t,e,n){if(t==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(e,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(t==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(e,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var or={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},rr=function(e,n,o){var r,s=or[e];return typeof s=="string"?r=s:n===1?r=s.one:r=s.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};function qe(t){return function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.width?String(e.width):t.defaultWidth,o=t.formats[n]||t.formats[t.defaultWidth];return o}}var sr={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ar={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},cr={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ir={date:qe({formats:sr,defaultWidth:"full"}),time:qe({formats:ar,defaultWidth:"full"}),dateTime:qe({formats:cr,defaultWidth:"full"})},lr={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ur=function(e,n,o,r){return lr[e]};function It(t){return function(e,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&t.formattingValues){var s=t.defaultFormattingWidth||t.defaultWidth,c=n!=null&&n.width?String(n.width):s;r=t.formattingValues[c]||t.formattingValues[s]}else{var i=t.defaultWidth,l=n!=null&&n.width?String(n.width):t.defaultWidth;r=t.values[l]||t.values[i]}var f=t.argumentCallback?t.argumentCallback(e):e;return r[f]}}var dr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},fr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},pr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},mr={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},gr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},hr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},vr=function(e,n){var o=Number(e),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},br={ordinalNumber:vr,era:It({values:dr,defaultWidth:"wide"}),quarter:It({values:fr,defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:It({values:pr,defaultWidth:"wide"}),day:It({values:mr,defaultWidth:"wide"}),dayPeriod:It({values:gr,defaultWidth:"wide",formattingValues:hr,defaultFormattingWidth:"wide"})};function Ht(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],s=e.match(r);if(!s)return null;var c=s[0],i=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(i)?yr(i,function(h){return h.test(c)}):wr(i,function(h){return h.test(c)}),f;f=t.valueCallback?t.valueCallback(l):l,f=n.valueCallback?n.valueCallback(f):f;var y=e.slice(c.length);return{value:f,rest:y}}}function wr(t,e){for(var n in t)if(t.hasOwnProperty(n)&&e(t[n]))return n}function yr(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n}function Tr(t){return function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=e.match(t.matchPattern);if(!o)return null;var r=o[0],s=e.match(t.parsePattern);if(!s)return null;var c=t.valueCallback?t.valueCallback(s[0]):s[0];c=n.valueCallback?n.valueCallback(c):c;var i=e.slice(r.length);return{value:c,rest:i}}}var Sr=/^(\d+)(th|st|nd|rd)?/i,Er=/\d+/i,Ar={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Lr={any:[/^b/i,/^(a|c)/i]},Dr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},qr={any:[/1/i,/2/i,/3/i,/4/i]},_r={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},kr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Cr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},xr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Rr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Mr={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Or={ordinalNumber:Tr({matchPattern:Sr,parsePattern:Er,valueCallback:function(e){return parseInt(e,10)}}),era:Ht({matchPatterns:Ar,defaultMatchWidth:"wide",parsePatterns:Lr,defaultParseWidth:"any"}),quarter:Ht({matchPatterns:Dr,defaultMatchWidth:"wide",parsePatterns:qr,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:Ht({matchPatterns:_r,defaultMatchWidth:"wide",parsePatterns:kr,defaultParseWidth:"any"}),day:Ht({matchPatterns:Cr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),dayPeriod:Ht({matchPatterns:Rr,defaultMatchWidth:"any",parsePatterns:Mr,defaultParseWidth:"any"})},Wn={code:"en-US",formatDistance:rr,formatLong:ir,formatRelative:ur,localize:br,match:Or,options:{weekStartsOn:0,firstWeekContainsDate:1}},Nr=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pr=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ur=/^'([^]*?)'?$/,Ir=/''/g,Hr=/[a-zA-Z]/;function R$(t,e,n){var o,r,s,c,i,l,f,y,h,D,w,v,b,C;R(2,arguments);var X=String(e),Z=Vt(),$=(o=(r=void 0)!==null&&r!==void 0?r:Z.locale)!==null&&o!==void 0?o:Wn,M=Et((s=(c=(i=(l=void 0)!==null&&l!==void 0?l:void 0)!==null&&i!==void 0?i:Z.firstWeekContainsDate)!==null&&c!==void 0?c:(f=Z.locale)===null||f===void 0||(y=f.options)===null||y===void 0?void 0:y.firstWeekContainsDate)!==null&&s!==void 0?s:1);if(!(M>=1&&M<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var O=Et((h=(D=(w=(v=void 0)!==null&&v!==void 0?v:void 0)!==null&&w!==void 0?w:Z.weekStartsOn)!==null&&D!==void 0?D:(b=Z.locale)===null||b===void 0||(C=b.options)===null||C===void 0?void 0:C.weekStartsOn)!==null&&h!==void 0?h:0);if(!(O>=0&&O<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!$.localize)throw new RangeError("locale must contain localize property");if(!$.formatLong)throw new RangeError("locale must contain formatLong property");var x=k(t);if(!Co(x))throw new RangeError("Invalid time value");var ot=Ue(x),et=Bo(x,ot),lt={firstWeekContainsDate:M,weekStartsOn:O,locale:$,_originalDate:x},ut=X.match(Pr).map(function(L){var Q=L[0];if(Q==="p"||Q==="P"){var st=Ko[Q];return st(L,$.formatLong)}return L}).join("").match(Nr).map(function(L){if(L==="''")return"'";var Q=L[0];if(Q==="'")return Fr(L);var st=Zo[Q];if(st)return nr(L)&&bn(L,e,String(t)),er(L)&&bn(L,e,String(t)),st(et,L,$.localize,lt);if(Q.match(Hr))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Q+"`");return L}).join("");return ut}function Fr(t){var e=t.match(Ur);return e?e[1].replace(Ir,"'"):t}function Vn(t,e){if(t==null)throw new TypeError("assign requires that input parameter not be null or undefined");for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function Br(t){return Vn({},t)}var wn=1440,$r=2520,_e=43200,Gr=86400;function Wr(t,e,n){var o,r;R(2,arguments);var s=Vt(),c=(o=(r=n==null?void 0:n.locale)!==null&&r!==void 0?r:s.locale)!==null&&o!==void 0?o:Wn;if(!c.formatDistance)throw new RangeError("locale must contain formatDistance property");var i=oe(t,e);if(isNaN(i))throw new RangeError("Invalid time value");var l=Vn(Br(n),{addSuffix:!!(n!=null&&n.addSuffix),comparison:i}),f,y;i>0?(f=k(e),y=k(t)):(f=k(t),y=k(e));var h=Fo(y,f),D=(Ue(y)-Ue(f))/1e3,w=Math.round((h-D)/60),v;if(w<2)return n!=null&&n.includeSeconds?h<5?c.formatDistance("lessThanXSeconds",5,l):h<10?c.formatDistance("lessThanXSeconds",10,l):h<20?c.formatDistance("lessThanXSeconds",20,l):h<40?c.formatDistance("halfAMinute",0,l):h<60?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",1,l):w===0?c.formatDistance("lessThanXMinutes",1,l):c.formatDistance("xMinutes",w,l);if(w<45)return c.formatDistance("xMinutes",w,l);if(w<90)return c.formatDistance("aboutXHours",1,l);if(w<wn){var b=Math.round(w/60);return c.formatDistance("aboutXHours",b,l)}else{if(w<$r)return c.formatDistance("xDays",1,l);if(w<_e){var C=Math.round(w/wn);return c.formatDistance("xDays",C,l)}else if(w<Gr)return v=Math.round(w/_e),c.formatDistance("aboutXMonths",v,l)}if(v=Ho(y,f),v<12){var X=Math.round(w/_e);return c.formatDistance("xMonths",X,l)}else{var Z=v%12,$=Math.floor(v/12);return Z<3?c.formatDistance("aboutXYears",$,l):Z<9?c.formatDistance("overXYears",$,l):c.formatDistance("almostXYears",$+1,l)}}function M$(t,e){return R(1,arguments),Wr(t,Date.now(),e)}const yn={running:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor"
|
|
2
2
|
stroke-width="1.5" stroke-linejoin="round">
|
|
3
3
|
<path d="M3,2 L13,2 L8.5,7.5 L13,13 L3,13 L7.5,7.5 Z"/>
|
|
4
4
|
<path d="M4,2.5 L12,2.5 L8.5,6.5 Z" fill="currentColor" opacity="0.5"/>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as f,a as u,c,b as t,d as n,w as i,e as r,E as d,F as S,r as y,x as h,f as g,g as k,s as w,t as x}from"./index-
|
|
1
|
+
import{_ as f,a as u,c,b as t,d as n,w as i,e as r,E as d,F as S,r as y,x as h,f as g,g as k,s as w,t as x}from"./index-DxUd3T5E.js";const V={class:"container"},C={class:"tabs"},T={class:"tabs-desktop"},B={class:"tabs-mobile"},L=["value"],N=["value"],E={class:"tab-content"},F={__name:"SettingsView",setup(M){const v=w(),p=k(),m=[{id:"providers",label:"Model Providers",path:"/settings/providers"},{id:"summary",label:"Summary Settings",path:"/settings/summary"},{id:"general",label:"Settings",path:"/settings/general"},{id:"logs",label:"Logs",path:"/settings/logs"}],e=h(()=>{const a=v.path.split("/");return a[a.length-1]||"providers"});function _(a){p.push(`/settings/${a}`)}return(a,s)=>{const l=g("router-link"),b=g("router-view");return u(),c("div",V,[s[5]||(s[5]=t("h1",null,"Settings",-1)),t("div",C,[t("div",T,[n(l,{to:"/settings/providers",class:d(["tab",{active:e.value==="providers"}])},{default:i(()=>[...s[1]||(s[1]=[r(" Model Providers ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/summary",class:d(["tab",{active:e.value==="summary"}])},{default:i(()=>[...s[2]||(s[2]=[r(" Summary Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/general",class:d(["tab",{active:e.value==="general"}])},{default:i(()=>[...s[3]||(s[3]=[r(" Settings ",-1)])]),_:1},8,["class"]),n(l,{to:"/settings/logs",class:d(["tab",{active:e.value==="logs"}])},{default:i(()=>[...s[4]||(s[4]=[r(" Logs ",-1)])]),_:1},8,["class"])]),t("div",B,[t("select",{value:e.value,class:"tab-select",onChange:s[0]||(s[0]=o=>_(o.target.value))},[(u(),c(S,null,y(m,o=>t("option",{key:o.id,value:o.id},x(o.label),9,N)),64))],40,L)])]),t("div",E,[n(b)])])}}},R=f(F,[["__scopeId","data-v-c1d27cca"]]);export{R as default};
|