commandmate 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +17 -17
  3. package/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/config.json +3 -3
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/1.pack +0 -0
  9. package/.next/cache/webpack/client-production/2.pack +0 -0
  10. package/.next/cache/webpack/client-production/index.pack +0 -0
  11. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  12. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  13. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  14. package/.next/cache/webpack/server-production/0.pack +0 -0
  15. package/.next/cache/webpack/server-production/index.pack +0 -0
  16. package/.next/next-server.js.nft.json +1 -1
  17. package/.next/prerender-manifest.json +1 -1
  18. package/.next/required-server-files.json +1 -1
  19. package/.next/routes-manifest.json +1 -1
  20. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/app/update-check/route.js +1 -1
  23. package/.next/server/app/api/external-apps/[id]/health/route.js +1 -1
  24. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  25. package/.next/server/app/api/external-apps/route.js +1 -1
  26. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  27. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  28. package/.next/server/app/api/repositories/clone/route.js +1 -1
  29. package/.next/server/app/api/repositories/excluded/route.js +7 -7
  30. package/.next/server/app/api/repositories/restore/route.js +3 -3
  31. package/.next/server/app/api/repositories/route.js +13 -11
  32. package/.next/server/app/api/repositories/scan/route.js +1 -1
  33. package/.next/server/app/api/repositories/sync/route.js +3 -3
  34. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  35. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  36. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  37. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -0
  38. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js.nft.json +1 -0
  39. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +9 -0
  40. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -0
  41. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  42. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  43. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  44. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  45. package/.next/server/app/api/worktrees/[id]/logs/route.js +2 -2
  46. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  47. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  48. package/.next/server/app/api/worktrees/[id]/messages/route.js +1 -1
  49. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  50. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  51. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  52. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -0
  53. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -0
  54. package/.next/server/app/api/worktrees/[id]/schedules/route.js +4 -0
  55. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -0
  56. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  57. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  58. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  59. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  60. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route.js +1 -1
  61. package/.next/server/app/api/worktrees/[id]/tree/route.js +1 -1
  62. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route.js +1 -1
  63. package/.next/server/app/api/worktrees/[id]/viewed/route.js +1 -1
  64. package/.next/server/app/api/worktrees/route.js +1 -1
  65. package/.next/server/app/login/page.js.nft.json +1 -1
  66. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/page.js.nft.json +1 -1
  68. package/.next/server/app/page_client-reference-manifest.js +1 -1
  69. package/.next/server/app/proxy/[...path]/route.js +1 -1
  70. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  71. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/worktrees/[id]/page.js +8 -3
  73. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  74. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  76. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app-paths-manifest.json +14 -10
  78. package/.next/server/chunks/2314.js +1 -0
  79. package/.next/server/chunks/3860.js +1 -1
  80. package/.next/server/chunks/6228.js +1 -0
  81. package/.next/server/chunks/7425.js +85 -30
  82. package/.next/server/chunks/7536.js +1 -1
  83. package/.next/server/functions-config-manifest.json +1 -1
  84. package/.next/server/middleware-manifest.json +5 -5
  85. package/.next/server/pages/500.html +1 -1
  86. package/.next/server/server-reference-manifest.json +1 -1
  87. package/.next/static/chunks/app/worktrees/[id]/page-0c889ab3f30d5af7.js +1 -0
  88. package/.next/static/css/bd6065b03ddb3efd.css +3 -0
  89. package/.next/trace +5 -5
  90. package/.next/types/app/api/worktrees/[id]/execution-logs/[logId]/route.ts +343 -0
  91. package/.next/types/app/api/worktrees/[id]/execution-logs/route.ts +343 -0
  92. package/.next/types/app/api/worktrees/[id]/schedules/[scheduleId]/route.ts +343 -0
  93. package/.next/types/app/api/worktrees/[id]/schedules/route.ts +343 -0
  94. package/dist/cli/utils/docs-reader.d.ts.map +1 -1
  95. package/dist/cli/utils/docs-reader.js +1 -0
  96. package/dist/server/server.js +5 -0
  97. package/dist/server/src/config/cmate-constants.js +79 -0
  98. package/dist/server/src/config/schedule-config.js +54 -0
  99. package/dist/server/src/lib/claude-executor.js +147 -0
  100. package/dist/server/src/lib/cmate-parser.js +240 -0
  101. package/dist/server/src/lib/db-instance.js +3 -0
  102. package/dist/server/src/lib/db-migrations.js +96 -2
  103. package/dist/server/src/lib/env-sanitizer.js +57 -0
  104. package/dist/server/src/lib/schedule-manager.js +397 -0
  105. package/dist/server/src/types/cmate.js +6 -0
  106. package/package.json +2 -1
  107. package/.next/static/chunks/app/worktrees/[id]/page-a556551ce5c69dec.js +0 -1
  108. package/.next/static/css/b9ea6a4fad17dc32.css +0 -3
  109. /package/.next/static/{hmAjbCPjxX_C0Os7rphI1 → j8HFvzDZj7tHjAnhpXUno}/_buildManifest.js +0 -0
  110. /package/.next/static/{hmAjbCPjxX_C0Os7rphI1 → j8HFvzDZj7tHjAnhpXUno}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=1732,e.ids=[1732],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")},81409:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>T,patchFetch:()=>C,requestAsyncStorage:()=>D,routeModule:()=>S,serverHooks:()=>k,staticGenerationAsyncStorage:()=>_});var n={};t.r(n),t.d(n,{GET:()=>R});var o=t(49303),a=t(88716),s=t(60670),i=t(87070),p=t(97425),l=t(75748),u=t(98241),c=t(19801),d=t.n(c),m=t(40644),E=t(98838),f=t(29414),g=t(20629),x=t.n(g),h=t(55315),A=t.n(h);let R=(0,f.o)(async(e,{params:r})=>{try{let t=await Promise.resolve(r),n=(0,p.n)();if(!(0,l.gU)(n,t.id))return i.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=t.filename;if(!o.endsWith(".md")||!o.startsWith(`${t.id}-`))return i.NextResponse.json({error:"Invalid filename"},{status:400});if(o.includes("..")||o.includes("/")||o.includes("\\"))return i.NextResponse.json({error:"Invalid filename: path traversal not allowed"},{status:400});let a=!1,s="",c=null,f="";for(let e of["claude","codex","gemini"]){let r=A().join((0,u.s)(),e,o);try{let t=await x().stat(r);if(t.isFile()){a=!0,f=e,c={size:t.size,mtime:t.mtime},s=await x().readFile(r,"utf-8");break}}catch(e){if("ENOENT"!==e.code)throw e}}if(!a)return i.NextResponse.json({error:`Log file '${o}' not found in any CLI tool directory`},{status:404});return e.nextUrl?.searchParams?.get("sanitize")==="true"&&(s=function(e){let r=function(){let e=process.env.HOME??"",r=(0,E.dU)(),t=d().hostname(),n=[];e&&n.push({pattern:RegExp((0,m.hr)(e),"g"),replacement:"[HOME]",description:"Home directory path masking"}),r.CM_ROOT_DIR&&n.push({pattern:RegExp((0,m.hr)(r.CM_ROOT_DIR),"g"),replacement:"[PROJECT]",description:"Project root path masking"}),r.CM_DB_PATH&&n.push({pattern:RegExp((0,m.hr)(r.CM_DB_PATH),"g"),replacement:"[DB_PATH]",description:"Database path masking"}),t&&n.push({pattern:RegExp((0,m.hr)(t),"g"),replacement:"[HOST]",description:"Hostname masking"}),n.push({pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/g,replacement:"Bearer [REDACTED]",description:"Bearer token masking"}),n.push({pattern:/[Aa]uthorization:\s*\S+/g,replacement:"Authorization: [REDACTED]",description:"Authorization header masking"}),n.push({pattern:/(password|passwd|token|secret|api[_-]?key|access[_-]?key|private[_-]?key)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]",description:"Password/token/secret key-value pair masking"}),n.push({pattern:/-----BEGIN\s+(RSA|DSA|EC|OPENSSH)?\s*PRIVATE KEY-----[\s\S]*?-----END\s+(RSA|DSA|EC|OPENSSH)?\s*PRIVATE KEY-----/g,replacement:"[SSH_PRIVATE_KEY_REDACTED]",description:"SSH private key masking"}),n.push({pattern:/(GITHUB_TOKEN|AWS_SECRET_ACCESS_KEY|AWS_ACCESS_KEY_ID|OPENAI_API_KEY|ANTHROPIC_API_KEY|DATABASE_URL|REDIS_URL)[=:]\s*\S+/g,replacement:"$1=[REDACTED]",description:"Known environment variable value masking"});let o=["[HOME]","[PROJECT]","[DB_PATH]","[HOST]"],a=n.filter(e=>o.includes(e.replacement)),s=n.filter(e=>!o.includes(e.replacement));return a.sort((e,r)=>r.pattern.source.length-e.pattern.source.length),[...a,...s]}(),t=e;for(let e of r)t=t.replace(e.pattern,e.replacement);return t}(s)),i.NextResponse.json({filename:o,cliToolId:f,content:s,size:c.size,modifiedAt:c.mtime.toISOString()},{status:200})}catch(e){return console.error("Error reading log file:",e),i.NextResponse.json({error:"Failed to read log file"},{status:500})}},{skipResponseBody:!0}),S=new o.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/worktrees/[id]/logs/[filename]/route",pathname:"/api/worktrees/[id]/logs/[filename]",filename:"route",bundlePath:"app/api/worktrees/[id]/logs/[filename]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/logs/[filename]/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:D,staticGenerationAsyncStorage:_,serverHooks:k}=S,T="/api/worktrees/[id]/logs/[filename]/route";function C(){return(0,s.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:_})}},98241:(e,r,t)=>{t.d(r,{s:()=>s});var n=t(55315),o=t.n(n),a=t(98838);function s(){return(0,a.Hb)("CM_LOG_DIR")||o().join(process.cwd(),"data","logs")}},29414:(e,r,t)=>{function n(e,r){let{logLevel:t="info",maxResponseBodyLength:n=1024,skipResponseBody:o=!1}=r??{};return async(r,t)=>e(r,t)}t.d(r,{o:()=>n}),(0,t(43895).h)("api")},43895:(e,r,t)=>{t.d(r,{Y:()=>p,h:()=>l});var n=t(98838);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:/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]"}],a=/password|secret|token|key|auth/i,s={debug:0,info:1,warn:2,error:3};function i(e,r,t,i,p){let l=(0,n.LI)().level;if(s[e]<s[l])return;let u=i?function e(r){if("string"==typeof r){let e=r;for(let{pattern:r,replacement:t}of o)e=e.replace(r,t);return e}if("object"==typeof r&&null!==r){if(Array.isArray(r))return r.map(e);let t={};for(let[n,o]of Object.entries(r))a.test(n)?t[n]="[REDACTED]":t[n]=e(o);return t}return r}(i):void 0,c=function(e){if("json"===(0,n.LI)().format)return JSON.stringify(e);let{timestamp:r,level:t,module:o,action:a,data:s,worktreeId:i,cliToolId:p,requestId:l}=e,u=[i,p].filter(Boolean),c=u.length>0?` [${u.join(":")}]`:"",d=l?` (${l.slice(0,8)})`:"",m=s?` ${JSON.stringify(s)}`:"";return`[${r}] [${t.toUpperCase()}] [${o}]${c}${d} ${a}${m}`}({level:e,module:r,action:t,timestamp:new Date().toISOString(),...p,...u&&{data:u}});switch(e){case"error":console.error(c);break;case"warn":console.warn(c);break;default:console.log(c)}}function p(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)})}function l(e){let r=t=>({debug:(r,n)=>i("debug",e,r,n,t),info:(r,n)=>i("info",e,r,n,t),warn:(r,n)=>i("warn",e,r,n,t),error:(r,n)=>i("error",e,r,n,t),withContext:e=>r({...t,...e})});return r()}},40644:(e,r,t)=>{function n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function o(e,r=30){return e.length<=r?e:`${e.substring(0,r-3)}...`}t.d(r,{aS:()=>o,hr:()=>n})}};var r=require("../../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),n=r.X(0,[8948,5972,7425],()=>t(81409));module.exports=n})();
