@autocode-cli/autocode 0.37.0 → 0.38.2

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 (88) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BHpbNCa8.js → -f1liQz1.js} +1 -1
  3. package/.output/public/_nuxt/{up1a6xQr.js → 0HczxCVv.js} +1 -1
  4. package/.output/public/_nuxt/{CvEn06t8.js → 0fb47W2G.js} +1 -1
  5. package/.output/public/_nuxt/{qNJDhLpf.js → 6guOtdqw.js} +1 -1
  6. package/.output/public/_nuxt/{BmfOZEEG.js → B1XzNfSL.js} +1 -1
  7. package/.output/public/_nuxt/{Dku8fc7v.js → B2RgqbNO.js} +1 -1
  8. package/.output/public/_nuxt/{_Lx_e17m.js → B3P4PwA5.js} +1 -1
  9. package/.output/public/_nuxt/{D3uRvzsu.js → B5fw33KK.js} +1 -1
  10. package/.output/public/_nuxt/BCNjSdYq.js +1 -0
  11. package/.output/public/_nuxt/{DyAfzMRU.js → BJqVHY5h.js} +1 -1
  12. package/.output/public/_nuxt/{Bx15WLHx.js → BNy2STaj.js} +1 -1
  13. package/.output/public/_nuxt/{CDRiuU72.js → BS8cve1k.js} +1 -1
  14. package/.output/public/_nuxt/{BP-5A3ad.js → BVsyb2e6.js} +1 -1
  15. package/.output/public/_nuxt/{BE1Ftxsu.js → BYF8gHRW.js} +1 -1
  16. package/.output/public/_nuxt/{G3RO7xM_.js → BZ6FzmBL.js} +1 -1
  17. package/.output/public/_nuxt/{DjSp0ni5.js → BajA-R3t.js} +3 -3
  18. package/.output/public/_nuxt/{D3FsoLQm.js → Bc3I1G9W.js} +1 -1
  19. package/.output/public/_nuxt/Bn4DFtby.js +1 -0
  20. package/.output/public/_nuxt/{CORW7tev.js → BnQis2Wb.js} +1 -1
  21. package/.output/public/_nuxt/{_dIH-mlE.js → C5fz81dA.js} +1 -1
  22. package/.output/public/_nuxt/{C1d_VCXk.js → CBvW1gAI.js} +1 -1
  23. package/.output/public/_nuxt/{DpJr9JIo.js → CDrMVkFg.js} +1 -1
  24. package/.output/public/_nuxt/{rFVztcxU.js → CIXkncWO.js} +1 -1
  25. package/.output/public/_nuxt/{mbPYOeR0.js → CIrlkMnL.js} +1 -1
  26. package/.output/public/_nuxt/{C819KIPL.js → CLW3obj5.js} +1 -1
  27. package/.output/public/_nuxt/{CohKcwVk.js → COSxhdDS.js} +1 -1
  28. package/.output/public/_nuxt/{BPSRe1xo.js → CRQzIZYM.js} +1 -1
  29. package/.output/public/_nuxt/{BcwrT42V.js → CZqTwjXm.js} +1 -1
  30. package/.output/public/_nuxt/{CpaAmOT1.js → C_xNnhFc.js} +1 -1
  31. package/.output/public/_nuxt/{DPdNpAt1.js → CsTVNF-2.js} +1 -1
  32. package/.output/public/_nuxt/{G3ENYyJJ.js → CxIMD2YC.js} +1 -1
  33. package/.output/public/_nuxt/{CHFxtqug.js → D0qgRfni.js} +1 -1
  34. package/.output/public/_nuxt/D4nTCY0i.js +1 -0
  35. package/.output/public/_nuxt/{D6s--CDK.js → D6PNtP0_.js} +1 -1
  36. package/.output/public/_nuxt/{c0R8lEWK.js → DDABJbm9.js} +1 -1
  37. package/.output/public/_nuxt/{BJnlSHzy.js → DEvRa3of.js} +1 -1
  38. package/.output/public/_nuxt/{B-L8_kPw.js → DGy8YoXT.js} +1 -1
  39. package/.output/public/_nuxt/{DorDSzHT.js → DJjCRJhp.js} +1 -1
  40. package/.output/public/_nuxt/{B9-SkqjX.js → DKB4Mc1Q.js} +3 -3
  41. package/.output/public/_nuxt/{C3g32ML-.js → DKgemWiE.js} +1 -1
  42. package/.output/public/_nuxt/{CHQoxcLf.js → DNy56O1k.js} +1 -1
  43. package/.output/public/_nuxt/{BF5itqHW.js → DQcftxMR.js} +1 -1
  44. package/.output/public/_nuxt/{hYe2UtEI.js → DTcXWbr5.js} +1 -1
  45. package/.output/public/_nuxt/{_S9g-Cdv.js → DU_LmBMB.js} +1 -1
  46. package/.output/public/_nuxt/{3dDT4orS.js → Da1dX7RW.js} +1 -1
  47. package/.output/public/_nuxt/{CWELpXTp.js → DcNcSmJ0.js} +1 -1
  48. package/.output/public/_nuxt/{BatC3POU.js → DlO36yMp.js} +1 -1
  49. package/.output/public/_nuxt/{BJGB6i4C.js → DpcTyoGM.js} +1 -1
  50. package/.output/public/_nuxt/{CQakkP7y.js → DqEU6TSY.js} +1 -1
  51. package/.output/public/_nuxt/{CH4xRPqk.js → Dred22d0.js} +1 -1
  52. package/.output/public/_nuxt/{C1Dh6gFG.js → DxfoOa6c.js} +1 -1
  53. package/.output/public/_nuxt/{DvdVpK92.js → Dy-CBgLm.js} +1 -1
  54. package/.output/public/_nuxt/{B6_0bWxd.js → DzaPzzsO.js} +1 -1
  55. package/.output/public/_nuxt/{BNr40Cyx.js → GnKgiMOf.js} +1 -1
  56. package/.output/public/_nuxt/{CTidC4T0.js → N7kSzZAV.js} +1 -1
  57. package/.output/public/_nuxt/{0VxesDuV.js → PakvrKeO.js} +1 -1
  58. package/.output/public/_nuxt/{x9aAWeiI.js → PvSILeNu.js} +1 -1
  59. package/.output/public/_nuxt/{Cm1brjPJ.js → RgNv66WU.js} +1 -1
  60. package/.output/public/_nuxt/{BBTritm-.js → WK5WZELE.js} +1 -1
  61. package/.output/public/_nuxt/{n-2mvXdi.js → ZwekkJkt.js} +1 -1
  62. package/.output/public/_nuxt/{CjND9Y9S.js → _NYypPKu.js} +1 -1
  63. package/.output/public/_nuxt/builds/latest.json +1 -1
  64. package/.output/public/_nuxt/builds/meta/9a1c9664-8962-4c8a-9520-847d9c1906db.json +1 -0
  65. package/.output/public/_nuxt/{CqtB_OH7.js → jNB-5CTq.js} +1 -1
  66. package/.output/public/_nuxt/{cm-fPQZs.js → oFSgMRDY.js} +1 -1
  67. package/.output/public/_nuxt/{BDW6A7V8.js → rEg4ipuK.js} +1 -1
  68. package/.output/public/_nuxt/{DL-48EFA.js → tYdwqztA.js} +1 -1
  69. package/.output/public/_nuxt/{Q3VbeUEc.js → vmoRsjSo.js} +1 -1
  70. package/.output/public/api/_openapi.json +1 -1
  71. package/.output/public/docs/api/index.html +1 -272
  72. package/.output/public/docs/cli/index.html +1 -24
  73. package/.output/public/index.html +1 -1
  74. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  75. package/.output/server/chunks/build/server.mjs +2 -2
  76. package/.output/server/chunks/build/styles.mjs +12 -12
  77. package/.output/server/chunks/nitro/nitro.mjs +418 -450
  78. package/.output/server/package.json +1 -1
  79. package/package.json +1 -1
  80. package/.output/public/_i18n/Mqu2gZRD/en/messages.json +0 -1
  81. package/.output/public/_i18n/Mqu2gZRD/fr/messages.json +0 -1
  82. package/.output/public/_nuxt/BqOlVwUK.js +0 -1
  83. package/.output/public/_nuxt/CKyM99yH.js +0 -1
  84. package/.output/public/_nuxt/DbKMezC2.js +0 -1
  85. package/.output/public/_nuxt/builds/meta/cbc2f99e-ecf0-446a-810b-808825114bc3.json +0 -1
  86. package/.output/public/_payload.json +0 -1
  87. package/.output/public/docs/api/_payload.json +0 -1
  88. package/.output/public/docs/cli/_payload.json +0 -1
