commandmate 0.1.9 → 0.1.11

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 (140) hide show
  1. package/.env.example +8 -3
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-build-manifest.json +11 -11
  4. package/.next/app-path-routes-manifest.json +1 -1
  5. package/.next/build-manifest.json +2 -2
  6. package/.next/cache/.tsbuildinfo +1 -1
  7. package/.next/cache/config.json +3 -3
  8. package/.next/cache/webpack/client-production/0.pack +0 -0
  9. package/.next/cache/webpack/client-production/1.pack +0 -0
  10. package/.next/cache/webpack/client-production/2.pack +0 -0
  11. package/.next/cache/webpack/client-production/index.pack +0 -0
  12. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  13. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  14. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  15. package/.next/cache/webpack/server-production/0.pack +0 -0
  16. package/.next/cache/webpack/server-production/index.pack +0 -0
  17. package/.next/next-server.js.nft.json +1 -1
  18. package/.next/prerender-manifest.json +1 -1
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +1 -1
  22. package/.next/server/app/api/external-apps/[id]/health/route.js +11 -12
  23. package/.next/server/app/api/external-apps/[id]/route.js +14 -15
  24. package/.next/server/app/api/external-apps/route.js +12 -13
  25. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  26. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  27. package/.next/server/app/api/repositories/clone/route.js +1 -1
  28. package/.next/server/app/api/repositories/route.js +1 -1
  29. package/.next/server/app/api/repositories/scan/route.js +1 -1
  30. package/.next/server/app/api/repositories/sync/route.js +1 -1
  31. package/.next/server/app/api/slash-commands.body +1 -1
  32. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  33. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  34. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  35. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  36. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  37. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  38. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  39. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  40. package/.next/server/app/api/worktrees/[id]/logs/route.js +7 -7
  41. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  42. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  43. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  44. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  45. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  46. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  47. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  48. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  49. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  50. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  51. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  52. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  53. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  54. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  55. package/.next/server/app/api/worktrees/route.js +1 -1
  56. package/.next/server/app/index.html +2 -2
  57. package/.next/server/app/index.rsc +2 -2
  58. package/.next/server/app/page.js +1 -1
  59. package/.next/server/app/page_client-reference-manifest.js +1 -1
  60. package/.next/server/app/proxy/[...path]/route.js +12 -13
  61. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/worktrees/[id]/page.js +5 -5
  63. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/worktrees/[id]/simple-terminal/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app-paths-manifest.json +10 -10
  67. package/.next/server/chunks/1318.js +4 -4
  68. package/.next/server/chunks/1528.js +1 -1
  69. package/.next/server/chunks/7425.js +162 -46
  70. package/.next/server/chunks/9723.js +1 -1
  71. package/.next/server/middleware-manifest.json +5 -5
  72. package/.next/server/pages/404.html +1 -1
  73. package/.next/server/pages/500.html +1 -1
  74. package/.next/server/server-reference-manifest.json +1 -1
  75. package/.next/server/src/middleware.js +2 -2
  76. package/.next/server/src/middleware.js.map +1 -1
  77. package/.next/static/chunks/app/{page-9cd00de9cc0abc43.js → page-fe35d61f14b90a51.js} +1 -1
  78. package/.next/static/chunks/app/worktrees/[id]/page-720605c2fb074444.js +1 -0
  79. package/.next/static/css/{e174aa24f94ce607.css → 376b339640084689.css} +1 -1
  80. package/.next/trace +5 -5
  81. package/dist/cli/commands/init.d.ts.map +1 -1
  82. package/dist/cli/commands/init.js +6 -4
  83. package/dist/cli/commands/start.d.ts +2 -0
  84. package/dist/cli/commands/start.d.ts.map +1 -1
  85. package/dist/cli/commands/start.js +64 -17
  86. package/dist/cli/commands/status.d.ts +4 -1
  87. package/dist/cli/commands/status.d.ts.map +1 -1
  88. package/dist/cli/commands/status.js +95 -6
  89. package/dist/cli/commands/stop.d.ts +2 -0
  90. package/dist/cli/commands/stop.d.ts.map +1 -1
  91. package/dist/cli/commands/stop.js +27 -10
  92. package/dist/cli/index.js +16 -2
  93. package/dist/cli/types/index.d.ts +20 -0
  94. package/dist/cli/types/index.d.ts.map +1 -1
  95. package/dist/cli/utils/daemon-factory.d.ts +105 -0
  96. package/dist/cli/utils/daemon-factory.d.ts.map +1 -0
  97. package/dist/cli/utils/daemon-factory.js +117 -0
  98. package/dist/cli/utils/daemon.d.ts.map +1 -1
  99. package/dist/cli/utils/daemon.js +4 -0
  100. package/dist/cli/utils/env-setup.d.ts +24 -12
  101. package/dist/cli/utils/env-setup.d.ts.map +1 -1
  102. package/dist/cli/utils/env-setup.js +64 -43
  103. package/dist/cli/utils/input-validators.d.ts +103 -0
  104. package/dist/cli/utils/input-validators.d.ts.map +1 -0
  105. package/dist/cli/utils/input-validators.js +163 -0
  106. package/dist/cli/utils/install-context.d.ts +53 -0
  107. package/dist/cli/utils/install-context.d.ts.map +1 -0
  108. package/dist/cli/utils/install-context.js +96 -0
  109. package/dist/cli/utils/pid-manager.d.ts +34 -0
  110. package/dist/cli/utils/pid-manager.d.ts.map +1 -1
  111. package/dist/cli/utils/pid-manager.js +43 -0
  112. package/dist/cli/utils/port-allocator.d.ts +108 -0
  113. package/dist/cli/utils/port-allocator.d.ts.map +1 -0
  114. package/dist/cli/utils/port-allocator.js +166 -0
  115. package/dist/cli/utils/resource-resolvers.d.ts +92 -0
  116. package/dist/cli/utils/resource-resolvers.d.ts.map +1 -0
  117. package/dist/cli/utils/resource-resolvers.js +175 -0
  118. package/dist/cli/utils/worktree-detector.d.ts +82 -0
  119. package/dist/cli/utils/worktree-detector.d.ts.map +1 -0
  120. package/dist/cli/utils/worktree-detector.js +221 -0
  121. package/dist/lib/errors.d.ts +111 -0
  122. package/dist/lib/errors.d.ts.map +1 -0
  123. package/dist/lib/errors.js +153 -0
  124. package/dist/server/server.js +3 -0
  125. package/dist/server/src/cli/utils/install-context.js +96 -0
  126. package/dist/server/src/config/system-directories.js +40 -0
  127. package/dist/server/src/lib/auto-yes-manager.js +325 -0
  128. package/dist/server/src/lib/auto-yes-resolver.js +34 -0
  129. package/dist/server/src/lib/cli-patterns.js +6 -1
  130. package/dist/server/src/lib/db-instance.js +12 -2
  131. package/dist/server/src/lib/db-migrations.js +143 -1
  132. package/dist/server/src/lib/db-path-resolver.js +99 -0
  133. package/dist/server/src/lib/db.js +63 -0
  134. package/dist/server/src/lib/env.js +52 -3
  135. package/dist/server/src/lib/worktrees.js +36 -1
  136. package/dist/server/src/types/external-apps.js +20 -0
  137. package/package.json +1 -1
  138. package/.next/static/chunks/app/worktrees/[id]/page-8c6676303b63fdaf.js +0 -1
  139. /package/.next/static/{ntEU_tKhyyZ-FVJS5Em3L → gRNW5YXY43KqCKbCdaJoJ}/_buildManifest.js +0 -0
  140. /package/.next/static/{ntEU_tKhyyZ-FVJS5Em3L → gRNW5YXY43KqCKbCdaJoJ}/_ssgManifest.js +0 -0
