commandmate 0.2.0 → 0.2.1

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 (62) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +9 -9
  3. package/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/config.json +3 -3
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/1.pack +0 -0
  9. package/.next/cache/webpack/client-production/2.pack +0 -0
  10. package/.next/cache/webpack/client-production/index.pack +0 -0
  11. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  12. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  13. package/.next/cache/webpack/server-production/0.pack +0 -0
  14. package/.next/cache/webpack/server-production/index.pack +0 -0
  15. package/.next/next-server.js.nft.json +1 -1
  16. package/.next/prerender-manifest.json +1 -1
  17. package/.next/required-server-files.json +1 -1
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +1 -1
  21. package/.next/server/app/api/repositories/excluded/route.js +8 -8
  22. package/.next/server/app/api/repositories/restore/route.js +7 -7
  23. package/.next/server/app/api/repositories/route.js +5 -5
  24. package/.next/server/app/api/repositories/sync/route.js +5 -5
  25. package/.next/server/app/api/slash-commands.body +1 -1
  26. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  27. package/.next/server/app/api/worktrees/[id]/capture/route.js +2 -2
  28. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  29. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  30. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  31. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  32. package/.next/server/app/api/worktrees/route.js +1 -1
  33. package/.next/server/app/index.html +1 -1
  34. package/.next/server/app/index.rsc +1 -1
  35. package/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/worktrees/[id]/page.js +1 -1
  38. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/worktrees/[id]/simple-terminal/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app-paths-manifest.json +7 -7
  42. package/.next/server/chunks/5488.js +5 -5
  43. package/.next/server/chunks/7536.js +1 -1
  44. package/.next/server/chunks/9367.js +2 -2
  45. package/.next/server/functions-config-manifest.json +1 -1
  46. package/.next/server/pages/404.html +1 -1
  47. package/.next/server/pages/500.html +1 -1
  48. package/.next/server/server-reference-manifest.json +1 -1
  49. package/.next/static/chunks/app/worktrees/[id]/{page-d64624eb67af57c0.js → page-8bd88bdc29607413.js} +1 -1
  50. package/.next/trace +5 -5
  51. package/dist/server/server.js +25 -2
  52. package/dist/server/src/lib/auto-yes-manager.js +88 -7
  53. package/dist/server/src/lib/claude-poller.js +4 -0
  54. package/dist/server/src/lib/claude-session.js +48 -19
  55. package/dist/server/src/lib/cli-patterns.js +60 -4
  56. package/dist/server/src/lib/db-repository.js +482 -0
  57. package/dist/server/src/lib/prompt-detector.js +199 -109
  58. package/dist/server/src/lib/response-poller.js +73 -27
  59. package/dist/server/src/lib/tmux.js +48 -0
  60. package/package.json +1 -1
  61. /package/.next/static/{bdUePCj-b9Gv5okYGp49O → oUD-A998xeBoez6zsrTH3}/_buildManifest.js +0 -0
  62. /package/.next/static/{bdUePCj-b9Gv5okYGp49O → oUD-A998xeBoez6zsrTH3}/_ssgManifest.js +0 -0
