circuschief 0.2.1 → 0.3.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 (117) hide show
  1. package/package.json +1 -1
  2. package/packages/server/src/api/git.js +15 -0
  3. package/packages/server/src/api/projects-commandButtons.js +96 -0
  4. package/packages/server/src/api/projects-session-helpers.js +51 -33
  5. package/packages/server/src/api/projects.js +102 -111
  6. package/packages/server/src/api/sessions-archive.js +2 -1
  7. package/packages/server/src/api/sessions-lifecycle.js +2 -1
  8. package/packages/server/src/api/sessions-patch.js +2 -0
  9. package/packages/server/src/config.js +6 -0
  10. package/packages/server/src/db/DatabaseManager.js +1 -1
  11. package/packages/server/src/db/ProjectRepository.js +17 -3
  12. package/packages/server/src/db/migrations/index.js +7 -0
  13. package/packages/server/src/db/migrations/miscMigrations.js +78 -1
  14. package/packages/server/src/db/migrations/projectsMigrations.js +4 -0
  15. package/packages/server/src/index.js +7 -1
  16. package/packages/server/src/services/gitService.js +42 -6
  17. package/packages/server/src/services/gitSessionSetup.js +4 -3
  18. package/packages/server/src/services/kanbanTriggers.js +1 -0
  19. package/packages/server/src/services/sessionExecution.js +2 -2
  20. package/packages/server/src/services/templateTriggerService.js +1 -0
  21. package/packages/shared/src/contracts/projects.js +3 -0
  22. package/packages/shared/src/types.js +4 -3
  23. package/packages/web/dist/assets/ActiveSessionsView-BVco8bPU.css +1 -0
  24. package/packages/web/dist/assets/ActiveSessionsView-HgcjR-fv.js +1 -0
  25. package/packages/web/dist/assets/{AgentLogsView-D4l0N9ZA.js → AgentLogsView-gnpmy7Ck.js} +1 -1
  26. package/packages/web/dist/assets/{ApiClient-Dbs1H78V.js → ApiClient-CcqJ-GAv.js} +1 -1
  27. package/packages/web/dist/assets/{ArchiveConfirmModal-CQZeuYBz.css → ArchiveConfirmModal-BQ-4gI0R.css} +1 -1
  28. package/packages/web/dist/assets/ArchiveConfirmModal-NDLcfHE9.js +1 -0
  29. package/packages/web/dist/assets/CommandButtonDetailView-UGoO1Rhg.js +1 -0
  30. package/packages/web/dist/assets/EffortLevelSelector-B9STpy07.js +1 -0
  31. package/packages/web/dist/assets/{GeneralSettingsView-BqCzCX-z.js → GeneralSettingsView-Bvp1zmeb.js} +1 -1
  32. package/packages/web/dist/assets/InputWithButton-cYdrEmTs.css +1 -0
  33. package/packages/web/dist/assets/{PathChooser-CXFxb8Oj.js → InputWithButton-kjjnlpHt.js} +1 -1
  34. package/packages/web/dist/assets/InterpolationHelp-Cwyt_Kff.js +1 -0
  35. package/packages/web/dist/assets/MarkdownEditor-CfuhardG.js +2 -0
  36. package/packages/web/dist/assets/{ModelSelector-DSxaZWBL.js → ModelSelector-vRSpXjhL.js} +1 -1
  37. package/packages/web/dist/assets/{NewSessionView-BsI7JtO9.js → NewSessionView-CJqnlwjP.js} +2 -2
  38. package/packages/web/dist/assets/{NewSessionView-Byoi1XdQ.css → NewSessionView-D_Hi7M9g.css} +1 -1
  39. package/packages/web/dist/assets/ProjectEditView-I36pvIJH.css +1 -0
  40. package/packages/web/dist/assets/ProjectEditView-LZhWNyZD.js +1 -0
  41. package/packages/web/dist/assets/ProjectListView-CumumZN-.css +1 -0
  42. package/packages/web/dist/assets/ProjectListView-DxpzlBb6.js +1 -0
  43. package/packages/web/dist/assets/ProjectNewView-CaLXfFzd.css +1 -0
  44. package/packages/web/dist/assets/ProjectNewView-X1y2iuaX.js +1 -0
  45. package/packages/web/dist/assets/{ProvidersView-CgAr0qms.js → ProvidersView-DC-v48Oj.js} +1 -1
  46. package/packages/web/dist/assets/{ProvidersView-B_QQF3RM.css → ProvidersView-uD8SKWpA.css} +1 -1
  47. package/packages/web/dist/assets/{QuickResponseSettings-uDDpwaza.js → QuickResponseSettings-DOZUtaRb.js} +1 -1
  48. package/packages/web/dist/assets/{QuickResponsesPanel-D0qs0Fm_.js → QuickResponsesPanel-BboDyvfE.js} +1 -1
  49. package/packages/web/dist/assets/{ResizableTextarea-_kHi1Mg3.js → ResizableTextarea-BIUrLAki.js} +1 -1
  50. package/packages/web/dist/assets/{SessionCard-Be1-bK0C.js → SessionCard-D9a5ABHO.js} +1 -1
  51. package/packages/web/dist/assets/{SessionDetailView-mnGRMaLY.css → SessionDetailView-D_p4QqDv.css} +1 -1
  52. package/packages/web/dist/assets/SessionDetailView-DpnAZfLe.js +36 -0
  53. package/packages/web/dist/assets/{SessionFormOptions-DvhOyP6z.js → SessionFormOptions-16tOEDkt.js} +1 -1
  54. package/packages/web/dist/assets/{SessionListView-CuHsWj85.js → SessionListView-BxayFy5a.js} +1 -1
  55. package/packages/web/dist/assets/{SessionLogStream-Da_GniUZ.js → SessionLogStream-DMUzZOml.js} +6 -6
  56. package/packages/web/dist/assets/SettingsView-IKYDEAFw.js +1 -0
  57. package/packages/web/dist/assets/{SlashCommandWizard-B_8ifpxN.js → SlashCommandWizard-CCEtEF98.js} +1 -1
  58. package/packages/web/dist/assets/{SummarySettingsView-KvgSGHdd.js → SummarySettingsView-Cq_0Bsk4.js} +1 -1
  59. package/packages/web/dist/assets/{TemplateDetailView-BhOjYIvS.js → TemplateDetailView-Vj413FOj.js} +1 -1
  60. package/packages/web/dist/assets/{commandButtons-B4OYZP0J.js → commandButtons-BqI7V84_.js} +1 -1
  61. package/packages/web/dist/assets/index-B0PaFn8J.js +1 -0
  62. package/packages/web/dist/assets/index-B0uKzlP3.js +1 -0
  63. package/packages/web/dist/assets/index-BOj2hM4W.js +1 -0
  64. package/packages/web/dist/assets/index-BVH1Fur5.js +1 -0
  65. package/packages/web/dist/assets/index-Bm4uwnFi.js +1 -0
  66. package/packages/web/dist/assets/index-C82-hypB.js +7 -0
  67. package/packages/web/dist/assets/index-C98wGWOV.js +1 -0
  68. package/packages/web/dist/assets/index-CQt0yAHQ.js +1 -0
  69. package/packages/web/dist/assets/index-CTe3Gmxt.js +1 -0
  70. package/packages/web/dist/assets/{index-BqVgX_Jy.js → index-Crwsqc5t.js} +3 -3
  71. package/packages/web/dist/assets/{index-BHVnr8MO.js → index-CzgbuOA8.js} +2 -2
  72. package/packages/web/dist/assets/index-D8oIVxkt.js +1 -0
  73. package/packages/web/dist/assets/index-DIrFNnos.js +1 -0
  74. package/packages/web/dist/assets/index-DVkCrevC.js +3 -0
  75. package/packages/web/dist/assets/index-DXvlnigm.js +1 -0
  76. package/packages/web/dist/assets/{index-CSOPrlmq.js → index-MnvuyUxj.js} +3 -3
  77. package/packages/web/dist/assets/index-mMvVdgsE.js +1 -0
  78. package/packages/web/dist/assets/index-okhXrCbj.js +1 -0
  79. package/packages/web/dist/assets/index-yghSjW4j.js +1 -0
  80. package/packages/web/dist/assets/{projects-B2du-GX8.js → projects-BpAyb9ba.js} +1 -1
  81. package/packages/web/dist/assets/{providers-B__J6FX0.js → providers-Di1AKmPp.js} +1 -1
  82. package/packages/web/dist/assets/{sessions-VDrd87yA.js → sessions-GqIMf9RF.js} +1 -1
  83. package/packages/web/dist/assets/{settings-CZ7Pc-Pt.js → settings-j6pMR_H2.js} +1 -1
  84. package/packages/web/dist/assets/useSummaryHelpers-GVg7sMWF.js +1 -0
  85. package/packages/web/dist/index.html +1 -1
  86. package/packages/web/dist/assets/ActiveSessionsView-3697sD8N.js +0 -1
  87. package/packages/web/dist/assets/ActiveSessionsView-DfYXc6dz.css +0 -1
  88. package/packages/web/dist/assets/ArchiveConfirmModal-Bv3vGOMM.js +0 -1
  89. package/packages/web/dist/assets/CommandButtonDetailView-Bk_SHxpu.js +0 -1
  90. package/packages/web/dist/assets/EffortLevelSelector-VfBEelvO.js +0 -1
  91. package/packages/web/dist/assets/InterpolationHelp-Dc1Y0T6v.js +0 -1
  92. package/packages/web/dist/assets/MarkdownEditor-DwBQkZbs.js +0 -2
  93. package/packages/web/dist/assets/PathChooser-BoMGzeg2.css +0 -1
  94. package/packages/web/dist/assets/ProjectEditView-Bes4Mib4.js +0 -1
  95. package/packages/web/dist/assets/ProjectEditView-DNwBUNRk.css +0 -1
  96. package/packages/web/dist/assets/ProjectListView-C55H1JHQ.css +0 -1
  97. package/packages/web/dist/assets/ProjectListView-DzEu-C36.js +0 -1
  98. package/packages/web/dist/assets/ProjectNewView-CpgE4R-l.css +0 -1
  99. package/packages/web/dist/assets/ProjectNewView-Cv-iEAgl.js +0 -1
  100. package/packages/web/dist/assets/SessionDetailView-DUYb7qTA.js +0 -36
  101. package/packages/web/dist/assets/SettingsView-5RDCXNUa.js +0 -1
  102. package/packages/web/dist/assets/index-80Qu7W6P.js +0 -1
  103. package/packages/web/dist/assets/index-B8_Iqwcq.js +0 -1
  104. package/packages/web/dist/assets/index-B9JErft2.js +0 -1
  105. package/packages/web/dist/assets/index-BarVnQIj.js +0 -3
  106. package/packages/web/dist/assets/index-BsvRdU0B.js +0 -1
  107. package/packages/web/dist/assets/index-Bugg2M-E.js +0 -1
  108. package/packages/web/dist/assets/index-C2Pjy-M8.js +0 -1
  109. package/packages/web/dist/assets/index-CS_wb_Vj.js +0 -1
  110. package/packages/web/dist/assets/index-ClzNIdCp.js +0 -1
  111. package/packages/web/dist/assets/index-Cn9Ajkye.js +0 -1
  112. package/packages/web/dist/assets/index-CucpVX4L.js +0 -1
  113. package/packages/web/dist/assets/index-D9hZYvW3.js +0 -1
  114. package/packages/web/dist/assets/index-DA0dK_PG.js +0 -7
  115. package/packages/web/dist/assets/index-DgpSn-jR.js +0 -1
  116. package/packages/web/dist/assets/index-HZwIyC9t.js +0 -1
  117. package/packages/web/dist/assets/index-SS3wA2sI.js +0 -1
