circuschief 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/api/git.js +15 -0
  3. package/packages/server/src/api/index.js +13 -2
  4. package/packages/server/src/api/projects-commandButtons.js +96 -0
  5. package/packages/server/src/api/projects-session-helpers.js +51 -33
  6. package/packages/server/src/api/projects.js +109 -113
  7. package/packages/server/src/api/sessions-archive.js +2 -1
  8. package/packages/server/src/api/sessions-lifecycle.js +2 -1
  9. package/packages/server/src/api/sessions-patch.js +2 -0
  10. package/packages/server/src/config.js +6 -0
  11. package/packages/server/src/database.js +1 -0
  12. package/packages/server/src/db/DatabaseManager.js +12 -1
  13. package/packages/server/src/db/ProjectRepository.js +22 -5
  14. package/packages/server/src/db/index.js +4 -0
  15. package/packages/server/src/db/migrations/index.js +7 -0
  16. package/packages/server/src/db/migrations/miscMigrations.js +78 -1
  17. package/packages/server/src/db/migrations/projectsMigrations.js +4 -0
  18. package/packages/server/src/index.js +10 -4
  19. package/packages/server/src/services/gitService.js +42 -6
  20. package/packages/server/src/services/gitSessionSetup.js +4 -3
  21. package/packages/server/src/services/kanbanTriggers.js +1 -0
  22. package/packages/server/src/services/schedulerService.js +32 -0
  23. package/packages/server/src/services/sessionExecution.js +2 -2
  24. package/packages/server/src/services/templateTriggerService.js +1 -0
  25. package/packages/shared/src/contracts/projects.js +4 -1
  26. package/packages/shared/src/types.js +4 -3
  27. package/packages/web/dist/assets/ActiveSessionsView-BVco8bPU.css +1 -0
  28. package/packages/web/dist/assets/ActiveSessionsView-D1daFFvI.js +1 -0
  29. package/packages/web/dist/assets/{AgentLogsView-D4l0N9ZA.js → AgentLogsView-B_NDIx2_.js} +1 -1
  30. package/packages/web/dist/assets/{ApiClient-Dbs1H78V.js → ApiClient-CcqJ-GAv.js} +1 -1
  31. package/packages/web/dist/assets/ArchiveConfirmModal-BHqbCCX2.js +1 -0
  32. package/packages/web/dist/assets/{ArchiveConfirmModal-CQZeuYBz.css → ArchiveConfirmModal-BQ-4gI0R.css} +1 -1
  33. package/packages/web/dist/assets/CommandButtonDetailView-B9crZey8.js +1 -0
  34. package/packages/web/dist/assets/EffortLevelSelector-HuOPegKI.js +1 -0
  35. package/packages/web/dist/assets/{GeneralSettingsView-BqCzCX-z.js → GeneralSettingsView-CzBagrDs.js} +1 -1
  36. package/packages/web/dist/assets/{PathChooser-CXFxb8Oj.js → InputWithButton-Cplkm8Ze.js} +1 -1
  37. package/packages/web/dist/assets/InputWithButton-cYdrEmTs.css +1 -0
  38. package/packages/web/dist/assets/InterpolationHelp-bG_y10VY.js +1 -0
  39. package/packages/web/dist/assets/MarkdownEditor-CXDVTLvp.js +2 -0
  40. package/packages/web/dist/assets/{ModelSelector-DSxaZWBL.js → ModelSelector-CgpqdZtV.js} +1 -1
  41. package/packages/web/dist/assets/{NewSessionView-BsI7JtO9.js → NewSessionView-91V-4qLi.js} +2 -2
  42. package/packages/web/dist/assets/{NewSessionView-Byoi1XdQ.css → NewSessionView-D_Hi7M9g.css} +1 -1
  43. package/packages/web/dist/assets/ProjectEditView-C3bOYnD6.js +1 -0
  44. package/packages/web/dist/assets/ProjectEditView-CpeKj-_w.css +1 -0
  45. package/packages/web/dist/assets/ProjectListView-BEo1p4dO.js +1 -0
  46. package/packages/web/dist/assets/ProjectListView-CumumZN-.css +1 -0
  47. package/packages/web/dist/assets/ProjectNewView-CXGjy3OL.js +1 -0
  48. package/packages/web/dist/assets/ProjectNewView-CaLXfFzd.css +1 -0
  49. package/packages/web/dist/assets/{ProvidersView-CgAr0qms.js → ProvidersView-CMAnPTEX.js} +1 -1
  50. package/packages/web/dist/assets/{ProvidersView-B_QQF3RM.css → ProvidersView-uD8SKWpA.css} +1 -1
  51. package/packages/web/dist/assets/{QuickResponseSettings-uDDpwaza.js → QuickResponseSettings-Ds4X-J-t.js} +1 -1
  52. package/packages/web/dist/assets/{QuickResponsesPanel-D0qs0Fm_.js → QuickResponsesPanel-BY2v23c5.js} +1 -1
  53. package/packages/web/dist/assets/{ResizableTextarea-_kHi1Mg3.js → ResizableTextarea-C2s6_7X9.js} +1 -1
  54. package/packages/web/dist/assets/{SessionCard-Be1-bK0C.js → SessionCard-C7vFzR16.js} +1 -1
  55. package/packages/web/dist/assets/{SessionDetailView-mnGRMaLY.css → SessionDetailView-BL83oPiI.css} +1 -1
  56. package/packages/web/dist/assets/SessionDetailView-D3f0FEV1.js +36 -0
  57. package/packages/web/dist/assets/{SessionFormOptions-DvhOyP6z.js → SessionFormOptions-3LfqiLiR.js} +1 -1
  58. package/packages/web/dist/assets/{SessionListView-CuHsWj85.js → SessionListView-NGW-u434.js} +1 -1
  59. package/packages/web/dist/assets/{SessionLogStream-Da_GniUZ.js → SessionLogStream-NR-AS676.js} +6 -6
  60. package/packages/web/dist/assets/SettingsView-DKINDb2z.js +1 -0
  61. package/packages/web/dist/assets/{SlashCommandWizard-B_8ifpxN.js → SlashCommandWizard-PXipO1yA.js} +1 -1
  62. package/packages/web/dist/assets/{SummarySettingsView-KvgSGHdd.js → SummarySettingsView-D_2bSsYD.js} +1 -1
  63. package/packages/web/dist/assets/{TemplateDetailView-BhOjYIvS.js → TemplateDetailView-C5rbgXwU.js} +1 -1
  64. package/packages/web/dist/assets/{commandButtons-B4OYZP0J.js → commandButtons-D_-wR8zJ.js} +1 -1
  65. package/packages/web/dist/assets/index-BCazaXF8.js +1 -0
  66. package/packages/web/dist/assets/index-BmQRt229.js +3 -0
  67. package/packages/web/dist/assets/index-CCQGqJXX.js +1 -0
  68. package/packages/web/dist/assets/index-CcCiJkwz.js +1 -0
  69. package/packages/web/dist/assets/index-Cs-001Bx.js +1 -0
  70. package/packages/web/dist/assets/index-CxiSnR0R.js +1 -0
  71. package/packages/web/dist/assets/index-D-lQSDZh.js +1 -0
  72. package/packages/web/dist/assets/{index-CSOPrlmq.js → index-D1Lg5reX.js} +3 -3
  73. package/packages/web/dist/assets/index-D9VgH58U.js +1 -0
  74. package/packages/web/dist/assets/index-D9Z6zsGS.js +1 -0
  75. package/packages/web/dist/assets/index-DP2i58hO.js +1 -0
  76. package/packages/web/dist/assets/index-DaL3nu0U.js +1 -0
  77. package/packages/web/dist/assets/index-Dfy1JGZs.js +1 -0
  78. package/packages/web/dist/assets/index-DgIOe3cM.js +1 -0
  79. package/packages/web/dist/assets/index-Dp3Eg3c0.js +1 -0
  80. package/packages/web/dist/assets/{index-BHVnr8MO.js → index-DveLfEiG.js} +2 -2
  81. package/packages/web/dist/assets/index-DyQ22-ut.js +1 -0
  82. package/packages/web/dist/assets/{index-BqVgX_Jy.js → index-Krfrs3sc.js} +3 -3
  83. package/packages/web/dist/assets/index-gylMFbgn.js +7 -0
  84. package/packages/web/dist/assets/{projects-B2du-GX8.js → projects-CMJJca64.js} +1 -1
  85. package/packages/web/dist/assets/{providers-B__J6FX0.js → providers-BCtNZWYw.js} +1 -1
  86. package/packages/web/dist/assets/{sessions-VDrd87yA.js → sessions-CoRS-wuR.js} +1 -1
  87. package/packages/web/dist/assets/{settings-CZ7Pc-Pt.js → settings-BN_W4nwV.js} +1 -1
  88. package/packages/web/dist/assets/useSummaryHelpers-GVg7sMWF.js +1 -0
  89. package/packages/web/dist/index.html +1 -1
  90. package/packages/web/dist/assets/ActiveSessionsView-3697sD8N.js +0 -1
  91. package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +0 -1
  92. package/packages/web/dist/assets/ArchiveConfirmModal-Bv3vGOMM.js +0 -1
  93. package/packages/web/dist/assets/CommandButtonDetailView-Bk_SHxpu.js +0 -1
  94. package/packages/web/dist/assets/EffortLevelSelector-VfBEelvO.js +0 -1
  95. package/packages/web/dist/assets/InterpolationHelp-Dc1Y0T6v.js +0 -1
  96. package/packages/web/dist/assets/MarkdownEditor-DwBQkZbs.js +0 -2
  97. package/packages/web/dist/assets/PathChooser-BoMGzeg2.css +0 -1
  98. package/packages/web/dist/assets/ProjectEditView-Bes4Mib4.js +0 -1
  99. package/packages/web/dist/assets/ProjectEditView-DNwBUNRk.css +0 -1
  100. package/packages/web/dist/assets/ProjectListView-C55H1JHQ.css +0 -1
  101. package/packages/web/dist/assets/ProjectListView-DzEu-C36.js +0 -1
  102. package/packages/web/dist/assets/ProjectNewView-CpgE4R-l.css +0 -1
  103. package/packages/web/dist/assets/ProjectNewView-Cv-iEAgl.js +0 -1
  104. package/packages/web/dist/assets/SessionDetailView-DUYb7qTA.js +0 -36
  105. package/packages/web/dist/assets/SettingsView-5RDCXNUa.js +0 -1
  106. package/packages/web/dist/assets/index-80Qu7W6P.js +0 -1
  107. package/packages/web/dist/assets/index-B8_Iqwcq.js +0 -1
  108. package/packages/web/dist/assets/index-B9JErft2.js +0 -1
  109. package/packages/web/dist/assets/index-BarVnQIj.js +0 -3
  110. package/packages/web/dist/assets/index-BsvRdU0B.js +0 -1
  111. package/packages/web/dist/assets/index-Bugg2M-E.js +0 -1
  112. package/packages/web/dist/assets/index-C2Pjy-M8.js +0 -1
  113. package/packages/web/dist/assets/index-CS_wb_Vj.js +0 -1
  114. package/packages/web/dist/assets/index-ClzNIdCp.js +0 -1
  115. package/packages/web/dist/assets/index-Cn9Ajkye.js +0 -1
  116. package/packages/web/dist/assets/index-CucpVX4L.js +0 -1
  117. package/packages/web/dist/assets/index-D9hZYvW3.js +0 -1
  118. package/packages/web/dist/assets/index-DA0dK_PG.js +0 -7
  119. package/packages/web/dist/assets/index-DgpSn-jR.js +0 -1
  120. package/packages/web/dist/assets/index-HZwIyC9t.js +0 -1
  121. package/packages/web/dist/assets/index-SS3wA2sI.js +0 -1
