spec-cat 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{wF8_ZCpc.js → C9YFwlVG.js} +1 -1
- package/.output/public/_nuxt/CkZELJoz.js +122 -0
- package/.output/public/_nuxt/CpSdCo6F.js +1 -0
- package/.output/public/_nuxt/{CJ5aKHH_.js → CwGiOvuj.js} +2 -2
- package/.output/public/_nuxt/{BRNtaPwh.js → Cy9osphj.js} +1 -1
- package/.output/public/_nuxt/D14Nt8oq.js +1 -0
- package/.output/public/_nuxt/DQ8x7AHg.js +1 -0
- package/.output/public/_nuxt/{CG1pdqEM.js → Do9K5d62.js} +1 -1
- package/.output/public/_nuxt/DqVSe5UI.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/c4ed4e48-2de2-41d6-b09b-c785eac1d36d.json +1 -0
- package/.output/public/_nuxt/builds/meta/dev.json +1 -0
- package/.output/public/_nuxt/entry.CJqUIF8E.css +1 -0
- package/.output/public/_nuxt/{BgAW4X6A.js → vkftdPXk.js} +1 -1
- package/.output/server/chunks/_/aiProviderRegistry.mjs +36 -0
- package/.output/server/chunks/_/aiProviderRegistry.mjs.map +1 -0
- package/.output/server/chunks/_/aiProviderSelection.mjs +76 -0
- package/.output/server/chunks/_/aiProviderSelection.mjs.map +1 -0
- package/.output/server/chunks/_/chat.mjs +8 -2
- package/.output/server/chunks/_/chat.mjs.map +1 -1
- package/.output/server/chunks/_/claude.mjs +163 -0
- package/.output/server/chunks/_/claude.mjs.map +1 -0
- package/.output/server/chunks/_/claudeProvider.mjs +6 -6
- package/.output/server/chunks/_/claudeService.mjs +85 -0
- package/.output/server/chunks/_/claudeService.mjs.map +1 -0
- package/.output/server/chunks/_/codexProvider.mjs +63 -123
- package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
- package/.output/server/chunks/_/git.mjs +1 -1
- package/.output/server/chunks/_/providerProcessError.mjs +1 -1
- package/.output/server/chunks/_/providerProcessError.mjs.map +1 -1
- package/.output/server/chunks/_/skillRegistry.mjs +249 -0
- package/.output/server/chunks/_/skillRegistry.mjs.map +1 -0
- package/.output/server/chunks/_/validateWorktree.mjs +27 -3
- package/.output/server/chunks/_/validateWorktree.mjs.map +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +899 -2046
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/_ws.mjs +350 -259
- package/.output/server/chunks/routes/_ws.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/providers.get.mjs +3 -5
- package/.output/server/chunks/routes/api/ai/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/compare.get.mjs +2 -5
- package/.output/server/chunks/routes/api/chat/compare.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/context.get.mjs +2 -5
- package/.output/server/chunks/routes/api/chat/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/finalize.post.mjs +11 -8
- package/.output/server/chunks/routes/api/chat/finalize.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs +7 -4
- package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs +2 -3
- package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview.delete.mjs +2 -3
- package/.output/server/chunks/routes/api/chat/preview.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/preview.post.mjs +3 -4
- package/.output/server/chunks/routes/api/chat/preview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/rebase.post.mjs +3 -4
- package/.output/server/chunks/routes/api/chat/rebase.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs +4 -3
- package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree.delete.mjs +1 -2
- package/.output/server/chunks/routes/api/chat/worktree.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat/worktree.post.mjs +7 -11
- package/.output/server/chunks/routes/api/chat/worktree.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/chat.post.mjs +4 -5
- package/.output/server/chunks/routes/api/chat.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +1 -2
- package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs +5 -10
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs +2 -5
- package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/archives.get.mjs +2 -5
- package/.output/server/chunks/routes/api/conversations/archives.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/update.post.mjs +56 -0
- package/.output/server/chunks/routes/api/conversations/update.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/conversations.get.mjs +2 -5
- package/.output/server/chunks/routes/api/conversations.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations.post.mjs +2 -5
- package/.output/server/chunks/routes/api/conversations.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/cwd.get.mjs +2 -5
- package/.output/server/chunks/routes/api/cwd.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branch-rename.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/branch-rename.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branch.delete.mjs +2 -5
- package/.output/server/chunks/routes/api/git/branch.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/branches.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/branches.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/checkout.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/checkout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/clean.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/clean.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/commit.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/commit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/diff.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/fetch.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/fetch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/file-diff.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/file-diff.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/graph.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/graph.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/log.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/log.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/merge-base.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/merge-base.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/merge.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/merge.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/pull.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/pull.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/push.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/push.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/rebase.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/rebase.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.delete.mjs +2 -5
- package/.output/server/chunks/routes/api/git/remote.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/remote.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remote.put.mjs +2 -5
- package/.output/server/chunks/routes/api/git/remote.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/remotes.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/remotes.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/reset.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/revert.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/revert.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/show.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/show.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stage.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stage.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-apply.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash-apply.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-branch.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash-branch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-drop.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash-drop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash-pop.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash-pop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/stash.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/stash.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/state.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/state.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/status.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +2 -5
- package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag-push.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/tag-push.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag.delete.mjs +2 -5
- package/.output/server/chunks/routes/api/git/tag.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/tag.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/tag.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/git/unstage.post.mjs +2 -5
- package/.output/server/chunks/routes/api/git/unstage.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +4 -5
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +2 -3
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +2 -3
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/abort.post.mjs +2 -3
- package/.output/server/chunks/routes/api/rebase/abort.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +7 -5
- package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs +1 -2
- package/.output/server/chunks/routes/api/rebase/conflicts.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs +3 -4
- package/.output/server/chunks/routes/api/rebase/continue-sync.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/continue.post.mjs +9 -8
- package/.output/server/chunks/routes/api/rebase/continue.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/rebase/resolve.put.mjs +1 -2
- package/.output/server/chunks/routes/api/rebase/resolve.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/repository/status.get.mjs +2 -5
- package/.output/server/chunks/routes/api/repository/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings.get.mjs +4 -7
- package/.output/server/chunks/routes/api/settings.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/settings.post.mjs +4 -5
- package/.output/server/chunks/routes/api/settings.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs +8 -6
- package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs +1 -4
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs +1 -4
- package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/features.get.mjs +1 -4
- package/.output/server/chunks/routes/api/specs/features.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/reindex.post.mjs +2 -5
- package/.output/server/chunks/routes/api/specs/reindex.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/search.get.mjs +2 -5
- package/.output/server/chunks/routes/api/specs/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/specs/status.get.mjs +2 -5
- package/.output/server/chunks/routes/api/specs/status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs +2 -3
- package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs +1 -2
- package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/git-watcher-ws.mjs +2 -5
- package/.output/server/chunks/routes/git-watcher-ws.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -5
- package/.output/server/index.mjs +2 -5
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/BGX7vZ2E.js +0 -1
- package/.output/public/_nuxt/Bo0qwvIG.js +0 -1
- package/.output/public/_nuxt/CQT7IgVF.js +0 -1
- package/.output/public/_nuxt/CWTghksz.js +0 -128
- package/.output/public/_nuxt/DZfSmUhR.js +0 -1
- package/.output/public/_nuxt/builds/meta/83cad684-1ef2-41bf-8031-41fb1a7c2996.json +0 -1
- package/.output/public/_nuxt/entry.CA9G_QPQ.css +0 -1
- package/.output/server/chunks/routes/api/auto-mode/status.get.mjs +0 -35
- package/.output/server/chunks/routes/api/auto-mode/status.get.mjs.map +0 -1
- package/.output/server/chunks/routes/api/auto-mode/toggle.post.mjs +0 -45
- package/.output/server/chunks/routes/api/auto-mode/toggle.post.mjs.map +0 -1
- package/.output/server/chunks/routes/auto-mode-ws.mjs +0 -65
- package/.output/server/chunks/routes/auto-mode-ws.mjs.map +0 -1
package/.output/nitro.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as _,y as i,z as l,H as w,G as n,B as p,k as B,I as V,J as F,K as N,L as S,T,C as x,M as z,D as j,N as v,A as o,O as u,E as W,P as $,Q as C,R as D,g as k,o as q,S as L,U as P}from"./CJ5aKHH_.js";import{r as O,a as M,b as R,c as U}from"./BRNtaPwh.js";const A=_({__name:"WorktreeStatusBadge",props:{status:{}},setup(t){const e=t,s=B(()=>({clean:{label:"clean",color:"text-retro-green bg-retro-green/20"},dirty:{label:"dirty",color:"text-retro-yellow bg-retro-yellow/20"},ahead:{label:"ahead",color:"text-retro-cyan bg-retro-cyan/20"},behind:{label:"behind",color:"text-retro-orange bg-retro-orange/20"},diverged:{label:"diverged",color:"text-retro-red bg-retro-red/20"}})[e.status]);return(a,h)=>(i(),l("span",{class:w(["px-1.5 py-0.5 text-[10px] font-mono uppercase rounded",n(s).color])},p(n(s).label),3))}}),E=V("worktree",{state:()=>({worktrees:[],currentBranch:"",mainWorktree:"",workingDirectory:"",loading:!1,error:null}),getters:{activeWorktree:t=>t.worktrees.find(e=>e.isCurrent),featureWorktrees:t=>t.worktrees.filter(e=>!e.isMain),mainWorktreeInfo:t=>t.worktrees.find(e=>e.isMain),hasWorktrees:t=>t.worktrees.length>1,dirtyWorktrees:t=>t.worktrees.filter(e=>e.status==="dirty")},actions:{async initialize(){if(!this.workingDirectory)try{const{cwd:t}=await $fetch("/api/cwd");this.workingDirectory=t}catch(t){console.error("Failed to get working directory:",t),this.workingDirectory=""}},async fetchWorktrees(){await this.initialize(),this.loading=!0,this.error=null;try{const t=await $fetch("/api/worktrees",{query:{workingDirectory:this.workingDirectory}});this.worktrees=t.worktrees,this.currentBranch=t.currentBranch,this.mainWorktree=t.mainWorktree}catch(t){this.error=t instanceof Error?t.message:"Failed to fetch worktrees",console.error("Failed to fetch worktrees:",t)}finally{this.loading=!1}},async createWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch("/api/worktrees",{method:"POST",query:{workingDirectory:this.workingDirectory},body:t});return e.success&&e.worktree?this.worktrees.push(e.worktree):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to create worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},async deleteWorktree(t,e=!1){await this.initialize(),this.loading=!0,this.error=null;try{const s=await $fetch(`/api/worktrees/${t}`,{method:"DELETE",query:{workingDirectory:this.workingDirectory,deleteBranch:e.toString()}});return s.success?this.worktrees=this.worktrees.filter(a=>a.name!==t):s.error&&(this.error=s.error),s}catch(s){const a=s instanceof Error?s.message:"Failed to delete worktree";return this.error=a,{success:!1,error:a}}finally{this.loading=!1}},async switchWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch(`/api/worktrees/${t}/switch`,{method:"POST",query:{workingDirectory:this.workingDirectory}});return e.success?(this.worktrees=this.worktrees.map(s=>({...s,isCurrent:s.name===t})),this.currentBranch=t):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to switch worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},clearError(){this.error=null}}}),H={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},I={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},K={key:0,class:"p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},G=["disabled"],J=["disabled"],Q={class:"flex justify-end gap-2 pt-2"},X=["disabled"],Y=["disabled"],Z=_({__name:"WorktreeCreateModal",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(t){const e=F(t,"modelValue"),s=E(),a=k(""),h=k(""),m=k(!1),f=k(""),b=async()=>{if(!a.value.trim()){f.value="Description is required";return}m.value=!0,f.value="";try{const d=await s.createWorktree({description:a.value.trim(),shortName:h.value.trim()||void 0});d.success?(a.value="",h.value="",e.value=!1):f.value=d.error||"Failed to create worktree"}catch(d){f.value=d instanceof Error?d.message:"Failed to create worktree"}finally{m.value=!1}},c=()=>{e.value=!1,a.value="",h.value="",f.value=""},g=d=>{d.key==="Escape"&&c()};return N(e,d=>{d?document.addEventListener("keydown",g):document.removeEventListener("keydown",g)}),(d,r)=>(i(),S(T,{to:"body"},[x(z,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:j(()=>[e.value?(i(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:v(c,["self"])},[o("div",H,[o("div",I,[r[2]||(r[2]=o("h3",{class:"text-sm font-mono text-retro-text"},"Create Worktree",-1)),o("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",onClick:c},[x(n(O),{class:"h-4 w-4"})])]),o("form",{class:"p-4 space-y-4",onSubmit:v(b,["prevent"])},[n(f)?(i(),l("div",K,p(n(f)),1)):u("",!0),o("div",null,[r[3]||(r[3]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Feature Description "),o("span",{class:"text-retro-red"},"*")],-1)),$(o("input",{"onUpdate:modelValue":r[0]||(r[0]=y=>C(a)?a.value=y:null),type:"text",placeholder:"e.g., Add user authentication",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,G),[[D,n(a)]]),r[4]||(r[4]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," A brief description of what this feature does ",-1))]),o("div",null,[r[5]||(r[5]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Short Name "),o("span",{class:"text-retro-subtle"},"(optional)")],-1)),$(o("input",{"onUpdate:modelValue":r[1]||(r[1]=y=>C(h)?h.value=y:null),type:"text",placeholder:"e.g., auth",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,J),[[D,n(h)]]),r[6]||(r[6]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," Override the auto-generated branch name (e.g., 001-auth instead of 001-add-user-authentication) ",-1))]),o("div",Q,[o("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:n(m),onClick:c}," Cancel ",8,X),o("button",{type:"submit",class:"px-3 py-1.5 text-xs font-mono text-retro-black bg-retro-cyan hover:bg-retro-cyan/80 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:n(m)||!n(a).trim()},p(n(m)?"Creating...":"Create"),9,Y)])],32)])])):u("",!0)]),_:1})]))}}),ee={class:"h-full flex flex-col bg-retro-black"},te={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},re={class:"flex items-center gap-2"},oe={key:0,class:"px-4 py-2 bg-retro-red/20 border-b border-retro-red/50"},se={class:"text-xs font-mono text-retro-red"},ne={class:"flex-1 overflow-y-auto p-2 space-y-1"},ae={class:"flex items-start justify-between gap-2"},ie={class:"flex-1 min-w-0"},le={class:"flex items-center gap-2"},ce={key:0,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-yellow/20 text-retro-yellow rounded"},de={key:1,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-cyan/20 text-retro-cyan rounded"},ue={key:0,class:"mt-1 text-xs font-mono text-retro-muted truncate"},pe={class:"text-retro-subtle"},he={class:"mt-1 text-[10px] font-mono text-retro-subtle truncate"},me={class:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity"},fe=["onClick"],xe=["onClick"],be={key:0,class:"mt-2 text-[10px] font-mono text-retro-green"},ye={key:0,class:"flex flex-col items-center justify-center py-8 text-center"},ke=_({__name:"WorktreePanel",setup(t){const e=E(),s=k(!1);q(()=>{e.fetchWorktrees()});const a=()=>{e.fetchWorktrees()},h=()=>{s.value=!0},m=async b=>{await e.switchWorktree(b)},f=async b=>{confirm(`Delete worktree "${b}"? This will remove the worktree directory.`)&&await e.deleteWorktree(b,!1)};return(b,c)=>{const g=A,d=Z;return i(),l("div",ee,[o("div",te,[c[1]||(c[1]=o("h2",{class:"text-sm font-mono text-retro-text"},"Worktrees",-1)),o("div",re,[o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:a},[x(n(M),{class:w(["h-4 w-4",{"animate-spin":n(e).loading}])},null,8,["class"])]),o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-green hover:bg-retro-panel transition-colors",title:"Create worktree",onClick:h},[x(n(R),{class:"h-4 w-4"})])])]),n(e).error?(i(),l("div",oe,[o("p",se,p(n(e).error),1)])):u("",!0),o("div",ne,[(i(!0),l(L,null,P(n(e).worktrees,r=>(i(),l("div",{key:r.name,class:w(["group p-3 rounded-md border transition-colors",[r.isCurrent?"bg-retro-cyan/10 border-retro-cyan":"bg-retro-panel border-retro-border hover:border-retro-muted"]])},[o("div",ae,[o("div",ie,[o("div",le,[o("span",{class:w(["font-mono text-sm truncate",r.isCurrent?"text-retro-cyan":"text-retro-text"])},p(r.name),3),x(g,{status:r.status},null,8,["status"]),r.isMain?(i(),l("span",ce," main ")):u("",!0),r.isCurrent?(i(),l("span",de," current ")):u("",!0)]),r.lastCommit?(i(),l("div",ue,[o("span",pe,p(r.lastCommit.shortHash),1),c[2]||(c[2]=o("span",{class:"mx-1"},"·",-1)),o("span",null,p(r.lastCommit.message),1)])):u("",!0),o("div",he,p(r.path),1)]),o("div",me,[!r.isCurrent&&!r.isMain?(i(),l("button",{key:0,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-dark transition-colors",title:"Switch to this worktree",onClick:v(y=>m(r.name),["stop"])},[x(n(M),{class:"h-3.5 w-3.5"})],8,fe)):u("",!0),r.isMain?u("",!0):(i(),l("button",{key:1,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-red hover:bg-retro-dark transition-colors",title:"Delete worktree",onClick:v(y=>f(r.name),["stop"])},[x(n(U),{class:"h-3.5 w-3.5"})],8,xe))])]),r.commitCount>0?(i(),l("div",be,p(r.commitCount)+" commit"+p(r.commitCount>1?"s":"")+" ahead ",1)):u("",!0)],2))),128)),!n(e).loading&&n(e).worktrees.length===0?(i(),l("div",ye,[...c[3]||(c[3]=[o("p",{class:"text-sm font-mono text-retro-muted"},"No worktrees found",-1),o("p",{class:"mt-1 text-xs font-mono text-retro-subtle"},"Create a new worktree to start working on a feature",-1)])])):u("",!0)]),x(d,{modelValue:n(s),"onUpdate:modelValue":c[0]||(c[0]=r=>C(s)?s.value=r:null)},null,8,["modelValue"])])}}}),ve=_({__name:"index",setup(t){return(e,s)=>{const a=ke;return i(),S(a)}}});export{ve as default};
|
|
1
|
+
import{d as _,y as i,z as l,H as w,G as n,B as p,k as B,I as V,J as F,K as N,L as S,T,C as x,M as z,D as j,N as v,A as o,O as u,E as W,P as $,Q as C,R as D,g as k,o as q,S as L,U as P}from"./CwGiOvuj.js";import{r as O,a as M,b as R,c as U}from"./Cy9osphj.js";const A=_({__name:"WorktreeStatusBadge",props:{status:{}},setup(t){const e=t,s=B(()=>({clean:{label:"clean",color:"text-retro-green bg-retro-green/20"},dirty:{label:"dirty",color:"text-retro-yellow bg-retro-yellow/20"},ahead:{label:"ahead",color:"text-retro-cyan bg-retro-cyan/20"},behind:{label:"behind",color:"text-retro-orange bg-retro-orange/20"},diverged:{label:"diverged",color:"text-retro-red bg-retro-red/20"}})[e.status]);return(a,h)=>(i(),l("span",{class:w(["px-1.5 py-0.5 text-[10px] font-mono uppercase rounded",n(s).color])},p(n(s).label),3))}}),E=V("worktree",{state:()=>({worktrees:[],currentBranch:"",mainWorktree:"",workingDirectory:"",loading:!1,error:null}),getters:{activeWorktree:t=>t.worktrees.find(e=>e.isCurrent),featureWorktrees:t=>t.worktrees.filter(e=>!e.isMain),mainWorktreeInfo:t=>t.worktrees.find(e=>e.isMain),hasWorktrees:t=>t.worktrees.length>1,dirtyWorktrees:t=>t.worktrees.filter(e=>e.status==="dirty")},actions:{async initialize(){if(!this.workingDirectory)try{const{cwd:t}=await $fetch("/api/cwd");this.workingDirectory=t}catch(t){console.error("Failed to get working directory:",t),this.workingDirectory=""}},async fetchWorktrees(){await this.initialize(),this.loading=!0,this.error=null;try{const t=await $fetch("/api/worktrees",{query:{workingDirectory:this.workingDirectory}});this.worktrees=t.worktrees,this.currentBranch=t.currentBranch,this.mainWorktree=t.mainWorktree}catch(t){this.error=t instanceof Error?t.message:"Failed to fetch worktrees",console.error("Failed to fetch worktrees:",t)}finally{this.loading=!1}},async createWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch("/api/worktrees",{method:"POST",query:{workingDirectory:this.workingDirectory},body:t});return e.success&&e.worktree?this.worktrees.push(e.worktree):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to create worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},async deleteWorktree(t,e=!1){await this.initialize(),this.loading=!0,this.error=null;try{const s=await $fetch(`/api/worktrees/${t}`,{method:"DELETE",query:{workingDirectory:this.workingDirectory,deleteBranch:e.toString()}});return s.success?this.worktrees=this.worktrees.filter(a=>a.name!==t):s.error&&(this.error=s.error),s}catch(s){const a=s instanceof Error?s.message:"Failed to delete worktree";return this.error=a,{success:!1,error:a}}finally{this.loading=!1}},async switchWorktree(t){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch(`/api/worktrees/${t}/switch`,{method:"POST",query:{workingDirectory:this.workingDirectory}});return e.success?(this.worktrees=this.worktrees.map(s=>({...s,isCurrent:s.name===t})),this.currentBranch=t):e.error&&(this.error=e.error),e}catch(e){const s=e instanceof Error?e.message:"Failed to switch worktree";return this.error=s,{success:!1,error:s}}finally{this.loading=!1}},clearError(){this.error=null}}}),H={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},I={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},K={key:0,class:"p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},G=["disabled"],J=["disabled"],Q={class:"flex justify-end gap-2 pt-2"},X=["disabled"],Y=["disabled"],Z=_({__name:"WorktreeCreateModal",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(t){const e=F(t,"modelValue"),s=E(),a=k(""),h=k(""),m=k(!1),f=k(""),b=async()=>{if(!a.value.trim()){f.value="Description is required";return}m.value=!0,f.value="";try{const d=await s.createWorktree({description:a.value.trim(),shortName:h.value.trim()||void 0});d.success?(a.value="",h.value="",e.value=!1):f.value=d.error||"Failed to create worktree"}catch(d){f.value=d instanceof Error?d.message:"Failed to create worktree"}finally{m.value=!1}},c=()=>{e.value=!1,a.value="",h.value="",f.value=""},g=d=>{d.key==="Escape"&&c()};return N(e,d=>{d?document.addEventListener("keydown",g):document.removeEventListener("keydown",g)}),(d,r)=>(i(),S(T,{to:"body"},[x(z,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:j(()=>[e.value?(i(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:v(c,["self"])},[o("div",H,[o("div",I,[r[2]||(r[2]=o("h3",{class:"text-sm font-mono text-retro-text"},"Create Worktree",-1)),o("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",onClick:c},[x(n(O),{class:"h-4 w-4"})])]),o("form",{class:"p-4 space-y-4",onSubmit:v(b,["prevent"])},[n(f)?(i(),l("div",K,p(n(f)),1)):u("",!0),o("div",null,[r[3]||(r[3]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Feature Description "),o("span",{class:"text-retro-red"},"*")],-1)),$(o("input",{"onUpdate:modelValue":r[0]||(r[0]=y=>C(a)?a.value=y:null),type:"text",placeholder:"e.g., Add user authentication",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,G),[[D,n(a)]]),r[4]||(r[4]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," A brief description of what this feature does ",-1))]),o("div",null,[r[5]||(r[5]=o("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[W(" Short Name "),o("span",{class:"text-retro-subtle"},"(optional)")],-1)),$(o("input",{"onUpdate:modelValue":r[1]||(r[1]=y=>C(h)?h.value=y:null),type:"text",placeholder:"e.g., auth",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:n(m)},null,8,J),[[D,n(h)]]),r[6]||(r[6]=o("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," Override the auto-generated branch name (e.g., 001-auth instead of 001-add-user-authentication) ",-1))]),o("div",Q,[o("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:n(m),onClick:c}," Cancel ",8,X),o("button",{type:"submit",class:"px-3 py-1.5 text-xs font-mono text-retro-black bg-retro-cyan hover:bg-retro-cyan/80 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:n(m)||!n(a).trim()},p(n(m)?"Creating...":"Create"),9,Y)])],32)])])):u("",!0)]),_:1})]))}}),ee={class:"h-full flex flex-col bg-retro-black"},te={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},re={class:"flex items-center gap-2"},oe={key:0,class:"px-4 py-2 bg-retro-red/20 border-b border-retro-red/50"},se={class:"text-xs font-mono text-retro-red"},ne={class:"flex-1 overflow-y-auto p-2 space-y-1"},ae={class:"flex items-start justify-between gap-2"},ie={class:"flex-1 min-w-0"},le={class:"flex items-center gap-2"},ce={key:0,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-yellow/20 text-retro-yellow rounded"},de={key:1,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-cyan/20 text-retro-cyan rounded"},ue={key:0,class:"mt-1 text-xs font-mono text-retro-muted truncate"},pe={class:"text-retro-subtle"},he={class:"mt-1 text-[10px] font-mono text-retro-subtle truncate"},me={class:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity"},fe=["onClick"],xe=["onClick"],be={key:0,class:"mt-2 text-[10px] font-mono text-retro-green"},ye={key:0,class:"flex flex-col items-center justify-center py-8 text-center"},ke=_({__name:"WorktreePanel",setup(t){const e=E(),s=k(!1);q(()=>{e.fetchWorktrees()});const a=()=>{e.fetchWorktrees()},h=()=>{s.value=!0},m=async b=>{await e.switchWorktree(b)},f=async b=>{confirm(`Delete worktree "${b}"? This will remove the worktree directory.`)&&await e.deleteWorktree(b,!1)};return(b,c)=>{const g=A,d=Z;return i(),l("div",ee,[o("div",te,[c[1]||(c[1]=o("h2",{class:"text-sm font-mono text-retro-text"},"Worktrees",-1)),o("div",re,[o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:a},[x(n(M),{class:w(["h-4 w-4",{"animate-spin":n(e).loading}])},null,8,["class"])]),o("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-green hover:bg-retro-panel transition-colors",title:"Create worktree",onClick:h},[x(n(R),{class:"h-4 w-4"})])])]),n(e).error?(i(),l("div",oe,[o("p",se,p(n(e).error),1)])):u("",!0),o("div",ne,[(i(!0),l(L,null,P(n(e).worktrees,r=>(i(),l("div",{key:r.name,class:w(["group p-3 rounded-md border transition-colors",[r.isCurrent?"bg-retro-cyan/10 border-retro-cyan":"bg-retro-panel border-retro-border hover:border-retro-muted"]])},[o("div",ae,[o("div",ie,[o("div",le,[o("span",{class:w(["font-mono text-sm truncate",r.isCurrent?"text-retro-cyan":"text-retro-text"])},p(r.name),3),x(g,{status:r.status},null,8,["status"]),r.isMain?(i(),l("span",ce," main ")):u("",!0),r.isCurrent?(i(),l("span",de," current ")):u("",!0)]),r.lastCommit?(i(),l("div",ue,[o("span",pe,p(r.lastCommit.shortHash),1),c[2]||(c[2]=o("span",{class:"mx-1"},"·",-1)),o("span",null,p(r.lastCommit.message),1)])):u("",!0),o("div",he,p(r.path),1)]),o("div",me,[!r.isCurrent&&!r.isMain?(i(),l("button",{key:0,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-dark transition-colors",title:"Switch to this worktree",onClick:v(y=>m(r.name),["stop"])},[x(n(M),{class:"h-3.5 w-3.5"})],8,fe)):u("",!0),r.isMain?u("",!0):(i(),l("button",{key:1,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-red hover:bg-retro-dark transition-colors",title:"Delete worktree",onClick:v(y=>f(r.name),["stop"])},[x(n(U),{class:"h-3.5 w-3.5"})],8,xe))])]),r.commitCount>0?(i(),l("div",be,p(r.commitCount)+" commit"+p(r.commitCount>1?"s":"")+" ahead ",1)):u("",!0)],2))),128)),!n(e).loading&&n(e).worktrees.length===0?(i(),l("div",ye,[...c[3]||(c[3]=[o("p",{class:"text-sm font-mono text-retro-muted"},"No worktrees found",-1),o("p",{class:"mt-1 text-xs font-mono text-retro-subtle"},"Create a new worktree to start working on a feature",-1)])])):u("",!0)]),x(d,{modelValue:n(s),"onUpdate:modelValue":c[0]||(c[0]=r=>C(s)?s.value=r:null)},null,8,["modelValue"])])}}}),ve=_({__name:"index",setup(t){return(e,s)=>{const a=ke;return i(),S(a)}}});export{ve as default};
|