@@ -1 +1 @@
1
- import{_ as j,a as l,c as o,b as t,k as r,F,r as z,t as k,h as v,l as S,E as B,x as $}from"./index-CSOPrlmq.js";import{a as E}from"./QuickResponseSettings-uDDpwaza.js";function re(m){return function(d){d.key==="Enter"&&(d.metaKey||d.ctrlKey)&&(d.preventDefault(),m())}}const N=["accept"],Q={key:0,class:"drop-zone"},I={key:1,class:"attached-files"},L={class:"file-icon"},P=["title"],T={class:"file-size"},K=["onClick"],Z={__name:"FileAttachment",props:{maxFiles:{type:Number,default:10},maxSize:{type:Number,default:10*1024*1024},acceptTypes:{type:String,default:"image/*,text/*,.json,.md,.csv,.pdf,.js,.ts,.py,.java,.go,.rs,.c,.cpp,.h,.sh,.yaml,.yml,.xml,.html,.css"}},emits:["update:files"],setup(m,{expose:_,emit:d}){const p=m,u=d,i=S([]),f=S(!1),h=S(null);function b(){var e;(e=h.value)==null||e.click()}function y(e){const s=e.target;a(Array.from(s.files)),s.value=""}function x(){f.value=!0}function g(){f.value=!1}function n(e){f.value=!1,a(Array.from(e.dataTransfer.files))}function a(e){for(const s of e){if(i.value.length>=p.maxFiles){alert(`Maximum ${p.maxFiles} files allowed`);break}if(s.size>p.maxSize){alert(`File "${s.name}" exceeds maximum size of ${R(p.maxSize)}`);continue}i.value.some(c=>c.name===s.name&&c.size===s.size)||i.value.push(s)}u("update:files",i.value)}function w(e){i.value.splice(e,1),u("update:files",i.value)}function A(){i.value=[],u("update:files",[])}function D(e){const s=e.type||"";return s.startsWith("image/")?"🖼️":s.startsWith("text/")||s==="application/json"?"📄":s==="application/pdf"?"📕":s.includes("javascript")||s.includes("typescript")?"📜":"📎"}function R(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function M(e,s=25){if(e.length<=s)return e;const c=e.split(".").pop();return`${`${e.slice(0,e.length-c.length-1).slice(0,s-c.length-4)}...`}.${c}`}return _({clear:A,files:i,addFiles:a}),(e,s)=>(l(),o("div",{class:"file-attachments",onDragover:v(x,["prevent"]),onDragleave:v(g,["prevent"]),onDrop:v(n,["prevent"])},[t("input",{ref_key:"fileInput",ref:h,type:"file",multiple:"",accept:m.acceptTypes,class:"hidden-input",onChange:y},null,40,N),t("button",{type:"button",class:"attach-btn",title:"Attach files (drag & drop supported)",onClick:b},[...s[0]||(s[0]=[t("span",{class:"attach-icon"},"📎",-1),t("span",{class:"attach-text"},"Attach",-1)])]),f.value?(l(),o("div",Q,[...s[1]||(s[1]=[t("span",{class:"drop-text"},"Drop files here",-1)])])):r("",!0),i.value.length>0?(l(),o("div",I,[(l(!0),o(F,null,z(i.value,(c,C)=>(l(),o("div",{key:C,class:"file-chip"},[t("span",L,k(D(c)),1),t("span",{class:"file-name",title:c.name},k(M(c.name)),9,P),t("span",T,"("+k(R(c.size))+")",1),t("button",{type:"button",class:"remove-btn",title:"Remove file",onClick:q=>w(C)}," × ",8,K)]))),128))])):r("",!0)],32))}},pe=j(Z,[["__scopeId","data-v-7f03e84b"]]),O={class:"panel-header"},V={class:"header-left"},W=["aria-expanded"],G={key:0,class:"loading-state"},H={key:1,class:"empty-state"},J={key:2,class:"responses-content"},U={key:0,class:"response-section"},X={class:"responses-row"},Y=["title","onClick"],ee={class:"button-label"},te={key:0,class:"auto-icon",title:"Auto-submit"},se={key:1,class:"response-section"},ne={class:"responses-row"},ae=["title","onClick"],le={class:"button-label"},oe={key:0,class:"auto-icon",title:"Auto-submit"},ie=Object.assign({name:"QuickResponsesPanel"},{__name:"QuickResponsesPanel",props:{showEmpty:{type:Boolean,default:!0}},emits:["insert","openSettings"],setup(m,{emit:_}){const d=_,p=E(),u=S(!1),i=$(()=>p.loading),f=$(()=>p.projectResponses),h=$(()=>p.globalResponses),b=$(()=>p.hasResponses);function y(){u.value=!u.value}function x(g){d("insert",{content:g.content,autoSubmit:g.autoSubmit}),u.value=!1}return(g,n)=>b.value||m.showEmpty?(l(),o("div",{key:0,class:"quick-responses-panel cursor-pointer",onClick:y},[t("div",O,[t("div",V,[t("button",{type:"button",class:"toggle-button","aria-expanded":u.value,title:"Toggle quick responses panel","aria-label":"Toggle quick responses panel",onClick:v(y,["stop"])},[...n[1]||(n[1]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",class:"chevron-icon"},[t("path",{"fill-rule":"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 1 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule":"evenodd"})],-1)])],8,W),n[2]||(n[2]=t("span",{class:"panel-title"},"Quick Responses",-1))]),u.value?(l(),o("button",{key:0,type:"button",class:"settings-button",title:"Manage quick responses","aria-label":"Manage quick responses",onClick:n[0]||(n[0]=v(a=>g.$emit("openSettings"),["stop"]))},[...n[3]||(n[3]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",class:"settings-icon"},[t("path",{"fill-rule":"evenodd",d:"M7.84 1.804A1 1 0 0 1 8.82 1h2.36a1 1 0 0 1 .98.804l.331 1.652a6.993 6.993 0 0 1 1.929 1.115l1.598-.54a1 1 0 0 1 1.186.447l1.18 2.044a1 1 0 0 1-.205 1.251l-1.267 1.113a7.047 7.047 0 0 1 0 2.228l1.267 1.113a1 1 0 0 1 .206 1.25l-1.18 2.045a1 1 0 0 1-1.187.447l-1.598-.54a6.993 6.993 0 0 1-1.929 1.115l-.33 1.652a1 1 0 0 1-.98.804H8.82a1 1 0 0 1-.98-.804l-.331-1.652a6.993 6.993 0 0 1-1.929-1.115l-1.598.54a1 1 0 0 1-1.186-.447l-1.18-2.044a1 1 0 0 1 .205-1.251l1.267-1.114a7.05 7.05 0 0 1 0-2.227L1.821 7.773a1 1 0 0 1-.206-1.25l1.18-2.045a1 1 0 0 1 1.187-.447l1.598.54A6.993 6.993 0 0 1 7.51 3.456l.33-1.652ZM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z","clip-rule":"evenodd"})],-1)])])):r("",!0)]),i.value&&u.value?(l(),o("div",G,[...n[4]||(n[4]=[t("span",{class:"loading-text"},"Loading...",-1)])])):!b.value&&u.value?(l(),o("div",H,[...n[5]||(n[5]=[t("span",{class:"empty-text"},"No quick responses yet",-1)])])):r("",!0),u.value&&b.value&&!i.value?(l(),o("div",J,[f.value.length>0?(l(),o("div",U,[n[6]||(n[6]=t("span",{class:"section-label"},"Project",-1)),t("div",X,[(l(!0),o(F,null,z(f.value,a=>(l(),o("button",{key:a.id,type:"button",class:B(["response-button project-response",{"auto-submit":a.autoSubmit}]),title:a.content,onClick:v(w=>x(a),["stop"])},[t("span",ee,k(a.label),1),a.autoSubmit?(l(),o("span",te,"⚡")):r("",!0)],10,Y))),128))])])):r("",!0),h.value.length>0?(l(),o("div",se,[n[7]||(n[7]=t("span",{class:"section-label"},"Global",-1)),t("div",ne,[(l(!0),o(F,null,z(h.value,a=>(l(),o("button",{key:a.id,type:"button",class:B(["response-button global-response",{"auto-submit":a.autoSubmit}]),title:a.content,onClick:v(w=>x(a),["stop"])},[t("span",le,k(a.label),1),a.autoSubmit?(l(),o("span",oe,"⚡")):r("",!0)],10,ae))),128))])])):r("",!0)])):r("",!0)])):r("",!0)}}),de=j(ie,[["__scopeId","data-v-0f48dfd6"]]);export{pe as F,de as Q,re as u};
1
+ import{_ as B,a as l,c as o,b as t,i as r,F,r as z,t as k,j as v,n as S,E as j,x as $}from"./index-MnvuyUxj.js";import{a as E}from"./QuickResponseSettings-DOZUtaRb.js";function re(m){return function(d){d.key==="Enter"&&(d.metaKey||d.ctrlKey)&&(d.preventDefault(),m())}}const N=["accept"],Q={key:0,class:"drop-zone"},I={key:1,class:"attached-files"},L={class:"file-icon"},P=["title"],T={class:"file-size"},K=["onClick"],Z={__name:"FileAttachment",props:{maxFiles:{type:Number,default:10},maxSize:{type:Number,default:10*1024*1024},acceptTypes:{type:String,default:"image/*,text/*,.json,.md,.csv,.pdf,.js,.ts,.py,.java,.go,.rs,.c,.cpp,.h,.sh,.yaml,.yml,.xml,.html,.css"}},emits:["update:files"],setup(m,{expose:_,emit:d}){const p=m,u=d,i=S([]),f=S(!1),h=S(null);function b(){var e;(e=h.value)==null||e.click()}function y(e){const s=e.target;a(Array.from(s.files)),s.value=""}function x(){f.value=!0}function g(){f.value=!1}function n(e){f.value=!1,a(Array.from(e.dataTransfer.files))}function a(e){for(const s of e){if(i.value.length>=p.maxFiles){alert(`Maximum ${p.maxFiles} files allowed`);break}if(s.size>p.maxSize){alert(`File "${s.name}" exceeds maximum size of ${R(p.maxSize)}`);continue}i.value.some(c=>c.name===s.name&&c.size===s.size)||i.value.push(s)}u("update:files",i.value)}function w(e){i.value.splice(e,1),u("update:files",i.value)}function A(){i.value=[],u("update:files",[])}function D(e){const s=e.type||"";return s.startsWith("image/")?"🖼️":s.startsWith("text/")||s==="application/json"?"📄":s==="application/pdf"?"📕":s.includes("javascript")||s.includes("typescript")?"📜":"📎"}function R(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function M(e,s=25){if(e.length<=s)return e;const c=e.split(".").pop();return`${`${e.slice(0,e.length-c.length-1).slice(0,s-c.length-4)}...`}.${c}`}return _({clear:A,files:i,addFiles:a}),(e,s)=>(l(),o("div",{class:"file-attachments",onDragover:v(x,["prevent"]),onDragleave:v(g,["prevent"]),onDrop:v(n,["prevent"])},[t("input",{ref_key:"fileInput",ref:h,type:"file",multiple:"",accept:m.acceptTypes,class:"hidden-input",onChange:y},null,40,N),t("button",{type:"button",class:"attach-btn",title:"Attach files (drag & drop supported)",onClick:b},[...s[0]||(s[0]=[t("span",{class:"attach-icon"},"📎",-1),t("span",{class:"attach-text"},"Attach",-1)])]),f.value?(l(),o("div",Q,[...s[1]||(s[1]=[t("span",{class:"drop-text"},"Drop files here",-1)])])):r("",!0),i.value.length>0?(l(),o("div",I,[(l(!0),o(F,null,z(i.value,(c,C)=>(l(),o("div",{key:C,class:"file-chip"},[t("span",L,k(D(c)),1),t("span",{class:"file-name",title:c.name},k(M(c.name)),9,P),t("span",T,"("+k(R(c.size))+")",1),t("button",{type:"button",class:"remove-btn",title:"Remove file",onClick:q=>w(C)}," × ",8,K)]))),128))])):r("",!0)],32))}},pe=B(Z,[["__scopeId","data-v-7f03e84b"]]),O={class:"panel-header"},V={class:"header-left"},W=["aria-expanded"],G={key:0,class:"loading-state"},H={key:1,class:"empty-state"},J={key:2,class:"responses-content"},U={key:0,class:"response-section"},X={class:"responses-row"},Y=["title","onClick"],ee={class:"button-label"},te={key:0,class:"auto-icon",title:"Auto-submit"},se={key:1,class:"response-section"},ne={class:"responses-row"},ae=["title","onClick"],le={class:"button-label"},oe={key:0,class:"auto-icon",title:"Auto-submit"},ie=Object.assign({name:"QuickResponsesPanel"},{__name:"QuickResponsesPanel",props:{showEmpty:{type:Boolean,default:!0}},emits:["insert","openSettings"],setup(m,{emit:_}){const d=_,p=E(),u=S(!1),i=$(()=>p.loading),f=$(()=>p.projectResponses),h=$(()=>p.globalResponses),b=$(()=>p.hasResponses);function y(){u.value=!u.value}function x(g){d("insert",{content:g.content,autoSubmit:g.autoSubmit}),u.value=!1}return(g,n)=>b.value||m.showEmpty?(l(),o("div",{key:0,class:"quick-responses-panel cursor-pointer",onClick:y},[t("div",O,[t("div",V,[t("button",{type:"button",class:"toggle-button","aria-expanded":u.value,title:"Toggle quick responses panel","aria-label":"Toggle quick responses panel",onClick:v(y,["stop"])},[...n[1]||(n[1]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",class:"chevron-icon"},[t("path",{"fill-rule":"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 1 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule":"evenodd"})],-1)])],8,W),n[2]||(n[2]=t("span",{class:"panel-title"},"Quick Responses",-1))]),u.value?(l(),o("button",{key:0,type:"button",class:"settings-button",title:"Manage quick responses","aria-label":"Manage quick responses",onClick:n[0]||(n[0]=v(a=>g.$emit("openSettings"),["stop"]))},[...n[3]||(n[3]=[t("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",class:"settings-icon"},[t("path",{"fill-rule":"evenodd",d:"M7.84 1.804A1 1 0 0 1 8.82 1h2.36a1 1 0 0 1 .98.804l.331 1.652a6.993 6.993 0 0 1 1.929 1.115l1.598-.54a1 1 0 0 1 1.186.447l1.18 2.044a1 1 0 0 1-.205 1.251l-1.267 1.113a7.047 7.047 0 0 1 0 2.228l1.267 1.113a1 1 0 0 1 .206 1.25l-1.18 2.045a1 1 0 0 1-1.187.447l-1.598-.54a6.993 6.993 0 0 1-1.929 1.115l-.33 1.652a1 1 0 0 1-.98.804H8.82a1 1 0 0 1-.98-.804l-.331-1.652a6.993 6.993 0 0 1-1.929-1.115l-1.598.54a1 1 0 0 1-1.186-.447l-1.18-2.044a1 1 0 0 1 .205-1.251l1.267-1.114a7.05 7.05 0 0 1 0-2.227L1.821 7.773a1 1 0 0 1-.206-1.25l1.18-2.045a1 1 0 0 1 1.187-.447l1.598.54A6.993 6.993 0 0 1 7.51 3.456l.33-1.652ZM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z","clip-rule":"evenodd"})],-1)])])):r("",!0)]),i.value&&u.value?(l(),o("div",G,[...n[4]||(n[4]=[t("span",{class:"loading-text"},"Loading...",-1)])])):!b.value&&u.value?(l(),o("div",H,[...n[5]||(n[5]=[t("span",{class:"empty-text"},"No quick responses yet",-1)])])):r("",!0),u.value&&b.value&&!i.value?(l(),o("div",J,[f.value.length>0?(l(),o("div",U,[n[6]||(n[6]=t("span",{class:"section-label"},"Project",-1)),t("div",X,[(l(!0),o(F,null,z(f.value,a=>(l(),o("button",{key:a.id,type:"button",class:j(["response-button project-response",{"auto-submit":a.autoSubmit}]),title:a.content,onClick:v(w=>x(a),["stop"])},[t("span",ee,k(a.label),1),a.autoSubmit?(l(),o("span",te,"⚡")):r("",!0)],10,Y))),128))])])):r("",!0),h.value.length>0?(l(),o("div",se,[n[7]||(n[7]=t("span",{class:"section-label"},"Global",-1)),t("div",ne,[(l(!0),o(F,null,z(h.value,a=>(l(),o("button",{key:a.id,type:"button",class:j(["response-button global-response",{"auto-submit":a.autoSubmit}]),title:a.content,onClick:v(w=>x(a),["stop"])},[t("span",le,k(a.label),1),a.autoSubmit?(l(),o("span",oe,"⚡")):r("",!0)],10,ae))),128))])])):r("",!0)])):r("",!0)])):r("",!0)}}),de=B(ie,[["__scopeId","data-v-0f48dfd6"]]);export{pe as F,de as Q,re as u};
@@ -1 +1 @@
1
- import{_ as E,m as x,A as L,a as _,c as R,b as r,a2 as b,h as z,l as H}from"./index-CSOPrlmq.js";const w={class:"resizable-textarea-wrapper"},y=["value"],k={__name:"ResizableTextarea",props:{modelValue:{type:String,default:""},minHeight:{type:Number,default:80},maxHeight:{type:Number,default:null}},emits:["update:modelValue","input"],setup(c,{expose:m,emit:h}){const o=c,d=h;function p(e){d("update:modelValue",e.target.value),d("input",e)}const t=H(null);let u=!1;x(()=>o.modelValue,e=>{t.value&&t.value.value!==e&&(t.value.value=e)});function v(e){if(!t.value)return;u=!0;const a=e.type.startsWith("touch")?e.touches[0].clientY:e.clientY,f=t.value.offsetHeight,l=i=>{if(!u)return;const g=i.type.startsWith("touch")?i.touches[0].clientY:i.clientY;let s=f+(g-a);s=Math.max(o.minHeight,s),o.maxHeight&&(s=Math.min(o.maxHeight,s)),t.value.style.height=`${s}px`},n=()=>{u=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",n),document.removeEventListener("touchmove",l),document.removeEventListener("touchend",n),document.removeEventListener("touchcancel",n)};document.addEventListener("mousemove",l),document.addEventListener("mouseup",n),document.addEventListener("touchmove",l,{passive:!1}),document.addEventListener("touchend",n),document.addEventListener("touchcancel",n)}return m({get value(){var e;return((e=t.value)==null?void 0:e.value)||""},set value(e){t.value&&(t.value.value=e)},focus(){var e;(e=t.value)==null||e.focus()},blur(){var e;(e=t.value)==null||e.blur()},select(){var e;(e=t.value)==null||e.select()},get selectionStart(){var e;return((e=t.value)==null?void 0:e.selectionStart)||0},set selectionStart(e){t.value&&(t.value.selectionStart=e)},get selectionEnd(){var e;return((e=t.value)==null?void 0:e.selectionEnd)||0},set selectionEnd(e){t.value&&(t.value.selectionEnd=e)},dispatchEvent(e){var a;return(a=t.value)==null?void 0:a.dispatchEvent(e)}}),L(()=>{u=!1}),(e,a)=>(_(),R("div",w,[r("textarea",b({ref_key:"textareaRef",ref:t},e.$attrs,{value:c.modelValue,onInput:p}),null,16,y),r("div",{class:"resize-handle","aria-hidden":"true",onMousedown:v,onTouchstart:z(v,["prevent"])},[...a[0]||(a[0]=[r("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[r("path",{d:"M14 10L10 14M14 6L6 14",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)])],32)]))}},Y=E(k,[["__scopeId","data-v-4771ec67"]]);export{Y as R};
1
+ import{_ as E,l as x,A as L,a as _,c as R,b as r,a2 as b,j as z,n as H}from"./index-MnvuyUxj.js";const w={class:"resizable-textarea-wrapper"},y=["value"],k={__name:"ResizableTextarea",props:{modelValue:{type:String,default:""},minHeight:{type:Number,default:80},maxHeight:{type:Number,default:null}},emits:["update:modelValue","input"],setup(c,{expose:m,emit:h}){const o=c,d=h;function p(e){d("update:modelValue",e.target.value),d("input",e)}const t=H(null);let u=!1;x(()=>o.modelValue,e=>{t.value&&t.value.value!==e&&(t.value.value=e)});function v(e){if(!t.value)return;u=!0;const a=e.type.startsWith("touch")?e.touches[0].clientY:e.clientY,f=t.value.offsetHeight,l=i=>{if(!u)return;const g=i.type.startsWith("touch")?i.touches[0].clientY:i.clientY;let s=f+(g-a);s=Math.max(o.minHeight,s),o.maxHeight&&(s=Math.min(o.maxHeight,s)),t.value.style.height=`${s}px`},n=()=>{u=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",n),document.removeEventListener("touchmove",l),document.removeEventListener("touchend",n),document.removeEventListener("touchcancel",n)};document.addEventListener("mousemove",l),document.addEventListener("mouseup",n),document.addEventListener("touchmove",l,{passive:!1}),document.addEventListener("touchend",n),document.addEventListener("touchcancel",n)}return m({get value(){var e;return((e=t.value)==null?void 0:e.value)||""},set value(e){t.value&&(t.value.value=e)},focus(){var e;(e=t.value)==null||e.focus()},blur(){var e;(e=t.value)==null||e.blur()},select(){var e;(e=t.value)==null||e.select()},get selectionStart(){var e;return((e=t.value)==null?void 0:e.selectionStart)||0},set selectionStart(e){t.value&&(t.value.selectionStart=e)},get selectionEnd(){var e;return((e=t.value)==null?void 0:e.selectionEnd)||0},set selectionEnd(e){t.value&&(t.value.selectionEnd=e)},dispatchEvent(e){var a;return(a=t.value)==null?void 0:a.dispatchEvent(e)}}),L(()=>{u=!1}),(e,a)=>(_(),R("div",w,[r("textarea",b({ref_key:"textareaRef",ref:t},e.$attrs,{value:c.modelValue,onInput:p}),null,16,y),r("div",{class:"resize-handle","aria-hidden":"true",onMousedown:v,onTouchstart:z(v,["prevent"])},[...a[0]||(a[0]=[r("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[r("path",{d:"M14 10L10 14M14 6L6 14",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)])],32)]))}},Y=E(k,[["__scopeId","data-v-4771ec67"]]);export{Y as R};
@@ -1 +1 @@
1
- import{_ as A,o as H,a as t,c as o,b as e,t as S,k as c,h as k,l as R,u as q,q as W,x as y,f as z,d as D,w as G,e as K,G as C,F as E,r as J,E as L}from"./index-CSOPrlmq.js";import{u as Q}from"./sessions-VDrd87yA.js";import{u as X}from"./commandButtons-B4OYZP0J.js";import{u as Y,P as Z,S as _,B as ss,g as es,f as ts,b as ns}from"./SessionLogStream-Da_GniUZ.js";import{a as os}from"./ApiClient-Dbs1H78V.js";const as={key:0,class:"session-summary"},is={class:"summary-text"},rs={class:"summary-meta"},ls={key:0,class:"summary-files"},us={key:1,class:"session-summary session-summary-loading"},ds={key:2,class:"session-summary session-summary-error"},cs={__name:"SessionCardSummary",props:{sessionId:{type:String,required:!0},summary:{type:Object,default:null},summaryLoading:{type:Boolean,default:!1},summaryError:{type:Boolean,default:!1}},emits:["retrySummary"],setup(s){const g=s,m=R(0);return H(async()=>{var f,l;try{const u=await os.getSessionFilesCount(g.sessionId);m.value=u.count||0}catch(u){console.warn("Failed to fetch files count:",u),(l=(f=g.summary)==null?void 0:f.filesModified)!=null&&l.length&&(m.value=g.summary.filesModified.length)}}),(f,l)=>s.summary?(t(),o("div",as,[e("p",is,S(s.summary.shortSummary),1),e("div",rs,[m.value>0?(t(),o("span",ls,S(m.value)+" "+S(m.value===1?"file":"files")+" modified ",1)):c("",!0)])])):s.summaryLoading?(t(),o("div",us,[...l[1]||(l[1]=[e("span",{class:"loading-spinner-small"},null,-1),e("span",null,"Loading summary...",-1)])])):s.summaryError?(t(),o("div",ds,[l[2]||(l[2]=e("span",{class:"error-icon"},"!",-1)),l[3]||(l[3]=e("span",null,"Summary unavailable",-1)),e("button",{class:"retry-btn",onClick:l[0]||(l[0]=k(u=>f.$emit("retrySummary"),["prevent"]))}," Retry ")])):c("",!0)}},ms=A(cs,[["__scopeId","data-v-a9b445b6"]]);function hs(s){return new Date(s).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}const vs={class:"session-header-actions"},ys={class:"session-date"},fs={key:0,class:"archive-actions"},ws=["title"],gs={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},ks={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Ss={__name:"SessionCardHeaderActions",props:{dateToShow:{type:String,default:null},isChild:{type:Boolean,default:!1},isOnBoard:{type:Boolean,default:!1},kanbanEnabled:{type:Boolean,default:!0},showArchive:{type:Boolean,default:!1},showUnarchive:{type:Boolean,default:!1},sessionStatus:{type:String,default:""},starred:{type:Boolean,default:!1}},emits:["archive","unarchive","star","addToBoard"],setup(s,{emit:g}){const m=s,f=g,l=y(()=>m.sessionStatus!=="running"&&m.sessionStatus!=="starting"),u=()=>{f("archive")},i=()=>{confirm("Restore this session to active?")&&f("unarchive")};return(b,r)=>(t(),o("div",vs,[e("div",ys,S(q(hs)(s.dateToShow)),1),s.isChild?c("",!0):(t(),o("div",fs,[s.kanbanEnabled&&!s.isOnBoard?(t(),o("button",{key:0,class:"add-to-board-btn",title:"Add to kanban board",onClick:r[0]||(r[0]=k(B=>b.$emit("addToBoard"),["stop","prevent"]))},[...r[2]||(r[2]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e("line",{x1:"9",y1:"3",x2:"9",y2:"21"}),e("line",{x1:"15",y1:"3",x2:"15",y2:"21"})],-1)])])):c("",!0),s.showArchive&&l.value?(t(),o("button",{key:1,class:"archive-btn",title:"Archive session",onClick:k(u,["stop","prevent"])},[...r[3]||(r[3]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("rect",{x:"2",y:"4",width:"20",height:"5",rx:"1",ry:"1"}),e("path",{d:"M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9"}),e("path",{d:"M10 13h4"})],-1)])])):c("",!0),s.showUnarchive?(t(),o("button",{key:2,class:"archive-btn",title:"Unarchive session",onClick:k(i,["stop","prevent"])},[...r[4]||(r[4]=[W('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-c4a198a4><rect x="2" y="4" width="20" height="5" rx="1" ry="1" data-v-c4a198a4></rect><path d="M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9" data-v-c4a198a4></path><path d="M12 11v6" data-v-c4a198a4></path><path d="M9 14l3-3 3 3" data-v-c4a198a4></path></svg>',1)])])):c("",!0),e("button",{class:"star-btn star-btn-mobile",title:s.starred?"Unstar session":"Star session",onClick:r[1]||(r[1]=k(B=>b.$emit("star"),["stop","prevent"]))},[s.starred?(t(),o("svg",gs,[...r[5]||(r[5]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])])):(t(),o("svg",ks,[...r[6]||(r[6]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])]))],8,ws)]))]))}},bs=A(Ss,[["__scopeId","data-v-c4a198a4"]]),ps={class:"workflow-card-wrapper"},Cs={class:"session-header-row"},Bs=["title"],xs={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},$s={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},As={class:"session-info"},js={class:"session-name"},Is={class:"session-meta"},Ms={key:0,class:"status-badge status-running"},Ts={key:1,class:"status-badge status-scheduled"},Us=["title"],Ds=["title","aria-label","onClick","innerHTML"],Es={key:0,class:"session-project"},Ls={class:"project-name"},Rs={__name:"SessionCard",props:{session:{type:Object,required:!0},showSummary:{type:Boolean,default:!1},showProject:{type:Boolean,default:!1},summary:{type:Object,default:null},summaryLoading:{type:Boolean,default:!1},summaryError:{type:Boolean,default:!1},isChild:{type:Boolean,default:!1},showArchive:{type:Boolean,default:!1},showUnarchive:{type:Boolean,default:!1},prUrl:{type:String,default:null},prSummary:{type:Object,default:null},kanbanEnabled:{type:Boolean,default:!0}},emits:["retrySummary","archive","unarchive","addToBoard"],setup(s,{emit:g}){const m=Q(),f=X(),l=Y(),u=R(null),i=s,b=g,r=y(()=>l.isSessionOnBoard(i.session.id)),B=()=>{b("addToBoard",i.session)},O=y(()=>i.session.lastActivityAt||i.session.updatedAt||i.session.createdAt);function x(){return m.getWorkflowSessions(i.session.id)}const j=y(()=>{const d=x(),n=["running","starting"];let h=0,a=0;for(const w of d)n.includes(w.status)&&h++,w.status==="scheduled"&&a++;return{runningCount:h,scheduledCount:a,totalCount:d.length,effectiveStatus:i.session.status}}),I=y(()=>{const d=["running","starting"];return x().filter(n=>d.includes(n.status)).map(n=>n.id)}),N=y(()=>I.value.length>0),p=y(()=>{const d=Date.now();if(i.session.status==="scheduled"&&i.session.scheduledAt)return i.session.scheduledAt;const n=x();let h=null;for(const a of n)if(a.id!==i.session.id&&a.status==="scheduled"&&a.scheduledAt){const w=new Date(a.scheduledAt).getTime();w>=d&&(h===null||w<h)&&(h=w)}return h}),M=y(()=>p.value?ts(new Date(p.value),{addSuffix:!0}):null),V=y(()=>p.value?ns(new Date(p.value),"MMM d, h:mm a"):null),F=y(()=>{const d=i.session.projectId;if(!d)return[];m.commandRunVersion;const n=f.getButtonsByProjectId(d),h=Object.fromEntries(n.map(v=>[v.id,v])),a=i.session.id,$=m.sessions.find(v=>v.id===a);return(($==null?void 0:$.latestCommandRuns)||i.session.latestCommandRuns||[]).filter(v=>{var U;return(U=h[v.buttonId])==null?void 0:U.showOnList}).map(v=>({buttonId:v.buttonId,label:h[v.buttonId].label,command:h[v.buttonId].command,status:v.status,latestRun:v}))}),P=d=>es(d),T=()=>{m.toggleSessionStar(i.session.id)};return(d,n)=>{const h=z("router-link");return t(),o(E,null,[e("div",ps,[D(h,{to:`/sessions/${s.session.id}`,class:L(["session-card card",{"is-child":s.isChild}])},{default:G(()=>[e("div",Cs,[s.isChild?c("",!0):(t(),o("button",{key:0,class:"star-btn",title:s.session.starred?"Unstar session":"Star session",onClick:k(T,["stop","prevent"])},[s.session.starred?(t(),o("svg",xs,[...n[4]||(n[4]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])])):(t(),o("svg",$s,[...n[5]||(n[5]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])]))],8,Bs)),e("div",As,[e("h3",js,S(s.session.name),1),e("p",Is,[j.value.runningCount>0?(t(),o("span",Ms," ● running ")):c("",!0),j.value.scheduledCount>0?(t(),o("span",Ts,[...n[6]||(n[6]=[e("svg",{class:"schedule-icon-inline",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"10"}),e("polyline",{points:"12 6 12 12 16 14"})],-1),K(" scheduled ",-1)])])):c("",!0),M.value?(t(),o("span",{key:2,class:"scheduled-time",title:V.value},S(M.value),9,Us)):c("",!0),s.prUrl&&!s.isChild?(t(),C(Z,{key:3,"pr-url":s.prUrl,summary:s.prSummary,"data-testid":"session-card-pr-indicators"},null,8,["pr-url","summary"])):c("",!0),(t(!0),o(E,null,J(F.value,a=>(t(),o("span",{key:a.buttonId,class:L(["button-status-indicator",`button-status-${a.status}`]),title:a.label,"aria-label":a.status,onClick:k(w=>u.value=a,["stop","prevent"]),innerHTML:P(a.status)},null,10,Ds))),128))]),s.showProject&&s.session.projectName?(t(),o("p",Es,[e("span",Ls,S(s.session.projectName),1)])):c("",!0)]),D(bs,{"date-to-show":O.value,"is-child":s.isChild,"is-on-board":r.value,"kanban-enabled":s.kanbanEnabled,"show-archive":s.showArchive,"show-unarchive":s.showUnarchive,"session-status":s.session.status,starred:!!s.session.starred,onArchive:n[0]||(n[0]=a=>d.$emit("archive",s.session.id)),onUnarchive:n[1]||(n[1]=a=>d.$emit("unarchive",s.session.id)),onStar:T,onAddToBoard:B},null,8,["date-to-show","is-child","is-on-board","kanban-enabled","show-archive","show-unarchive","session-status","starred"])]),s.showSummary?(t(),C(ms,{key:0,"session-id":s.session.id,summary:s.summary,"summary-loading":s.summaryLoading,"summary-error":s.summaryError,onRetrySummary:n[2]||(n[2]=a=>d.$emit("retrySummary",s.session.id))},null,8,["session-id","summary","summary-loading","summary-error"])):c("",!0),N.value?(t(),C(_,{key:1,"session-ids":I.value,"data-testid":"session-log-stream"},null,8,["session-ids"])):c("",!0)]),_:1},8,["to","class"])]),u.value?(t(),C(ss,{key:0,button:{id:u.value.buttonId,label:u.value.label,command:u.value.command},"latest-run":u.value.latestRun,"is-open":!!u.value,"session-id":s.session.id,onClose:n[3]||(n[3]=a=>u.value=null)},null,8,["button","latest-run","is-open","session-id"])):c("",!0)],64)}}},qs=A(Rs,[["__scopeId","data-v-01177dae"]]);export{qs as S};
1
+ import{_ as j,o as H,a as t,c as o,b as e,t as S,i as c,j as k,n as R,u as q,e as W,x as y,g as z,d as D,w as G,f as K,G as C,F as E,r as J,E as L}from"./index-MnvuyUxj.js";import{u as Q}from"./sessions-GqIMf9RF.js";import{u as X}from"./commandButtons-BqI7V84_.js";import{u as Y,P as Z,S as _,B as ss,g as es,f as ts,b as ns}from"./SessionLogStream-DMUzZOml.js";import{a as os}from"./ApiClient-CcqJ-GAv.js";const as={key:0,class:"session-summary"},is={class:"summary-text"},rs={class:"summary-meta"},ls={key:0,class:"summary-files"},us={key:1,class:"session-summary session-summary-loading"},ds={key:2,class:"session-summary session-summary-error"},cs={__name:"SessionCardSummary",props:{sessionId:{type:String,required:!0},summary:{type:Object,default:null},summaryLoading:{type:Boolean,default:!1},summaryError:{type:Boolean,default:!1}},emits:["retrySummary"],setup(s){const g=s,m=R(0);return H(async()=>{var f,l;try{const u=await os.getSessionFilesCount(g.sessionId);m.value=u.count||0}catch(u){console.warn("Failed to fetch files count:",u),(l=(f=g.summary)==null?void 0:f.filesModified)!=null&&l.length&&(m.value=g.summary.filesModified.length)}}),(f,l)=>s.summary?(t(),o("div",as,[e("p",is,S(s.summary.shortSummary),1),e("div",rs,[m.value>0?(t(),o("span",ls,S(m.value)+" "+S(m.value===1?"file":"files")+" modified ",1)):c("",!0)])])):s.summaryLoading?(t(),o("div",us,[...l[1]||(l[1]=[e("span",{class:"loading-spinner-small"},null,-1),e("span",null,"Loading summary...",-1)])])):s.summaryError?(t(),o("div",ds,[l[2]||(l[2]=e("span",{class:"error-icon"},"!",-1)),l[3]||(l[3]=e("span",null,"Summary unavailable",-1)),e("button",{class:"retry-btn",onClick:l[0]||(l[0]=k(u=>f.$emit("retrySummary"),["prevent"]))}," Retry ")])):c("",!0)}},ms=j(cs,[["__scopeId","data-v-a9b445b6"]]);function hs(s){return new Date(s).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}const vs={class:"session-header-actions"},ys={class:"session-date"},fs={key:0,class:"archive-actions"},ws=["title"],gs={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},ks={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Ss={__name:"SessionCardHeaderActions",props:{dateToShow:{type:String,default:null},isChild:{type:Boolean,default:!1},isOnBoard:{type:Boolean,default:!1},kanbanEnabled:{type:Boolean,default:!0},showArchive:{type:Boolean,default:!1},showUnarchive:{type:Boolean,default:!1},sessionStatus:{type:String,default:""},starred:{type:Boolean,default:!1}},emits:["archive","unarchive","star","addToBoard"],setup(s,{emit:g}){const m=s,f=g,l=y(()=>m.sessionStatus!=="running"&&m.sessionStatus!=="starting"),u=()=>{f("archive")},i=()=>{confirm("Restore this session to active?")&&f("unarchive")};return(b,r)=>(t(),o("div",vs,[e("div",ys,S(q(hs)(s.dateToShow)),1),s.isChild?c("",!0):(t(),o("div",fs,[s.kanbanEnabled&&!s.isOnBoard?(t(),o("button",{key:0,class:"add-to-board-btn",title:"Add to kanban board",onClick:r[0]||(r[0]=k(B=>b.$emit("addToBoard"),["stop","prevent"]))},[...r[2]||(r[2]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e("line",{x1:"9",y1:"3",x2:"9",y2:"21"}),e("line",{x1:"15",y1:"3",x2:"15",y2:"21"})],-1)])])):c("",!0),s.showArchive&&l.value?(t(),o("button",{key:1,class:"archive-btn",title:"Archive session",onClick:k(u,["stop","prevent"])},[...r[3]||(r[3]=[e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("rect",{x:"2",y:"4",width:"20",height:"5",rx:"1",ry:"1"}),e("path",{d:"M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9"}),e("path",{d:"M10 13h4"})],-1)])])):c("",!0),s.showUnarchive?(t(),o("button",{key:2,class:"archive-btn",title:"Unarchive session",onClick:k(i,["stop","prevent"])},[...r[4]||(r[4]=[W('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-c4a198a4><rect x="2" y="4" width="20" height="5" rx="1" ry="1" data-v-c4a198a4></rect><path d="M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9" data-v-c4a198a4></path><path d="M12 11v6" data-v-c4a198a4></path><path d="M9 14l3-3 3 3" data-v-c4a198a4></path></svg>',1)])])):c("",!0),e("button",{class:"star-btn star-btn-mobile",title:s.starred?"Unstar session":"Star session",onClick:r[1]||(r[1]=k(B=>b.$emit("star"),["stop","prevent"]))},[s.starred?(t(),o("svg",gs,[...r[5]||(r[5]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])])):(t(),o("svg",ks,[...r[6]||(r[6]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])]))],8,ws)]))]))}},bs=j(Ss,[["__scopeId","data-v-c4a198a4"]]),ps={class:"workflow-card-wrapper"},Cs={class:"session-header-row"},Bs=["title"],xs={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},$s={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},js={class:"session-info"},As={class:"session-name"},Is={class:"session-meta"},Ms={key:0,class:"status-badge status-running"},Ts={key:1,class:"status-badge status-scheduled"},Us=["title"],Ds=["title","aria-label","onClick","innerHTML"],Es={key:0,class:"session-project"},Ls={class:"project-name"},Rs={__name:"SessionCard",props:{session:{type:Object,required:!0},showSummary:{type:Boolean,default:!1},showProject:{type:Boolean,default:!1},summary:{type:Object,default:null},summaryLoading:{type:Boolean,default:!1},summaryError:{type:Boolean,default:!1},isChild:{type:Boolean,default:!1},showArchive:{type:Boolean,default:!1},showUnarchive:{type:Boolean,default:!1},prUrl:{type:String,default:null},prSummary:{type:Object,default:null},kanbanEnabled:{type:Boolean,default:!0}},emits:["retrySummary","archive","unarchive","addToBoard"],setup(s,{emit:g}){const m=Q(),f=X(),l=Y(),u=R(null),i=s,b=g,r=y(()=>l.isSessionOnBoard(i.session.id)),B=()=>{b("addToBoard",i.session)},O=y(()=>i.session.lastActivityAt||i.session.updatedAt||i.session.createdAt);function x(){return m.getWorkflowSessions(i.session.id)}const A=y(()=>{const d=x(),n=["running","starting"];let h=0,a=0;for(const w of d)n.includes(w.status)&&h++,w.status==="scheduled"&&a++;return{runningCount:h,scheduledCount:a,totalCount:d.length,effectiveStatus:i.session.status}}),I=y(()=>{const d=["running","starting"];return x().filter(n=>d.includes(n.status)).map(n=>n.id)}),N=y(()=>I.value.length>0),p=y(()=>{const d=Date.now();if(i.session.status==="scheduled"&&i.session.scheduledAt)return i.session.scheduledAt;const n=x();let h=null;for(const a of n)if(a.id!==i.session.id&&a.status==="scheduled"&&a.scheduledAt){const w=new Date(a.scheduledAt).getTime();w>=d&&(h===null||w<h)&&(h=w)}return h}),M=y(()=>p.value?ts(new Date(p.value),{addSuffix:!0}):null),V=y(()=>p.value?ns(new Date(p.value),"MMM d, h:mm a"):null),F=y(()=>{const d=i.session.projectId;if(!d)return[];m.commandRunVersion;const n=f.getButtonsByProjectId(d),h=Object.fromEntries(n.map(v=>[v.id,v])),a=i.session.id,$=m.sessions.find(v=>v.id===a);return(($==null?void 0:$.latestCommandRuns)||i.session.latestCommandRuns||[]).filter(v=>{var U;return(U=h[v.buttonId])==null?void 0:U.showOnList}).map(v=>({buttonId:v.buttonId,label:h[v.buttonId].label,command:h[v.buttonId].command,status:v.status,latestRun:v}))}),P=d=>es(d),T=()=>{m.toggleSessionStar(i.session.id)};return(d,n)=>{const h=z("router-link");return t(),o(E,null,[e("div",ps,[D(h,{to:`/sessions/${s.session.id}`,class:L(["session-card card",{"is-child":s.isChild}])},{default:G(()=>[e("div",Cs,[s.isChild?c("",!0):(t(),o("button",{key:0,class:"star-btn",title:s.session.starred?"Unstar session":"Star session",onClick:k(T,["stop","prevent"])},[s.session.starred?(t(),o("svg",xs,[...n[4]||(n[4]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])])):(t(),o("svg",$s,[...n[5]||(n[5]=[e("polygon",{points:"12 2 15.09 10.26 24 10.5 17.18 16.34 19.34 24.5 12 18.92 4.66 24.5 6.82 16.34 0 10.5 8.91 10.26 12 2"},null,-1)])]))],8,Bs)),e("div",js,[e("h3",As,S(s.session.name),1),e("p",Is,[A.value.runningCount>0?(t(),o("span",Ms," ● running ")):c("",!0),A.value.scheduledCount>0?(t(),o("span",Ts,[...n[6]||(n[6]=[e("svg",{class:"schedule-icon-inline",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e("circle",{cx:"12",cy:"12",r:"10"}),e("polyline",{points:"12 6 12 12 16 14"})],-1),K(" scheduled ",-1)])])):c("",!0),M.value?(t(),o("span",{key:2,class:"scheduled-time",title:V.value},S(M.value),9,Us)):c("",!0),s.prUrl&&!s.isChild?(t(),C(Z,{key:3,"pr-url":s.prUrl,summary:s.prSummary,"data-testid":"session-card-pr-indicators"},null,8,["pr-url","summary"])):c("",!0),(t(!0),o(E,null,J(F.value,a=>(t(),o("span",{key:a.buttonId,class:L(["button-status-indicator",`button-status-${a.status}`]),title:a.label,"aria-label":a.status,onClick:k(w=>u.value=a,["stop","prevent"]),innerHTML:P(a.status)},null,10,Ds))),128))]),s.showProject&&s.session.projectName?(t(),o("p",Es,[e("span",Ls,S(s.session.projectName),1)])):c("",!0)]),D(bs,{"date-to-show":O.value,"is-child":s.isChild,"is-on-board":r.value,"kanban-enabled":s.kanbanEnabled,"show-archive":s.showArchive,"show-unarchive":s.showUnarchive,"session-status":s.session.status,starred:!!s.session.starred,onArchive:n[0]||(n[0]=a=>d.$emit("archive",s.session.id)),onUnarchive:n[1]||(n[1]=a=>d.$emit("unarchive",s.session.id)),onStar:T,onAddToBoard:B},null,8,["date-to-show","is-child","is-on-board","kanban-enabled","show-archive","show-unarchive","session-status","starred"])]),s.showSummary?(t(),C(ms,{key:0,"session-id":s.session.id,summary:s.summary,"summary-loading":s.summaryLoading,"summary-error":s.summaryError,onRetrySummary:n[2]||(n[2]=a=>d.$emit("retrySummary",s.session.id))},null,8,["session-id","summary","summary-loading","summary-error"])):c("",!0),N.value?(t(),C(_,{key:1,"session-ids":I.value,"data-testid":"session-log-stream"},null,8,["session-ids"])):c("",!0)]),_:1},8,["to","class"])]),u.value?(t(),C(ss,{key:0,button:{id:u.value.buttonId,label:u.value.label,command:u.value.command},"latest-run":u.value.latestRun,"is-open":!!u.value,"session-id":s.session.id,onClose:n[3]||(n[3]=a=>u.value=null)},null,8,["button","latest-run","is-open","session-id"])):c("",!0)],64)}}},qs=j(Rs,[["__scopeId","data-v-01177dae"]]);export{qs as S};