1
+ "use strict";(()=>{var e={};e.id=1732,e.ids=[1732],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")},81409:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>T,patchFetch:()=>C,requestAsyncStorage:()=>D,routeModule:()=>S,serverHooks:()=>k,staticGenerationAsyncStorage:()=>_});var n={};r.r(n),r.d(n,{GET:()=>R});var o=r(49303),a=r(88716),s=r(60670),i=r(87070),p=r(97425),l=r(75748),u=r(98241),c=r(19801),d=r.n(c),m=r(40644),E=r(98838),f=r(29414),g=r(20629),x=r.n(g),h=r(55315),A=r.n(h);let R=(0,f.o)(async(e,{params:t})=>{try{let r=await Promise.resolve(t),n=(0,p.getDbInstance)();if(!(0,l.gU)(n,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=r.filename;if(!o.endsWith(".md")||!o.startsWith(`${r.id}-`))return i.NextResponse.json({error:"Invalid filename"},{status:400});if(o.includes("..")||o.includes("/")||o.includes("\\"))return i.NextResponse.json({error:"Invalid filename: path traversal not allowed"},{status:400});let a=!1,s="",c=null,f="";for(let e of["claude","codex","gemini"]){let t=A().join((0,u.s)(),e,o);try{let r=await x().stat(t);if(r.isFile()){a=!0,f=e,c={size:r.size,mtime:r.mtime},s=await x().readFile(t,"utf-8");break}}catch(e){if("ENOENT"!==e.code)throw e}}if(!a)return i.NextResponse.json({error:`Log file '${o}' not found in any CLI tool directory`},{status:404});return e.nextUrl?.searchParams?.get("sanitize")==="true"&&(s=function(e){let t=function(){let e=process.env.HOME??"",t=(0,E.dU)(),r=d().hostname(),n=[];e&&n.push({pattern:RegExp((0,m.hr)(e),"g"),replacement:"[HOME]",description:"Home directory path masking"}),t.CM_ROOT_DIR&&n.push({pattern:RegExp((0,m.hr)(t.CM_ROOT_DIR),"g"),replacement:"[PROJECT]",description:"Project root path masking"}),t.CM_DB_PATH&&n.push({pattern:RegExp((0,m.hr)(t.CM_DB_PATH),"g"),replacement:"[DB_PATH]",description:"Database path masking"}),r&&n.push({pattern:RegExp((0,m.hr)(r),"g"),replacement:"[HOST]",description:"Hostname masking"}),n.push({pattern:/Bearer\s+[A-Za-z0-9\-._~+/]+=*/g,replacement:"Bearer [REDACTED]",description:"Bearer token masking"}),n.push({pattern:/[Aa]uthorization:\s*\S+/g,replacement:"Authorization: [REDACTED]",description:"Authorization header masking"}),n.push({pattern:/(password|passwd|token|secret|api[_-]?key|access[_-]?key|private[_-]?key)[=:]\s*\S+/gi,replacement:"$1=[REDACTED]",description:"Password/token/secret key-value pair masking"}),n.push({pattern:/-----BEGIN\s+(RSA|DSA|EC|OPENSSH)?\s*PRIVATE KEY-----[\s\S]*?-----END\s+(RSA|DSA|EC|OPENSSH)?\s*PRIVATE KEY-----/g,replacement:"[SSH_PRIVATE_KEY_REDACTED]",description:"SSH private key masking"}),n.push({pattern:/(GITHUB_TOKEN|AWS_SECRET_ACCESS_KEY|AWS_ACCESS_KEY_ID|OPENAI_API_KEY|ANTHROPIC_API_KEY|DATABASE_URL|REDIS_URL)[=:]\s*\S+/g,replacement:"$1=[REDACTED]",description:"Known environment variable value masking"});let o=["[HOME]","[PROJECT]","[DB_PATH]","[HOST]"],a=n.filter(e=>o.includes(e.replacement)),s=n.filter(e=>!o.includes(e.replacement));return a.sort((e,t)=>t.pattern.source.length-e.pattern.source.length),[...a,...s]}(),r=e;for(let e of t)r=r.replace(e.pattern,e.replacement);return r}(s)),i.NextResponse.json({filename:o,cliToolId:f,content:s,size:c.size,modifiedAt:c.mtime.toISOString()},{status:200})}catch(e){return console.error("Error reading log file:",e),i.NextResponse.json({error:"Failed to read log file"},{status:500})}},{skipResponseBody:!0}),S=new o.AppRouteRouteModule({definition:{kind:a.x.APP_ROUTE,page:"/api/worktrees/[id]/logs/[filename]/route",pathname:"/api/worktrees/[id]/logs/[filename]",filename:"route",bundlePath:"app/api/worktrees/[id]/logs/[filename]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/logs/[filename]/route.ts",nextConfigOutput:"",userland:n}),{requestAsyncStorage:D,staticGenerationAsyncStorage:_,serverHooks:k}=S,T="/api/worktrees/[id]/logs/[filename]/route";function C(){return(0,s.patchFetch)({serverHooks:k,staticGenerationAsyncStorage:_})}},98241:(e,t,r)=>{r.d(t,{s:()=>s});var n=r(55315),o=r.n(n),a=r(98838);function s(){return(0,a.Hb)("CM_LOG_DIR")||o().join(process.cwd(),"data","logs")}},29414:(e,t,r)=>{function n(e,t){let{logLevel:r="info",maxResponseBodyLength:n=1024,skipResponseBody:o=!1}=t??{};return async(t,r)=>e(t,r)}r.d(t,{o:()=>n}),(0,r(43895).h)("api")},43895:(e,t,r)=>{r.d(t,{Y:()=>p,h:()=>l});var n=r(98838);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:/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]"}],a=/password|secret|token|key|auth/i,s={debug:0,info:1,warn:2,error:3};function i(e,t,r,i,p){let l=(0,n.LI)().level;if(s[e]<s[l])return;let u=i?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))a.test(n)?r[n]="[REDACTED]":r[n]=e(o);return r}return t}(i):void 0,c=function(e){if("json"===(0,n.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:o,action:a,data:s,worktreeId:i,cliToolId:p,requestId:l}=e,u=[i,p].filter(Boolean),c=u.length>0?` [${u.join(":")}]`:"",d=l?` (${l.slice(0,8)})`:"",m=s?` ${JSON.stringify(s)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${c}${d} ${a}${m}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...p,...u&&{data:u}});switch(e){case"error":console.error(c);break;case"warn":console.warn(c);break;default:console.log(c)}}function p(){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 l(e){let t=r=>({debug:(t,n)=>i("debug",e,t,n,r),info:(t,n)=>i("info",e,t,n,r),warn:(t,n)=>i("warn",e,t,n,r),error:(t,n)=>i("error",e,t,n,r),withContext:e=>t({...r,...e})});return t()}},40644:(e,t,r)=>{function n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function o(e,t=30){return e.length<=t?e:`${e.substring(0,t-3)}...`}r.d(t,{aS:()=>o,hr:()=>n})}};var t=require("../../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[8948,5972,7425],()=>r(81409));module.exports=n})();
@@ -1,4 +1,4 @@
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:()=>$,patchFetch:()=>E,requestAsyncStorage:()=>y,routeModule:()=>w,serverHooks:()=>C,staticGenerationAsyncStorage:()=>h});var a={};r.r(a),r.d(a,{GET:()=>g});var o=r(49303),n=r(88716),i=r(60670),s=r(87070),l=r(97425),u=r(75748),c=r(98636),d=r(29414),p=r(20629),x=r.n(p),f=r(55315),m=r.n(f);let g=(0,d.o)(async(e,{params:t})=>{try{let r=await Promise.resolve(t),a=(0,l.n)();if(!(0,u.gU)(a,r.id))return s.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=e.nextUrl?.searchParams,n=o?.get("cliTool")||"all",i=await (0,c.e7)(r.id,n),d=(await Promise.all(i.map(async e=>{let t=m().basename(e),r=await x().stat(e),a=e.split(m().sep),o=a[a.length-2];return{filename:t,cliToolId:o,size:r.size,modifiedAt:r.mtime.toISOString()}}))).map(e=>e.filename);return s.NextResponse.json(d,{status:200})}catch(e){return console.error("Error fetching log files:",e),s.NextResponse.json({error:"Failed to fetch log files"},{status:500})}}),w=new o.AppRouteRouteModule({definition:{kind:n.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:y,staticGenerationAsyncStorage:h,serverHooks:C}=w,$="/api/worktrees/[id]/logs/route";function E(){return(0,i.patchFetch)({serverHooks:C,staticGenerationAsyncStorage:h})}},98241:(e,t,r)=>{r.d(t,{s:()=>i});var a=r(55315),o=r.n(a),n=r(98838);function i(){return(0,n.Hb)("CM_LOG_DIR")||o().join(process.cwd(),"data","logs")}},29414:(e,t,r)=>{function a(e,t){let{logLevel:r="info",maxResponseBodyLength:a=1024,skipResponseBody:o=!1}=t??{};return async(t,r)=>e(t,r)}r.d(t,{o:()=>a}),(0,r(43895).h)("api")},98636:(e,t,r)=>{r.d(t,{e7:()=>p,xN:()=>d});var a=r(20629),o=r.n(a),n=r(55315),i=r.n(n),s=r(73853),l=r(98241);function u(e="claude"){return i().join((0,l.s)(),e)}async function c(e="claude"){let t=u(e);try{await o().access(t)}catch{await o().mkdir(t,{recursive:!0})}}async function d(e,t,r,a="claude"){await c(a);let n=function(e,t="claude"){let r=(0,s.WU)(new Date,"yyyy-MM-dd"),a=`${e}-${r}.md`,o=u(t);return i().join(o,a)}(e,a),l=(0,s.WU)(new Date,"yyyy-MM-dd HH:mm:ss"),d="";try{d=await o().readFile(n,"utf-8")}catch{let t="claude"===a?"Claude Code":"codex"===a?"Codex CLI":"Gemini CLI";d=`# ${t} 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:()=>$,patchFetch:()=>E,requestAsyncStorage:()=>y,routeModule:()=>w,serverHooks:()=>C,staticGenerationAsyncStorage:()=>h});var a={};r.r(a),r.d(a,{GET:()=>g});var n=r(49303),o=r(88716),i=r(60670),s=r(87070),l=r(97425),u=r(75748),c=r(98636),d=r(29414),p=r(20629),x=r.n(p),f=r(55315),m=r.n(f);let g=(0,d.o)(async(e,{params:t})=>{try{let r=await Promise.resolve(t),a=(0,l.getDbInstance)();if(!(0,u.gU)(a,r.id))return s.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let n=e.nextUrl?.searchParams,o=n?.get("cliTool")||"all",i=await (0,c.e7)(r.id,o),d=(await Promise.all(i.map(async e=>{let t=m().basename(e),r=await x().stat(e),a=e.split(m().sep),n=a[a.length-2];return{filename:t,cliToolId:n,size:r.size,modifiedAt:r.mtime.toISOString()}}))).map(e=>e.filename);return s.NextResponse.json(d,{status:200})}catch(e){return console.error("Error fetching log files:",e),s.NextResponse.json({error:"Failed to fetch log files"},{status:500})}}),w=new n.AppRouteRouteModule({definition:{kind:o.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:y,staticGenerationAsyncStorage:h,serverHooks:C}=w,$="/api/worktrees/[id]/logs/route";function E(){return(0,i.patchFetch)({serverHooks:C,staticGenerationAsyncStorage:h})}},98241:(e,t,r)=>{r.d(t,{s:()=>i});var a=r(55315),n=r.n(a),o=r(98838);function i(){return(0,o.Hb)("CM_LOG_DIR")||n().join(process.cwd(),"data","logs")}},29414:(e,t,r)=>{function a(e,t){let{logLevel:r="info",maxResponseBodyLength:a=1024,skipResponseBody:n=!1}=t??{};return async(t,r)=>e(t,r)}r.d(t,{o:()=>a}),(0,r(43895).h)("api")},98636:(e,t,r)=>{r.d(t,{e7:()=>p,xN:()=>d});var a=r(20629),n=r.n(a),o=r(55315),i=r.n(o),s=r(73853),l=r(98241);function u(e="claude"){return i().join((0,l.s)(),e)}async function c(e="claude"){let t=u(e);try{await n().access(t)}catch{await n().mkdir(t,{recursive:!0})}}async function d(e,t,r,a="claude"){await c(a);let o=function(e,t="claude"){let r=(0,s.WU)(new Date,"yyyy-MM-dd"),a=`${e}-${r}.md`,n=u(t);return i().join(n,a)}(e,a),l=(0,s.WU)(new Date,"yyyy-MM-dd HH:mm:ss"),d="";try{d=await n().readFile(o,"utf-8")}catch{let t="claude"===a?"Claude Code":"codex"===a?"Codex CLI":"Gemini CLI";d=`# ${t} Conversation Log: ${e}
2
2
 
3
3
  Created: ${l}
4
4
 
@@ -16,4 +16,4 @@ ${r}
16
16
 
17
17
  ---
18
18
 
19
- `,await o().writeFile(n,d,"utf-8"),n}async function p(e,t="all"){let r=[];for(let a of"all"===t?["claude","codex","gemini"]:[t]){await c(a);let t=u(a);try{let a=(await o().readdir(t)).filter(t=>t.startsWith(`${e}-`)&&t.endsWith(".md")).map(e=>i().join(t,e));r.push(...a)}catch{}}return r.sort().reverse()}},43895:(e,t,r)=>{r.d(t,{Y:()=>l,h:()=>u});var a=r(98838);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:/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]"}],n=/password|secret|token|key|auth/i,i={debug:0,info:1,warn:2,error:3};function s(e,t,r,s,l){let u=(0,a.LI)().level;if(i[e]<i[u])return;let c=s?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[a,o]of Object.entries(t))n.test(a)?r[a]="[REDACTED]":r[a]=e(o);return r}return t}(s):void 0,d=function(e){if("json"===(0,a.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:o,action:n,data:i,worktreeId:s,cliToolId:l,requestId:u}=e,c=[s,l].filter(Boolean),d=c.length>0?` [${c.join(":")}]`:"",p=u?` (${u.slice(0,8)})`:"",x=i?` ${JSON.stringify(i)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${p} ${n}${x}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...l,...c&&{data:c}});switch(e){case"error":console.error(d);break;case"warn":console.warn(d);break;default:console.log(d)}}function l(){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,a)=>s("debug",e,t,a,r),info:(t,a)=>s("info",e,t,a,r),warn:(t,a)=>s("warn",e,t,a,r),error:(t,a)=>s("error",e,t,a,r),withContext:e=>t({...r,...e})});return t()}}};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})();
19
+ `,await n().writeFile(o,d,"utf-8"),o}async function p(e,t="all"){let r=[];for(let a of"all"===t?["claude","codex","gemini"]:[t]){await c(a);let t=u(a);try{let a=(await n().readdir(t)).filter(t=>t.startsWith(`${e}-`)&&t.endsWith(".md")).map(e=>i().join(t,e));r.push(...a)}catch{}}return r.sort().reverse()}},43895:(e,t,r)=>{r.d(t,{Y:()=>l,h:()=>u});var a=r(98838);let n=[{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:/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]"}],o=/password|secret|token|key|auth/i,i={debug:0,info:1,warn:2,error:3};function s(e,t,r,s,l){let u=(0,a.LI)().level;if(i[e]<i[u])return;let c=s?function e(t){if("string"==typeof t){let e=t;for(let{pattern:t,replacement:r}of n)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[a,n]of Object.entries(t))o.test(a)?r[a]="[REDACTED]":r[a]=e(n);return r}return t}(s):void 0,d=function(e){if("json"===(0,a.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:n,action:o,data:i,worktreeId:s,cliToolId:l,requestId:u}=e,c=[s,l].filter(Boolean),d=c.length>0?` [${c.join(":")}]`:"",p=u?` (${u.slice(0,8)})`:"",x=i?` ${JSON.stringify(i)}`:"";return`[${t}] [${r.toUpperCase()}] [${n}]${d}${p} ${o}${x}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...l,...c&&{data:c}});switch(e){case"error":console.error(d);break;case"warn":console.warn(d);break;default:console.log(d)}}function l(){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,a)=>s("debug",e,t,a,r),info:(t,a)=>s("info",e,t,a,r),warn:(t,a)=>s("warn",e,t,a,r),error:(t,a)=>s("error",e,t,a,r),withContext:e=>t({...r,...e})});return t()}}};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")},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
+ "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),a=t(60670),u=t(87070),m=t(97425),i=t(75748);async function d(e,{params:r}){try{let t=(0,m.getDbInstance)();if(!(0,i.gU)(t,r.id))return u.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(t,r.memoId))return u.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 u.NextResponse.json({error:"title must be 100 characters or less"},{status:400});if(void 0!==s&&s.length>1e4)return u.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 u.NextResponse.json({memo:n},{status:200})}catch(e){return console.error("Error updating memo:",e),u.NextResponse.json({error:"Failed to update memo"},{status:500})}}async function p(e,{params:r}){try{let e=(0,m.getDbInstance)();if(!(0,i.gU)(e,r.id))return u.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!(0,i.ZI)(e,r.memoId))return u.NextResponse.json({error:`Memo '${r.memoId}' not found`},{status:404});return(0,i._e)(e,r.memoId),u.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error deleting memo:",e),u.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 +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")},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
+ "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,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>f,patchFetch:()=>g,requestAsyncStorage:()=>l,routeModule:()=>c,serverHooks:()=>h,staticGenerationAsyncStorage:()=>x});var o={};r.r(o),r.d(o,{GET:()=>d,POST:()=>m});var s=r(49303),n=r(88716),i=r(60670),a=r(87070),u=r(97425),p=r(75748);async function d(e,{params:t}){try{let e=(0,u.getDbInstance)();if(!(0,p.gU)(e,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let r=(0,p.Db)(e,t.id);return a.NextResponse.json({memos:r},{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:t}){try{let r;let o=(0,u.getDbInstance)();if(!(0,p.gU)(o,t.id))return a.NextResponse.json({error:`Worktree '${t.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,t.id);if(d.length>=5)return a.NextResponse.json({error:"Maximum memo limit (5) reached"},{status:400});if(void 0!==i&&"number"==typeof i)r=i;else{let e=new Set(d.map(e=>e.position));for(r=0;e.has(r)&&r<5;)r++}let m=(0,p.dD)(o,t.id,{title:s,content:n,position:r});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 t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[8948,5972,7425],()=>r(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")},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
+ "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:()=>c,routeModule:()=>m,serverHooks:()=>g,staticGenerationAsyncStorage:()=>l});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.getDbInstance)();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 c=[...(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(c,{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:c,staticGenerationAsyncStorage:l,serverHooks:g}=m,x="/api/worktrees/[id]/messages/route";function f(){return(0,a.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:l})}}};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")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>g,staticGenerationAsyncStorage:()=>q});var s={};t.r(s),t.d(s,{POST:()=>f});var o=t(49303),n=t(88716),i=t(60670),p=t(87070),a=t(97425),u=t(75748),l=t(43839),c=t(89194),d=t(63661),m=t(19377),x=t(49528);async function f(e,{params:r}){try{let{answer:t,cliTool:s,promptType:o,defaultOptionNumber:n}=await e.json();if(!t)return p.NextResponse.json({error:"answer is required"},{status:400});let i=(0,a.n)(),f=(0,u.gU)(i,r.id);if(!f)return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let h=s||f.cliToolId||"claude",w=l.g.getInstance().getTool(h);if(!await w.isRunning(r.id))return p.NextResponse.json({error:`${w.name} session is not running`},{status:400});let q=w.getSessionName(r.id),g=null;try{let e=await (0,c.NA)(r.id,h,5e3),s=(0,m.vp)(e),o=(0,m.Sg)(h);if(!(g=(0,d.F)(s,o)).isPrompt)return p.NextResponse.json({success:!1,reason:"prompt_no_longer_active",answer:t})}catch{console.warn("[prompt-response] Failed to verify prompt state, proceeding with send")}try{await (0,x.z)({sessionName:q,answer:t,cliToolId:h,promptData:g?.promptData,fallbackPromptType:o,fallbackDefaultOptionNumber:n})}catch(r){let e=r instanceof Error?r.message:"Unknown error";return p.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return p.NextResponse.json({success:!0,answer:t})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return p.NextResponse.json({error:e},{status:500})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/prompt-response/route",pathname:"/api/worktrees/[id]/prompt-response",filename:"route",bundlePath:"app/api/worktrees/[id]/prompt-response/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/prompt-response/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:q,serverHooks:g}=h,v="/api/worktrees/[id]/prompt-response/route";function y(){return(0,i.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:q})}},49528:(e,r,t)=>{t.d(r,{z:()=>i});var s=t(10927);let o=/^\[[ x]\] /;function n(e){if(0===e)return[];let r=e>0?"Down":"Up";return Array.from({length:Math.abs(e)},()=>r)}async function i(e){let{sessionName:r,answer:t,cliToolId:i,promptData:p,fallbackPromptType:a,fallbackDefaultOptionNumber:u}=e;if("claude"===i&&(p?.type==="multiple_choice"||"multiple_choice"===a)&&/^\d+$/.test(t)){let e;let i=parseInt(t,10),a=null;if(p?.type==="multiple_choice"){let r=(a=p.options).find(e=>e.isDefault);e=r?.number??1}else e=u??1;let l=i-e;if(null!==a&&a.some(e=>o.test(e.label))&&null!==a){let e=a.filter(e=>o.test(e.label)).length,t=[...n(l),"Space"];t.push(...n(e-i+1)),t.push("Enter"),await (0,s.hL)(r,t)}else{let e=[...n(l),"Enter"];await (0,s.hL)(r,e)}}else await (0,s.Is)(r,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(r,"",!0)}}};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,7566,7536],()=>t(45762));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=6366,e.ids=[6366],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},45762:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>b,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>g,staticGenerationAsyncStorage:()=>q});var s={};t.r(s),t.d(s,{POST:()=>f});var o=t(49303),n=t(88716),i=t(60670),p=t(87070),a=t(97425),u=t(75748),l=t(43839),c=t(89194),d=t(63661),m=t(19377),x=t(49528);async function f(e,{params:r}){try{let{answer:t,cliTool:s,promptType:o,defaultOptionNumber:n}=await e.json();if(!t)return p.NextResponse.json({error:"answer is required"},{status:400});let i=(0,a.getDbInstance)(),f=(0,u.gU)(i,r.id);if(!f)return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let h=s||f.cliToolId||"claude",w=l.g.getInstance().getTool(h);if(!await w.isRunning(r.id))return p.NextResponse.json({error:`${w.name} session is not running`},{status:400});let q=w.getSessionName(r.id),g=null;try{let e=await (0,c.NA)(r.id,h,5e3),s=(0,m.vp)(e),o=(0,m.Sg)(h);if(!(g=(0,d.F)(s,o)).isPrompt)return p.NextResponse.json({success:!1,reason:"prompt_no_longer_active",answer:t})}catch{console.warn("[prompt-response] Failed to verify prompt state, proceeding with send")}try{await (0,x.z)({sessionName:q,answer:t,cliToolId:h,promptData:g?.promptData,fallbackPromptType:o,fallbackDefaultOptionNumber:n})}catch(r){let e=r instanceof Error?r.message:"Unknown error";return p.NextResponse.json({error:`Failed to send answer to tmux: ${e}`},{status:500})}return p.NextResponse.json({success:!0,answer:t})}catch(r){console.error("Failed to respond to prompt:",r);let e=r instanceof Error?r.message:"Internal server error";return p.NextResponse.json({error:e},{status:500})}}let h=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/prompt-response/route",pathname:"/api/worktrees/[id]/prompt-response",filename:"route",bundlePath:"app/api/worktrees/[id]/prompt-response/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/prompt-response/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:q,serverHooks:g}=h,v="/api/worktrees/[id]/prompt-response/route";function b(){return(0,i.patchFetch)({serverHooks:g,staticGenerationAsyncStorage:q})}},49528:(e,r,t)=>{t.d(r,{z:()=>i});var s=t(10927);let o=/^\[[ x]\] /;function n(e){if(0===e)return[];let r=e>0?"Down":"Up";return Array.from({length:Math.abs(e)},()=>r)}async function i(e){let{sessionName:r,answer:t,cliToolId:i,promptData:p,fallbackPromptType:a,fallbackDefaultOptionNumber:u}=e;if("claude"===i&&(p?.type==="multiple_choice"||"multiple_choice"===a)&&/^\d+$/.test(t)){let e;let i=parseInt(t,10),a=null;if(p?.type==="multiple_choice"){let r=(a=p.options).find(e=>e.isDefault);e=r?.number??1}else e=u??1;let l=i-e;if(null!==a&&a.some(e=>o.test(e.label))&&null!==a){let e=a.filter(e=>o.test(e.label)).length,t=[...n(l),"Space"];t.push(...n(e-i+1)),t.push("Enter"),await (0,s.hL)(r,t)}else{let e=[...n(l),"Enter"];await (0,s.hL)(r,e)}}else await (0,s.Is)(r,t,!1),await new Promise(e=>setTimeout(e,100)),await (0,s.Is)(r,"",!0)}}};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,7566,7536],()=>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")},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(43839),m=t(59991),c=t(63661),x=t(68507);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,7566,7536],()=>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(43839),m=t(59991),c=t(63661),x=t(68507);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.getDbInstance)(),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,7566,7536],()=>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")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>f,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var i={};r.r(i),r.d(i,{GET:()=>m,PATCH:()=>h});var o=r(49303),n=r(88716),s=r(60670),a=r(87070),u=r(97425),p=r(75748),c=r(43839),d=r(89194),l=r(13561),g=r(3979);async function m(e,{params:t}){try{let e;let r=(0,u.n)(),i=(0,p.gU)(r,t.id);if(!i)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=c.g.getInstance(),n={},s=!1,m=!1,h=!1;for(let e of["claude","codex","gemini"]){let i=o.getTool(e),a=await i.isRunning(t.id),u=!1,c=!1;if(a)try{let i=await (0,d.NA)(t.id,e,100),o=(0,l._)(i,e);u="waiting"===o.status,c="running"===o.status,!o.hasActivePrompt&&(0,p._U)(r,t.id,void 0,10,e).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,p.GP)(r,t.id,e)}catch{c=!0}n[e]={isRunning:a,isWaitingForResponse:u,isProcessing:c},a&&(s=!0),u&&(m=!0),c&&(h=!0)}try{let o=(0,p.Q7)(r,t.id);e=await (0,g.v)(i.path,o)}catch(e){console.error("[GET /api/worktrees/:id] Failed to get git status:",e)}return a.NextResponse.json({...i,gitStatus:e,isSessionRunning:s,isWaitingForResponse:m,isProcessing:h,sessionStatusByCli:n},{status:200})}catch(e){return console.error("Error fetching worktree:",e),a.NextResponse.json({error:"Failed to fetch worktree"},{status:500})}}async function h(e,{params:t}){try{let r=(0,u.n)();if(!(0,p.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let i=await e.json();"description"in i&&(0,p.xr)(r,t.id,i.description),"link"in i&&(0,p.y)(r,t.id,i.link),"favorite"in i&&"boolean"==typeof i.favorite&&(0,p.R3)(r,t.id,i.favorite),"status"in i&&["todo","doing","done",null].includes(i.status)&&(0,p.Nf)(r,t.id,i.status),"cliToolId"in i&&["claude","codex","gemini"].includes(i.cliToolId)&&(0,p.VW)(r,t.id,i.cliToolId);let o=(0,p.gU)(r,t.id),n=c.g.getInstance(),s=o?.cliToolId||"claude",d=n.getTool(s),l=await d.isRunning(t.id);return a.NextResponse.json({...o,isSessionRunning:l},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/route",pathname:"/api/worktrees/[id]",filename:"route",bundlePath:"app/api/worktrees/[id]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:x,staticGenerationAsyncStorage:w,serverHooks:v}=f,k="/api/worktrees/[id]/route";function q(){return(0,s.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}},3979:(e,t,r)=>{r.d(t,{v:()=>s});var i=r(61282);let o=(0,r(21764).promisify)(i.execFile);async function n(e,t){try{let{stdout:r}=await o("git",e,{cwd:t,timeout:1e3});return r.trim()}catch(t){return console.error("[git-utils] Git command failed:",{args:e,error:t instanceof Error?t.message:"Unknown error"}),null}}async function s(e,t){let r;let i=await n(["rev-parse","--abbrev-ref","HEAD"],e);r=null===i?"(unknown)":"HEAD"===i?"(detached HEAD)":i;let o=await n(["rev-parse","--short","HEAD"],e),s=await n(["status","--porcelain"],e);return{currentBranch:r,initialBranch:t,isBranchMismatch:null!==t&&"(unknown)"!==r&&"(detached HEAD)"!==r&&r!==t,commitHash:o??"(unknown)",isDirty:null!==s&&s.length>0}}},13561:(e,t,r)=>{r.d(t,{_:()=>n});var i=r(19377),o=r(63661);function n(e,t,r){let n=(0,i.vp)(e),s=n.split("\n"),a=s.length-1;for(;a>=0&&""===s[a].trim();)a--;let u=s.slice(0,a+1),p=u.slice(-15).join("\n"),c=u.slice(-5).join("\n"),d=(0,i.Sg)(t);if((0,o.F)(n,d).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,i.Wg)(t,c))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:l}=(0,i.bs)(t);return l.test(p)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:r&&Date.now()-r.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,3853,4893,7425,7566,7536],()=>r(46769));module.exports=i})();
1
+ "use strict";(()=>{var e={};e.id=4931,e.ids=[4931],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},46769:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>x,routeModule:()=>f,serverHooks:()=>v,staticGenerationAsyncStorage:()=>w});var i={};r.r(i),r.d(i,{GET:()=>m,PATCH:()=>h});var o=r(49303),n=r(88716),s=r(60670),a=r(87070),u=r(97425),c=r(75748),p=r(43839),d=r(89194),l=r(13561),g=r(3979);async function m(e,{params:t}){try{let e;let r=(0,u.getDbInstance)(),i=(0,c.gU)(r,t.id);if(!i)return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let o=p.g.getInstance(),n={},s=!1,m=!1,h=!1;for(let e of["claude","codex","gemini"]){let i=o.getTool(e),a=await i.isRunning(t.id),u=!1,p=!1;if(a)try{let i=await (0,d.NA)(t.id,e,100),o=(0,l._)(i,e);u="waiting"===o.status,p="running"===o.status,!o.hasActivePrompt&&(0,c._U)(r,t.id,void 0,10,e).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,c.GP)(r,t.id,e)}catch{p=!0}n[e]={isRunning:a,isWaitingForResponse:u,isProcessing:p},a&&(s=!0),u&&(m=!0),p&&(h=!0)}try{let o=(0,c.Q7)(r,t.id);e=await (0,g.v)(i.path,o)}catch(e){console.error("[GET /api/worktrees/:id] Failed to get git status:",e)}return a.NextResponse.json({...i,gitStatus:e,isSessionRunning:s,isWaitingForResponse:m,isProcessing:h,sessionStatusByCli:n},{status:200})}catch(e){return console.error("Error fetching worktree:",e),a.NextResponse.json({error:"Failed to fetch worktree"},{status:500})}}async function h(e,{params:t}){try{let r=(0,u.getDbInstance)();if(!(0,c.gU)(r,t.id))return a.NextResponse.json({error:`Worktree '${t.id}' not found`},{status:404});let i=await e.json();"description"in i&&(0,c.xr)(r,t.id,i.description),"link"in i&&(0,c.y)(r,t.id,i.link),"favorite"in i&&"boolean"==typeof i.favorite&&(0,c.R3)(r,t.id,i.favorite),"status"in i&&["todo","doing","done",null].includes(i.status)&&(0,c.Nf)(r,t.id,i.status),"cliToolId"in i&&["claude","codex","gemini"].includes(i.cliToolId)&&(0,c.VW)(r,t.id,i.cliToolId);let o=(0,c.gU)(r,t.id),n=p.g.getInstance(),s=o?.cliToolId||"claude",d=n.getTool(s),l=await d.isRunning(t.id);return a.NextResponse.json({...o,isSessionRunning:l},{status:200})}catch(e){return console.error("Error updating worktree:",e),a.NextResponse.json({error:"Failed to update worktree"},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/route",pathname:"/api/worktrees/[id]",filename:"route",bundlePath:"app/api/worktrees/[id]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/route.ts",nextConfigOutput:"",userland:i}),{requestAsyncStorage:x,staticGenerationAsyncStorage:w,serverHooks:v}=f,k="/api/worktrees/[id]/route";function q(){return(0,s.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:w})}},3979:(e,t,r)=>{r.d(t,{v:()=>s});var i=r(61282);let o=(0,r(21764).promisify)(i.execFile);async function n(e,t){try{let{stdout:r}=await o("git",e,{cwd:t,timeout:1e3});return r.trim()}catch(t){return console.error("[git-utils] Git command failed:",{args:e,error:t instanceof Error?t.message:"Unknown error"}),null}}async function s(e,t){let r;let i=await n(["rev-parse","--abbrev-ref","HEAD"],e);r=null===i?"(unknown)":"HEAD"===i?"(detached HEAD)":i;let o=await n(["rev-parse","--short","HEAD"],e),s=await n(["status","--porcelain"],e);return{currentBranch:r,initialBranch:t,isBranchMismatch:null!==t&&"(unknown)"!==r&&"(detached HEAD)"!==r&&r!==t,commitHash:o??"(unknown)",isDirty:null!==s&&s.length>0}}},13561:(e,t,r)=>{r.d(t,{_:()=>n});var i=r(19377),o=r(63661);function n(e,t,r){let n=(0,i.vp)(e),s=n.split("\n"),a=s.length-1;for(;a>=0&&""===s[a].trim();)a--;let u=s.slice(0,a+1),c=u.slice(-15).join("\n"),p=u.slice(-5).join("\n"),d=(0,i.Sg)(t);if((0,o.F)(n,d).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,i.Wg)(t,p))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:l}=(0,i.bs)(t);return l.test(c)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:r&&Date.now()-r.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[8948,5972,3853,4893,7425,7566,7536],()=>r(46769));module.exports=i})();
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var e={};e.id=5685,e.ids=[5685],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")},38943:(e,r,s)=>{s.r(r),s.d(r,{originalPathname:()=>I,patchFetch:()=>N,requestAsyncStorage:()=>R,routeModule:()=>g,serverHooks:()=>E,staticGenerationAsyncStorage:()=>v});var t={};s.r(t),s.d(t,{DELETE:()=>m,GET:()=>x,PUT:()=>f});var o=s(49303),n=s(88716),u=s(60670),i=s(87070),d=s(97425),a=s(75748),p=s(38693),l=s(95614),c=s(41124),h=s(8186);async function x(e,{params:r}){try{if(!(0,p.m$)(r.id))return i.NextResponse.json({error:"Invalid worktree ID format"},{status:400});if(!(0,l.wx)(r.scheduleId))return i.NextResponse.json({error:"Invalid schedule ID format"},{status:400});let e=(0,d.getDbInstance)();if(!(0,a.gU)(e,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let s=e.prepare("SELECT * FROM scheduled_executions WHERE id = ? AND worktree_id = ?").get(r.scheduleId,r.id);if(!s)return i.NextResponse.json({error:"Schedule not found"},{status:404});return i.NextResponse.json({schedule:s},{status:200})}catch(e){return console.error("Error fetching schedule:",e),i.NextResponse.json({error:"Failed to fetch schedule"},{status:500})}}async function f(e,{params:r}){try{if(!(0,p.m$)(r.id))return i.NextResponse.json({error:"Invalid worktree ID format"},{status:400});if(!(0,l.wx)(r.scheduleId))return i.NextResponse.json({error:"Invalid schedule ID format"},{status:400});let s=(0,d.getDbInstance)();if(!(0,a.gU)(s,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});if(!s.prepare("SELECT * FROM scheduled_executions WHERE id = ? AND worktree_id = ?").get(r.scheduleId,r.id))return i.NextResponse.json({error:"Schedule not found"},{status:404});let t=await e.json().catch(()=>({})),{cronExpression:o,cliToolId:n,enabled:u}=t,x=void 0!==t.name?"string"==typeof t.name?t.name.trim():"":void 0,f=void 0!==t.message?"string"==typeof t.message?t.message.trim():"":void 0;if(void 0!==x&&(!x||x.length>l.ME))return i.NextResponse.json({error:`name must be a non-empty string of ${l.ME} characters or less`},{status:400});if(void 0!==f&&(!f||f.length>l.xT))return i.NextResponse.json({error:`message must be a non-empty string of ${l.xT} characters or less`},{status:400});if(void 0!==o&&("string"!=typeof o||!(0,h.oU)(o)))return i.NextResponse.json({error:"Invalid cron expression format"},{status:400});if(void 0!==n&&!c.pu.has(n))return i.NextResponse.json({error:"Invalid CLI tool"},{status:400});let m=Date.now(),g=[],R=[];if(void 0!==x&&(g.push("name = ?"),R.push(x)),void 0!==f&&(g.push("message = ?"),R.push(f)),void 0!==o&&(g.push("cron_expression = ?"),R.push(o)),void 0!==n&&(g.push("cli_tool_id = ?"),R.push(n)),void 0!==u&&(g.push("enabled = ?"),R.push(u?1:0)),0===g.length)return i.NextResponse.json({error:"No fields to update"},{status:400});g.push("updated_at = ?"),R.push(m),R.push(r.scheduleId),R.push(r.id),s.prepare(`UPDATE scheduled_executions SET ${g.join(", ")} WHERE id = ? AND worktree_id = ?`).run(...R);let v=s.prepare("SELECT * FROM scheduled_executions WHERE id = ? AND worktree_id = ?").get(r.scheduleId,r.id);return i.NextResponse.json({schedule:v},{status:200})}catch(e){return console.error("Error updating schedule:",e),i.NextResponse.json({error:"Failed to update schedule"},{status:500})}}async function m(e,{params:r}){try{if(!(0,p.m$)(r.id))return i.NextResponse.json({error:"Invalid worktree ID format"},{status:400});if(!(0,l.wx)(r.scheduleId))return i.NextResponse.json({error:"Invalid schedule ID format"},{status:400});let e=(0,d.getDbInstance)();if(!(0,a.gU)(e,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let s=e.prepare("DELETE FROM scheduled_executions WHERE id = ? AND worktree_id = ?").run(r.scheduleId,r.id);if(0===s.changes)return i.NextResponse.json({error:"Schedule not found"},{status:404});return i.NextResponse.json({success:!0},{status:200})}catch(e){return console.error("Error deleting schedule:",e),i.NextResponse.json({error:"Failed to delete schedule"},{status:500})}}let g=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/schedules/[scheduleId]/route",pathname:"/api/worktrees/[id]/schedules/[scheduleId]",filename:"route",bundlePath:"app/api/worktrees/[id]/schedules/[scheduleId]/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/schedules/[scheduleId]/route.ts",nextConfigOutput:"",userland:t}),{requestAsyncStorage:R,staticGenerationAsyncStorage:v,serverHooks:E}=g,I="/api/worktrees/[id]/schedules/[scheduleId]/route";function N(){return(0,u.patchFetch)({serverHooks:E,staticGenerationAsyncStorage:v})}},8186:(e,r,s)=>{s.d(r,{C4:()=>t,oU:()=>o});let t=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F\u200B-\u200F\u2028-\u202F\uFEFF]/;function o(e){if(e.length>100)return!1;let r=e.trim().split(/\s+/);return r.length>=5&&r.length<=6}},95614:(e,r,s)=>{s.d(r,{ME:()=>t,wx:()=>u,xT:()=>o});let t=100,o=1e4,n=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function u(e){return n.test(e)}},41124:(e,r,s)=>{s.d(r,{U_:()=>o,pu:()=>t}),s(61282),s(19377);let t=new Set(["claude","codex"]);function o(){return globalThis.__scheduleActiveProcesses||(globalThis.__scheduleActiveProcesses=new Map),globalThis.__scheduleActiveProcesses}}};var r=require("../../../../../../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[8948,5972,3853,4893,2509,7425,7566,7536,8693],()=>s(38943));module.exports=t})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../../../data/cm.db","../../../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../../../node_modules/better-sqlite3/package.json","../../../../../../../../node_modules/bindings/bindings.js","../../../../../../../../node_modules/bindings/package.json","../../../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../../node_modules/next/package.json","../../../../../../../../package.json","../../../../../../../package.json","../../../../../../chunks/2509.js","../../../../../../chunks/3853.js","../../../../../../chunks/4893.js","../../../../../../chunks/5972.js","../../../../../../chunks/7425.js","../../../../../../chunks/7536.js","../../../../../../chunks/7566.js","../../../../../../chunks/8693.js","../../../../../../chunks/8948.js","../../../../../../webpack-runtime.js"]}
@@ -0,0 +1,4 @@
1
+ "use strict";(()=>{var e={};e.id=322,e.ids=[322],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")},24452:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>_,patchFetch:()=>j,requestAsyncStorage:()=>q,routeModule:()=>g,serverHooks:()=>E,staticGenerationAsyncStorage:()=>R});var s={};t.r(s),t.d(s,{GET:()=>f,POST:()=>m});var o=t(49303),n=t(88716),u=t(60670),i=t(87070),a=t(84770),p=t(97425),d=t(75748),l=t(38693),c=t(95614),x=t(41124),h=t(8186);async function f(e,{params:r}){try{if(!(0,l.m$)(r.id))return i.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let e=(0,p.getDbInstance)();if(!(0,d.gU)(e,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let t=e.prepare("SELECT * FROM scheduled_executions WHERE worktree_id = ? AND enabled = 1 ORDER BY created_at DESC").all(r.id);return i.NextResponse.json({schedules:t},{status:200})}catch(e){return console.error("Error fetching schedules:",e),i.NextResponse.json({error:"Failed to fetch schedules"},{status:500})}}async function m(e,{params:r}){try{if(!(0,l.m$)(r.id))return i.NextResponse.json({error:"Invalid worktree ID format"},{status:400});let t=(0,p.getDbInstance)();if(!(0,d.gU)(t,r.id))return i.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let s=await e.json().catch(()=>({})),{cronExpression:o,cliToolId:n,enabled:u}=s,f="string"==typeof s.name?s.name.trim():"",m="string"==typeof s.message?s.message.trim():"";if(!f)return i.NextResponse.json({error:"name is required"},{status:400});if(f.length>c.ME)return i.NextResponse.json({error:`name must be ${c.ME} characters or less`},{status:400});if(!m)return i.NextResponse.json({error:"message is required"},{status:400});if(m.length>c.xT)return i.NextResponse.json({error:`message must be ${c.xT} characters or less`},{status:400});if(!o||"string"!=typeof o)return i.NextResponse.json({error:"cronExpression is required"},{status:400});if(!(0,h.oU)(o))return i.NextResponse.json({error:"Invalid cron expression format"},{status:400});let g=n||"claude";if(!x.pu.has(g))return i.NextResponse.json({error:"Invalid CLI tool"},{status:400});let q=Date.now(),R=(0,a.randomUUID)();t.prepare(`
2
+ INSERT INTO scheduled_executions (id, worktree_id, name, message, cron_expression, cli_tool_id, enabled, created_at, updated_at)
3
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
4
+ `).run(R,r.id,f,m,o,g,!1!==u?1:0,q,q);let E=t.prepare("SELECT * FROM scheduled_executions WHERE id = ?").get(R);return i.NextResponse.json({schedule:E},{status:201})}catch(e){return console.error("Error creating schedule:",e),i.NextResponse.json({error:"Failed to create schedule"},{status:500})}}let g=new o.AppRouteRouteModule({definition:{kind:n.x.APP_ROUTE,page:"/api/worktrees/[id]/schedules/route",pathname:"/api/worktrees/[id]/schedules",filename:"route",bundlePath:"app/api/worktrees/[id]/schedules/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/schedules/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:q,staticGenerationAsyncStorage:R,serverHooks:E}=g,_="/api/worktrees/[id]/schedules/route";function j(){return(0,u.patchFetch)({serverHooks:E,staticGenerationAsyncStorage:R})}},8186:(e,r,t)=>{t.d(r,{C4:()=>s,oU:()=>o});let s=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F\u200B-\u200F\u2028-\u202F\uFEFF]/;function o(e){if(e.length>100)return!1;let r=e.trim().split(/\s+/);return r.length>=5&&r.length<=6}},95614:(e,r,t)=>{t.d(r,{ME:()=>s,wx:()=>u,xT:()=>o});let s=100,o=1e4,n=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function u(e){return n.test(e)}},41124:(e,r,t)=>{t.d(r,{U_:()=>o,pu:()=>s}),t(61282),t(19377);let s=new Set(["claude","codex"]);function o(){return globalThis.__scheduleActiveProcesses||(globalThis.__scheduleActiveProcesses=new Map),globalThis.__scheduleActiveProcesses}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,2509,7425,7566,7536,8693],()=>t(24452));module.exports=s})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../../data/cm.db","../../../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../../../node_modules/better-sqlite3/package.json","../../../../../../../node_modules/bindings/bindings.js","../../../../../../../node_modules/bindings/package.json","../../../../../../../node_modules/file-uri-to-path/index.js","../../../../../../../node_modules/file-uri-to-path/package.json","../../../../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../node_modules/next/package.json","../../../../../../../package.json","../../../../../../package.json","../../../../../chunks/2509.js","../../../../../chunks/3853.js","../../../../../chunks/4893.js","../../../../../chunks/5972.js","../../../../../chunks/7425.js","../../../../../chunks/7536.js","../../../../../chunks/7566.js","../../../../../chunks/8693.js","../../../../../chunks/8948.js","../../../../../webpack-runtime.js"]}
@@ -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")},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:()=>I,requestAsyncStorage:()=>T,routeModule:()=>S,serverHooks:()=>M,staticGenerationAsyncStorage:()=>A});var n={};r.r(n),r.d(n,{GET:()=>D});var o=r(49303),i=r(88716),s=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:i=p.bB.MAX_FILE_SIZE_PREVIEW,maxDepth:s=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:s,maxResults:o,maxFileSize:i,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:i,maxDepth:s,maxResults:a,signal:c}=r;if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(!(t>s)){if(n.results.length>=a){n.truncated=!0;return}if((0,f.j)(e,i)){try{o=await (0,l.readdir)(e)}catch{return}for(let s of o){if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(n.results.length>=a){n.truncated=!0;return}if((0,p.bS)(s))continue;let o=(0,d.join)(e,s);if((0,f.j)(o,i))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,s,e.size,r,n)}catch{continue}}}}}async function y(e,t,r,n,o){let i,s;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{i=await (0,l.readFile)(e)}catch{return}if(!i.includes(0)){try{s=i.toString("utf-8")}catch{return}if(s.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}(s,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 v(e,t){let r=t.timeoutMs??5e3,n=new AbortController,o=setTimeout(()=>n.abort(),r),i=Date.now();try{let r=await g(e,t,n.signal),o=Date.now()-i;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 E=r(43895);let b=(0,E.h)("api-search");async function D(e,{params:t}){let r=Date.now(),n=(0,E.Y)(),o=t.id,i=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 i.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 i.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 s=(0,c.n)(),l=(0,u.gU)(s,o);if(!l){let e=(0,p.dq)(o);return i.warn("search:worktree-not-found"),a.NextResponse.json({success:!1,error:{code:"WORKTREE_NOT_FOUND",message:e.error}},{status:e.status})}let d=await v(l.path,{query:r,maxResults:100,timeoutMs:5e3});return i.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 i.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 i.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 S=new o.AppRouteRouteModule({definition:{kind:i.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:T,staticGenerationAsyncStorage:A,serverHooks:M}=S,R="/api/worktrees/[id]/search/route";function I(){return(0,s.patchFetch)({serverHooks:M,staticGenerationAsyncStorage:A})}},81481:(e,t,r)=>{r.d(t,{Ab:()=>i,Db:()=>a,Kc:()=>s,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 i(e){return e?e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase():""}function s(e){let t=i(e),r=o.find(e=>e.extension===t);return r?.mimeType||"application/octet-stream"}function a(e){if(!e)return!1;let t=i(e);return n.includes(t)}function c(e,t){if(t.length>5242880)return{valid:!1,error:"File size exceeds 5MB limit"};if(".svg"===i(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=i(e),n=o.find(e=>e.extension===r);if(!n?.magicBytes)return".svg"===r;let s=n.magicBytesOffset||0;return!(t.length<s+n.magicBytes.length)&&n.magicBytes.every((e,r)=>t[s+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:()=>s,bS:()=>a,dq:()=>d});var n=r(20629),o=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 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 i=t?(0,o.join)(e,t):e;try{r=await (0,n.stat)(i)}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)(i),l=[];for(let e of u){if(a(e))continue;let t=(0,o.join)(i,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,birthtime:r.birthtime.toISOString()};t&&t.length>1&&(n.extension=t.slice(1)),l.push(n)}}catch{continue}if(l.length>=s.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(98838);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:/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]"}],i=/password|secret|token|key|auth/i,s={debug:0,info:1,warn:2,error:3};function a(e,t,r,a,c){let u=(0,n.LI)().level;if(s[e]<s[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))i.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:i,data:s,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=s?` ${JSON.stringify(s)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${f} ${i}${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:()=>i});var n=r(55315),o=r.n(n);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 n=o().resolve(t),i=o().resolve(t,r),s=o().relative(n,i);return!(s.startsWith("..")||o().isAbsolute(s))}}};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:()=>I,requestAsyncStorage:()=>T,routeModule:()=>S,serverHooks:()=>M,staticGenerationAsyncStorage:()=>A});var n={};r.r(n),r.d(n,{GET:()=>D});var o=r(49303),i=r(88716),s=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:i=p.bB.MAX_FILE_SIZE_PREVIEW,maxDepth:s=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:s,maxResults:o,maxFileSize:i,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:i,maxDepth:s,maxResults:a,signal:c}=r;if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(!(t>s)){if(n.results.length>=a){n.truncated=!0;return}if((0,f.j)(e,i)){try{o=await (0,l.readdir)(e)}catch{return}for(let s of o){if(c?.aborted)throw new DOMException("Search aborted","AbortError");if(n.results.length>=a){n.truncated=!0;return}if((0,p.bS)(s))continue;let o=(0,d.join)(e,s);if((0,f.j)(o,i))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,s,e.size,r,n)}catch{continue}}}}}async function y(e,t,r,n,o){let i,s;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{i=await (0,l.readFile)(e)}catch{return}if(!i.includes(0)){try{s=i.toString("utf-8")}catch{return}if(s.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}(s,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 v(e,t){let r=t.timeoutMs??5e3,n=new AbortController,o=setTimeout(()=>n.abort(),r),i=Date.now();try{let r=await g(e,t,n.signal),o=Date.now()-i;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 E=r(43895);let b=(0,E.h)("api-search");async function D(e,{params:t}){let r=Date.now(),n=(0,E.Y)(),o=t.id,i=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 i.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 i.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 s=(0,c.getDbInstance)(),l=(0,u.gU)(s,o);if(!l){let e=(0,p.dq)(o);return i.warn("search:worktree-not-found"),a.NextResponse.json({success:!1,error:{code:"WORKTREE_NOT_FOUND",message:e.error}},{status:e.status})}let d=await v(l.path,{query:r,maxResults:100,timeoutMs:5e3});return i.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 i.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 i.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 S=new o.AppRouteRouteModule({definition:{kind:i.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:T,staticGenerationAsyncStorage:A,serverHooks:M}=S,R="/api/worktrees/[id]/search/route";function I(){return(0,s.patchFetch)({serverHooks:M,staticGenerationAsyncStorage:A})}},81481:(e,t,r)=>{r.d(t,{Ab:()=>i,Db:()=>a,Kc:()=>s,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 i(e){return e?e.startsWith(".")?e.toLowerCase():"."+e.toLowerCase():""}function s(e){let t=i(e),r=o.find(e=>e.extension===t);return r?.mimeType||"application/octet-stream"}function a(e){if(!e)return!1;let t=i(e);return n.includes(t)}function c(e,t){if(t.length>5242880)return{valid:!1,error:"File size exceeds 5MB limit"};if(".svg"===i(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=i(e),n=o.find(e=>e.extension===r);if(!n?.magicBytes)return".svg"===r;let s=n.magicBytesOffset||0;return!(t.length<s+n.magicBytes.length)&&n.magicBytes.every((e,r)=>t[s+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:()=>s,bS:()=>a,dq:()=>d});var n=r(20629),o=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 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 i=t?(0,o.join)(e,t):e;try{r=await (0,n.stat)(i)}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)(i),l=[];for(let e of u){if(a(e))continue;let t=(0,o.join)(i,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,birthtime:r.birthtime.toISOString()};t&&t.length>1&&(n.extension=t.slice(1)),l.push(n)}}catch{continue}if(l.length>=s.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(98838);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:/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]"}],i=/password|secret|token|key|auth/i,s={debug:0,info:1,warn:2,error:3};function a(e,t,r,a,c){let u=(0,n.LI)().level;if(s[e]<s[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))i.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:i,data:s,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=s?` ${JSON.stringify(s)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${f} ${i}${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:()=>i});var n=r(55315),o=r.n(n);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 n=o().resolve(t),i=o().resolve(t,r),s=o().relative(n,i);return!(s.startsWith("..")||o().isAbsolute(s))}}};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")},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(43839),d=r(59991),p=r(89194),m=r(68507),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;for(;l>0&&""===a[l-1].trim();)l--;let c=l,{bufferReset:h,reason:x}=c>0&&i>25&&c+25<i?{bufferReset:!0,reason:"shrink"}:c>0&&i>50&&c<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};if(h&&console.log(`[savePendingAssistantResponse] Buffer reset detected (${x}): current=${c}, last=${i}`),!h&&c<=i)return c<i&&((0,u.IH)(e,t,r,c),console.log(`[savePendingAssistantResponse] Corrected stale position (${i} → ${c})`)),null;let v=a.slice(h?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()}(v,r):function(e,t){switch(t){case"claude":return(0,d.ci)(e);case"gemini":return(0,d.RJ)(e);default:return e.trim()}}(v,r);if(!w||""===w.trim())return(0,u.IH)(e,t,r,c),console.log(`[savePendingAssistantResponse] Cleaned response is empty, updating position to ${c}`),null;let $=new Date(s.getTime()-1),q=(0,u.tn)(e,{worktreeId:t,role:"assistant",content:w,messageType:"normal",timestamp:$,cliToolId:r});return(0,u.IH)(e,t,r,c),(0,m.ps)("message",{worktreeId:t,message:q}),console.log(`[savePendingAssistantResponse] Saved assistant response (lines ${i}-${c})`),q}catch(e){return console.error("[savePendingAssistantResponse] Error:",e),null}}var x=r(3979);let v=["claude","codex","gemini"];function w(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(!v.includes(o))return a.NextResponse.json({error:`Invalid CLI tool ID: ${o}. Must be one of: ${v.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: ${w(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}: ${w(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,7566,7536],()=>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:()=>b,patchFetch:()=>A,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(43839),d=r(59991),p=r(89194),m=r(68507),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;for(;l>0&&""===a[l-1].trim();)l--;let c=l,{bufferReset:h,reason:x}=c>0&&i>25&&c+25<i?{bufferReset:!0,reason:"shrink"}:c>0&&i>50&&c<50?{bufferReset:!0,reason:"restart"}:{bufferReset:!1,reason:null};if(h&&console.log(`[savePendingAssistantResponse] Buffer reset detected (${x}): current=${c}, last=${i}`),!h&&c<=i)return c<i&&((0,u.IH)(e,t,r,c),console.log(`[savePendingAssistantResponse] Corrected stale position (${i} → ${c})`)),null;let v=a.slice(h?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()}(v,r):function(e,t){switch(t){case"claude":return(0,d.ci)(e);case"gemini":return(0,d.RJ)(e);default:return e.trim()}}(v,r);if(!w||""===w.trim())return(0,u.IH)(e,t,r,c),console.log(`[savePendingAssistantResponse] Cleaned response is empty, updating position to ${c}`),null;let $=new Date(s.getTime()-1),q=(0,u.tn)(e,{worktreeId:t,role:"assistant",content:w,messageType:"normal",timestamp:$,cliToolId:r});return(0,u.IH)(e,t,r,c),(0,m.ps)("message",{worktreeId:t,message:q}),console.log(`[savePendingAssistantResponse] Saved assistant response (lines ${i}-${c})`),q}catch(e){return console.error("[savePendingAssistantResponse] Error:",e),null}}var x=r(3979);let v=["claude","codex","gemini"];function w(e){return e instanceof Error?e.message:"Unknown error"}async function $(e,{params:t}){try{let r=(0,l.getDbInstance)(),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(!v.includes(o))return a.NextResponse.json({error:`Invalid CLI tool ID: ${o}. Must be one of: ${v.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: ${w(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}: ${w(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,b="/api/worktrees/[id]/send/route";function A(){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,7566,7536],()=>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")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},88424:(e,a,t)=>{t.r(a),t.d(a,{originalPathname:()=>S,patchFetch:()=>y,requestAsyncStorage:()=>g,routeModule:()=>f,serverHooks:()=>P,staticGenerationAsyncStorage:()=>x});var r={};t.r(r),t.d(r,{GET:()=>h});var s=t(49303),o=t(88716),n=t(60670),d=t(87070),i=t(97425),c=t(75748),l=t(53013),u=t(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:""},{name:"new",description:"Start a new conversation in same session",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"undo",description:"Undo the last Codex action",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"logout",description:"Sign out from Codex",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"quit",description:"Exit Codex CLI",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"approvals",description:"Change auto-execution approval level",category:"standard-config",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"diff",description:"Show Git diff (including untracked files)",category:"standard-git",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"mention",description:"Attach file/folder for next interaction",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"mcp",description:"List available MCP tools",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"init",description:"Generate AGENTS.md template in current directory",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"feedback",description:"Send feedback to Codex team",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]}];var p=t(83513);async function h(e,{params:a}){try{var t,r;let{id:s}=await a,o=(0,i.n)(),n=(0,c.gU)(o,s);if(!n)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(t=n.path)||""===t.trim()||t.includes(".."))&&t.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=>t.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${s}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let h=(r=e.nextUrl.searchParams.get("cliTool"))&&p.t.includes(r)?r:"claude",f=(0,u.Xr)(m),g=[];try{g=await (0,l.HL)(n.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),g=[]}let x=(0,u.Nw)(f,g),P=(0,u.M6)(x,h),S=P.flatMap(e=>e.commands),y=S.filter(e=>"standard"===e.source).length,w=S.filter(e=>"worktree"===e.source).length,v=S.filter(e=>"skill"===e.source).length;return d.NextResponse.json({groups:P,sources:{standard:y,worktree:w,mcbd:0,skill:v},cliTool:h})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let f=new s.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:r}),{requestAsyncStorage:g,staticGenerationAsyncStorage:x,serverHooks:P}=f,S="/api/worktrees/[id]/slash-commands/route";function y(){return(0,n.patchFetch)({serverHooks:P,staticGenerationAsyncStorage:x})}},83513:(e,a,t)=>{t.d(a,{t:()=>r});let r=["claude","codex","gemini"]}};var a=require("../../../../../webpack-runtime.js");a.C(e);var t=e=>a(a.s=e),r=a.X(0,[8948,5972,3673,7425,3013],()=>t(88424));module.exports=r})();
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,a,t)=>{t.r(a),t.d(a,{originalPathname:()=>S,patchFetch:()=>y,requestAsyncStorage:()=>g,routeModule:()=>f,serverHooks:()=>P,staticGenerationAsyncStorage:()=>x});var r={};t.r(r),t.d(r,{GET:()=>h});var s=t(49303),o=t(88716),n=t(60670),d=t(87070),i=t(97425),c=t(75748),l=t(53013),u=t(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:""},{name:"new",description:"Start a new conversation in same session",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"undo",description:"Undo the last Codex action",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"logout",description:"Sign out from Codex",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"quit",description:"Exit Codex CLI",category:"standard-session",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"approvals",description:"Change auto-execution approval level",category:"standard-config",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"diff",description:"Show Git diff (including untracked files)",category:"standard-git",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"mention",description:"Attach file/folder for next interaction",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"mcp",description:"List available MCP tools",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"init",description:"Generate AGENTS.md template in current directory",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]},{name:"feedback",description:"Send feedback to Codex team",category:"standard-util",isStandard:!0,source:"standard",filePath:"",cliTools:["codex"]}];var p=t(83513);async function h(e,{params:a}){try{var t,r;let{id:s}=await a,o=(0,i.getDbInstance)(),n=(0,c.gU)(o,s);if(!n)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(t=n.path)||""===t.trim()||t.includes(".."))&&t.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=>t.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${s}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let h=(r=e.nextUrl.searchParams.get("cliTool"))&&p.t.includes(r)?r:"claude",f=(0,u.Xr)(m),g=[];try{g=await (0,l.HL)(n.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),g=[]}let x=(0,u.Nw)(f,g),P=(0,u.M6)(x,h),S=P.flatMap(e=>e.commands),y=S.filter(e=>"standard"===e.source).length,w=S.filter(e=>"worktree"===e.source).length,v=S.filter(e=>"skill"===e.source).length;return d.NextResponse.json({groups:P,sources:{standard:y,worktree:w,mcbd:0,skill:v},cliTool:h})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let f=new s.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:r}),{requestAsyncStorage:g,staticGenerationAsyncStorage:x,serverHooks:P}=f,S="/api/worktrees/[id]/slash-commands/route";function y(){return(0,n.patchFetch)({serverHooks:P,staticGenerationAsyncStorage:x})}},83513:(e,a,t)=>{t.d(a,{t:()=>r});let r=["claude","codex","gemini"]}};var a=require("../../../../../webpack-runtime.js");a.C(e);var t=e=>a(a.s=e),r=a.X(0,[8948,5972,3673,7425,3013],()=>t(88424));module.exports=r})();
@@ -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")},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,7566,7536],()=>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),a=t(97425),u=t(75748),l=t(59991);async function d(e,{params:r}){try{let t=(0,a.getDbInstance)();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,7566,7536],()=>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")},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,birthtime:r.birthtime.toISOString()};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),c=r(75748),d=r(18163),l=r(57440);async function p(e,{params:t}){try{let e=(0,u.getDbInstance)(),r=(0,c.gU)(e,t.id);if(!r){let e=(0,d.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,d.bS)(t)})){let e=(0,d.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,d.W)("Invalid path");return a.NextResponse.json({error:e.error},{status:e.status})}let n=await (0,d.Lu)(r.path,o);return a.NextResponse.json(n)}catch(t){console.error("Error reading directory:",t);let e=(0,d.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:()=>d,Lu:()=>c,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 c(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 c=await (0,o.readdir)(i),d=[];for(let e of c){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);d.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,birthtime:r.birthtime.toISOString()};t&&t.length>1&&(o.extension=t.slice(1)),d.push(o)}}catch{continue}if(d.length>=s.MAX_ITEMS_PER_DIR)break}let l=[...d].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 d(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")},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 i=r(49303),n=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 i.AppRouteRouteModule({definition:{kind:n.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),i=r(55315);let n=[".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 n){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 n=t?(0,i.join)(e,t):e;try{r=await (0,o.stat)(n)}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)(n),c=[];for(let e of d){if(a(e))continue;let t=(0,i.join)(n,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,i.extname)(e),o={name:e,type:"file",size:r.size,birthtime:r.birthtime.toISOString()};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,i.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,i.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 i=r(49303),n=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.getDbInstance)(),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 i.AppRouteRouteModule({definition:{kind:n.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),i=r(55315);let n=[".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 n){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 n=t?(0,i.join)(e,t):e;try{r=await (0,o.stat)(n)}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)(n),c=[];for(let e of d){if(a(e))continue;let t=(0,i.join)(n,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,i.extname)(e),o={name:e,type:"file",size:r.size,birthtime:r.birthtime.toISOString()};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,i.dirname)(t);p="."===e?"":e}return{path:t,name:t?(0,i.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")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},14276:(e,t,i)=>{i.r(t),i.d(t,{originalPathname:()=>w,patchFetch:()=>L,requestAsyncStorage:()=>g,routeModule:()=>N,serverHooks:()=>_,staticGenerationAsyncStorage:()=>T});var r={};i.r(r),i.d(r,{POST:()=>E});var a=i(49303),o=i(88716),n=i(60670),s=i(87070),l=i(97425),p=i(75748),u=i(55315),m=i(57440),d=i(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:".mp4",maxFileSize:15728640,allowedMimeTypes:["video/mp4"],magicBytes:[{bytes:[102,116,121,112],offset:4}]},{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"]}],y=c.map(e=>e.extension);function x(e){let t=e.toLowerCase();return c.find(e=>e.extension===t)}let I={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,i=500){if("string"==typeof e){let r=I[e]??i;return s.NextResponse.json({success:!1,error:{code:e,message:t}},{status:r})}let r=e.error?.code??"INTERNAL_ERROR",a=e.error?.message??"Unknown error",o=I[r]??i;return s.NextResponse.json({success:!1,error:{code:r,message:a}},{status:o})}async function E(e,{params:t}){try{let r;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{r=await e.formData()}catch{return f("INVALID_REQUEST","Invalid form data",400)}let I=r.get("file");if(!I||!(I instanceof File))return f("INVALID_REQUEST","File is required",400);let E=I.name,N=I.type,g=I.size,T=(0,u.extname)(E).toLowerCase();if(!function(e){if(!e)return!1;let t=e.toLowerCase();return y.includes(t)}(T))return f((0,d.wZ)("INVALID_EXTENSION"));if(!function(e,t){let i=x(e);return i?.allowedMimeTypes.includes(t)??!1}(T,N))return f((0,d.wZ)("INVALID_MIME_TYPE"));let _=function(e){let t=x(e);return t?.maxFileSize??5242880}(T);if(g>_)return f((0,d.wZ)("FILE_TOO_LARGE"));let w=await I.arrayBuffer(),L=Buffer.from(w);if(!function(e,t){let i=x(e);return!i?.magicBytes||0===i.magicBytes.length||i.magicBytes.some(e=>{let i=e.offset??0;return!(t.length<i+e.bytes.length)&&e.bytes.every((e,r)=>t[i+r]===e)})}(T,L))return f((0,d.wZ)("INVALID_MAGIC_BYTES"));if(!(0,d.TG)(E,{forUpload:!0}).valid)return f((0,d.wZ)("INVALID_FILENAME"));if(".yaml"===T||".yml"===T){var i;if(i=L.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(i)))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}if(".json"===T){let e=L.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 F=c?`${c}/${E}`:E,S=await (0,d.Kr)(o.path,F,L);if(!S.success)return f(S);return s.NextResponse.json({success:!0,path:S.path,filename:E,size:S.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:r}),{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 i=e=>t(t.s=e),r=t.X(0,[8948,5972,7425,8585],()=>i(14276));module.exports=r})();
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,i)=>{i.r(t),i.d(t,{originalPathname:()=>w,patchFetch:()=>L,requestAsyncStorage:()=>N,routeModule:()=>g,serverHooks:()=>_,staticGenerationAsyncStorage:()=>T});var r={};i.r(r),i.d(r,{POST:()=>E});var a=i(49303),o=i(88716),n=i(60670),s=i(87070),l=i(97425),p=i(75748),u=i(55315),m=i(57440),d=i(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:".mp4",maxFileSize:15728640,allowedMimeTypes:["video/mp4"],magicBytes:[{bytes:[102,116,121,112],offset:4}]},{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"]}],y=c.map(e=>e.extension);function x(e){let t=e.toLowerCase();return c.find(e=>e.extension===t)}let I={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,i=500){if("string"==typeof e){let r=I[e]??i;return s.NextResponse.json({success:!1,error:{code:e,message:t}},{status:r})}let r=e.error?.code??"INTERNAL_ERROR",a=e.error?.message??"Unknown error",o=I[r]??i;return s.NextResponse.json({success:!1,error:{code:r,message:a}},{status:o})}async function E(e,{params:t}){try{let r;let a=(0,l.getDbInstance)(),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{r=await e.formData()}catch{return f("INVALID_REQUEST","Invalid form data",400)}let I=r.get("file");if(!I||!(I instanceof File))return f("INVALID_REQUEST","File is required",400);let E=I.name,g=I.type,N=I.size,T=(0,u.extname)(E).toLowerCase();if(!function(e){if(!e)return!1;let t=e.toLowerCase();return y.includes(t)}(T))return f((0,d.wZ)("INVALID_EXTENSION"));if(!function(e,t){let i=x(e);return i?.allowedMimeTypes.includes(t)??!1}(T,g))return f((0,d.wZ)("INVALID_MIME_TYPE"));let _=function(e){let t=x(e);return t?.maxFileSize??5242880}(T);if(N>_)return f((0,d.wZ)("FILE_TOO_LARGE"));let w=await I.arrayBuffer(),L=Buffer.from(w);if(!function(e,t){let i=x(e);return!i?.magicBytes||0===i.magicBytes.length||i.magicBytes.some(e=>{let i=e.offset??0;return!(t.length<i+e.bytes.length)&&e.bytes.every((e,r)=>t[i+r]===e)})}(T,L))return f((0,d.wZ)("INVALID_MAGIC_BYTES"));if(!(0,d.TG)(E,{forUpload:!0}).valid)return f((0,d.wZ)("INVALID_FILENAME"));if(".yaml"===T||".yml"===T){var i;if(i=L.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(i)))return f((0,d.wZ)("INVALID_FILE_CONTENT"))}if(".json"===T){let e=L.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 F=c?`${c}/${E}`:E,S=await (0,d.Kr)(o.path,F,L);if(!S.success)return f(S);return s.NextResponse.json({success:!0,path:S.path,filename:E,size:S.size},{status:201})}catch(e){return console.error("Error uploading file:",e),f("INTERNAL_ERROR","Failed to upload file")}}let g=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:r}),{requestAsyncStorage:N,staticGenerationAsyncStorage:T,serverHooks:_}=g,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 i=e=>t(t.s=e),r=t.X(0,[8948,5972,7425,8585],()=>i(14276));module.exports=r})();
@@ -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")},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
+ "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.getDbInstance)();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})();