@@ -1 +1 @@
1
- var b=n=>{throw TypeError(n)};var g=(n,e,s)=>e.has(n)||b("Cannot "+s);var h=(n,e,s)=>(g(n,e,"read from private field"),s?s.call(n):e.get(n)),y=(n,e,s)=>e.has(n)?b("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,s),C=(n,e,s,t)=>(g(n,e,"write to private field"),t?t.call(n,s):e.set(n,s),s),l=(n,e,s)=>(g(n,e,"access private method"),s);function j(n){Object.assign(n.prototype,{async getProjects(){return this._get("/projects")},async getProject(e){return this._get(`/projects/${e}`)},async createProject(e){return this._post("/projects",e)},async updateProject(e,s){return this._put(`/projects/${e}`,s)},async deleteProject(e){return this._delete(`/projects/${e}`)}})}function S(n,e,s){for(const t of s)e[t]!==void 0&&e[t]!==null&&n.append(t,e[t])}function k(n,e,s){for(const t of s)e[t]!==void 0&&e[t]!==null&&n.append(t,String(e[t]))}function P(n,e){const s=new FormData;s.append("prompt",n.prompt),S(s,n,["name","mode","model","effortLevel","gitBranch","gitMode","templateId","parentSessionId"]),k(s,n,["thinkingEnabled","startImmediately","autoRescheduleEnabled","rescheduleOnTokenLimit","rescheduleOnServiceError"]),S(s,n,["scheduledAt","rescheduleDelayMinutes","maxRescheduleCount","maxTotalTokens","rescheduleAtTokenCount"]);for(const t of e)s.append("files",t);return s}function T(n){Object.assign(n.prototype,{async getActiveSessions(){return this._get("/sessions")},async getScheduledSessions(e=null){return this._get(this._buildQueryPath("/sessions/scheduled",{projectId:e||void 0}))},async getProjectSessions(e,s=null,t=null,{limit:r=null,offset:a=0}={}){const o={};return s!==null&&(o.archived=s),t==="starred"?o.starred=!0:t==="unstarred"&&(o.starred=!1),r!==null&&(o.limit=r,o.offset=a),this._get(this._buildQueryPath(`/projects/${e}/sessions`,o))},async createSession(e,s){const{files:t,...r}=s;if(t&&t.length>0){const a=P(r,t);return this._uploadFormData(`/projects/${e}/sessions`,a)}return this._post(`/projects/${e}/sessions`,r)},async getSession(e){return this._get(`/sessions/${e}`)},async getSessionMessages(e){return this._get(`/sessions/${e}/messages`)},async getSessionWorkLogs(e){return this._get(`/sessions/${e}/work-logs`)},async sendMessage(e,s,t=[],r=null){if(console.log(`[MODEL AUDIT - ApiClient] sendMessage called with model: "${r}"`),t&&t.length>0){const a=new FormData;a.append("content",s),r&&a.append("model",r);for(const o of t)a.append("files",o);return this._uploadFormData(`/sessions/${e}/message`,a)}return this._post(`/sessions/${e}/message`,{content:s,model:r})},async stopSession(e){return this._post(`/sessions/${e}/stop`)},async getSessionChanges(e,s="local",t=null){const r={};return s==="branch"&&(r.compareMode="branch",t&&(r.branch=t)),this._get(this._buildQueryPath(`/sessions/${e}/changes`,r))},async getSessionDefaultBranch(e){return this._get(`/sessions/${e}/default-branch`)},async getSessionFilesCount(e){return this._get(`/sessions/${e}/files-count`)},async getSessionFile(e,s){return this._get(`/sessions/${e}/file?path=${encodeURIComponent(s)}`)},async restartSession(e){return this._post(`/sessions/${e}/restart`)},async startSession(e,s,t){const r={};return s!==void 0&&(r.prompt=s),t!==void 0&&(r.model=t),this._post(`/sessions/${e}/start`,Object.keys(r).length>0?r:void 0)},async updateSessionInitialPrompt(e,s){return this._put(`/sessions/${e}/initial-prompt`,{prompt:s})},async updateSession(e,s){return this._patch(`/sessions/${e}`,s)},async updateSessionPendingPrompt(e,s){return this._patch(`/sessions/${e}/pending-prompt`,{pendingPrompt:s})},async deleteSession(e){return this._delete(`/sessions/${e}`)},async archiveSession(e,{cleanup:s=!1}={}){return this._post(`/sessions/${e}/archive`,{cleanup:s})},async unarchiveSession(e){return this._post(`/sessions/${e}/unarchive`)},async toggleSessionStar(e){return this._post(`/sessions/${e}/star`)},async duplicateSession(e,s={}){return this._post(`/sessions/${e}/duplicate`,s)},async scheduleSession(e,s){return this._post(`/sessions/${e}/schedule`,s)}})}function w(n){Object.assign(n.prototype,{async getCanvasItems(e){return this._get(`/sessions/${e}/canvas`)},async getCanvasFileContent(e,s){return this._get(`/sessions/${e}/canvas/file/${encodeURIComponent(s)}/content`)},async getAllCanvasItems(e){return this._get(`/sessions/${e}/canvas/all`)},async uploadCanvasItem(e,s){const t=new FormData;return t.append("file",s),this._uploadFormData(`/sessions/${e}/canvas`,t)},async createCanvasItem(e,s){return this._post(`/sessions/${e}/canvas`,s)},async updateCanvasItem(e,s,t){return this._put(`/sessions/${e}/canvas/${s}`,t)},async deleteCanvasItem(e,s){return this._delete(`/sessions/${e}/canvas/${s}`)},async getCanvasTrash(e){return this._get(`/sessions/${e}/canvas-trash`)},async recoverCanvasItem(e,s){return this._post(`/sessions/${e}/canvas/${s}/recover`)},async recoverCanvasFile(e,s){return this._post(`/sessions/${e}/canvas-trash/recover-file/${encodeURIComponent(s)}`)},async permanentlyDeleteCanvasItem(e,s){return this._delete(`/sessions/${e}/canvas/${s}/permanent`)},async bulkDeleteCanvasItems(e,s){return this._post(`/sessions/${e}/canvas/bulk-delete`,{itemIds:s})},async bulkRecoverCanvasItems(e,s){return this._post(`/sessions/${e}/canvas/bulk-recover`,{itemIds:s})},async bulkPermanentlyDeleteCanvasItems(e,s){return this._delete(`/sessions/${e}/canvas/bulk-delete-permanent`,{itemIds:s})}})}function R(n){Object.assign(n.prototype,{async getProviders(){return this._get("/providers")},async getProvider(e){return this._get(`/providers/${e}`)},async createProvider(e){return this._post("/providers",e)},async updateProvider(e,s){return this._patch(`/providers/${e}`,s)},async deleteProvider(e){return this._delete(`/providers/${e}`)},async testProviderConnection(e){return this._post("/providers/test",e)},async testExistingProvider(e){return this._post(`/providers/${e}/test`)},async getProviderModels(e){return this._get(`/providers/${e}/models`)},async addProviderModel(e,s){return this._post(`/providers/${e}/models`,s)},async updateProviderModel(e,s,t){return this._patch(`/providers/${e}/models/${s}`,t)},async removeProviderModel(e,s){return this._delete(`/providers/${e}/models/${s}`)}})}function A(n){Object.assign(n.prototype,{async getCommandButtons(e){return this._get(`/projects/${e}/command-buttons`)},async createCommandButton(e,s){return this._post(`/projects/${e}/command-buttons`,s)},async getCommandButton(e,s){return this._get(`/projects/${e}/command-buttons/${s}`)},async updateCommandButton(e,s,t){return this._patch(`/projects/${e}/command-buttons/${s}`,t)},async deleteCommandButton(e,s){return this._delete(`/projects/${e}/command-buttons/${s}`)},async runCommandButton(e,s){return this._post(`/sessions/${e}/command-buttons/${s}/run`)},async getActiveRuns(e){return this._get(`/sessions/${e}/command-buttons/runs`)},async getCommandRun(e,s){return this._get(`/sessions/${e}/command-buttons/runs/${s}`)},async getLatestRunsForProject(e){return this._get(`/projects/${e}/command-buttons/latest-runs`)},async killCommandRun(e,s){return this._post(`/sessions/${e}/command-buttons/runs/${s}/kill`)},async deleteCommandRun(e,s){return this._delete(`/sessions/${e}/command-buttons/runs/${s}`)},async deleteAllRunsForButton(e,s){return this._delete(`/sessions/${e}/command-buttons/${s}/runs/all`)}})}function I(n){Object.assign(n.prototype,{async getTokenCostWeights(){return this._get("/settings/token-weights")},async updateTokenCostWeights(e){return this._put("/settings/token-weights",e)},async resetTokenCostWeights(){return this._delete("/settings/token-weights")},async getSummarySettings(){return this._get("/settings/summary")},async updateSummarySettings(e){return this._put("/settings/summary",e)},async resetSummarySettings(){return this._delete("/settings/summary")},async getGeneralSettings(){return this._get("/settings/general")},async updateGeneralSettings(e){return this._put("/settings/general",e)},async resetGeneralSettings(){return this._delete("/settings/general")}})}function O(n){Object.assign(n.prototype,{async getConversations(e){return this._get(`/sessions/${e}/conversations`)},async createConversation(e,s=null){return this._post(`/sessions/${e}/conversations`,{name:s})},async getConversation(e,s){return this._get(`/sessions/${e}/conversations/${s}`)},async updateConversation(e,s,t){return this._patch(`/sessions/${e}/conversations/${s}`,t)},async deleteConversation(e,s){return this._delete(`/sessions/${e}/conversations/${s}`)},async branchConversation(e,s,t){return this._post(`/sessions/${e}/conversations/${s}/branch`,t)},async getConversationMessages(e,s){return this._get(`/sessions/${e}/messages?conversation_id=${s}`)}})}function D(n){Object.assign(n.prototype,{async getGlobalTemplates(){return this._get("/templates")},async createGlobalTemplate(e){return this._post("/templates",e)},async getTemplate(e){return this._get(`/templates/${e}`)},async updateTemplate(e,s){return this._patch(`/templates/${e}`,s)},async deleteTemplate(e){return this._delete(`/templates/${e}`)},async getProjectTemplates(e){return this._get(`/projects/${e}/templates`)},async createProjectTemplate(e,s){return this._post(`/projects/${e}/templates`,s)}})}function F(n){Object.assign(n.prototype,{async getQuickResponses(e){return this._get(`/projects/${e}/quick-responses`)},async getGlobalQuickResponses(){return this._get("/quick-responses/global")},async createQuickResponse(e,s){return this._post(`/projects/${e}/quick-responses`,s)},async updateQuickResponse(e,s){return this._patch(`/quick-responses/${e}`,s)},async deleteQuickResponse(e){return this._delete(`/quick-responses/${e}`)},async reorderQuickResponses(e,s){return this._post(`/projects/${e}/quick-responses/reorder`,s)},async reorderGlobalQuickResponses(e){return this._post("/quick-responses/global/reorder",e)}})}function Q(n){Object.assign(n.prototype,{async getGitStatus(e){return this._get(`/git/projects/${e}/status`)},async getWorktrees(e){return this._get(`/git/projects/${e}/worktrees`)},async getSessionTodos(e,s=null){return this._get(this._buildQueryPath(`/sessions/${e}/todos`,{conversation_id:s||void 0}))},async getSessionSummary(e,s=!1){const t=s?this._buildQueryPath(`/sessions/${e}/summary`,{generate:"true"}):`/sessions/${e}/summary`;try{return await this._get(t)}catch(r){if(r.message.includes("404")||r.message.includes("not found"))return null;throw r}},async getSessionSummariesBatch(e){return!e||e.length===0?{}:this._post("/sessions/summaries/batch",{ids:e})},async generateSessionSummary(e){return this._post(`/sessions/${e}/summary`)},async getWorkflowLatestResponse(e){try{return await this._get(`/sessions/${e}/workflow-latest-response`)}catch(s){if(s.message.includes("404"))return null;throw s}},async getSessionNotes(e){return this._get(`/sessions/${e}/notes`)},async createNote(e,s){return this._post(`/sessions/${e}/notes`,{content:s})},async updateNote(e,s,t){return this._put(`/sessions/${e}/notes/${s}`,{content:t})},async deleteNote(e,s){return this._delete(`/sessions/${e}/notes/${s}`)},async browseDirectory(e=""){return this._get(this._buildQueryPath("/filesystem/browse",{path:e||void 0}))},async getSlashCommands(e){return this._get(`/commands?directory=${encodeURIComponent(e)}`)},async getSlashCommand(e,s){return this._get(`/commands/${encodeURIComponent(s)}?directory=${encodeURIComponent(e)}`)},async executeSlashCommand(e,s,t={}){return this._post(`/commands/${encodeURIComponent(s)}/execute`,{sessionId:e,args:t})},async getAgentCallLogs({limit:e,offset:s,agentType:t,callType:r,status:a,startDate:o,endDate:m,sessionId:_,model:$,sortBy:f,sortOrder:v}={}){const i={};return e!=null&&(i.limit=e),s!=null&&(i.offset=s),t&&(i.agentType=t),r&&(i.callType=r),a&&(i.status=a),o&&(i.startDate=o),m&&(i.endDate=m),_&&(i.sessionId=_),$&&(i.model=$),f&&(i.sortBy=f),v&&(i.sortOrder=v),this._get(this._buildQueryPath("/agent-calls",i))},async getAgentCallFilterOptions(){return this._get("/agent-calls/filter-options")},async deleteAllAgentCallLogs(){return this._delete("/agent-calls")},async getProjectSessionDefaults(e){return this._get(`/projects/${e}/session-defaults`)},async updateProjectSessionDefaults(e,s){return this._post(`/projects/${e}/session-defaults`,s)},async resetProjectSessionDefaults(e){return this._delete(`/projects/${e}/session-defaults`)}})}function B(n){Object.assign(n.prototype,{async getKanbanBoard(e){return this._get(`/projects/${e}/kanban`)},async deleteKanbanBoard(e){return this._delete(`/projects/${e}/kanban`)},async createKanbanLane(e,s){return this._post(`/projects/${e}/kanban/lanes`,s)},async updateKanbanLane(e,s,t){return this._patch(`/projects/${e}/kanban/lanes/${s}`,t)},async deleteKanbanLane(e,s){return this._delete(`/projects/${e}/kanban/lanes/${s}`)},async reorderKanbanLanes(e,s){return this._put(`/projects/${e}/kanban/lanes/reorder`,s)},async createKanbanCard(e,s){return this._post(`/projects/${e}/kanban/cards`,s)},async moveKanbanCard(e,s,t){return this._patch(`/projects/${e}/kanban/cards/${s}/move`,t)},async deleteKanbanCard(e,s){return this._delete(`/projects/${e}/kanban/cards/${s}`)},async reorderKanbanCards(e,s,t){return this._put(`/projects/${e}/kanban/lanes/${s}/cards/reorder`,t)}})}var p,u,d;class c{constructor(e="/api"){y(this,u);y(this,p);C(this,p,e)}get baseUrl(){return h(this,p)}async _uploadFormData(e,s){const t=await fetch(`${h(this,p)}${e}`,{method:"POST",body:s});if(!t.ok){const r=await t.json().catch(()=>({}));throw new Error(r.error||`HTTP ${t.status}`)}return t.json()}_buildQueryPath(e,s){const t=new URLSearchParams;for(const[a,o]of Object.entries(s))o!=null&&t.append(a,o);const r=t.toString();return r?`${e}?${r}`:e}_get(e){return l(this,u,d).call(this,"GET",e)}_post(e,s){return l(this,u,d).call(this,"POST",e,s)}_put(e,s){return l(this,u,d).call(this,"PUT",e,s)}_patch(e,s){return l(this,u,d).call(this,"PATCH",e,s)}_delete(e,s){return l(this,u,d).call(this,"DELETE",e,s)}}p=new WeakMap,u=new WeakSet,d=async function(e,s,t=null){const r={method:e,headers:{"Content-Type":"application/json"}};t&&e!=="GET"&&(r.body=JSON.stringify(t));const a=await fetch(`${h(this,p)}${s}`,r);if(!a.ok){const o=await a.json().catch(()=>({}));throw new Error(o.error||`HTTP ${a.status}`)}return a.status===204?null:a.json()};j(c);T(c);w(c);R(c);A(c);I(c);O(c);D(c);F(c);Q(c);B(c);const M=new c;export{M as a};
1
+ var b=n=>{throw TypeError(n)};var g=(n,e,s)=>e.has(n)||b("Cannot "+s);var h=(n,e,s)=>(g(n,e,"read from private field"),s?s.call(n):e.get(n)),y=(n,e,s)=>e.has(n)?b("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,s),C=(n,e,s,t)=>(g(n,e,"write to private field"),t?t.call(n,s):e.set(n,s),s),l=(n,e,s)=>(g(n,e,"access private method"),s);function j(n){Object.assign(n.prototype,{async getProjects(){return this._get("/projects")},async getProject(e){return this._get(`/projects/${e}`)},async createProject(e){return this._post("/projects",e)},async updateProject(e,s){return this._put(`/projects/${e}`,s)},async deleteProject(e){return this._delete(`/projects/${e}`)}})}function S(n,e,s){for(const t of s)e[t]!==void 0&&e[t]!==null&&n.append(t,e[t])}function k(n,e,s){for(const t of s)e[t]!==void 0&&e[t]!==null&&n.append(t,String(e[t]))}function P(n,e){const s=new FormData;s.append("prompt",n.prompt),S(s,n,["name","mode","model","effortLevel","gitBranch","gitMode","templateId","parentSessionId"]),k(s,n,["thinkingEnabled","startImmediately","autoRescheduleEnabled","rescheduleOnTokenLimit","rescheduleOnServiceError"]),S(s,n,["scheduledAt","rescheduleDelayMinutes","maxRescheduleCount","maxTotalTokens","rescheduleAtTokenCount"]);for(const t of e)s.append("files",t);return s}function T(n){Object.assign(n.prototype,{async getActiveSessions(){return this._get("/sessions")},async getScheduledSessions(e=null){return this._get(this._buildQueryPath("/sessions/scheduled",{projectId:e||void 0}))},async getProjectSessions(e,s=null,t=null,{limit:r=null,offset:a=0}={}){const o={};return s!==null&&(o.archived=s),t==="starred"?o.starred=!0:t==="unstarred"&&(o.starred=!1),r!==null&&(o.limit=r,o.offset=a),this._get(this._buildQueryPath(`/projects/${e}/sessions`,o))},async createSession(e,s){const{files:t,...r}=s;if(t&&t.length>0){const a=P(r,t);return this._uploadFormData(`/projects/${e}/sessions`,a)}return this._post(`/projects/${e}/sessions`,r)},async getSession(e){return this._get(`/sessions/${e}`)},async getSessionMessages(e){return this._get(`/sessions/${e}/messages`)},async getSessionWorkLogs(e){return this._get(`/sessions/${e}/work-logs`)},async sendMessage(e,s,t=[],r=null){if(console.log(`[MODEL AUDIT - ApiClient] sendMessage called with model: "${r}"`),t&&t.length>0){const a=new FormData;a.append("content",s),r&&a.append("model",r);for(const o of t)a.append("files",o);return this._uploadFormData(`/sessions/${e}/message`,a)}return this._post(`/sessions/${e}/message`,{content:s,model:r})},async stopSession(e){return this._post(`/sessions/${e}/stop`)},async getSessionChanges(e,s="local",t=null){const r={};return s==="branch"&&(r.compareMode="branch",t&&(r.branch=t)),this._get(this._buildQueryPath(`/sessions/${e}/changes`,r))},async getSessionDefaultBranch(e){return this._get(`/sessions/${e}/default-branch`)},async getSessionFilesCount(e){return this._get(`/sessions/${e}/files-count`)},async getSessionFile(e,s){return this._get(`/sessions/${e}/file?path=${encodeURIComponent(s)}`)},async restartSession(e){return this._post(`/sessions/${e}/restart`)},async startSession(e,s,t){const r={};return s!==void 0&&(r.prompt=s),t!==void 0&&(r.model=t),this._post(`/sessions/${e}/start`,Object.keys(r).length>0?r:void 0)},async updateSessionInitialPrompt(e,s){return this._put(`/sessions/${e}/initial-prompt`,{prompt:s})},async updateSession(e,s){return this._patch(`/sessions/${e}`,s)},async updateSessionPendingPrompt(e,s){return this._patch(`/sessions/${e}/pending-prompt`,{pendingPrompt:s})},async deleteSession(e){return this._delete(`/sessions/${e}`)},async archiveSession(e,{cleanup:s=!1}={}){return this._post(`/sessions/${e}/archive`,{cleanup:s})},async unarchiveSession(e){return this._post(`/sessions/${e}/unarchive`)},async toggleSessionStar(e){return this._post(`/sessions/${e}/star`)},async duplicateSession(e,s={}){return this._post(`/sessions/${e}/duplicate`,s)},async scheduleSession(e,s){return this._post(`/sessions/${e}/schedule`,s)}})}function w(n){Object.assign(n.prototype,{async getCanvasItems(e){return this._get(`/sessions/${e}/canvas`)},async getCanvasFileContent(e,s){return this._get(`/sessions/${e}/canvas/file/${encodeURIComponent(s)}/content`)},async getAllCanvasItems(e){return this._get(`/sessions/${e}/canvas/all`)},async uploadCanvasItem(e,s){const t=new FormData;return t.append("file",s),this._uploadFormData(`/sessions/${e}/canvas`,t)},async createCanvasItem(e,s){return this._post(`/sessions/${e}/canvas`,s)},async updateCanvasItem(e,s,t){return this._put(`/sessions/${e}/canvas/${s}`,t)},async deleteCanvasItem(e,s){return this._delete(`/sessions/${e}/canvas/${s}`)},async getCanvasTrash(e){return this._get(`/sessions/${e}/canvas-trash`)},async recoverCanvasItem(e,s){return this._post(`/sessions/${e}/canvas/${s}/recover`)},async recoverCanvasFile(e,s){return this._post(`/sessions/${e}/canvas-trash/recover-file/${encodeURIComponent(s)}`)},async permanentlyDeleteCanvasItem(e,s){return this._delete(`/sessions/${e}/canvas/${s}/permanent`)},async bulkDeleteCanvasItems(e,s){return this._post(`/sessions/${e}/canvas/bulk-delete`,{itemIds:s})},async bulkRecoverCanvasItems(e,s){return this._post(`/sessions/${e}/canvas/bulk-recover`,{itemIds:s})},async bulkPermanentlyDeleteCanvasItems(e,s){return this._delete(`/sessions/${e}/canvas/bulk-delete-permanent`,{itemIds:s})}})}function R(n){Object.assign(n.prototype,{async getProviders(){return this._get("/providers")},async getProvider(e){return this._get(`/providers/${e}`)},async createProvider(e){return this._post("/providers",e)},async updateProvider(e,s){return this._patch(`/providers/${e}`,s)},async deleteProvider(e){return this._delete(`/providers/${e}`)},async testProviderConnection(e){return this._post("/providers/test",e)},async testExistingProvider(e){return this._post(`/providers/${e}/test`)},async getProviderModels(e){return this._get(`/providers/${e}/models`)},async addProviderModel(e,s){return this._post(`/providers/${e}/models`,s)},async updateProviderModel(e,s,t){return this._patch(`/providers/${e}/models/${s}`,t)},async removeProviderModel(e,s){return this._delete(`/providers/${e}/models/${s}`)}})}function A(n){Object.assign(n.prototype,{async getCommandButtons(e){return this._get(`/projects/${e}/command-buttons`)},async createCommandButton(e,s){return this._post(`/projects/${e}/command-buttons`,s)},async getCommandButton(e,s){return this._get(`/projects/${e}/command-buttons/${s}`)},async updateCommandButton(e,s,t){return this._patch(`/projects/${e}/command-buttons/${s}`,t)},async deleteCommandButton(e,s){return this._delete(`/projects/${e}/command-buttons/${s}`)},async runCommandButton(e,s){return this._post(`/sessions/${e}/command-buttons/${s}/run`)},async getActiveRuns(e){return this._get(`/sessions/${e}/command-buttons/runs`)},async getCommandRun(e,s){return this._get(`/sessions/${e}/command-buttons/runs/${s}`)},async getLatestRunsForProject(e){return this._get(`/projects/${e}/command-buttons/latest-runs`)},async killCommandRun(e,s){return this._post(`/sessions/${e}/command-buttons/runs/${s}/kill`)},async deleteCommandRun(e,s){return this._delete(`/sessions/${e}/command-buttons/runs/${s}`)},async deleteAllRunsForButton(e,s){return this._delete(`/sessions/${e}/command-buttons/${s}/runs/all`)}})}function I(n){Object.assign(n.prototype,{async getTokenCostWeights(){return this._get("/settings/token-weights")},async updateTokenCostWeights(e){return this._put("/settings/token-weights",e)},async resetTokenCostWeights(){return this._delete("/settings/token-weights")},async getSummarySettings(){return this._get("/settings/summary")},async updateSummarySettings(e){return this._put("/settings/summary",e)},async resetSummarySettings(){return this._delete("/settings/summary")},async getGeneralSettings(){return this._get("/settings/general")},async updateGeneralSettings(e){return this._put("/settings/general",e)},async resetGeneralSettings(){return this._delete("/settings/general")}})}function O(n){Object.assign(n.prototype,{async getConversations(e){return this._get(`/sessions/${e}/conversations`)},async createConversation(e,s=null){return this._post(`/sessions/${e}/conversations`,{name:s})},async getConversation(e,s){return this._get(`/sessions/${e}/conversations/${s}`)},async updateConversation(e,s,t){return this._patch(`/sessions/${e}/conversations/${s}`,t)},async deleteConversation(e,s){return this._delete(`/sessions/${e}/conversations/${s}`)},async branchConversation(e,s,t){return this._post(`/sessions/${e}/conversations/${s}/branch`,t)},async getConversationMessages(e,s){return this._get(`/sessions/${e}/messages?conversation_id=${s}`)}})}function D(n){Object.assign(n.prototype,{async getGlobalTemplates(){return this._get("/templates")},async createGlobalTemplate(e){return this._post("/templates",e)},async getTemplate(e){return this._get(`/templates/${e}`)},async updateTemplate(e,s){return this._patch(`/templates/${e}`,s)},async deleteTemplate(e){return this._delete(`/templates/${e}`)},async getProjectTemplates(e){return this._get(`/projects/${e}/templates`)},async createProjectTemplate(e,s){return this._post(`/projects/${e}/templates`,s)}})}function F(n){Object.assign(n.prototype,{async getQuickResponses(e){return this._get(`/projects/${e}/quick-responses`)},async getGlobalQuickResponses(){return this._get("/quick-responses/global")},async createQuickResponse(e,s){return this._post(`/projects/${e}/quick-responses`,s)},async updateQuickResponse(e,s){return this._patch(`/quick-responses/${e}`,s)},async deleteQuickResponse(e){return this._delete(`/quick-responses/${e}`)},async reorderQuickResponses(e,s){return this._post(`/projects/${e}/quick-responses/reorder`,s)},async reorderGlobalQuickResponses(e){return this._post("/quick-responses/global/reorder",e)}})}function Q(n){Object.assign(n.prototype,{async getGitStatus(e){return this._get(`/git/projects/${e}/status`)},async getWorktrees(e){return this._get(`/git/projects/${e}/worktrees`)},async detectWorktreePath(e){return this._get(this._buildQueryPath("/git/detect-worktree-path",{directory:e}))},async getSessionTodos(e,s=null){return this._get(this._buildQueryPath(`/sessions/${e}/todos`,{conversation_id:s||void 0}))},async getSessionSummary(e,s=!1){const t=s?this._buildQueryPath(`/sessions/${e}/summary`,{generate:"true"}):`/sessions/${e}/summary`;try{return await this._get(t)}catch(r){if(r.message.includes("404")||r.message.includes("not found"))return null;throw r}},async getSessionSummariesBatch(e){return!e||e.length===0?{}:this._post("/sessions/summaries/batch",{ids:e})},async generateSessionSummary(e){return this._post(`/sessions/${e}/summary`)},async getWorkflowLatestResponse(e){try{return await this._get(`/sessions/${e}/workflow-latest-response`)}catch(s){if(s.message.includes("404"))return null;throw s}},async getSessionNotes(e){return this._get(`/sessions/${e}/notes`)},async createNote(e,s){return this._post(`/sessions/${e}/notes`,{content:s})},async updateNote(e,s,t){return this._put(`/sessions/${e}/notes/${s}`,{content:t})},async deleteNote(e,s){return this._delete(`/sessions/${e}/notes/${s}`)},async browseDirectory(e=""){return this._get(this._buildQueryPath("/filesystem/browse",{path:e||void 0}))},async getSlashCommands(e){return this._get(`/commands?directory=${encodeURIComponent(e)}`)},async getSlashCommand(e,s){return this._get(`/commands/${encodeURIComponent(s)}?directory=${encodeURIComponent(e)}`)},async executeSlashCommand(e,s,t={}){return this._post(`/commands/${encodeURIComponent(s)}/execute`,{sessionId:e,args:t})},async getAgentCallLogs({limit:e,offset:s,agentType:t,callType:r,status:a,startDate:o,endDate:m,sessionId:_,model:$,sortBy:f,sortOrder:v}={}){const i={};return e!=null&&(i.limit=e),s!=null&&(i.offset=s),t&&(i.agentType=t),r&&(i.callType=r),a&&(i.status=a),o&&(i.startDate=o),m&&(i.endDate=m),_&&(i.sessionId=_),$&&(i.model=$),f&&(i.sortBy=f),v&&(i.sortOrder=v),this._get(this._buildQueryPath("/agent-calls",i))},async getAgentCallFilterOptions(){return this._get("/agent-calls/filter-options")},async deleteAllAgentCallLogs(){return this._delete("/agent-calls")},async getProjectSessionDefaults(e){return this._get(`/projects/${e}/session-defaults`)},async updateProjectSessionDefaults(e,s){return this._post(`/projects/${e}/session-defaults`,s)},async resetProjectSessionDefaults(e){return this._delete(`/projects/${e}/session-defaults`)}})}function B(n){Object.assign(n.prototype,{async getKanbanBoard(e){return this._get(`/projects/${e}/kanban`)},async deleteKanbanBoard(e){return this._delete(`/projects/${e}/kanban`)},async createKanbanLane(e,s){return this._post(`/projects/${e}/kanban/lanes`,s)},async updateKanbanLane(e,s,t){return this._patch(`/projects/${e}/kanban/lanes/${s}`,t)},async deleteKanbanLane(e,s){return this._delete(`/projects/${e}/kanban/lanes/${s}`)},async reorderKanbanLanes(e,s){return this._put(`/projects/${e}/kanban/lanes/reorder`,s)},async createKanbanCard(e,s){return this._post(`/projects/${e}/kanban/cards`,s)},async moveKanbanCard(e,s,t){return this._patch(`/projects/${e}/kanban/cards/${s}/move`,t)},async deleteKanbanCard(e,s){return this._delete(`/projects/${e}/kanban/cards/${s}`)},async reorderKanbanCards(e,s,t){return this._put(`/projects/${e}/kanban/lanes/${s}/cards/reorder`,t)}})}var p,u,d;class c{constructor(e="/api"){y(this,u);y(this,p);C(this,p,e)}get baseUrl(){return h(this,p)}async _uploadFormData(e,s){const t=await fetch(`${h(this,p)}${e}`,{method:"POST",body:s});if(!t.ok){const r=await t.json().catch(()=>({}));throw new Error(r.error||`HTTP ${t.status}`)}return t.json()}_buildQueryPath(e,s){const t=new URLSearchParams;for(const[a,o]of Object.entries(s))o!=null&&t.append(a,o);const r=t.toString();return r?`${e}?${r}`:e}_get(e){return l(this,u,d).call(this,"GET",e)}_post(e,s){return l(this,u,d).call(this,"POST",e,s)}_put(e,s){return l(this,u,d).call(this,"PUT",e,s)}_patch(e,s){return l(this,u,d).call(this,"PATCH",e,s)}_delete(e,s){return l(this,u,d).call(this,"DELETE",e,s)}}p=new WeakMap,u=new WeakSet,d=async function(e,s,t=null){const r={method:e,headers:{"Content-Type":"application/json"}};t&&e!=="GET"&&(r.body=JSON.stringify(t));const a=await fetch(`${h(this,p)}${s}`,r);if(!a.ok){const o=await a.json().catch(()=>({}));throw new Error(o.error||`HTTP ${a.status}`)}return a.status===204?null:a.json()};j(c);T(c);w(c);R(c);A(c);I(c);O(c);D(c);F(c);Q(c);B(c);const M=new c;export{M as a};
@@ -0,0 +1 @@
1
+ import{_ as L,n as I,l as O,o as N,a,c as d,b as t,m as T,p as q,F as j,r as D,t as C,i as f,f as B,x,$ as K,k as P,G as z,d as U,q as w,v as A,j as F,V as G,y as W,A as H,E as Y,H as J}from"./index-D1Lg5reX.js";import{u as Q,b as X}from"./EffortLevelSelector-HuOPegKI.js";import{M as Z}from"./ModelSelector-CgpqdZtV.js";import{M as ee}from"./SlashCommandWizard-PXipO1yA.js";import{u as te}from"./SessionLogStream-NR-AS676.js";const se={class:"template-selector"},le={class:"selector-wrapper"},ne=["disabled"],oe={key:0,label:"Project Templates"},ae=["value"],de={key:1,label:"Global Templates"},ie=["value"],ue=["disabled"],re={key:0,class:"template-preview"},ce={class:"template-prompt-preview"},me={key:0,class:"chain-indicator"},pe={key:1,class:"selector-help"},ve={key:2,class:"saving-indicator"},be={__name:"TemplateSelector",props:{sessionId:{type:String,required:!1,default:null},projectId:{type:String,required:!0},currentTemplateId:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:templateId"],setup(o,{emit:M}){const n=o,k=M,p=Q(),v=I(n.currentTemplateId),u=I(!1),h=x(()=>p.loading),s=x(()=>p.projectTemplates),g=x(()=>p.globalTemplates),c=x(()=>v.value?p.getTemplateById(v.value):null),$=x(()=>{var S;if(!((S=c.value)!=null&&S.nextTemplateId))return null;const e=[];let i=c.value.nextTemplateId;const m=new Set;for(;i&&!m.has(i);){m.add(i);const l=p.getTemplateById(i);if(l)e.push(l.name),i=l.nextTemplateId;else{e.push("Unknown");break}if(e.length>=3){e.push("...");break}}return e.length>0?`Chains to: ${e.join(" → ")}`:null}),R=K(n,"currentTemplateId");O(R,e=>{v.value=e},{flush:"sync"}),N(()=>{n.projectId&&p.projectTemplates.length===0&&p.globalTemplates.length===0&&p.fetchProjectTemplates(n.projectId)});function _(e,i=100){return e?e.length<=i?e:`${e.substring(0,i)}...`:""}function E(e){var S;const i=((S=e==null?void 0:e.target)==null?void 0:S.value)||v.value,m=i===""?null:i;u.value=!0,k("update:templateId",m),setTimeout(()=>{u.value=!1},1e3)}function r(){v.value=null,E()}return(e,i)=>(a(),d("div",se,[i[3]||(i[3]=t("label",{class:"selector-label"},"Next Template",-1)),t("div",le,[T(t("select",{"onUpdate:modelValue":i[0]||(i[0]=m=>v.value=m),class:"form-input",disabled:o.disabled||h.value,onChange:E},[i[1]||(i[1]=t("option",{value:null}," Select a template to run... ",-1)),s.value.length?(a(),d("optgroup",oe,[(a(!0),d(j,null,D(s.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ae))),128))])):f("",!0),g.value.length?(a(),d("optgroup",de,[(a(!0),d(j,null,D(g.value,m=>(a(),d("option",{key:m.id,value:m.id},C(m.name),9,ie))),128))])):f("",!0)],40,ne),[[q,v.value]]),v.value?(a(),d("button",{key:0,class:"btn-clear",title:"Clear selection",disabled:o.disabled||u.value,onClick:r}," ✕ ",8,ue)):f("",!0)]),c.value?(a(),d("div",re,[t("p",ce,C(_(c.value.prompt)),1),$.value?(a(),d("span",me,C($.value),1)):f("",!0)])):(a(),d("p",pe," When the agent finishes responding, a new session will automatically start using this template. ")),u.value?(a(),d("div",ve,[...i[2]||(i[2]=[t("span",{class:"loading-spinner"},null,-1),B(" Saving... ",-1)])])):f("",!0)]))}},he=L(be,[["__scopeId","data-v-77a4f989"]]),fe={class:"modal-content"},ge={class:"modal-header"},ke={class:"modal-title"},ye={class:"modal-body"},Te={key:0,class:"error-message"},Ce={class:"form-section"},Se={class:"form-group"},$e={class:"form-group"},xe={class:"form-group"},Ie={class:"toggle-switch"},Me={key:1,class:"form-group"},Ee=["min"],we={key:2,class:"form-section"},Re={class:"form-group"},_e={class:"toggle-switch"},Oe={key:3,class:"reschedule-settings"},Ae={class:"form-group"},Le={class:"checkbox-option"},Ve={class:"checkbox-option"},Ue={class:"form-group"},je={class:"form-group"},De={class:"form-group"},Be={class:"form-group"},Ne={key:0,class:"form-group"},Fe={class:"checkbox-option"},qe={class:"form-help"},Pe={class:"modal-footer"},ze=["disabled"],Ge={__name:"SchedulingEditModal",props:{isOpen:{type:Boolean,default:!1},session:{type:Object,default:null}},emits:["close","saved"],setup(o,{emit:M}){const n=o,k=M,p=X(),v=P(),u=I(!1),h=I(null),s=W({scheduledAtLocal:"",model:null,mode:"standard",thinkingEnabled:!1,nextTemplateId:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null,resetRescheduleCount:!1}),g=x(()=>{const r=new Date;return r.setMinutes(r.getMinutes()+1),r.toISOString().slice(0,16)}),c=x(()=>{var r;return((r=n.session)==null?void 0:r.status)==="scheduled"?"Edit Scheduling Settings":"Auto-Reschedule Settings"});function $(){k("close")}function R(r){s.nextTemplateId=r}function _(r){if(!r)return"";const e=new Date(r),i=e.getFullYear(),m=String(e.getMonth()+1).padStart(2,"0"),S=String(e.getDate()).padStart(2,"0"),l=String(e.getHours()).padStart(2,"0"),b=String(e.getMinutes()).padStart(2,"0");return`${i}-${m}-${S}T${l}:${b}`}async function E(){var r;u.value=!0,h.value=null;try{const e={model:s.model,mode:s.mode,thinkingEnabled:s.thinkingEnabled,nextTemplateId:s.nextTemplateId,autoRescheduleEnabled:s.autoRescheduleEnabled,rescheduleDelayMinutes:s.rescheduleDelayMinutes,rescheduleOnTokenLimit:s.rescheduleOnTokenLimit,rescheduleOnServiceError:s.rescheduleOnServiceError,maxRescheduleCount:s.maxRescheduleCount||null,maxTotalTokens:s.maxTotalTokens||null,rescheduleAtTokenCount:s.rescheduleAtTokenCount||null};((r=n.session)==null?void 0:r.status)==="scheduled"&&s.scheduledAtLocal&&(e.scheduledAt=new Date(s.scheduledAtLocal).getTime()),s.resetRescheduleCount&&(e.rescheduleCount=0),await p.updateSessionFields(n.session.id,e),v.success("Settings saved"),k("saved"),$()}catch(e){h.value=e.message||"Failed to save settings",v.error(`Failed to save settings: ${h.value}`)}finally{u.value=!1}}return O(()=>n.isOpen,r=>{r&&n.session&&(h.value=null,s.scheduledAtLocal=_(n.session.scheduledAt),s.model=n.session.model||null,s.mode=n.session.mode||"standard",s.thinkingEnabled=n.session.thinkingEnabled||!1,s.nextTemplateId=n.session.nextTemplateId||null,s.autoRescheduleEnabled=n.session.autoRescheduleEnabled||!1,s.rescheduleDelayMinutes=n.session.rescheduleDelayMinutes||15,s.rescheduleOnTokenLimit=n.session.rescheduleOnTokenLimit??!0,s.rescheduleOnServiceError=n.session.rescheduleOnServiceError??!0,s.maxRescheduleCount=n.session.maxRescheduleCount,s.maxTotalTokens=n.session.maxTotalTokens,s.rescheduleAtTokenCount=n.session.rescheduleAtTokenCount,s.resetRescheduleCount=!1)}),(r,e)=>{var i,m,S;return a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F($,["self"])},[t("div",fe,[t("div",ge,[t("h2",ke,C(c.value),1),t("button",{class:"close-btn","aria-label":"Close",onClick:$}," × ")]),t("div",ye,[h.value?(a(),d("div",Te,C(h.value),1)):f("",!0),t("div",Ce,[e[16]||(e[16]=t("h3",{class:"section-title"}," Session Settings ",-1)),t("div",Se,[e[12]||(e[12]=t("label",{class:"form-label"},"Model",-1)),U(Z,{modelValue:s.model,"onUpdate:modelValue":e[0]||(e[0]=l=>s.model=l)},null,8,["modelValue"])]),t("div",$e,[e[13]||(e[13]=t("label",{class:"form-label"},"Mode",-1)),U(ee,{modelValue:s.mode,"onUpdate:modelValue":e[1]||(e[1]=l=>s.mode=l)},null,8,["modelValue"])]),t("div",xe,[t("label",Ie,[T(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s.thinkingEnabled=l),type:"checkbox"},null,512),[[w,s.thinkingEnabled]]),e[14]||(e[14]=t("span",{class:"toggle-slider"},null,-1)),e[15]||(e[15]=t("span",{class:"toggle-label"},"Extended Thinking",-1))])])]),((i=o.session)==null?void 0:i.status)==="scheduled"?(a(),d("div",Me,[e[17]||(e[17]=t("label",{for:"scheduled-at",class:"form-label"},"Scheduled Time",-1)),T(t("input",{id:"scheduled-at","onUpdate:modelValue":e[3]||(e[3]=l=>s.scheduledAtLocal=l),type:"datetime-local",min:g.value,class:"form-input"},null,8,Ee),[[A,s.scheduledAtLocal]])])):f("",!0),((m=o.session)==null?void 0:m.status)==="scheduled"?(a(),d("div",we,[e[18]||(e[18]=t("h3",{class:"section-title"}," Template Chain ",-1)),U(he,{"session-id":o.session.id,"project-id":o.session.projectId,"current-template-id":s.nextTemplateId,disabled:u.value,"onUpdate:templateId":R},null,8,["session-id","project-id","current-template-id","disabled"])])):f("",!0),t("div",Re,[t("label",_e,[T(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s.autoRescheduleEnabled=l),type:"checkbox"},null,512),[[w,s.autoRescheduleEnabled]]),e[19]||(e[19]=t("span",{class:"toggle-slider"},null,-1)),e[20]||(e[20]=t("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),s.autoRescheduleEnabled?(a(),d("div",Oe,[t("div",Ae,[e[23]||(e[23]=t("p",{class:"settings-label"}," Reschedule Triggers ",-1)),t("label",Le,[T(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>s.rescheduleOnTokenLimit=l),type:"checkbox"},null,512),[[w,s.rescheduleOnTokenLimit]]),e[21]||(e[21]=t("span",null,"Token limit errors",-1))]),t("label",Ve,[T(t("input",{"onUpdate:modelValue":e[6]||(e[6]=l=>s.rescheduleOnServiceError=l),type:"checkbox"},null,512),[[w,s.rescheduleOnServiceError]]),e[22]||(e[22]=t("span",null,"Service unavailability",-1))])]),t("div",Ue,[e[25]||(e[25]=t("label",{class:"form-label"},"Reschedule Delay",-1)),T(t("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>s.rescheduleDelayMinutes=l),class:"form-input"},[...e[24]||(e[24]=[t("option",{value:5}," 5 minutes ",-1),t("option",{value:15}," 15 minutes ",-1),t("option",{value:30}," 30 minutes ",-1),t("option",{value:60}," 1 hour ",-1),t("option",{value:120}," 2 hours ",-1)])],512),[[q,s.rescheduleDelayMinutes,void 0,{number:!0}]])]),t("div",je,[e[26]||(e[26]=t("label",{class:"form-label"},"Max Reschedule Count",-1)),T(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>s.maxRescheduleCount=l),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[A,s.maxRescheduleCount,void 0,{number:!0}]])]),t("div",De,[e[27]||(e[27]=t("label",{class:"form-label"},"Max Total Tokens",-1)),T(t("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>s.maxTotalTokens=l),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[A,s.maxTotalTokens,void 0,{number:!0}]])]),t("div",Be,[e[28]||(e[28]=t("label",{class:"form-label"},"Reschedule At Token Count",-1)),T(t("input",{"onUpdate:modelValue":e[10]||(e[10]=l=>s.rescheduleAtTokenCount=l),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[A,s.rescheduleAtTokenCount,void 0,{number:!0}]])]),((S=o.session)==null?void 0:S.rescheduleCount)>0?(a(),d("div",Ne,[t("label",Fe,[T(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>s.resetRescheduleCount=l),type:"checkbox"},null,512),[[w,s.resetRescheduleCount]]),e[29]||(e[29]=t("span",null,"Reset reschedule count to 0",-1))]),t("p",qe," Current count: "+C(o.session.rescheduleCount),1)])):f("",!0)])):f("",!0)]),t("div",Pe,[t("button",{class:"btn btn-secondary",onClick:$}," Cancel "),t("button",{class:"btn btn-primary",disabled:u.value,onClick:E},C(u.value?"Updating...":"Update"),9,ze)])])])):f("",!0)])}}},Mt=L(Ge,[["__scopeId","data-v-e1ffc2da"]]),He={class:"modal-content",role:"dialog","aria-labelledby":"modal-title"},Ke={class:"modal-body"},We={class:"moving-info"},Ye={class:"moving-session-name"},Je={key:0,class:"empty-state"},Qe={key:1,class:"lanes-list"},Xe={class:"lane-label"},Ze=["name","value","disabled","aria-disabled","aria-label"],et={class:"lane-info"},tt={class:"lane-name"},st={key:0,class:"lane-current-badge"},lt={key:1,class:"lane-automation-icon",title:"Automation enabled"},nt={key:2,class:"automation-option"},ot={class:"checkbox-label"},at={class:"modal-footer"},dt=["disabled"],it=["disabled","aria-label"],ut=["disabled"],rt={__name:"MoveCardModal",props:{isOpen:Boolean,projectId:{type:String,required:!0},cardId:{type:String,required:!0},currentLaneId:{type:String,required:!0},sessionName:{type:String,default:""}},emits:["update:isOpen","close","moved"],setup(o,{emit:M}){const n=o,k=M,p=te(),v=P(),u=I(null),h=I(!0),s=I(!1),g=I(!1),c=x(()=>{var l;return((l=p.board)==null?void 0:l.lanes)||[]}),$=x(()=>n.sessionName?n.sessionName:n.cardId||"Unnamed session"),R=x(()=>u.value&&c.value.find(l=>l.id===u.value)||null),_=x(()=>R.value?r(R.value):!1),E=x(()=>u.value&&u.value!==n.currentLaneId);function r(l){return l?!!(l.onEnterTemplateId||l.onEnterPrompt):!1}function e(){k("update:isOpen",!1),k("close"),u.value=null,h.value=!0}async function i(){if(!(!E.value||!n.cardId)){s.value=!0;try{await p.moveCard(n.projectId,n.cardId,u.value,{runOnEnterTemplate:h.value}),v.success("Card moved successfully"),k("moved"),e()}catch(l){console.error("Failed to move card:",l),v.error(l.message||"Failed to move card")}finally{s.value=!1}}}async function m(){if(confirm("Remove this session from the board?")){g.value=!0;try{await p.removeCard(n.projectId,n.cardId),v.success("Session removed from board"),k("close")}catch(l){console.error("Failed to remove card:",l),v.error(l.message||"Failed to remove session")}finally{g.value=!1}}}O(u,(l,b)=>{if(l!==b){const y=c.value.find(V=>V.id===l);h.value=r(y)}}),O(()=>n.isOpen,l=>{l&&(u.value=null,h.value=!0)});function S(l){l.key==="Escape"&&n.isOpen&&e()}return N(()=>{document.addEventListener("keydown",S)}),H(()=>{document.removeEventListener("keydown",S)}),(l,b)=>o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(e,["self"])},[t("div",He,[t("div",{class:"modal-header"},[b[2]||(b[2]=t("h2",{id:"modal-title",class:"modal-title"}," Move to Lane ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",onClick:e}," × ")]),t("div",Ke,[t("div",We,[b[3]||(b[3]=t("span",{class:"moving-label"},"Moving:",-1)),t("span",Ye,C($.value),1)]),c.value.length===0?(a(),d("div",Je,[...b[4]||(b[4]=[t("p",null,"No lanes available",-1)])])):(a(),d("div",Qe,[(a(!0),d(j,null,D(c.value,y=>(a(),d("div",{key:y.id,class:Y(["lane-row",{"lane-row-current":y.id===o.currentLaneId,"lane-row-disabled":y.id===o.currentLaneId}])},[t("label",Xe,[T(t("input",{"onUpdate:modelValue":b[0]||(b[0]=V=>u.value=V),type:"radio",name:`lane-${o.cardId}`,value:y.id,disabled:y.id===o.currentLaneId,"aria-disabled":y.id===o.currentLaneId,"aria-label":`Move to ${y.name}`},null,8,Ze),[[J,u.value]]),t("span",et,[t("span",tt,C(y.name),1),y.id===o.currentLaneId?(a(),d("span",st,"(current)")):f("",!0),r(y)?(a(),d("span",lt,[...b[5]||(b[5]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)])])):f("",!0)])])],2))),128))])),_.value?(a(),d("div",nt,[t("label",ot,[T(t("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>h.value=y),type:"checkbox","aria-label":"Run automation on entry"},null,512),[[w,h.value]]),b[6]||(b[6]=t("span",null,"Run automation on entry",-1))])])):f("",!0)]),t("div",at,[t("button",{class:"btn btn-secondary",disabled:g.value,onClick:e}," Cancel ",8,dt),t("button",{class:"btn btn-danger",disabled:g.value,"aria-label":`Remove ${$.value} from board`,onClick:m},C(g.value?"Removing...":"Remove from Board"),9,it),t("button",{class:"btn btn-primary",disabled:!E.value||s.value||g.value,"aria-label":"Move card to selected lane",onClick:i},C(s.value?"Moving...":"Move"),9,ut)])])])):f("",!0)}},Et=L(rt,[["__scopeId","data-v-bddc7788"]]),ct={class:"modal-content",role:"dialog","aria-labelledby":"archive-modal-title"},mt={class:"modal-header"},pt=["disabled"],vt={class:"modal-body"},bt={class:"confirm-message"},ht={key:0,class:"cleanup-option"},ft={class:"checkbox-label"},gt={class:"modal-footer"},kt=["disabled"],yt=["disabled"],Tt={__name:"ArchiveConfirmModal",props:{isOpen:{type:Boolean,default:!1},sessionName:{type:String,default:"this session"},hasCleanupScript:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(o,{emit:M}){const n=o,k=M,p=I(!0);O(()=>n.isOpen,g=>{g&&(p.value=!0)});function v(){k("confirm",p.value)}function u(){n.loading||k("cancel")}function h(){n.loading||k("cancel")}function s(g){g.key==="Escape"&&n.isOpen&&!n.loading&&k("cancel")}return N(()=>{document.addEventListener("keydown",s)}),H(()=>{document.removeEventListener("keydown",s)}),(g,c)=>(a(),z(G,{to:"body"},[o.isOpen?(a(),d("div",{key:0,class:"modal-backdrop",onClick:F(h,["self"])},[t("div",ct,[t("div",mt,[c[1]||(c[1]=t("h2",{id:"archive-modal-title",class:"modal-title"}," Archive Session ",-1)),t("button",{class:"close-btn","aria-label":"Close modal",disabled:o.loading,onClick:u}," × ",8,pt)]),t("div",vt,[t("p",bt,[c[2]||(c[2]=B(" Are you sure you want to archive ",-1)),t("strong",null,C(o.sessionName),1),c[3]||(c[3]=B("? ",-1))]),o.hasCleanupScript?(a(),d("div",ht,[t("label",ft,[T(t("input",{"onUpdate:modelValue":c[0]||(c[0]=$=>p.value=$),type:"checkbox","aria-label":"Run git worktree cleanup"},null,512),[[w,p.value]]),c[4]||(c[4]=t("span",null,"Run git worktree cleanup",-1))])])):f("",!0)]),t("div",gt,[t("button",{class:"btn btn-secondary",disabled:o.loading,onClick:u}," Cancel ",8,kt),t("button",{class:"btn btn-primary",disabled:o.loading,onClick:v},C(o.loading?"Archiving...":"Archive"),9,yt)])])])):f("",!0)]))}},wt=L(Tt,[["__scopeId","data-v-140e797f"]]);export{wt as A,Et as M,Mt as S,he as T};
@@ -1 +1 @@
1
- .template-selector[data-v-d206f8db]{padding:1rem;background:var(--color-bg-soft);border-radius:.5rem;margin-bottom:1rem}.selector-label[data-v-d206f8db]{display:block;font-weight:500;font-size:.875rem;margin-bottom:.5rem;color:var(--color-text)}.selector-wrapper[data-v-d206f8db]{display:flex;gap:.5rem;align-items:center}.selector-wrapper .form-input[data-v-d206f8db]{flex:1}.btn-clear[data-v-d206f8db]{background:none;border:1px solid var(--color-border);border-radius:4px;padding:.5rem .75rem;cursor:pointer;color:var(--color-text-soft);font-size:.875rem;transition:all .15s}.btn-clear[data-v-d206f8db]:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-error);border-color:var(--color-error)}.btn-clear[data-v-d206f8db]:disabled{opacity:.5;cursor:not-allowed}.template-preview[data-v-d206f8db]{margin-top:.75rem;padding:.75rem;background:var(--color-background);border-radius:.375rem;border:1px solid var(--color-border)}.template-prompt-preview[data-v-d206f8db]{margin:0;font-size:.8rem;color:var(--color-text-soft);line-height:1.4;font-style:italic}.chain-indicator[data-v-d206f8db]{display:inline-block;margin-top:.5rem;font-size:.75rem;padding:.2rem .5rem;background:var(--color-warning, #f0ad4e);color:#333;border-radius:4px}.selector-help[data-v-d206f8db]{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.saving-indicator[data-v-d206f8db]{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.75rem;color:var(--color-text-soft)}@media (max-width: 480px){.template-selector[data-v-d206f8db]{padding:.75rem}.selector-wrapper[data-v-d206f8db]{flex-direction:column;align-items:stretch}.btn-clear[data-v-d206f8db]{align-self:flex-end}}.modal-backdrop[data-v-e1ffc2da]{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-e1ffc2da]{display:flex;flex-direction:column;background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow:hidden;border:1px solid var(--color-border)}.modal-header[data-v-e1ffc2da]{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-e1ffc2da]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-e1ffc2da]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-e1ffc2da]:hover{color:var(--color-text)}.modal-body[data-v-e1ffc2da]{flex:1;overflow-y:auto;min-height:0;padding:1.5rem}.form-section[data-v-e1ffc2da]{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border)}.form-section[data-v-e1ffc2da]:last-of-type{border-bottom:none}.section-title[data-v-e1ffc2da]{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text)}.error-message[data-v-e1ffc2da]{padding:.75rem;margin-bottom:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.25rem;color:#fca5a5;font-size:.9rem}.modal-footer[data-v-e1ffc2da]{flex-shrink:0;display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-e1ffc2da]{margin-bottom:1rem}.form-label[data-v-e1ffc2da]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-e1ffc2da]{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-e1ffc2da]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-e1ffc2da]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-e1ffc2da]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-e1ffc2da]{display:none}.toggle-slider[data-v-e1ffc2da]{position:relative;display:inline-block;width:2.5rem;height:1.25rem;background-color:var(--color-border);border-radius:1rem;transition:background-color .2s;flex-shrink:0}.toggle-slider[data-v-e1ffc2da]:after{content:"";position:absolute;width:1rem;height:1rem;border-radius:50%;background-color:#fff;top:.125rem;left:.125rem;transition:transform .2s}.toggle-switch input:checked+.toggle-slider[data-v-e1ffc2da]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-e1ffc2da]:after{transform:translate(1.25rem)}.toggle-label[data-v-e1ffc2da]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-e1ffc2da]{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-e1ffc2da]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-e1ffc2da]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-e1ffc2da]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-e1ffc2da]{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-e1ffc2da]{background:var(--color-primary);color:#fff}.btn-primary[data-v-e1ffc2da]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-e1ffc2da]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-e1ffc2da]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-e1ffc2da]:hover{background:var(--color-background-secondary)}.modal-backdrop[data-v-bddc7788]{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-bddc7788]{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-bddc7788]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-bddc7788]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-bddc7788]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-bddc7788]:hover{color:var(--color-text)}.modal-body[data-v-bddc7788]{padding:1.5rem;flex:1;overflow-y:auto}.modal-footer[data-v-bddc7788]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.moving-info[data-v-bddc7788]{margin-bottom:1.5rem;padding:.75rem;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border-radius:.25rem}.moving-label[data-v-bddc7788]{display:block;font-size:.75rem;color:var(--color-text-soft);margin-bottom:.25rem}.moving-session-name[data-v-bddc7788]{display:block;font-size:.875rem;font-weight:500;color:var(--color-text)}.empty-state[data-v-bddc7788]{display:flex;align-items:center;justify-content:center;padding:2rem;color:var(--color-text-soft)}.lanes-list[data-v-bddc7788]{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.lane-row[data-v-bddc7788]{border:1px solid var(--color-border);border-radius:.25rem;transition:background-color .15s,border-color .15s}.lane-row[data-v-bddc7788]:not(.lane-row-disabled):hover{background:var(--color-bg-soft);border-color:var(--color-primary)}.lane-row-current[data-v-bddc7788]{opacity:.6}.lane-label[data-v-bddc7788]{display:flex;align-items:center;padding:.75rem;cursor:pointer;gap:.75rem;width:100%}.lane-label input[type=radio][data-v-bddc7788]{flex-shrink:0;width:1rem;height:1rem;cursor:pointer}.lane-label input[type=radio][data-v-bddc7788]:disabled{cursor:not-allowed}.lane-info[data-v-bddc7788]{display:flex;align-items:center;gap:.5rem;flex:1}.lane-name[data-v-bddc7788]{font-size:.875rem;font-weight:500;color:var(--color-text)}.lane-current-badge[data-v-bddc7788]{font-size:.75rem;color:var(--color-text-soft);font-style:italic}.lane-automation-icon[data-v-bddc7788]{color:#f59e0b;flex-shrink:0;display:flex;align-items:center}.automation-option[data-v-bddc7788]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.checkbox-label[data-v-bddc7788]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text)}.checkbox-label input[type=checkbox][data-v-bddc7788]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-bddc7788]{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-bddc7788]{background:var(--color-primary);color:#fff}.btn-primary[data-v-bddc7788]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-bddc7788]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-bddc7788]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-bddc7788]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-bddc7788]{background:#ef4444;color:#fff}.btn-danger[data-v-bddc7788]:hover:not(:disabled){background:#dc2626}.btn-danger[data-v-bddc7788]:disabled{opacity:.5;cursor:not-allowed}.modal-backdrop[data-v-58eef4e8]{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-58eef4e8]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:450px;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--color-border)}.modal-header[data-v-58eef4e8]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-58eef4e8]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-58eef4e8]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-58eef4e8]:hover{color:var(--color-text)}.modal-body[data-v-58eef4e8]{padding:1.5rem}.confirm-message[data-v-58eef4e8]{margin:0;font-size:.9rem;color:var(--color-text);line-height:1.5}.cleanup-option[data-v-58eef4e8]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.checkbox-label[data-v-58eef4e8]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text)}.checkbox-label input[type=checkbox][data-v-58eef4e8]{width:1rem;height:1rem;cursor:pointer}.modal-footer[data-v-58eef4e8]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.btn[data-v-58eef4e8]{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-58eef4e8]{background:var(--color-primary);color:#fff}.btn-primary[data-v-58eef4e8]:hover{opacity:.9}.btn-secondary[data-v-58eef4e8]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-58eef4e8]:hover{background:var(--color-background-secondary)}.btn[data-v-58eef4e8]:disabled{opacity:.5;cursor:not-allowed}.close-btn[data-v-58eef4e8]:disabled{opacity:.5;cursor:not-allowed}
1
+ .template-selector[data-v-77a4f989]{padding:1rem;background:var(--color-bg-soft);border-radius:.5rem;margin-bottom:1rem}.selector-label[data-v-77a4f989]{display:block;font-weight:500;font-size:.875rem;margin-bottom:.5rem;color:var(--color-text)}.selector-wrapper[data-v-77a4f989]{display:flex;gap:.5rem;align-items:center}.selector-wrapper .form-input[data-v-77a4f989]{flex:1}.btn-clear[data-v-77a4f989]{background:none;border:1px solid var(--color-border);border-radius:4px;padding:.5rem .75rem;cursor:pointer;color:var(--color-text-soft);font-size:.875rem;transition:all .15s}.btn-clear[data-v-77a4f989]:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-error);border-color:var(--color-error)}.btn-clear[data-v-77a4f989]:disabled{opacity:.5;cursor:not-allowed}.template-preview[data-v-77a4f989]{margin-top:.75rem;padding:.75rem;background:var(--color-background);border-radius:.375rem;border:1px solid var(--color-border)}.template-prompt-preview[data-v-77a4f989]{margin:0;font-size:.8rem;color:var(--color-text-soft);line-height:1.4;font-style:italic}.chain-indicator[data-v-77a4f989]{display:inline-block;margin-top:.5rem;font-size:.75rem;padding:.2rem .5rem;background:var(--color-warning, #f0ad4e);color:#333;border-radius:4px}.selector-help[data-v-77a4f989]{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.saving-indicator[data-v-77a4f989]{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.75rem;color:var(--color-text-soft)}@media (max-width: 480px){.template-selector[data-v-77a4f989]{padding:.75rem}.selector-wrapper[data-v-77a4f989]{flex-direction:column;align-items:stretch}.btn-clear[data-v-77a4f989]{align-self:flex-end}}.modal-backdrop[data-v-e1ffc2da]{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-e1ffc2da]{display:flex;flex-direction:column;background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:500px;max-height:90vh;overflow:hidden;border:1px solid var(--color-border)}.modal-header[data-v-e1ffc2da]{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-e1ffc2da]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-e1ffc2da]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-e1ffc2da]:hover{color:var(--color-text)}.modal-body[data-v-e1ffc2da]{flex:1;overflow-y:auto;min-height:0;padding:1.5rem}.form-section[data-v-e1ffc2da]{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border)}.form-section[data-v-e1ffc2da]:last-of-type{border-bottom:none}.section-title[data-v-e1ffc2da]{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--color-text)}.error-message[data-v-e1ffc2da]{padding:.75rem;margin-bottom:1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:.25rem;color:#fca5a5;font-size:.9rem}.modal-footer[data-v-e1ffc2da]{flex-shrink:0;display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.form-group[data-v-e1ffc2da]{margin-bottom:1rem}.form-label[data-v-e1ffc2da]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-e1ffc2da]{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-e1ffc2da]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-e1ffc2da]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-e1ffc2da]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-e1ffc2da]{display:none}.toggle-slider[data-v-e1ffc2da]{position:relative;display:inline-block;width:2.5rem;height:1.25rem;background-color:var(--color-border);border-radius:1rem;transition:background-color .2s;flex-shrink:0}.toggle-slider[data-v-e1ffc2da]:after{content:"";position:absolute;width:1rem;height:1rem;border-radius:50%;background-color:#fff;top:.125rem;left:.125rem;transition:transform .2s}.toggle-switch input:checked+.toggle-slider[data-v-e1ffc2da]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-e1ffc2da]:after{transform:translate(1.25rem)}.toggle-label[data-v-e1ffc2da]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-e1ffc2da]{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-e1ffc2da]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-e1ffc2da]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer;color:var(--color-text)}.checkbox-option input[data-v-e1ffc2da]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-e1ffc2da]{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-e1ffc2da]{background:var(--color-primary);color:#fff}.btn-primary[data-v-e1ffc2da]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-e1ffc2da]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-e1ffc2da]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-e1ffc2da]:hover{background:var(--color-background-secondary)}.modal-backdrop[data-v-bddc7788]{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-bddc7788]{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-bddc7788]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-bddc7788]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-bddc7788]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-bddc7788]:hover{color:var(--color-text)}.modal-body[data-v-bddc7788]{padding:1.5rem;flex:1;overflow-y:auto}.modal-footer[data-v-bddc7788]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.moving-info[data-v-bddc7788]{margin-bottom:1.5rem;padding:.75rem;background:var(--color-bg-soft, rgba(255, 255, 255, .05));border-radius:.25rem}.moving-label[data-v-bddc7788]{display:block;font-size:.75rem;color:var(--color-text-soft);margin-bottom:.25rem}.moving-session-name[data-v-bddc7788]{display:block;font-size:.875rem;font-weight:500;color:var(--color-text)}.empty-state[data-v-bddc7788]{display:flex;align-items:center;justify-content:center;padding:2rem;color:var(--color-text-soft)}.lanes-list[data-v-bddc7788]{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.lane-row[data-v-bddc7788]{border:1px solid var(--color-border);border-radius:.25rem;transition:background-color .15s,border-color .15s}.lane-row[data-v-bddc7788]:not(.lane-row-disabled):hover{background:var(--color-bg-soft);border-color:var(--color-primary)}.lane-row-current[data-v-bddc7788]{opacity:.6}.lane-label[data-v-bddc7788]{display:flex;align-items:center;padding:.75rem;cursor:pointer;gap:.75rem;width:100%}.lane-label input[type=radio][data-v-bddc7788]{flex-shrink:0;width:1rem;height:1rem;cursor:pointer}.lane-label input[type=radio][data-v-bddc7788]:disabled{cursor:not-allowed}.lane-info[data-v-bddc7788]{display:flex;align-items:center;gap:.5rem;flex:1}.lane-name[data-v-bddc7788]{font-size:.875rem;font-weight:500;color:var(--color-text)}.lane-current-badge[data-v-bddc7788]{font-size:.75rem;color:var(--color-text-soft);font-style:italic}.lane-automation-icon[data-v-bddc7788]{color:#f59e0b;flex-shrink:0;display:flex;align-items:center}.automation-option[data-v-bddc7788]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.checkbox-label[data-v-bddc7788]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text)}.checkbox-label input[type=checkbox][data-v-bddc7788]{width:1rem;height:1rem;cursor:pointer}.btn[data-v-bddc7788]{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-bddc7788]{background:var(--color-primary);color:#fff}.btn-primary[data-v-bddc7788]:hover:not(:disabled){opacity:.9}.btn-primary[data-v-bddc7788]:disabled{opacity:.5;cursor:not-allowed}.btn-secondary[data-v-bddc7788]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-bddc7788]:hover{background:var(--color-background-secondary)}.btn-danger[data-v-bddc7788]{background:#ef4444;color:#fff}.btn-danger[data-v-bddc7788]:hover:not(:disabled){background:#dc2626}.btn-danger[data-v-bddc7788]:disabled{opacity:.5;cursor:not-allowed}.modal-backdrop[data-v-140e797f]{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-140e797f]{background:var(--color-background-secondary, #1f2937);border-radius:.5rem;width:100%;max-width:450px;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--color-border)}.modal-header[data-v-140e797f]{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-title[data-v-140e797f]{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text)}.close-btn[data-v-140e797f]{background:none;border:none;font-size:1.5rem;color:var(--color-text-soft);cursor:pointer;padding:0;line-height:1}.close-btn[data-v-140e797f]:hover{color:var(--color-text)}.modal-body[data-v-140e797f]{padding:1.5rem}.confirm-message[data-v-140e797f]{margin:0;font-size:.9rem;color:var(--color-text);line-height:1.5}.cleanup-option[data-v-140e797f]{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.checkbox-label[data-v-140e797f]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--color-text)}.checkbox-label input[type=checkbox][data-v-140e797f]{width:1rem;height:1rem;cursor:pointer}.modal-footer[data-v-140e797f]{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.btn[data-v-140e797f]{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-140e797f]{background:var(--color-primary);color:#fff}.btn-primary[data-v-140e797f]:hover{opacity:.9}.btn-secondary[data-v-140e797f]{background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary[data-v-140e797f]:hover{background:var(--color-background-secondary)}.btn[data-v-140e797f]:disabled{opacity:.5;cursor:not-allowed}.close-btn[data-v-140e797f]:disabled{opacity:.5;cursor:not-allowed}
@@ -0,0 +1 @@
1
+ import{_ as N,k as U,o as V,a as r,c as u,b as t,f as _,d as j,w as P,u as I,t as i,m as k,v as D,i as v,q as J,j as h,x as M,s as $,n as m,g as q,h as A}from"./index-D1Lg5reX.js";import{u as F}from"./commandButtons-D_-wR8zJ.js";import{a as W}from"./ApiClient-CcqJ-GAv.js";const p={PROJECT_ID:"projectId",PROJECT_ID_ALT:"id",BUTTON_ID:"buttonId",SESSION_ID:"id",SESSION_TAB:"tab"},z={class:"container command-button-detail"},G={key:0,class:"loading-state"},H={key:1,class:"form-container"},K={class:"form-header"},Q={class:"form-group"},X={key:0,class:"form-error"},Y={class:"form-group"},Z={key:0,class:"form-error"},ee={class:"form-group"},te={key:0,class:"form-error"},oe={class:"form-group form-group-checkbox"},se={for:"showOnList",class:"checkbox-label"},ae={class:"form-actions"},le=["disabled"],ne={key:0,class:"form-error-message"},re={class:"modal-body"},ue={class:"modal-footer"},de=["disabled"],ie={__name:"CommandButtonDetailView",setup(me){const d=$(),w=A(),O=F(),b=U(),B=m(!1),C=m(!1),g=m(!1),f=m(!1),c=m(null),a=m({}),o=m({label:"",command:"",sortOrder:0,showOnList:!1}),y=M(()=>!!d.params.buttonId),S=async s=>{B.value=!0;try{const e=d.params[p.PROJECT_ID];let l=O.getButtonById(s);l||(l=await W.getCommandButton(e,s)),l&&(o.value={label:l.label,command:l.command,sortOrder:l.sortOrder||0,showOnList:l.showOnList||!1})}catch(e){c.value=`Failed to load button: ${e.message}`}finally{B.value=!1}},T=()=>(a.value={},o.value.label.trim()||(a.value.label="Label is required"),o.value.command.trim()||(a.value.command="Command is required"),o.value.sortOrder<0&&(a.value.sortOrder="Sort order must be 0 or greater"),Object.keys(a.value).length===0),L=async()=>{if(c.value=null,!!T()){C.value=!0;try{const s=d.params[p.PROJECT_ID],e={label:o.value.label,command:o.value.command,sortOrder:o.value.sortOrder,showOnList:o.value.showOnList};y.value?(await O.updateButton(s,d.params[p.BUTTON_ID],e),b.success("Command button updated")):(await O.createButton(s,e),b.success("Command button created")),w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{C.value=!1}}},x=()=>{w.back()},E=()=>{f.value=!0},R=async()=>{g.value=!0;try{const s=d.params[p.PROJECT_ID],e=d.params[p.BUTTON_ID];await O.deleteButton(s,e),b.success("Command button deleted"),f.value=!1,w.push(`/projects/${s}/sessions`)}catch(s){c.value=s.message,b.error(s.message)}finally{g.value=!1}};return V(async()=>{y.value&&await S(d.params.buttonId)}),(s,e)=>{const l=q("router-link");return r(),u("div",z,[B.value?(r(),u("div",G,[...e[7]||(e[7]=[t("span",{class:"loading-spinner"},null,-1),_(" Loading... ",-1)])])):(r(),u("div",H,[t("div",K,[j(l,{to:`/projects/${I(d).params[I(p).PROJECT_ID]}/sessions`,class:"btn btn-outline-secondary"},{default:P(()=>[...e[8]||(e[8]=[_(" ← Back ",-1)])]),_:1},8,["to"]),t("h2",null,i(y.value?"Edit Command Button":"New Command Button"),1)]),t("form",{class:"command-button-form",onSubmit:h(L,["prevent"])},[t("div",Q,[e[9]||(e[9]=t("label",{for:"label"},"Label",-1)),k(t("input",{id:"label","onUpdate:modelValue":e[0]||(e[0]=n=>o.value.label=n),type:"text",class:"form-input",placeholder:"e.g., Run Tests",required:""},null,512),[[D,o.value.label]]),a.value.label?(r(),u("span",X,i(a.value.label),1)):v("",!0)]),t("div",Y,[e[10]||(e[10]=t("label",{for:"command"},"Command",-1)),k(t("textarea",{id:"command","onUpdate:modelValue":e[1]||(e[1]=n=>o.value.command=n),class:"form-input",placeholder:"e.g., npm test",rows:"4",required:""},null,512),[[D,o.value.command]]),a.value.command?(r(),u("span",Z,i(a.value.command),1)):v("",!0)]),t("div",ee,[e[11]||(e[11]=t("label",{for:"sortOrder"},"Sort Order (optional)",-1)),k(t("input",{id:"sortOrder","onUpdate:modelValue":e[2]||(e[2]=n=>o.value.sortOrder=n),type:"number",class:"form-input",placeholder:"0",min:"0"},null,512),[[D,o.value.sortOrder,void 0,{number:!0}]]),a.value.sortOrder?(r(),u("span",te,i(a.value.sortOrder),1)):v("",!0),e[12]||(e[12]=t("span",{class:"form-help"},"Buttons are displayed in ascending order. Leave as 0 for default.",-1))]),t("div",oe,[t("label",se,[k(t("input",{id:"showOnList","onUpdate:modelValue":e[3]||(e[3]=n=>o.value.showOnList=n),type:"checkbox",class:"form-checkbox"},null,512),[[J,o.value.showOnList]]),e[13]||(e[13]=t("span",null,"Show status indicator on session lists",-1))]),e[14]||(e[14]=t("span",{class:"form-help"},"When enabled, the button status will be displayed on session cards",-1))]),t("div",ae,[t("button",{type:"button",class:"btn btn-outline-secondary",onClick:x}," Cancel "),y.value?(r(),u("button",{key:0,type:"button",class:"btn btn-outline-danger",onClick:E}," Delete ")):v("",!0),t("button",{type:"submit",class:"btn btn-primary",disabled:C.value},i(C.value?"Saving...":y.value?"Update":"Create"),9,le)]),c.value?(r(),u("div",ne,i(c.value),1)):v("",!0)],32)])),f.value?(r(),u("div",{key:2,class:"modal-overlay",onClick:e[6]||(e[6]=n=>f.value=!1)},[t("div",{class:"modal-dialog",onClick:e[5]||(e[5]=h(()=>{},["stop"]))},[e[18]||(e[18]=t("div",{class:"modal-header"},[t("h4",null,"Delete Command Button")],-1)),t("div",re,[t("p",null,[e[15]||(e[15]=_('Are you sure you want to delete "',-1)),t("strong",null,i(o.value.label),1),e[16]||(e[16]=_('"?',-1))]),e[17]||(e[17]=t("p",null,"This action cannot be undone.",-1))]),t("div",ue,[t("button",{class:"btn btn-outline-secondary",onClick:e[4]||(e[4]=n=>f.value=!1)}," Cancel "),t("button",{class:"btn btn-danger",disabled:g.value,onClick:R},i(g.value?"Deleting...":"Delete"),9,de)])])])):v("",!0)])}}},be=N(ie,[["__scopeId","data-v-b4855495"]]);export{be as default};
@@ -0,0 +1 @@
1
+ import{L as f,a0 as g,_ as b,k as _,n as m,l as E,a as p,c as h,b as j,F as L,r as x,t as w,u as I,x as C,$ as O}from"./index-D1Lg5reX.js";import{a as r}from"./ApiClient-CcqJ-GAv.js";import{u as V}from"./sessions-CoRS-wuR.js";const D=["low","medium","high","max","auto"],$=[{id:"claude-haiku-4-5-20251001",name:"Haiku 4.5",description:"Fast & lightweight"},{id:"claude-sonnet-4-6",name:"Sonnet 4.6",description:"Balanced"},{id:"claude-opus-4-6",name:"Opus 4.6",description:"Previous generation"},{id:"claude-opus-4-7",name:"Opus 4.7",description:"Most capable (default)"}],H="claude-opus-4-7",F=f("todos",{state:()=>({items:[],loading:!1,error:null,expanded:!1,currentConversationId:null}),getters:{hasTodos:t=>t.items.length>0,pendingCount:t=>t.items.filter(e=>e.status==="pending").length,inProgressCount:t=>t.items.filter(e=>e.status==="in_progress").length,completedCount:t=>t.items.filter(e=>e.status==="completed").length},actions:{async fetchTodos(t,e=null){this.loading=!0,this.error=null,this.currentConversationId=e;try{this.items=await r.getSessionTodos(t,e)}catch(s){this.error=s.message}finally{this.loading=!1}},updateTodos(t,e=null){(e===null||this.currentConversationId===null||e===this.currentConversationId)&&(this.items=t)},clearTodos(){this.items=[],this.loading=!1,this.error=null,this.currentConversationId=null,this.expanded=!1},toggleExpanded(){this.expanded=!this.expanded},setExpanded(t){this.expanded=t}}}),k=Symbol("overlay-sessions-store"),B=Symbol("overlay-todos-store");function P(){return g(k,V())}function q(){return g(B,F())}const z=f("templates",{state:()=>({projectTemplates:[],globalTemplates:[],loading:!1,error:null}),getters:{allTemplates:t=>[...t.projectTemplates,...t.globalTemplates],getTemplateById:t=>e=>t.projectTemplates.find(s=>s.id===e)||t.globalTemplates.find(s=>s.id===e)},actions:{async fetchProjectTemplates(t){this.loading=!0,this.error=null;try{const e=await r.getProjectTemplates(t);this.projectTemplates=e.project||[],this.globalTemplates=e.global||[]}catch(e){this.error=e.message}finally{this.loading=!1}},async createProjectTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.createProjectTemplate(t,e);return this.projectTemplates.unshift(s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async createGlobalTemplate(t){this.loading=!0,this.error=null;try{const e=await r.createGlobalTemplate(t);return this.globalTemplates.unshift(e),e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async updateTemplate(t,e){this.loading=!0,this.error=null;try{const s=await r.updateTemplate(t,e);let l=this.projectTemplates.findIndex(o=>o.id===t);return l!==-1?this.projectTemplates[l]=s:(l=this.globalTemplates.findIndex(o=>o.id===t),l!==-1&&(this.globalTemplates[l]=s)),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteTemplate(t){this.loading=!0,this.error=null;try{await r.deleteTemplate(t),this.projectTemplates=this.projectTemplates.filter(e=>e.id!==t),this.globalTemplates=this.globalTemplates.filter(e=>e.id!==t)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}}}}),R={class:"effort-selector"},U=["value","disabled"],A=["value"],M={__name:"EffortLevelSelector",props:{sessionId:{type:String,default:null},modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:e}){const s=t,l=e,o=P(),T=_(),u=m(!1),y=["auto",...D.filter(a=>a!=="auto")].map(a=>({value:a,label:`${a.charAt(0).toUpperCase()+a.slice(1)} Effort`})),c=C(()=>{var a;return s.sessionId?((a=o.currentSession)==null?void 0:a.effortLevel)||"auto":s.modelValue||"auto"}),n=m(c.value),S=O(s,"modelValue");E([c,S],([a])=>{n.value=a||"auto"},{flush:"sync"});async function v(a){if(!u.value&&n.value!==a)if(n.value=a,s.sessionId){u.value=!0;try{await o.updateSessionFields(s.sessionId,{effortLevel:a==="auto"?null:a})}catch(d){n.value=c.value,T.error(d.message)}finally{u.value=!1}}else l("update:modelValue",a==="auto"?null:a)}return(a,d)=>(p(),h("div",R,[j("select",{id:"effort-select",value:n.value,disabled:t.disabled||u.value,class:"effort-select","aria-label":"Effort level",onChange:d[0]||(d[0]=i=>v(i.target.value))},[(p(!0),h(L,null,x(I(y),i=>(p(),h("option",{key:i.value,value:i.value},w(i.label),9,A))),128))],40,U)]))}},J=b(M,[["__scopeId","data-v-8bc1fe64"]]);export{$ as C,H as D,J as E,k as S,B as T,F as a,P as b,q as c,z as u};
@@ -1 +1 @@
1
- import{_ as f,i as _,o as b,m as y,u as S,a as i,c as r,b as s,e as c,j as h,p as k,t as d,k as p,h as x,l as u}from"./index-CSOPrlmq.js";import{u as w}from"./settings-CZ7Pc-Pt.js";import"./ApiClient-Dbs1H78V.js";const V={key:0,class:"loading-state"},G={class:"form-group"},A={class:"checkbox-label"},B={key:0,class:"error-message"},C={class:"form-actions"},D=["disabled"],M={key:0,class:"loading-spinner"},N={__name:"GeneralSettingsView",setup(U){const n=w(),v=_(),l=u(!1),a=u(!1),o=u(null);b(()=>{n.fetchGeneralSettings()}),y(()=>n.generalSettings,t=>{t&&(l.value=t.disableAnalytics)},{immediate:!0});async function g(){a.value=!0,o.value=null;try{await n.updateGeneralSettings({disableAnalytics:l.value}),v.success("General settings saved successfully")}catch(t){o.value=t.message}finally{a.value=!1}}return(t,e)=>S(n).loading?(i(),r("div",V,[...e[1]||(e[1]=[s("span",{class:"loading-spinner"},null,-1),c(" Loading... ",-1)])])):(i(),r("form",{key:1,class:"form card",onSubmit:x(g,["prevent"])},[s("div",G,[s("label",A,[h(s("input",{"onUpdate:modelValue":e[0]||(e[0]=m=>l.value=m),type:"checkbox"},null,512),[[k,l.value]]),e[2]||(e[2]=c(" Disable analytics tracking ",-1))]),e[3]||(e[3]=s("p",{class:"form-help"}," When checked, no usage analytics will be collected. Changes take effect on next page load. ",-1))]),o.value?(i(),r("div",B,d(o.value),1)):p("",!0),s("div",C,[s("button",{type:"submit",class:"btn btn-primary",disabled:a.value},[a.value?(i(),r("span",M)):p("",!0),c(" "+d(a.value?"Saving...":"Save Settings"),1)],8,D)])],32))}},L=f(N,[["__scopeId","data-v-0cd79804"]]);export{L as default};
1
+ import{_ as m,k as _,o as b,l as y,u as S,a as i,c as r,b as s,f as c,m as h,q as k,t as d,i as p,j as x,n as u}from"./index-D1Lg5reX.js";import{u as w}from"./settings-BN_W4nwV.js";import"./ApiClient-CcqJ-GAv.js";const V={key:0,class:"loading-state"},G={class:"form-group"},A={class:"checkbox-label"},B={key:0,class:"error-message"},C={class:"form-actions"},D=["disabled"],M={key:0,class:"loading-spinner"},N={__name:"GeneralSettingsView",setup(U){const n=w(),v=_(),l=u(!1),a=u(!1),o=u(null);b(()=>{n.fetchGeneralSettings()}),y(()=>n.generalSettings,t=>{t&&(l.value=t.disableAnalytics)},{immediate:!0});async function f(){a.value=!0,o.value=null;try{await n.updateGeneralSettings({disableAnalytics:l.value}),v.success("General settings saved successfully")}catch(t){o.value=t.message}finally{a.value=!1}}return(t,e)=>S(n).loading?(i(),r("div",V,[...e[1]||(e[1]=[s("span",{class:"loading-spinner"},null,-1),c(" Loading... ",-1)])])):(i(),r("form",{key:1,class:"form card",onSubmit:x(f,["prevent"])},[s("div",G,[s("label",A,[h(s("input",{"onUpdate:modelValue":e[0]||(e[0]=g=>l.value=g),type:"checkbox"},null,512),[[k,l.value]]),e[2]||(e[2]=c(" Disable analytics tracking ",-1))]),e[3]||(e[3]=s("p",{class:"form-help"}," When checked, no usage analytics will be collected. Changes take effect on next page load. ",-1))]),o.value?(i(),r("div",B,d(o.value),1)):p("",!0),s("div",C,[s("button",{type:"submit",class:"btn btn-primary",disabled:a.value},[a.value?(i(),r("span",M)):p("",!0),c(" "+d(a.value?"Saving...":"Save Settings"),1)],8,D)])],32))}},I=m(N,[["__scopeId","data-v-0cd79804"]]);export{I as default};
@@ -1 +1 @@
1
- import{_ as N,l as r,m as $,a as s,c as o,b as t,j as D,v as j,h as F,t as h,e as w,k as f,F as k,r as S}from"./index-CSOPrlmq.js";import{a as T}from"./ApiClient-Dbs1H78V.js";const E={class:"path-chooser"},I={class:"path-input-group"},L={class:"path-browser"},M={class:"browser-header"},U={class:"browser-path"},q={class:"browser-content"},z={key:1,class:"browser-loading"},A={key:2,class:"browser-error"},G=["onClick"],H={key:0,class:"browser-empty"},J={key:1,class:"browser-empty"},K={__name:"PathChooser",props:{modelValue:{type:String,default:""}},emits:["update:modelValue"],setup(g,{emit:C}){const y=g,_=C,l=r(y.modelValue);$(()=>y.modelValue,a=>{l.value=a});function V(){_("update:modelValue",l.value)}const v=r(!1),i=r(""),c=r(null),d=r([]),m=r(!1),u=r(null);async function B(){v.value=!0,await b(l.value||"")}function p(){v.value=!1}async function b(a){m.value=!0,u.value=null;try{const e=await T.browseDirectory(a);i.value=e.path,c.value=e.parent,d.value=e.entries,e.error&&(u.value=e.error)}catch(e){u.value=e.message||"Failed to browse directory"}finally{m.value=!1}}function P(){l.value=i.value,_("update:modelValue",i.value),p()}function x(a,e){return a==="/"?`/${e}`:`${a}/${e}`}return(a,e)=>(s(),o("div",E,[t("div",I,[D(t("input",{"onUpdate:modelValue":e[0]||(e[0]=n=>l.value=n),type:"text",class:"form-input",placeholder:"/path/to/project",onInput:V},null,544),[[j,l.value]]),t("button",{type:"button",class:"btn",onClick:B}," Browse ")]),v.value?(s(),o("div",{key:0,class:"path-browser-overlay",onClick:F(p,["self"])},[t("div",L,[t("div",M,[t("span",U,h(i.value),1),t("button",{type:"button",class:"browser-close",onClick:p}," × ")]),t("div",q,[c.value?(s(),o("div",{key:0,class:"browser-item parent",onClick:e[1]||(e[1]=n=>b(c.value))},[...e[2]||(e[2]=[t("span",{class:"browser-item-icon"},"←",-1),w(" Parent Directory ",-1)])])):f("",!0),m.value?(s(),o("div",z,[...e[3]||(e[3]=[t("span",{class:"loading-spinner"},null,-1),w(" Loading... ",-1)])])):u.value?(s(),o("div",A,h(u.value),1)):(s(),o(k,{key:3},[(s(!0),o(k,null,S(d.value,n=>(s(),o("div",{key:n.name,class:"browser-item",onClick:O=>b(x(i.value,n.name))},[e[4]||(e[4]=t("span",{class:"browser-item-icon"},"📁",-1)),w(" "+h(n.name),1)],8,G))),128)),d.value.length===0&&!c.value?(s(),o("div",H," No subdirectories ")):d.value.length===0?(s(),o("div",J," No subdirectories in this folder ")):f("",!0)],64))]),t("div",{class:"browser-footer"},[t("button",{type:"button",class:"btn",onClick:p}," Cancel "),t("button",{type:"button",class:"btn btn-primary",onClick:P}," Select ")])])])):f("",!0)]))}},W=N(K,[["__scopeId","data-v-26aaee7f"]]);export{W as P};
1
+ import{_ as N,n as r,l as $,a as s,c as o,b as t,m as D,v as j,j as F,t as w,f as h,i as f,F as k,r as S}from"./index-D1Lg5reX.js";import{a as T}from"./ApiClient-CcqJ-GAv.js";const E={class:"path-chooser"},I={class:"path-input-group"},L={class:"path-browser"},M={class:"browser-header"},U={class:"browser-path"},q={class:"browser-content"},z={key:1,class:"browser-loading"},A={key:2,class:"browser-error"},G=["onClick"],H={key:0,class:"browser-empty"},J={key:1,class:"browser-empty"},K={__name:"PathChooser",props:{modelValue:{type:String,default:""}},emits:["update:modelValue"],setup(g,{emit:C}){const y=g,_=C,l=r(y.modelValue);$(()=>y.modelValue,a=>{l.value=a});function V(){_("update:modelValue",l.value)}const v=r(!1),i=r(""),c=r(null),d=r([]),m=r(!1),u=r(null);async function B(){v.value=!0,await b(l.value||"")}function p(){v.value=!1}async function b(a){m.value=!0,u.value=null;try{const e=await T.browseDirectory(a);i.value=e.path,c.value=e.parent,d.value=e.entries,e.error&&(u.value=e.error)}catch(e){u.value=e.message||"Failed to browse directory"}finally{m.value=!1}}function P(){l.value=i.value,_("update:modelValue",i.value),p()}function x(a,e){return a==="/"?`/${e}`:`${a}/${e}`}return(a,e)=>(s(),o("div",E,[t("div",I,[D(t("input",{"onUpdate:modelValue":e[0]||(e[0]=n=>l.value=n),type:"text",class:"form-input",placeholder:"/path/to/project",onInput:V},null,544),[[j,l.value]]),t("button",{type:"button",class:"btn",onClick:B}," Browse ")]),v.value?(s(),o("div",{key:0,class:"path-browser-overlay",onClick:F(p,["self"])},[t("div",L,[t("div",M,[t("span",U,w(i.value),1),t("button",{type:"button",class:"browser-close",onClick:p}," × ")]),t("div",q,[c.value?(s(),o("div",{key:0,class:"browser-item parent",onClick:e[1]||(e[1]=n=>b(c.value))},[...e[2]||(e[2]=[t("span",{class:"browser-item-icon"},"←",-1),h(" Parent Directory ",-1)])])):f("",!0),m.value?(s(),o("div",z,[...e[3]||(e[3]=[t("span",{class:"loading-spinner"},null,-1),h(" Loading... ",-1)])])):u.value?(s(),o("div",A,w(u.value),1)):(s(),o(k,{key:3},[(s(!0),o(k,null,S(d.value,n=>(s(),o("div",{key:n.name,class:"browser-item",onClick:O=>b(x(i.value,n.name))},[e[4]||(e[4]=t("span",{class:"browser-item-icon"},"📁",-1)),h(" "+w(n.name),1)],8,G))),128)),d.value.length===0&&!c.value?(s(),o("div",H," No subdirectories ")):d.value.length===0?(s(),o("div",J," No subdirectories in this folder ")):f("",!0)],64))]),t("div",{class:"browser-footer"},[t("button",{type:"button",class:"btn",onClick:p}," Cancel "),t("button",{type:"button",class:"btn btn-primary",onClick:P}," Select ")])])])):f("",!0)]))}},W=N(K,[["__scopeId","data-v-297ad79a"]]);export{W as P};
@@ -0,0 +1 @@
1
+ .path-chooser[data-v-297ad79a]{width:100%}.path-input-group[data-v-297ad79a]{display:flex;gap:.5rem}.path-input-group .form-input[data-v-297ad79a]{flex:1}.path-browser-overlay[data-v-297ad79a]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.path-browser[data-v-297ad79a]{background-color:var(--color-background-soft);border:1px solid var(--color-border);border-radius:var(--border-radius);width:90%;max-width:600px;max-height:80vh;display:flex;flex-direction:column}.browser-header[data-v-297ad79a]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:var(--border-radius) var(--border-radius) 0 0}.browser-path[data-v-297ad79a]{font-family:var(--font-mono);font-size:.875rem;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:1rem}.browser-close[data-v-297ad79a]{background:none;border:none;color:var(--color-text-soft);font-size:1.5rem;line-height:1;padding:0;cursor:pointer;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius)}.browser-close[data-v-297ad79a]:hover{background-color:var(--color-background);color:var(--color-text)}.browser-content[data-v-297ad79a]{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}.browser-item[data-v-297ad79a]{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;cursor:pointer;border-radius:var(--border-radius);color:var(--color-text);font-size:.875rem}.browser-item[data-v-297ad79a]:hover{background-color:var(--color-background-mute)}.browser-item.parent[data-v-297ad79a]{color:var(--color-primary);border-bottom:1px solid var(--color-border);margin-bottom:.5rem;border-radius:0}.browser-item.parent[data-v-297ad79a]:hover{background-color:var(--color-background)}.browser-item-icon[data-v-297ad79a]{flex-shrink:0}.browser-loading[data-v-297ad79a]{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-soft)}.browser-error[data-v-297ad79a]{padding:1rem;color:var(--color-error);text-align:center}.browser-empty[data-v-297ad79a]{padding:2rem;color:var(--color-text-soft);text-align:center}.browser-footer[data-v-297ad79a]{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--color-border);background-color:var(--color-background-mute);border-radius:0 0 var(--border-radius) var(--border-radius)}@media (max-width: 480px){.path-input-group[data-v-297ad79a]{flex-direction:column}.path-input-group .btn[data-v-297ad79a]{width:100%}}.input-with-button{display:flex;gap:.5rem;align-items:stretch}.input-with-button .form-input{flex:1}.input-with-button .btn{flex-shrink:0}
@@ -0,0 +1 @@
1
+ import{_ as t,a,c as n,f as e,b as o}from"./index-D1Lg5reX.js";const r={class:"form-help"},l={__name:"InterpolationHelp",setup(c){return(p,s)=>(a(),n("p",r,[...s[0]||(s[0]=[e(" Available variables: ",-1),o("code",null,"{{rootSession.id}}",-1),e(", ",-1),o("code",null,"{{rootSession.name}}",-1),e(", ",-1),o("code",null,"{{rootSession.summary}}",-1),e(", ",-1),o("code",null,"{{rootSession.status}}",-1)])]))}},i=t(l,[["__scopeId","data-v-26718cef"]]);export{i as I};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Krfrs3sc.js","assets/index-D1Lg5reX.js","assets/index-gmCCsCQ1.css","assets/SessionDetailView-D3f0FEV1.js","assets/sessions-CoRS-wuR.js","assets/ApiClient-CcqJ-GAv.js","assets/settings-BN_W4nwV.js","assets/projects-CMJJca64.js","assets/EffortLevelSelector-HuOPegKI.js","assets/EffortLevelSelector-BQaQmU2d.css","assets/SessionLogStream-NR-AS676.js","assets/commandButtons-D_-wR8zJ.js","assets/SessionLogStream-zPUTiGbe.css","assets/ArchiveConfirmModal-BHqbCCX2.js","assets/ModelSelector-CgpqdZtV.js","assets/providers-BCtNZWYw.js","assets/ModelSelector-DPPD-92R.css","assets/SlashCommandWizard-PXipO1yA.js","assets/SlashCommandWizard-BB30cSvo.css","assets/ArchiveConfirmModal-BQ-4gI0R.css","assets/useSummaryHelpers-GVg7sMWF.js","assets/QuickResponseSettings-Ds4X-J-t.js","assets/QuickResponseSettings-B8188A1D.css","assets/QuickResponsesPanel-BY2v23c5.js","assets/QuickResponsesPanel-DIBQFj0W.css","assets/ResizableTextarea-C2s6_7X9.js","assets/ResizableTextarea-B5nAA0RV.css","assets/SessionDetailView-BL83oPiI.css","assets/style-BTin-zR_.css"])))=>i.map(i=>d[i]);
2
+ import{n as E,l as d,A as w,a as l,c as y,G as T,w as u,b as m,f as V,d as k,u as h,a3 as x,O as A,P as p}from"./index-D1Lg5reX.js";import{u as P}from"./SessionDetailView-D3f0FEV1.js";import"./sessions-CoRS-wuR.js";import"./ApiClient-CcqJ-GAv.js";import"./settings-BN_W4nwV.js";import"./projects-CMJJca64.js";import"./EffortLevelSelector-HuOPegKI.js";import"./SessionLogStream-NR-AS676.js";import"./commandButtons-D_-wR8zJ.js";import"./ArchiveConfirmModal-BHqbCCX2.js";import"./ModelSelector-CgpqdZtV.js";import"./providers-BCtNZWYw.js";import"./SlashCommandWizard-PXipO1yA.js";import"./useSummaryHelpers-GVg7sMWF.js";import"./QuickResponseSettings-Ds4X-J-t.js";import"./QuickResponsesPanel-BY2v23c5.js";import"./ResizableTextarea-C2s6_7X9.js";const b={class:"canvas-md-editor"},K={__name:"MarkdownEditor",props:{content:{type:String,default:""},sessionId:{type:String,required:!0},filename:{type:String,required:!0},itemId:{type:String,required:!0}},emits:["save"],setup(c,{expose:f,emit:v}){const _=A(()=>p(()=>import("./index-Krfrs3sc.js").then(e=>e.w),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27])).then(async e=>(await p(()=>Promise.resolve({}),__vite__mapDeps([28])),e.MdEditor))),r=c,n=v,g=P(),t=E(r.content||"");let o=null,i=r.content||"";d(t,e=>{o&&clearTimeout(o),o=setTimeout(()=>{i=e,n("save",e)},1e3)});function s(){o&&(clearTimeout(o),o=null),t.value!==i&&n("save",t.value)}return f({flushPendingSave:s}),d(()=>r.content,e=>{e!==t.value&&(t.value=e||"")}),w(()=>{s(),g.endEditing(r.filename)}),(e,a)=>(l(),y("div",b,[(l(),T(x,null,{default:u(()=>[k(h(_),{modelValue:t.value,"onUpdate:modelValue":a[0]||(a[0]=S=>t.value=S),theme:"dark",preview:!1,language:"en-US","no-upload-img":!0,"show-code-row-number":!0},null,8,["modelValue"])]),fallback:u(()=>[...a[1]||(a[1]=[m("div",{class:"editor-loading"},[m("span",{class:"loading-spinner"}),V(" Loading editor... ")],-1)])]),_:1}))]))}};export{K as default};
@@ -1 +1 @@
1
- import{u as x}from"./providers-B__J6FX0.js";import{_ as L,o as N,l as M,m as V,a as r,c as n,b as z,t as _,k as F,F as I,r as S,u as R,E as D,x as f,$ as H}from"./index-CSOPrlmq.js";const P=["data-model"],U=["value","disabled"],$={key:0,value:""},j=["label"],q=["value","data-provider-id"],A={__name:"ModelSelector",props:{modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1},allowEmpty:{type:Boolean,default:!1},emptyLabel:{type:String,default:"Use system default"},selectClass:{type:String,default:""}},emits:["update:modelValue"],setup(i,{emit:b}){const d=i,v=b,s=x(),h=f(()=>s.providers.length>0&&s.providers.some(e=>e.models&&e.models.length>0)),B=f(()=>{const e=new Set;for(const t of s.providers)if(t.models)for(const l of t.models)e.add(l.modelId);return e});function g(e){return e&&B.value.has(e)}const u=f(()=>{var l,o,m;const e=s.providers.find(c=>c.isBuiltIn);if((l=e==null?void 0:e.models)!=null&&l.length){const c=e.models.find(E=>E.tier==="sonnet");return(c==null?void 0:c.modelId)||e.models[0].modelId}const t=s.providers[0];return((m=(o=t==null?void 0:t.models)==null?void 0:o[0])==null?void 0:m.modelId)||null}),w=M(!1);N(async()=>{(s.providers.length===0||!h.value)&&await s.fetchProviders(),w.value=!0});function p(e){var l;if(!e)return null;if(e.includes("claude-"))return e;const t=s.providers.find(o=>o.isBuiltIn);if((l=t==null?void 0:t.models)!=null&&l.length){const o=t.models.find(m=>m.tier===e);if(o)return o.modelId}return e}const a=M(p(d.modelValue)),y=f(()=>d.allowEmpty&&(!a.value||a.value==="")?"":a.value&&g(a.value)?a.value:u.value?u.value:a.value),k=H(d,"modelValue");V(k,e=>{a.value=p(e)},{flush:"sync"}),V(()=>s.providers,()=>{if(!h.value)return;if(d.allowEmpty&&(!d.modelValue||d.modelValue==="")){a.value="";return}let e=null;d.modelValue&&(e=p(d.modelValue)),e&&g(e)?a.value!==e&&(a.value=e,e!==d.modelValue&&v("update:modelValue",e)):u.value&&a.value!==u.value&&(a.value=u.value,v("update:modelValue",u.value))},{deep:!0,immediate:!0});function C(e){y.value!==e&&(a.value=e,v("update:modelValue",e))}return(e,t)=>(r(),n("div",{class:"model-selector","data-model":y.value},[z("select",{id:"model-select",value:y.value,disabled:i.disabled,class:D(i.selectClass||"model-select"),onChange:t[0]||(t[0]=l=>C(l.target.value))},[i.allowEmpty?(r(),n("option",$,_(i.emptyLabel),1)):F("",!0),(r(!0),n(I,null,S(R(s).providers,l=>(r(),n("optgroup",{key:l.id,label:l.name},[(r(!0),n(I,null,S(l.models,o=>(r(),n("option",{key:o.id,value:o.modelId,"data-provider-id":l.id},_(l.isBuiltIn?o.displayName:o.modelId),9,q))),128))],8,j))),128))],42,U)],8,P))}},K=L(A,[["__scopeId","data-v-ea265eb4"]]);export{K as M};
1
+ import{u as x}from"./providers-BCtNZWYw.js";import{_ as L,o as N,n as M,l as V,a as n,c as r,b as z,t as _,i as F,F as I,r as S,u as R,E as D,x as f,$ as H}from"./index-D1Lg5reX.js";const P=["data-model"],U=["value","disabled"],$={key:0,value:""},j=["label"],q=["value","data-provider-id"],A={__name:"ModelSelector",props:{modelValue:{type:String,default:null},disabled:{type:Boolean,default:!1},allowEmpty:{type:Boolean,default:!1},emptyLabel:{type:String,default:"Use system default"},selectClass:{type:String,default:""}},emits:["update:modelValue"],setup(i,{emit:b}){const d=i,v=b,s=x(),h=f(()=>s.providers.length>0&&s.providers.some(e=>e.models&&e.models.length>0)),B=f(()=>{const e=new Set;for(const t of s.providers)if(t.models)for(const l of t.models)e.add(l.modelId);return e});function g(e){return e&&B.value.has(e)}const u=f(()=>{var l,o,m;const e=s.providers.find(c=>c.isBuiltIn);if((l=e==null?void 0:e.models)!=null&&l.length){const c=e.models.find(k=>k.tier==="sonnet");return(c==null?void 0:c.modelId)||e.models[0].modelId}const t=s.providers[0];return((m=(o=t==null?void 0:t.models)==null?void 0:o[0])==null?void 0:m.modelId)||null}),w=M(!1);N(async()=>{(s.providers.length===0||!h.value)&&await s.fetchProviders(),w.value=!0});function p(e){var l;if(!e)return null;if(e.includes("claude-"))return e;const t=s.providers.find(o=>o.isBuiltIn);if((l=t==null?void 0:t.models)!=null&&l.length){const o=t.models.find(m=>m.tier===e);if(o)return o.modelId}return e}const a=M(p(d.modelValue)),y=f(()=>d.allowEmpty&&(!a.value||a.value==="")?"":a.value&&g(a.value)?a.value:u.value?u.value:a.value),C=H(d,"modelValue");V(C,e=>{a.value=p(e)},{flush:"sync"}),V(()=>s.providers,()=>{if(!h.value)return;if(d.allowEmpty&&(!d.modelValue||d.modelValue==="")){a.value="";return}let e=null;d.modelValue&&(e=p(d.modelValue)),e&&g(e)?a.value!==e&&(a.value=e,e!==d.modelValue&&v("update:modelValue",e)):u.value&&a.value!==u.value&&(a.value=u.value,v("update:modelValue",u.value))},{deep:!0,immediate:!0});function E(e){y.value!==e&&(a.value=e,v("update:modelValue",e))}return(e,t)=>(n(),r("div",{class:"model-selector","data-model":y.value},[z("select",{id:"model-select",value:y.value,disabled:i.disabled,class:D(i.selectClass||"model-select"),onChange:t[0]||(t[0]=l=>E(l.target.value))},[i.allowEmpty?(n(),r("option",$,_(i.emptyLabel),1)):F("",!0),(n(!0),r(I,null,S(R(s).providers,l=>(n(),r("optgroup",{key:l.id,label:l.name},[(n(!0),r(I,null,S(l.models,o=>(n(),r("option",{key:o.id,value:o.modelId,"data-provider-id":l.id},_(l.isBuiltIn?o.displayName:o.modelId),9,q))),128))],8,j))),128))],42,U)],8,P))}},K=L(A,[["__scopeId","data-v-ea265eb4"]]);export{K as M};
@@ -1,3 +1,3 @@
1
- import{I as ge,l as m,_ as de,a as r,c as d,b as l,E as ue,k as h,t as D,e as re,F as L,y as Ve,m as R,j as C,v as X,p as ie,n as _,i as Oe,A as xe,o as Me,d as $,w as Le,u as v,K as Z,r as H,G as fe,h as Ne,s as Ue,f as Ge,x as A,g as qe}from"./index-CSOPrlmq.js";import{g as je,u as Fe}from"./sessions-VDrd87yA.js";import{u as Pe}from"./EffortLevelSelector-VfBEelvO.js";import{u as We,a as Qe,Q as ze}from"./QuickResponseSettings-uDDpwaza.js";import{a as He}from"./ApiClient-Dbs1H78V.js";import{F as Ke,Q as Ye,u as Je}from"./QuickResponsesPanel-D0qs0Fm_.js";import{S as Xe}from"./SessionFormOptions-DvhOyP6z.js";import{R as Ze}from"./ResizableTextarea-_kHi1Mg3.js";import{S as _e,a as et}from"./SlashCommandWizard-B_8ifpxN.js";import{u as tt}from"./projects-B2du-GX8.js";import"./settings-CZ7Pc-Pt.js";import"./ModelSelector-DSxaZWBL.js";import"./providers-B__J6FX0.js";function lt(t){const u=m(""),a=m(!1),f=m("yolo"),o=m(null),S=m(null),x=m(!0),E=m(null),g=m(!0),n=m("worktree"),c=m(""),I=m(!1),k=m(""),N=m(null),V=m(null),K=m(null),w=m({scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}),T=m({mode:!1,model:!1,thinkingEnabled:!1,startImmediately:!1,quickGitMode:!1,quickWorktreeBranch:!1});function U(p){p.mode&&(f.value=p.mode,T.value.mode=!0),p.model?(o.value=p.model,T.value.model=!0):(o.value="sonnet",T.value.model=!0),p.thinkingEnabled!==null&&p.thinkingEnabled!==void 0&&(x.value=p.thinkingEnabled,T.value.thinkingEnabled=!0),p.effortLevel&&(E.value=p.effortLevel),p.startImmediately!==null&&p.startImmediately!==void 0&&(g.value=p.startImmediately,T.value.startImmediately=!0),p.gitMode&&(n.value=p.gitMode,T.value.quickGitMode=!0),p.gitBranch&&(c.value=p.gitBranch,T.value.quickWorktreeBranch=!0)}function ee(p){const y=localStorage.getItem(t.value);y&&(u.value=y,ge(()=>{p.value&&(p.value.value=y,a.value=y.trim().length>0)}))}function Y(){w.value={scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}}function G(){I.value=!0}function O(){I.value=!1,c.value=k.value}function M(p){k.value=je("",p),I.value||(c.value=k.value)}return{prompt:u,promptHasContent:a,mode:f,model:o,providerId:S,thinkingEnabled:x,effortLevel:E,startImmediately:g,quickGitMode:n,quickWorktreeBranch:c,editingBranch:I,autoBranchName:k,selectedTemplateId:N,startFromTemplateId:V,parentSessionId:K,schedulingData:w,usingDefaults:T,applyProjectDefaults:U,restoreDraftFromStorage:ee,resetSchedulingData:Y,handleBranchEdit:G,resetBranchName:O,updateAutoBranchName:M}}function nt(t,u){if(!t)return;const a=t.selectionStart,f=t.selectionEnd,o=t.value.substring(0,a),S=t.value.substring(f);t.value=o+u+S,t.selectionStart=t.selectionEnd=a+u.length,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus()}function ot(t,u){if(!t)return;const a=t.value.trim(),f=a?`${a}
1
+ import{I as ge,n as m,_ as de,a as r,c as d,b as l,E as ue,i as h,t as D,f as re,F as L,y as Ve,l as R,m as E,v as X,q as ie,p as _,k as Oe,A as xe,o as Me,d as $,w as Le,u as v,K as Z,r as H,G as fe,j as Ne,s as Ue,g as qe,x as A,h as Ge}from"./index-D1Lg5reX.js";import{g as je,u as Fe}from"./sessions-CoRS-wuR.js";import{u as Pe}from"./EffortLevelSelector-HuOPegKI.js";import{u as We,a as Qe,Q as ze}from"./QuickResponseSettings-Ds4X-J-t.js";import{a as He}from"./ApiClient-CcqJ-GAv.js";import{F as Ke,Q as Ye,u as Je}from"./QuickResponsesPanel-BY2v23c5.js";import{S as Xe}from"./SessionFormOptions-3LfqiLiR.js";import{R as Ze}from"./ResizableTextarea-C2s6_7X9.js";import{S as _e,a as et}from"./SlashCommandWizard-PXipO1yA.js";import{u as tt}from"./projects-CMJJca64.js";import"./settings-BN_W4nwV.js";import"./ModelSelector-CgpqdZtV.js";import"./providers-BCtNZWYw.js";function lt(t){const u=m(""),a=m(!1),f=m("yolo"),o=m(null),S=m(null),x=m(!0),C=m(null),g=m(!0),n=m("worktree"),c=m(""),I=m(!1),k=m(""),N=m(null),V=m(null),K=m(null),w=m({scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}),T=m({mode:!1,model:!1,thinkingEnabled:!1,startImmediately:!1,quickGitMode:!1,quickWorktreeBranch:!1});function U(p){p.mode&&(f.value=p.mode,T.value.mode=!0),p.model?(o.value=p.model,T.value.model=!0):(o.value="sonnet",T.value.model=!0),p.thinkingEnabled!==null&&p.thinkingEnabled!==void 0&&(x.value=p.thinkingEnabled,T.value.thinkingEnabled=!0),p.effortLevel&&(C.value=p.effortLevel),p.startImmediately!==null&&p.startImmediately!==void 0&&(g.value=p.startImmediately,T.value.startImmediately=!0),p.gitMode&&(n.value=p.gitMode,T.value.quickGitMode=!0),p.gitBranch&&(c.value=p.gitBranch,T.value.quickWorktreeBranch=!0)}function ee(p){const y=localStorage.getItem(t.value);y&&(u.value=y,ge(()=>{p.value&&(p.value.value=y,a.value=y.trim().length>0)}))}function Y(){w.value={scheduledAt:null,autoRescheduleEnabled:!1,rescheduleDelayMinutes:15,rescheduleOnTokenLimit:!0,rescheduleOnServiceError:!0,maxRescheduleCount:null,maxTotalTokens:null,rescheduleAtTokenCount:null}}function q(){I.value=!0}function O(){I.value=!1,c.value=k.value}function M(p){k.value=je("",p),I.value||(c.value=k.value)}return{prompt:u,promptHasContent:a,mode:f,model:o,providerId:S,thinkingEnabled:x,effortLevel:C,startImmediately:g,quickGitMode:n,quickWorktreeBranch:c,editingBranch:I,autoBranchName:k,selectedTemplateId:N,startFromTemplateId:V,parentSessionId:K,schedulingData:w,usingDefaults:T,applyProjectDefaults:U,restoreDraftFromStorage:ee,resetSchedulingData:Y,handleBranchEdit:q,resetBranchName:O,updateAutoBranchName:M}}function nt(t,u){if(!t)return;const a=t.selectionStart,f=t.selectionEnd,o=t.value.substring(0,a),S=t.value.substring(f);t.value=o+u+S,t.selectionStart=t.selectionEnd=a+u.length,t.dispatchEvent(new Event("input",{bubbles:!0})),t.focus()}function ot(t,u){if(!t)return;const a=t.value.trim(),f=a?`${a}
2
2
 
3
- ${u}`:u;t.value=f,t.dispatchEvent(new Event("input",{bubbles:!0}))}function st(t,u,a){t&&(u.prompt.value=t.prompt,a.value&&(a.value.value=t.prompt,a.value.dispatchEvent(new Event("input",{bubbles:!0}))),t.thinkingEnabled!=null&&(u.thinkingEnabled.value=t.thinkingEnabled),t.model&&(u.model.value=t.model),t.mode&&(u.mode.value=t.mode),t.gitBranch&&(u.quickWorktreeBranch.value=t.gitBranch,u.editingBranch.value=!0),t.gitMode&&(u.quickGitMode.value=t.gitMode),t.effortLevel!=null&&(u.effortLevel.value=t.effortLevel),t.nextTemplateId&&(u.selectedTemplateId.value=t.nextTemplateId))}function at(t,u){const{currentPrompt:a,gitStatus:f,files:o}=u,S=t.quickGitMode.value&&(f!=null&&f.isGitRepo)?t.quickGitMode.value:void 0;return{prompt:a,mode:t.mode.value,model:t.model.value,providerId:t.providerId.value,thinkingEnabled:t.thinkingEnabled.value,effortLevel:t.effortLevel.value,startImmediately:t.startImmediately.value,gitMode:S,gitBranch:S?t.quickWorktreeBranch.value:void 0,files:o,templateId:t.selectedTemplateId.value,parentSessionId:t.parentSessionId.value||null,scheduledAt:t.schedulingData.value.scheduledAt,autoRescheduleEnabled:t.schedulingData.value.autoRescheduleEnabled,rescheduleDelayMinutes:t.schedulingData.value.rescheduleDelayMinutes,rescheduleOnTokenLimit:t.schedulingData.value.rescheduleOnTokenLimit,rescheduleOnServiceError:t.schedulingData.value.rescheduleOnServiceError,maxRescheduleCount:t.schedulingData.value.maxRescheduleCount,maxTotalTokens:t.schedulingData.value.maxTotalTokens,rescheduleAtTokenCount:t.schedulingData.value.rescheduleAtTokenCount}}const ut={key:0,class:"form-group"},it={class:"segmented-control"},rt={key:0,class:"branch-input-row"},dt={class:"quick-branch-input"},mt=["value","placeholder"],ct={key:1,class:"current-branch-hint"},pt={key:1,class:"git-loading"},vt={__name:"GitOptionsPanel",props:{gitStatus:{type:Object,default:null},modelValue:{type:String,default:""},branchName:{type:String,default:""},autoBranchName:{type:String,default:""},editingBranch:{type:Boolean,default:!1},loadingGit:{type:Boolean,default:!1}},emits:["update:modelValue","update:branchName","branchEdit","resetBranch"],setup(t){return(u,a)=>{var f;return r(),d(L,null,[(f=t.gitStatus)!=null&&f.isGitRepo?(r(),d("div",ut,[a[9]||(a[9]=l("label",{class:"form-label"},"Git Options",-1)),l("div",it,[l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="worktree"}]),onClick:a[0]||(a[0]=o=>u.$emit("update:modelValue","worktree"))},[...a[6]||(a[6]=[l("span",{class:"segment-label-full"},"Worktree",-1),l("span",{class:"segment-label-short"},"WT",-1)])],2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="branch"}]),onClick:a[1]||(a[1]=o=>u.$emit("update:modelValue","branch"))}," Branch ",2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue===""}]),onClick:a[2]||(a[2]=o=>u.$emit("update:modelValue",""))}," Current ",2)]),t.modelValue?(r(),d("div",rt,[a[7]||(a[7]=l("label",{class:"form-label form-label-small"},"Branch Name",-1)),l("div",dt,[l("input",{value:t.branchName,type:"text",class:"form-input",placeholder:t.autoBranchName,onInput:a[3]||(a[3]=o=>u.$emit("update:branchName",o.target.value)),onFocus:a[4]||(a[4]=o=>u.$emit("branchEdit"))},null,40,mt),t.editingBranch?(r(),d("button",{key:0,type:"button",class:"btn btn-small",onClick:a[5]||(a[5]=o=>u.$emit("resetBranch"))}," Reset ")):h("",!0)]),a[8]||(a[8]=l("p",{class:"form-help"}," Auto-generated from prompt ",-1))])):h("",!0),t.modelValue===""?(r(),d("p",ct," On: "+D(t.gitStatus.currentBranch),1)):h("",!0)])):h("",!0),t.loadingGit?(r(),d("div",pt,[...a[10]||(a[10]=[l("span",{class:"loading-spinner"},null,-1),re(" Loading git info... ",-1)])])):h("",!0)],64)}}},ht=de(vt,[["__scopeId","data-v-59edf73d"]]),ft={class:"scheduling-options"},gt={key:0,class:"form-group"},bt={class:"form-group"},kt={class:"toggle-switch"},yt={key:1,class:"reschedule-settings"},Tt={class:"form-group"},St={class:"checkbox-option"},Ct={class:"checkbox-option"},Et={class:"form-group"},It={class:"limits-section"},Rt={class:"form-group"},wt={class:"form-group"},Bt={class:"form-group"},$t={__name:"SchedulingOptions",props:{modelValue:{type:Object,default:()=>({})},hideScheduledAt:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:u}){const a=t,f=u,o=Ve({scheduledAt:a.modelValue.scheduledAt||null,scheduledAtLocal:"",autoRescheduleEnabled:a.modelValue.autoRescheduleEnabled??!1,rescheduleDelayMinutes:a.modelValue.rescheduleDelayMinutes??15,rescheduleOnTokenLimit:a.modelValue.rescheduleOnTokenLimit??!0,rescheduleOnServiceError:a.modelValue.rescheduleOnServiceError??!0,maxRescheduleCount:a.modelValue.maxRescheduleCount??null,maxTotalTokens:a.modelValue.maxTotalTokens??null,rescheduleAtTokenCount:a.modelValue.rescheduleAtTokenCount??null});function S(){if(o.scheduledAtLocal){const g=new Date(o.scheduledAtLocal);o.scheduledAt=g.getTime()}else o.scheduledAt=null;E()}function x(g){if(!g)return"";const n=new Date(g),c=n.getFullYear(),I=String(n.getMonth()+1).padStart(2,"0"),k=String(n.getDate()).padStart(2,"0"),N=String(n.getHours()).padStart(2,"0"),V=String(n.getMinutes()).padStart(2,"0");return`${c}-${I}-${k}T${N}:${V}`}R(()=>a.modelValue.scheduledAt,g=>{g&&(o.scheduledAtLocal=x(g))},{immediate:!0});function E(){f("update:modelValue",{scheduledAt:o.scheduledAt,autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount})}return R(()=>({autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount}),()=>{E()},{deep:!0}),(g,n)=>(r(),d("div",ft,[t.hideScheduledAt?h("",!0):(r(),d("div",gt,[n[8]||(n[8]=l("label",{for:"scheduled-at",class:"form-label"},"Schedule Start Time (optional)",-1)),C(l("input",{id:"scheduled-at","onUpdate:modelValue":n[0]||(n[0]=c=>o.scheduledAtLocal=c),type:"datetime-local",class:"form-input",onChange:S},null,544),[[X,o.scheduledAtLocal]]),n[9]||(n[9]=l("p",{class:"form-help"}," Leave empty to start immediately ",-1))])),l("div",bt,[l("label",kt,[C(l("input",{"onUpdate:modelValue":n[1]||(n[1]=c=>o.autoRescheduleEnabled=c),type:"checkbox"},null,512),[[ie,o.autoRescheduleEnabled]]),n[10]||(n[10]=l("span",{class:"toggle-slider"},null,-1)),n[11]||(n[11]=l("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),o.autoRescheduleEnabled?(r(),d("div",yt,[l("div",Tt,[n[14]||(n[14]=l("p",{class:"settings-label"}," Reschedule Triggers ",-1)),l("label",St,[C(l("input",{"onUpdate:modelValue":n[2]||(n[2]=c=>o.rescheduleOnTokenLimit=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnTokenLimit]]),n[12]||(n[12]=l("span",{class:"checkbox-label"},"Token limit errors",-1))]),l("label",Ct,[C(l("input",{"onUpdate:modelValue":n[3]||(n[3]=c=>o.rescheduleOnServiceError=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnServiceError]]),n[13]||(n[13]=l("span",{class:"checkbox-label"},"Service unavailability",-1))])]),l("div",Et,[n[16]||(n[16]=l("label",{for:"reschedule-delay",class:"form-label"},"Reschedule Delay",-1)),C(l("select",{id:"reschedule-delay","onUpdate:modelValue":n[4]||(n[4]=c=>o.rescheduleDelayMinutes=c),class:"form-input"},[...n[15]||(n[15]=[l("option",{value:5}," 5 minutes ",-1),l("option",{value:15}," 15 minutes ",-1),l("option",{value:30}," 30 minutes ",-1),l("option",{value:60}," 1 hour ",-1),l("option",{value:120}," 2 hours ",-1)])],512),[[_,o.rescheduleDelayMinutes,void 0,{number:!0}]])]),l("div",It,[n[23]||(n[23]=l("p",{class:"settings-label"}," Limits (optional) ",-1)),l("div",Rt,[n[17]||(n[17]=l("label",{for:"max-reschedule-count",class:"form-label"},"Max Reschedule Count",-1)),C(l("input",{id:"max-reschedule-count","onUpdate:modelValue":n[5]||(n[5]=c=>o.maxRescheduleCount=c),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxRescheduleCount,void 0,{number:!0}]]),n[18]||(n[18]=l("p",{class:"form-help"}," Stop after N reschedule attempts ",-1))]),l("div",wt,[n[19]||(n[19]=l("label",{for:"max-total-tokens",class:"form-label"},"Max Total Tokens (Hard Limit)",-1)),C(l("input",{id:"max-total-tokens","onUpdate:modelValue":n[6]||(n[6]=c=>o.maxTotalTokens=c),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxTotalTokens,void 0,{number:!0}]]),n[20]||(n[20]=l("p",{class:"form-help"}," Stop rescheduling after consuming this many tokens ",-1))]),l("div",Bt,[n[21]||(n[21]=l("label",{for:"reschedule-at-token-count",class:"form-label"},"Reschedule At Token Count",-1)),C(l("input",{id:"reschedule-at-token-count","onUpdate:modelValue":n[7]||(n[7]=c=>o.rescheduleAtTokenCount=c),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[X,o.rescheduleAtTokenCount,void 0,{number:!0}]]),n[22]||(n[22]=l("p",{class:"form-help"}," Proactively reschedule when session reaches this token count ",-1))])])])):h("",!0)]))}},At=de($t,[["__scopeId","data-v-cfbba021"]]),Dt={class:"container"},Vt={key:0,class:"form-group"},Ot={key:0,label:"Project Templates"},xt=["value"],Mt={key:1,label:"Global Templates"},Lt=["value"],Nt={class:"form-group"},Ut={class:"attachment-row"},Gt={key:1,class:"error-message"},qt={key:1,class:"form-group"},jt={key:0,label:"Project Templates"},Ft=["value"],Pt={key:1,label:"Global Templates"},Wt=["value"],Qt={key:2,class:"form-group"},zt=["value"],Ht={class:"form-actions"},Kt=["disabled"],Yt={key:0,class:"loading-spinner"},Jt={__name:"NewSessionView",setup(t){const u=Ue(),a=qe(),f=Fe();Oe();const o=Pe(),S=We(),x=tt(),E=A(()=>`new-session-draft-${u.params.id}`),g=lt(E),{prompt:n,promptHasContent:c,mode:I,model:k,providerId:N,thinkingEnabled:V,effortLevel:K,startImmediately:w,quickGitMode:T,quickWorktreeBranch:U,editingBranch:ee,autoBranchName:Y,selectedTemplateId:G,startFromTemplateId:O,parentSessionId:M,schedulingData:p,usingDefaults:y,applyProjectDefaults:be,restoreDraftFromStorage:ke,resetSchedulingData:ye,handleBranchEdit:Te,resetBranchName:Se,updateAutoBranchName:me}=g,B=m(null);let q=null,j=null,F=null;const P=m(!1),te=m(!1),le=m(!1),Ce=A(()=>window.innerWidth<=480?80:120),Ee=Je(()=>{var e;const i=((e=B.value)==null?void 0:e.value)||n.value;!P.value&&i.trim()&&ae()}),W=m(null),ce=m([]),pe=m(null),ve=m(null),Q=A(()=>o.projectTemplates),z=A(()=>o.globalTemplates),ne=A(()=>[...Q.value,...z.value]),he=A(()=>{const i=x.getProjectById(u.params.id);return(i==null?void 0:i.workingDirectory)||null}),oe=A(()=>f.sessions.filter(i=>i.status==="completed").sort((i,e)=>new Date(e.createdAt)-new Date(i.createdAt))),Ie=A(()=>!w.value||ne.value.length>0||oe.value.length>0),se=m(!1),J=m(null);function Re(i){var s;const e=i.target.value,b=e.trim().length>0;c.value!==b&&(c.value=b),q&&clearTimeout(q),q=setTimeout(()=>{n.value=e},150),(s=W.value)!=null&&s.isGitRepo&&(F&&clearTimeout(F),F=setTimeout(()=>me(e),300))}R(()=>W.value,i=>{i!=null&&i.isGitRepo&&!Y.value&&me(n.value)},{immediate:!0}),R(I,()=>{y.value.mode=!1}),R(k,()=>{y.value.model=!1}),R(V,()=>{y.value.thinkingEnabled=!1}),R(w,i=>{y.value.startImmediately=!1,i?ye():ge(()=>{var e;(e=ve.value)==null||e.scrollIntoView({behavior:"smooth",block:"nearest"})})}),R(T,()=>{y.value.quickGitMode=!1}),R(U,()=>{y.value.quickWorktreeBranch=!1}),R(n,i=>{j&&clearTimeout(j),j=setTimeout(()=>{i.trim()?localStorage.setItem(E.value,i):localStorage.removeItem(E.value)},500)}),xe(()=>{F&&clearTimeout(F),q&&clearTimeout(q),j&&clearTimeout(j)}),Me(async()=>{const i=u.params.id;ke(B);try{await S.fetchDefaults(i);const b=S.getDefaultsForProject(i);b?be(b):(k.value="sonnet",y.value.model=!0)}catch(b){console.warn("Failed to fetch project defaults:",b),k.value||(k.value="sonnet",y.value.model=!0)}se.value=!0;try{W.value=await He.getGitStatus(i)}catch{}finally{se.value=!1}o.fetchProjectTemplates(i),Qe().fetchForProject(i),u.query.parentSessionId&&(M.value=u.query.parentSessionId)});function we(){a.push(`/projects/${u.params.id}/sessions`)}function Be({text:i}){nt(B.value,i)}function $e({content:i,autoSubmit:e}){var b;ot(B.value,i),e?setTimeout(()=>ae(),0):(b=B.value)==null||b.blur()}function Ae(){const i=O.value&&o.getTemplateById(O.value);st(i,g,B)}async function ae(){var e,b;const i=((e=B.value)==null?void 0:e.value)||n.value;if(i.trim()){P.value=!0,J.value=null;try{const s=at(g,{currentPrompt:i,gitStatus:W.value,files:ce.value}),De=await f.createSession(u.params.id,s);(b=pe.value)==null||b.clear(),localStorage.removeItem(E.value),a.push(`/sessions/${De.id}?overlay=open`)}catch(s){J.value=s.message}finally{P.value=!1}}}return(i,e)=>{const b=Ge("router-link");return r(),d("div",Dt,[$(b,{to:`/projects/${v(u).params.id}/sessions`,class:"back-link"},{default:Le(()=>[...e[17]||(e[17]=[re(" ← Sessions ",-1)])]),_:1},8,["to"]),e[26]||(e[26]=l("h1",null,"New Session",-1)),l("form",{class:"form card",onSubmit:Ne(ae,["prevent"])},[ne.value.length>0?(r(),d("div",Vt,[e[19]||(e[19]=l("label",{class:"form-label",for:"start-from-template"},"Start From Template",-1)),C(l("select",{id:"start-from-template","onUpdate:modelValue":e[0]||(e[0]=s=>Z(O)?O.value=s:null),class:"form-input",title:"Selecting a template will populate all form fields below. You can still edit before starting.",onChange:Ae},[e[18]||(e[18]=l("option",{value:null}," Select a template to pre-fill... ",-1)),Q.value.length?(r(),d("optgroup",Ot,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,xt))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Mt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Lt))),128))])):h("",!0)],544),[[_,v(O)]])])):h("",!0),l("div",Nt,[$(Ze,{id:"prompt",ref_key:"textareaRef",ref:B,class:"form-input form-textarea",placeholder:"What would you like Claude to help you with?","min-height":Ce.value,required:"",onInput:Re,onKeydown:v(Ee)},null,8,["min-height","onKeydown"]),l("div",Ut,[$(Ke,{ref_key:"fileAttachment",ref:pe,"onUpdate:files":e[1]||(e[1]=s=>ce.value=s)},null,512),he.value?(r(),fe(_e,{key:0,onOpen:e[2]||(e[2]=s=>te.value=!0)})):h("",!0)])]),$(Ye,{"show-empty":!0,onInsert:$e,onOpenSettings:e[3]||(e[3]=s=>le.value=!0)}),$(Xe,{mode:v(I),model:v(k),"effort-level":v(K),"thinking-enabled":v(V),"start-immediately":v(w),"onUpdate:mode":e[4]||(e[4]=s=>I.value=s),"onUpdate:model":e[5]||(e[5]=s=>k.value=s),"onUpdate:providerId":e[6]||(e[6]=s=>N.value=s),"onUpdate:effortLevel":e[7]||(e[7]=s=>K.value=s),"onUpdate:thinkingEnabled":e[8]||(e[8]=s=>V.value=s),"onUpdate:startImmediately":e[9]||(e[9]=s=>w.value=s)},null,8,["mode","model","effort-level","thinking-enabled","start-immediately"]),J.value?(r(),d("div",Gt,D(J.value),1)):h("",!0),$(ht,{"git-status":W.value,"model-value":v(T),"branch-name":v(U),"auto-branch-name":v(Y),"editing-branch":v(ee),"loading-git":se.value,"onUpdate:modelValue":e[10]||(e[10]=s=>T.value=s),"onUpdate:branchName":e[11]||(e[11]=s=>U.value=s),onBranchEdit:v(Te),onResetBranch:v(Se)},null,8,["git-status","model-value","branch-name","auto-branch-name","editing-branch","loading-git","onBranchEdit","onResetBranch"]),Ie.value?(r(),d("div",{key:2,ref_key:"advancedOptionsRef",ref:ve,class:"advanced-options"},[v(w)?h("",!0):(r(),fe(At,{key:0,modelValue:v(p),"onUpdate:modelValue":e[12]||(e[12]=s=>Z(p)?p.value=s:null)},null,8,["modelValue"])),ne.value.length>0?(r(),d("div",qt,[e[21]||(e[21]=l("label",{class:"form-label",for:"template"},"Next Template (optional)",-1)),C(l("select",{id:"template","onUpdate:modelValue":e[13]||(e[13]=s=>Z(G)?G.value=s:null),class:"form-input"},[e[20]||(e[20]=l("option",{value:null}," None - single session ",-1)),Q.value.length?(r(),d("optgroup",jt,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Ft))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Pt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Wt))),128))])):h("",!0)],512),[[_,v(G)]]),e[22]||(e[22]=l("p",{class:"form-help"}," After this session completes, the selected template will automatically start a new session. ",-1))])):h("",!0),oe.value.length>0?(r(),d("div",Qt,[e[24]||(e[24]=l("label",{class:"form-label",for:"parent-session"},"Parent Session (optional)",-1)),C(l("select",{id:"parent-session","onUpdate:modelValue":e[14]||(e[14]=s=>Z(M)?M.value=s:null),class:"form-input"},[e[23]||(e[23]=l("option",{value:null}," None - create standalone session ",-1)),(r(!0),d(L,null,H(oe.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,zt))),128))],512),[[_,v(M)]]),e[25]||(e[25]=l("p",{class:"form-help"}," Choose a parent session to link this as a child session. Child sessions help organize related work. ",-1))])):h("",!0)],512)):h("",!0),l("div",Ht,[l("button",{type:"button",class:"btn btn-secondary",onClick:we}," Cancel "),l("button",{type:"submit",class:"btn btn-primary btn-submit",disabled:P.value},[P.value?(r(),d("span",Yt)):h("",!0),re(" "+D(v(w)?"Start Session":"Create Draft"),1)],8,Kt)])],32),$(et,{"is-open":te.value,"onUpdate:isOpen":e[15]||(e[15]=s=>te.value=s),"working-directory":he.value||"",mode:"insert","hide-builtin":!0,onInsert:Be},null,8,["is-open","working-directory"]),$(ze,{"is-open":le.value,"project-id":v(u).params.id,onClose:e[16]||(e[16]=s=>le.value=!1)},null,8,["is-open","project-id"])])}}},dl=de(Jt,[["__scopeId","data-v-058549da"]]);export{dl as default};
3
+ ${u}`:u;t.value=f,t.dispatchEvent(new Event("input",{bubbles:!0}))}function st(t,u,a){t&&(u.prompt.value=t.prompt,a.value&&(a.value.value=t.prompt,a.value.dispatchEvent(new Event("input",{bubbles:!0}))),t.thinkingEnabled!=null&&(u.thinkingEnabled.value=t.thinkingEnabled),t.model&&(u.model.value=t.model),t.mode&&(u.mode.value=t.mode),t.gitBranch&&(u.quickWorktreeBranch.value=t.gitBranch,u.editingBranch.value=!0),t.gitMode&&(u.quickGitMode.value=t.gitMode),t.effortLevel!=null&&(u.effortLevel.value=t.effortLevel),t.nextTemplateId&&(u.selectedTemplateId.value=t.nextTemplateId))}function at(t,u){const{currentPrompt:a,gitStatus:f,files:o}=u,S=t.quickGitMode.value&&(f!=null&&f.isGitRepo)?t.quickGitMode.value:void 0;return{prompt:a,mode:t.mode.value,model:t.model.value,providerId:t.providerId.value,thinkingEnabled:t.thinkingEnabled.value,effortLevel:t.effortLevel.value,startImmediately:t.startImmediately.value,gitMode:S,gitBranch:S?t.quickWorktreeBranch.value:void 0,files:o,templateId:t.selectedTemplateId.value,parentSessionId:t.parentSessionId.value||null,scheduledAt:t.schedulingData.value.scheduledAt,autoRescheduleEnabled:t.schedulingData.value.autoRescheduleEnabled,rescheduleDelayMinutes:t.schedulingData.value.rescheduleDelayMinutes,rescheduleOnTokenLimit:t.schedulingData.value.rescheduleOnTokenLimit,rescheduleOnServiceError:t.schedulingData.value.rescheduleOnServiceError,maxRescheduleCount:t.schedulingData.value.maxRescheduleCount,maxTotalTokens:t.schedulingData.value.maxTotalTokens,rescheduleAtTokenCount:t.schedulingData.value.rescheduleAtTokenCount}}const ut={key:0,class:"form-group"},it={class:"segmented-control"},rt={key:0,class:"branch-input-row"},dt={class:"quick-branch-input"},mt=["value","placeholder"],ct={key:1,class:"current-branch-hint"},pt={key:1,class:"git-loading"},vt={__name:"GitOptionsPanel",props:{gitStatus:{type:Object,default:null},modelValue:{type:String,default:""},branchName:{type:String,default:""},autoBranchName:{type:String,default:""},editingBranch:{type:Boolean,default:!1},loadingGit:{type:Boolean,default:!1}},emits:["update:modelValue","update:branchName","branchEdit","resetBranch"],setup(t){return(u,a)=>{var f;return r(),d(L,null,[(f=t.gitStatus)!=null&&f.isGitRepo?(r(),d("div",ut,[a[9]||(a[9]=l("label",{class:"form-label"},"Git Options",-1)),l("div",it,[l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="worktree"}]),onClick:a[0]||(a[0]=o=>u.$emit("update:modelValue","worktree"))},[...a[6]||(a[6]=[l("span",{class:"segment-label-full"},"Worktree",-1),l("span",{class:"segment-label-short"},"WT",-1)])],2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue==="branch"}]),onClick:a[1]||(a[1]=o=>u.$emit("update:modelValue","branch"))}," Branch ",2),l("button",{type:"button",class:ue(["segment-btn",{"segment-btn--active":t.modelValue===""}]),onClick:a[2]||(a[2]=o=>u.$emit("update:modelValue",""))}," Current ",2)]),t.modelValue?(r(),d("div",rt,[a[7]||(a[7]=l("label",{class:"form-label form-label-small"},"Branch Name",-1)),l("div",dt,[l("input",{value:t.branchName,type:"text",class:"form-input",placeholder:t.autoBranchName,onInput:a[3]||(a[3]=o=>u.$emit("update:branchName",o.target.value)),onFocus:a[4]||(a[4]=o=>u.$emit("branchEdit"))},null,40,mt),t.editingBranch?(r(),d("button",{key:0,type:"button",class:"btn btn-small",onClick:a[5]||(a[5]=o=>u.$emit("resetBranch"))}," Reset ")):h("",!0)]),a[8]||(a[8]=l("p",{class:"form-help"}," Auto-generated from prompt ",-1))])):h("",!0),t.modelValue===""?(r(),d("p",ct," On: "+D(t.gitStatus.currentBranch),1)):h("",!0)])):h("",!0),t.loadingGit?(r(),d("div",pt,[...a[10]||(a[10]=[l("span",{class:"loading-spinner"},null,-1),re(" Loading git info... ",-1)])])):h("",!0)],64)}}},ht=de(vt,[["__scopeId","data-v-59edf73d"]]),ft={class:"scheduling-options"},gt={key:0,class:"form-group"},bt={class:"form-group"},kt={class:"toggle-switch"},yt={key:1,class:"reschedule-settings"},Tt={class:"form-group"},St={class:"checkbox-option"},Et={class:"checkbox-option"},Ct={class:"form-group"},It={class:"limits-section"},Rt={class:"form-group"},wt={class:"form-group"},Bt={class:"form-group"},$t={__name:"SchedulingOptions",props:{modelValue:{type:Object,default:()=>({})},hideScheduledAt:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:u}){const a=t,f=u,o=Ve({scheduledAt:a.modelValue.scheduledAt||null,scheduledAtLocal:"",autoRescheduleEnabled:a.modelValue.autoRescheduleEnabled??!1,rescheduleDelayMinutes:a.modelValue.rescheduleDelayMinutes??15,rescheduleOnTokenLimit:a.modelValue.rescheduleOnTokenLimit??!0,rescheduleOnServiceError:a.modelValue.rescheduleOnServiceError??!0,maxRescheduleCount:a.modelValue.maxRescheduleCount??null,maxTotalTokens:a.modelValue.maxTotalTokens??null,rescheduleAtTokenCount:a.modelValue.rescheduleAtTokenCount??null});function S(){if(o.scheduledAtLocal){const g=new Date(o.scheduledAtLocal);o.scheduledAt=g.getTime()}else o.scheduledAt=null;C()}function x(g){if(!g)return"";const n=new Date(g),c=n.getFullYear(),I=String(n.getMonth()+1).padStart(2,"0"),k=String(n.getDate()).padStart(2,"0"),N=String(n.getHours()).padStart(2,"0"),V=String(n.getMinutes()).padStart(2,"0");return`${c}-${I}-${k}T${N}:${V}`}R(()=>a.modelValue.scheduledAt,g=>{g&&(o.scheduledAtLocal=x(g))},{immediate:!0});function C(){f("update:modelValue",{scheduledAt:o.scheduledAt,autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount})}return R(()=>({autoRescheduleEnabled:o.autoRescheduleEnabled,rescheduleDelayMinutes:o.rescheduleDelayMinutes,rescheduleOnTokenLimit:o.rescheduleOnTokenLimit,rescheduleOnServiceError:o.rescheduleOnServiceError,maxRescheduleCount:o.maxRescheduleCount,maxTotalTokens:o.maxTotalTokens,rescheduleAtTokenCount:o.rescheduleAtTokenCount}),()=>{C()},{deep:!0}),(g,n)=>(r(),d("div",ft,[t.hideScheduledAt?h("",!0):(r(),d("div",gt,[n[8]||(n[8]=l("label",{for:"scheduled-at",class:"form-label"},"Schedule Start Time (optional)",-1)),E(l("input",{id:"scheduled-at","onUpdate:modelValue":n[0]||(n[0]=c=>o.scheduledAtLocal=c),type:"datetime-local",class:"form-input",onChange:S},null,544),[[X,o.scheduledAtLocal]]),n[9]||(n[9]=l("p",{class:"form-help"}," Leave empty to start immediately ",-1))])),l("div",bt,[l("label",kt,[E(l("input",{"onUpdate:modelValue":n[1]||(n[1]=c=>o.autoRescheduleEnabled=c),type:"checkbox"},null,512),[[ie,o.autoRescheduleEnabled]]),n[10]||(n[10]=l("span",{class:"toggle-slider"},null,-1)),n[11]||(n[11]=l("span",{class:"toggle-label"},"Auto-reschedule on errors",-1))])]),o.autoRescheduleEnabled?(r(),d("div",yt,[l("div",Tt,[n[14]||(n[14]=l("p",{class:"settings-label"}," Reschedule Triggers ",-1)),l("label",St,[E(l("input",{"onUpdate:modelValue":n[2]||(n[2]=c=>o.rescheduleOnTokenLimit=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnTokenLimit]]),n[12]||(n[12]=l("span",{class:"checkbox-label"},"Token limit errors",-1))]),l("label",Et,[E(l("input",{"onUpdate:modelValue":n[3]||(n[3]=c=>o.rescheduleOnServiceError=c),type:"checkbox"},null,512),[[ie,o.rescheduleOnServiceError]]),n[13]||(n[13]=l("span",{class:"checkbox-label"},"Service unavailability",-1))])]),l("div",Ct,[n[16]||(n[16]=l("label",{for:"reschedule-delay",class:"form-label"},"Reschedule Delay",-1)),E(l("select",{id:"reschedule-delay","onUpdate:modelValue":n[4]||(n[4]=c=>o.rescheduleDelayMinutes=c),class:"form-input"},[...n[15]||(n[15]=[l("option",{value:5}," 5 minutes ",-1),l("option",{value:15}," 15 minutes ",-1),l("option",{value:30}," 30 minutes ",-1),l("option",{value:60}," 1 hour ",-1),l("option",{value:120}," 2 hours ",-1)])],512),[[_,o.rescheduleDelayMinutes,void 0,{number:!0}]])]),l("div",It,[n[23]||(n[23]=l("p",{class:"settings-label"}," Limits (optional) ",-1)),l("div",Rt,[n[17]||(n[17]=l("label",{for:"max-reschedule-count",class:"form-label"},"Max Reschedule Count",-1)),E(l("input",{id:"max-reschedule-count","onUpdate:modelValue":n[5]||(n[5]=c=>o.maxRescheduleCount=c),type:"number",min:"1",max:"100",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxRescheduleCount,void 0,{number:!0}]]),n[18]||(n[18]=l("p",{class:"form-help"}," Stop after N reschedule attempts ",-1))]),l("div",wt,[n[19]||(n[19]=l("label",{for:"max-total-tokens",class:"form-label"},"Max Total Tokens (Hard Limit)",-1)),E(l("input",{id:"max-total-tokens","onUpdate:modelValue":n[6]||(n[6]=c=>o.maxTotalTokens=c),type:"number",min:"1000",step:"1000",class:"form-input",placeholder:"Unlimited"},null,512),[[X,o.maxTotalTokens,void 0,{number:!0}]]),n[20]||(n[20]=l("p",{class:"form-help"}," Stop rescheduling after consuming this many tokens ",-1))]),l("div",Bt,[n[21]||(n[21]=l("label",{for:"reschedule-at-token-count",class:"form-label"},"Reschedule At Token Count",-1)),E(l("input",{id:"reschedule-at-token-count","onUpdate:modelValue":n[7]||(n[7]=c=>o.rescheduleAtTokenCount=c),type:"number",min:"10000",step:"10000",class:"form-input",placeholder:"None"},null,512),[[X,o.rescheduleAtTokenCount,void 0,{number:!0}]]),n[22]||(n[22]=l("p",{class:"form-help"}," Proactively reschedule when session reaches this token count ",-1))])])])):h("",!0)]))}},At=de($t,[["__scopeId","data-v-cfbba021"]]),Dt={class:"container"},Vt={key:0,class:"form-group"},Ot={key:0,label:"Project Templates"},xt=["value"],Mt={key:1,label:"Global Templates"},Lt=["value"],Nt={class:"form-group"},Ut={class:"attachment-row"},qt={key:1,class:"error-message"},Gt={key:1,class:"form-group"},jt={key:0,label:"Project Templates"},Ft=["value"],Pt={key:1,label:"Global Templates"},Wt=["value"],Qt={key:2,class:"form-group"},zt=["value"],Ht={class:"form-actions"},Kt=["disabled"],Yt={key:0,class:"loading-spinner"},Jt={__name:"NewSessionView",setup(t){const u=Ue(),a=Ge(),f=Fe();Oe();const o=Pe(),S=We(),x=tt(),C=A(()=>`new-session-draft-${u.params.id}`),g=lt(C),{prompt:n,promptHasContent:c,mode:I,model:k,providerId:N,thinkingEnabled:V,effortLevel:K,startImmediately:w,quickGitMode:T,quickWorktreeBranch:U,editingBranch:ee,autoBranchName:Y,selectedTemplateId:q,startFromTemplateId:O,parentSessionId:M,schedulingData:p,usingDefaults:y,applyProjectDefaults:be,restoreDraftFromStorage:ke,resetSchedulingData:ye,handleBranchEdit:Te,resetBranchName:Se,updateAutoBranchName:me}=g,B=m(null);let G=null,j=null,F=null;const P=m(!1),te=m(!1),le=m(!1),Ee=A(()=>window.innerWidth<=480?80:120),Ce=Je(()=>{var e;const i=((e=B.value)==null?void 0:e.value)||n.value;!P.value&&i.trim()&&ae()}),W=m(null),ce=m([]),pe=m(null),ve=m(null),Q=A(()=>o.projectTemplates),z=A(()=>o.globalTemplates),ne=A(()=>[...Q.value,...z.value]),he=A(()=>{const i=x.getProjectById(u.params.id);return(i==null?void 0:i.workingDirectory)||null}),oe=A(()=>f.sessions.filter(i=>i.status==="completed").sort((i,e)=>new Date(e.createdAt)-new Date(i.createdAt))),Ie=A(()=>!w.value||ne.value.length>0||oe.value.length>0),se=m(!1),J=m(null);function Re(i){var s;const e=i.target.value,b=e.trim().length>0;c.value!==b&&(c.value=b),G&&clearTimeout(G),G=setTimeout(()=>{n.value=e},150),(s=W.value)!=null&&s.isGitRepo&&(F&&clearTimeout(F),F=setTimeout(()=>me(e),300))}R(()=>W.value,i=>{i!=null&&i.isGitRepo&&!Y.value&&me(n.value)},{immediate:!0}),R(I,()=>{y.value.mode=!1}),R(k,()=>{y.value.model=!1}),R(V,()=>{y.value.thinkingEnabled=!1}),R(w,i=>{y.value.startImmediately=!1,i?ye():ge(()=>{var e;(e=ve.value)==null||e.scrollIntoView({behavior:"smooth",block:"nearest"})})}),R(T,()=>{y.value.quickGitMode=!1}),R(U,()=>{y.value.quickWorktreeBranch=!1}),R(n,i=>{j&&clearTimeout(j),j=setTimeout(()=>{i.trim()?localStorage.setItem(C.value,i):localStorage.removeItem(C.value)},500)}),xe(()=>{F&&clearTimeout(F),G&&clearTimeout(G),j&&clearTimeout(j)}),Me(async()=>{const i=u.params.id;ke(B);try{await S.fetchDefaults(i);const b=S.getDefaultsForProject(i);b?be(b):(k.value="sonnet",y.value.model=!0)}catch(b){console.warn("Failed to fetch project defaults:",b),k.value||(k.value="sonnet",y.value.model=!0)}se.value=!0;try{W.value=await He.getGitStatus(i)}catch{}finally{se.value=!1}o.fetchProjectTemplates(i),Qe().fetchForProject(i),u.query.parentSessionId&&(M.value=u.query.parentSessionId)});function we(){a.push(`/projects/${u.params.id}/sessions`)}function Be({text:i}){nt(B.value,i)}function $e({content:i,autoSubmit:e}){var b;ot(B.value,i),e?setTimeout(()=>ae(),0):(b=B.value)==null||b.blur()}function Ae(){const i=O.value&&o.getTemplateById(O.value);st(i,g,B)}async function ae(){var e,b;const i=((e=B.value)==null?void 0:e.value)||n.value;if(i.trim()){P.value=!0,J.value=null;try{const s=at(g,{currentPrompt:i,gitStatus:W.value,files:ce.value}),De=await f.createSession(u.params.id,s);(b=pe.value)==null||b.clear(),localStorage.removeItem(C.value),a.push(`/sessions/${De.id}?overlay=open`)}catch(s){J.value=s.message}finally{P.value=!1}}}return(i,e)=>{const b=qe("router-link");return r(),d("div",Dt,[$(b,{to:`/projects/${v(u).params.id}/sessions`,class:"back-link"},{default:Le(()=>[...e[17]||(e[17]=[re(" ← Sessions ",-1)])]),_:1},8,["to"]),e[26]||(e[26]=l("h1",null,"New Session",-1)),l("form",{class:"form card",onSubmit:Ne(ae,["prevent"])},[ne.value.length>0?(r(),d("div",Vt,[e[19]||(e[19]=l("label",{class:"form-label",for:"start-from-template"},"Start From Template",-1)),E(l("select",{id:"start-from-template","onUpdate:modelValue":e[0]||(e[0]=s=>Z(O)?O.value=s:null),class:"form-input",title:"Selecting a template will populate all form fields below. You can still edit before starting.",onChange:Ae},[e[18]||(e[18]=l("option",{value:null}," Select a template to pre-fill... ",-1)),Q.value.length?(r(),d("optgroup",Ot,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,xt))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Mt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Lt))),128))])):h("",!0)],544),[[_,v(O)]])])):h("",!0),l("div",Nt,[$(Ze,{id:"prompt",ref_key:"textareaRef",ref:B,class:"form-input form-textarea",placeholder:"What would you like the agent to help you with?","min-height":Ee.value,required:"",onInput:Re,onKeydown:v(Ce)},null,8,["min-height","onKeydown"]),l("div",Ut,[$(Ke,{ref_key:"fileAttachment",ref:pe,"onUpdate:files":e[1]||(e[1]=s=>ce.value=s)},null,512),he.value?(r(),fe(_e,{key:0,onOpen:e[2]||(e[2]=s=>te.value=!0)})):h("",!0)])]),$(Ye,{"show-empty":!0,onInsert:$e,onOpenSettings:e[3]||(e[3]=s=>le.value=!0)}),$(Xe,{mode:v(I),model:v(k),"effort-level":v(K),"thinking-enabled":v(V),"start-immediately":v(w),"onUpdate:mode":e[4]||(e[4]=s=>I.value=s),"onUpdate:model":e[5]||(e[5]=s=>k.value=s),"onUpdate:providerId":e[6]||(e[6]=s=>N.value=s),"onUpdate:effortLevel":e[7]||(e[7]=s=>K.value=s),"onUpdate:thinkingEnabled":e[8]||(e[8]=s=>V.value=s),"onUpdate:startImmediately":e[9]||(e[9]=s=>w.value=s)},null,8,["mode","model","effort-level","thinking-enabled","start-immediately"]),J.value?(r(),d("div",qt,D(J.value),1)):h("",!0),$(ht,{"git-status":W.value,"model-value":v(T),"branch-name":v(U),"auto-branch-name":v(Y),"editing-branch":v(ee),"loading-git":se.value,"onUpdate:modelValue":e[10]||(e[10]=s=>T.value=s),"onUpdate:branchName":e[11]||(e[11]=s=>U.value=s),onBranchEdit:v(Te),onResetBranch:v(Se)},null,8,["git-status","model-value","branch-name","auto-branch-name","editing-branch","loading-git","onBranchEdit","onResetBranch"]),Ie.value?(r(),d("div",{key:2,ref_key:"advancedOptionsRef",ref:ve,class:"advanced-options"},[v(w)?h("",!0):(r(),fe(At,{key:0,modelValue:v(p),"onUpdate:modelValue":e[12]||(e[12]=s=>Z(p)?p.value=s:null)},null,8,["modelValue"])),ne.value.length>0?(r(),d("div",Gt,[e[21]||(e[21]=l("label",{class:"form-label",for:"template"},"Next Template (optional)",-1)),E(l("select",{id:"template","onUpdate:modelValue":e[13]||(e[13]=s=>Z(q)?q.value=s:null),class:"form-input"},[e[20]||(e[20]=l("option",{value:null}," None - single session ",-1)),Q.value.length?(r(),d("optgroup",jt,[(r(!0),d(L,null,H(Q.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Ft))),128))])):h("",!0),z.value.length?(r(),d("optgroup",Pt,[(r(!0),d(L,null,H(z.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,Wt))),128))])):h("",!0)],512),[[_,v(q)]]),e[22]||(e[22]=l("p",{class:"form-help"}," After this session completes, the selected template will automatically start a new session. ",-1))])):h("",!0),oe.value.length>0?(r(),d("div",Qt,[e[24]||(e[24]=l("label",{class:"form-label",for:"parent-session"},"Parent Session (optional)",-1)),E(l("select",{id:"parent-session","onUpdate:modelValue":e[14]||(e[14]=s=>Z(M)?M.value=s:null),class:"form-input"},[e[23]||(e[23]=l("option",{value:null}," None - create standalone session ",-1)),(r(!0),d(L,null,H(oe.value,s=>(r(),d("option",{key:s.id,value:s.id},D(s.name),9,zt))),128))],512),[[_,v(M)]]),e[25]||(e[25]=l("p",{class:"form-help"}," Choose a parent session to link this as a child session. Child sessions help organize related work. ",-1))])):h("",!0)],512)):h("",!0),l("div",Ht,[l("button",{type:"button",class:"btn btn-secondary",onClick:we}," Cancel "),l("button",{type:"submit",class:"btn btn-primary btn-submit",disabled:P.value},[P.value?(r(),d("span",Yt)):h("",!0),re(" "+D(v(w)?"Start Session":"Create Draft"),1)],8,Kt)])],32),$(et,{"is-open":te.value,"onUpdate:isOpen":e[15]||(e[15]=s=>te.value=s),"working-directory":he.value||"",mode:"insert","hide-builtin":!0,onInsert:Be},null,8,["is-open","working-directory"]),$(ze,{"is-open":le.value,"project-id":v(u).params.id,onClose:e[16]||(e[16]=s=>le.value=!1)},null,8,["is-open","project-id"])])}}},dl=de(Jt,[["__scopeId","data-v-7c8773e3"]]);export{dl as default};
@@ -1 +1 @@
1
- .form-help[data-v-59edf73d]{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.git-loading[data-v-59edf73d]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem;margin-bottom:1rem}.segmented-control[data-v-59edf73d]{display:flex;background:var(--color-background-mute, var(--color-bg-soft, #2a2a3e));border:1px solid var(--color-border);border-radius:.5rem;padding:.1875rem;gap:.125rem}.segment-btn[data-v-59edf73d]{flex:1;padding:.375rem .75rem;font-size:.8125rem;font-weight:500;color:var(--color-text-soft);background:transparent;border:none;border-radius:.375rem;cursor:pointer;transition:background-color .15s,color .15s;white-space:nowrap}.segment-btn[data-v-59edf73d]:hover{color:var(--color-text)}.segment-btn--active[data-v-59edf73d]{background-color:var(--color-primary, var(--color-accent, #22c55e));color:#fff}.segment-btn--active[data-v-59edf73d]:hover{color:#fff}.segment-label-short[data-v-59edf73d]{display:none}.branch-input-row[data-v-59edf73d]{margin-top:.5rem}.form-label-small[data-v-59edf73d]{font-size:.75rem;margin-bottom:.25rem}.quick-branch-input[data-v-59edf73d]{display:flex;gap:.5rem;align-items:center}.quick-branch-input input[data-v-59edf73d]{flex:1}.btn-small[data-v-59edf73d]{padding:.25rem .5rem;font-size:.75rem}.current-branch-hint[data-v-59edf73d]{margin-top:.375rem;font-size:.75rem;color:var(--color-text-soft)}@media (max-width: 480px){.segment-btn[data-v-59edf73d]{padding:.375rem .5rem;font-size:.75rem}.segment-label-full[data-v-59edf73d]{display:none}.segment-label-short[data-v-59edf73d]{display:inline}}.form-group[data-v-cfbba021]{margin-bottom:1rem}.form-label[data-v-cfbba021]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-cfbba021]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--border-radius, 4px);background:var(--color-background);color:var(--color-text);font-size:.95rem}.form-input[data-v-cfbba021]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-cfbba021]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-cfbba021]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-cfbba021]{display:none}.toggle-slider[data-v-cfbba021]{position:relative;display:inline-block;width:2.5rem;height:1.25rem;background-color:var(--color-border);border-radius:1rem;transition:background-color .2s}.toggle-slider[data-v-cfbba021]:after{content:"";position:absolute;width:1rem;height:1rem;border-radius:50%;background-color:#fff;top:.125rem;left:.125rem;transition:transform .2s}.toggle-switch input:checked+.toggle-slider[data-v-cfbba021]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-cfbba021]:after{transform:translate(1.25rem)}.toggle-label[data-v-cfbba021]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-cfbba021]{padding:1rem;margin-top:1rem;border-left:2px solid var(--color-primary);background:var(--color-background, rgba(255, 255, 255, .02))}.settings-label[data-v-cfbba021]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-cfbba021]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer}.checkbox-option input[data-v-cfbba021]{width:1rem;height:1rem;cursor:pointer}.checkbox-label[data-v-cfbba021]{color:var(--color-text)}.limits-section[data-v-cfbba021]{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}@media (max-width: 480px){.form-group[data-v-cfbba021]{margin-bottom:.5rem}}.back-link[data-v-058549da]{font-size:.875rem;color:var(--color-text-soft);display:inline-block;margin-bottom:.25rem;margin-top:0}h1[data-v-058549da]{margin-bottom:.5rem;margin-top:0}.form[data-v-058549da]{width:100%}.form-help[data-v-058549da]{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.attachment-row[data-v-058549da]{margin-top:.5rem;display:flex;gap:.5rem;align-items:center}.form-actions[data-v-058549da]{display:flex;gap:.75rem;align-items:center;margin-top:1rem}.btn-submit[data-v-058549da]{flex:1;justify-content:center;text-align:center;padding-top:.75rem;padding-bottom:.75rem;font-size:1.05rem}.btn-secondary[data-v-058549da]{padding:.75rem 1.25rem;font-size:1.05rem;background:transparent;border:1px solid var(--color-border);color:var(--color-text-soft);border-radius:var(--border-radius, 4px);cursor:pointer;transition:border-color .15s,color .15s}.btn-secondary[data-v-058549da]:hover{border-color:var(--color-border-hover);color:var(--color-text)}.error-message[data-v-058549da]{color:var(--color-error);margin-bottom:1rem}.advanced-options[data-v-058549da]{margin-top:.5rem;margin-bottom:.5rem}@media (max-width: 480px){h1[data-v-058549da]{margin-bottom:.5rem;font-size:1.5rem}.form.card[data-v-058549da]{padding:.75rem}}@media (max-width: 640px){.form-actions[data-v-058549da]{position:sticky;bottom:0;background:var(--color-background-soft, var(--color-bg-soft, #1a1a2e));border-top:1px solid var(--color-border);padding:.75rem 1rem;margin:0 -1rem -1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));z-index:10}}
1
+ .form-help[data-v-59edf73d]{margin:.25rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.git-loading[data-v-59edf73d]{display:flex;align-items:center;gap:.5rem;color:var(--color-text-soft);font-size:.875rem;margin-bottom:1rem}.segmented-control[data-v-59edf73d]{display:flex;background:var(--color-background-mute, var(--color-bg-soft, #2a2a3e));border:1px solid var(--color-border);border-radius:.5rem;padding:.1875rem;gap:.125rem}.segment-btn[data-v-59edf73d]{flex:1;padding:.375rem .75rem;font-size:.8125rem;font-weight:500;color:var(--color-text-soft);background:transparent;border:none;border-radius:.375rem;cursor:pointer;transition:background-color .15s,color .15s;white-space:nowrap}.segment-btn[data-v-59edf73d]:hover{color:var(--color-text)}.segment-btn--active[data-v-59edf73d]{background-color:var(--color-primary, var(--color-accent, #22c55e));color:#fff}.segment-btn--active[data-v-59edf73d]:hover{color:#fff}.segment-label-short[data-v-59edf73d]{display:none}.branch-input-row[data-v-59edf73d]{margin-top:.5rem}.form-label-small[data-v-59edf73d]{font-size:.75rem;margin-bottom:.25rem}.quick-branch-input[data-v-59edf73d]{display:flex;gap:.5rem;align-items:center}.quick-branch-input input[data-v-59edf73d]{flex:1}.btn-small[data-v-59edf73d]{padding:.25rem .5rem;font-size:.75rem}.current-branch-hint[data-v-59edf73d]{margin-top:.375rem;font-size:.75rem;color:var(--color-text-soft)}@media (max-width: 480px){.segment-btn[data-v-59edf73d]{padding:.375rem .5rem;font-size:.75rem}.segment-label-full[data-v-59edf73d]{display:none}.segment-label-short[data-v-59edf73d]{display:inline}}.form-group[data-v-cfbba021]{margin-bottom:1rem}.form-label[data-v-cfbba021]{display:block;margin-bottom:.5rem;font-weight:500;color:var(--color-text)}.form-input[data-v-cfbba021]{width:100%;padding:.5rem;border:1px solid var(--color-border);border-radius:var(--border-radius, 4px);background:var(--color-background);color:var(--color-text);font-size:.95rem}.form-input[data-v-cfbba021]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #22c5ff1a}.form-help[data-v-cfbba021]{margin-top:.25rem;font-size:.875rem;color:var(--color-text-soft)}.toggle-switch[data-v-cfbba021]{display:flex;align-items:center;cursor:pointer;gap:.75rem}.toggle-switch input[data-v-cfbba021]{display:none}.toggle-slider[data-v-cfbba021]{position:relative;display:inline-block;width:2.5rem;height:1.25rem;background-color:var(--color-border);border-radius:1rem;transition:background-color .2s}.toggle-slider[data-v-cfbba021]:after{content:"";position:absolute;width:1rem;height:1rem;border-radius:50%;background-color:#fff;top:.125rem;left:.125rem;transition:transform .2s}.toggle-switch input:checked+.toggle-slider[data-v-cfbba021]{background-color:var(--color-primary)}.toggle-switch input:checked+.toggle-slider[data-v-cfbba021]:after{transform:translate(1.25rem)}.toggle-label[data-v-cfbba021]{color:var(--color-text);font-weight:500}.reschedule-settings[data-v-cfbba021]{padding:1rem;margin-top:1rem;border-left:2px solid var(--color-primary);background:var(--color-background, rgba(255, 255, 255, .02))}.settings-label[data-v-cfbba021]{margin-bottom:.75rem;font-weight:500;font-size:.95rem;color:var(--color-text)}.checkbox-option[data-v-cfbba021]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;cursor:pointer}.checkbox-option input[data-v-cfbba021]{width:1rem;height:1rem;cursor:pointer}.checkbox-label[data-v-cfbba021]{color:var(--color-text)}.limits-section[data-v-cfbba021]{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}@media (max-width: 480px){.form-group[data-v-cfbba021]{margin-bottom:.5rem}}.back-link[data-v-7c8773e3]{font-size:.875rem;color:var(--color-text-soft);display:inline-block;margin-bottom:.25rem;margin-top:0}h1[data-v-7c8773e3]{margin-bottom:.5rem;margin-top:0}.form[data-v-7c8773e3]{width:100%}.form-help[data-v-7c8773e3]{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-soft)}.attachment-row[data-v-7c8773e3]{margin-top:.5rem;display:flex;gap:.5rem;align-items:center}.form-actions[data-v-7c8773e3]{display:flex;gap:.75rem;align-items:center;margin-top:1rem}.btn-submit[data-v-7c8773e3]{flex:1;justify-content:center;text-align:center;padding-top:.75rem;padding-bottom:.75rem;font-size:1.05rem}.btn-secondary[data-v-7c8773e3]{padding:.75rem 1.25rem;font-size:1.05rem;background:transparent;border:1px solid var(--color-border);color:var(--color-text-soft);border-radius:var(--border-radius, 4px);cursor:pointer;transition:border-color .15s,color .15s}.btn-secondary[data-v-7c8773e3]:hover{border-color:var(--color-border-hover);color:var(--color-text)}.error-message[data-v-7c8773e3]{color:var(--color-error);margin-bottom:1rem}.advanced-options[data-v-7c8773e3]{margin-top:.5rem;margin-bottom:.5rem}@media (max-width: 480px){h1[data-v-7c8773e3]{margin-bottom:.5rem;font-size:1.5rem}.form.card[data-v-7c8773e3]{padding:.75rem}}@media (max-width: 640px){.form-actions[data-v-7c8773e3]{position:sticky;bottom:0;background:var(--color-background-soft, var(--color-bg-soft, #1a1a2e));border-top:1px solid var(--color-border);padding:.75rem 1rem;margin:0 -1rem -1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom));z-index:10}}
@@ -0,0 +1 @@
1
+ import{_ as z,k as J,o as X,l as H,a as p,c as m,b as t,u as S,f as r,j as Z,m as a,v as f,d as L,D as _,i as E,p as B,q as G,e as ee,t as te,w as se,s as oe,n as l,g as le,h as ae}from"./index-D1Lg5reX.js";import{u as ne}from"./projects-CMJJca64.js";import{u as re,a as ie,Q as ue}from"./QuickResponseSettings-Ds4X-J-t.js";import{P as de}from"./InputWithButton-Cplkm8Ze.js";import{M as pe}from"./ModelSelector-CgpqdZtV.js";import{a as me}from"./ApiClient-CcqJ-GAv.js";import"./providers-BCtNZWYw.js";const fe={class:"container"},ve={key:0,class:"loading-state"},be={class:"form-group"},ge={class:"form-group"},ce={class:"form-group"},ye={class:"input-with-button"},ke=["placeholder"],Se=["disabled"],we={class:"form-group"},Ce={class:"form-group"},he={class:"form-label",for:"systemPrompt"},Ee={class:"advanced-settings"},Pe={class:"form-group"},De={class:"form-group"},xe={class:"advanced-settings"},Ue={class:"form-group"},Me={class:"form-group"},Re={class:"checkbox-label"},Ve={class:"form-group"},Ie={class:"form-group"},je={class:"checkbox-label"},Le={class:"form-group"},Ne={class:"form-group"},Oe={class:"form-group"},Te=["disabled"],Be={key:0,class:"loading-spinner"},Ge={class:"advanced-settings"},Fe={class:"advanced-settings"},He={class:"form-group"},We={class:"checkbox-label"},Ae={key:0,class:"error-message"},Qe={class:"form-actions"},$e={class:"form-actions-right"},qe=["disabled"],Ke={key:0,class:"loading-spinner"},Ye={__name:"ProjectEditView",setup(ze){const P=_,n=oe(),F=ae(),v=ne(),D=re(),W=ie(),N=J(),x=l(""),i=l(""),w=l(""),U=l(""),u=l(""),M=l(""),R=l(""),V=l(!1),O=l(!1),b=l(""),C=l(!1),g=l(""),h=l(!0),c=l(""),y=l(""),k=l(""),I=l(!1),j=l(!1),d=l(null),T=l(!1);X(()=>{v.fetchProject(n.params.id),D.fetchDefaults(n.params.id),W.fetchForProject(n.params.id)}),H(()=>v.currentProject,s=>{s&&(x.value=s.name,i.value=s.workingDirectory,w.value=s.worktreePath||"",U.value=s.repoUrl||"",u.value=s.systemPrompt||P,M.value=s.onSessionCreated||"",R.value=s.onSessionDeleted||"",V.value=s.kanbanEnabled||!1)},{immediate:!0}),H(()=>D.getDefaultsForProject(n.params.id),s=>{s&&(b.value=s.mode||"",C.value=s.thinkingEnabled||!1,g.value=s.effortLevel??"",h.value=s.startImmediately!==!1,c.value=s.gitMode||"",y.value=s.gitBranch||"",k.value=s.model||"")},{immediate:!0});async function A(){if(i.value){O.value=!0;try{const s=await me.detectWorktreePath(i.value);w.value=s.worktreePath}catch{}finally{O.value=!1}}}function Q(){const s={};return b.value&&(s.mode=b.value),C.value&&(s.thinkingEnabled=!0),g.value&&(s.effortLevel=g.value),h.value||(s.startImmediately=!1),c.value&&(s.gitMode=c.value),y.value&&(s.gitBranch=y.value),k.value&&(s.model=k.value),s}async function $(){I.value=!0,d.value=null;try{await v.updateProject(n.params.id,{name:x.value,workingDirectory:i.value,worktreePath:w.value||null,repoUrl:U.value||null,systemPrompt:u.value===P?null:u.value,onSessionCreated:M.value||null,onSessionDeleted:R.value||null,kanbanEnabled:V.value});const s=Q();Object.keys(s).length>0&&await D.updateDefaults(n.params.id,s),N.success("Repository updated"),F.push(`/projects/${n.params.id}/sessions`)}catch(s){d.value=s.message}finally{I.value=!1}}async function q(){if(confirm("Reset all session defaults to system defaults?")){j.value=!0,d.value=null;try{await D.resetDefaults(n.params.id),b.value="",C.value=!1,g.value="",h.value=!0,c.value="",y.value="",k.value="",N.success("Session defaults reset to system defaults")}catch(s){d.value=s.message}finally{j.value=!1}}}async function K(){if(confirm("Are you sure you want to delete this project?"))try{await v.deleteProject(n.params.id),N.success("Repository removed"),F.push("/")}catch(s){d.value=s.message}}return(s,e)=>{const Y=le("router-link");return p(),m("div",fe,[e[58]||(e[58]=t("h1",null,"Edit Project",-1)),S(v).loading?(p(),m("div",ve,[...e[18]||(e[18]=[t("span",{class:"loading-spinner"},null,-1),r(" Loading... ",-1)])])):S(v).currentProject?(p(),m("form",{key:1,class:"form card",onSubmit:Z($,["prevent"])},[t("div",be,[e[19]||(e[19]=t("label",{class:"form-label",for:"name"},"Project Name",-1)),a(t("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=o=>x.value=o),type:"text",class:"form-input",required:""},null,512),[[f,x.value]])]),t("div",ge,[e[20]||(e[20]=t("label",{class:"form-label",for:"workingDirectory"},"Working Directory",-1)),L(de,{modelValue:i.value,"onUpdate:modelValue":e[1]||(e[1]=o=>i.value=o)},null,8,["modelValue"])]),t("div",ce,[e[21]||(e[21]=t("label",{class:"form-label",for:"worktreePath"},"Worktree Path",-1)),t("div",ye,[a(t("input",{id:"worktreePath","onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),type:"text",class:"form-input",placeholder:i.value+"/.worktrees"},null,8,ke),[[f,w.value]]),t("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:!i.value||O.value,onClick:A}," Detect ",8,Se)]),e[22]||(e[22]=t("p",{class:"form-help"}," Where git worktrees are created for sessions. Changing this only affects new sessions. ",-1))]),t("div",we,[e[23]||(e[23]=t("label",{class:"form-label",for:"repoUrl"},"Repository URL",-1)),a(t("input",{id:"repoUrl","onUpdate:modelValue":e[3]||(e[3]=o=>U.value=o),type:"url",class:"form-input",placeholder:"https://github.com/username/repo"},null,512),[[f,U.value]]),e[24]||(e[24]=t("p",{class:"form-help"}," Link to the project's repository (e.g., GitHub, GitLab). This can be automatically populated from session summaries. ",-1))]),t("div",Ce,[t("label",he,[e[25]||(e[25]=r(" System Prompt ",-1)),u.value!==S(P)?(p(),m("button",{key:0,type:"button",class:"btn-link",onClick:e[4]||(e[4]=o=>u.value=S(P))}," Reset to Default ")):E("",!0)]),a(t("textarea",{id:"systemPrompt","onUpdate:modelValue":e[5]||(e[5]=o=>u.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[f,u.value]]),e[26]||(e[26]=t("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),t("details",Ee,[e[31]||(e[31]=t("summary",null,"Session Lifecycle Hooks",-1)),t("div",Pe,[e[27]||(e[27]=t("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),a(t("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[6]||(e[6]=o=>M.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[f,M.value]]),e[28]||(e[28]=t("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),t("div",De,[e[29]||(e[29]=t("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),a(t("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[7]||(e[7]=o=>R.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[f,R.value]]),e[30]||(e[30]=t("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),t("details",xe,[e[49]||(e[49]=t("summary",null,"Session Defaults",-1)),e[50]||(e[50]=t("p",{class:"form-help"}," Set default values for new sessions created in this project. These values can be overridden when creating individual sessions. ",-1)),t("div",Ue,[e[33]||(e[33]=t("label",{class:"form-label",for:"defaultMode"},"Mode",-1)),a(t("select",{id:"defaultMode","onUpdate:modelValue":e[8]||(e[8]=o=>b.value=o),class:"form-input"},[...e[32]||(e[32]=[t("option",{value:""}," Use system default (standard) ",-1),t("option",{value:"plan"}," Plan ",-1),t("option",{value:"standard"}," Standard ",-1),t("option",{value:"yolo"}," YOLO ",-1)])],512),[[B,b.value]])]),t("div",Me,[t("label",Re,[a(t("input",{"onUpdate:modelValue":e[9]||(e[9]=o=>C.value=o),type:"checkbox"},null,512),[[G,C.value]]),e[34]||(e[34]=r(" Enable thinking (extended thinking) by default ",-1))]),e[35]||(e[35]=t("p",{class:"form-help"}," Enable the agent's extended thinking capability for new sessions. ",-1))]),t("div",Ve,[e[37]||(e[37]=t("label",{class:"form-label",for:"defaultEffortLevel"},"Default Effort Level",-1)),a(t("select",{id:"defaultEffortLevel","onUpdate:modelValue":e[10]||(e[10]=o=>g.value=o),class:"form-input"},[...e[36]||(e[36]=[ee('<option value="" data-v-23028e3b> Auto (default) </option><option value="low" data-v-23028e3b> Low </option><option value="medium" data-v-23028e3b> Medium </option><option value="high" data-v-23028e3b> High </option><option value="max" data-v-23028e3b> Max </option>',5)])],512),[[B,g.value]]),e[38]||(e[38]=t("p",{class:"form-help"}," Set the default effort level for new sessions. Controls how much effort the agent puts into responses. ",-1))]),t("div",Ie,[t("label",je,[a(t("input",{"onUpdate:modelValue":e[11]||(e[11]=o=>h.value=o),type:"checkbox"},null,512),[[G,h.value]]),e[39]||(e[39]=r(" Start sessions immediately ",-1))]),e[40]||(e[40]=t("p",{class:"form-help"},' When enabled, sessions will start automatically. When disabled, sessions will be created in "waiting" state. ',-1))]),t("div",Le,[e[42]||(e[42]=t("label",{class:"form-label",for:"defaultGitMode"},"Git Mode",-1)),a(t("select",{id:"defaultGitMode","onUpdate:modelValue":e[12]||(e[12]=o=>c.value=o),class:"form-input"},[...e[41]||(e[41]=[t("option",{value:""}," No git isolation ",-1),t("option",{value:"branch"}," Create branch for each session ",-1),t("option",{value:"worktree"}," Create worktree for each session ",-1)])],512),[[B,c.value]]),e[43]||(e[43]=t("p",{class:"form-help"}," Controls how git changes are isolated for each session. ",-1))]),t("div",Ne,[e[44]||(e[44]=t("label",{class:"form-label",for:"defaultGitBranch"},"Default Git Branch",-1)),a(t("input",{id:"defaultGitBranch","onUpdate:modelValue":e[13]||(e[13]=o=>y.value=o),type:"text",class:"form-input",placeholder:"e.g., feature/ai-implementation"},null,512),[[f,y.value]]),e[45]||(e[45]=t("p",{class:"form-help"}," When using git branch mode, this is the branch name pattern for new sessions. ",-1))]),t("div",Oe,[e[46]||(e[46]=t("label",{class:"form-label",for:"defaultModel"},"Model",-1)),L(pe,{modelValue:k.value,"onUpdate:modelValue":e[14]||(e[14]=o=>k.value=o),"allow-empty":!0,"empty-label":"Use system default","select-class":"form-input"},null,8,["modelValue"]),e[47]||(e[47]=t("p",{class:"form-help"}," Choose the default model for new sessions in this project. ",-1))]),t("button",{type:"button",class:"btn btn-secondary",disabled:j.value,onClick:q},[j.value?(p(),m("span",Be)):E("",!0),e[48]||(e[48]=r(" Reset to System Defaults ",-1))],8,Te)]),t("details",Ge,[e[51]||(e[51]=t("summary",null,"Quick Responses",-1)),e[52]||(e[52]=t("p",{class:"form-help"}," Quick responses are shortcuts that can be inserted into the chat input. You can create project-specific or global responses. ",-1)),t("button",{type:"button",class:"btn btn-secondary",onClick:e[15]||(e[15]=o=>T.value=!0)}," Manage Quick Responses ")]),t("details",Fe,[e[55]||(e[55]=t("summary",null,[r("Kanban Board "),t("span",{class:"inline-block rounded bg-amber-900/50 px-1.5 py-0.5 text-[10px] font-semibold uppercase text-amber-300 ml-2"},"Experimental")],-1)),t("div",He,[t("label",We,[a(t("input",{"onUpdate:modelValue":e[16]||(e[16]=o=>V.value=o),type:"checkbox"},null,512),[[G,V.value]]),e[53]||(e[53]=r(" Enable Kanban board ",-1))]),e[54]||(e[54]=t("p",{class:"form-help"},[t("strong",null,"Experimental."),r(" This feature is in active development and may change or be removed. Enable a Kanban board to visually organize sessions into lanes. Sessions can be dragged between lanes, and lanes can trigger automated workflows. ")],-1))])]),d.value?(p(),m("div",Ae,te(d.value),1)):E("",!0),t("div",Qe,[t("button",{type:"button",class:"btn btn-danger",onClick:K}," Delete "),t("div",$e,[L(Y,{to:`/projects/${S(n).params.id}/sessions`,class:"btn"},{default:se(()=>[...e[56]||(e[56]=[r(" Cancel ",-1)])]),_:1},8,["to"]),t("button",{type:"submit",class:"btn btn-primary",disabled:I.value},[I.value?(p(),m("span",Ke)):E("",!0),e[57]||(e[57]=r(" Save ",-1))],8,qe)])])],32)):E("",!0),L(ue,{"is-open":T.value,"project-id":S(n).params.id,onClose:e[17]||(e[17]=o=>T.value=!1)},null,8,["is-open","project-id"])])}}},ot=z(Ye,[["__scopeId","data-v-23028e3b"]]);export{ot as default};
@@ -0,0 +1 @@
1
+ h1[data-v-23028e3b]{margin-bottom:2rem}.loading-state[data-v-23028e3b]{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:3rem}.form[data-v-23028e3b]{max-width:500px}.form-actions[data-v-23028e3b]{display:flex;justify-content:space-between;align-items:center}.form-actions-right[data-v-23028e3b]{display:flex;gap:.5rem}.error-message[data-v-23028e3b]{color:var(--color-error);margin-bottom:1rem}.form-textarea[data-v-23028e3b]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-23028e3b]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.advanced-settings[data-v-23028e3b]{margin-bottom:1rem}.advanced-settings summary[data-v-23028e3b]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-23028e3b]{margin-bottom:1rem}.form-textarea-small[data-v-23028e3b]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.checkbox-label[data-v-23028e3b]{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:500}.checkbox-label input[type=checkbox][data-v-23028e3b]{width:1rem;height:1rem;cursor:pointer}.form-input[type=select][data-v-23028e3b],select.form-input[data-v-23028e3b]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem}.btn-link[data-v-23028e3b]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-23028e3b]:hover{color:var(--color-primary-hover)}
@@ -0,0 +1 @@
1
+ import{_ as h,o as y,a as e,c as a,b as o,d as l,w as p,u as c,F as u,r as _,t as d,e as f,f as k,g,h as C,i as n,j as w}from"./index-D1Lg5reX.js";import{u as A}from"./projects-CMJJca64.js";import{f as V}from"./useSummaryHelpers-GVg7sMWF.js";import"./ApiClient-CcqJ-GAv.js";const P={class:"container"},j={class:"page-header"},x={key:0,class:"skeleton-list"},S={key:1,class:"error-message"},N={key:2,class:"empty-state"},R={key:3,class:"project-list"},T=["onClick"],B={class:"project-info"},F={class:"project-name"},L={class:"project-path"},$={key:0,class:"project-meta"},D={key:0},E={key:1,class:"meta-separator"},I={key:2},M={class:"project-actions"},Y={__name:"ProjectListView",setup(W){const b=C(),i=A();function m(v){b.push(`/projects/${v}/sessions`)}return y(()=>{i.fetchProjects()}),(v,t)=>{const r=g("router-link");return e(),a("div",P,[o("div",j,[t[2]||(t[2]=o("h1",null,"Repositories",-1)),l(r,{to:"/projects/new",class:"btn btn-primary"},{default:p(()=>[...t[1]||(t[1]=[o("span",{class:"add-repo-label-full"},"Add Repository",-1),o("span",{class:"add-repo-label-short"},"+ Add",-1)])]),_:1})]),c(i).loading?(e(),a("div",x,[(e(),a(u,null,_(3,s=>o("div",{key:s,class:"skeleton card",style:{height:"80px"}})),64))])):c(i).error?(e(),a("div",S,d(c(i).error),1)):c(i).projects.length===0?(e(),a("div",N,[t[4]||(t[4]=f('<div class="welcome-hero card" data-v-7bcc5373><h2 class="welcome-heading" data-v-7bcc5373> Welcome to Circus Chief </h2><p class="welcome-subtitle" data-v-7bcc5373> Your command center for coding agent sessions. Point it at a codebase and start building. </p></div><div class="steps-grid" data-v-7bcc5373><div class="step-card card" data-v-7bcc5373><div class="step-number" data-v-7bcc5373> 1 </div><h3 class="step-title" data-v-7bcc5373> Pick a repo folder </h3><p class="step-desc" data-v-7bcc5373> Point to any codebase on your machine </p></div><div class="step-card card" data-v-7bcc5373><div class="step-number" data-v-7bcc5373> 2 </div><h3 class="step-title" data-v-7bcc5373> Create coding sessions </h3><p class="step-desc" data-v-7bcc5373> Start tasks with your AI coding agent </p></div><div class="step-card card" data-v-7bcc5373><div class="step-number" data-v-7bcc5373> 3 </div><h3 class="step-title" data-v-7bcc5373> Track changes &amp; artifacts </h3><p class="step-desc" data-v-7bcc5373> View diffs, canvas, and conversation history </p></div></div>',2)),l(r,{to:"/projects/new",class:"btn btn-primary cta-button"},{default:p(()=>[...t[3]||(t[3]=[k(" Add Your First Repository ",-1)])]),_:1})])):(e(),a("div",R,[(e(!0),a(u,null,_(c(i).projects,s=>(e(),a("div",{key:s.id,class:"project-card card",onClick:q=>m(s.id)},[o("div",B,[o("h3",F,d(s.name),1),o("p",L,d(s.workingDirectory),1),s.sessionCount>0||s.lastActivityAt?(e(),a("p",$,[s.sessionCount>0?(e(),a("span",D,d(s.sessionCount)+" session"+d(s.sessionCount!==1?"s":""),1)):n("",!0),s.sessionCount>0&&s.lastActivityAt?(e(),a("span",E,"·")):n("",!0),s.lastActivityAt?(e(),a("span",I,d(c(V)(s.lastActivityAt)),1)):n("",!0)])):n("",!0)]),o("div",M,[l(r,{to:`/projects/${s.id}/edit`,class:"btn edit-btn",onClick:t[0]||(t[0]=w(()=>{},["stop"]))},{default:p(()=>[...t[5]||(t[5]=[o("span",{class:"edit-label-full"},"Edit",-1),o("span",{class:"edit-label-short","aria-hidden":"true"},"⚙",-1)])]),_:1},8,["to"])])],8,T))),128))]))])}}},K=h(Y,[["__scopeId","data-v-7bcc5373"]]);export{K as default};
@@ -0,0 +1 @@
1
+ .page-header[data-v-7bcc5373]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.page-header h1[data-v-7bcc5373]{margin:0}.add-repo-label-short[data-v-7bcc5373]{display:none}.skeleton-list[data-v-7bcc5373]{display:flex;flex-direction:column;gap:1rem}.error-message[data-v-7bcc5373]{color:var(--color-error);padding:1rem;background-color:#f851491a;border-radius:var(--border-radius)}.empty-state[data-v-7bcc5373]{text-align:center;padding:3rem 1rem}.welcome-hero[data-v-7bcc5373]{padding:2rem;margin-bottom:2rem}.welcome-heading[data-v-7bcc5373]{margin:0 0 .75rem;font-size:1.5rem}.welcome-subtitle[data-v-7bcc5373]{margin:0;color:var(--color-text-soft);font-size:1rem;line-height:1.5}.steps-grid[data-v-7bcc5373]{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2rem}.step-card[data-v-7bcc5373]{padding:1.5rem;text-align:center}.step-number[data-v-7bcc5373]{width:2rem;height:2rem;border-radius:50%;background-color:var(--color-primary);color:var(--color-background);display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;margin-bottom:.75rem}.step-title[data-v-7bcc5373]{margin:0 0 .5rem;font-size:.9375rem}.step-desc[data-v-7bcc5373]{margin:0;color:var(--color-text-soft);font-size:.875rem;line-height:1.4}.cta-button[data-v-7bcc5373]{display:inline-block}.project-list[data-v-7bcc5373]{display:flex;flex-direction:column;gap:1rem}.project-card[data-v-7bcc5373]{display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:background-color .15s ease}.project-card[data-v-7bcc5373]:hover{background-color:var(--color-background-soft)}.project-info[data-v-7bcc5373]{min-width:0;flex:1}.project-name[data-v-7bcc5373]{margin:0 0 .25rem;font-size:1rem}.project-path[data-v-7bcc5373]{margin:0;font-size:.875rem;color:var(--color-text-soft);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-meta[data-v-7bcc5373]{margin:.25rem 0 0;font-size:.8125rem;color:var(--color-text-soft)}.meta-separator[data-v-7bcc5373]{margin:0 .375rem}.project-actions[data-v-7bcc5373]{display:flex;gap:.5rem;flex-shrink:0;margin-left:1rem}.edit-label-short[data-v-7bcc5373]{display:none}@media (max-width: 640px){.empty-state[data-v-7bcc5373]{padding:2rem .5rem}}@media (max-width: 480px){.add-repo-label-full[data-v-7bcc5373]{display:none}.add-repo-label-short[data-v-7bcc5373]{display:inline}.welcome-hero[data-v-7bcc5373]{padding:1rem}.welcome-heading[data-v-7bcc5373]{font-size:1.25rem}.steps-grid[data-v-7bcc5373]{grid-template-columns:1fr;gap:0}.step-card[data-v-7bcc5373]{border-radius:0;border-bottom:1px solid var(--color-border);text-align:left;display:flex;align-items:center;gap:1rem;padding:1rem}.step-card[data-v-7bcc5373]:first-child{border-radius:var(--border-radius) var(--border-radius) 0 0}.step-card[data-v-7bcc5373]:last-child{border-radius:0 0 var(--border-radius) var(--border-radius);border-bottom:none}.step-number[data-v-7bcc5373]{margin-bottom:0;flex-shrink:0}.step-title[data-v-7bcc5373],.step-desc[data-v-7bcc5373]{text-align:left}.cta-button[data-v-7bcc5373]{width:100%;text-align:center}.project-card[data-v-7bcc5373]{padding:.75rem}.edit-label-full[data-v-7bcc5373]{display:none}.edit-label-short[data-v-7bcc5373]{display:inline}}
@@ -0,0 +1 @@
1
+ import{_ as A,k as O,l as T,a as f,c as v,b as t,d as E,m as u,v as d,f as k,u as h,D as R,i as w,t as j,w as H,j as M,n as s,g as W,h as B}from"./index-D1Lg5reX.js";import{u as $}from"./projects-CMJJca64.js";import{P as J}from"./InputWithButton-Cplkm8Ze.js";import{a as L}from"./ApiClient-CcqJ-GAv.js";const q={class:"container"},z={class:"form-group"},Y={class:"form-group"},G={class:"advanced-settings"},K={class:"form-group"},Q={class:"input-with-button"},X=["disabled"],Z={class:"form-group"},ee={class:"form-label",for:"systemPrompt"},te={class:"form-group"},oe={class:"form-group"},se={key:0,class:"error-message"},le={class:"form-actions"},ae=["disabled"],re={key:0,class:"loading-spinner"},ne={__name:"ProjectNewView",setup(ie,{expose:_}){const x=B(),N=$(),U=O(),c=R,n=s(""),a=s(""),i=s(""),r=s(R),S=s(""),b=s(""),m=s(!1),p=s(null),y=s(!1),I=s(!0),C=s(!0);T(a,l=>{if(l&&I.value){const e=l.replace(/\/+$/,"").split("/");n.value=e[e.length-1]||""}l&&C.value&&D()});function g(){I.value=!1}function P(){C.value=!1}async function D(){if(a.value){y.value=!0;try{const l=await L.detectWorktreePath(a.value);i.value=l.worktreePath,C.value=!0}catch{}finally{y.value=!1}}}_({name:n,workingDirectory:a,worktreePath:i,onNameInput:g,onWorktreePathInput:P});async function V(){m.value=!0,p.value=null;try{const l=await N.createProject({name:n.value,workingDirectory:a.value,systemPrompt:r.value===c?null:r.value,onSessionCreated:S.value||void 0,onSessionDeleted:b.value||void 0,worktreePath:i.value||null});U.success("Repository added"),x.push(`/projects/${l.id}/sessions`)}catch(l){p.value=l.message}finally{m.value=!1}}return(l,e)=>{const F=W("router-link");return f(),v("div",q,[e[21]||(e[21]=t("h1",null,"Add a Repository",-1)),t("form",{class:"form card",onSubmit:M(V,["prevent"])},[t("div",z,[e[7]||(e[7]=t("label",{class:"form-label",for:"workingDirectory"},"Repository Folder",-1)),E(J,{modelValue:a.value,"onUpdate:modelValue":e[0]||(e[0]=o=>a.value=o)},null,8,["modelValue"]),e[8]||(e[8]=t("p",{class:"form-help"}," The root of your codebase — typically a git repository. ",-1))]),t("div",Y,[e[9]||(e[9]=t("label",{class:"form-label",for:"name"},"Display Name",-1)),u(t("input",{id:"name","onUpdate:modelValue":e[1]||(e[1]=o=>n.value=o),type:"text",class:"form-input",placeholder:"my-app",required:"",onInput:g},null,544),[[d,n.value]])]),t("details",G,[e[18]||(e[18]=t("summary",null,"Advanced Settings",-1)),t("div",K,[e[10]||(e[10]=t("label",{class:"form-label",for:"worktreePath"},"Worktree Path",-1)),t("div",Q,[u(t("input",{id:"worktreePath","onUpdate:modelValue":e[2]||(e[2]=o=>i.value=o),type:"text",class:"form-input",placeholder:"/path/to/.worktrees",onInput:P},null,544),[[d,i.value]]),t("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:!a.value||y.value,onClick:D}," Detect ",8,X)]),e[11]||(e[11]=t("p",{class:"form-help"}," Directory where git worktrees will be created for sessions. Leave empty to use the default. ",-1))]),t("div",Z,[t("label",ee,[e[12]||(e[12]=k(" System Prompt ",-1)),r.value!==h(c)?(f(),v("button",{key:0,type:"button",class:"btn-link",onClick:e[3]||(e[3]=o=>r.value=h(c))}," Reset to Default ")):w("",!0)]),u(t("textarea",{id:"systemPrompt","onUpdate:modelValue":e[4]||(e[4]=o=>r.value=o),class:"form-input form-textarea",rows:"8"},null,512),[[d,r.value]]),e[13]||(e[13]=t("p",{class:"form-help"}," Customize the system prompt for the AI agent. The default prompt is pre-filled above. ",-1))]),t("div",te,[e[14]||(e[14]=t("label",{class:"form-label",for:"onSessionCreated"},"On Session Created",-1)),u(t("textarea",{id:"onSessionCreated","onUpdate:modelValue":e[5]||(e[5]=o=>S.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is created..."},null,512),[[d,S.value]]),e[15]||(e[15]=t("p",{class:"form-help"}," Runs in the background after session creation. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))]),t("div",oe,[e[16]||(e[16]=t("label",{class:"form-label",for:"onSessionDeleted"},"On Session Deleted",-1)),u(t("textarea",{id:"onSessionDeleted","onUpdate:modelValue":e[6]||(e[6]=o=>b.value=o),class:"form-input form-textarea-small",rows:"3",placeholder:"Shell command to run when a session is deleted..."},null,512),[[d,b.value]]),e[17]||(e[17]=t("p",{class:"form-help"}," Runs in the background after session deletion. Environment variables: CIRCUSCHIEF_SESSION_ID, CIRCUSCHIEF_PROJECT_ID, CIRCUSCHIEF_SESSION_NAME ",-1))])]),p.value?(f(),v("div",se,j(p.value),1)):w("",!0),t("div",le,[E(F,{to:"/",class:"btn"},{default:H(()=>[...e[19]||(e[19]=[k(" Cancel ",-1)])]),_:1}),t("button",{type:"submit",class:"btn btn-primary",disabled:m.value},[m.value?(f(),v("span",re)):w("",!0),e[20]||(e[20]=k(" Add Repository ",-1))],8,ae)])],32)])}}},fe=A(ne,[["__scopeId","data-v-3fea4262"]]);export{fe as default};
@@ -0,0 +1 @@
1
+ h1[data-v-3fea4262]{margin-bottom:2rem}.form[data-v-3fea4262]{max-width:500px}.form-actions[data-v-3fea4262]{display:flex;gap:.5rem;justify-content:flex-end}.error-message[data-v-3fea4262]{color:var(--color-error);margin-bottom:1rem}.advanced-settings[data-v-3fea4262]{margin-bottom:1rem}.advanced-settings summary[data-v-3fea4262]{cursor:pointer;color:var(--color-primary);font-weight:500;margin-bottom:1rem}.advanced-settings[open] summary[data-v-3fea4262]{margin-bottom:1rem}.form-textarea[data-v-3fea4262]{resize:vertical;min-height:120px;font-family:monospace;font-size:.875rem;line-height:1.5}.form-help[data-v-3fea4262]{margin-top:.5rem;font-size:.875rem;color:var(--color-text-muted)}.form-textarea-small[data-v-3fea4262]{resize:vertical;min-height:60px;font-family:monospace;font-size:.875rem;line-height:1.5}.btn-link[data-v-3fea4262]{background:none;border:none;color:var(--color-primary);font-size:.75rem;padding:0;margin-left:.5rem;cursor:pointer;text-decoration:underline}.btn-link[data-v-3fea4262]:hover{color:var(--color-primary-hover)}@media (max-width: 480px){.form[data-v-3fea4262]{max-width:none}.form-actions[data-v-3fea4262]{flex-direction:column-reverse}.form-actions .btn[data-v-3fea4262]{width:100%;justify-content:center;min-height:44px}}