@@ -1,19 +1,19 @@
1
- "use strict";(()=>{var e={};e.id=1746,e.ids=[1746],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},55315:e=>{e.exports=require("path")},5517:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>w,patchFetch:()=>D,requestAsyncStorage:()=>f,routeModule:()=>O,serverHooks:()=>m,staticGenerationAsyncStorage:()=>T});var o={};t.r(o),t.d(o,{GET:()=>M});var a=t(49303),s=t(88716),n=t(60670),i=t(87070),d=t(97425),l=t(75748),u=t(98636),c=t(20629),_=t.n(c),p=t(55315),C=t.n(p);async function M(e,{params:r}){try{let t=(0,d.n)();if(!(0,l.gU)(t,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=e.nextUrl?.searchParams,a=o?.get("cliTool")||"all",s=await (0,u.e7)(r.id,a),n=(await Promise.all(s.map(async e=>{let r=C().basename(e),t=await _().stat(e),o=e.split(C().sep),a=o[o.length-2];return{filename:r,cliToolId:a,size:t.size,modifiedAt:t.mtime.toISOString()}}))).map(e=>e.filename);return i.NextResponse.json(n,{status:200})}catch(e){return console.error("Error fetching log files:",e),i.NextResponse.json({error:"Failed to fetch log files"},{status:500})}}let O=new a.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/worktrees/[id]/logs/route",pathname:"/api/worktrees/[id]/logs",filename:"route",bundlePath:"app/api/worktrees/[id]/logs/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/logs/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:T,serverHooks:m}=O,w="/api/worktrees/[id]/logs/route";function D(){return(0,n.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:T})}},37848:(e,r,t)=>{t.d(r,{Hb:()=>i,LI:()=>d,dU:()=>l});var o=t(55315),a=t.n(o);let s={CM_ROOT_DIR:"MCBD_ROOT_DIR",CM_PORT:"MCBD_PORT",CM_BIND:"MCBD_BIND",CM_AUTH_TOKEN:"MCBD_AUTH_TOKEN",CM_LOG_LEVEL:"MCBD_LOG_LEVEL",CM_LOG_FORMAT:"MCBD_LOG_FORMAT",CM_LOG_DIR:"MCBD_LOG_DIR",CM_DB_PATH:"MCBD_DB_PATH"},n=new Set;function i(e){return function(e,r){let t=process.env[e];if(void 0!==t)return t;let o=process.env[r];if(void 0!==o)return n.has(r)||(console.warn(`[DEPRECATED] ${r} is deprecated, use ${e} instead`),n.add(r)),o}(e,s[e])}function d(){let e=i("CM_LOG_LEVEL")?.toLowerCase(),r=i("CM_LOG_FORMAT")?.toLowerCase();return{level:void 0!==e&&["debug","info","warn","error"].includes(e)?e:"info",format:"json"===r?"json":"text"}}function l(){let e=i("CM_ROOT_DIR")||process.cwd(),r=parseInt(i("CM_PORT")||"3000",10),t=i("CM_BIND")||"127.0.0.1",o=i("CM_AUTH_TOKEN"),s=i("CM_DB_PATH")||process.env.DATABASE_PATH||a().join(process.cwd(),"data","cm.db");if(!e)throw Error("CM_ROOT_DIR (or MCBD_ROOT_DIR) is required");if(isNaN(r)||r<1||r>65535)throw Error(`Invalid CM_PORT: ${i("CM_PORT")}. Must be between 1 and 65535.`);if("127.0.0.1"!==t&&"0.0.0.0"!==t&&"localhost"!==t)throw Error(`Invalid CM_BIND: ${t}. Must be '127.0.0.1', '0.0.0.0', or 'localhost'.`);if("0.0.0.0"===t&&!o)throw Error("CM_AUTH_TOKEN (or MCBD_AUTH_TOKEN) is required when CM_BIND=0.0.0.0");return{CM_ROOT_DIR:a().resolve(e),CM_PORT:r,CM_BIND:t,CM_AUTH_TOKEN:o,CM_DB_PATH:a().resolve(s)}}},98636:(e,r,t)=>{t.d(r,{e7:()=>_,xN:()=>c});var o=t(20629),a=t.n(o),s=t(55315),n=t.n(s),i=t(73853);let d=(0,t(37848).Hb)("CM_LOG_DIR")||n().join(process.cwd(),"data","logs");function l(e="claude"){return n().join(d,e)}async function u(e="claude"){let r=l(e);try{await a().access(r)}catch{await a().mkdir(r,{recursive:!0})}}async function c(e,r,t,o="claude"){await u(o);let s=function(e,r="claude"){let t=(0,i.WU)(new Date,"yyyy-MM-dd"),o=`${e}-${t}.md`,a=l(r);return n().join(a,o)}(e,o),d=(0,i.WU)(new Date,"yyyy-MM-dd HH:mm:ss"),c="";try{c=await a().readFile(s,"utf-8")}catch{let r="claude"===o?"Claude Code":"codex"===o?"Codex CLI":"Gemini CLI";c=`# ${r} Conversation Log: ${e}
1
+ "use strict";(()=>{var e={};e.id=1746,e.ids=[1746],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},5517:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>C,patchFetch:()=>v,requestAsyncStorage:()=>w,routeModule:()=>g,serverHooks:()=>y,staticGenerationAsyncStorage:()=>h});var a={};r.r(a),r.d(a,{GET:()=>x});var o=r(49303),i=r(88716),s=r(60670),n=r(87070),u=r(97425),d=r(75748),l=r(98636),c=r(20629),p=r.n(c),m=r(55315),f=r.n(m);async function x(e,{params:t}){try{let r=(0,u.n)();if(!(0,d.gU)(r,t.id))return n.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let a=e.nextUrl?.searchParams,o=a?.get("cliTool")||"all",i=await (0,l.e7)(t.id,o),s=(await Promise.all(i.map(async e=>{let t=f().basename(e),r=await p().stat(e),a=e.split(f().sep),o=a[a.length-2];return{filename:t,cliToolId:o,size:r.size,modifiedAt:r.mtime.toISOString()}}))).map(e=>e.filename);return n.NextResponse.json(s,{status:200})}catch(e){return console.error("Error fetching log files:",e),n.NextResponse.json({error:"Failed to fetch log files"},{status:500})}}let g=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/logs/route",pathname:"/api/worktrees/[id]/logs",filename:"route",bundlePath:"app/api/worktrees/[id]/logs/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/logs/route.ts",nextConfigOutput:"",userland:a}),{requestAsyncStorage:w,staticGenerationAsyncStorage:h,serverHooks:y}=g,C="/api/worktrees/[id]/logs/route";function v(){return(0,s.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:h})}},98636:(e,t,r)=>{r.d(t,{e7:()=>p,xN:()=>c});var a=r(20629),o=r.n(a),i=r(55315),s=r.n(i),n=r(73853);let u=(0,r(93346).Hb)("CM_LOG_DIR")||s().join(process.cwd(),"data","logs");function d(e="claude"){return s().join(u,e)}async function l(e="claude"){let t=d(e);try{await o().access(t)}catch{await o().mkdir(t,{recursive:!0})}}async function c(e,t,r,a="claude"){await l(a);let i=function(e,t="claude"){let r=(0,n.WU)(new Date,"yyyy-MM-dd"),a=`${e}-${r}.md`,o=d(t);return s().join(o,a)}(e,a),u=(0,n.WU)(new Date,"yyyy-MM-dd HH:mm:ss"),c="";try{c=await o().readFile(i,"utf-8")}catch{let t="claude"===a?"Claude Code":"codex"===a?"Codex CLI":"Gemini CLI";c=`# ${t} Conversation Log: ${e}
2
2
 
3
- Created: ${d}
3
+ Created: ${u}
4
4
 
5
5
  ---
6
6
 
7
- `}return c+=`## Conversation at ${d}
7
+ `}return c+=`## Conversation at ${u}
8
8
 
9
9
  ### User
10
10
 
11
- ${r}
11
+ ${t}
12
12
 
13
- ### ${"claude"===o?"Claude":"codex"===o?"Codex":"Gemini"}
13
+ ### ${"claude"===a?"Claude":"codex"===a?"Codex":"Gemini"}
14
14
 
15
- ${t}
15
+ ${r}
16
16
 
17
17
  ---
18
18
 
19
- `,await a().writeFile(s,c,"utf-8"),s}async function _(e,r="all"){let t=[];for(let o of"all"===r?["claude","codex","gemini"]:[r]){await u(o);let r=l(o);try{let o=(await a().readdir(r)).filter(r=>r.startsWith(`${e}-`)&&r.endsWith(".md")).map(e=>n().join(r,e));t.push(...o)}catch{}}return t.sort().reverse()}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,3853,7425],()=>t(5517));module.exports=o})();
19
+ `,await o().writeFile(i,c,"utf-8"),i}async function p(e,t="all"){let r=[];for(let a of"all"===t?["claude","codex","gemini"]:[t]){await l(a);let t=d(a);try{let a=(await o().readdir(t)).filter(t=>t.startsWith(`${e}-`)&&t.endsWith(".md")).map(e=>s().join(t,e));r.push(...a)}catch{}}return r.sort().reverse()}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8948,5972,3853,7425],()=>r(5517));module.exports=a})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=3114,e.ids=[3114],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},78818:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>h,patchFetch:()=>I,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>f,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{DELETE:()=>p,PUT:()=>d});var s=t(49303),n=t(88716),a=t(60670),m=t(87070),u=t(97425),i=t(75748);async function d(e,{params:r}){try{let t=(0,u.n)();if(!(0,i.gU)(t,r.id))return m.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(t,r.memoId))return m.NextResponse.json({error:`Memo '${r.memoId}' not found`},{status:404});let{title:o,content:s}=await e.json().catch(()=>({}));if(void 0!==o&&o.length>100)return m.NextResponse.json({error:"title must be 100 characters or less"},{status:400});if(void 0!==s&&s.length>1e4)return m.NextResponse.json({error:"content must be 10000 characters or less"},{status:400});(0,i.Nr)(t,r.memoId,{title:o,content:s});let n=(0,i.ZI)(t,r.memoId);return m.NextResponse.json({memo:n},{status:200})}catch(e){return console.error("Error updating memo:",e),m.NextResponse.json({error:"Failed to update memo"},{status:500})}}async function p(e,{params:r}){try{let e=(0,u.n)();if(!(0,i.gU)(e,r.id))return m.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(e,r.memoId))return m.NextResponse.json({error:`Memo '${r.memoId}' not found`},{status:404});return(0,i._e)(e,r.memoId),m.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error deleting memo:",e),m.NextResponse.json({error:"Failed to delete memo"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/memos/[memoId]/route",pathname:"/api/worktrees/[id]/memos/[memoId]",filename:"route",bundlePath:"app/api/worktrees/[id]/memos/[memoId]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/memos/[memoId]/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:x,serverHooks:f}=c,h="/api/worktrees/[id]/memos/[memoId]/route";function I(){return(0,a.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:x})}}};var r=require("../../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(78818));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=3114,e.ids=[3114],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},78818:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>h,patchFetch:()=>I,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>f,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{DELETE:()=>p,PUT:()=>d});var s=t(49303),n=t(88716),u=t(60670),a=t(87070),m=t(97425),i=t(75748);async function d(e,{params:r}){try{let t=(0,m.n)();if(!(0,i.gU)(t,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(t,r.memoId))return a.NextResponse.json({error:`Memo '${r.memoId}' not found`},{status:404});let{title:o,content:s}=await e.json().catch(()=>({}));if(void 0!==o&&o.length>100)return a.NextResponse.json({error:"title must be 100 characters or less"},{status:400});if(void 0!==s&&s.length>1e4)return a.NextResponse.json({error:"content must be 10000 characters or less"},{status:400});(0,i.Nr)(t,r.memoId,{title:o,content:s});let n=(0,i.ZI)(t,r.memoId);return a.NextResponse.json({memo:n},{status:200})}catch(e){return console.error("Error updating memo:",e),a.NextResponse.json({error:"Failed to update memo"},{status:500})}}async function p(e,{params:r}){try{let e=(0,m.n)();if(!(0,i.gU)(e,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(e,r.memoId))return a.NextResponse.json({error:`Memo '${r.memoId}' not found`},{status:404});return(0,i._e)(e,r.memoId),a.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error deleting memo:",e),a.NextResponse.json({error:"Failed to delete memo"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/memos/[memoId]/route",pathname:"/api/worktrees/[id]/memos/[memoId]",filename:"route",bundlePath:"app/api/worktrees/[id]/memos/[memoId]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/memos/[memoId]/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:x,serverHooks:f}=c,h="/api/worktrees/[id]/memos/[memoId]/route";function I(){return(0,u.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:x})}}};var r=require("../../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(78818));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=9532,e.ids=[9532],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},86868:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>g,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>h,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{GET:()=>d,POST:()=>m});var s=t(49303),n=t(88716),i=t(60670),a=t(87070),u=t(97425),p=t(75748);async function d(e,{params:r}){try{let e=(0,u.n)();if(!(0,p.gU)(e,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let t=(0,p.Db)(e,r.id);return a.NextResponse.json({memos:t},{status:200})}catch(e){return console.error("Error fetching memos:",e),a.NextResponse.json({error:"Failed to fetch memos"},{status:500})}}async function m(e,{params:r}){try{let t;let o=(0,u.n)();if(!(0,p.gU)(o,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let{title:s,content:n,position:i}=await e.json().catch(()=>({}));if(void 0!==s&&s.length>100)return a.NextResponse.json({error:"title must be 100 characters or less"},{status:400});if(void 0!==n&&n.length>1e4)return a.NextResponse.json({error:"content must be 10000 characters or less"},{status:400});let d=(0,p.Db)(o,r.id);if(d.length>=5)return a.NextResponse.json({error:"Maximum memo limit (5) reached"},{status:400});if(void 0!==i&&"number"==typeof i)t=i;else{let e=new Set(d.map(e=>e.position));for(t=0;e.has(t)&&t<5;)t++}let m=(0,p.dD)(o,r.id,{title:s,content:n,position:t});return a.NextResponse.json({memo:m},{status:201})}catch(e){return console.error("Error creating memo:",e),a.NextResponse.json({error:"Failed to create memo"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/memos/route",pathname:"/api/worktrees/[id]/memos",filename:"route",bundlePath:"app/api/worktrees/[id]/memos/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/memos/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:x,serverHooks:h}=c,f="/api/worktrees/[id]/memos/route";function g(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:x})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(86868));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=9532,e.ids=[9532],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},86868:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>f,patchFetch:()=>g,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>h,staticGenerationAsyncStorage:()=>x});var o={};t.r(o),t.d(o,{GET:()=>d,POST:()=>m});var s=t(49303),n=t(88716),i=t(60670),a=t(87070),u=t(97425),p=t(75748);async function d(e,{params:r}){try{let e=(0,u.n)();if(!(0,p.gU)(e,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let t=(0,p.Db)(e,r.id);return a.NextResponse.json({memos:t},{status:200})}catch(e){return console.error("Error fetching memos:",e),a.NextResponse.json({error:"Failed to fetch memos"},{status:500})}}async function m(e,{params:r}){try{let t;let o=(0,u.n)();if(!(0,p.gU)(o,r.id))return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let{title:s,content:n,position:i}=await e.json().catch(()=>({}));if(void 0!==s&&s.length>100)return a.NextResponse.json({error:"title must be 100 characters or less"},{status:400});if(void 0!==n&&n.length>1e4)return a.NextResponse.json({error:"content must be 10000 characters or less"},{status:400});let d=(0,p.Db)(o,r.id);if(d.length>=5)return a.NextResponse.json({error:"Maximum memo limit (5) reached"},{status:400});if(void 0!==i&&"number"==typeof i)t=i;else{let e=new Set(d.map(e=>e.position));for(t=0;e.has(t)&&t<5;)t++}let m=(0,p.dD)(o,r.id,{title:s,content:n,position:t});return a.NextResponse.json({memo:m},{status:201})}catch(e){return console.error("Error creating memo:",e),a.NextResponse.json({error:"Failed to create memo"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/memos/route",pathname:"/api/worktrees/[id]/memos",filename:"route",bundlePath:"app/api/worktrees/[id]/memos/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/memos/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:x,serverHooks:h}=c,f="/api/worktrees/[id]/memos/route";function g(){return(0,i.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:x})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(86868));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4552,e.ids=[4552],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},68360:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>m,serverHooks:()=>g,staticGenerationAsyncStorage:()=>c});var s={};r.r(s),r.d(s,{GET:()=>d});var o=r(49303),i=r(88716),a=r(60670),n=r(87070),u=r(97425),p=r(75748);async function d(e,{params:t}){try{let r=(0,u.n)();if(!(0,p.gU)(r,t.id))return n.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let{searchParams:s}=new URL(e.url),o=s.get("before"),i=s.get("limit"),a=s.get("cliTool"),d=o?new Date(o):void 0,m=i?parseInt(i,10):50;if(a&&!["claude","codex","gemini"].includes(a))return n.NextResponse.json({error:"Invalid cliTool parameter (must be claude, codex, or gemini)"},{status:400});if(isNaN(m)||m<1||m>100)return n.NextResponse.json({error:"Invalid limit parameter (must be 1-100)"},{status:400});let l=[...(0,p._U)(r,t.id,d,m,a).filter(e=>e.content&&""!==e.content.trim())].sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime());return n.NextResponse.json(l,{status:200})}catch(e){return console.error("Error fetching messages:",e),n.NextResponse.json({error:"Failed to fetch messages"},{status:500})}}let m=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/messages/route",pathname:"/api/worktrees/[id]/messages",filename:"route",bundlePath:"app/api/worktrees/[id]/messages/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/messages/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:c,serverHooks:g}=m,x="/api/worktrees/[id]/messages/route";function f(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:c})}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972,7425],()=>r(68360));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4552,e.ids=[4552],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},68360:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>f,requestAsyncStorage:()=>l,routeModule:()=>m,serverHooks:()=>g,staticGenerationAsyncStorage:()=>c});var s={};r.r(s),r.d(s,{GET:()=>d});var o=r(49303),i=r(88716),a=r(60670),n=r(87070),u=r(97425),p=r(75748);async function d(e,{params:t}){try{let r=(0,u.n)();if(!(0,p.gU)(r,t.id))return n.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let{searchParams:s}=new URL(e.url),o=s.get("before"),i=s.get("limit"),a=s.get("cliTool"),d=o?new Date(o):void 0,m=i?parseInt(i,10):50;if(a&&!["claude","codex","gemini"].includes(a))return n.NextResponse.json({error:"Invalid cliTool parameter (must be claude, codex, or gemini)"},{status:400});if(isNaN(m)||m<1||m>100)return n.NextResponse.json({error:"Invalid limit parameter (must be 1-100)"},{status:400});let l=[...(0,p._U)(r,t.id,d,m,a).filter(e=>e.content&&""!==e.content.trim())].sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime());return n.NextResponse.json(l,{status:200})}catch(e){return console.error("Error fetching messages:",e),n.NextResponse.json({error:"Failed to fetch messages"},{status:500})}}let m=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/messages/route",pathname:"/api/worktrees/[id]/messages",filename:"route",bundlePath:"app/api/worktrees/[id]/messages/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/messages/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:c,serverHooks:g}=m,x="/api/worktrees/[id]/messages/route";function f(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:c})}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972,7425],()=>r(68360));module.exports=s})();
@@ -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")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>h,patchFetch:()=>f,requestAsyncStorage:()=>x,routeModule:()=>m,serverHooks:()=>g,staticGenerationAsyncStorage:()=>w});var s={};t.r(s),t.d(s,{POST:()=>l});var o=t(49303),n=t(88716),i=t(60670),a=t(87070),p=t(97425),u=t(75748),d=t(10927),c=t(97213);async function l(e,{params:r}){try{let{answer:t,cliTool:s}=await e.json();if(!t)return a.NextResponse.json({error:"answer is required"},{status:400});let o=(0,p.n)(),n=(0,u.gU)(o,r.id);if(!n)return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let i=s||n.cliToolId||"claude",l=c.g.getInstance().getTool(i);if(!await l.isRunning(r.id))return a.NextResponse.json({error:`${l.name} session is not running`},{status:400});let m=l.getSessionName(r.id);try{await (0,d.Is)(m,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,d.Is)(m,"",!0)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return a.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return a.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 a.NextResponse.json({error:e},{status:500})}}let m=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:x,staticGenerationAsyncStorage:w,serverHooks:g}=m,h="/api/worktrees/[id]/prompt-response/route";function f(){return(0,i.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:w})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,7425,7213],()=>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")},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")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>h,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>m,serverHooks:()=>g,staticGenerationAsyncStorage:()=>w});var s={};t.r(s),t.d(s,{POST:()=>l});var o=t(49303),n=t(88716),i=t(60670),a=t(87070),p=t(97425),u=t(75748),d=t(10927),c=t(97213);async function l(e,{params:r}){try{let{answer:t,cliTool:s}=await e.json();if(!t)return a.NextResponse.json({error:"answer is required"},{status:400});let o=(0,p.n)(),n=(0,u.gU)(o,r.id);if(!n)return a.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let i=s||n.cliToolId||"claude",l=c.g.getInstance().getTool(i);if(!await l.isRunning(r.id))return a.NextResponse.json({error:`${l.name} session is not running`},{status:400});let m=l.getSessionName(r.id);try{await (0,d.Is)(m,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,d.Is)(m,"",!0)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return a.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return a.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 a.NextResponse.json({error:e},{status:500})}}let m=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:x,staticGenerationAsyncStorage:w,serverHooks:g}=m,h="/api/worktrees/[id]/prompt-response/route";function q(){return(0,i.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:w})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,7425,7213],()=>t(45762));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=4230,e.ids=[4230],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")},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")},1464:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>j,patchFetch:()=>R,requestAsyncStorage:()=>w,routeModule:()=>f,serverHooks:()=>h,staticGenerationAsyncStorage:()=>q});var s={};t.r(s),t.d(s,{POST:()=>g});var o=t(49303),n=t(88716),a=t(60670),i=t(87070),p=t(97425),u=t(75748),d=t(10927),l=t(97213),m=t(59991),c=t(63661),x=t(25079);async function g(e,{params:r}){try{let t;let{messageId:s,answer:o}=await e.json();if(!s||!o)return i.NextResponse.json({error:"messageId and answer are required"},{status:400});let n=(0,p.n)(),a=(0,u.S$)(n,s);if(!a)return i.NextResponse.json({error:"Message not found"},{status:404});if("prompt"!==a.messageType)return i.NextResponse.json({error:"Message is not a prompt"},{status:400});if(!a.promptData)return i.NextResponse.json({error:"Prompt data not found"},{status:400});if("answered"===a.promptData.status)return i.NextResponse.json({error:"Prompt already answered"},{status:400});if("multiple_choice"===a.promptData.type){let e=parseInt(o,10);if(isNaN(e))t=o;else{let r=a.promptData.options.map(e=>e.number);if(!r.includes(e))return i.NextResponse.json({error:`Invalid choice: ${o}. Valid options are: ${r.join(", ")}`},{status:400});t=e.toString()}}else try{t=(0,c.J)(o,a.promptData.type)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return i.NextResponse.json({error:`Invalid answer: ${e}`},{status:400})}let g={...a.promptData,status:"answered",answer:o,answeredAt:new Date().toISOString()};(0,u.GA)(n,s,g);let f=(0,u.gU)(n,r.id);if(!f)return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let w=a.cliToolId||f.cliToolId||"claude",q=l.g.getInstance().getTool(w),h=q.getSessionName(r.id);try{await (0,d.Is)(h,t,!1),console.log(`✓ Sent answer '${t}' to ${h} (${q.name})`),await new Promise(e=>setTimeout(e,100)),await (0,d.Is)(h,"",!0),console.log(`✓ Sent Enter to ${h}`)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return i.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}let j={...a,promptData:g};return(0,x.ps)("message_updated",{worktreeId:r.id,message:j}),(0,m.cn)(r.id,w),console.log(`✓ Resumed polling for ${r.id} (${w})`),i.NextResponse.json({success:!0,message:j})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return i.NextResponse.json({error:e},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/respond/route",pathname:"/api/worktrees/[id]/respond",filename:"route",bundlePath:"app/api/worktrees/[id]/respond/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/respond/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:q,serverHooks:h}=f,j="/api/worktrees/[id]/respond/route";function R(){return(0,a.patchFetch)({serverHooks:h,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,7213,1528,9723],()=>t(1464));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=4230,e.ids=[4230],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")},1464:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>j,patchFetch:()=>R,requestAsyncStorage:()=>w,routeModule:()=>f,serverHooks:()=>h,staticGenerationAsyncStorage:()=>q});var s={};t.r(s),t.d(s,{POST:()=>g});var o=t(49303),n=t(88716),a=t(60670),i=t(87070),p=t(97425),u=t(75748),d=t(10927),l=t(97213),m=t(59991),c=t(63661),x=t(25079);async function g(e,{params:r}){try{let t;let{messageId:s,answer:o}=await e.json();if(!s||!o)return i.NextResponse.json({error:"messageId and answer are required"},{status:400});let n=(0,p.n)(),a=(0,u.S$)(n,s);if(!a)return i.NextResponse.json({error:"Message not found"},{status:404});if("prompt"!==a.messageType)return i.NextResponse.json({error:"Message is not a prompt"},{status:400});if(!a.promptData)return i.NextResponse.json({error:"Prompt data not found"},{status:400});if("answered"===a.promptData.status)return i.NextResponse.json({error:"Prompt already answered"},{status:400});if("multiple_choice"===a.promptData.type){let e=parseInt(o,10);if(isNaN(e))t=o;else{let r=a.promptData.options.map(e=>e.number);if(!r.includes(e))return i.NextResponse.json({error:`Invalid choice: ${o}. Valid options are: ${r.join(", ")}`},{status:400});t=e.toString()}}else try{t=(0,c.J)(o,a.promptData.type)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return i.NextResponse.json({error:`Invalid answer: ${e}`},{status:400})}let g={...a.promptData,status:"answered",answer:o,answeredAt:new Date().toISOString()};(0,u.GA)(n,s,g);let f=(0,u.gU)(n,r.id);if(!f)return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let w=a.cliToolId||f.cliToolId||"claude",q=l.g.getInstance().getTool(w),h=q.getSessionName(r.id);try{await (0,d.Is)(h,t,!1),console.log(`✓ Sent answer '${t}' to ${h} (${q.name})`),await new Promise(e=>setTimeout(e,100)),await (0,d.Is)(h,"",!0),console.log(`✓ Sent Enter to ${h}`)}catch(r){let e=r instanceof Error?r.message:"Unknown error";return i.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}let j={...a,promptData:g};return(0,x.ps)("message_updated",{worktreeId:r.id,message:j}),(0,m.cn)(r.id,w),console.log(`✓ Resumed polling for ${r.id} (${w})`),i.NextResponse.json({success:!0,message:j})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return i.NextResponse.json({error:e},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/respond/route",pathname:"/api/worktrees/[id]/respond",filename:"route",bundlePath:"app/api/worktrees/[id]/respond/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/respond/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:q,serverHooks:h}=f,j="/api/worktrees/[id]/respond/route";function R(){return(0,a.patchFetch)({serverHooks:h,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,7213,1528,9723],()=>t(1464));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")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>R,patchFetch:()=>v,requestAsyncStorage:()=>k,routeModule:()=>f,serverHooks:()=>h,staticGenerationAsyncStorage:()=>w});var o={};r.r(o),r.d(o,{GET:()=>m,PATCH:()=>x});var i=r(49303),s=r(88716),n=r(60670),a=r(87070),u=r(97425),d=r(75748),p=r(97213),l=r(89194),c=r(19377),g=r(63661);async function m(e,{params:t}){try{let e=(0,u.n)(),r=(0,d.gU)(e,t.id);if(!r)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=p.g.getInstance(),i={},s=!1,n=!1,m=!1;for(let r of["claude","codex","gemini"]){let a=o.getTool(r),u=await a.isRunning(t.id),p=!1,x=!1;if(u)try{let o=await (0,l.NA)(t.id,r,100),i=(0,c.vp)(o),s=(0,g.F)(i);if(s.isPrompt)p=!0;else{let e=i.split("\n").filter(e=>""!==e.trim()).slice(-15).join("\n");(0,c.Wg)(r,e)?x=!0:/^[>❯]\s*$/m.test(e)||(x=!0)}!s.isPrompt&&(0,d._U)(e,t.id,void 0,10,r).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,d.GP)(e,t.id,r)}catch{x=!0}i[r]={isRunning:u,isWaitingForResponse:p,isProcessing:x},u&&(s=!0),p&&(n=!0),x&&(m=!0)}return a.NextResponse.json({...r,isSessionRunning:s,isWaitingForResponse:n,isProcessing:m,sessionStatusByCli:i},{status:200})}catch(e){return console.error("Error fetching worktree:",e),a.NextResponse.json({error:"Failed to fetch worktree"},{status:500})}}async function x(e,{params:t}){try{let r=(0,u.n)();if(!(0,d.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=await e.json();"description"in o&&(0,d.xr)(r,t.id,o.description),"link"in o&&(0,d.y)(r,t.id,o.link),"favorite"in o&&"boolean"==typeof o.favorite&&(0,d.R3)(r,t.id,o.favorite),"status"in o&&["todo","doing","done",null].includes(o.status)&&(0,d.Nf)(r,t.id,o.status),"cliToolId"in o&&["claude","codex","gemini"].includes(o.cliToolId)&&(0,d.VW)(r,t.id,o.cliToolId);let i=(0,d.gU)(r,t.id),s=p.g.getInstance(),n=i?.cliToolId||"claude",l=s.getTool(n),c=await l.isRunning(t.id);return a.NextResponse.json({...i,isSessionRunning:c},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let f=new i.AppRouteRouteModule({definition:{kind:s.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:o}),{requestAsyncStorage:k,staticGenerationAsyncStorage:w,serverHooks:h}=f,R="/api/worktrees/[id]/route";function v(){return(0,n.patchFetch)({serverHooks:h,staticGenerationAsyncStorage:w})}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425,7213,1528],()=>r(46769));module.exports=o})();
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")},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")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>R,requestAsyncStorage:()=>x,routeModule:()=>h,serverHooks:()=>v,staticGenerationAsyncStorage:()=>k});var o={};r.r(o),r.d(o,{GET:()=>f,PATCH:()=>w});var i=r(49303),n=r(88716),s=r(60670),a=r(87070),u=r(97425),d=r(75748),l=r(97213),c=r(89194),p=r(19377),g=r(63661),m=r(3979);async function f(e,{params:t}){try{let e;let r=(0,u.n)(),o=(0,d.gU)(r,t.id);if(!o)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let i=l.g.getInstance(),n={},s=!1,f=!1,w=!1;for(let e of["claude","codex","gemini"]){let o=i.getTool(e),a=await o.isRunning(t.id),u=!1,l=!1;if(a)try{let o=await (0,c.NA)(t.id,e,100),i=(0,p.vp)(o),n=(0,g.F)(i);if(n.isPrompt)u=!0;else{let t=i.split("\n").filter(e=>""!==e.trim()).slice(-15).join("\n");(0,p.Wg)(e,t)?l=!0:/^[>❯](\s*$|\s+\S)/m.test(t)||(l=!0)}!n.isPrompt&&(0,d._U)(r,t.id,void 0,10,e).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,d.GP)(r,t.id,e)}catch{l=!0}n[e]={isRunning:a,isWaitingForResponse:u,isProcessing:l},a&&(s=!0),u&&(f=!0),l&&(w=!0)}try{let i=(0,d.Q7)(r,t.id);e=await (0,m.v)(o.path,i)}catch(e){console.error("[GET /api/worktrees/:id] Failed to get git status:",e)}return a.NextResponse.json({...o,gitStatus:e,isSessionRunning:s,isWaitingForResponse:f,isProcessing:w,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 w(e,{params:t}){try{let r=(0,u.n)();if(!(0,d.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=await e.json();"description"in o&&(0,d.xr)(r,t.id,o.description),"link"in o&&(0,d.y)(r,t.id,o.link),"favorite"in o&&"boolean"==typeof o.favorite&&(0,d.R3)(r,t.id,o.favorite),"status"in o&&["todo","doing","done",null].includes(o.status)&&(0,d.Nf)(r,t.id,o.status),"cliToolId"in o&&["claude","codex","gemini"].includes(o.cliToolId)&&(0,d.VW)(r,t.id,o.cliToolId);let i=(0,d.gU)(r,t.id),n=l.g.getInstance(),s=i?.cliToolId||"claude",c=n.getTool(s),p=await c.isRunning(t.id);return a.NextResponse.json({...i,isSessionRunning:p},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let h=new i.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:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:k,serverHooks:v}=h,y="/api/worktrees/[id]/route";function R(){return(0,s.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:k})}},3979:(e,t,r)=>{r.d(t,{v:()=>s});var o=r(61282);let i=(0,r(21764).promisify)(o.execFile);async function n(e,t){try{let{stdout:r}=await i("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 o=await n(["rev-parse","--abbrev-ref","HEAD"],e);r=null===o?"(unknown)":"HEAD"===o?"(detached HEAD)":o;let i=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:i??"(unknown)",isDirty:null!==s&&s.length>0}}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425,7213,1528],()=>r(46769));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7601,e.ids=[7601],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},55315:e=>{e.exports=require("path")},19496:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>A,patchFetch:()=>O,requestAsyncStorage:()=>C,routeModule:()=>D,serverHooks:()=>R,staticGenerationAsyncStorage:()=>v});var n={};r.r(n),r.d(n,{GET:()=>M});var o=r(49303),s=r(88716),i=r(60670),a=r(87070),c=r(97425),u=r(75748),l=r(20629),d=r(55315),f=r(57440),p=r(18163);let m=[...r(81481).P7,".exe",".dll",".so",".dylib",".bin",".zip",".tar",".gz",".tar.gz",".tgz",".rar",".7z",".bz2",".xz",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".avi",".mov",".mkv",".wav",".flac",".ogg",".sqlite",".db",".o",".obj",".a",".lib",".class",".jar",".war",".pyc",".pyo",".wasm"];function h(e){return!!e&&0!==e.trim().length&&!(e.length>1e3)}async function g(e,t,r){let{query:n,maxResults:o=100,maxFileSize:s=p.bB.MAX_FILE_SIZE_PREVIEW,maxDepth:i=p.bB.MAX_DEPTH}=t;if(!h(n))return{results:[],totalMatches:0,truncated:!1};let a={results:[],totalMatches:0,truncated:!1,startTime:Date.now()},c={basePath:e,lowerQuery:n.toLowerCase(),maxDepth:i,maxResults:o,maxFileSize:s,signal:r};return await _(e,0,c,a),{results:a.results,totalMatches:a.totalMatches,truncated:a.truncated}}async function _(e,t,r,n){let o;let{basePath:s,maxDepth:i,maxResults:a,signal:c}=r;if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(!(t>i)){if(n.results.length>=a){n.truncated=!0;return}if((0,f.j)(e,s)){try{o=await (0,l.readdir)(e)}catch{return}for(let i of o){if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(n.results.length>=a){n.truncated=!0;return}if((0,p.bS)(i))continue;let o=(0,d.join)(e,i);if((0,f.j)(o,s))try{let e=await (0,l.lstat)(o);if(e.isSymbolicLink())continue;e.isDirectory()?await _(o,t+1,r,n):e.isFile()&&await w(o,i,e.size,r,n)}catch{continue}}}}}async function w(e,t,r,n,o){let s,i;let{basePath:a,lowerQuery:c,maxFileSize:u}=n;if(!(r>u||function(e){if(!e)return!1;let t=e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase();return m.includes(t)}((0,d.extname)(t)))){try{s=await (0,l.readFile)(e)}catch{return}if(!s.includes(0)){try{i=s.toString("utf-8")}catch{return}if(i.toLowerCase().includes(c)){let r=function(e,t){let r=e.split("\n"),n=t.toLowerCase(),o=[];for(let e=0;e<r.length;e++){let t=r[e];t.toLowerCase().includes(n)&&o.push({line:e+1,content:function(e,t=500){return e.length<=t?e:e.slice(0,t)+"..."}(t)})}return o}(i,c);if(r.length>0){let n=(0,d.relative)(a,e);o.results.push({filePath:n,fileName:(0,d.basename)(t),matches:r}),o.totalMatches+=r.length}}}}}class x extends Error{constructor(e="Search timed out"){super(e),this.name="SearchTimeoutError"}}async function y(e,t){let r=t.timeoutMs??5e3,n=new AbortController,o=setTimeout(()=>n.abort(),r),s=Date.now();try{let r=await g(e,t,n.signal),o=Date.now()-s;return{...r,executionTimeMs:o}}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)throw new x(`Search timed out after ${r}ms`);throw e}finally{clearTimeout(o)}}var E=r(43895);let T=(0,E.h)("api-search");async function M(e,{params:t}){let r=Date.now(),n=(0,E.Y)(),o=t.id,s=T.withContext({worktreeId:o,requestId:n});try{let t=e.nextUrl.searchParams,r=t.get("q")||"",n=t.get("mode")||"content";if("content"!==n)return s.warn("search:invalid-mode",{mode:n}),a.NextResponse.json({success:!1,error:{code:"INVALID_MODE",message:"Only mode=content is supported for API search"}},{status:400});if(!h(r))return s.warn("search:invalid-query",{queryLength:r.length}),a.NextResponse.json({success:!1,error:{code:"INVALID_QUERY",message:"Query cannot be empty or exceed 1000 characters"}},{status:400});let i=(0,c.n)(),l=(0,u.gU)(i,o);if(!l){let e=(0,p.dq)(o);return s.warn("search:worktree-not-found"),a.NextResponse.json({success:!1,error:{code:"WORKTREE_NOT_FOUND",message:e.error}},{status:e.status})}let d=await y(l.path,{query:r,maxResults:100,timeoutMs:5e3});return s.info("search:complete",{queryHash:Buffer.from(r).toString("base64").slice(0,8),executionTimeMs:d.executionTimeMs,resultCount:d.results.length,totalMatches:d.totalMatches,truncated:d.truncated}),a.NextResponse.json({success:!0,results:d.results,totalMatches:d.totalMatches,truncated:d.truncated,executionTimeMs:d.executionTimeMs})}catch(t){if(t instanceof x){let e=Date.now()-r;return s.warn("search:timeout",{executionTimeMs:e}),a.NextResponse.json({success:!1,error:{code:"SEARCH_TIMEOUT",message:"Search timed out. Try a more specific query."}},{status:408})}let e=Date.now()-r;return s.error("search:error",{error:t instanceof Error?t.message:"Unknown error",executionTimeMs:e}),a.NextResponse.json({success:!1,error:{code:"INTERNAL_ERROR",message:"An error occurred while searching"}},{status:500})}}let D=new o.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/worktrees/[id]/search/route",pathname:"/api/worktrees/[id]/search",filename:"route",bundlePath:"app/api/worktrees/[id]/search/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/search/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:C,staticGenerationAsyncStorage:v,serverHooks:R}=D,A="/api/worktrees/[id]/search/route";function O(){return(0,i.patchFetch)({serverHooks:R,staticGenerationAsyncStorage:v})}},81481:(e,t,r)=>{r.d(t,{Db:()=>a,Kc:()=>i,P7:()=>n,gp:()=>c});let n=[".png",".jpg",".jpeg",".gif",".webp",".svg"],o=[{extension:".png",mimeType:"image/png",magicBytes:[137,80,78,71]},{extension:".jpg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".jpeg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".gif",mimeType:"image/gif",magicBytes:[71,73,70,56]},{extension:".webp",mimeType:"image/webp",magicBytes:[82,73,70,70]},{extension:".svg",mimeType:"image/svg+xml"}];function s(e){return e?e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase():""}function i(e){let t=s(e),r=o.find(e=>e.extension===t);return r?.mimeType||"application/octet-stream"}function a(e){if(!e)return!1;let t=s(e);return n.includes(t)}function c(e,t){if(t.length>5242880)return{valid:!1,error:"File size exceeds 5MB limit"};if(".svg"===s(e)){var r;return(r=t.toString("utf-8")).includes("<svg")||r.startsWith("<?xml")?/<script[\s>]/i.test(r)?{valid:!1,error:"SVG contains script tags"}:/\s+on\w+\s*=/i.test(r)?{valid:!1,error:"SVG contains event handler attributes"}:/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(r)?{valid:!1,error:"SVG contains dangerous URI scheme"}:/<foreignObject[\s>]/i.test(r)?{valid:!1,error:"SVG contains foreignObject element"}:{valid:!0}:{valid:!1,error:"Invalid SVG format"}}return!function(e,t){let r=s(e),n=o.find(e=>e.extension===r);if(!n?.magicBytes)return".svg"===r;let i=n.magicBytesOffset||0;return!(t.length<i+n.magicBytes.length)&&n.magicBytes.every((e,r)=>t[i+r]===e)}(e,t)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}},37848:(e,t,r)=>{r.d(t,{Hb:()=>a,LI:()=>c,dU:()=>u});var n=r(55315),o=r.n(n);let s={CM_ROOT_DIR:"MCBD_ROOT_DIR",CM_PORT:"MCBD_PORT",CM_BIND:"MCBD_BIND",CM_AUTH_TOKEN:"MCBD_AUTH_TOKEN",CM_LOG_LEVEL:"MCBD_LOG_LEVEL",CM_LOG_FORMAT:"MCBD_LOG_FORMAT",CM_LOG_DIR:"MCBD_LOG_DIR",CM_DB_PATH:"MCBD_DB_PATH"},i=new Set;function a(e){return function(e,t){let r=process.env[e];if(void 0!==r)return r;let n=process.env[t];if(void 0!==n)return i.has(t)||(console.warn(`[DEPRECATED] ${t} is deprecated, use ${e} instead`),i.add(t)),n}(e,s[e])}function c(){let e=a("CM_LOG_LEVEL")?.toLowerCase(),t=a("CM_LOG_FORMAT")?.toLowerCase();return{level:void 0!==e&&["debug","info","warn","error"].includes(e)?e:"info",format:"json"===t?"json":"text"}}function u(){let e=a("CM_ROOT_DIR")||process.cwd(),t=parseInt(a("CM_PORT")||"3000",10),r=a("CM_BIND")||"127.0.0.1",n=a("CM_AUTH_TOKEN"),s=a("CM_DB_PATH")||process.env.DATABASE_PATH||o().join(process.cwd(),"data","cm.db");if(!e)throw Error("CM_ROOT_DIR (or MCBD_ROOT_DIR) is required");if(isNaN(t)||t<1||t>65535)throw Error(`Invalid CM_PORT: ${a("CM_PORT")}. Must be between 1 and 65535.`);if("127.0.0.1"!==r&&"0.0.0.0"!==r&&"localhost"!==r)throw Error(`Invalid CM_BIND: ${r}. Must be '127.0.0.1', '0.0.0.0', or 'localhost'.`);if("0.0.0.0"===r&&!n)throw Error("CM_AUTH_TOKEN (or MCBD_AUTH_TOKEN) is required when CM_BIND=0.0.0.0");return{CM_ROOT_DIR:o().resolve(e),CM_PORT:t,CM_BIND:r,CM_AUTH_TOKEN:n,CM_DB_PATH:o().resolve(s)}}},18163:(e,t,r)=>{r.d(t,{GT:()=>l,Lu:()=>u,W:()=>f,bB:()=>i,bS:()=>a,dq:()=>d});var n=r(20629),o=r(55315);let s=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],i={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of s){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function c(e){try{return(await (0,n.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function u(e,t=""){let r;let s=t?(0,o.join)(e,t):e;try{r=await (0,n.stat)(s)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let u=await (0,n.readdir)(s),l=[];for(let e of u){if(a(e))continue;let t=(0,o.join)(s,e);try{let r=await (0,n.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await c(t);l.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,o.extname)(e),n={name:e,type:"file",size:r.size};t&&t.length>1&&(n.extension=t.slice(1)),l.push(n)}}catch{continue}if(l.length>=i.MAX_ITEMS_PER_DIR)break}let d=[...l].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),f=null;if(t){let e=(0,o.dirname)(t);f="."===e?"":e}return{path:t,name:t?(0,o.basename)(t):"",items:d,parentPath:f}}function l(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function d(e){return{error:`Worktree '${e}' not found`,status:404}}function f(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}},43895:(e,t,r)=>{r.d(t,{Y:()=>c,h:()=>u});var n=r(37848);let o=[{pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,replacement:"Bearer [REDACTED]"},{pattern:/(password|passwd|pwd)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/(token|secret|api_key|apikey|auth)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/CM_AUTH_TOKEN=\S+/gi,replacement:"CM_AUTH_TOKEN=[REDACTED]"},{pattern:/MCBD_AUTH_TOKEN=\S+/gi,replacement:"MCBD_AUTH_TOKEN=[REDACTED]"},{pattern:/Authorization:\s*\S+/gi,replacement:"Authorization: [REDACTED]"},{pattern:/-----BEGIN\s+\w+\s+PRIVATE\s+KEY-----[\s\S]*?-----END\s+\w+\s+PRIVATE\s+KEY-----/g,replacement:"[SSH_KEY_REDACTED]"}],s=/password|secret|token|key|auth/i,i={debug:0,info:1,warn:2,error:3};function a(e,t,r,a,c){let u=(0,n.LI)().level;if(i[e]<i[u])return;let l=a?function e(t){if("string"==typeof t){let e=t;for(let{pattern:t,replacement:r}of o)e=e.replace(t,r);return e}if("object"==typeof t&&null!==t){if(Array.isArray(t))return t.map(e);let r={};for(let[n,o]of Object.entries(t))s.test(n)?r[n]="[REDACTED]":r[n]=e(o);return r}return t}(a):void 0,d=function(e){if("json"===(0,n.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:o,action:s,data:i,worktreeId:a,cliToolId:c,requestId:u}=e,l=[a,c].filter(Boolean),d=l.length>0?` [${l.join(":")}]`:"",f=u?` (${u.slice(0,8)})`:"",p=i?` ${JSON.stringify(i)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${f} ${s}${p}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...c,...l&&{data:l}});switch(e){case"error":console.error(d);break;case"warn":console.warn(d);break;default:console.log(d)}}function c(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function u(e){let t=r=>({debug:(t,n)=>a("debug",e,t,n,r),info:(t,n)=>a("info",e,t,n,r),warn:(t,n)=>a("warn",e,t,n,r),error:(t,n)=>a("error",e,t,n,r),withContext:e=>t({...r,...e})});return t()}},57440:(e,t,r)=>{r.d(t,{j:()=>s});var n=r(55315),o=r.n(n);function s(e,t){if(!e||""===e.trim()||e.includes("\0"))return!1;let r=e;try{r=decodeURIComponent(e)}catch{r=e}if(r.includes("\0"))return!1;let n=o().resolve(t),s=o().resolve(t,r),i=o().relative(n,s);return!(i.startsWith("..")||o().isAbsolute(i))}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,5972,7425],()=>r(19496));module.exports=n})();
1
+ "use strict";(()=>{var e={};e.id=7601,e.ids=[7601],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},19496:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>R,patchFetch:()=>_,requestAsyncStorage:()=>A,routeModule:()=>D,serverHooks:()=>M,staticGenerationAsyncStorage:()=>S});var n={};r.r(n),r.d(n,{GET:()=>T});var o=r(49303),s=r(88716),i=r(60670),a=r(87070),c=r(97425),u=r(75748),l=r(20629),d=r(55315),f=r(57440),p=r(18163);let m=[...r(81481).P7,".exe",".dll",".so",".dylib",".bin",".zip",".tar",".gz",".tar.gz",".tgz",".rar",".7z",".bz2",".xz",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".avi",".mov",".mkv",".wav",".flac",".ogg",".sqlite",".db",".o",".obj",".a",".lib",".class",".jar",".war",".pyc",".pyo",".wasm"];function h(e){return!!e&&0!==e.trim().length&&!(e.length>1e3)}async function g(e,t,r){let{query:n,maxResults:o=100,maxFileSize:s=p.bB.MAX_FILE_SIZE_PREVIEW,maxDepth:i=p.bB.MAX_DEPTH}=t;if(!h(n))return{results:[],totalMatches:0,truncated:!1};let a={results:[],totalMatches:0,truncated:!1,startTime:Date.now()},c={basePath:e,lowerQuery:n.toLowerCase(),maxDepth:i,maxResults:o,maxFileSize:s,signal:r};return await x(e,0,c,a),{results:a.results,totalMatches:a.totalMatches,truncated:a.truncated}}async function x(e,t,r,n){let o;let{basePath:s,maxDepth:i,maxResults:a,signal:c}=r;if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(!(t>i)){if(n.results.length>=a){n.truncated=!0;return}if((0,f.j)(e,s)){try{o=await (0,l.readdir)(e)}catch{return}for(let i of o){if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(n.results.length>=a){n.truncated=!0;return}if((0,p.bS)(i))continue;let o=(0,d.join)(e,i);if((0,f.j)(o,s))try{let e=await (0,l.lstat)(o);if(e.isSymbolicLink())continue;e.isDirectory()?await x(o,t+1,r,n):e.isFile()&&await y(o,i,e.size,r,n)}catch{continue}}}}}async function y(e,t,r,n,o){let s,i;let{basePath:a,lowerQuery:c,maxFileSize:u}=n;if(!(r>u||function(e){if(!e)return!1;let t=e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase();return m.includes(t)}((0,d.extname)(t)))){try{s=await (0,l.readFile)(e)}catch{return}if(!s.includes(0)){try{i=s.toString("utf-8")}catch{return}if(i.toLowerCase().includes(c)){let r=function(e,t){let r=e.split("\n"),n=t.toLowerCase(),o=[];for(let e=0;e<r.length;e++){let t=r[e];t.toLowerCase().includes(n)&&o.push({line:e+1,content:function(e,t=500){return e.length<=t?e:e.slice(0,t)+"..."}(t)})}return o}(i,c);if(r.length>0){let n=(0,d.relative)(a,e);o.results.push({filePath:n,fileName:(0,d.basename)(t),matches:r}),o.totalMatches+=r.length}}}}}class w extends Error{constructor(e="Search timed out"){super(e),this.name="SearchTimeoutError"}}async function E(e,t){let r=t.timeoutMs??5e3,n=new AbortController,o=setTimeout(()=>n.abort(),r),s=Date.now();try{let r=await g(e,t,n.signal),o=Date.now()-s;return{...r,executionTimeMs:o}}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)throw new w(`Search timed out after ${r}ms`);throw e}finally{clearTimeout(o)}}var v=r(43895);let b=(0,v.h)("api-search");async function T(e,{params:t}){let r=Date.now(),n=(0,v.Y)(),o=t.id,s=b.withContext({worktreeId:o,requestId:n});try{let t=e.nextUrl.searchParams,r=t.get("q")||"",n=t.get("mode")||"content";if("content"!==n)return s.warn("search:invalid-mode",{mode:n}),a.NextResponse.json({success:!1,error:{code:"INVALID_MODE",message:"Only mode=content is supported for API search"}},{status:400});if(!h(r))return s.warn("search:invalid-query",{queryLength:r.length}),a.NextResponse.json({success:!1,error:{code:"INVALID_QUERY",message:"Query cannot be empty or exceed 1000 characters"}},{status:400});let i=(0,c.n)(),l=(0,u.gU)(i,o);if(!l){let e=(0,p.dq)(o);return s.warn("search:worktree-not-found"),a.NextResponse.json({success:!1,error:{code:"WORKTREE_NOT_FOUND",message:e.error}},{status:e.status})}let d=await E(l.path,{query:r,maxResults:100,timeoutMs:5e3});return s.info("search:complete",{queryHash:Buffer.from(r).toString("base64").slice(0,8),executionTimeMs:d.executionTimeMs,resultCount:d.results.length,totalMatches:d.totalMatches,truncated:d.truncated}),a.NextResponse.json({success:!0,results:d.results,totalMatches:d.totalMatches,truncated:d.truncated,executionTimeMs:d.executionTimeMs})}catch(t){if(t instanceof w){let e=Date.now()-r;return s.warn("search:timeout",{executionTimeMs:e}),a.NextResponse.json({success:!1,error:{code:"SEARCH_TIMEOUT",message:"Search timed out. Try a more specific query."}},{status:408})}let e=Date.now()-r;return s.error("search:error",{error:t instanceof Error?t.message:"Unknown error",executionTimeMs:e}),a.NextResponse.json({success:!1,error:{code:"INTERNAL_ERROR",message:"An error occurred while searching"}},{status:500})}}let D=new o.AppRouteRouteModule({definition:{kind:s.x.APP_ROUTE,page:"/api/worktrees/[id]/search/route",pathname:"/api/worktrees/[id]/search",filename:"route",bundlePath:"app/api/worktrees/[id]/search/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/search/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:A,staticGenerationAsyncStorage:S,serverHooks:M}=D,R="/api/worktrees/[id]/search/route";function _(){return(0,i.patchFetch)({serverHooks:M,staticGenerationAsyncStorage:S})}},81481:(e,t,r)=>{r.d(t,{Db:()=>a,Kc:()=>i,P7:()=>n,gp:()=>c});let n=[".png",".jpg",".jpeg",".gif",".webp",".svg"],o=[{extension:".png",mimeType:"image/png",magicBytes:[137,80,78,71]},{extension:".jpg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".jpeg",mimeType:"image/jpeg",magicBytes:[255,216,255]},{extension:".gif",mimeType:"image/gif",magicBytes:[71,73,70,56]},{extension:".webp",mimeType:"image/webp",magicBytes:[82,73,70,70]},{extension:".svg",mimeType:"image/svg+xml"}];function s(e){return e?e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase():""}function i(e){let t=s(e),r=o.find(e=>e.extension===t);return r?.mimeType||"application/octet-stream"}function a(e){if(!e)return!1;let t=s(e);return n.includes(t)}function c(e,t){if(t.length>5242880)return{valid:!1,error:"File size exceeds 5MB limit"};if(".svg"===s(e)){var r;return(r=t.toString("utf-8")).includes("<svg")||r.startsWith("<?xml")?/<script[\s>]/i.test(r)?{valid:!1,error:"SVG contains script tags"}:/\s+on\w+\s*=/i.test(r)?{valid:!1,error:"SVG contains event handler attributes"}:/(?:xlink:)?href\s*=\s*["']?\s*(?:javascript|data|vbscript):/i.test(r)?{valid:!1,error:"SVG contains dangerous URI scheme"}:/<foreignObject[\s>]/i.test(r)?{valid:!1,error:"SVG contains foreignObject element"}:{valid:!0}:{valid:!1,error:"Invalid SVG format"}}return!function(e,t){let r=s(e),n=o.find(e=>e.extension===r);if(!n?.magicBytes)return".svg"===r;let i=n.magicBytesOffset||0;return!(t.length<i+n.magicBytes.length)&&n.magicBytes.every((e,r)=>t[i+r]===e)}(e,t)?{valid:!1,error:"Invalid image magic bytes"}:{valid:!0}}},18163:(e,t,r)=>{r.d(t,{GT:()=>l,Lu:()=>u,W:()=>f,bB:()=>i,bS:()=>a,dq:()=>d});var n=r(20629),o=r(55315);let s=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],i={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of s){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function c(e){try{return(await (0,n.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function u(e,t=""){let r;let s=t?(0,o.join)(e,t):e;try{r=await (0,n.stat)(s)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let u=await (0,n.readdir)(s),l=[];for(let e of u){if(a(e))continue;let t=(0,o.join)(s,e);try{let r=await (0,n.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await c(t);l.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,o.extname)(e),n={name:e,type:"file",size:r.size};t&&t.length>1&&(n.extension=t.slice(1)),l.push(n)}}catch{continue}if(l.length>=i.MAX_ITEMS_PER_DIR)break}let d=[...l].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),f=null;if(t){let e=(0,o.dirname)(t);f="."===e?"":e}return{path:t,name:t?(0,o.basename)(t):"",items:d,parentPath:f}}function l(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function d(e){return{error:`Worktree '${e}' not found`,status:404}}function f(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}},43895:(e,t,r)=>{r.d(t,{Y:()=>c,h:()=>u});var n=r(93346);let o=[{pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,replacement:"Bearer [REDACTED]"},{pattern:/(password|passwd|pwd)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/(token|secret|api_key|apikey|auth)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]"},{pattern:/CM_AUTH_TOKEN=\S+/gi,replacement:"CM_AUTH_TOKEN=[REDACTED]"},{pattern:/MCBD_AUTH_TOKEN=\S+/gi,replacement:"MCBD_AUTH_TOKEN=[REDACTED]"},{pattern:/Authorization:\s*\S+/gi,replacement:"Authorization: [REDACTED]"},{pattern:/-----BEGIN\s+\w+\s+PRIVATE\s+KEY-----[\s\S]*?-----END\s+\w+\s+PRIVATE\s+KEY-----/g,replacement:"[SSH_KEY_REDACTED]"}],s=/password|secret|token|key|auth/i,i={debug:0,info:1,warn:2,error:3};function a(e,t,r,a,c){let u=(0,n.LI)().level;if(i[e]<i[u])return;let l=a?function e(t){if("string"==typeof t){let e=t;for(let{pattern:t,replacement:r}of o)e=e.replace(t,r);return e}if("object"==typeof t&&null!==t){if(Array.isArray(t))return t.map(e);let r={};for(let[n,o]of Object.entries(t))s.test(n)?r[n]="[REDACTED]":r[n]=e(o);return r}return t}(a):void 0,d=function(e){if("json"===(0,n.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:o,action:s,data:i,worktreeId:a,cliToolId:c,requestId:u}=e,l=[a,c].filter(Boolean),d=l.length>0?` [${l.join(":")}]`:"",f=u?` (${u.slice(0,8)})`:"",p=i?` ${JSON.stringify(i)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${f} ${s}${p}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...c,...l&&{data:l}});switch(e){case"error":console.error(d);break;case"warn":console.warn(d);break;default:console.log(d)}}function c(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function u(e){let t=r=>({debug:(t,n)=>a("debug",e,t,n,r),info:(t,n)=>a("info",e,t,n,r),warn:(t,n)=>a("warn",e,t,n,r),error:(t,n)=>a("error",e,t,n,r),withContext:e=>t({...r,...e})});return t()}},57440:(e,t,r)=>{r.d(t,{j:()=>s});var n=r(55315),o=r.n(n);function s(e,t){if(!e||""===e.trim()||e.includes("\0"))return!1;let r=e;try{r=decodeURIComponent(e)}catch{r=e}if(r.includes("\0"))return!1;let n=o().resolve(t),s=o().resolve(t,r),i=o().relative(n,s);return!(i.startsWith("..")||o().isAbsolute(i))}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,5972,7425],()=>r(19496));module.exports=n})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=2702,e.ids=[2702],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")},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")},41306:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>j,patchFetch:()=>k,requestAsyncStorage:()=>v,routeModule:()=>R,serverHooks:()=>y,staticGenerationAsyncStorage:()=>w});var s={};r.r(s),r.d(s,{POST:()=>q});var n=r(49303),o=r(88716),i=r(60670),a=r(87070),u=r(97425),l=r(75748),d=r(97213),p=r(59991),c=r(89194),m=r(25079),g=r(19377);let f=[/^[╭╮╰╯│─\s]+$/,/Claude Code v[\d.]+/,/^─{10,}$/,/^❯\s*$/,/^\s*$/,/CLAUDE_HOOKS_/,/\/bin\/claude/,/@.*\s+%/,/localhost/,/:3000/,/curl.*POST/,/export\s+/,/Tips for getting started/,/Welcome back/,/\?\s*for shortcuts/];async function x(e,t,r,s){try{let n;let o=(0,l.zl)(e,t,r),i=o?.lastCapturedLine||0;try{n=await (0,c.NA)(t,r,1e4)}catch{return console.log(`[savePendingAssistantResponse] Failed to capture session output for ${t}`),null}if(!n)return null;let a=n.split("\n"),u=a.length,{bufferReset:d,reason:x}=u>0&&i>25&&u+25<i?{bufferReset:!0,reason:"shrink"}:u>0&&i>50&&u<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};if(d&&console.log(`[savePendingAssistantResponse] Buffer reset detected (${x}): current=${u}, last=${i}`),!d&&u<=i)return console.log(`[savePendingAssistantResponse] No new output (current: ${u}, last: ${i})`),null;let h=a.slice(d?0:i).join("\n"),$="claude"===r?function(e,t){if(!e||""===e.trim())return"";if("claude"!==t)return e.trim();let r=(0,g.vp)(e).split("\n"),s=r.length;for(let e=r.length-1;e>=0;e--)if(/^❯\s+\S/.test(r[e])){s=e;break}return r.slice(0,s).filter(e=>{let t=e.trim();return!!t&&!f.some(e=>e.test(t))}).join("\n").trim()}(h,r):function(e,t){switch(t){case"claude":return(0,p.ci)(e);case"gemini":return(0,p.RJ)(e);default:return e.trim()}}(h,r);if(!$||""===$.trim())return(0,l.IH)(e,t,r,u),console.log(`[savePendingAssistantResponse] Cleaned response is empty, updating position to ${u}`),null;let q=new Date(s.getTime()-1),R=(0,l.tn)(e,{worktreeId:t,role:"assistant",content:$,messageType:"normal",timestamp:q,cliToolId:r});return(0,l.IH)(e,t,r,u),(0,m.ps)("message",{worktreeId:t,message:R}),console.log(`[savePendingAssistantResponse] Saved assistant response (lines ${i}-${u})`),R}catch(e){return console.error("[savePendingAssistantResponse] Error:",e),null}}let h=["claude","codex","gemini"];function $(e){return e instanceof Error?e.message:"Unknown error"}async function q(e,{params:t}){try{let r=(0,u.n)(),s=(0,l.gU)(r,t.id);if(!s)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let n=await e.json();if(!n.content||"string"!=typeof n.content||""===n.content.trim())return a.NextResponse.json({error:"Message content is required and must be a non-empty string"},{status:400});let o=n.cliToolId||s.cliToolId||"claude";if(!h.includes(o))return a.NextResponse.json({error:`Invalid CLI tool ID: ${o}. Must be one of: ${h.join(", ")}`},{status:400});let i=d.g.getInstance().getTool(o);if(!await i.isInstalled())return a.NextResponse.json({error:`${i.name} is not installed. Please install it first.`},{status:503});if(!await i.isRunning(t.id))try{await i.startSession(t.id,s.path)}catch(e){return console.error(`Failed to start ${i.name} session:`,e),a.NextResponse.json({error:`Failed to start ${i.name} session: ${$(e)}`},{status:500})}let c=new Date;try{await x(r,t.id,o,c)}catch(e){console.error("[send] Failed to save pending assistant response:",e)}try{await i.sendMessage(t.id,n.content)}catch(e){return console.error(`Failed to send message to ${i.name}:`,e),a.NextResponse.json({error:`Failed to send message to ${i.name}: ${$(e)}`},{status:500})}let m=(0,l.tn)(r,{worktreeId:t.id,role:"user",content:n.content,messageType:"normal",timestamp:c,cliToolId:o});return(0,l.OK)(r,t.id,n.content,c),(0,l.Mf)(r,t.id,o),console.log(`✓ Cleared in-progress message for ${t.id} (${o})`),(0,p.cn)(t.id,o),a.NextResponse.json(m,{status:201})}catch(e){return console.error("Error sending message:",e),a.NextResponse.json({error:"Failed to send message"},{status:500})}}let R=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/send/route",pathname:"/api/worktrees/[id]/send",filename:"route",bundlePath:"app/api/worktrees/[id]/send/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/send/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:v,staticGenerationAsyncStorage:w,serverHooks:y}=R,j="/api/worktrees/[id]/send/route";function k(){return(0,i.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:w})}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972,3853,4893,7425,7213,1528,9723],()=>r(41306));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=2702,e.ids=[2702],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")},41306:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>A,patchFetch:()=>b,requestAsyncStorage:()=>y,routeModule:()=>q,serverHooks:()=>k,staticGenerationAsyncStorage:()=>R});var s={};r.r(s),r.d(s,{POST:()=>$});var n=r(49303),o=r(88716),i=r(60670),a=r(87070),l=r(97425),u=r(75748),c=r(97213),d=r(59991),p=r(89194),m=r(25079),g=r(19377);let f=[/^[╭╮╰╯│─\s]+$/,/Claude Code v[\d.]+/,/^─{10,}$/,/^❯\s*$/,/^\s*$/,/CLAUDE_HOOKS_/,/\/bin\/claude/,/@.*\s+%/,/localhost/,/:3000/,/curl.*POST/,/export\s+/,/Tips for getting started/,/Welcome back/,/\?\s*for shortcuts/];async function h(e,t,r,s){try{let n;let o=(0,u.zl)(e,t,r),i=o?.lastCapturedLine||0;try{n=await (0,p.NA)(t,r,1e4)}catch{return console.log(`[savePendingAssistantResponse] Failed to capture session output for ${t}`),null}if(!n)return null;let a=n.split("\n"),l=a.length,{bufferReset:c,reason:h}=l>0&&i>25&&l+25<i?{bufferReset:!0,reason:"shrink"}:l>0&&i>50&&l<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};if(c&&console.log(`[savePendingAssistantResponse] Buffer reset detected (${h}): current=${l}, last=${i}`),!c&&l<=i)return console.log(`[savePendingAssistantResponse] No new output (current: ${l}, last: ${i})`),null;let x=a.slice(c?0:i).join("\n"),w="claude"===r?function(e,t){if(!e||""===e.trim())return"";if("claude"!==t)return e.trim();let r=(0,g.vp)(e).split("\n"),s=r.length;for(let e=r.length-1;e>=0;e--)if(/^❯\s+\S/.test(r[e])){s=e;break}return r.slice(0,s).filter(e=>{let t=e.trim();return!!t&&!f.some(e=>e.test(t))}).join("\n").trim()}(x,r):function(e,t){switch(t){case"claude":return(0,d.ci)(e);case"gemini":return(0,d.RJ)(e);default:return e.trim()}}(x,r);if(!w||""===w.trim())return(0,u.IH)(e,t,r,l),console.log(`[savePendingAssistantResponse] Cleaned response is empty, updating position to ${l}`),null;let v=new Date(s.getTime()-1),$=(0,u.tn)(e,{worktreeId:t,role:"assistant",content:w,messageType:"normal",timestamp:v,cliToolId:r});return(0,u.IH)(e,t,r,l),(0,m.ps)("message",{worktreeId:t,message:$}),console.log(`[savePendingAssistantResponse] Saved assistant response (lines ${i}-${l})`),$}catch(e){return console.error("[savePendingAssistantResponse] Error:",e),null}}var x=r(3979);let w=["claude","codex","gemini"];function v(e){return e instanceof Error?e.message:"Unknown error"}async function $(e,{params:t}){try{let r=(0,l.n)(),s=(0,u.gU)(r,t.id);if(!s)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let n=await e.json();if(!n.content||"string"!=typeof n.content||""===n.content.trim())return a.NextResponse.json({error:"Message content is required and must be a non-empty string"},{status:400});let o=n.cliToolId||s.cliToolId||"claude";if(!w.includes(o))return a.NextResponse.json({error:`Invalid CLI tool ID: ${o}. Must be one of: ${w.join(", ")}`},{status:400});let i=c.g.getInstance().getTool(o);if(!await i.isInstalled())return a.NextResponse.json({error:`${i.name} is not installed. Please install it first.`},{status:503});if(!await i.isRunning(t.id))try{await i.startSession(t.id,s.path);let e=(0,u.Q7)(r,t.id);if(null===e)try{let e=await (0,x.v)(s.path,null);"(unknown)"!==e.currentBranch&&"(detached HEAD)"!==e.currentBranch&&((0,u.Ek)(r,t.id,e.currentBranch),console.log(`[send] Saved initial branch for ${t.id}: ${e.currentBranch}`))}catch(e){console.error("[send] Failed to get/save initial branch:",e)}}catch(e){return console.error(`Failed to start ${i.name} session:`,e),a.NextResponse.json({error:`Failed to start ${i.name} session: ${v(e)}`},{status:500})}let p=new Date;try{await h(r,t.id,o,p)}catch(e){console.error("[send] Failed to save pending assistant response:",e)}try{await i.sendMessage(t.id,n.content)}catch(e){return console.error(`Failed to send message to ${i.name}:`,e),a.NextResponse.json({error:`Failed to send message to ${i.name}: ${v(e)}`},{status:500})}let m=(0,u.tn)(r,{worktreeId:t.id,role:"user",content:n.content,messageType:"normal",timestamp:p,cliToolId:o});return(0,u.OK)(r,t.id,n.content,p),(0,u.Mf)(r,t.id,o),console.log(`✓ Cleared in-progress message for ${t.id} (${o})`),(0,d.cn)(t.id,o),a.NextResponse.json(m,{status:201})}catch(e){return console.error("Error sending message:",e),a.NextResponse.json({error:"Failed to send message"},{status:500})}}let q=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/send/route",pathname:"/api/worktrees/[id]/send",filename:"route",bundlePath:"app/api/worktrees/[id]/send/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/send/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:y,staticGenerationAsyncStorage:R,serverHooks:k}=q,A="/api/worktrees/[id]/send/route";function b(){return(0,i.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:R})}},3979:(e,t,r)=>{r.d(t,{v:()=>i});var s=r(61282);let n=(0,r(21764).promisify)(s.execFile);async function o(e,t){try{let{stdout:r}=await n("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 i(e,t){let r;let s=await o(["rev-parse","--abbrev-ref","HEAD"],e);r=null===s?"(unknown)":"HEAD"===s?"(detached HEAD)":s;let n=await o(["rev-parse","--short","HEAD"],e),i=await o(["status","--porcelain"],e);return{currentBranch:r,initialBranch:t,isBranchMismatch:null!==t&&"(unknown)"!==r&&"(detached HEAD)"!==r&&r!==t,commitHash:n??"(unknown)",isDirty:null!==i&&i.length>0}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972,3853,4893,7425,7213,1528,9723],()=>r(41306));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7479,e.ids=[7479],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},88424:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>h,routeModule:()=>f,serverHooks:()=>w,staticGenerationAsyncStorage:()=>g});var a={};r.r(a),r.d(a,{GET:()=>p});var n=r(49303),o=r(88716),s=r(60670),d=r(87070),i=r(97425),c=r(75748),l=r(53013),u=r(38056);let m=[{name:"clear",description:"Clear conversation history",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"compact",description:"Compact context to reduce token usage",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"resume",description:"Resume previous conversation",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"rewind",description:"Rewind to previous conversation state",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"config",description:"Open configuration settings",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"model",description:"Switch AI model",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"permissions",description:"View or update tool permissions",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"status",description:"Check session status",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"context",description:"Show context window usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"cost",description:"Display token and cost usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"review",description:"Review code changes",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"pr-comments",description:"Show PR comments",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"help",description:"Show all available commands",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"doctor",description:"Check installation health",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"export",description:"Export conversation history",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"todos",description:"Show TODO list",category:"standard-util",isStandard:!0,source:"standard",filePath:""}];async function p(e,{params:t}){try{var r;let{id:e}=await t,a=(0,i.n)(),n=(0,c.gU)(a,e);if(!n)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(r=n.path)||""===r.trim()||r.includes(".."))&&r.startsWith("/")&&(function(){let e=process.env.ALLOWED_WORKTREE_PATHS;return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):["/Users","/home","/var","/tmp","/opt"]})().some(e=>r.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${e}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let o=(0,u.Xr)(m),s=[];try{s=await (0,l.HL)(n.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),s=[]}let p=(0,u.Nw)(o,s),f=m.length,h=(0,u.SU)(s);return d.NextResponse.json({groups:p,sources:{standard:f,worktree:h,mcbd:0}})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let f=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/slash-commands/route",pathname:"/api/worktrees/[id]/slash-commands",filename:"route",bundlePath:"app/api/worktrees/[id]/slash-commands/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/slash-commands/route.ts",nextConfigOutput:"",userland:a}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:w}=f,v="/api/worktrees/[id]/slash-commands/route";function y(){return(0,s.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:g})}},38056:(e,t,r)=>{r.d(t,{Nw:()=>s,SU:()=>d,Xr:()=>o});var a=r(35835);let n=["planning","development","review","documentation","workflow","standard-session","standard-config","standard-monitor","standard-git","standard-util"];function o(e){if(0===e.length)return[];let t=new Map;for(let r of e){let e=t.get(r.category)||[];e.push(r),t.set(r.category,e)}let r=[];for(let e of n){let n=t.get(e);n&&n.length>0&&r.push({category:e,label:a.H[e],commands:n})}for(let[e,o]of t)!n.includes(e)&&o.length>0&&r.push({category:e,label:a.H[e]||e,commands:o});return r}function s(e,t){let r=new Map;for(let t of e)for(let e of t.commands)r.set(e.name,{...e,source:e.source||"standard"});for(let e of t)for(let t of e.commands)r.set(t.name,{...t,source:t.source||"worktree"});return o(Array.from(r.values()))}function d(e){return e.reduce((e,t)=>e+t.commands.length,0)}},53013:(e,t,r)=>{r.d(t,{HL:()=>u});var a=r(92048),n=r(55315),o=r(3673),s=r.n(o),d=r(35835),i=r(38056);let c=null;async function l(e){let t=function(e){let t=e||process.cwd();return n.join(t,".claude","commands")}(e);if(!a.existsSync(t))return console.warn(`Commands directory not found: ${t}`),[];let r=a.readdirSync(t).filter(e=>e.endsWith(".md")),o=[];for(let e of r){let r=function(e){try{let t=a.readFileSync(e,"utf-8"),{data:r}=s()(t),o=n.basename(e,".md"),i=d.c[o]||"workflow";return{name:o,description:r.description||"",category:i,model:r.model,filePath:n.relative(process.cwd(),e)}}catch(t){return console.error(`Error parsing command file ${e}:`,t),null}}(n.join(t,e));r&&o.push(r)}return o.sort((e,t)=>e.name.localeCompare(t.name)),c=o,o}async function u(e){let t=e?await l(e):c||await l();return(0,i.Xr)(t)}},35835:(e,t,r)=>{r.d(t,{H:()=>a,c:()=>n});let a={planning:"Planning",development:"Development",review:"Review",documentation:"Documentation",workflow:"Workflow","standard-session":"Standard (Session)","standard-config":"Standard (Config)","standard-monitor":"Standard (Monitor)","standard-git":"Standard (Git)","standard-util":"Standard (Utility)"},n={"work-plan":"planning","issue-create":"planning","issue-split":"planning","design-policy":"planning","tdd-impl":"development","bug-fix":"development",refactoring:"development","architecture-review":"review","acceptance-test":"review","progress-report":"documentation","create-pr":"workflow","pm-auto-dev":"workflow"}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8948,5972,3673,7425],()=>r(88424));module.exports=a})();
1
+ "use strict";(()=>{var e={};e.id=7479,e.ids=[7479],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},88424:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>h,routeModule:()=>f,serverHooks:()=>w,staticGenerationAsyncStorage:()=>g});var a={};r.r(a),r.d(a,{GET:()=>p});var n=r(49303),o=r(88716),s=r(60670),d=r(87070),i=r(97425),c=r(75748),l=r(53013),u=r(38056);let m=[{name:"clear",description:"Clear conversation history",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"compact",description:"Compact context to reduce token usage",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"resume",description:"Resume previous conversation",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"rewind",description:"Rewind to previous conversation state",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"config",description:"Open configuration settings",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"model",description:"Switch AI model",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"permissions",description:"View or update tool permissions",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"status",description:"Check session status",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"context",description:"Show context window usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"cost",description:"Display token and cost usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"review",description:"Review code changes",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"pr-comments",description:"Show PR comments",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"help",description:"Show all available commands",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"doctor",description:"Check installation health",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"export",description:"Export conversation history",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"todos",description:"Show TODO list",category:"standard-util",isStandard:!0,source:"standard",filePath:""}];async function p(e,{params:t}){try{var r;let{id:e}=await t,a=(0,i.n)(),n=(0,c.gU)(a,e);if(!n)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(r=n.path)||""===r.trim()||r.includes(".."))&&r.startsWith("/")&&(function(){let e=process.env.ALLOWED_WORKTREE_PATHS;return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):["/Users","/home","/var","/tmp","/opt"]})().some(e=>r.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${e}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let o=(0,u.Xr)(m),s=[];try{s=await (0,l.HL)(n.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),s=[]}let p=(0,u.Nw)(o,s),f=m.length,h=(0,u.SU)(s);return d.NextResponse.json({groups:p,sources:{standard:f,worktree:h,mcbd:0}})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let f=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/slash-commands/route",pathname:"/api/worktrees/[id]/slash-commands",filename:"route",bundlePath:"app/api/worktrees/[id]/slash-commands/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/slash-commands/route.ts",nextConfigOutput:"",userland:a}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:w}=f,v="/api/worktrees/[id]/slash-commands/route";function y(){return(0,s.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:g})}},38056:(e,t,r)=>{r.d(t,{Nw:()=>s,SU:()=>d,Xr:()=>o});var a=r(35835);let n=["planning","development","review","documentation","workflow","standard-session","standard-config","standard-monitor","standard-git","standard-util"];function o(e){if(0===e.length)return[];let t=new Map;for(let r of e){let e=t.get(r.category)||[];e.push(r),t.set(r.category,e)}let r=[];for(let e of n){let n=t.get(e);n&&n.length>0&&r.push({category:e,label:a.H[e],commands:n})}for(let[e,o]of t)!n.includes(e)&&o.length>0&&r.push({category:e,label:a.H[e]||e,commands:o});return r}function s(e,t){let r=new Map;for(let t of e)for(let e of t.commands)r.set(e.name,{...e,source:e.source||"standard"});for(let e of t)for(let t of e.commands)r.set(t.name,{...t,source:t.source||"worktree"});return o(Array.from(r.values()))}function d(e){return e.reduce((e,t)=>e+t.commands.length,0)}},53013:(e,t,r)=>{r.d(t,{HL:()=>u});var a=r(92048),n=r(55315),o=r(3673),s=r.n(o),d=r(35835),i=r(38056);let c=null;async function l(e){let t=function(e){let t=e||process.cwd();return n.join(t,".claude","commands")}(e);if(!a.existsSync(t))return console.warn(`Commands directory not found: ${t}`),[];let r=a.readdirSync(t).filter(e=>e.endsWith(".md")),o=[];for(let e of r){let r=function(e){try{let t=a.readFileSync(e,"utf-8"),{data:r}=s()(t),o=n.basename(e,".md"),i=d.c[o]||"workflow";return{name:o,description:r.description||"",category:i,model:r.model,filePath:n.relative(process.cwd(),e)}}catch(t){return console.error(`Error parsing command file ${e}:`,t),null}}(n.join(t,e));r&&o.push(r)}return o.sort((e,t)=>e.name.localeCompare(t.name)),c=o,o}async function u(e){let t=e?await l(e):c||await l();return(0,i.Xr)(t)}},35835:(e,t,r)=>{r.d(t,{H:()=>a,c:()=>n});let a={planning:"Planning",development:"Development",review:"Review",documentation:"Documentation",workflow:"Workflow","standard-session":"Standard (Session)","standard-config":"Standard (Config)","standard-monitor":"Standard (Monitor)","standard-git":"Standard (Git)","standard-util":"Standard (Utility)"},n={"work-plan":"planning","issue-create":"planning","issue-split":"planning","design-policy":"planning","tdd-impl":"development","bug-fix":"development",refactoring:"development","architecture-review":"review","acceptance-test":"review","progress-report":"documentation","create-pr":"workflow","pm-auto-dev":"workflow"}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8948,5972,3673,7425],()=>r(88424));module.exports=a})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=9086,e.ids=[9086],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")},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")},51057:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>f,requestAsyncStorage:()=>x,routeModule:()=>c,serverHooks:()=>q,staticGenerationAsyncStorage:()=>g});var o={};t.r(o),t.d(o,{POST:()=>d});var s=t(49303),i=t(88716),n=t(60670),p=t(87070),a=t(97425),u=t(75748),l=t(59991);async function d(e,{params:r}){try{let t=(0,a.n)();if(!(0,u.gU)(t,r.id))return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=await e.json(),s=["claude","codex","gemini"];if(!o.cliToolId||!s.includes(o.cliToolId))return p.NextResponse.json({error:`Invalid CLI tool ID. Must be one of: ${s.join(", ")}`},{status:400});return console.log(`[API] Manually starting polling for ${r.id} (${o.cliToolId})`),(0,l.cn)(r.id,o.cliToolId),p.NextResponse.json({success:!0,message:`Started polling for ${o.cliToolId} session`})}catch(e){return console.error("Error starting polling:",e),p.NextResponse.json({error:"Failed to start polling"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/start-polling/route",pathname:"/api/worktrees/[id]/start-polling",filename:"route",bundlePath:"app/api/worktrees/[id]/start-polling/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/start-polling/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:g,serverHooks:q}=c,m="/api/worktrees/[id]/start-polling/route";function f(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:g})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,3853,4893,7425,7213,1528,9723],()=>t(51057));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=9086,e.ids=[9086],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")},51057:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>f,requestAsyncStorage:()=>x,routeModule:()=>c,serverHooks:()=>q,staticGenerationAsyncStorage:()=>g});var o={};t.r(o),t.d(o,{POST:()=>d});var s=t(49303),i=t(88716),n=t(60670),p=t(87070),u=t(97425),a=t(75748),l=t(59991);async function d(e,{params:r}){try{let t=(0,u.n)();if(!(0,a.gU)(t,r.id))return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=await e.json(),s=["claude","codex","gemini"];if(!o.cliToolId||!s.includes(o.cliToolId))return p.NextResponse.json({error:`Invalid CLI tool ID. Must be one of: ${s.join(", ")}`},{status:400});return console.log(`[API] Manually starting polling for ${r.id} (${o.cliToolId})`),(0,l.cn)(r.id,o.cliToolId),p.NextResponse.json({success:!0,message:`Started polling for ${o.cliToolId} session`})}catch(e){return console.error("Error starting polling:",e),p.NextResponse.json({error:"Failed to start polling"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/start-polling/route",pathname:"/api/worktrees/[id]/start-polling",filename:"route",bundlePath:"app/api/worktrees/[id]/start-polling/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/start-polling/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:g,serverHooks:q}=c,m="/api/worktrees/[id]/start-polling/route";function f(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:g})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,3853,4893,7425,7213,1528,9723],()=>t(51057));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=8347,e.ids=[8347],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},55315:e=>{e.exports=require("path")},74097:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>x,requestAsyncStorage:()=>f,routeModule:()=>h,serverHooks:()=>y,staticGenerationAsyncStorage:()=>m});var o={};r.r(o),r.d(o,{GET:()=>p});var n=r(49303),i=r(88716),s=r(60670),a=r(87070),u=r(97425),d=r(75748),c=r(18163),l=r(57440);async function p(e,{params:t}){try{let e=(0,u.n)(),r=(0,d.gU)(e,t.id);if(!r){let e=(0,c.dq)(t.id);return a.NextResponse.json({error:e.error},{status:e.status})}let o=t.path.join("/");if(t.path.some(e=>{let t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e);return(0,c.bS)(t)})){let e=(0,c.W)("Path contains excluded pattern");return a.NextResponse.json({error:e.error},{status:e.status})}if(!(0,l.j)(o,r.path)){let e=(0,c.W)("Invalid path");return a.NextResponse.json({error:e.error},{status:e.status})}let n=await (0,c.Lu)(r.path,o);return a.NextResponse.json(n)}catch(t){console.error("Error reading directory:",t);let e=(0,c.GT)(t);return a.NextResponse.json({error:e.error},{status:e.status})}}let h=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/tree/[...path]/route",pathname:"/api/worktrees/[id]/tree/[...path]",filename:"route",bundlePath:"app/api/worktrees/[id]/tree/[...path]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/tree/[...path]/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:m,serverHooks:y}=h,v="/api/worktrees/[id]/tree/[...path]/route";function x(){return(0,s.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:m})}},18163:(e,t,r)=>{r.d(t,{GT:()=>c,Lu:()=>d,W:()=>p,bB:()=>s,bS:()=>a,dq:()=>l});var o=r(20629),n=r(55315);let i=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],s={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of i){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function u(e){try{return(await (0,o.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function d(e,t=""){let r;let i=t?(0,n.join)(e,t):e;try{r=await (0,o.stat)(i)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let d=await (0,o.readdir)(i),c=[];for(let e of d){if(a(e))continue;let t=(0,n.join)(i,e);try{let r=await (0,o.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await u(t);c.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,n.extname)(e),o={name:e,type:"file",size:r.size};t&&t.length>1&&(o.extension=t.slice(1)),c.push(o)}}catch{continue}if(c.length>=s.MAX_ITEMS_PER_DIR)break}let l=[...c].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),p=null;if(t){let e=(0,n.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,n.basename)(t):"",items:l,parentPath:p}}function c(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function l(e){return{error:`Worktree '${e}' not found`,status:404}}function p(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}},57440:(e,t,r)=>{r.d(t,{j:()=>i});var o=r(55315),n=r.n(o);function i(e,t){if(!e||""===e.trim()||e.includes("\0"))return!1;let r=e;try{r=decodeURIComponent(e)}catch{r=e}if(r.includes("\0"))return!1;let o=n().resolve(t),i=n().resolve(t,r),s=n().relative(o,i);return!(s.startsWith("..")||n().isAbsolute(s))}}};var t=require("../../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425],()=>r(74097));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=8347,e.ids=[8347],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},74097:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>x,requestAsyncStorage:()=>f,routeModule:()=>h,serverHooks:()=>y,staticGenerationAsyncStorage:()=>m});var o={};r.r(o),r.d(o,{GET:()=>p});var n=r(49303),i=r(88716),s=r(60670),a=r(87070),u=r(97425),d=r(75748),c=r(18163),l=r(57440);async function p(e,{params:t}){try{let e=(0,u.n)(),r=(0,d.gU)(e,t.id);if(!r){let e=(0,c.dq)(t.id);return a.NextResponse.json({error:e.error},{status:e.status})}let o=t.path.join("/");if(t.path.some(e=>{let t=function(e){try{return decodeURIComponent(e)}catch{return e}}(e);return(0,c.bS)(t)})){let e=(0,c.W)("Path contains excluded pattern");return a.NextResponse.json({error:e.error},{status:e.status})}if(!(0,l.j)(o,r.path)){let e=(0,c.W)("Invalid path");return a.NextResponse.json({error:e.error},{status:e.status})}let n=await (0,c.Lu)(r.path,o);return a.NextResponse.json(n)}catch(t){console.error("Error reading directory:",t);let e=(0,c.GT)(t);return a.NextResponse.json({error:e.error},{status:e.status})}}let h=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/tree/[...path]/route",pathname:"/api/worktrees/[id]/tree/[...path]",filename:"route",bundlePath:"app/api/worktrees/[id]/tree/[...path]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/tree/[...path]/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:m,serverHooks:y}=h,v="/api/worktrees/[id]/tree/[...path]/route";function x(){return(0,s.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:m})}},18163:(e,t,r)=>{r.d(t,{GT:()=>c,Lu:()=>d,W:()=>p,bB:()=>s,bS:()=>a,dq:()=>l});var o=r(20629),n=r(55315);let i=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],s={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of i){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function u(e){try{return(await (0,o.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function d(e,t=""){let r;let i=t?(0,n.join)(e,t):e;try{r=await (0,o.stat)(i)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let d=await (0,o.readdir)(i),c=[];for(let e of d){if(a(e))continue;let t=(0,n.join)(i,e);try{let r=await (0,o.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await u(t);c.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,n.extname)(e),o={name:e,type:"file",size:r.size};t&&t.length>1&&(o.extension=t.slice(1)),c.push(o)}}catch{continue}if(c.length>=s.MAX_ITEMS_PER_DIR)break}let l=[...c].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),p=null;if(t){let e=(0,n.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,n.basename)(t):"",items:l,parentPath:p}}function c(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function l(e){return{error:`Worktree '${e}' not found`,status:404}}function p(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}},57440:(e,t,r)=>{r.d(t,{j:()=>i});var o=r(55315),n=r.n(o);function i(e,t){if(!e||""===e.trim()||e.includes("\0"))return!1;let r=e;try{r=decodeURIComponent(e)}catch{r=e}if(r.includes("\0"))return!1;let o=n().resolve(t),i=n().resolve(t,r),s=n().relative(o,i);return!(s.startsWith("..")||n().isAbsolute(s))}}};var t=require("../../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425],()=>r(74097));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=6392,e.ids=[6392],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},55315:e=>{e.exports=require("path")},36658:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>w,requestAsyncStorage:()=>f,routeModule:()=>p,serverHooks:()=>m,staticGenerationAsyncStorage:()=>h});var o={};r.r(o),r.d(o,{GET:()=>l});var n=r(49303),i=r(88716),s=r(60670),a=r(87070),u=r(97425),d=r(75748),c=r(18163);async function l(e,{params:t}){try{let e=(0,u.n)(),r=(0,d.gU)(e,t.id);if(!r){let e=(0,c.dq)(t.id);return a.NextResponse.json({error:e.error},{status:e.status})}let o=await (0,c.Lu)(r.path);return a.NextResponse.json(o)}catch(t){console.error("Error reading directory:",t);let e=(0,c.GT)(t);return a.NextResponse.json({error:e.error},{status:e.status})}}let p=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/tree/route",pathname:"/api/worktrees/[id]/tree",filename:"route",bundlePath:"app/api/worktrees/[id]/tree/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/tree/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:h,serverHooks:m}=p,y="/api/worktrees/[id]/tree/route";function w(){return(0,s.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:h})}},18163:(e,t,r)=>{r.d(t,{GT:()=>c,Lu:()=>d,W:()=>p,bB:()=>s,bS:()=>a,dq:()=>l});var o=r(20629),n=r(55315);let i=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],s={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of i){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function u(e){try{return(await (0,o.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function d(e,t=""){let r;let i=t?(0,n.join)(e,t):e;try{r=await (0,o.stat)(i)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let d=await (0,o.readdir)(i),c=[];for(let e of d){if(a(e))continue;let t=(0,n.join)(i,e);try{let r=await (0,o.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await u(t);c.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,n.extname)(e),o={name:e,type:"file",size:r.size};t&&t.length>1&&(o.extension=t.slice(1)),c.push(o)}}catch{continue}if(c.length>=s.MAX_ITEMS_PER_DIR)break}let l=[...c].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),p=null;if(t){let e=(0,n.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,n.basename)(t):"",items:l,parentPath:p}}function c(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function l(e){return{error:`Worktree '${e}' not found`,status:404}}function p(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425],()=>r(36658));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=6392,e.ids=[6392],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},36658:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>y,patchFetch:()=>x,requestAsyncStorage:()=>f,routeModule:()=>p,serverHooks:()=>m,staticGenerationAsyncStorage:()=>h});var o={};r.r(o),r.d(o,{GET:()=>l});var n=r(49303),i=r(88716),s=r(60670),a=r(87070),u=r(97425),d=r(75748),c=r(18163);async function l(e,{params:t}){try{let e=(0,u.n)(),r=(0,d.gU)(e,t.id);if(!r){let e=(0,c.dq)(t.id);return a.NextResponse.json({error:e.error},{status:e.status})}let o=await (0,c.Lu)(r.path);return a.NextResponse.json(o)}catch(t){console.error("Error reading directory:",t);let e=(0,c.GT)(t);return a.NextResponse.json({error:e.error},{status:e.status})}}let p=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/tree/route",pathname:"/api/worktrees/[id]/tree",filename:"route",bundlePath:"app/api/worktrees/[id]/tree/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/tree/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:f,staticGenerationAsyncStorage:h,serverHooks:m}=p,y="/api/worktrees/[id]/tree/route";function x(){return(0,s.patchFetch)({serverHooks:m,staticGenerationAsyncStorage:h})}},18163:(e,t,r)=>{r.d(t,{GT:()=>c,Lu:()=>d,W:()=>p,bB:()=>s,bS:()=>a,dq:()=>l});var o=r(20629),n=r(55315);let i=[".git",".env",".env.*","node_modules",".DS_Store","Thumbs.db","*.pem","*.key",".env.local",".env.development",".env.production",".env.test"],s={MAX_ITEMS_PER_DIR:500,MAX_DEPTH:10,MAX_FILE_SIZE_PREVIEW:1048576};function a(e){for(let t of i){if(t===e)return!0;if(t.startsWith("*.")){let r=t.slice(1);if(e.endsWith(r))return!0}if(t.endsWith(".*")){let r=t.slice(0,-2);if(e.startsWith(r+"."))return!0}}return!1}async function u(e){try{return(await (0,o.readdir)(e)).filter(e=>!a(e)).length}catch{return 0}}async function d(e,t=""){let r;let i=t?(0,n.join)(e,t):e;try{r=await (0,o.stat)(i)}catch{throw Error(`Directory not found: ${t||"(root)"}`)}if(!r.isDirectory())throw Error(`Path is not a directory: ${t}`);let d=await (0,o.readdir)(i),c=[];for(let e of d){if(a(e))continue;let t=(0,n.join)(i,e);try{let r=await (0,o.lstat)(t);if(r.isSymbolicLink())continue;if(r.isDirectory()){let r=await u(t);c.push({name:e,type:"directory",itemCount:r})}else if(r.isFile()){let t=(0,n.extname)(e),o={name:e,type:"file",size:r.size};t&&t.length>1&&(o.extension=t.slice(1)),c.push(o)}}catch{continue}if(c.length>=s.MAX_ITEMS_PER_DIR)break}let l=[...c].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.toLowerCase().localeCompare(t.name.toLowerCase())),p=null;if(t){let e=(0,n.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,n.basename)(t):"",items:l,parentPath:p}}function c(e){let t=e instanceof Error?e.message:"Unknown error";return t.includes("not found")?{error:"Directory not found",status:404}:t.includes("not a directory")?{error:"Path is not a directory",status:400}:{error:"Failed to read directory",status:500}}function l(e){return{error:`Worktree '${e}' not found`,status:404}}function p(e="Invalid path"){return{error:`Access denied: ${e}`,status:403}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425],()=>r(36658));module.exports=o})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=1210,e.ids=[1210],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},55315:e=>{e.exports=require("path")},14276:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>w,patchFetch:()=>L,requestAsyncStorage:()=>g,routeModule:()=>N,serverHooks:()=>_,staticGenerationAsyncStorage:()=>T});var i={};r.r(i),r.d(i,{POST:()=>E});var a=r(49303),n=r(88716),o=r(60670),s=r(87070),l=r(97425),p=r(75748),u=r(55315),m=r(57440),d=r(68585);let c=[{extension:".png",maxFileSize:5242880,allowedMimeTypes:["image/png"],magicBytes:[{bytes:[137,80,78,71,13,10,26,10]}]},{extension:".jpg",maxFileSize:5242880,allowedMimeTypes:["image/jpeg"],magicBytes:[{bytes:[255,216,255]}]},{extension:".jpeg",maxFileSize:5242880,allowedMimeTypes:["image/jpeg"],magicBytes:[{bytes:[255,216,255]}]},{extension:".gif",maxFileSize:5242880,allowedMimeTypes:["image/gif"],magicBytes:[{bytes:[71,73,70,56,55,97]},{bytes:[71,73,70,56,57,97]}]},{extension:".webp",maxFileSize:5242880,allowedMimeTypes:["image/webp"],magicBytes:[{bytes:[82,73,70,70],offset:0}]},{extension:".txt",maxFileSize:5242880,allowedMimeTypes:["text/plain"]},{extension:".log",maxFileSize:5242880,allowedMimeTypes:["text/plain"]},{extension:".md",maxFileSize:5242880,allowedMimeTypes:["text/markdown","text/plain"]},{extension:".csv",maxFileSize:5242880,allowedMimeTypes:["text/csv"]},{extension:".json",maxFileSize:5242880,allowedMimeTypes:["application/json"]},{extension:".yaml",maxFileSize:5242880,allowedMimeTypes:["text/yaml","application/x-yaml"]},{extension:".yml",maxFileSize:5242880,allowedMimeTypes:["text/yaml","application/x-yaml"]}],I=c.map(e=>e.extension);function y(e){let t=e.toLowerCase();return c.find(e=>e.extension===t)}let x={FILE_NOT_FOUND:404,WORKTREE_NOT_FOUND:404,PERMISSION_DENIED:403,INVALID_PATH:400,INVALID_REQUEST:400,FILE_EXISTS:409,DISK_FULL:507,INTERNAL_ERROR:500,INVALID_EXTENSION:400,INVALID_MIME_TYPE:400,INVALID_MAGIC_BYTES:400,FILE_TOO_LARGE:413,INVALID_FILENAME:400,INVALID_FILE_CONTENT:400};function f(e,t,r=500){if("string"==typeof e){let i=x[e]??r;return s.NextResponse.json({success:!1,error:{code:e,message:t}},{status:i})}let i=e.error?.code??"INTERNAL_ERROR",a=e.error?.message??"Unknown error",n=x[i]??r;return s.NextResponse.json({success:!1,error:{code:i,message:a}},{status:n})}async function E(e,{params:t}){try{let i;let a=(0,l.n)(),n=(0,p.gU)(a,t.id);if(!n)return f("WORKTREE_NOT_FOUND","Worktree not found");let o=t.path.join("/"),c=(0,u.normalize)(o);if(!(0,m.j)(c,n.path))return f("INVALID_PATH","Invalid file path");try{i=await e.formData()}catch{return f("INVALID_REQUEST","Invalid form data",400)}let x=i.get("file");if(!x||!(x instanceof File))return f("INVALID_REQUEST","File is required",400);let E=x.name,N=x.type,g=x.size,T=(0,u.extname)(E).toLowerCase();if(!function(e){if(!e)return!1;let t=e.toLowerCase();return I.includes(t)}(T))return f((0,d.wZ)("INVALID_EXTENSION"));if(!function(e,t){let r=y(e);return r?.allowedMimeTypes.includes(t)??!1}(T,N))return f((0,d.wZ)("INVALID_MIME_TYPE"));let _=await x.arrayBuffer(),w=Buffer.from(_);if(!function(e,t){let r=y(e);return!r?.magicBytes||0===r.magicBytes.length||r.magicBytes.some(e=>{let r=e.offset??0;return!(t.length<r+e.bytes.length)&&e.bytes.every((e,i)=>t[r+i]===e)})}(T,w))return f((0,d.wZ)("INVALID_MAGIC_BYTES"));let L=function(e){let t=y(e);return t?.maxFileSize??5242880}(T);if(g>L)return f((0,d.wZ)("FILE_TOO_LARGE"));if(!(0,d.TG)(E,{forUpload:!0}).valid)return f((0,d.wZ)("INVALID_FILENAME"));if(".yaml"===T||".yml"===T){var r;if(r=w.toString("utf-8"),[/!ruby\/object/i,/!python\/object/i,/!!python/i,/!!ruby/i,/!<tag:yaml\.org,2002:python/i,/!<tag:yaml\.org,2002:ruby/i].some(e=>e.test(r)))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}if(".json"===T){let e=w.toString("utf-8");if(!function(e){try{return JSON.parse(e),!0}catch{return!1}}(e))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}let A=c?`${c}/${E}`:E,F=await (0,d.Kr)(n.path,A,w);if(!F.success)return f(F);return s.NextResponse.json({success:!0,path:F.path,filename:E,size:F.size},{status:201})}catch(e){return console.error("Error uploading file:",e),f("INTERNAL_ERROR","Failed to upload file")}}let N=new a.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/upload/[...path]/route",pathname:"/api/worktrees/[id]/upload/[...path]",filename:"route",bundlePath:"app/api/worktrees/[id]/upload/[...path]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/upload/[...path]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:g,staticGenerationAsyncStorage:T,serverHooks:_}=N,w="/api/worktrees/[id]/upload/[...path]/route";function L(){return(0,o.patchFetch)({serverHooks:_,staticGenerationAsyncStorage:T})}}};var t=require("../../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,7425,8585],()=>r(14276));module.exports=i})();
1
+ "use strict";(()=>{var e={};e.id=1210,e.ids=[1210],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},14276:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>w,patchFetch:()=>L,requestAsyncStorage:()=>g,routeModule:()=>N,serverHooks:()=>_,staticGenerationAsyncStorage:()=>T});var i={};r.r(i),r.d(i,{POST:()=>E});var a=r(49303),o=r(88716),n=r(60670),s=r(87070),l=r(97425),p=r(75748),u=r(55315),m=r(57440),d=r(68585);let c=[{extension:".png",maxFileSize:5242880,allowedMimeTypes:["image/png"],magicBytes:[{bytes:[137,80,78,71,13,10,26,10]}]},{extension:".jpg",maxFileSize:5242880,allowedMimeTypes:["image/jpeg"],magicBytes:[{bytes:[255,216,255]}]},{extension:".jpeg",maxFileSize:5242880,allowedMimeTypes:["image/jpeg"],magicBytes:[{bytes:[255,216,255]}]},{extension:".gif",maxFileSize:5242880,allowedMimeTypes:["image/gif"],magicBytes:[{bytes:[71,73,70,56,55,97]},{bytes:[71,73,70,56,57,97]}]},{extension:".webp",maxFileSize:5242880,allowedMimeTypes:["image/webp"],magicBytes:[{bytes:[82,73,70,70],offset:0}]},{extension:".txt",maxFileSize:5242880,allowedMimeTypes:["text/plain"]},{extension:".log",maxFileSize:5242880,allowedMimeTypes:["text/plain"]},{extension:".md",maxFileSize:5242880,allowedMimeTypes:["text/markdown","text/plain"]},{extension:".csv",maxFileSize:5242880,allowedMimeTypes:["text/csv"]},{extension:".json",maxFileSize:5242880,allowedMimeTypes:["application/json"]},{extension:".yaml",maxFileSize:5242880,allowedMimeTypes:["text/yaml","application/x-yaml"]},{extension:".yml",maxFileSize:5242880,allowedMimeTypes:["text/yaml","application/x-yaml"]}],I=c.map(e=>e.extension);function x(e){let t=e.toLowerCase();return c.find(e=>e.extension===t)}let y={FILE_NOT_FOUND:404,WORKTREE_NOT_FOUND:404,PERMISSION_DENIED:403,INVALID_PATH:400,INVALID_REQUEST:400,FILE_EXISTS:409,DISK_FULL:507,INTERNAL_ERROR:500,INVALID_EXTENSION:400,INVALID_MIME_TYPE:400,INVALID_MAGIC_BYTES:400,FILE_TOO_LARGE:413,INVALID_FILENAME:400,INVALID_FILE_CONTENT:400};function f(e,t,r=500){if("string"==typeof e){let i=y[e]??r;return s.NextResponse.json({success:!1,error:{code:e,message:t}},{status:i})}let i=e.error?.code??"INTERNAL_ERROR",a=e.error?.message??"Unknown error",o=y[i]??r;return s.NextResponse.json({success:!1,error:{code:i,message:a}},{status:o})}async function E(e,{params:t}){try{let i;let a=(0,l.n)(),o=(0,p.gU)(a,t.id);if(!o)return f("WORKTREE_NOT_FOUND","Worktree not found");let n=t.path.join("/"),c=(0,u.normalize)(n);if(!(0,m.j)(c,o.path))return f("INVALID_PATH","Invalid file path");try{i=await e.formData()}catch{return f("INVALID_REQUEST","Invalid form data",400)}let y=i.get("file");if(!y||!(y instanceof File))return f("INVALID_REQUEST","File is required",400);let E=y.name,N=y.type,g=y.size,T=(0,u.extname)(E).toLowerCase();if(!function(e){if(!e)return!1;let t=e.toLowerCase();return I.includes(t)}(T))return f((0,d.wZ)("INVALID_EXTENSION"));if(!function(e,t){let r=x(e);return r?.allowedMimeTypes.includes(t)??!1}(T,N))return f((0,d.wZ)("INVALID_MIME_TYPE"));let _=await y.arrayBuffer(),w=Buffer.from(_);if(!function(e,t){let r=x(e);return!r?.magicBytes||0===r.magicBytes.length||r.magicBytes.some(e=>{let r=e.offset??0;return!(t.length<r+e.bytes.length)&&e.bytes.every((e,i)=>t[r+i]===e)})}(T,w))return f((0,d.wZ)("INVALID_MAGIC_BYTES"));let L=function(e){let t=x(e);return t?.maxFileSize??5242880}(T);if(g>L)return f((0,d.wZ)("FILE_TOO_LARGE"));if(!(0,d.TG)(E,{forUpload:!0}).valid)return f((0,d.wZ)("INVALID_FILENAME"));if(".yaml"===T||".yml"===T){var r;if(r=w.toString("utf-8"),[/!ruby\/object/i,/!python\/object/i,/!!python/i,/!!ruby/i,/!<tag:yaml\.org,2002:python/i,/!<tag:yaml\.org,2002:ruby/i].some(e=>e.test(r)))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}if(".json"===T){let e=w.toString("utf-8");if(!function(e){try{return JSON.parse(e),!0}catch{return!1}}(e))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}let A=c?`${c}/${E}`:E,F=await (0,d.Kr)(o.path,A,w);if(!F.success)return f(F);return s.NextResponse.json({success:!0,path:F.path,filename:E,size:F.size},{status:201})}catch(e){return console.error("Error uploading file:",e),f("INTERNAL_ERROR","Failed to upload file")}}let N=new a.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/upload/[...path]/route",pathname:"/api/worktrees/[id]/upload/[...path]",filename:"route",bundlePath:"app/api/worktrees/[id]/upload/[...path]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/upload/[...path]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:g,staticGenerationAsyncStorage:T,serverHooks:_}=N,w="/api/worktrees/[id]/upload/[...path]/route";function L(){return(0,n.patchFetch)({serverHooks:_,staticGenerationAsyncStorage:T})}}};var t=require("../../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,7425,8585],()=>r(14276));module.exports=i})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=5652,e.ids=[5652],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},62214:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>x,patchFetch:()=>m,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var o={};t.r(o),t.d(o,{PATCH:()=>p});var s=t(49303),i=t(88716),a=t(60670),n=t(87070),u=t(97425),d=t(75748);async function p(e,{params:r}){try{let e=(0,u.n)();if(!(0,d.gU)(e,r.id))return n.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let t=new Date;return(0,d.Of)(e,r.id,t),console.log(`[viewed] Marked worktree ${r.id} as viewed at ${t.toISOString()}`),n.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error updating viewed status:",e),n.NextResponse.json({error:"Failed to update viewed status"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/viewed/route",pathname:"/api/worktrees/[id]/viewed",filename:"route",bundlePath:"app/api/worktrees/[id]/viewed/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/viewed/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:w,serverHooks:v}=c,x="/api/worktrees/[id]/viewed/route";function m(){return(0,a.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(62214));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=5652,e.ids=[5652],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")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},62214:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>x,patchFetch:()=>m,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var o={};t.r(o),t.d(o,{PATCH:()=>p});var s=t(49303),i=t(88716),a=t(60670),n=t(87070),u=t(97425),d=t(75748);async function p(e,{params:r}){try{let e=(0,u.n)();if(!(0,d.gU)(e,r.id))return n.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let t=new Date;return(0,d.Of)(e,r.id,t),console.log(`[viewed] Marked worktree ${r.id} as viewed at ${t.toISOString()}`),n.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error updating viewed status:",e),n.NextResponse.json({error:"Failed to update viewed status"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/viewed/route",pathname:"/api/worktrees/[id]/viewed",filename:"route",bundlePath:"app/api/worktrees/[id]/viewed/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/viewed/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:l,staticGenerationAsyncStorage:w,serverHooks:v}=c,x="/api/worktrees/[id]/viewed/route";function m(){return(0,a.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,7425],()=>t(62214));module.exports=o})();
@@ -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")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>k,patchFetch:()=>P,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>v,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>x,dynamic:()=>g});var o=t(49303),i=t(88716),a=t(60670),n=t(87070),p=t(97425),u=t(75748),c=t(97213),d=t(89194),l=t(19377),m=t(63661);let g="force-dynamic";async function x(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(),a=["claude","codex","gemini"],g=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,n=!1;for(let p of a){let a=i.getTool(p),c=await a.isRunning(e.id),g=!1,x=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l.vp)(t),o=(0,m.F)(s);if(o.isPrompt)g=!0;else{let e=s.split("\n").filter(e=>""!==e.trim()).slice(-15).join("\n");(0,l.Wg)(p,e)?x=!0:/^[>❯]\s*$/m.test(e)||(x=!0)}!o.isPrompt&&(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{x=!0}t[p]={isRunning:c,isWaitingForResponse:g,isProcessing:x},c&&(s=!0),g&&(o=!0),x&&(n=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:n,sessionStatusByCli:t}})),x=(0,u.ER)(r);return n.NextResponse.json({worktrees:g,repositories:x},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),n.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let h=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:w,staticGenerationAsyncStorage:f,serverHooks:v}=h,k="/api/worktrees/route";function P(){return(0,a.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:f})}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,7425,7213,1528],()=>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")},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")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>v,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>g,dynamic:()=>x});var o=t(49303),i=t(88716),a=t(60670),n=t(87070),p=t(97425),u=t(75748),c=t(97213),d=t(89194),l=t(19377),m=t(63661);let x="force-dynamic";async function g(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(),a=["claude","codex","gemini"],x=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,n=!1;for(let p of a){let a=i.getTool(p),c=await a.isRunning(e.id),x=!1,g=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l.vp)(t),o=(0,m.F)(s);if(o.isPrompt)x=!0;else{let e=s.split("\n").filter(e=>""!==e.trim()).slice(-15).join("\n");(0,l.Wg)(p,e)?g=!0:/^[>❯](\s*$|\s+\S)/m.test(e)||(g=!0)}!o.isPrompt&&(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{g=!0}t[p]={isRunning:c,isWaitingForResponse:x,isProcessing:g},c&&(s=!0),x&&(o=!0),g&&(n=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:n,sessionStatusByCli:t}})),g=(0,u.ER)(r);return n.NextResponse.json({worktrees:x,repositories:g},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),n.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let h=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:w,staticGenerationAsyncStorage:f,serverHooks:v}=h,k="/api/worktrees/route";function q(){return(0,a.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:f})}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,7425,7213,1528],()=>t(17679));module.exports=s})();
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/e174aa24f94ce607.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3fc79fab9bb738d7.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/7648-325564a6e12a3257.js" async=""></script><script src="/_next/static/chunks/9365-733d8c05712d2888.js" async=""></script><script src="/_next/static/chunks/6725-f7607851b7d57eb1.js" async=""></script><script src="/_next/static/chunks/816-7e340dad784be28c.js" async=""></script><script src="/_next/static/chunks/2853-d11a80b03c9a1640.js" async=""></script><script src="/_next/static/chunks/app/page-9cd00de9cc0abc43.js" async=""></script><script src="/_next/static/chunks/app/layout-37e55f11dcc8b1bf.js" async=""></script><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><link rel="icon" href="/icon.png?32d9127ba30ee286" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon.png?31a89e65aa4ac65b" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div data-testid="app-shell" class="h-screen flex"><aside data-testid="sidebar-container" class="
1
+ <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/376b339640084689.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3fc79fab9bb738d7.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/7648-325564a6e12a3257.js" async=""></script><script src="/_next/static/chunks/9365-733d8c05712d2888.js" async=""></script><script src="/_next/static/chunks/6725-f7607851b7d57eb1.js" async=""></script><script src="/_next/static/chunks/816-7e340dad784be28c.js" async=""></script><script src="/_next/static/chunks/2853-d11a80b03c9a1640.js" async=""></script><script src="/_next/static/chunks/app/page-fe35d61f14b90a51.js" async=""></script><script src="/_next/static/chunks/app/layout-37e55f11dcc8b1bf.js" async=""></script><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><link rel="icon" href="/icon.png?32d9127ba30ee286" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon.png?31a89e65aa4ac65b" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div data-testid="app-shell" class="h-screen flex"><aside data-testid="sidebar-container" class="
2
2
  fixed left-0 top-0 h-full w-72
3
3
  transform transition-transform duration-300 ease-out
4
4
  translate-x-0
@@ -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-3fc79fab9bb738d7.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/e174aa24f94ce607.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\",\"9365\",\"static/chunks/9365-733d8c05712d2888.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"2853\",\"static/chunks/2853-d11a80b03c9a1640.js\",\"1931\",\"static/chunks/app/page-9cd00de9cc0abc43.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"3185\",\"static/chunks/app/layout-37e55f11dcc8b1bf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"ntEU_tKhyyZ-FVJS5Em3L\",\"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/e174aa24f94ce607.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-3fc79fab9bb738d7.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/376b339640084689.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\",\"9365\",\"static/chunks/9365-733d8c05712d2888.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"2853\",\"static/chunks/2853-d11a80b03c9a1640.js\",\"1931\",\"static/chunks/app/page-fe35d61f14b90a51.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"3185\",\"static/chunks/app/layout-37e55f11dcc8b1bf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"gRNW5YXY43KqCKbCdaJoJ\",\"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/376b339640084689.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>
@@ -1,8 +1,8 @@
1
1
  2:I[19107,[],"ClientPageRoot"]
2
- 3:I[89707,["7648","static/chunks/7648-325564a6e12a3257.js","9365","static/chunks/9365-733d8c05712d2888.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-7e340dad784be28c.js","2853","static/chunks/2853-d11a80b03c9a1640.js","1931","static/chunks/app/page-9cd00de9cc0abc43.js"],"default",1]
2
+ 3:I[89707,["7648","static/chunks/7648-325564a6e12a3257.js","9365","static/chunks/9365-733d8c05712d2888.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-7e340dad784be28c.js","2853","static/chunks/2853-d11a80b03c9a1640.js","1931","static/chunks/app/page-fe35d61f14b90a51.js"],"default",1]
3
3
  4:I[91795,["816","static/chunks/816-7e340dad784be28c.js","3185","static/chunks/app/layout-37e55f11dcc8b1bf.js"],"AppProviders"]
4
4
  5:I[4707,[],""]
5
5
  6:I[36423,[],""]
6
- 0:["ntEU_tKhyyZ-FVJS5Em3L",[[["",{"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/e174aa24f94ce607.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:["gRNW5YXY43KqCKbCdaJoJ",[[["",{"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/376b339640084689.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