@@ -1,10 +1,10 @@
1
- "use strict";(()=>{var e={};e.id=3286,e.ids=[3286],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},14371:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>E,patchFetch:()=>v,requestAsyncStorage:()=>g,routeModule:()=>m,serverHooks:()=>_,staticGenerationAsyncStorage:()=>f});var o={};t.r(o),t.d(o,{PUT:()=>h});var n=t(49303),a=t(88716),s=t(60670),i=t(87070),l=t(97425),p=t(4709),u=t(67722),d=t(92048),c=t.n(d);async function h(e){try{let{repositoryPath:r}=await e.json(),t=(0,p.VZ)(r);if(!t.valid)return i.NextResponse.json({success:!1,error:t.error},{status:400});let o=t.resolvedPath,n=(0,l.n)();if(!(0,p.RT)(n,r))return i.NextResponse.json({success:!1,error:"Repository not found in exclusion list"},{status:404});if(!c().existsSync(o))return i.NextResponse.json({success:!0,worktreeCount:0,warning:"Repository path not found on disk. No worktrees were restored."});let a=await (0,u.e9)(o);return a.length>0&&(0,u.h2)(n,a),i.NextResponse.json({success:!0,worktreeCount:a.length,message:`Repository restored with ${a.length} worktree(s)`})}catch(e){return console.error("[Repository Restore] Error:",e),i.NextResponse.json({success:!1,error:"Failed to restore repository"},{status:500})}}let m=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/repositories/restore/route",pathname:"/api/repositories/restore",filename:"route",bundlePath:"app/api/repositories/restore/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/restore/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:_}=m,E="/api/repositories/restore/route";function v(){return(0,s.patchFetch)({serverHooks:_,staticGenerationAsyncStorage:f})}},4709:(e,r,t)=>{t.d(r,{Bj:()=>E,Bm:()=>R,Hf:()=>f,L_:()=>y,RT:()=>v,VZ:()=>m,Xo:()=>g,fC:()=>w,h4:()=>p,mm:()=>_,nb:()=>u,sN:()=>b});var o=t(84770),n=t(55315),a=t.n(n),s=t(43753);function i(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function l(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function p(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
1
+ "use strict";(()=>{var e={};e.id=3286,e.ids=[3286],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},14371:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>E,patchFetch:()=>v,requestAsyncStorage:()=>g,routeModule:()=>m,serverHooks:()=>_,staticGenerationAsyncStorage:()=>f});var o={};t.r(o),t.d(o,{PUT:()=>h});var n=t(49303),a=t(88716),s=t(60670),i=t(87070),l=t(97425),u=t(4709),p=t(67722),d=t(92048),c=t.n(d);async function h(e){try{let{repositoryPath:r}=await e.json(),t=(0,u.VZ)(r);if(!t.valid)return i.NextResponse.json({success:!1,error:t.error},{status:400});let o=t.resolvedPath,n=(0,l.n)();if(!(0,u.RT)(n,r))return i.NextResponse.json({success:!1,error:"Repository not found in exclusion list"},{status:404});if(!c().existsSync(o))return i.NextResponse.json({success:!0,worktreeCount:0,warning:"Repository path not found on disk. No worktrees were restored."});let a=await (0,p.e9)(o);return a.length>0&&(0,p.h2)(n,a),i.NextResponse.json({success:!0,worktreeCount:a.length,message:`Repository restored with ${a.length} worktree(s)`})}catch(e){return console.error("[Repository Restore] Error:",e),i.NextResponse.json({success:!1,error:"Failed to restore repository"},{status:500})}}let m=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/repositories/restore/route",pathname:"/api/repositories/restore",filename:"route",bundlePath:"app/api/repositories/restore/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/restore/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:_}=m,E="/api/repositories/restore/route";function v(){return(0,s.patchFetch)({serverHooks:_,staticGenerationAsyncStorage:f})}},4709:(e,r,t)=>{t.d(r,{Bj:()=>_,Bm:()=>v,L_:()=>R,RT:()=>E,VZ:()=>m,fC:()=>b,h4:()=>u,mm:()=>f,nJ:()=>g,nb:()=>p,sN:()=>y});var o=t(84770),n=t(55315),a=t.n(n),s=t(43753);function i(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function l(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function u(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
2
2
  INSERT INTO repositories (
3
3
  id, name, path, enabled, clone_url, normalized_clone_url,
4
4
  clone_source, is_env_managed, created_at, updated_at
5
5
  )
6
6
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
7
- `).run(t,r.name,r.path,!1!==r.enabled?1:0,r.cloneUrl||null,r.normalizedCloneUrl||null,r.cloneSource,r.isEnvManaged?1:0,n,n),{id:t,name:r.name,path:r.path,enabled:!1!==r.enabled,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,cloneSource:r.cloneSource,isEnvManaged:r.isEnvManaged||!1,createdAt:new Date(n),updatedAt:new Date(n)}}function u(e,r){let t=e.prepare(`
7
+ `).run(t,r.name,r.path,!1!==r.enabled?1:0,r.cloneUrl||null,r.normalizedCloneUrl||null,r.cloneSource,r.isEnvManaged?1:0,n,n),{id:t,name:r.name,path:r.path,enabled:!1!==r.enabled,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,cloneSource:r.cloneSource,isEnvManaged:r.isEnvManaged||!1,createdAt:new Date(n),updatedAt:new Date(n)}}function p(e,r){let t=e.prepare(`
8
8
  SELECT * FROM repositories
9
9
  WHERE normalized_clone_url = ?
10
10
  `).get(r);return t?i(t):null}function d(e,r){let t=e.prepare(`
@@ -14,23 +14,23 @@
14
14
  UPDATE repositories
15
15
  SET ${n.join(", ")}
16
16
  WHERE id = ?
17
- `).run(...a)}function h(e){return a().resolve(e)}function m(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=h(e);return(0,s.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function g(e,r){for(let t of r){let r=h(t);d(e,r)||p(e,{name:a().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}function f(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(h(e)))}function _(e,r){let t=h(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");p(e,{name:a().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function E(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(i)}function v(e,r){let t=d(e,h(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function R(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
17
+ `).run(...a)}function h(e){return a().resolve(e)}function m(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=h(e);return(0,s.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function g(e,r){!function(e,r){for(let t of r){let r=h(t);d(e,r)||u(e,{name:a().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}(e,r);let t=function(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(h(e)))}(e,r),o=r.filter(e=>!t.includes(e));return{filteredPaths:t,excludedPaths:o,excludedCount:o.length}}function f(e,r){let t=h(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");u(e,{name:a().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function _(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(i)}function E(e,r){let t=d(e,h(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function v(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
18
18
  INSERT INTO clone_jobs (
19
19
  id, clone_url, normalized_clone_url, target_path,
20
20
  status, progress, created_at
21
21
  )
22
22
  VALUES (?, ?, ?, ?, 'pending', 0, ?)
23
- `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function y(e,r){let t=e.prepare(`
23
+ `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function R(e,r){let t=e.prepare(`
24
24
  SELECT * FROM clone_jobs
25
25
  WHERE id = ?
26
- `).get(r);return t?l(t):null}function b(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
26
+ `).get(r);return t?l(t):null}function y(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
27
27
  UPDATE clone_jobs
28
28
  SET ${o.join(", ")}
29
29
  WHERE id = ?
30
- `).run(...n))}function w(e,r){let t=e.prepare(`
30
+ `).run(...n))}function b(e,r){let t=e.prepare(`
31
31
  SELECT * FROM clone_jobs
32
32
  WHERE normalized_clone_url = ?
33
33
  AND status IN ('pending', 'running')
34
34
  ORDER BY created_at DESC
35
35
  LIMIT 1
36
- `).get(r);return t?l(t):null}},67722:(e,r,t)=>{t.d(r,{Lj:()=>d,a$:()=>p,e9:()=>u,h2:()=>c});var o=t(61282),n=t(21764),a=t(55315),s=t.n(a),i=t(75748),l=t(57569);function p(){let e=process.env.WORKTREE_REPOS;if(e&&e.trim())return e.split(",").map(e=>e.trim()).filter(e=>e.length>0);let r=(0,l.Hb)("CM_ROOT_DIR");return r&&r.trim()?[r.trim()]:[]}async function u(e){let r=(0,n.promisify)(o.exec);try{let{stdout:t}=await r("git worktree list",{cwd:e}),o=function(e){if(!e||""===e.trim())return[];let r=e.trim().split("\n"),t=[];for(let e of r){let r=e.trim();if(!r)continue;let o=r.match(/^(.+?)\s+([a-z0-9]+)\s+(?:\[(.+?)\]|\(detached HEAD\))/);if(o){let[,e,r,n]=o;t.push({path:e.trim(),branch:n||`detached-${r}`,commit:r})}}return t}(t),n=s().resolve(e),a=s().basename(n);return o.map(e=>({id:function(e,r){if(!e)return"";let t=e=>e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),o=t(e);if(r){let e=t(r);return`${e}-${o}`}return o}(e.branch,a),name:e.branch,path:s().resolve(e.path),repositoryPath:n,repositoryName:a})).filter(e=>["/etc","/root","/sys","/proc","/dev","/boot","/bin","/sbin","/usr/bin","/usr/sbin"].some(r=>e.path.startsWith(r))?(console.warn(`Skipping potentially unsafe worktree path: ${e.path}`),!1):!(e.path.includes("\0")||e.path.includes(".."))||(console.warn(`Skipping path with potentially malicious characters: ${e.path}`),!1))}catch(t){let e=t instanceof Error?t.message:String(t),r=t.code;if(e?.includes("not a git repository")||128===r)return[];throw t}}async function d(e){let r=[];for(let t of e)try{console.log(`Scanning repository: ${t}`);let e=await u(t);r.push(...e),console.log(` Found ${e.length} worktree(s)`)}catch(e){console.error(`Error scanning repository ${t}:`,e)}return r}function c(e,r){if(0===r.length)return;let t=new Map;for(let e of r){let r=e.repositoryPath||"";t.has(r)||t.set(r,[]),t.get(r).push(e)}for(let[r,o]of t){if(!r)continue;let t=(0,i.Pv)(e,r),n=new Set(o.map(e=>e.id)),a=t.filter(e=>!n.has(e));if(a.length>0){let t=(0,i.pM)(e,a);console.log(`Removed ${t.deletedCount} deleted worktree(s) from ${r}`)}for(let r of o)(0,i.ly)(e,r)}}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(14371));module.exports=o})();
36
+ `).get(r);return t?l(t):null}},67722:(e,r,t)=>{t.d(r,{Lj:()=>d,a$:()=>u,e9:()=>p,h2:()=>c});var o=t(61282),n=t(21764),a=t(55315),s=t.n(a),i=t(75748),l=t(57569);function u(){let e=process.env.WORKTREE_REPOS;if(e&&e.trim())return e.split(",").map(e=>e.trim()).filter(e=>e.length>0);let r=(0,l.Hb)("CM_ROOT_DIR");return r&&r.trim()?[r.trim()]:[]}async function p(e){let r=(0,n.promisify)(o.exec);try{let{stdout:t}=await r("git worktree list",{cwd:e}),o=function(e){if(!e||""===e.trim())return[];let r=e.trim().split("\n"),t=[];for(let e of r){let r=e.trim();if(!r)continue;let o=r.match(/^(.+?)\s+([a-z0-9]+)\s+(?:\[(.+?)\]|\(detached HEAD\))/);if(o){let[,e,r,n]=o;t.push({path:e.trim(),branch:n||`detached-${r}`,commit:r})}}return t}(t),n=s().resolve(e),a=s().basename(n);return o.map(e=>({id:function(e,r){if(!e)return"";let t=e=>e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),o=t(e);if(r){let e=t(r);return`${e}-${o}`}return o}(e.branch,a),name:e.branch,path:s().resolve(e.path),repositoryPath:n,repositoryName:a})).filter(e=>["/etc","/root","/sys","/proc","/dev","/boot","/bin","/sbin","/usr/bin","/usr/sbin"].some(r=>e.path.startsWith(r))?(console.warn(`Skipping potentially unsafe worktree path: ${e.path}`),!1):!(e.path.includes("\0")||e.path.includes(".."))||(console.warn(`Skipping path with potentially malicious characters: ${e.path}`),!1))}catch(t){let e=t instanceof Error?t.message:String(t),r=t.code;if(e?.includes("not a git repository")||128===r)return[];throw t}}async function d(e){let r=[];for(let t of e)try{console.log(`Scanning repository: ${t}`);let e=await p(t);r.push(...e),console.log(` Found ${e.length} worktree(s)`)}catch(e){console.error(`Error scanning repository ${t}:`,e)}return r}function c(e,r){if(0===r.length)return;let t=new Map;for(let e of r){let r=e.repositoryPath||"";t.has(r)||t.set(r,[]),t.get(r).push(e)}for(let[r,o]of t){if(!r)continue;let t=(0,i.Pv)(e,r),n=new Set(o.map(e=>e.id)),a=t.filter(e=>!n.has(e));if(a.length>0){let t=(0,i.pM)(e,a);console.log(`Removed ${t.deletedCount} deleted worktree(s) from ${r}`)}for(let r of o)(0,i.ly)(e,r)}}}};var r=require("../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(14371));module.exports=o})();
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var e={};e.id=5361,e.ids=[5361],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},86393:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>A,patchFetch:()=>C,requestAsyncStorage:()=>x,routeModule:()=>y,serverHooks:()=>T,staticGenerationAsyncStorage:()=>R});var o={};t.r(o),t.d(o,{DELETE:()=>b});var n=t(49303),s=t(88716),l=t(60670),a=t(87070),i=t(97425),u=t(75748),p=t(4709),d=t(59991),c=t(43632),f=t(60667),m=t(83513);let g="[Session Cleanup]";async function h(e,r){let t={worktreeId:e,sessionsKilled:[],sessionErrors:[],pollersStopped:[],pollerErrors:[]};for(let o of m.t){try{await r(e,o)&&(t.sessionsKilled.push(o),console.info(`${g} Killed session: ${e}/${o}`))}catch(n){let r=`${o}: ${n instanceof Error?n.message:String(n)}`;t.sessionErrors.push(r),console.warn(`${g} Failed to kill session ${e}/${o}:`,n)}try{(0,d.FN)(e,o),t.pollersStopped.push(`response-poller:${o}`)}catch(n){let r=`response-poller:${o}: ${n instanceof Error?n.message:String(n)}`;t.pollerErrors.push(r),console.warn(`${g} Failed to stop response-poller ${e}/${o}:`,n)}}try{(0,c.FN)(e),t.pollersStopped.push("claude-poller")}catch(o){let r=`claude-poller: ${o instanceof Error?o.message:String(o)}`;t.pollerErrors.push(r),console.warn(`${g} Failed to stop claude-poller ${e}:`,o)}try{(0,f.Qz)(e),t.pollersStopped.push("auto-yes-poller")}catch(o){let r=`auto-yes-poller: ${o instanceof Error?o.message:String(o)}`;t.pollerErrors.push(r),console.warn(`${g} Failed to stop auto-yes-poller ${e}:`,o)}return t}async function E(e,r){let t=[],o=[];for(let n of e){let e=await h(n,r);for(let r of(t.push(e),e.sessionErrors))o.push(`Session kill error (${n}): ${r}`);for(let r of e.pollerErrors)o.push(`Poller stop error (${n}): ${r}`)}return{results:t,warnings:o}}var _=t(25079),v=t(43839),w=t(10927);let $="[Repository Delete]";async function S(e,r){let t=v.g.getInstance().getTool(r);if(!await t.isRunning(e))return!1;let o=t.getSessionName(e);return(0,w.AJ)(o)}async function b(e){try{let r;let{repositoryPath:t}=await e.json(),o=(0,p.VZ)(t);if(!o.valid)return a.NextResponse.json({success:!1,error:o.error},{status:400});let n=(0,i.n)();(0,p.mm)(n,t);let s=(0,u.Pv)(n,t);if(0===s.length)return a.NextResponse.json({success:!1,error:"Repository not found"},{status:404});console.info(`${$} Starting deletion: ${t}, worktrees: ${s.length}`);let l=await E(s,S);for(let e of l.results)e.sessionsKilled.length>0&&console.info(`${$} Sessions killed for ${e.worktreeId}: ${e.sessionsKilled.join(", ")}`),e.sessionErrors.length>0&&console.warn(`${$} Session kill errors for ${e.worktreeId}: ${e.sessionErrors.join(", ")}`);(0,_.ZV)(s);try{r=(0,u.DF)(n,t).deletedCount,console.info(`${$} Successfully deleted ${r} worktrees from: ${t}`)}catch(e){return console.error(`${$} Database deletion failed for ${t}:`,e),a.NextResponse.json({success:!1,error:"Database deletion failed"},{status:500})}(0,_.ps)("repository_deleted",{worktreeId:"global",repositoryPath:t,deletedWorktreeIds:s});let d={success:!0,deletedWorktreeCount:r,deletedWorktreeIds:s};return l.warnings.length>0?(d.warnings=l.warnings,console.info(`${$} Completed with ${l.warnings.length} warnings: ${t}`)):console.info(`${$} Completed successfully: ${t}`),a.NextResponse.json(d,{status:200})}catch(e){return console.error(`${$} Unexpected error:`,e),a.NextResponse.json({success:!1,error:"Failed to delete repository"},{status:500})}}let y=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/repositories/route",pathname:"/api/repositories",filename:"route",bundlePath:"app/api/repositories/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:R,serverHooks:T}=y,A="/api/repositories/route";function C(){return(0,l.patchFetch)({serverHooks:T,staticGenerationAsyncStorage:R})}},60667:(e,r,t)=>{t.d(r,{bq:()=>c,gf:()=>m,bY:()=>f,w:()=>E,Qz:()=>_});var o=t(89194),n=t(63661),s=t(10927),l=t(43839),a=t(19377);let i=/^[a-zA-Z0-9_-]+$/,u=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function d(e){return Date.now()>e.expiresAt}function c(e){let r=u.get(e);if(!r)return null;if(d(r)){let t={...r,enabled:!1};return u.set(e,t),t}return r}function f(e,r){if(r){let r=Date.now(),t={enabled:!0,enabledAt:r,expiresAt:r+36e5};return u.set(e,t),t}{let r=u.get(e),t={enabled:!1,enabledAt:r?.enabledAt??0,expiresAt:r?.expiresAt??0};return u.set(e,t),t}}function m(e){let r=p.get(e);return r?.lastServerResponseTimestamp??null}async function g(e,r){if(!p.get(e))return;let t=c(e);if(!t?.enabled||d(t)){_(e);return}try{let t=await (0,o.NA)(e,r,5e3),i=(0,a.vp)(t);if((0,a.Wg)(r,i)){h(e,r);return}let u=(0,n.F)(i);if(!u.isPrompt||!u.promptData){h(e,r);return}let d=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let r=e.options.find(e=>e.isDefault)??e.options[0];return!r||r.requiresTextInput?null:r.number.toString()}return null}(u.promptData);if(null===d){h(e,r);return}let c=l.g.getInstance().getTool(r).getSessionName(e);await (0,s.Is)(c,d,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(c,"",!0),function(e,r){let t=p.get(e);t&&(t.lastServerResponseTimestamp=r)}(e,Date.now()),function(e){let r=p.get(e);r&&(r.consecutiveErrors=0,r.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(t){!function(e){let r=p.get(e);if(r){var t;r.consecutiveErrors++,r.currentInterval=(t=r.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,t-5+1),6e4)}}(e);let r=t instanceof Error?t.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${r}`)}h(e,r)}function h(e,r){let t=p.get(e);t&&(t.timerId=setTimeout(()=>{g(e,r)},t.currentInterval))}function E(e,r){if(!(e&&0!==e.length&&i.test(e)))return{started:!1,reason:"invalid worktree ID"};let t=c(e);if(!t?.enabled)return{started:!1,reason:"auto-yes not enabled"};let o=p.has(e);if(!o&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};o&&_(e);let n={timerId:null,cliToolId:r,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,n),n.timerId=setTimeout(()=>{g(e,r)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${r}`),{started:!0}}function _(e){let r=p.get(e);r&&(r.timerId&&clearTimeout(r.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}},83513:(e,r,t)=>{t.d(r,{t:()=>o});let o=["claude","codex","gemini"]},4709:(e,r,t)=>{t.d(r,{Bj:()=>_,Bm:()=>w,Hf:()=>h,L_:()=>$,RT:()=>v,VZ:()=>m,Xo:()=>g,fC:()=>b,h4:()=>u,mm:()=>E,nb:()=>p,sN:()=>S});var o=t(84770),n=t(55315),s=t.n(n),l=t(43753);function a(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function i(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function u(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
1
+ "use strict";(()=>{var e={};e.id=5361,e.ids=[5361],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},86393:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>R,patchFetch:()=>T,requestAsyncStorage:()=>x,routeModule:()=>y,serverHooks:()=>C,staticGenerationAsyncStorage:()=>D});var o={};t.r(o),t.d(o,{DELETE:()=>S});var n=t(49303),s=t(88716),l=t(60670),a=t(87070),i=t(97425),u=t(75748),p=t(4709),d=t(59991),c=t(43632),f=t(60667),h=t(83513);let m="[Session Cleanup]";async function g(e,r){let t={worktreeId:e,sessionsKilled:[],sessionErrors:[],pollersStopped:[],pollerErrors:[]};for(let o of h.t){try{await r(e,o)&&(t.sessionsKilled.push(o),console.info(`${m} Killed session: ${e}/${o}`))}catch(n){let r=`${o}: ${n instanceof Error?n.message:String(n)}`;t.sessionErrors.push(r),console.warn(`${m} Failed to kill session ${e}/${o}:`,n)}try{(0,d.FN)(e,o),t.pollersStopped.push(`response-poller:${o}`)}catch(n){let r=`response-poller:${o}: ${n instanceof Error?n.message:String(n)}`;t.pollerErrors.push(r),console.warn(`${m} Failed to stop response-poller ${e}/${o}:`,n)}}try{(0,c.FN)(e),t.pollersStopped.push("claude-poller")}catch(o){let r=`claude-poller: ${o instanceof Error?o.message:String(o)}`;t.pollerErrors.push(r),console.warn(`${m} Failed to stop claude-poller ${e}:`,o)}try{(0,f.Qz)(e),t.pollersStopped.push("auto-yes-poller")}catch(o){let r=`auto-yes-poller: ${o instanceof Error?o.message:String(o)}`;t.pollerErrors.push(r),console.warn(`${m} Failed to stop auto-yes-poller ${e}:`,o)}return t}async function E(e,r){let t=[],o=[];for(let n of e){let e=await g(n,r);for(let r of(t.push(e),e.sessionErrors))o.push(`Session kill error (${n}): ${r}`);for(let r of e.pollerErrors)o.push(`Poller stop error (${n}): ${r}`)}return{results:t,warnings:o}}var _=t(25079),v=t(43839),w=t(10927);let b="[Repository Delete]";async function $(e,r){let t=v.g.getInstance().getTool(r);if(!await t.isRunning(e))return!1;let o=t.getSessionName(e);return(0,w.AJ)(o)}async function S(e){try{let r;let{repositoryPath:t}=await e.json(),o=(0,p.VZ)(t);if(!o.valid)return a.NextResponse.json({success:!1,error:o.error},{status:400});let n=(0,i.n)();(0,p.mm)(n,t);let s=(0,u.Pv)(n,t);if(0===s.length)return a.NextResponse.json({success:!1,error:"Repository not found"},{status:404});console.info(`${b} Starting deletion: ${t}, worktrees: ${s.length}`);let l=await E(s,$);for(let e of l.results)e.sessionsKilled.length>0&&console.info(`${b} Sessions killed for ${e.worktreeId}: ${e.sessionsKilled.join(", ")}`),e.sessionErrors.length>0&&console.warn(`${b} Session kill errors for ${e.worktreeId}: ${e.sessionErrors.join(", ")}`);(0,_.ZV)(s);try{r=(0,u.DF)(n,t).deletedCount,console.info(`${b} Successfully deleted ${r} worktrees from: ${t}`)}catch(e){return console.error(`${b} Database deletion failed for ${t}:`,e),a.NextResponse.json({success:!1,error:"Database deletion failed"},{status:500})}(0,_.ps)("repository_deleted",{worktreeId:"global",repositoryPath:t,deletedWorktreeIds:s});let d={success:!0,deletedWorktreeCount:r,deletedWorktreeIds:s};return l.warnings.length>0?(d.warnings=l.warnings,console.info(`${b} Completed with ${l.warnings.length} warnings: ${t}`)):console.info(`${b} Completed successfully: ${t}`),a.NextResponse.json(d,{status:200})}catch(e){return console.error(`${b} Unexpected error:`,e),a.NextResponse.json({success:!1,error:"Failed to delete repository"},{status:500})}}let y=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/repositories/route",pathname:"/api/repositories",filename:"route",bundlePath:"app/api/repositories/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:D,serverHooks:C}=y,R="/api/repositories/route";function T(){return(0,l.patchFetch)({serverHooks:C,staticGenerationAsyncStorage:D})}},60667:(e,r,t)=>{t.d(r,{bq:()=>c,gf:()=>h,bY:()=>f,w:()=>E,Qz:()=>_});var o=t(89194),n=t(63661),s=t(10927),l=t(43839),a=t(19377);let i=/^[a-zA-Z0-9_-]+$/,u=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function d(e){return Date.now()>e.expiresAt}function c(e){let r=u.get(e);if(!r)return null;if(d(r)){let t={...r,enabled:!1};return u.set(e,t),t}return r}function f(e,r){if(r){let r=Date.now(),t={enabled:!0,enabledAt:r,expiresAt:r+36e5};return u.set(e,t),t}{let r=u.get(e),t={enabled:!1,enabledAt:r?.enabledAt??0,expiresAt:r?.expiresAt??0};return u.set(e,t),t}}function h(e){let r=p.get(e);return r?.lastServerResponseTimestamp??null}async function m(e,r){if(!p.get(e))return;let t=c(e);if(!t?.enabled||d(t)){_(e);return}try{let t=await (0,o.NA)(e,r,5e3),i=(0,a.vp)(t),u=i.split("\n").slice(-50).join("\n");if((0,a.Wg)(r,u)){g(e,r);return}let d=(0,a.Sg)(r),c=(0,n.F)(i,d);if(!c.isPrompt||!c.promptData){g(e,r);return}let f=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let r=e.options.find(e=>e.isDefault)??e.options[0];return!r||r.requiresTextInput?null:r.number.toString()}return null}(c.promptData);if(null===f){g(e,r);return}let h=l.g.getInstance().getTool(r).getSessionName(e);if("claude"===r&&c.promptData?.type==="multiple_choice"&&/^\d+$/.test(f)&&c.promptData?.type==="multiple_choice"){let e=parseInt(f,10),r=c.promptData.options,t=r.find(e=>e.isDefault),o=t?.number??1,n=e-o;if(r.some(e=>/^\[[ x]\] /.test(e.label))){let t=r.filter(e=>/^\[[ x]\] /.test(e.label)).length,o=[];if(n>0)for(let e=0;e<n;e++)o.push("Down");else if(n<0)for(let e=0;e<Math.abs(n);e++)o.push("Up");o.push("Space");let l=t-e+1;for(let e=0;e<l;e++)o.push("Down");o.push("Enter"),await (0,s.hL)(h,o)}else{let e=[];if(n>0)for(let r=0;r<n;r++)e.push("Down");else if(n<0)for(let r=0;r<Math.abs(n);r++)e.push("Up");e.push("Enter"),await (0,s.hL)(h,e)}}else await (0,s.Is)(h,f,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(h,"",!0);(function(e,r){let t=p.get(e);t&&(t.lastServerResponseTimestamp=r)})(e,Date.now()),function(e){let r=p.get(e);r&&(r.consecutiveErrors=0,r.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(t){!function(e){let r=p.get(e);if(r){var t;r.consecutiveErrors++,r.currentInterval=(t=r.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,t-5+1),6e4)}}(e);let r=t instanceof Error?t.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${r}`)}g(e,r)}function g(e,r){let t=p.get(e);t&&(t.timerId=setTimeout(()=>{m(e,r)},t.currentInterval))}function E(e,r){if(!(e&&0!==e.length&&i.test(e)))return{started:!1,reason:"invalid worktree ID"};let t=c(e);if(!t?.enabled)return{started:!1,reason:"auto-yes not enabled"};let o=p.has(e);if(!o&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};o&&_(e);let n={timerId:null,cliToolId:r,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,n),n.timerId=setTimeout(()=>{m(e,r)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${r}`),{started:!0}}function _(e){let r=p.get(e);r&&(r.timerId&&clearTimeout(r.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}},83513:(e,r,t)=>{t.d(r,{t:()=>o});let o=["claude","codex","gemini"]},4709:(e,r,t)=>{t.d(r,{Bj:()=>E,Bm:()=>v,L_:()=>w,RT:()=>_,VZ:()=>h,fC:()=>$,h4:()=>u,mm:()=>g,nJ:()=>m,nb:()=>p,sN:()=>b});var o=t(84770),n=t(55315),s=t.n(n),l=t(43753);function a(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function i(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function u(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
2
2
  INSERT INTO repositories (
3
3
  id, name, path, enabled, clone_url, normalized_clone_url,
4
4
  clone_source, is_env_managed, created_at, updated_at
@@ -14,20 +14,20 @@
14
14
  UPDATE repositories
15
15
  SET ${n.join(", ")}
16
16
  WHERE id = ?
17
- `).run(...s)}function f(e){return s().resolve(e)}function m(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=f(e);return(0,l.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function g(e,r){for(let t of r){let r=f(t);d(e,r)||u(e,{name:s().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}function h(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(f(e)))}function E(e,r){let t=f(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");u(e,{name:s().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function _(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(a)}function v(e,r){let t=d(e,f(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function w(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
17
+ `).run(...s)}function f(e){return s().resolve(e)}function h(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=f(e);return(0,l.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function m(e,r){!function(e,r){for(let t of r){let r=f(t);d(e,r)||u(e,{name:s().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}(e,r);let t=function(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(f(e)))}(e,r),o=r.filter(e=>!t.includes(e));return{filteredPaths:t,excludedPaths:o,excludedCount:o.length}}function g(e,r){let t=f(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");u(e,{name:s().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function E(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(a)}function _(e,r){let t=d(e,f(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function v(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
18
18
  INSERT INTO clone_jobs (
19
19
  id, clone_url, normalized_clone_url, target_path,
20
20
  status, progress, created_at
21
21
  )
22
22
  VALUES (?, ?, ?, ?, 'pending', 0, ?)
23
- `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function $(e,r){let t=e.prepare(`
23
+ `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function w(e,r){let t=e.prepare(`
24
24
  SELECT * FROM clone_jobs
25
25
  WHERE id = ?
26
- `).get(r);return t?i(t):null}function S(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
26
+ `).get(r);return t?i(t):null}function b(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
27
27
  UPDATE clone_jobs
28
28
  SET ${o.join(", ")}
29
29
  WHERE id = ?
30
- `).run(...n))}function b(e,r){let t=e.prepare(`
30
+ `).run(...n))}function $(e,r){let t=e.prepare(`
31
31
  SELECT * FROM clone_jobs
32
32
  WHERE normalized_clone_url = ?
33
33
  AND status IN ('pending', 'running')
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var e={};e.id=3546,e.ids=[3546],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},98165:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>E,requestAsyncStorage:()=>h,routeModule:()=>c,serverHooks:()=>g,staticGenerationAsyncStorage:()=>m});var o={};t.r(o),t.d(o,{POST:()=>d});var n=t(49303),a=t(88716),s=t(60670),i=t(87070),l=t(97425),p=t(67722),u=t(4709);async function d(){try{let e=(0,p.a$)();if(0===e.length)return i.NextResponse.json({error:"No repositories configured. Please set WORKTREE_REPOS or CM_ROOT_DIR environment variable."},{status:400});let r=(0,l.n)();(0,u.Xo)(r,e);let t=(0,u.Hf)(r,e),o=await (0,p.Lj)(t);(0,p.h2)(r,o);let n=new Set(o.map(e=>e.repositoryPath));return i.NextResponse.json({success:!0,message:`Successfully synced ${o.length} worktree(s) from ${n.size} repository/repositories`,worktreeCount:o.length,repositoryCount:n.size,repositories:Array.from(n)},{status:200})}catch(r){console.error("Error syncing repositories:",r);let e=r instanceof Error?r.message:"Failed to sync repositories";return i.NextResponse.json({error:e},{status:500})}}let c=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/repositories/sync/route",pathname:"/api/repositories/sync",filename:"route",bundlePath:"app/api/repositories/sync/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/sync/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:h,staticGenerationAsyncStorage:m,serverHooks:g}=c,f="/api/repositories/sync/route";function E(){return(0,s.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:m})}},4709:(e,r,t)=>{t.d(r,{Bj:()=>_,Bm:()=>y,Hf:()=>f,L_:()=>R,RT:()=>v,VZ:()=>m,Xo:()=>g,fC:()=>C,h4:()=>p,mm:()=>E,nb:()=>u,sN:()=>b});var o=t(84770),n=t(55315),a=t.n(n),s=t(43753);function i(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function l(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function p(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
1
+ "use strict";(()=>{var e={};e.id=3546,e.ids=[3546],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},98165:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>E,requestAsyncStorage:()=>h,routeModule:()=>c,serverHooks:()=>g,staticGenerationAsyncStorage:()=>m});var o={};t.r(o),t.d(o,{POST:()=>d});var n=t(49303),a=t(88716),s=t(60670),i=t(87070),l=t(97425),p=t(67722),u=t(4709);async function d(){try{let e=(0,p.a$)();if(0===e.length)return i.NextResponse.json({error:"No repositories configured. Please set WORKTREE_REPOS or CM_ROOT_DIR environment variable."},{status:400});let r=(0,l.n)(),{filteredPaths:t}=(0,u.nJ)(r,e),o=await (0,p.Lj)(t);(0,p.h2)(r,o);let n=new Set(o.map(e=>e.repositoryPath));return i.NextResponse.json({success:!0,message:`Successfully synced ${o.length} worktree(s) from ${n.size} repository/repositories`,worktreeCount:o.length,repositoryCount:n.size,repositories:Array.from(n)},{status:200})}catch(r){console.error("Error syncing repositories:",r);let e=r instanceof Error?r.message:"Failed to sync repositories";return i.NextResponse.json({error:e},{status:500})}}let c=new n.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/repositories/sync/route",pathname:"/api/repositories/sync",filename:"route",bundlePath:"app/api/repositories/sync/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/repositories/sync/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:h,staticGenerationAsyncStorage:m,serverHooks:g}=c,f="/api/repositories/sync/route";function E(){return(0,s.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:m})}},4709:(e,r,t)=>{t.d(r,{Bj:()=>E,Bm:()=>v,L_:()=>y,RT:()=>_,VZ:()=>m,fC:()=>b,h4:()=>p,mm:()=>f,nJ:()=>g,nb:()=>u,sN:()=>R});var o=t(84770),n=t(55315),a=t.n(n),s=t(43753);function i(e){return{id:e.id,name:e.name,path:e.path,enabled:1===e.enabled,cloneUrl:e.clone_url||void 0,normalizedCloneUrl:e.normalized_clone_url||void 0,cloneSource:e.clone_source,isEnvManaged:1===e.is_env_managed,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function l(e){return{id:e.id,cloneUrl:e.clone_url,normalizedCloneUrl:e.normalized_clone_url,targetPath:e.target_path,repositoryId:e.repository_id||void 0,status:e.status,pid:e.pid||void 0,progress:e.progress,errorCategory:e.error_category||void 0,errorCode:e.error_code||void 0,errorMessage:e.error_message||void 0,startedAt:e.started_at?new Date(e.started_at):void 0,completedAt:e.completed_at?new Date(e.completed_at):void 0,createdAt:new Date(e.created_at)}}function p(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
2
2
  INSERT INTO repositories (
3
3
  id, name, path, enabled, clone_url, normalized_clone_url,
4
4
  clone_source, is_env_managed, created_at, updated_at
@@ -14,20 +14,20 @@
14
14
  UPDATE repositories
15
15
  SET ${n.join(", ")}
16
16
  WHERE id = ?
17
- `).run(...a)}function h(e){return a().resolve(e)}function m(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=h(e);return(0,s.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function g(e,r){for(let t of r){let r=h(t);d(e,r)||p(e,{name:a().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}function f(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(h(e)))}function E(e,r){let t=h(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");p(e,{name:a().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function _(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(i)}function v(e,r){let t=d(e,h(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function y(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
17
+ `).run(...a)}function h(e){return a().resolve(e)}function m(e){if(!e||"string"!=typeof e)return{valid:!1,error:"repositoryPath is required"};if(e.includes("\0"))return{valid:!1,error:"Invalid repository path"};let r=h(e);return(0,s.F)(r)?{valid:!1,error:"Invalid repository path"}:{valid:!0,resolvedPath:r}}function g(e,r){!function(e,r){for(let t of r){let r=h(t);d(e,r)||p(e,{name:a().basename(r),path:r,cloneSource:"local",isEnvManaged:!0,enabled:!0})}}(e,r);let t=function(e,r){let t=e.prepare("SELECT path FROM repositories WHERE enabled = 0").all().map(e=>e.path);return r.filter(e=>!t.includes(h(e)))}(e,r),o=r.filter(e=>!t.includes(e));return{filteredPaths:t,excludedPaths:o,excludedCount:o.length}}function f(e,r){let t=h(r),o=d(e,t);if(o)c(e,o.id,{enabled:!1});else{if(e.prepare("SELECT COUNT(*) as count FROM repositories WHERE enabled = 0").get().count>=1e3)throw Error("Disabled repository limit exceeded");p(e,{name:a().basename(t),path:t,cloneSource:"local",isEnvManaged:!1,enabled:!1})}}function E(e){return e.prepare("SELECT * FROM repositories WHERE enabled = 0 ORDER BY name ASC").all().map(i)}function _(e,r){let t=d(e,h(r));return t?(c(e,t.id,{enabled:!0}),{...t,enabled:!0}):null}function v(e,r){let t=(0,o.randomUUID)(),n=Date.now();return e.prepare(`
18
18
  INSERT INTO clone_jobs (
19
19
  id, clone_url, normalized_clone_url, target_path,
20
20
  status, progress, created_at
21
21
  )
22
22
  VALUES (?, ?, ?, ?, 'pending', 0, ?)
23
- `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function R(e,r){let t=e.prepare(`
23
+ `).run(t,r.cloneUrl,r.normalizedCloneUrl,r.targetPath,n),{id:t,cloneUrl:r.cloneUrl,normalizedCloneUrl:r.normalizedCloneUrl,targetPath:r.targetPath,status:"pending",progress:0,createdAt:new Date(n)}}function y(e,r){let t=e.prepare(`
24
24
  SELECT * FROM clone_jobs
25
25
  WHERE id = ?
26
- `).get(r);return t?l(t):null}function b(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
26
+ `).get(r);return t?l(t):null}function R(e,r,t){let o=[],n=[];void 0!==t.status&&(o.push("status = ?"),n.push(t.status)),void 0!==t.pid&&(o.push("pid = ?"),n.push(t.pid)),void 0!==t.progress&&(o.push("progress = ?"),n.push(t.progress)),void 0!==t.repositoryId&&(o.push("repository_id = ?"),n.push(t.repositoryId)),void 0!==t.errorCategory&&(o.push("error_category = ?"),n.push(t.errorCategory)),void 0!==t.errorCode&&(o.push("error_code = ?"),n.push(t.errorCode)),void 0!==t.errorMessage&&(o.push("error_message = ?"),n.push(t.errorMessage)),void 0!==t.startedAt&&(o.push("started_at = ?"),n.push(t.startedAt.getTime())),void 0!==t.completedAt&&(o.push("completed_at = ?"),n.push(t.completedAt.getTime())),0!==o.length&&(n.push(r),e.prepare(`
27
27
  UPDATE clone_jobs
28
28
  SET ${o.join(", ")}
29
29
  WHERE id = ?
30
- `).run(...n))}function C(e,r){let t=e.prepare(`
30
+ `).run(...n))}function b(e,r){let t=e.prepare(`
31
31
  SELECT * FROM clone_jobs
32
32
  WHERE normalized_clone_url = ?
33
33
  AND status IN ('pending', 'running')
@@ -1 +1 @@
1
- {"groups":[{"category":"planning","label":"Planning","commands":[{"name":"design-policy","description":"アーキテクチャ設計、技術選定、設計判断を支援","category":"planning","model":"opus","filePath":".claude/commands/design-policy.md"},{"name":"issue-create","description":"Issue分割計画書からGitHub Issueを一括作成","category":"planning","model":"opus","filePath":".claude/commands/issue-create.md"},{"name":"issue-split","description":"FeatureをIssueに分割、依存関係整理","category":"planning","model":"opus","filePath":".claude/commands/issue-split.md"},{"name":"work-plan","description":"Issue単位の具体的な作業計画立案","category":"planning","model":"opus","filePath":".claude/commands/work-plan.md"}]},{"category":"development","label":"Development","commands":[{"name":"bug-fix","description":"不具合の調査・対策案提示・修正実施を完全自動化","category":"development","model":"opus","filePath":".claude/commands/bug-fix.md"},{"name":"refactoring","description":"コード品質改善、設計パターン適用、技術的負債解消","category":"development","model":"opus","filePath":".claude/commands/refactoring.md"},{"name":"tdd-impl","description":"テスト駆動開発で高品質コードを実装","category":"development","model":"opus","filePath":".claude/commands/tdd-impl.md"}]},{"category":"review","label":"Review","commands":[{"name":"acceptance-test","description":"Issue要件に基づく自動受入テスト実行","category":"review","model":"opus","filePath":".claude/commands/acceptance-test.md"},{"name":"architecture-review","description":"設計レビュー、リスク評価、改善提案","category":"review","model":"opus","filePath":".claude/commands/architecture-review.md"}]},{"category":"documentation","label":"Documentation","commands":[{"name":"progress-report","description":"開発進捗サマリ作成、ブロッカー報告","category":"documentation","model":"opus","filePath":".claude/commands/progress-report.md"}]},{"category":"workflow","label":"Workflow","commands":[{"name":"apply-review","description":"レビュー指摘事項を実装に反映","category":"workflow","model":"opus","filePath":".claude/commands/apply-review.md"},{"name":"create-pr","description":"Pull Request自動作成、タイトル・説明自動生成","category":"workflow","model":"opus","filePath":".claude/commands/create-pr.md"},{"name":"issue-enhance","description":"Issue内容を分析し、ユーザーに質問しながら不足情報を補完・更新","category":"workflow","model":"opus","filePath":".claude/commands/issue-enhance.md"},{"name":"multi-stage-design-review","description":"設計書の4段階レビュー(通常→整合性→影響分析→セキュリティ)と指摘対応を自動実行","category":"workflow","model":"opus","filePath":".claude/commands/multi-stage-design-review.md"},{"name":"multi-stage-issue-review","description":"Issue記載内容の多段階レビュー(通常→影響範囲)×2回と指摘対応を自動実行","category":"workflow","model":"opus","filePath":".claude/commands/multi-stage-issue-review.md"},{"name":"pm-auto-design2dev","description":"設計レビューから実装完了まで完全自動化(設計レビュー→作業計画→TDD実装)","category":"workflow","model":"opus","filePath":".claude/commands/pm-auto-design2dev.md"},{"name":"pm-auto-dev","description":"Issue開発を完全自動化(TDD→テスト→報告)","category":"workflow","model":"opus","filePath":".claude/commands/pm-auto-dev.md"},{"name":"worktree-cleanup","description":"","category":"workflow","filePath":".claude/commands/worktree-cleanup.md"},{"name":"worktree-setup","description":"","category":"workflow","filePath":".claude/commands/worktree-setup.md"}]}]}
1
+ {"groups":[{"category":"planning","label":"Planning","commands":[{"name":"design-policy","description":"アーキテクチャ設計、技術選定、設計判断を支援","category":"planning","model":"opus","filePath":".claude/commands/design-policy.md"},{"name":"issue-create","description":"Issue分割計画書からGitHub Issueを一括作成","category":"planning","model":"opus","filePath":".claude/commands/issue-create.md"},{"name":"issue-split","description":"FeatureをIssueに分割、依存関係整理","category":"planning","model":"opus","filePath":".claude/commands/issue-split.md"},{"name":"work-plan","description":"Issue単位の具体的な作業計画立案","category":"planning","model":"sonnet","filePath":".claude/commands/work-plan.md"}]},{"category":"development","label":"Development","commands":[{"name":"bug-fix","description":"不具合の調査・対策案提示・修正実施を完全自動化","category":"development","model":"opus","filePath":".claude/commands/bug-fix.md"},{"name":"refactoring","description":"コード品質改善、設計パターン適用、技術的負債解消","category":"development","model":"opus","filePath":".claude/commands/refactoring.md"},{"name":"tdd-impl","description":"テスト駆動開発で高品質コードを実装","category":"development","model":"opus","filePath":".claude/commands/tdd-impl.md"}]},{"category":"review","label":"Review","commands":[{"name":"acceptance-test","description":"Issue要件に基づく自動受入テスト実行","category":"review","model":"opus","filePath":".claude/commands/acceptance-test.md"},{"name":"architecture-review","description":"設計レビュー、リスク評価、改善提案","category":"review","model":"opus","filePath":".claude/commands/architecture-review.md"}]},{"category":"documentation","label":"Documentation","commands":[{"name":"progress-report","description":"開発進捗サマリ作成、ブロッカー報告","category":"documentation","model":"sonnet","filePath":".claude/commands/progress-report.md"}]},{"category":"workflow","label":"Workflow","commands":[{"name":"apply-review","description":"レビュー指摘事項を実装に反映","category":"workflow","model":"sonnet","filePath":".claude/commands/apply-review.md"},{"name":"create-pr","description":"Pull Request自動作成、タイトル・説明自動生成","category":"workflow","model":"opus","filePath":".claude/commands/create-pr.md"},{"name":"issue-enhance","description":"Issue内容を分析し、ユーザーに質問しながら不足情報を補完・更新","category":"workflow","model":"opus","filePath":".claude/commands/issue-enhance.md"},{"name":"issues-exec-plan","description":"複数Issueの並列作業可否を分析し、実行計画をまとめるエピックIssueを作成","category":"workflow","model":"opus","filePath":".claude/commands/issues-exec-plan.md"},{"name":"multi-stage-design-review","description":"設計書の4段階レビュー(通常→整合性→影響分析→セキュリティ)と指摘対応を自動実行","category":"workflow","model":"sonnet","filePath":".claude/commands/multi-stage-design-review.md"},{"name":"multi-stage-issue-review","description":"Issue記載内容の多段階レビュー(通常→影響範囲)×2回と指摘対応を自動実行","category":"workflow","model":"sonnet","filePath":".claude/commands/multi-stage-issue-review.md"},{"name":"pm-auto-design2dev","description":"設計レビューから実装完了まで完全自動化(設計レビュー→作業計画→TDD実装)","category":"workflow","model":"sonnet","filePath":".claude/commands/pm-auto-design2dev.md"},{"name":"pm-auto-dev","description":"Issue開発を完全自動化(TDD→テスト→報告)","category":"workflow","model":"sonnet","filePath":".claude/commands/pm-auto-dev.md"},{"name":"pm-auto-issue2dev","description":"Issueレビューから実装完了まで完全自動化(Issueレビュー→設計レビュー→作業計画→TDD実装)","category":"workflow","model":"sonnet","filePath":".claude/commands/pm-auto-issue2dev.md"},{"name":"worktree-cleanup","description":"","category":"workflow","filePath":".claude/commands/worktree-cleanup.md"},{"name":"worktree-setup","description":"","category":"workflow","filePath":".claude/commands/worktree-setup.md"}]}]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=5695,e.ids=[5695],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},80134:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>h,patchFetch:()=>q,requestAsyncStorage:()=>b,routeModule:()=>g,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var o={};r.r(o),r.d(o,{GET:()=>m,POST:()=>x});var n=r(49303),s=r(88716),i=r(60670),a=r(87070),u=r(97425),l=r(75748),p=r(60667);let d=["claude","codex","gemini"];function c(e,t){let r={enabled:e?.enabled??!1,expiresAt:e?.enabled?e.expiresAt:null};return void 0!==t&&(r.pollingStarted=t),r}function f(e){let t=(0,u.n)();return(0,l.gU)(t,e)?null:a.NextResponse.json({error:`Worktree '${e}' not found`},{status:404})}async function m(e,{params:t}){try{let e=f(t.id);if(e)return e;let r=(0,p.bq)(t.id);return a.NextResponse.json(c(r))}catch(e){return console.error("Error getting auto-yes state:",e),a.NextResponse.json({error:"Failed to get auto-yes state"},{status:500})}}async function x(e,{params:t}){try{var r;let o=f(t.id);if(o)return o;let n=await e.json();if("boolean"!=typeof n.enabled)return a.NextResponse.json({error:"enabled must be a boolean"},{status:400});let s=(r=n.cliToolId)&&d.includes(r)?n.cliToolId:"claude",i=(0,p.bY)(t.id,n.enabled),u=!1;if(n.enabled){let e=(0,p.w)(t.id,s);u=e.started,e.started||console.warn(`[Auto-Yes API] Polling not started: ${e.reason}`)}else(0,p.Qz)(t.id);return a.NextResponse.json(c(i,u))}catch(e){return console.error("Error setting auto-yes state:",e),a.NextResponse.json({error:"Failed to set auto-yes state"},{status:500})}}let g=new n.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/worktrees/[id]/auto-yes/route",pathname:"/api/worktrees/[id]/auto-yes",filename:"route",bundlePath:"app/api/worktrees/[id]/auto-yes/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/auto-yes/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:b,staticGenerationAsyncStorage:w,serverHooks:v}=g,h="/api/worktrees/[id]/auto-yes/route";function q(){return(0,i.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}},60667:(e,t,r)=>{r.d(t,{bq:()=>c,gf:()=>m,bY:()=>f,w:()=>b,Qz:()=>w});var o=r(89194),n=r(63661),s=r(10927),i=r(43839),a=r(19377);let u=/^[a-zA-Z0-9_-]+$/,l=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function d(e){return Date.now()>e.expiresAt}function c(e){let t=l.get(e);if(!t)return null;if(d(t)){let r={...t,enabled:!1};return l.set(e,r),r}return t}function f(e,t){if(t){let t=Date.now(),r={enabled:!0,enabledAt:t,expiresAt:t+36e5};return l.set(e,r),r}{let t=l.get(e),r={enabled:!1,enabledAt:t?.enabledAt??0,expiresAt:t?.expiresAt??0};return l.set(e,r),r}}function m(e){let t=p.get(e);return t?.lastServerResponseTimestamp??null}async function x(e,t){if(!p.get(e))return;let r=c(e);if(!r?.enabled||d(r)){w(e);return}try{let r=await (0,o.NA)(e,t,5e3),u=(0,a.vp)(r);if((0,a.Wg)(t,u)){g(e,t);return}let l=(0,n.F)(u);if(!l.isPrompt||!l.promptData){g(e,t);return}let d=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let t=e.options.find(e=>e.isDefault)??e.options[0];return!t||t.requiresTextInput?null:t.number.toString()}return null}(l.promptData);if(null===d){g(e,t);return}let c=i.g.getInstance().getTool(t).getSessionName(e);await (0,s.Is)(c,d,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(c,"",!0),function(e,t){let r=p.get(e);r&&(r.lastServerResponseTimestamp=t)}(e,Date.now()),function(e){let t=p.get(e);t&&(t.consecutiveErrors=0,t.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(r){!function(e){let t=p.get(e);if(t){var r;t.consecutiveErrors++,t.currentInterval=(r=t.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,r-5+1),6e4)}}(e);let t=r instanceof Error?r.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${t}`)}g(e,t)}function g(e,t){let r=p.get(e);r&&(r.timerId=setTimeout(()=>{x(e,t)},r.currentInterval))}function b(e,t){if(!(e&&0!==e.length&&u.test(e)))return{started:!1,reason:"invalid worktree ID"};let r=c(e);if(!r?.enabled)return{started:!1,reason:"auto-yes not enabled"};let o=p.has(e);if(!o&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};o&&w(e);let n={timerId:null,cliToolId:t,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,n),n.timerId=setTimeout(()=>{x(e,t)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${t}`),{started:!0}}function w(e){let t=p.get(e);t&&(t.timerId&&clearTimeout(t.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(80134));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=5695,e.ids=[5695],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},80134:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>g,routeModule:()=>h,serverHooks:()=>w,staticGenerationAsyncStorage:()=>b});var o={};r.r(o),r.d(o,{GET:()=>m,POST:()=>x});var s=r(49303),n=r(88716),a=r(60670),i=r(87070),l=r(97425),u=r(75748),p=r(60667);let c=["claude","codex","gemini"];function d(e,t){let r={enabled:e?.enabled??!1,expiresAt:e?.enabled?e.expiresAt:null};return void 0!==t&&(r.pollingStarted=t),r}function f(e){let t=(0,l.n)();return(0,u.gU)(t,e)?null:i.NextResponse.json({error:`Worktree '${e}' not found`},{status:404})}async function m(e,{params:t}){try{let e=f(t.id);if(e)return e;let r=(0,p.bq)(t.id);return i.NextResponse.json(d(r))}catch(e){return console.error("Error getting auto-yes state:",e),i.NextResponse.json({error:"Failed to get auto-yes state"},{status:500})}}async function x(e,{params:t}){try{var r;let o=f(t.id);if(o)return o;let s=await e.json();if("boolean"!=typeof s.enabled)return i.NextResponse.json({error:"enabled must be a boolean"},{status:400});let n=(r=s.cliToolId)&&c.includes(r)?s.cliToolId:"claude",a=(0,p.bY)(t.id,s.enabled),l=!1;if(s.enabled){let e=(0,p.w)(t.id,n);l=e.started,e.started||console.warn(`[Auto-Yes API] Polling not started: ${e.reason}`)}else(0,p.Qz)(t.id);return i.NextResponse.json(d(a,l))}catch(e){return console.error("Error setting auto-yes state:",e),i.NextResponse.json({error:"Failed to set auto-yes state"},{status:500})}}let h=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/auto-yes/route",pathname:"/api/worktrees/[id]/auto-yes",filename:"route",bundlePath:"app/api/worktrees/[id]/auto-yes/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/auto-yes/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:g,staticGenerationAsyncStorage:b,serverHooks:w}=h,v="/api/worktrees/[id]/auto-yes/route";function y(){return(0,a.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:b})}},60667:(e,t,r)=>{r.d(t,{bq:()=>d,gf:()=>m,bY:()=>f,w:()=>g,Qz:()=>b});var o=r(89194),s=r(63661),n=r(10927),a=r(43839),i=r(19377);let l=/^[a-zA-Z0-9_-]+$/,u=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function c(e){return Date.now()>e.expiresAt}function d(e){let t=u.get(e);if(!t)return null;if(c(t)){let r={...t,enabled:!1};return u.set(e,r),r}return t}function f(e,t){if(t){let t=Date.now(),r={enabled:!0,enabledAt:t,expiresAt:t+36e5};return u.set(e,r),r}{let t=u.get(e),r={enabled:!1,enabledAt:t?.enabledAt??0,expiresAt:t?.expiresAt??0};return u.set(e,r),r}}function m(e){let t=p.get(e);return t?.lastServerResponseTimestamp??null}async function x(e,t){if(!p.get(e))return;let r=d(e);if(!r?.enabled||c(r)){b(e);return}try{let r=await (0,o.NA)(e,t,5e3),l=(0,i.vp)(r),u=l.split("\n").slice(-50).join("\n");if((0,i.Wg)(t,u)){h(e,t);return}let c=(0,i.Sg)(t),d=(0,s.F)(l,c);if(!d.isPrompt||!d.promptData){h(e,t);return}let f=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let t=e.options.find(e=>e.isDefault)??e.options[0];return!t||t.requiresTextInput?null:t.number.toString()}return null}(d.promptData);if(null===f){h(e,t);return}let m=a.g.getInstance().getTool(t).getSessionName(e);if("claude"===t&&d.promptData?.type==="multiple_choice"&&/^\d+$/.test(f)&&d.promptData?.type==="multiple_choice"){let e=parseInt(f,10),t=d.promptData.options,r=t.find(e=>e.isDefault),o=r?.number??1,s=e-o;if(t.some(e=>/^\[[ x]\] /.test(e.label))){let r=t.filter(e=>/^\[[ x]\] /.test(e.label)).length,o=[];if(s>0)for(let e=0;e<s;e++)o.push("Down");else if(s<0)for(let e=0;e<Math.abs(s);e++)o.push("Up");o.push("Space");let a=r-e+1;for(let e=0;e<a;e++)o.push("Down");o.push("Enter"),await (0,n.hL)(m,o)}else{let e=[];if(s>0)for(let t=0;t<s;t++)e.push("Down");else if(s<0)for(let t=0;t<Math.abs(s);t++)e.push("Up");e.push("Enter"),await (0,n.hL)(m,e)}}else await (0,n.Is)(m,f,!1),await new Promise(e=>setTimeout(e,100)),await (0,n.Is)(m,"",!0);(function(e,t){let r=p.get(e);r&&(r.lastServerResponseTimestamp=t)})(e,Date.now()),function(e){let t=p.get(e);t&&(t.consecutiveErrors=0,t.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(r){!function(e){let t=p.get(e);if(t){var r;t.consecutiveErrors++,t.currentInterval=(r=t.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,r-5+1),6e4)}}(e);let t=r instanceof Error?r.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${t}`)}h(e,t)}function h(e,t){let r=p.get(e);r&&(r.timerId=setTimeout(()=>{x(e,t)},r.currentInterval))}function g(e,t){if(!(e&&0!==e.length&&l.test(e)))return{started:!1,reason:"invalid worktree ID"};let r=d(e);if(!r?.enabled)return{started:!1,reason:"auto-yes not enabled"};let o=p.has(e);if(!o&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};o&&b(e);let s={timerId:null,cliToolId:t,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,s),s.timerId=setTimeout(()=>{x(e,t)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${t}`),{started:!0}}function b(e){let t=p.get(e);t&&(t.timerId&&clearTimeout(t.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(80134));module.exports=o})();
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{var e={};e.id=6521,e.ids=[6521],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},30781:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>y,requestAsyncStorage:()=>d,routeModule:()=>p,serverHooks:()=>l,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),o=r(88716),i=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,lines:n=1e3}=await e.json();if(!s)return a.NextResponse.json({error:"Missing cliToolId"},{status:400});let o=(r=t.id,`mcbd-${s}-${r}`);if(!await u.Hk(o))return a.NextResponse.json({output:`Session not running. Starting ${s} session...
2
- `});let i=await u.xq(o,n);return a.NextResponse.json({output:i})}catch(e){return console.error("Capture API error:",e),a.NextResponse.json({error:e.message},{status:500})}}let p=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/capture/route",pathname:"/api/worktrees/[id]/capture",filename:"route",bundlePath:"app/api/worktrees/[id]/capture/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/capture/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:m,serverHooks:l}=p,x="/api/worktrees/[id]/capture/route";function y(){return(0,i.patchFetch)({serverHooks:l,staticGenerationAsyncStorage:m})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>c,Hk:()=>o,Is:()=>a,ZV:()=>p,ed:()=>i,xq:()=>u});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function o(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function i(e,t){let r,s,o;"string"==typeof e?(r=e,s=t,o=5e4):(r=e.sessionName,s=e.workingDirectory,o=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${o}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),o=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(o,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}async function u(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function c(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function p(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(30781));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6521,e.ids=[6521],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},30781:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>h,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>p,serverHooks:()=>d,staticGenerationAsyncStorage:()=>m});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),o=r(88716),i=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,lines:n=1e3}=await e.json();if(!s)return a.NextResponse.json({error:"Missing cliToolId"},{status:400});let o=(r=t.id,`mcbd-${s}-${r}`);if(!await u.Hk(o))return a.NextResponse.json({output:`Session not running. Starting ${s} session...
2
+ `});let i=await u.xq(o,n);return a.NextResponse.json({output:i})}catch(e){return console.error("Capture API error:",e),a.NextResponse.json({error:e.message},{status:500})}}let p=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/capture/route",pathname:"/api/worktrees/[id]/capture",filename:"route",bundlePath:"app/api/worktrees/[id]/capture/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/capture/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:m,serverHooks:d}=p,h="/api/worktrees/[id]/capture/route";function f(){return(0,i.patchFetch)({serverHooks:d,staticGenerationAsyncStorage:m})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>l,Hk:()=>o,Is:()=>a,ZV:()=>m,ed:()=>i,hL:()=>c,xq:()=>p});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function o(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function i(e,t){let r,s,o;"string"==typeof e?(r=e,s=t,o=5e4):(r=e.sessionName,s=e.workingDirectory,o=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${o}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),o=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(o,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}let u=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC"]);async function c(e,t){if(0!==t.length){for(let e of t)if(!u.has(e))throw Error(`Invalid special key: ${e}`);try{for(let r=0;r<t.length;r++){let s=`tmux send-keys -t "${e}" ${t[r]}`;await n(s,{timeout:5e3}),r<t.length-1&&await new Promise(e=>setTimeout(e,100))}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special keys to tmux session: ${e}`)}}}async function p(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function l(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function m(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(30781));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=1991,e.ids=[1991],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},26683:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>q,patchFetch:()=>A,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>b,staticGenerationAsyncStorage:()=>v});var n={};r.r(n),r.d(n,{GET:()=>x});var o=r(49303),s=r(88716),i=r(60670),u=r(87070),a=r(97425),l=r(75748),p=r(63661),c=r(43839),d=r(89194),f=r(19377),m=r(60667);let g=["claude","codex","gemini"];async function x(e,{params:t}){try{let r=(0,a.n)(),n=(0,l.gU)(r,t.id);if(!n)return u.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=new URL(e.url).searchParams.get("cliTool"),s=o&&g.includes(o)?o:n.cliToolId||"claude",i=c.g.getInstance().getTool(s);if(!await i.isRunning(t.id))return u.NextResponse.json({isRunning:!1,content:"",lineCount:0,cliToolId:s},{status:200});let x=(0,l.zl)(r,t.id,s),h=x?.lastCapturedLine||0,w=await (0,d.NA)(t.id,s,1e4),v=w.split("\n"),b=v.length,q=v.slice(Math.max(0,h)).join("\n"),A=v.map(e=>(0,f.vp)(e)).filter(e=>""!==e.trim()).slice(-15).join("\n"),T=(0,f.vp)(w),k=(0,f.Wg)(s,A),P=k?{isPrompt:!1,cleanContent:T}:(0,p.F)(T),I=P.isPrompt,R=v.slice(-100).join("\n"),S=(0,m.bq)(t.id),_=(0,m.gf)(t.id);return u.NextResponse.json({isRunning:!0,cliToolId:s,content:q,fullOutput:w,realtimeSnippet:R,lineCount:b,lastCapturedLine:h,isComplete:I,isGenerating:k,thinking:k,thinkingMessage:k?"Claude is thinking...":null,isPromptWaiting:I,promptData:I?P.promptData:null,autoYes:{enabled:S?.enabled??!1,expiresAt:S?.enabled?S.expiresAt:null},lastServerResponseTimestamp:_})}catch(e){return console.error("Error getting current output:",e),u.NextResponse.json({error:"Failed to get current output"},{status:500})}}let h=new o.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/worktrees/[id]/current-output/route",pathname:"/api/worktrees/[id]/current-output",filename:"route",bundlePath:"app/api/worktrees/[id]/current-output/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/current-output/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:w,staticGenerationAsyncStorage:v,serverHooks:b}=h,q="/api/worktrees/[id]/current-output/route";function A(){return(0,i.patchFetch)({serverHooks:b,staticGenerationAsyncStorage:v})}},60667:(e,t,r)=>{r.d(t,{bq:()=>d,gf:()=>m,bY:()=>f,w:()=>h,Qz:()=>w});var n=r(89194),o=r(63661),s=r(10927),i=r(43839),u=r(19377);let a=/^[a-zA-Z0-9_-]+$/,l=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function c(e){return Date.now()>e.expiresAt}function d(e){let t=l.get(e);if(!t)return null;if(c(t)){let r={...t,enabled:!1};return l.set(e,r),r}return t}function f(e,t){if(t){let t=Date.now(),r={enabled:!0,enabledAt:t,expiresAt:t+36e5};return l.set(e,r),r}{let t=l.get(e),r={enabled:!1,enabledAt:t?.enabledAt??0,expiresAt:t?.expiresAt??0};return l.set(e,r),r}}function m(e){let t=p.get(e);return t?.lastServerResponseTimestamp??null}async function g(e,t){if(!p.get(e))return;let r=d(e);if(!r?.enabled||c(r)){w(e);return}try{let r=await (0,n.NA)(e,t,5e3),a=(0,u.vp)(r);if((0,u.Wg)(t,a)){x(e,t);return}let l=(0,o.F)(a);if(!l.isPrompt||!l.promptData){x(e,t);return}let c=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let t=e.options.find(e=>e.isDefault)??e.options[0];return!t||t.requiresTextInput?null:t.number.toString()}return null}(l.promptData);if(null===c){x(e,t);return}let d=i.g.getInstance().getTool(t).getSessionName(e);await (0,s.Is)(d,c,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(d,"",!0),function(e,t){let r=p.get(e);r&&(r.lastServerResponseTimestamp=t)}(e,Date.now()),function(e){let t=p.get(e);t&&(t.consecutiveErrors=0,t.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(r){!function(e){let t=p.get(e);if(t){var r;t.consecutiveErrors++,t.currentInterval=(r=t.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,r-5+1),6e4)}}(e);let t=r instanceof Error?r.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${t}`)}x(e,t)}function x(e,t){let r=p.get(e);r&&(r.timerId=setTimeout(()=>{g(e,t)},r.currentInterval))}function h(e,t){if(!(e&&0!==e.length&&a.test(e)))return{started:!1,reason:"invalid worktree ID"};let r=d(e);if(!r?.enabled)return{started:!1,reason:"auto-yes not enabled"};let n=p.has(e);if(!n&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};n&&w(e);let o={timerId:null,cliToolId:t,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,o),o.timerId=setTimeout(()=>{g(e,t)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${t}`),{started:!0}}function w(e){let t=p.get(e);t&&(t.timerId&&clearTimeout(t.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(26683));module.exports=n})();
1
+ "use strict";(()=>{var e={};e.id=1991,e.ids=[1991],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},26683:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>q,patchFetch:()=>P,requestAsyncStorage:()=>v,routeModule:()=>w,serverHooks:()=>A,staticGenerationAsyncStorage:()=>b});var n={};r.r(n),r.d(n,{GET:()=>x});var o=r(49303),i=r(88716),s=r(60670),a=r(87070),u=r(97425),l=r(75748),p=r(63661),c=r(43839),d=r(89194),f=r(19377),m=r(13561),g=r(60667);let h=["claude","codex","gemini"];async function x(e,{params:t}){try{let r=(0,u.n)(),n=(0,l.gU)(r,t.id);if(!n)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=new URL(e.url).searchParams.get("cliTool"),i=o&&h.includes(o)?o:n.cliToolId||"claude",s=c.g.getInstance().getTool(i);if(!await s.isRunning(t.id))return a.NextResponse.json({isRunning:!1,content:"",lineCount:0,cliToolId:i},{status:200});let x=(0,l.zl)(r,t.id,i),w=x?.lastCapturedLine||0,v=await (0,d.NA)(t.id,i,1e4),b=v.split("\n"),A=b.length,q=b.slice(Math.max(0,w)).join("\n"),P=(0,f.vp)(v),_=(0,m._)(v,i),k="running"===_.status&&"thinking_indicator"===_.reason,T={isPrompt:!1,cleanContent:P};if(!k){let e=(0,f.Sg)(i);T=(0,p.F)(P,e)}let S=_.hasActivePrompt,D=b.slice(-100).join("\n"),I=(0,g.bq)(t.id),y=(0,g.gf)(t.id);return a.NextResponse.json({isRunning:!0,cliToolId:i,content:q,fullOutput:v,realtimeSnippet:D,lineCount:A,lastCapturedLine:w,isComplete:S,isGenerating:k,thinking:k,thinkingMessage:k?"Claude is thinking...":null,isPromptWaiting:S,promptData:S?T.promptData:null,autoYes:{enabled:I?.enabled??!1,expiresAt:I?.enabled?I.expiresAt:null},lastServerResponseTimestamp:y})}catch(e){return console.error("Error getting current output:",e),a.NextResponse.json({error:"Failed to get current output"},{status:500})}}let w=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/current-output/route",pathname:"/api/worktrees/[id]/current-output",filename:"route",bundlePath:"app/api/worktrees/[id]/current-output/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/current-output/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:v,staticGenerationAsyncStorage:b,serverHooks:A}=w,q="/api/worktrees/[id]/current-output/route";function P(){return(0,s.patchFetch)({serverHooks:A,staticGenerationAsyncStorage:b})}},60667:(e,t,r)=>{r.d(t,{bq:()=>d,gf:()=>m,bY:()=>f,w:()=>x,Qz:()=>w});var n=r(89194),o=r(63661),i=r(10927),s=r(43839),a=r(19377);let u=/^[a-zA-Z0-9_-]+$/,l=globalThis.__autoYesStates??(globalThis.__autoYesStates=new Map),p=globalThis.__autoYesPollerStates??(globalThis.__autoYesPollerStates=new Map);function c(e){return Date.now()>e.expiresAt}function d(e){let t=l.get(e);if(!t)return null;if(c(t)){let r={...t,enabled:!1};return l.set(e,r),r}return t}function f(e,t){if(t){let t=Date.now(),r={enabled:!0,enabledAt:t,expiresAt:t+36e5};return l.set(e,r),r}{let t=l.get(e),r={enabled:!1,enabledAt:t?.enabledAt??0,expiresAt:t?.expiresAt??0};return l.set(e,r),r}}function m(e){let t=p.get(e);return t?.lastServerResponseTimestamp??null}async function g(e,t){if(!p.get(e))return;let r=d(e);if(!r?.enabled||c(r)){w(e);return}try{let r=await (0,n.NA)(e,t,5e3),u=(0,a.vp)(r),l=u.split("\n").slice(-50).join("\n");if((0,a.Wg)(t,l)){h(e,t);return}let c=(0,a.Sg)(t),d=(0,o.F)(u,c);if(!d.isPrompt||!d.promptData){h(e,t);return}let f=function(e){if("yes_no"===e.type)return"y";if("multiple_choice"===e.type){let t=e.options.find(e=>e.isDefault)??e.options[0];return!t||t.requiresTextInput?null:t.number.toString()}return null}(d.promptData);if(null===f){h(e,t);return}let m=s.g.getInstance().getTool(t).getSessionName(e);if("claude"===t&&d.promptData?.type==="multiple_choice"&&/^\d+$/.test(f)&&d.promptData?.type==="multiple_choice"){let e=parseInt(f,10),t=d.promptData.options,r=t.find(e=>e.isDefault),n=r?.number??1,o=e-n;if(t.some(e=>/^\[[ x]\] /.test(e.label))){let r=t.filter(e=>/^\[[ x]\] /.test(e.label)).length,n=[];if(o>0)for(let e=0;e<o;e++)n.push("Down");else if(o<0)for(let e=0;e<Math.abs(o);e++)n.push("Up");n.push("Space");let s=r-e+1;for(let e=0;e<s;e++)n.push("Down");n.push("Enter"),await (0,i.hL)(m,n)}else{let e=[];if(o>0)for(let t=0;t<o;t++)e.push("Down");else if(o<0)for(let t=0;t<Math.abs(o);t++)e.push("Up");e.push("Enter"),await (0,i.hL)(m,e)}}else await (0,i.Is)(m,f,!1),await new Promise(e=>setTimeout(e,100)),await (0,i.Is)(m,"",!0);(function(e,t){let r=p.get(e);r&&(r.lastServerResponseTimestamp=t)})(e,Date.now()),function(e){let t=p.get(e);t&&(t.consecutiveErrors=0,t.currentInterval=2e3)}(e),console.info(`[Auto-Yes Poller] Sent response for worktree: ${e}`)}catch(r){!function(e){let t=p.get(e);if(t){var r;t.consecutiveErrors++,t.currentInterval=(r=t.consecutiveErrors)<5?2e3:Math.min(2e3*Math.pow(2,r-5+1),6e4)}}(e);let t=r instanceof Error?r.message:"Unknown error";console.warn(`[Auto-Yes Poller] Error for worktree ${e}: ${t}`)}h(e,t)}function h(e,t){let r=p.get(e);r&&(r.timerId=setTimeout(()=>{g(e,t)},r.currentInterval))}function x(e,t){if(!(e&&0!==e.length&&u.test(e)))return{started:!1,reason:"invalid worktree ID"};let r=d(e);if(!r?.enabled)return{started:!1,reason:"auto-yes not enabled"};let n=p.has(e);if(!n&&p.size>=50)return{started:!1,reason:"max concurrent pollers reached"};n&&w(e);let o={timerId:null,cliToolId:t,consecutiveErrors:0,currentInterval:2e3,lastServerResponseTimestamp:null};return p.set(e,o),o.timerId=setTimeout(()=>{g(e,t)},2e3),console.info(`[Auto-Yes Poller] Started for worktree: ${e}, cliTool: ${t}`),{started:!0}}function w(e){let t=p.get(e);t&&(t.timerId&&clearTimeout(t.timerId),p.delete(e),console.info(`[Auto-Yes Poller] Stopped for worktree: ${e}`))}},13561:(e,t,r)=>{r.d(t,{_:()=>i});var n=r(19377),o=r(63661);function i(e,t,r){let i=(0,n.vp)(e).split("\n"),s=i.length-1;for(;s>=0&&""===i[s].trim();)s--;let a=i.slice(0,s+1),u=a.slice(-15).join("\n"),l=a.slice(-5).join("\n"),p=(0,n.Sg)(t);if((0,o.F)(u,p).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,n.Wg)(t,l))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:c}=(0,n.bs)(t);return c.test(u)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:r&&Date.now()-r.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(26683));module.exports=n})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=6366,e.ids=[6366],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>j,requestAsyncStorage:()=>g,routeModule:()=>w,serverHooks:()=>h,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{POST:()=>q});var o=t(49303),n=t(88716),i=t(60670),p=t(87070),a=t(97425),u=t(75748),d=t(10927),c=t(43839),l=t(89194),m=t(63661),x=t(19377);async function q(e,{params:r}){try{let{answer:t,cliTool:s}=await e.json();if(!t)return p.NextResponse.json({error:"answer is required"},{status:400});let o=(0,a.n)(),n=(0,u.gU)(o,r.id);if(!n)return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let i=s||n.cliToolId||"claude",q=c.g.getInstance().getTool(i);if(!await q.isRunning(r.id))return p.NextResponse.json({error:`${q.name} session is not running`},{status:400});let w=q.getSessionName(r.id);try{let e=await (0,l.NA)(r.id,i,5e3),s=(0,x.vp)(e);if(!(0,m.F)(s).isPrompt)return p.NextResponse.json({success:!1,reason:"prompt_no_longer_active",answer:t})}catch{console.warn("[prompt-response] Failed to verify prompt state, proceeding with send")}try{await (0,d.Is)(w,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,d.Is)(w,"",!0)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return p.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return p.NextResponse.json({success:!0,answer:t})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return p.NextResponse.json({error:e},{status:500})}}let w=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/prompt-response/route",pathname:"/api/worktrees/[id]/prompt-response",filename:"route",bundlePath:"app/api/worktrees/[id]/prompt-response/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/prompt-response/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:h}=w,v="/api/worktrees/[id]/prompt-response/route";function j(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:f})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(45762));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6366,e.ids=[6366],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>j,requestAsyncStorage:()=>w,routeModule:()=>f,serverHooks:()=>g,staticGenerationAsyncStorage:()=>q});var s={};t.r(s),t.d(s,{POST:()=>h});var o=t(49303),n=t(88716),i=t(60670),p=t(87070),a=t(97425),u=t(75748),l=t(10927),d=t(43839),c=t(89194),m=t(63661),x=t(19377);async function h(e,{params:r}){try{let{answer:t,cliTool:s}=await e.json();if(!t)return p.NextResponse.json({error:"answer is required"},{status:400});let o=(0,a.n)(),n=(0,u.gU)(o,r.id);if(!n)return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let i=s||n.cliToolId||"claude",h=d.g.getInstance().getTool(i);if(!await h.isRunning(r.id))return p.NextResponse.json({error:`${h.name} session is not running`},{status:400});let f=h.getSessionName(r.id),w=null;try{let e=await (0,c.NA)(r.id,i,5e3),s=(0,x.vp)(e),o=(0,x.Sg)(i);if(!(w=(0,m.F)(s,o)).isPrompt)return p.NextResponse.json({success:!1,reason:"prompt_no_longer_active",answer:t})}catch{console.warn("[prompt-response] Failed to verify prompt state, proceeding with send")}try{if("claude"===i&&w?.promptData?.type==="multiple_choice"&&/^\d+$/.test(t)&&w?.promptData?.type==="multiple_choice"){let e=parseInt(t,10),r=w.promptData.options,s=r.find(e=>e.isDefault),o=s?.number??1,n=e-o;if(r.some(e=>/^\[[ x]\] /.test(e.label))){let t=r.filter(e=>/^\[[ x]\] /.test(e.label)).length,s=[];if(n>0)for(let e=0;e<n;e++)s.push("Down");else if(n<0)for(let e=0;e<Math.abs(n);e++)s.push("Up");s.push("Space");let o=t-e+1;for(let e=0;e<o;e++)s.push("Down");s.push("Enter"),await (0,l.hL)(f,s)}else{let e=[];if(n>0)for(let r=0;r<n;r++)e.push("Down");else if(n<0)for(let r=0;r<Math.abs(n);r++)e.push("Up");e.push("Enter"),await (0,l.hL)(f,e)}}else await (0,l.Is)(f,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,l.Is)(f,"",!0)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return p.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return p.NextResponse.json({success:!0,answer:t})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return p.NextResponse.json({error:e},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/prompt-response/route",pathname:"/api/worktrees/[id]/prompt-response",filename:"route",bundlePath:"app/api/worktrees/[id]/prompt-response/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/prompt-response/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:q,serverHooks:g}=f,v="/api/worktrees/[id]/prompt-response/route";function j(){return(0,i.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:q})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(45762));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4931,e.ids=[4931],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>f,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var i={};r.r(i),r.d(i,{GET:()=>m,PATCH:()=>h});var o=r(49303),n=r(88716),s=r(60670),a=r(87070),u=r(97425),p=r(75748),d=r(43839),c=r(89194),l=r(13561),g=r(3979);async function m(e,{params:t}){try{let e;let r=(0,u.n)(),i=(0,p.gU)(r,t.id);if(!i)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=d.g.getInstance(),n={},s=!1,m=!1,h=!1;for(let e of["claude","codex","gemini"]){let i=o.getTool(e),a=await i.isRunning(t.id),u=!1,d=!1;if(a)try{let i=await (0,c.NA)(t.id,e,100),o=(0,l._)(i,e);u="waiting"===o.status,d="running"===o.status,!o.hasActivePrompt&&(0,p._U)(r,t.id,void 0,10,e).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,p.GP)(r,t.id,e)}catch{d=!0}n[e]={isRunning:a,isWaitingForResponse:u,isProcessing:d},a&&(s=!0),u&&(m=!0),d&&(h=!0)}try{let o=(0,p.Q7)(r,t.id);e=await (0,g.v)(i.path,o)}catch(e){console.error("[GET /api/worktrees/:id] Failed to get git status:",e)}return a.NextResponse.json({...i,gitStatus:e,isSessionRunning:s,isWaitingForResponse:m,isProcessing:h,sessionStatusByCli:n},{status:200})}catch(e){return console.error("Error fetching worktree:",e),a.NextResponse.json({error:"Failed to fetch worktree"},{status:500})}}async function h(e,{params:t}){try{let r=(0,u.n)();if(!(0,p.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let i=await e.json();"description"in i&&(0,p.xr)(r,t.id,i.description),"link"in i&&(0,p.y)(r,t.id,i.link),"favorite"in i&&"boolean"==typeof i.favorite&&(0,p.R3)(r,t.id,i.favorite),"status"in i&&["todo","doing","done",null].includes(i.status)&&(0,p.Nf)(r,t.id,i.status),"cliToolId"in i&&["claude","codex","gemini"].includes(i.cliToolId)&&(0,p.VW)(r,t.id,i.cliToolId);let o=(0,p.gU)(r,t.id),n=d.g.getInstance(),s=o?.cliToolId||"claude",c=n.getTool(s),l=await c.isRunning(t.id);return a.NextResponse.json({...o,isSessionRunning:l},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/route",pathname:"/api/worktrees/[id]",filename:"route",bundlePath:"app/api/worktrees/[id]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:x,staticGenerationAsyncStorage:w,serverHooks:v}=f,k="/api/worktrees/[id]/route";function q(){return(0,s.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}},3979:(e,t,r)=>{r.d(t,{v:()=>s});var i=r(61282);let o=(0,r(21764).promisify)(i.execFile);async function n(e,t){try{let{stdout:r}=await o("git",e,{cwd:t,timeout:1e3});return r.trim()}catch(t){return console.error("[git-utils] Git command failed:",{args:e,error:t instanceof Error?t.message:"Unknown error"}),null}}async function s(e,t){let r;let i=await n(["rev-parse","--abbrev-ref","HEAD"],e);r=null===i?"(unknown)":"HEAD"===i?"(detached HEAD)":i;let o=await n(["rev-parse","--short","HEAD"],e),s=await n(["status","--porcelain"],e);return{currentBranch:r,initialBranch:t,isBranchMismatch:null!==t&&"(unknown)"!==r&&"(detached HEAD)"!==r&&r!==t,commitHash:o??"(unknown)",isDirty:null!==s&&s.length>0}}},13561:(e,t,r)=>{r.d(t,{_:()=>n});var i=r(19377),o=r(63661);function n(e,t,r){let n=(0,i.vp)(e).split("\n").slice(-15).join("\n");if((0,o.F)(n).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,i.Wg)(t,n))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:s}=(0,i.bs)(t);return s.test(n)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:r&&Date.now()-r.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(46769));module.exports=i})();
1
+ "use strict";(()=>{var e={};e.id=4931,e.ids=[4931],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>f,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var i={};r.r(i),r.d(i,{GET:()=>m,PATCH:()=>h});var o=r(49303),n=r(88716),s=r(60670),a=r(87070),u=r(97425),p=r(75748),c=r(43839),d=r(89194),l=r(13561),g=r(3979);async function m(e,{params:t}){try{let e;let r=(0,u.n)(),i=(0,p.gU)(r,t.id);if(!i)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=c.g.getInstance(),n={},s=!1,m=!1,h=!1;for(let e of["claude","codex","gemini"]){let i=o.getTool(e),a=await i.isRunning(t.id),u=!1,c=!1;if(a)try{let i=await (0,d.NA)(t.id,e,100),o=(0,l._)(i,e);u="waiting"===o.status,c="running"===o.status,!o.hasActivePrompt&&(0,p._U)(r,t.id,void 0,10,e).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,p.GP)(r,t.id,e)}catch{c=!0}n[e]={isRunning:a,isWaitingForResponse:u,isProcessing:c},a&&(s=!0),u&&(m=!0),c&&(h=!0)}try{let o=(0,p.Q7)(r,t.id);e=await (0,g.v)(i.path,o)}catch(e){console.error("[GET /api/worktrees/:id] Failed to get git status:",e)}return a.NextResponse.json({...i,gitStatus:e,isSessionRunning:s,isWaitingForResponse:m,isProcessing:h,sessionStatusByCli:n},{status:200})}catch(e){return console.error("Error fetching worktree:",e),a.NextResponse.json({error:"Failed to fetch worktree"},{status:500})}}async function h(e,{params:t}){try{let r=(0,u.n)();if(!(0,p.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let i=await e.json();"description"in i&&(0,p.xr)(r,t.id,i.description),"link"in i&&(0,p.y)(r,t.id,i.link),"favorite"in i&&"boolean"==typeof i.favorite&&(0,p.R3)(r,t.id,i.favorite),"status"in i&&["todo","doing","done",null].includes(i.status)&&(0,p.Nf)(r,t.id,i.status),"cliToolId"in i&&["claude","codex","gemini"].includes(i.cliToolId)&&(0,p.VW)(r,t.id,i.cliToolId);let o=(0,p.gU)(r,t.id),n=c.g.getInstance(),s=o?.cliToolId||"claude",d=n.getTool(s),l=await d.isRunning(t.id);return a.NextResponse.json({...o,isSessionRunning:l},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/route",pathname:"/api/worktrees/[id]",filename:"route",bundlePath:"app/api/worktrees/[id]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:x,staticGenerationAsyncStorage:w,serverHooks:v}=f,k="/api/worktrees/[id]/route";function q(){return(0,s.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}},3979:(e,t,r)=>{r.d(t,{v:()=>s});var i=r(61282);let o=(0,r(21764).promisify)(i.execFile);async function n(e,t){try{let{stdout:r}=await o("git",e,{cwd:t,timeout:1e3});return r.trim()}catch(t){return console.error("[git-utils] Git command failed:",{args:e,error:t instanceof Error?t.message:"Unknown error"}),null}}async function s(e,t){let r;let i=await n(["rev-parse","--abbrev-ref","HEAD"],e);r=null===i?"(unknown)":"HEAD"===i?"(detached HEAD)":i;let o=await n(["rev-parse","--short","HEAD"],e),s=await n(["status","--porcelain"],e);return{currentBranch:r,initialBranch:t,isBranchMismatch:null!==t&&"(unknown)"!==r&&"(detached HEAD)"!==r&&r!==t,commitHash:o??"(unknown)",isDirty:null!==s&&s.length>0}}},13561:(e,t,r)=>{r.d(t,{_:()=>n});var i=r(19377),o=r(63661);function n(e,t,r){let n=(0,i.vp)(e).split("\n"),s=n.length-1;for(;s>=0&&""===n[s].trim();)s--;let a=n.slice(0,s+1),u=a.slice(-15).join("\n"),p=a.slice(-5).join("\n"),c=(0,i.Sg)(t);if((0,o.F)(u,c).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,i.Wg)(t,p))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:d}=(0,i.bs)(t);return d.test(u)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:r&&Date.now()-r.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>r(46769));module.exports=i})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7586,e.ids=[7586],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},35135:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>y,requestAsyncStorage:()=>l,routeModule:()=>d,serverHooks:()=>w,staticGenerationAsyncStorage:()=>p});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),i=r(88716),o=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,command:n}=await e.json();if(!s||!n)return a.NextResponse.json({error:"Missing cliToolId or command"},{status:400});let i=(r=t.id,`mcbd-${s}-${r}`);return await u.Hk(i)||await u.ed(i,process.cwd()),await m(i,n),a.NextResponse.json({success:!0})}catch(e){return console.error("Terminal API error:",e),a.NextResponse.json({error:e.message},{status:500})}}async function m(e,t){await u.Is(e,t)}let d=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/terminal/route",pathname:"/api/worktrees/[id]/terminal",filename:"route",bundlePath:"app/api/worktrees/[id]/terminal/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/terminal/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:p,serverHooks:w}=d,x="/api/worktrees/[id]/terminal/route";function y(){return(0,o.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:p})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>c,Hk:()=>i,Is:()=>a,ZV:()=>m,ed:()=>o,xq:()=>u});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function i(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function o(e,t){let r,s,i;"string"==typeof e?(r=e,s=t,i=5e4):(r=e.sessionName,s=e.workingDirectory,i=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${i}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),i=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(i,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}async function u(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function c(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function m(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(35135));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=7586,e.ids=[7586],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},35135:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>h,patchFetch:()=>f,requestAsyncStorage:()=>d,routeModule:()=>m,serverHooks:()=>w,staticGenerationAsyncStorage:()=>p});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),i=r(88716),o=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,command:n}=await e.json();if(!s||!n)return a.NextResponse.json({error:"Missing cliToolId or command"},{status:400});let i=(r=t.id,`mcbd-${s}-${r}`);return await u.Hk(i)||await u.ed(i,process.cwd()),await l(i,n),a.NextResponse.json({success:!0})}catch(e){return console.error("Terminal API error:",e),a.NextResponse.json({error:e.message},{status:500})}}async function l(e,t){await u.Is(e,t)}let m=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/terminal/route",pathname:"/api/worktrees/[id]/terminal",filename:"route",bundlePath:"app/api/worktrees/[id]/terminal/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/terminal/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:p,serverHooks:w}=m,h="/api/worktrees/[id]/terminal/route";function f(){return(0,o.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:p})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>m,Hk:()=>i,Is:()=>a,ZV:()=>d,ed:()=>o,hL:()=>c,xq:()=>l});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function i(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function o(e,t){let r,s,i;"string"==typeof e?(r=e,s=t,i=5e4):(r=e.sessionName,s=e.workingDirectory,i=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${i}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),i=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(i,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}let u=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC"]);async function c(e,t){if(0!==t.length){for(let e of t)if(!u.has(e))throw Error(`Invalid special key: ${e}`);try{for(let r=0;r<t.length;r++){let s=`tmux send-keys -t "${e}" ${t[r]}`;await n(s,{timeout:5e3}),r<t.length-1&&await new Promise(e=>setTimeout(e,100))}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special keys to tmux session: ${e}`)}}}async function l(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function m(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function d(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(35135));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=3058,e.ids=[3058],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>w,requestAsyncStorage:()=>g,routeModule:()=>x,serverHooks:()=>q,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>h,dynamic:()=>m});var o=t(49303),i=t(88716),n=t(60670),a=t(87070),p=t(97425),u=t(75748),c=t(43839),d=t(89194),l=t(13561);let m="force-dynamic";async function h(e){try{let r=(0,p.n)(),t=e.nextUrl?.searchParams,s=t?.get("repository"),o=(0,u.Xv)(r,s||void 0),i=c.g.getInstance(),n=["claude","codex","gemini"],m=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,a=!1;for(let p of n){let n=i.getTool(p),c=await n.isRunning(e.id),m=!1,h=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l._)(t,p);m="waiting"===s.status,h="running"===s.status,!s.hasActivePrompt&&(0,u._U)(r,e.id,void 0,10,p).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,u.GP)(r,e.id,p)}catch{h=!0}t[p]={isRunning:c,isWaitingForResponse:m,isProcessing:h},c&&(s=!0),m&&(o=!0),h&&(a=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:a,sessionStatusByCli:t}})),h=(0,u.ER)(r);return a.NextResponse.json({worktrees:m,repositories:h},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),a.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let x=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/route",pathname:"/api/worktrees",filename:"route",bundlePath:"app/api/worktrees/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:g,staticGenerationAsyncStorage:f,serverHooks:q}=x,v="/api/worktrees/route";function w(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:f})}},13561:(e,r,t)=>{t.d(r,{_:()=>i});var s=t(19377),o=t(63661);function i(e,r,t){let i=(0,s.vp)(e).split("\n").slice(-15).join("\n");if((0,o.F)(i).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,s.Wg)(r,i))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:n}=(0,s.bs)(r);return n.test(i)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:t&&Date.now()-t.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(17679));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=3058,e.ids=[3058],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>w,requestAsyncStorage:()=>x,routeModule:()=>g,serverHooks:()=>q,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>h,dynamic:()=>m});var o=t(49303),i=t(88716),n=t(60670),a=t(87070),p=t(97425),u=t(75748),c=t(43839),d=t(89194),l=t(13561);let m="force-dynamic";async function h(e){try{let r=(0,p.n)(),t=e.nextUrl?.searchParams,s=t?.get("repository"),o=(0,u.Xv)(r,s||void 0),i=c.g.getInstance(),n=["claude","codex","gemini"],m=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,a=!1;for(let p of n){let n=i.getTool(p),c=await n.isRunning(e.id),m=!1,h=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l._)(t,p);m="waiting"===s.status,h="running"===s.status,!s.hasActivePrompt&&(0,u._U)(r,e.id,void 0,10,p).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,u.GP)(r,e.id,p)}catch{h=!0}t[p]={isRunning:c,isWaitingForResponse:m,isProcessing:h},c&&(s=!0),m&&(o=!0),h&&(a=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:a,sessionStatusByCli:t}})),h=(0,u.ER)(r);return a.NextResponse.json({worktrees:m,repositories:h},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),a.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let g=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/route",pathname:"/api/worktrees",filename:"route",bundlePath:"app/api/worktrees/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:x,staticGenerationAsyncStorage:f,serverHooks:q}=g,v="/api/worktrees/route";function w(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:f})}},13561:(e,r,t)=>{t.d(r,{_:()=>i});var s=t(19377),o=t(63661);function i(e,r,t){let i=(0,s.vp)(e).split("\n"),n=i.length-1;for(;n>=0&&""===i[n].trim();)n--;let a=i.slice(0,n+1),p=a.slice(-15).join("\n"),u=a.slice(-5).join("\n"),c=(0,s.Sg)(r);if((0,o.F)(p,c).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,s.Wg)(r,u))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:d}=(0,s.bs)(r);return d.test(p)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:t&&Date.now()-t.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(17679));module.exports=s})();
@@ -6,4 +6,4 @@
6
6
  flex-1 min-w-0 h-full overflow-hidden
7
7
  transition-[padding] duration-300 ease-out
8
8
  md:pl-72
9
- " role="main"><div class="container-custom py-8 overflow-auto h-full"><div class="mb-8"><h1 class="mb-2">CommandMate</h1><p class="text-lg text-gray-600">Git worktree management with Claude CLI and tmux sessions</p></div><div class="mb-8"><div class="space-y-4"><div class="flex gap-2 flex-wrap"><button class="btn btn-primary btn-sm">+ Add Repository</button><button class="btn btn-secondary btn-sm">Sync All</button></div></div></div><div class="space-y-6"><div class="flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between"><div class="flex items-center gap-2 flex-wrap"><span class="badge badge-gray">0<!-- --> branches</span></div><div class="flex gap-2 w-full sm:w-auto"><button class="btn btn-secondary btn-sm opacity-50 cursor-not-allowed" disabled="">Loading...</button></div></div><div class="flex flex-col sm:flex-row gap-3"><input type="text" placeholder="Search worktrees..." class="input flex-1" value=""/></div><div class="flex gap-2 flex-wrap items-center"><button class="btn btn-primary btn-sm">All</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">📝 ToDo</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">🚧 Doing</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">✅ Done</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Not set</button></div><div class="flex gap-2 flex-wrap"><span class="text-sm text-gray-600 self-center">Sort by:</span><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">⭐ Favorite </button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Name </button><button class="btn btn-primary btn-sm">Updated <!-- -->↓</button></div><div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"></div><p class="mt-4 text-gray-600">Loading worktrees...</p></div></div><div class="mt-8"><div class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold text-gray-900">External Apps</h2><button class="btn btn-primary btn-sm">+ Add App</button></div><div class="card p-6"><div class="flex items-center justify-center py-8"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="ml-3 text-gray-600">Loading apps...</span></div></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-4f85dcef6279c6ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/28be35e4727ae7ef.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[19107,[],\"ClientPageRoot\"]\n5:I[89707,[\"7648\",\"static/chunks/7648-325564a6e12a3257.js\",\"4343\",\"static/chunks/4343-ebe884a2a80eb033.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"6568\",\"static/chunks/6568-38a33aa67d82e12b.js\",\"1931\",\"static/chunks/app/page-3926224c4cdf315b.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"3185\",\"static/chunks/app/layout-4804cfba519283cf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"bdUePCj-b9Gv5okYGp49O\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/28be35e4727ae7ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.png?32d9127ba30ee286\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?31a89e65aa4ac65b\",\"type\":\"image/png\",\"sizes\":\"180x180\"}]]\n3:null\n"])</script></body></html>
9
+ " role="main"><div class="container-custom py-8 overflow-auto h-full"><div class="mb-8"><h1 class="mb-2">CommandMate</h1><p class="text-lg text-gray-600">Git worktree management with Claude CLI and tmux sessions</p></div><div class="mb-8"><div class="space-y-4"><div class="flex gap-2 flex-wrap"><button class="btn btn-primary btn-sm">+ Add Repository</button><button class="btn btn-secondary btn-sm">Sync All</button></div></div></div><div class="space-y-6"><div class="flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between"><div class="flex items-center gap-2 flex-wrap"><span class="badge badge-gray">0<!-- --> branches</span></div><div class="flex gap-2 w-full sm:w-auto"><button class="btn btn-secondary btn-sm opacity-50 cursor-not-allowed" disabled="">Loading...</button></div></div><div class="flex flex-col sm:flex-row gap-3"><input type="text" placeholder="Search worktrees..." class="input flex-1" value=""/></div><div class="flex gap-2 flex-wrap items-center"><button class="btn btn-primary btn-sm">All</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">📝 ToDo</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">🚧 Doing</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">✅ Done</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Not set</button></div><div class="flex gap-2 flex-wrap"><span class="text-sm text-gray-600 self-center">Sort by:</span><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">⭐ Favorite </button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Name </button><button class="btn btn-primary btn-sm">Updated <!-- -->↓</button></div><div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"></div><p class="mt-4 text-gray-600">Loading worktrees...</p></div></div><div class="mt-8"><div class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold text-gray-900">External Apps</h2><button class="btn btn-primary btn-sm">+ Add App</button></div><div class="card p-6"><div class="flex items-center justify-center py-8"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="ml-3 text-gray-600">Loading apps...</span></div></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-4f85dcef6279c6ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/28be35e4727ae7ef.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[19107,[],\"ClientPageRoot\"]\n5:I[89707,[\"7648\",\"static/chunks/7648-325564a6e12a3257.js\",\"4343\",\"static/chunks/4343-ebe884a2a80eb033.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"6568\",\"static/chunks/6568-38a33aa67d82e12b.js\",\"1931\",\"static/chunks/app/page-3926224c4cdf315b.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"3185\",\"static/chunks/app/layout-4804cfba519283cf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"oUD-A998xeBoez6zsrTH3\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/28be35e4727ae7ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.png?32d9127ba30ee286\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?31a89e65aa4ac65b\",\"type\":\"image/png\",\"sizes\":\"180x180\"}]]\n3:null\n"])</script></body></html>
@@ -3,6 +3,6 @@
3
3
  4:I[91795,["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"AppProviders"]
4
4
  5:I[4707,[],""]
5
5
  6:I[36423,[],""]
6
- 0:["bdUePCj-b9Gv5okYGp49O",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/28be35e4727ae7ef.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
6
+ 0:["oUD-A998xeBoez6zsrTH3",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/28be35e4727ae7ef.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
7
7
  7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"CommandMate"}],["$","meta","3",{"name":"description","content":"Git worktree management with Claude CLI and tmux sessions"}],["$","link","4",{"rel":"icon","href":"/icon.png?32d9127ba30ee286","type":"image/png","sizes":"32x32"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-icon.png?31a89e65aa4ac65b","type":"image/png","sizes":"180x180"}]]
8
8
  1:null