@@ -1 +1 @@
1
- import{_ as be}from"./Dku8fc7v.js";import{d as we,y as xe,u as Ce,r as v,o as K,z as U,a as $e,x as H,n as q,v as Ie,c as a,e as r,k as p,t as u,f as G,w as Y,h as o,p as j,F as Q,q as X,b as l,g as S,A,s as N,_ as De}from"./B9-SkqjX.js";import{u as Se}from"./CTidC4T0.js";import{u as Ee}from"./D6s--CDK.js";import{u as Z}from"./C819KIPL.js";import{u as Me}from"./hYe2UtEI.js";const Le={class:"kanban-page"},Te={class:"page-header"},Re={class:"header-actions"},ze={key:0,class:"loading"},Ae={key:1,class:"error-message"},Ne={key:2,class:"board-wrapper"},Fe=["onDragover","onDrop"],Pe={class:"column-header"},Ve={class:"column-header-top"},Oe={class:"column-title"},We={class:"column-count"},Be={key:0,class:"wip-limit"},Je={class:"column-content"},Ke={key:0,class:"column-empty"},Ue=["onDragstart","onClick"],He={class:"issue-header"},qe={class:"issue-key"},Ge={key:0,class:"processing-indicator",title:"Claude is working..."},Ye=["onClick"],je={class:"issue-title"},Qe={class:"issue-meta"},Xe={key:1,class:"parent-indicator",title:"Has parent"},Ze=["onClick"],ee=5,es=we({__name:"kanban",async setup(ss){let f,x;const se=xe(),{t:C}=Ce(),{success:E,error:M}=Se(),{getErrorMessage:L}=Ee(),b=v(null),h=v(null),F=v(0);let _=!1;const te=()=>{_||!b.value||!h.value||(_=!0,h.value.scrollLeft=b.value.scrollLeft,_=!1)},ne=()=>{_||!b.value||!h.value||(_=!0,b.value.scrollLeft=h.value.scrollLeft,_=!1)},$=()=>{h.value&&(F.value=h.value.scrollWidth)};K(()=>{U($),window.addEventListener("resize",$)}),$e(()=>{window.removeEventListener("resize",$)});const P=v({}),g=v(null),k=v(null),T=v(!1),V=v(0),m=v(new Set),d=v({visible:!1,x:0,y:0,issue:null}),{data:c,status:oe,error:O}=([f,x]=H(()=>Z("/api/columns","$35IWyimU8j")),f=await f,x(),f),{data:y,status:ae,error:W,refresh:R}=([f,x]=H(()=>Z("/api/issues","$0eQrGqHYDa")),f=await f,x(),f);q(()=>c.value,()=>U($));const w=e=>y.value?y.value.filter(s=>s.column_slug===e):[],I=e=>P.value[e]??ee,re=e=>{const s=w(e),n=I(e);return s.slice(0,n)},le=e=>{const s=w(e),n=I(e);return s.length>n},ie=e=>{const s=w(e),n=I(e);return Math.max(0,s.length-n)},ue=e=>{const s=I(e);P.value[e]=s+ee},ce=e=>{const s=Date.now()-V.value;(!T.value||s<150)&&se.push(`/issue/${e}`)},de=e=>{g.value=e,V.value=Date.now(),setTimeout(()=>{g.value===e&&(T.value=!0)},100)},ve=()=>{g.value=null,k.value=null,T.value=!1},pe=e=>{k.value=e},fe=()=>{k.value=null},ge=async e=>{if(!g.value)return;const s=g.value;if(y.value?.find(t=>t.key===s)?.column_slug===e){g.value=null,k.value=null;return}try{await $fetch(`/api/issues/${s}/move`,{method:"POST",body:{column:e}}),E(C("notify.issueMoved")),R()}catch(t){M(L(t))}finally{g.value=null,k.value=null}},he=(e,s)=>{e.preventDefault(),e.stopPropagation(),d.value={visible:!0,x:e.clientX,y:e.clientY,issue:s}},D=()=>{d.value.visible=!1},ye=async()=>{if(!d.value.issue||!c.value||c.value.length===0)return;const e=d.value.issue.key,s=c.value[c.value.length-1];if(s)try{await $fetch(`/api/issues/${e}/move`,{method:"POST",body:{column:s.slug,force:!0}}),E(C("notify.issueArchived")),R()}catch(n){M(L(n))}finally{D()}},_e=async()=>{if(!d.value.issue)return;if(!confirm(C("issue.confirmDelete"))){D();return}const e=d.value.issue.key;try{await $fetch(`/api/issues/${e}/archive`,{method:"DELETE"}),E(C("notify.issueDeleted")),R()}catch(s){M(L(s))}finally{D()}},{lastMessage:ke}=Me(),B=async()=>{try{const e=await $fetch("/api/issues");if(y.value&&e){const s=JSON.stringify(y.value),n=JSON.stringify(e);s!==n&&(y.value=e)}}catch{}},me=async()=>{try{const e=await $fetch("/api/stats");e.processingIssues&&(m.value=new Set(e.processingIssues))}catch{}},J=e=>{if(!m.value.has(e)||!c.value||c.value.length<2)return!1;const s=y.value?.find(t=>t.key===e);if(!s)return!1;const n=c.value.findIndex(t=>t.slug===s.column_slug);return!(n===0||n===c.value.length-1)};return K(()=>{me()}),q(ke,e=>{if((e?.type==="refresh"||e?.type==="issue-update")&&B(),e?.type==="claude_start"&&e.issue){const s=e.issue;m.value=new Set([...m.value,s])}if(e?.type==="claude_end"&&e.issue){const s=e.issue,n=new Set(m.value);n.delete(s),m.value=n,B()}}),Ie({title:"Kanban - AutoCode"}),(e,s)=>{const n=be;return l(),a("div",Le,[r("header",Te,[r("h1",null,u(e.$t("kanban.title")),1),r("div",Re,[G(n,{to:"/issues/graph",class:"btn btn-secondary"},{default:Y(()=>[S(u(e.$t("graph.title")),1)]),_:1})])]),o(oe)==="pending"||o(ae)==="pending"?(l(),a("div",ze,u(e.$t("kanban.loading")),1)):o(O)||o(W)?(l(),a("div",Ae,u(o(O)?.message||o(W)?.message),1)):(l(),a("div",Ne,[r("div",{ref_key:"scrollTopRef",ref:b,class:"scroll-top",onScroll:te},[r("div",{class:"scroll-spacer",style:j({width:o(F)+"px"})},null,4)],544),r("div",{ref_key:"boardRef",ref:h,class:"board",onScroll:ne},[(l(!0),a(Q,null,X(o(c),t=>(l(),a("div",{key:t.slug,class:N(["board-column",{"drag-over":o(k)===t.slug}]),onDragover:A(i=>pe(t.slug),["prevent"]),onDragleave:fe,onDrop:i=>ge(t.slug)},[r("div",Pe,[r("div",Ve,[r("h2",Oe,[S(u(t.name)+" ",1),r("span",We,u(w(t.slug).length),1)]),G(n,{to:`/column/${t.slug}/prompt?name=${encodeURIComponent(t.name)}`,class:"column-action",title:"View prompt"},{default:Y(()=>[...s[0]||(s[0]=[S(" 👁 ",-1)])]),_:1},8,["to"])]),t.wip_limit?(l(),a("span",Be,u(e.$t("kanban.wipLimit"))+": "+u(t.wip_limit),1)):p("",!0)]),r("div",Je,[w(t.slug).length===0?(l(),a("div",Ke,u(e.$t("kanban.noIssues")),1)):p("",!0),(l(!0),a(Q,null,X(re(t.slug),i=>(l(),a("div",{key:i.key,class:N(["issue-card",{dragging:o(g)===i.key,processing:J(i.key)}]),draggable:"true",onDragstart:z=>de(i.key),onDragend:ve,onClick:z=>ce(i.key)},[r("div",He,[r("div",qe,[J(i.key)?(l(),a("span",Ge,"⚙️")):p("",!0),S(" "+u(i.key),1)]),r("button",{class:"issue-menu-btn",title:"Menu",onClick:A(z=>he(z,i),["stop"])}," ☰ ",8,Ye)]),r("div",je,u(i.title),1),r("div",Qe,[i.priority?(l(),a("span",{key:0,class:N(["badge",`badge-${i.priority}`])},u(i.priority),3)):p("",!0),i.parent_key?(l(),a("span",Xe," ^ ")):p("",!0)])],42,Ue))),128)),le(t.slug)?(l(),a("button",{key:1,class:"load-more-btn",onClick:A(i=>ue(t.slug),["stop"])},u(e.$t("kanban.loadMore"))+" ("+u(ie(t.slug))+") ",9,Ze)):p("",!0)])],42,Fe))),128))],544)])),o(d).visible?(l(),a("div",{key:3,style:{position:"fixed",inset:"0",zIndex:99998},onClick:D})):p("",!0),o(d).visible?(l(),a("div",{key:4,style:j({position:"fixed",top:o(d).y+"px",left:o(d).x+"px",zIndex:99999,background:"white",border:"1px solid #ddd",borderRadius:"8px",boxShadow:"0 4px 12px rgba(0,0,0,0.15)",padding:"4px 0",minWidth:"140px"})},[o(d).issue&&o(c)&&o(d).issue.column_slug!==o(c)[o(c).length-1]?.slug?(l(),a("button",{key:0,style:{display:"block",width:"100%",padding:"10px 16px",textAlign:"left",background:"none",border:"none",cursor:"pointer",fontSize:"14px"},onClick:ye},u(e.$t("issue.archive")),1)):p("",!0),r("button",{style:{display:"block",width:"100%",padding:"10px 16px",textAlign:"left",background:"none",border:"none",cursor:"pointer",fontSize:"14px",color:"#ef4444"},onClick:_e},u(e.$t("common.delete")),1)],4)):p("",!0)])}}}),is=De(es,[["__scopeId","data-v-a660ac78"]]);export{is as default};
1
+ import{_ as be}from"./B2RgqbNO.js";import{d as we,y as xe,u as Ce,r as v,o as K,z as U,a as $e,x as H,n as q,v as Ie,c as a,e as r,k as p,t as u,f as G,w as Y,h as o,p as j,F as Q,q as X,b as l,g as S,A,s as N,_ as De}from"./DKB4Mc1Q.js";import{u as Se}from"./N7kSzZAV.js";import{u as Ee}from"./D6PNtP0_.js";import{u as Z}from"./CLW3obj5.js";import{u as Me}from"./DTcXWbr5.js";const Le={class:"kanban-page"},Te={class:"page-header"},Re={class:"header-actions"},ze={key:0,class:"loading"},Ae={key:1,class:"error-message"},Ne={key:2,class:"board-wrapper"},Fe=["onDragover","onDrop"],Pe={class:"column-header"},Ve={class:"column-header-top"},Oe={class:"column-title"},We={class:"column-count"},Be={key:0,class:"wip-limit"},Je={class:"column-content"},Ke={key:0,class:"column-empty"},Ue=["onDragstart","onClick"],He={class:"issue-header"},qe={class:"issue-key"},Ge={key:0,class:"processing-indicator",title:"Claude is working..."},Ye=["onClick"],je={class:"issue-title"},Qe={class:"issue-meta"},Xe={key:1,class:"parent-indicator",title:"Has parent"},Ze=["onClick"],ee=5,es=we({__name:"kanban",async setup(ss){let f,x;const se=xe(),{t:C}=Ce(),{success:E,error:M}=Se(),{getErrorMessage:L}=Ee(),b=v(null),h=v(null),F=v(0);let _=!1;const te=()=>{_||!b.value||!h.value||(_=!0,h.value.scrollLeft=b.value.scrollLeft,_=!1)},ne=()=>{_||!b.value||!h.value||(_=!0,b.value.scrollLeft=h.value.scrollLeft,_=!1)},$=()=>{h.value&&(F.value=h.value.scrollWidth)};K(()=>{U($),window.addEventListener("resize",$)}),$e(()=>{window.removeEventListener("resize",$)});const P=v({}),g=v(null),k=v(null),T=v(!1),V=v(0),m=v(new Set),d=v({visible:!1,x:0,y:0,issue:null}),{data:c,status:oe,error:O}=([f,x]=H(()=>Z("/api/columns","$35IWyimU8j")),f=await f,x(),f),{data:y,status:ae,error:W,refresh:R}=([f,x]=H(()=>Z("/api/issues","$0eQrGqHYDa")),f=await f,x(),f);q(()=>c.value,()=>U($));const w=e=>y.value?y.value.filter(s=>s.column_slug===e):[],I=e=>P.value[e]??ee,re=e=>{const s=w(e),n=I(e);return s.slice(0,n)},le=e=>{const s=w(e),n=I(e);return s.length>n},ie=e=>{const s=w(e),n=I(e);return Math.max(0,s.length-n)},ue=e=>{const s=I(e);P.value[e]=s+ee},ce=e=>{const s=Date.now()-V.value;(!T.value||s<150)&&se.push(`/issue/${e}`)},de=e=>{g.value=e,V.value=Date.now(),setTimeout(()=>{g.value===e&&(T.value=!0)},100)},ve=()=>{g.value=null,k.value=null,T.value=!1},pe=e=>{k.value=e},fe=()=>{k.value=null},ge=async e=>{if(!g.value)return;const s=g.value;if(y.value?.find(t=>t.key===s)?.column_slug===e){g.value=null,k.value=null;return}try{await $fetch(`/api/issues/${s}/move`,{method:"POST",body:{column:e}}),E(C("notify.issueMoved")),R()}catch(t){M(L(t))}finally{g.value=null,k.value=null}},he=(e,s)=>{e.preventDefault(),e.stopPropagation(),d.value={visible:!0,x:e.clientX,y:e.clientY,issue:s}},D=()=>{d.value.visible=!1},ye=async()=>{if(!d.value.issue||!c.value||c.value.length===0)return;const e=d.value.issue.key,s=c.value[c.value.length-1];if(s)try{await $fetch(`/api/issues/${e}/move`,{method:"POST",body:{column:s.slug,force:!0}}),E(C("notify.issueArchived")),R()}catch(n){M(L(n))}finally{D()}},_e=async()=>{if(!d.value.issue)return;if(!confirm(C("issue.confirmDelete"))){D();return}const e=d.value.issue.key;try{await $fetch(`/api/issues/${e}/archive`,{method:"DELETE"}),E(C("notify.issueDeleted")),R()}catch(s){M(L(s))}finally{D()}},{lastMessage:ke}=Me(),B=async()=>{try{const e=await $fetch("/api/issues");if(y.value&&e){const s=JSON.stringify(y.value),n=JSON.stringify(e);s!==n&&(y.value=e)}}catch{}},me=async()=>{try{const e=await $fetch("/api/stats");e.processingIssues&&(m.value=new Set(e.processingIssues))}catch{}},J=e=>{if(!m.value.has(e)||!c.value||c.value.length<2)return!1;const s=y.value?.find(t=>t.key===e);if(!s)return!1;const n=c.value.findIndex(t=>t.slug===s.column_slug);return!(n===0||n===c.value.length-1)};return K(()=>{me()}),q(ke,e=>{if((e?.type==="refresh"||e?.type==="issue-update")&&B(),e?.type==="claude_start"&&e.issue){const s=e.issue;m.value=new Set([...m.value,s])}if(e?.type==="claude_end"&&e.issue){const s=e.issue,n=new Set(m.value);n.delete(s),m.value=n,B()}}),Ie({title:"Kanban - AutoCode"}),(e,s)=>{const n=be;return l(),a("div",Le,[r("header",Te,[r("h1",null,u(e.$t("kanban.title")),1),r("div",Re,[G(n,{to:"/issues/graph",class:"btn btn-secondary"},{default:Y(()=>[S(u(e.$t("graph.title")),1)]),_:1})])]),o(oe)==="pending"||o(ae)==="pending"?(l(),a("div",ze,u(e.$t("kanban.loading")),1)):o(O)||o(W)?(l(),a("div",Ae,u(o(O)?.message||o(W)?.message),1)):(l(),a("div",Ne,[r("div",{ref_key:"scrollTopRef",ref:b,class:"scroll-top",onScroll:te},[r("div",{class:"scroll-spacer",style:j({width:o(F)+"px"})},null,4)],544),r("div",{ref_key:"boardRef",ref:h,class:"board",onScroll:ne},[(l(!0),a(Q,null,X(o(c),t=>(l(),a("div",{key:t.slug,class:N(["board-column",{"drag-over":o(k)===t.slug}]),onDragover:A(i=>pe(t.slug),["prevent"]),onDragleave:fe,onDrop:i=>ge(t.slug)},[r("div",Pe,[r("div",Ve,[r("h2",Oe,[S(u(t.name)+" ",1),r("span",We,u(w(t.slug).length),1)]),G(n,{to:`/column/${t.slug}/prompt?name=${encodeURIComponent(t.name)}`,class:"column-action",title:"View prompt"},{default:Y(()=>[...s[0]||(s[0]=[S(" 👁 ",-1)])]),_:1},8,["to"])]),t.wip_limit?(l(),a("span",Be,u(e.$t("kanban.wipLimit"))+": "+u(t.wip_limit),1)):p("",!0)]),r("div",Je,[w(t.slug).length===0?(l(),a("div",Ke,u(e.$t("kanban.noIssues")),1)):p("",!0),(l(!0),a(Q,null,X(re(t.slug),i=>(l(),a("div",{key:i.key,class:N(["issue-card",{dragging:o(g)===i.key,processing:J(i.key)}]),draggable:"true",onDragstart:z=>de(i.key),onDragend:ve,onClick:z=>ce(i.key)},[r("div",He,[r("div",qe,[J(i.key)?(l(),a("span",Ge,"⚙️")):p("",!0),S(" "+u(i.key),1)]),r("button",{class:"issue-menu-btn",title:"Menu",onClick:A(z=>he(z,i),["stop"])}," ☰ ",8,Ye)]),r("div",je,u(i.title),1),r("div",Qe,[i.priority?(l(),a("span",{key:0,class:N(["badge",`badge-${i.priority}`])},u(i.priority),3)):p("",!0),i.parent_key?(l(),a("span",Xe," ^ ")):p("",!0)])],42,Ue))),128)),le(t.slug)?(l(),a("button",{key:1,class:"load-more-btn",onClick:A(i=>ue(t.slug),["stop"])},u(e.$t("kanban.loadMore"))+" ("+u(ie(t.slug))+") ",9,Ze)):p("",!0)])],42,Fe))),128))],544)])),o(d).visible?(l(),a("div",{key:3,style:{position:"fixed",inset:"0",zIndex:99998},onClick:D})):p("",!0),o(d).visible?(l(),a("div",{key:4,style:j({position:"fixed",top:o(d).y+"px",left:o(d).x+"px",zIndex:99999,background:"white",border:"1px solid #ddd",borderRadius:"8px",boxShadow:"0 4px 12px rgba(0,0,0,0.15)",padding:"4px 0",minWidth:"140px"})},[o(d).issue&&o(c)&&o(d).issue.column_slug!==o(c)[o(c).length-1]?.slug?(l(),a("button",{key:0,style:{display:"block",width:"100%",padding:"10px 16px",textAlign:"left",background:"none",border:"none",cursor:"pointer",fontSize:"14px"},onClick:ye},u(e.$t("issue.archive")),1)):p("",!0),r("button",{style:{display:"block",width:"100%",padding:"10px 16px",textAlign:"left",background:"none",border:"none",cursor:"pointer",fontSize:"14px",color:"#ef4444"},onClick:_e},u(e.$t("common.delete")),1)],4)):p("",!0)])}}}),is=De(es,[["__scopeId","data-v-a660ac78"]]);export{is as default};
@@ -1 +1 @@
1
- import{D as r}from"./DjSp0ni5.js";import{a as s}from"./C3g32ML-.js";import{d as u,r as i,j as d,b as c,w as p,f,h as C}from"./B9-SkqjX.js";const _=u({__name:"EditSidebarListElement",props:{name:{}},emits:["close","edit"],setup(l,{emit:n}){const m=l,t=n,o=i(m.name);return(V,e)=>(c(),d(s,{onCancel:e[1]||(e[1]=a=>t("close")),onSubmit:e[2]||(e[2]=a=>t("edit",o.value))},{default:p(()=>[f(C(r),{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=a=>o.value=a),autofocus:""},null,8,["modelValue"])]),_:1}))}});export{_ as C};
1
+ import{D as r}from"./BajA-R3t.js";import{a as s}from"./DKgemWiE.js";import{d as u,r as i,j as d,b as c,w as p,f,h as C}from"./DKB4Mc1Q.js";const _=u({__name:"EditSidebarListElement",props:{name:{}},emits:["close","edit"],setup(l,{emit:n}){const m=l,t=n,o=i(m.name);return(V,e)=>(c(),d(s,{onCancel:e[1]||(e[1]=a=>t("close")),onSubmit:e[2]||(e[2]=a=>t("edit",o.value))},{default:p(()=>[f(C(r),{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=a=>o.value=a),autofocus:""},null,8,["modelValue"])]),_:1}))}});export{_ as C};
@@ -1 +1 @@
1
- import{d as S,g as U,aH as N,ar as z,M as B,as as E,aC as F,T as w,r as I,L as P}from"./DjSp0ni5.js";import{w as T}from"./C3g32ML-.js";import{q as V}from"./CQakkP7y.js";import{d as A,m as g,n as $,c as n,b as i,k as y,F as _,f as o,j as k,s as D,r as L,e as f,l as M,q as R,h as r,t as q,w as h}from"./B9-SkqjX.js";import"./92s3wAHG.js";import"./C819KIPL.js";import"./CTidC4T0.js";import"./D3FsoLQm.js";import"./BJnlSHzy.js";const O=A({__name:"CollectionServerForm",props:{collectionId:{default:""},serverUid:{default:""}},setup(C){const t=C,{activeWorkspaceCollections:d}=S(),{servers:p,serverMutators:v}=U(),c=[{label:"URL",key:"url",placeholder:"https://void.scalar.com",type:"text"},{label:"Description",key:"description",placeholder:"Production",type:"text"}],e=g(()=>{const l=d.value.find(a=>a.uid===t.collectionId);return p[l&&typeof t.serverUid=="string"&&t.serverUid==="default"?l.servers[0]??"":l?.servers.find(a=>a===t.serverUid)??""]}),m=g(()=>e.value?.url?e.value.url.match(N.PATH)?.map(l=>l.slice(1,-1))??[]:[]);$(m,l=>{if(!e.value)return;const a=e.value.variables?{...e.value.variables}:{};Object.keys(a).forEach(s=>{l.includes(s)||delete a[s]}),l.forEach(s=>{a[s]||(a[s]={default:""})}),v.edit(e.value.uid,"variables",a)},{immediate:!0});const b=(l,a)=>{!d.value||!e.value||v.edit(e.value.uid,l,a)},x=(l,a)=>{if(!e.value)return;const s=e.value.variables||{};s[l]={...s[l],default:a},v.edit(e.value.uid,"variables",s)};return(l,a)=>(i(),n("div",{class:D(["divide-0.5 flex w-full flex-col divide-y rounded-b-lg text-sm",e.value?.variables&&"bg-b-1"])},[e.value?(i(),n(_,{key:0},[o(V,{data:e.value,onUpdate:b,options:c},null,8,["data"]),e.value.variables?(i(),k(z,{key:0,variables:e.value.variables,"onUpdate:variable":x},null,8,["variables"])):y("",!0)],64)):y("",!0)],2))}}),W={class:"flex h-full w-full flex-col gap-12 px-1.5 pt-8"},H={class:"flex flex-col gap-4"},Y={class:"rounded-lg border"},G={class:"bg-b-2 flex items-start justify-between rounded-t-lg py-1 pr-1 pl-3 text-sm"},X={key:1,class:"self-center"},J={class:"text-c-3 flex h-full items-center justify-center rounded-lg border p-4"},oe=A({__name:"CollectionServers",setup(C){const{activeCollection:t}=S(),{servers:d,events:p,serverMutators:v}=U(),c=B(),e=L(null),m=g(()=>!d||!t.value?.servers?[]:Object.values(d).filter(a=>t.value?.servers.includes(a.uid))),b=()=>p.commandPalette.emit({commandName:"Add Server"}),x=()=>{!t.value?.uid||!e.value||(v.delete(e.value,t.value.uid),c.hide())},l=a=>{e.value=a,c.show()};return(a,s)=>(i(),n("div",W,[f("div",H,[s[2]||(s[2]=M('<div class="flex items-start justify-between gap-2"><div class="flex flex-col gap-2"><div class="flex h-8 items-center"><h3 class="font-bold">Servers</h3></div><p class="text-sm"> Add different base URLs for your API. You can use <code class="font-code text-c-2">{variables}</code> for dynamic parts. </p></div></div>',1)),(i(!0),n(_,null,R(m.value,(u,j)=>(i(),n("div",{key:u.uid},[f("div",Y,[f("div",G,[u.description?(i(),k(r(E),{key:0,class:"self-center",value:u.description},null,8,["value"])):(i(),n("span",X,"Server "+q(j+1),1)),o(r(w),{class:"hover:bg-b-3 hover:text-c-1 h-fit p-1.25",variant:"ghost",onClick:K=>l(u.uid)},{default:h(()=>[o(r(F),{class:"size-3.5"})]),_:1},8,["onClick"])]),r(t)?(i(),k(O,{key:0,collectionId:r(t).uid,serverUid:u.uid},null,8,["collectionId","serverUid"])):y("",!0)])]))),128)),f("div",J,[o(r(w),{class:"hover:bg-b-2 hover:text-c-1 flex items-center gap-2",size:"sm",variant:"ghost",onClick:b},{default:h(()=>[o(r(I),{class:"inline-flex",icon:"Add",size:"sm",thickness:"1.5"}),s[1]||(s[1]=f("span",null,"Add Server",-1))]),_:1})])]),o(r(P),{size:"xxs",state:r(c),title:`Delete ${e.value?r(d)[e.value]?.url:"Server"}`},{default:h(()=>[o(T,{variableName:"Server",warningMessage:"Are you sure you want to delete this server? This action cannot be undone.",onClose:s[0]||(s[0]=u=>r(c).hide()),onDelete:x})]),_:1},8,["state","title"])]))}});export{oe as default};
1
+ import{d as S,g as U,aH as N,ar as z,M as B,as as E,aC as F,T as w,r as I,L as P}from"./BajA-R3t.js";import{w as T}from"./DKgemWiE.js";import{q as V}from"./DqEU6TSY.js";import{d as A,m as g,n as $,c as n,b as i,k as y,F as _,f as o,j as k,s as D,r as L,e as f,l as M,q as R,h as r,t as q,w as h}from"./DKB4Mc1Q.js";import"./92s3wAHG.js";import"./CLW3obj5.js";import"./N7kSzZAV.js";import"./Bc3I1G9W.js";import"./DEvRa3of.js";const O=A({__name:"CollectionServerForm",props:{collectionId:{default:""},serverUid:{default:""}},setup(C){const t=C,{activeWorkspaceCollections:d}=S(),{servers:p,serverMutators:v}=U(),c=[{label:"URL",key:"url",placeholder:"https://void.scalar.com",type:"text"},{label:"Description",key:"description",placeholder:"Production",type:"text"}],e=g(()=>{const l=d.value.find(a=>a.uid===t.collectionId);return p[l&&typeof t.serverUid=="string"&&t.serverUid==="default"?l.servers[0]??"":l?.servers.find(a=>a===t.serverUid)??""]}),m=g(()=>e.value?.url?e.value.url.match(N.PATH)?.map(l=>l.slice(1,-1))??[]:[]);$(m,l=>{if(!e.value)return;const a=e.value.variables?{...e.value.variables}:{};Object.keys(a).forEach(s=>{l.includes(s)||delete a[s]}),l.forEach(s=>{a[s]||(a[s]={default:""})}),v.edit(e.value.uid,"variables",a)},{immediate:!0});const b=(l,a)=>{!d.value||!e.value||v.edit(e.value.uid,l,a)},x=(l,a)=>{if(!e.value)return;const s=e.value.variables||{};s[l]={...s[l],default:a},v.edit(e.value.uid,"variables",s)};return(l,a)=>(i(),n("div",{class:D(["divide-0.5 flex w-full flex-col divide-y rounded-b-lg text-sm",e.value?.variables&&"bg-b-1"])},[e.value?(i(),n(_,{key:0},[o(V,{data:e.value,onUpdate:b,options:c},null,8,["data"]),e.value.variables?(i(),k(z,{key:0,variables:e.value.variables,"onUpdate:variable":x},null,8,["variables"])):y("",!0)],64)):y("",!0)],2))}}),W={class:"flex h-full w-full flex-col gap-12 px-1.5 pt-8"},H={class:"flex flex-col gap-4"},Y={class:"rounded-lg border"},G={class:"bg-b-2 flex items-start justify-between rounded-t-lg py-1 pr-1 pl-3 text-sm"},X={key:1,class:"self-center"},J={class:"text-c-3 flex h-full items-center justify-center rounded-lg border p-4"},oe=A({__name:"CollectionServers",setup(C){const{activeCollection:t}=S(),{servers:d,events:p,serverMutators:v}=U(),c=B(),e=L(null),m=g(()=>!d||!t.value?.servers?[]:Object.values(d).filter(a=>t.value?.servers.includes(a.uid))),b=()=>p.commandPalette.emit({commandName:"Add Server"}),x=()=>{!t.value?.uid||!e.value||(v.delete(e.value,t.value.uid),c.hide())},l=a=>{e.value=a,c.show()};return(a,s)=>(i(),n("div",W,[f("div",H,[s[2]||(s[2]=M('<div class="flex items-start justify-between gap-2"><div class="flex flex-col gap-2"><div class="flex h-8 items-center"><h3 class="font-bold">Servers</h3></div><p class="text-sm"> Add different base URLs for your API. You can use <code class="font-code text-c-2">{variables}</code> for dynamic parts. </p></div></div>',1)),(i(!0),n(_,null,R(m.value,(u,j)=>(i(),n("div",{key:u.uid},[f("div",Y,[f("div",G,[u.description?(i(),k(r(E),{key:0,class:"self-center",value:u.description},null,8,["value"])):(i(),n("span",X,"Server "+q(j+1),1)),o(r(w),{class:"hover:bg-b-3 hover:text-c-1 h-fit p-1.25",variant:"ghost",onClick:K=>l(u.uid)},{default:h(()=>[o(r(F),{class:"size-3.5"})]),_:1},8,["onClick"])]),r(t)?(i(),k(O,{key:0,collectionId:r(t).uid,serverUid:u.uid},null,8,["collectionId","serverUid"])):y("",!0)])]))),128)),f("div",J,[o(r(w),{class:"hover:bg-b-2 hover:text-c-1 flex items-center gap-2",size:"sm",variant:"ghost",onClick:b},{default:h(()=>[o(r(I),{class:"inline-flex",icon:"Add",size:"sm",thickness:"1.5"}),s[1]||(s[1]=f("span",null,"Add Server",-1))]),_:1})])]),o(r(P),{size:"xxs",state:r(c),title:`Delete ${e.value?r(d)[e.value]?.url:"Server"}`},{default:h(()=>[o(T,{variableName:"Server",warningMessage:"Are you sure you want to delete this server? This action cannot be undone.",onClose:s[0]||(s[0]=u=>r(c).hide()),onDelete:x})]),_:1},8,["state","title"])]))}});export{oe as default};
@@ -1 +1 @@
1
- import{_ as d}from"./Dku8fc7v.js";import{u}from"./C819KIPL.js";import{d as m,u as f,x as g,o as v,K as x,v as h,c as i,k as y,h as e,t as p,e as C,f as k,w,b as c,g as N,_ as V}from"./B9-SkqjX.js";const b={class:"pipeline-page"},B={key:0,class:"loading card"},I={key:1,class:"empty-state card"},$=m({__name:"index",async setup(A){let t,_;const{t:a}=f(),{data:n,pending:l}=([t,_]=g(()=>u("/api/pipelines","$p7t_x6yV7n")),t=await t,_(),t);return v(()=>{if(n.value?.length){const s=n.value.find(o=>o.active)||n.value[0];s&&x(`/settings/pipeline/${encodeURIComponent(s.name)}`,{replace:!0})}}),h({title:"Pipeline Configuration - AutoCode"}),(r,s)=>{const o=d;return c(),i("div",b,[e(l)?(c(),i("div",B,p(e(a)("app.loading")),1)):e(n)?.length?y("",!0):(c(),i("div",I,[C("p",null,p(e(a)("pipeline.noColumns")),1),k(o,{to:"/settings/pipeline/new",class:"btn btn-primary"},{default:w(()=>[N(" + "+p(e(a)("pipeline.new")),1)]),_:1})]))])}}}),F=V($,[["__scopeId","data-v-9f6aa041"]]);export{F as default};
1
+ import{_ as d}from"./B2RgqbNO.js";import{u}from"./CLW3obj5.js";import{d as m,u as f,x as g,o as v,K as x,v as h,c as i,k as y,h as e,t as p,e as C,f as k,w,b as c,g as N,_ as V}from"./DKB4Mc1Q.js";const b={class:"pipeline-page"},B={key:0,class:"loading card"},I={key:1,class:"empty-state card"},$=m({__name:"index",async setup(A){let t,_;const{t:a}=f(),{data:n,pending:l}=([t,_]=g(()=>u("/api/pipelines","$p7t_x6yV7n")),t=await t,_(),t);return v(()=>{if(n.value?.length){const s=n.value.find(o=>o.active)||n.value[0];s&&x(`/settings/pipeline/${encodeURIComponent(s.name)}`,{replace:!0})}}),h({title:"Pipeline Configuration - AutoCode"}),(r,s)=>{const o=d;return c(),i("div",b,[e(l)?(c(),i("div",B,p(e(a)("app.loading")),1)):e(n)?.length?y("",!0):(c(),i("div",I,[C("p",null,p(e(a)("pipeline.noColumns")),1),k(o,{to:"/settings/pipeline/new",class:"btn btn-primary"},{default:w(()=>[N(" + "+p(e(a)("pipeline.new")),1)]),_:1})]))])}}}),F=V($,[["__scopeId","data-v-9f6aa041"]]);export{F as default};
@@ -1 +1 @@
1
- {"openapi":"3.1.0","info":{"title":"AutoCode API","version":"0.37.0","description":"REST API for AutoCode Issue Tracking Dashboard"},"servers":[{"url":"http://localhost","description":"Local Development Server","variables":{}}],"paths":{"":{"get":{"tags":["App Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog/autocreate":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog/autocreate/apply":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}},"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/changelog":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/changelog/summary":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/columns/{slug}/actions":{"get":{"tags":["API Routes"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/columns/{slug}/prompt":{"get":{"tags":["API Routes"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/columns":{"get":{"tags":["Columns"],"parameters":[],"responses":{"200":{"description":"List of columns","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"segment":{"type":"string","enum":["definition","action","finish"],"description":"Pipeline segment"},"isFirst":{"type":"boolean","description":"Is first column"},"isLast":{"type":"boolean","description":"Is last column"},"isActionable":{"type":"boolean","description":"Can execute actions"}}}]}}}}}},"summary":"List active columns","description":"Get all columns from the currently active pipeline with their metadata."}},"/api/health":{"get":{"tags":["Monitoring"],"parameters":[],"responses":{"200":{"description":"Health status","content":{"application/json":{"schema":{"type":"object","properties":{"healthy":{"type":"boolean","description":"Overall health status"},"checks":{"type":"object","properties":{"database":{"type":"boolean","description":"SQLite file exists"},"databaseConnection":{"type":"boolean","description":"Can query database"},"attachments":{"type":"boolean","description":"Attachments dir exists"}}},"timestamp":{"type":"string","format":"date-time"}}}}}}},"summary":"Health check","description":"Check the health status of the application and its dependencies."}},"/api/issues/{id}":{"get":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)","example":"AC-000001"}],"responses":{"200":{"description":"Issue details","content":{"application/json":{}}},"400":{"description":"Bad request - ID required","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Get an issue by key","description":"Retrieve a single issue by its key (e.g., AC-000001)."},"patch":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue updated successfully","content":{"application/json":{}}},"400":{"description":"Bad request - ID required","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Update an issue","description":"Update one or more fields of an existing issue.","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/issues/{id}/{column}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"column","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/ancestors":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/archive":{"delete":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Issue archived","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Archive an issue","description":"Move an issue to the archive (last column). This is a soft delete."}},"/api/issues/{id}/attachments":{"get":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"List of attachments","content":{"application/json":{"schema":{"type":"array"}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"List issue attachments","description":"Get all file attachments for a specific issue."},"post":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Attachment uploaded","content":{"application/json":{}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Upload attachment","description":"Upload a file attachment to an issue.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"File to upload"}}}}}}}},"/api/issues/{id}/attachments/{attachmentId}":{"delete":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer"},"description":"Attachment ID"}],"responses":{"200":{"description":"Attachment deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Attachment not found","content":{"application/json":{}}}},"summary":"Delete attachment","description":"Delete a file attachment from an issue."},"get":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer"},"description":"Attachment ID"}],"responses":{"200":{"description":"File content","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Attachment not found","content":{"application/json":{}}}},"summary":"Download attachment","description":"Download a specific file attachment."}},"/api/issues/{id}/children":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/comments":{"get":{"tags":["Comments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"List of comments","content":{"application/json":{"schema":{"type":"array"}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"List issue comments","description":"Get all comments for a specific issue."},"post":{"tags":["Comments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Comment created","content":{"application/json":{}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Add a comment","description":"Add a new comment to an issue.","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/issues/{id}/full-history":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/full-terminal":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/history":{"get":{"tags":["History"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Issue history","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"artifactsAvailable":{"type":"object","properties":{"prompt":{"type":"boolean"},"terminal":{"type":"boolean"}}}}}]}}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"Get issue history","description":"Get the movement and edit history of an issue with artifact availability info."}},"/api/issues/{id}/history/{sessionId}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/history/{sessionId}/prompt":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/move":{"post":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue moved successfully","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"actionExecuted":{"type":"boolean","description":"Whether column action was run"},"processing":{"type":"boolean","description":"Whether action is still processing"}}}]}}}},"400":{"description":"Bad request or move failed","content":{"application/json":{}}},"404":{"description":"Issue or column not found","content":{"application/json":{}}}},"summary":"Move issue to a column","description":"Move an issue to a specific column. If the column has an action, it will be executed (async by default).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","description":"Target column slug","example":"in-progress"},"lang":{"type":"string","enum":["en","fr"],"default":"fr","description":"Language"},"force":{"type":"boolean","default":false,"description":"Force move even if blocked"},"async":{"type":"boolean","default":true,"description":"Run action asynchronously"}},"required":["column"]}}}}}},"/api/issues/{id}/next":{"post":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue moved to next column","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"actionExecuted":{"type":"boolean","description":"Whether column action was run"}}}]}}}},"400":{"description":"Bad request or already at last column","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Move issue to next column","description":"Advance an issue to the next column in the pipeline. If the column has an action, it will be executed.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lang":{"type":"string","enum":["en","fr"],"default":"fr","description":"Language for action execution"},"force":{"type":"boolean","default":false,"description":"Force move even if blocked"}}}}}}}},"/api/issues/actionable":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues/autocomplete":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues/graph":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues":{"get":{"tags":["Issues"],"parameters":[{"name":"column","in":"query","schema":{"type":"string"},"description":"Filter by column slug (e.g., backlog, in-progress)"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Search in title and description"},{"name":"limit","in":"query","schema":{"type":"integer"},"description":"Maximum number of results to return"}],"responses":{"200":{"description":"List of issues","content":{"application/json":{"schema":{"type":"array"}}}}},"summary":"List all issues","description":"Retrieve a list of issues with optional filtering by column, search term, or limit."},"post":{"tags":["Issues"],"parameters":[],"responses":{"200":{"description":"Issue created successfully","content":{"application/json":{}}},"400":{"description":"Bad request - title is required","content":{"application/json":{}}},"500":{"description":"Server error","content":{"application/json":{}}}},"summary":"Create a new issue","description":"Create a new issue in the backlog. The issue key is auto-generated (AC-XXXXXX format).","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/pipelines/{name}":{"delete":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/activate":{"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions":{"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}":{"delete":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}/activate":{"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}/finalize":{"post":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines":{"get":{"tags":["Pipelines"],"parameters":[],"responses":{"200":{"description":"List of pipelines","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"draft":{"type":"boolean","description":"Is draft version"},"createdAt":{"type":"string","format":"date-time"},"createdFromVersion":{"type":"string","nullable":true,"description":"Source version"}}}]}}}}}},"summary":"List all pipelines","description":"Get all pipeline configurations with their columns organized by segment (definition, action, finish)."},"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/purge":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/stats":{"get":{"tags":["Monitoring"],"parameters":[],"responses":{"200":{"description":"Usage statistics","content":{"application/json":{}}}},"summary":"Get usage statistics","description":"Get Claude API usage statistics including token counts, costs, and call history."}},"/api/status":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/workflow/health":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/ws/status":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/_ws":{"get":{"tags":["Internal"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/.well-known/appspecific/{path}":{"get":{"tags":["App Routes"],"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/__nuxt_island/{*param1}":{"get":{"tags":["Internal"],"parameters":[{"name":"*param1","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/_i18n/{hash}/{locale}/messages.json":{"get":{"tags":["Internal"],"parameters":[{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"locale","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/_openapi.json":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}}}}
1
+ {"openapi":"3.1.0","info":{"title":"AutoCode API","version":"0.38.2","description":"REST API for AutoCode Issue Tracking Dashboard"},"servers":[{"url":"http://localhost","description":"Local Development Server","variables":{}}],"paths":{"":{"get":{"tags":["App Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog/autocreate":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog/autocreate/apply":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/catalog":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}},"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/changelog":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/changelog/summary":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/columns/{slug}/actions":{"get":{"tags":["API Routes"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/columns/{slug}/prompt":{"get":{"tags":["API Routes"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/columns":{"get":{"tags":["Columns"],"parameters":[],"responses":{"200":{"description":"List of columns","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"segment":{"type":"string","enum":["definition","action","finish"],"description":"Pipeline segment"},"isFirst":{"type":"boolean","description":"Is first column"},"isLast":{"type":"boolean","description":"Is last column"},"isActionable":{"type":"boolean","description":"Can execute actions"}}}]}}}}}},"summary":"List active columns","description":"Get all columns from the currently active pipeline with their metadata."}},"/api/health":{"get":{"tags":["Monitoring"],"parameters":[],"responses":{"200":{"description":"Health status","content":{"application/json":{"schema":{"type":"object","properties":{"healthy":{"type":"boolean","description":"Overall health status"},"checks":{"type":"object","properties":{"database":{"type":"boolean","description":"SQLite file exists"},"databaseConnection":{"type":"boolean","description":"Can query database"},"attachments":{"type":"boolean","description":"Attachments dir exists"}}},"timestamp":{"type":"string","format":"date-time"}}}}}}},"summary":"Health check","description":"Check the health status of the application and its dependencies."}},"/api/issues/{id}":{"get":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)","example":"AC-000001"}],"responses":{"200":{"description":"Issue details","content":{"application/json":{}}},"400":{"description":"Bad request - ID required","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Get an issue by key","description":"Retrieve a single issue by its key (e.g., AC-000001)."},"patch":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue updated successfully","content":{"application/json":{}}},"400":{"description":"Bad request - ID required","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Update an issue","description":"Update one or more fields of an existing issue.","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/issues/{id}/{column}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"column","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/ancestors":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/archive":{"delete":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Issue archived","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Archive an issue","description":"Move an issue to the archive (last column). This is a soft delete."}},"/api/issues/{id}/attachments":{"get":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"List of attachments","content":{"application/json":{"schema":{"type":"array"}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"List issue attachments","description":"Get all file attachments for a specific issue."},"post":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Attachment uploaded","content":{"application/json":{}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Upload attachment","description":"Upload a file attachment to an issue.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"File to upload"}}}}}}}},"/api/issues/{id}/attachments/{attachmentId}":{"delete":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer"},"description":"Attachment ID"}],"responses":{"200":{"description":"Attachment deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}}}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Attachment not found","content":{"application/json":{}}}},"summary":"Delete attachment","description":"Delete a file attachment from an issue."},"get":{"tags":["Attachments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"integer"},"description":"Attachment ID"}],"responses":{"200":{"description":"File content","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Attachment not found","content":{"application/json":{}}}},"summary":"Download attachment","description":"Download a specific file attachment."}},"/api/issues/{id}/children":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/comments":{"get":{"tags":["Comments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"List of comments","content":{"application/json":{"schema":{"type":"array"}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"List issue comments","description":"Get all comments for a specific issue."},"post":{"tags":["Comments"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Comment created","content":{"application/json":{}}},"400":{"description":"Bad request","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Add a comment","description":"Add a new comment to an issue.","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/issues/{id}/full-history":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/full-terminal":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/history":{"get":{"tags":["History"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key"}],"responses":{"200":{"description":"Issue history","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"artifactsAvailable":{"type":"object","properties":{"prompt":{"type":"boolean"},"terminal":{"type":"boolean"}}}}}]}}}}},"400":{"description":"Bad request","content":{"application/json":{}}}},"summary":"Get issue history","description":"Get the movement and edit history of an issue with artifact availability info."}},"/api/issues/{id}/history/{sessionId}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/history/{sessionId}/prompt":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/log":{"get":{"tags":["API Routes"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/issues/{id}/move":{"post":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue moved successfully","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"actionExecuted":{"type":"boolean","description":"Whether column action was run"},"processing":{"type":"boolean","description":"Whether action is still processing"}}}]}}}},"400":{"description":"Bad request or move failed","content":{"application/json":{}}},"404":{"description":"Issue or column not found","content":{"application/json":{}}}},"summary":"Move issue to a column","description":"Move an issue to a specific column. If the column has an action, it will be executed (async by default).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"column":{"type":"string","description":"Target column slug","example":"in-progress"},"lang":{"type":"string","enum":["en","fr"],"default":"fr","description":"Language"},"force":{"type":"boolean","default":false,"description":"Force move even if blocked"},"async":{"type":"boolean","default":true,"description":"Run action asynchronously"}},"required":["column"]}}}}}},"/api/issues/{id}/next":{"post":{"tags":["Issues"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Issue key (e.g., AC-000001)"}],"responses":{"200":{"description":"Issue moved to next column","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"actionExecuted":{"type":"boolean","description":"Whether column action was run"}}}]}}}},"400":{"description":"Bad request or already at last column","content":{"application/json":{}}},"404":{"description":"Issue not found","content":{"application/json":{}}}},"summary":"Move issue to next column","description":"Advance an issue to the next column in the pipeline. If the column has an action, it will be executed.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lang":{"type":"string","enum":["en","fr"],"default":"fr","description":"Language for action execution"},"force":{"type":"boolean","default":false,"description":"Force move even if blocked"}}}}}}}},"/api/issues/actionable":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues/autocomplete":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues/graph":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/issues":{"get":{"tags":["Issues"],"parameters":[{"name":"column","in":"query","schema":{"type":"string"},"description":"Filter by column slug (e.g., backlog, in-progress)"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Search in title and description"},{"name":"limit","in":"query","schema":{"type":"integer"},"description":"Maximum number of results to return"}],"responses":{"200":{"description":"List of issues","content":{"application/json":{"schema":{"type":"array"}}}}},"summary":"List all issues","description":"Retrieve a list of issues with optional filtering by column, search term, or limit."},"post":{"tags":["Issues"],"parameters":[],"responses":{"200":{"description":"Issue created successfully","content":{"application/json":{}}},"400":{"description":"Bad request - title is required","content":{"application/json":{}}},"500":{"description":"Server error","content":{"application/json":{}}}},"summary":"Create a new issue","description":"Create a new issue in the backlog. The issue key is auto-generated (AC-XXXXXX format).","requestBody":{"required":true,"content":{"application/json":{}}}}},"/api/pipelines/{name}":{"delete":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/activate":{"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions":{"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}":{"delete":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"get":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}/activate":{"put":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines/{name}/versions/{version}/finalize":{"post":{"tags":["API Routes"],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/pipelines":{"get":{"tags":["Pipelines"],"parameters":[],"responses":{"200":{"description":"List of pipelines","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"type":"object","properties":{"draft":{"type":"boolean","description":"Is draft version"},"createdAt":{"type":"string","format":"date-time"},"createdFromVersion":{"type":"string","nullable":true,"description":"Source version"}}}]}}}}}},"summary":"List all pipelines","description":"Get all pipeline configurations with their columns organized by segment (definition, action, finish)."},"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/purge":{"post":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/stats":{"get":{"tags":["Monitoring"],"parameters":[],"responses":{"200":{"description":"Usage statistics","content":{"application/json":{}}}},"summary":"Get usage statistics","description":"Get Claude API usage statistics including token counts, costs, and call history."}},"/api/status":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/workflow/health":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/api/ws/status":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/_ws":{"get":{"tags":["Internal"],"parameters":[],"responses":{"200":{"description":"OK"}}}},"/.well-known/appspecific/{path}":{"get":{"tags":["App Routes"],"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/__nuxt_island/{*param1}":{"get":{"tags":["Internal"],"parameters":[{"name":"*param1","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/_i18n/{hash}/{locale}/messages.json":{"get":{"tags":["Internal"],"parameters":[{"name":"hash","in":"path","required":true,"schema":{"type":"string"}},{"name":"locale","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/_openapi.json":{"get":{"tags":["API Routes"],"parameters":[],"responses":{"200":{"description":"OK"}}}}}}