commandmate 0.1.12 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/.env.example +4 -9
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-build-manifest.json +24 -24
  4. package/.next/app-path-routes-manifest.json +1 -1
  5. package/.next/build-manifest.json +7 -7
  6. package/.next/cache/.tsbuildinfo +1 -1
  7. package/.next/cache/config.json +3 -3
  8. package/.next/cache/webpack/client-production/0.pack +0 -0
  9. package/.next/cache/webpack/client-production/1.pack +0 -0
  10. package/.next/cache/webpack/client-production/2.pack +0 -0
  11. package/.next/cache/webpack/client-production/index.pack +0 -0
  12. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  13. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  14. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  15. package/.next/cache/webpack/server-production/0.pack +0 -0
  16. package/.next/cache/webpack/server-production/index.pack +0 -0
  17. package/.next/next-server.js.nft.json +1 -1
  18. package/.next/prerender-manifest.json +1 -1
  19. package/.next/react-loadable-manifest.json +7 -7
  20. package/.next/required-server-files.json +1 -1
  21. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/_not-found.html +1 -1
  23. package/.next/server/app/_not-found.rsc +2 -2
  24. package/.next/server/app/api/hooks/claude-done/route.js +1 -19
  25. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  26. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  27. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  28. package/.next/server/app/api/repositories/clone/route.js +1 -1
  29. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  30. package/.next/server/app/api/repositories/excluded/route.js +36 -0
  31. package/.next/server/app/api/repositories/excluded/route.js.nft.json +1 -0
  32. package/.next/server/app/api/repositories/excluded.body +1 -0
  33. package/.next/server/app/api/repositories/excluded.meta +1 -0
  34. package/.next/server/app/api/repositories/restore/route.js +36 -0
  35. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -0
  36. package/.next/server/app/api/repositories/route.js +36 -1
  37. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  38. package/.next/server/app/api/repositories/scan/route.js +1 -1
  39. package/.next/server/app/api/repositories/sync/route.js +36 -1
  40. package/.next/server/app/api/slash-commands/route.js +1 -1
  41. package/.next/server/app/api/slash-commands.body +1 -1
  42. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  43. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  44. package/.next/server/app/api/worktrees/[id]/capture/route.js +2 -2
  45. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  46. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  47. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  48. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  49. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  50. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  51. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js +1 -1
  52. package/.next/server/app/api/worktrees/[id]/logs/route.js +1 -1
  53. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  54. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  55. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  56. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  57. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  58. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/worktrees/[id]/search/route.js +1 -1
  60. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  61. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  62. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  63. package/.next/server/app/api/worktrees/[id]/start-polling/route.js +1 -1
  64. package/.next/server/app/api/worktrees/[id]/start-polling/route.js.nft.json +1 -1
  65. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
  66. package/.next/server/app/api/worktrees/route.js +1 -1
  67. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  68. package/.next/server/app/index.html +2 -2
  69. package/.next/server/app/index.rsc +3 -3
  70. package/.next/server/app/page.js +7 -7
  71. package/.next/server/app/page.js.nft.json +1 -1
  72. package/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/proxy/[...path]/route.js +2 -2
  74. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/worktrees/[id]/page.js +4 -4
  76. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  77. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/worktrees/[id]/simple-terminal/page_client-reference-manifest.js +1 -1
  79. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app-paths-manifest.json +10 -8
  81. package/.next/server/chunks/5488.js +36 -0
  82. package/.next/server/chunks/6550.js +1 -1
  83. package/.next/server/chunks/7425.js +53 -50
  84. package/.next/server/chunks/7536.js +1 -0
  85. package/.next/server/chunks/8174.js +23 -0
  86. package/.next/server/chunks/9367.js +19 -0
  87. package/.next/server/middleware-build-manifest.js +1 -1
  88. package/.next/server/middleware-manifest.json +2 -28
  89. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  90. package/.next/server/pages/404.html +1 -1
  91. package/.next/server/pages/500.html +1 -1
  92. package/.next/server/server-reference-manifest.json +1 -1
  93. package/.next/static/chunks/4327.740cc7fe2d0b5049.js +60 -0
  94. package/.next/static/chunks/4343-ebe884a2a80eb033.js +1 -0
  95. package/.next/static/chunks/6568-38a33aa67d82e12b.js +1 -0
  96. package/.next/static/chunks/816-c254f4e2406e696a.js +1 -0
  97. package/.next/static/chunks/app/layout-4804cfba519283cf.js +1 -0
  98. package/.next/static/chunks/app/page-3926224c4cdf315b.js +1 -0
  99. package/.next/static/chunks/app/worktrees/[id]/page-8bd88bdc29607413.js +1 -0
  100. package/.next/static/chunks/main-b6d727aa9248d4f2.js +1 -0
  101. package/.next/static/chunks/{webpack-3fc79fab9bb738d7.js → webpack-4f85dcef6279c6ee.js} +1 -1
  102. package/.next/static/css/28be35e4727ae7ef.css +3 -0
  103. package/.next/trace +5 -5
  104. package/.next/types/app/api/repositories/excluded/route.ts +343 -0
  105. package/.next/types/app/api/repositories/restore/route.ts +343 -0
  106. package/README.md +2 -2
  107. package/dist/cli/commands/init.d.ts.map +1 -1
  108. package/dist/cli/commands/init.js +2 -13
  109. package/dist/cli/commands/start.d.ts.map +1 -1
  110. package/dist/cli/commands/start.js +3 -7
  111. package/dist/cli/config/security-messages.d.ts +11 -0
  112. package/dist/cli/config/security-messages.d.ts.map +1 -0
  113. package/dist/cli/config/security-messages.js +29 -0
  114. package/dist/cli/types/index.d.ts +0 -1
  115. package/dist/cli/types/index.d.ts.map +1 -1
  116. package/dist/cli/utils/daemon.d.ts.map +1 -1
  117. package/dist/cli/utils/daemon.js +3 -7
  118. package/dist/cli/utils/env-setup.d.ts +0 -4
  119. package/dist/cli/utils/env-setup.d.ts.map +1 -1
  120. package/dist/cli/utils/env-setup.js +0 -14
  121. package/dist/cli/utils/security-logger.d.ts.map +1 -1
  122. package/dist/cli/utils/security-logger.js +1 -2
  123. package/dist/server/server.js +25 -2
  124. package/dist/server/src/lib/auto-yes-manager.js +100 -11
  125. package/dist/server/src/lib/claude-poller.js +341 -0
  126. package/dist/server/src/lib/claude-session.js +48 -19
  127. package/dist/server/src/lib/cli-patterns.js +69 -6
  128. package/dist/server/src/lib/cli-tools/base.js +7 -1
  129. package/dist/server/src/lib/cli-tools/codex.js +14 -2
  130. package/dist/server/src/lib/cli-tools/manager.js +27 -0
  131. package/dist/server/src/lib/cli-tools/types.js +7 -0
  132. package/dist/server/src/lib/cli-tools/validation.js +41 -0
  133. package/dist/server/src/lib/db-repository.js +482 -0
  134. package/dist/server/src/lib/db.js +23 -0
  135. package/dist/server/src/lib/env.js +0 -17
  136. package/dist/server/src/lib/logger.js +0 -4
  137. package/dist/server/src/lib/prompt-detector.js +297 -109
  138. package/dist/server/src/lib/response-poller.js +73 -27
  139. package/dist/server/src/lib/tmux.js +48 -0
  140. package/dist/server/src/lib/ws-server.js +12 -1
  141. package/dist/server/src/types/sidebar.js +16 -31
  142. package/dist/server/src/types/slash-commands.js +2 -0
  143. package/package.json +1 -1
  144. package/.next/server/chunks/1318.js +0 -29
  145. package/.next/server/chunks/2597.js +0 -1
  146. package/.next/server/chunks/2648.js +0 -1
  147. package/.next/server/chunks/9703.js +0 -31
  148. package/.next/server/chunks/9723.js +0 -19
  149. package/.next/server/edge-runtime-webpack.js +0 -2
  150. package/.next/server/edge-runtime-webpack.js.map +0 -1
  151. package/.next/server/src/middleware.js +0 -14
  152. package/.next/server/src/middleware.js.map +0 -1
  153. package/.next/static/chunks/2853-d11a80b03c9a1640.js +0 -1
  154. package/.next/static/chunks/4327.3b84aa049900fdeb.js +0 -60
  155. package/.next/static/chunks/816-7e340dad784be28c.js +0 -1
  156. package/.next/static/chunks/9365-733d8c05712d2888.js +0 -1
  157. package/.next/static/chunks/app/layout-37e55f11dcc8b1bf.js +0 -1
  158. package/.next/static/chunks/app/page-fe35d61f14b90a51.js +0 -1
  159. package/.next/static/chunks/app/worktrees/[id]/page-58fcf2e63c056743.js +0 -1
  160. package/.next/static/chunks/main-a960f4a5e1a2f598.js +0 -1
  161. package/.next/static/css/376b339640084689.css +0 -3
  162. /package/.next/static/{564GHwluX5xIv9qpqLJV2 → oUD-A998xeBoez6zsrTH3}/_buildManifest.js +0 -0
  163. /package/.next/static/{564GHwluX5xIv9qpqLJV2 → oUD-A998xeBoez6zsrTH3}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../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/2597.js","../../../../../chunks/2648.js","../../../../../chunks/3853.js","../../../../../chunks/4893.js","../../../../../chunks/5972.js","../../../../../chunks/7425.js","../../../../../chunks/8948.js","../../../../../chunks/9723.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../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/3853.js","../../../../../chunks/4893.js","../../../../../chunks/5972.js","../../../../../chunks/7425.js","../../../../../chunks/7536.js","../../../../../chunks/8948.js","../../../../../chunks/9367.js","../../../../../webpack-runtime.js"]}
@@ -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,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>v,patchFetch:()=>y,requestAsyncStorage:()=>h,routeModule:()=>f,serverHooks:()=>w,staticGenerationAsyncStorage:()=>g});var a={};r.r(a),r.d(a,{GET:()=>p});var n=r(49303),o=r(88716),s=r(60670),d=r(87070),i=r(97425),c=r(75748),l=r(53013),u=r(38056);let m=[{name:"clear",description:"Clear conversation history",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"compact",description:"Compact context to reduce token usage",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"resume",description:"Resume previous conversation",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"rewind",description:"Rewind to previous conversation state",category:"standard-session",isStandard:!0,source:"standard",filePath:""},{name:"config",description:"Open configuration settings",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"model",description:"Switch AI model",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"permissions",description:"View or update tool permissions",category:"standard-config",isStandard:!0,source:"standard",filePath:""},{name:"status",description:"Check session status",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"context",description:"Show context window usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"cost",description:"Display token and cost usage",category:"standard-monitor",isStandard:!0,source:"standard",filePath:""},{name:"review",description:"Review code changes",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"pr-comments",description:"Show PR comments",category:"standard-git",isStandard:!0,source:"standard",filePath:""},{name:"help",description:"Show all available commands",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"doctor",description:"Check installation health",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"export",description:"Export conversation history",category:"standard-util",isStandard:!0,source:"standard",filePath:""},{name:"todos",description:"Show TODO list",category:"standard-util",isStandard:!0,source:"standard",filePath:""}];async function p(e,{params:t}){try{var r;let{id:e}=await t,a=(0,i.n)(),n=(0,c.gU)(a,e);if(!n)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(r=n.path)||""===r.trim()||r.includes(".."))&&r.startsWith("/")&&(function(){let e=process.env.ALLOWED_WORKTREE_PATHS;return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):["/Users","/home","/var","/tmp","/opt"]})().some(e=>r.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${e}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let o=(0,u.Xr)(m),s=[];try{s=await (0,l.HL)(n.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),s=[]}let p=(0,u.Nw)(o,s),f=m.length,h=(0,u.SU)(s);return d.NextResponse.json({groups:p,sources:{standard:f,worktree:h,mcbd:0}})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let f=new n.AppRouteRouteModule({definition:{kind:o.x.APP_ROUTE,page:"/api/worktrees/[id]/slash-commands/route",pathname:"/api/worktrees/[id]/slash-commands",filename:"route",bundlePath:"app/api/worktrees/[id]/slash-commands/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/slash-commands/route.ts",nextConfigOutput:"",userland:a}),{requestAsyncStorage:h,staticGenerationAsyncStorage:g,serverHooks:w}=f,v="/api/worktrees/[id]/slash-commands/route";function y(){return(0,s.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:g})}},38056:(e,t,r)=>{r.d(t,{Nw:()=>s,SU:()=>d,Xr:()=>o});var a=r(35835);let n=["planning","development","review","documentation","workflow","standard-session","standard-config","standard-monitor","standard-git","standard-util"];function o(e){if(0===e.length)return[];let t=new Map;for(let r of e){let e=t.get(r.category)||[];e.push(r),t.set(r.category,e)}let r=[];for(let e of n){let n=t.get(e);n&&n.length>0&&r.push({category:e,label:a.H[e],commands:n})}for(let[e,o]of t)!n.includes(e)&&o.length>0&&r.push({category:e,label:a.H[e]||e,commands:o});return r}function s(e,t){let r=new Map;for(let t of e)for(let e of t.commands)r.set(e.name,{...e,source:e.source||"standard"});for(let e of t)for(let t of e.commands)r.set(t.name,{...t,source:t.source||"worktree"});return o(Array.from(r.values()))}function d(e){return e.reduce((e,t)=>e+t.commands.length,0)}},53013:(e,t,r)=>{r.d(t,{HL:()=>u});var a=r(92048),n=r(55315),o=r(3673),s=r.n(o),d=r(35835),i=r(38056);let c=null;async function l(e){let t=function(e){let t=e||process.cwd();return n.join(t,".claude","commands")}(e);if(!a.existsSync(t))return console.warn(`Commands directory not found: ${t}`),[];let r=a.readdirSync(t).filter(e=>e.endsWith(".md")),o=[];for(let e of r){let r=function(e){try{let t=a.readFileSync(e,"utf-8"),{data:r}=s()(t),o=n.basename(e,".md"),i=d.c[o]||"workflow";return{name:o,description:r.description||"",category:i,model:r.model,filePath:n.relative(process.cwd(),e)}}catch(t){return console.error(`Error parsing command file ${e}:`,t),null}}(n.join(t,e));r&&o.push(r)}return o.sort((e,t)=>e.name.localeCompare(t.name)),c=o,o}async function u(e){let t=e?await l(e):c||await l();return(0,i.Xr)(t)}},35835:(e,t,r)=>{r.d(t,{H:()=>a,c:()=>n});let a={planning:"Planning",development:"Development",review:"Review",documentation:"Documentation",workflow:"Workflow","standard-session":"Standard (Session)","standard-config":"Standard (Config)","standard-monitor":"Standard (Monitor)","standard-git":"Standard (Git)","standard-util":"Standard (Utility)"},n={"work-plan":"planning","issue-create":"planning","issue-split":"planning","design-policy":"planning","tdd-impl":"development","bug-fix":"development",refactoring:"development","architecture-review":"review","acceptance-test":"review","progress-report":"documentation","create-pr":"workflow","pm-auto-dev":"workflow"}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),a=t.X(0,[8948,5972,3673,7425],()=>r(88424));module.exports=a})();
1
+ "use strict";(()=>{var e={};e.id=7479,e.ids=[7479],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},88424:(e,t,a)=>{a.r(t),a.d(t,{originalPathname:()=>S,patchFetch:()=>v,requestAsyncStorage:()=>g,routeModule:()=>h,serverHooks:()=>y,staticGenerationAsyncStorage:()=>w});var r={};a.r(r),a.d(r,{GET:()=>f});var o=a(49303),n=a(88716),s=a(60670),d=a(87070),i=a(97425),c=a(75748),l=a(53013),u=a(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=a(83513);async function f(e,{params:t}){try{var a,r;let{id:o}=await t,n=(0,i.n)(),s=(0,c.gU)(n,o);if(!s)return d.NextResponse.json({error:"Worktree not found"},{status:404});if(!(!(!(a=s.path)||""===a.trim()||a.includes(".."))&&a.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=>a.startsWith(e))))return console.error(`[slash-commands API] Invalid worktree path detected: ${o}`),d.NextResponse.json({error:"Invalid worktree configuration"},{status:400});let f=(r=e.nextUrl.searchParams.get("cliTool"))&&p.t.includes(r)?r:"claude",h=(0,u.Xr)(m),g=[];try{g=await (0,l.HL)(s.path)}catch(e){console.warn(`[slash-commands API] Could not load worktree commands: ${e}`),g=[]}let w=(0,u.Nw)(h,g),y=(0,u.M6)(w,f),S=y.flatMap(e=>e.commands).filter(e=>"standard"===e.source).length,v=y.flatMap(e=>e.commands).filter(e=>"worktree"===e.source).length;return d.NextResponse.json({groups:y,sources:{standard:S,worktree:v,mcbd:0},cliTool:f})}catch(e){return console.error("[slash-commands API] Error:",e),d.NextResponse.json({error:"Failed to load slash commands"},{status:500})}}let h=new o.AppRouteRouteModule({definition:{kind:n.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:w,serverHooks:y}=h,S="/api/worktrees/[id]/slash-commands/route";function v(){return(0,s.patchFetch)({serverHooks:y,staticGenerationAsyncStorage:w})}},83513:(e,t,a)=>{a.d(t,{t:()=>r});let r=["claude","codex","gemini"]},38056:(e,t,a)=>{a.d(t,{M6:()=>d,Nw:()=>s,Xr:()=>n});var r=a(35835);let o=["planning","development","review","documentation","workflow","standard-session","standard-config","standard-monitor","standard-git","standard-util"];function n(e){if(0===e.length)return[];let t=new Map;for(let a of e){let e=t.get(a.category)||[];e.push(a),t.set(a.category,e)}let a=[];for(let e of o){let o=t.get(e);o&&o.length>0&&a.push({category:e,label:r.H[e],commands:o})}for(let[e,n]of t)!o.includes(e)&&n.length>0&&a.push({category:e,label:r.H[e]||e,commands:n});return a}function s(e,t){let a=new Map;for(let t of e)for(let e of t.commands)a.set(e.name,{...e,source:e.source||"standard"});for(let e of t)for(let t of e.commands)a.set(t.name,{...t,source:t.source||"worktree"});return n(Array.from(a.values()))}function d(e,t){return e.map(e=>({...e,commands:e.commands.filter(e=>e.cliTools?e.cliTools.includes(t):"claude"===t)})).filter(e=>e.commands.length>0)}},53013:(e,t,a)=>{a.d(t,{HL:()=>u});var r=a(92048),o=a(55315),n=a(3673),s=a.n(n),d=a(35835),i=a(38056);let c=null;async function l(e){let t=function(e){let t=e||process.cwd();return o.join(t,".claude","commands")}(e);if(!r.existsSync(t))return console.warn(`Commands directory not found: ${t}`),[];let a=r.readdirSync(t).filter(e=>e.endsWith(".md")),n=[];for(let e of a){let a=function(e){try{let t=r.readFileSync(e,"utf-8"),{data:a}=s()(t),n=o.basename(e,".md"),i=d.c[n]||"workflow";return{name:n,description:a.description||"",category:i,model:a.model,filePath:o.relative(process.cwd(),e)}}catch(t){return console.error(`Error parsing command file ${e}:`,t),null}}(o.join(t,e));a&&n.push(a)}return n.sort((e,t)=>e.name.localeCompare(t.name)),c=n,n}async function u(e){let t=e?await l(e):c||await l();return(0,i.Xr)(t)}},35835:(e,t,a)=>{a.d(t,{H:()=>r,c:()=>o});let r={planning:"Planning",development:"Development",review:"Review",documentation:"Documentation",workflow:"Workflow","standard-session":"Standard (Session)","standard-config":"Standard (Config)","standard-monitor":"Standard (Monitor)","standard-git":"Standard (Git)","standard-util":"Standard (Utility)"},o={"work-plan":"planning","issue-create":"planning","issue-split":"planning","design-policy":"planning","tdd-impl":"development","bug-fix":"development",refactoring:"development","architecture-review":"review","acceptance-test":"review","progress-report":"documentation","create-pr":"workflow","pm-auto-dev":"workflow"}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var a=e=>t(t.s=e),r=t.X(0,[8948,5972,3673,7425],()=>a(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,2648,2597,9723],()=>t(51057));module.exports=o})();
1
+ "use strict";(()=>{var e={};e.id=9086,e.ids=[9086],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},51057:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>m,patchFetch:()=>f,requestAsyncStorage:()=>x,routeModule:()=>c,serverHooks:()=>q,staticGenerationAsyncStorage:()=>g});var o={};t.r(o),t.d(o,{POST:()=>d});var s=t(49303),i=t(88716),n=t(60670),p=t(87070),u=t(97425),a=t(75748),l=t(59991);async function d(e,{params:r}){try{let t=(0,u.n)();if(!(0,a.gU)(t,r.id))return p.NextResponse.json({error:`Worktree '${r.id}' not found`},{status:404});let o=await e.json(),s=["claude","codex","gemini"];if(!o.cliToolId||!s.includes(o.cliToolId))return p.NextResponse.json({error:`Invalid CLI tool ID. Must be one of: ${s.join(", ")}`},{status:400});return console.log(`[API] Manually starting polling for ${r.id} (${o.cliToolId})`),(0,l.cn)(r.id,o.cliToolId),p.NextResponse.json({success:!0,message:`Started polling for ${o.cliToolId} session`})}catch(e){return console.error("Error starting polling:",e),p.NextResponse.json({error:"Failed to start polling"},{status:500})}}let c=new s.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/start-polling/route",pathname:"/api/worktrees/[id]/start-polling",filename:"route",bundlePath:"app/api/worktrees/[id]/start-polling/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/start-polling/route.ts",nextConfigOutput:"",userland:o}),{requestAsyncStorage:x,staticGenerationAsyncStorage:g,serverHooks:q}=c,m="/api/worktrees/[id]/start-polling/route";function f(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:g})}}};var r=require("../../../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),o=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(51057));module.exports=o})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../../../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/2597.js","../../../../../chunks/2648.js","../../../../../chunks/3853.js","../../../../../chunks/4893.js","../../../../../chunks/5972.js","../../../../../chunks/7425.js","../../../../../chunks/8948.js","../../../../../chunks/9723.js","../../../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../../../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/3853.js","../../../../../chunks/4893.js","../../../../../chunks/5972.js","../../../../../chunks/7425.js","../../../../../chunks/7536.js","../../../../../chunks/8948.js","../../../../../chunks/9367.js","../../../../../webpack-runtime.js"]}
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=7586,e.ids=[7586],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},35135:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>x,patchFetch:()=>y,requestAsyncStorage:()=>l,routeModule:()=>d,serverHooks:()=>w,staticGenerationAsyncStorage:()=>p});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),i=r(88716),o=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,command:n}=await e.json();if(!s||!n)return a.NextResponse.json({error:"Missing cliToolId or command"},{status:400});let i=(r=t.id,`mcbd-${s}-${r}`);return await u.Hk(i)||await u.ed(i,process.cwd()),await m(i,n),a.NextResponse.json({success:!0})}catch(e){return console.error("Terminal API error:",e),a.NextResponse.json({error:e.message},{status:500})}}async function m(e,t){await u.Is(e,t)}let d=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/terminal/route",pathname:"/api/worktrees/[id]/terminal",filename:"route",bundlePath:"app/api/worktrees/[id]/terminal/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/terminal/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:l,staticGenerationAsyncStorage:p,serverHooks:w}=d,x="/api/worktrees/[id]/terminal/route";function y(){return(0,o.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:p})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>c,Hk:()=>i,Is:()=>a,ZV:()=>m,ed:()=>o,xq:()=>u});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function i(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function o(e,t){let r,s,i;"string"==typeof e?(r=e,s=t,i=5e4):(r=e.sessionName,s=e.workingDirectory,i=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${i}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),i=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(i,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}async function u(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function c(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function m(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(35135));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=7586,e.ids=[7586],e.modules={20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},21764:e=>{e.exports=require("util")},35135:(e,t,r)=>{r.r(t),r.d(t,{originalPathname:()=>h,patchFetch:()=>f,requestAsyncStorage:()=>d,routeModule:()=>m,serverHooks:()=>w,staticGenerationAsyncStorage:()=>p});var s={};r.r(s),r.d(s,{POST:()=>c});var n=r(49303),i=r(88716),o=r(60670),a=r(87070),u=r(10927);async function c(e,{params:t}){try{var r;let{cliToolId:s,command:n}=await e.json();if(!s||!n)return a.NextResponse.json({error:"Missing cliToolId or command"},{status:400});let i=(r=t.id,`mcbd-${s}-${r}`);return await u.Hk(i)||await u.ed(i,process.cwd()),await l(i,n),a.NextResponse.json({success:!0})}catch(e){return console.error("Terminal API error:",e),a.NextResponse.json({error:e.message},{status:500})}}async function l(e,t){await u.Is(e,t)}let m=new n.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/[id]/terminal/route",pathname:"/api/worktrees/[id]/terminal",filename:"route",bundlePath:"app/api/worktrees/[id]/terminal/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/[id]/terminal/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:d,staticGenerationAsyncStorage:p,serverHooks:w}=m,h="/api/worktrees/[id]/terminal/route";function f(){return(0,o.patchFetch)({serverHooks:w,staticGenerationAsyncStorage:p})}},10927:(e,t,r)=>{r.d(t,{AJ:()=>m,Hk:()=>i,Is:()=>a,ZV:()=>d,ed:()=>o,hL:()=>c,xq:()=>l});var s=r(61282);let n=(0,r(21764).promisify)(s.exec);async function i(e){try{return await n(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function o(e,t){let r,s,i;"string"==typeof e?(r=e,s=t,i=5e4):(r=e.sessionName,s=e.workingDirectory,i=e.historyLimit||5e4);try{await n(`tmux new-session -d -s "${r}" -c "${s}"`,{timeout:5e3}),await n(`tmux set-option -t "${r}" history-limit ${i}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function a(e,t,r=!0){let s=t.replace(/'/g,"'\\''"),i=r?`tmux send-keys -t "${e}" '${s}' C-m`:`tmux send-keys -t "${e}" '${s}'`;try{await n(i,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}let u=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC"]);async function c(e,t){if(0!==t.length){for(let e of t)if(!u.has(e))throw Error(`Invalid special key: ${e}`);try{for(let r=0;r<t.length;r++){let s=`tmux send-keys -t "${e}" ${t[r]}`;await n(s,{timeout:5e3}),r<t.length-1&&await new Promise(e=>setTimeout(e,100))}}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special keys to tmux session: ${e}`)}}}async function l(e,t){let r,s;"number"==typeof t?(r=-t,s="-"):t?(r=t.startLine??-1e4,s=t.endLine??"-"):(r=-1e3,s="-");try{let{stdout:t}=await n(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${s}`,{timeout:5e3,maxBuffer:10485760});return t}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to capture pane: ${e}`)}}async function m(e){try{return await n(`tmux kill-session -t "${e}"`,{timeout:5e3}),!0}catch(t){let e=t instanceof Error?t.message:String(t);if(e?.includes("no server running")||e?.includes("can't find session"))return!1;throw Error(`Failed to kill tmux session: ${e}`)}}async function d(e,t){try{await n(`tmux send-keys -t "${e}" ${t}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send special key: ${e}`)}}}};var t=require("../../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),s=t.X(0,[8948,5972],()=>r(35135));module.exports=s})();
@@ -1 +1 @@
1
- "use strict";(()=>{var e={};e.id=3058,e.ids=[3058],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},92048:e=>{e.exports=require("fs")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},21764:e=>{e.exports=require("util")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>k,patchFetch:()=>q,requestAsyncStorage:()=>w,routeModule:()=>h,serverHooks:()=>v,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>g,dynamic:()=>x});var o=t(49303),i=t(88716),a=t(60670),n=t(87070),p=t(97425),u=t(75748),c=t(97213),d=t(89194),l=t(19377),m=t(63661);let x="force-dynamic";async function g(e){try{let r=(0,p.n)(),t=e.nextUrl?.searchParams,s=t?.get("repository"),o=(0,u.Xv)(r,s||void 0),i=c.g.getInstance(),a=["claude","codex","gemini"],x=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,n=!1;for(let p of a){let a=i.getTool(p),c=await a.isRunning(e.id),x=!1,g=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l.vp)(t),o=(0,m.F)(s);if(o.isPrompt)x=!0;else{let e=s.split("\n").filter(e=>""!==e.trim()).slice(-15).join("\n");(0,l.Wg)(p,e)?g=!0:/^[>❯](\s*$|\s+\S)/m.test(e)||(g=!0)}!o.isPrompt&&(0,u._U)(r,e.id,void 0,10,p).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,u.GP)(r,e.id,p)}catch{g=!0}t[p]={isRunning:c,isWaitingForResponse:x,isProcessing:g},c&&(s=!0),x&&(o=!0),g&&(n=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:n,sessionStatusByCli:t}})),g=(0,u.ER)(r);return n.NextResponse.json({worktrees:x,repositories:g},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),n.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let h=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/route",pathname:"/api/worktrees",filename:"route",bundlePath:"app/api/worktrees/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:w,staticGenerationAsyncStorage:f,serverHooks:v}=h,k="/api/worktrees/route";function q(){return(0,a.patchFetch)({serverHooks:v,staticGenerationAsyncStorage:f})}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,7425,2648,2597],()=>t(17679));module.exports=s})();
1
+ "use strict";(()=>{var e={};e.id=3058,e.ids=[3058],e.modules={85890:e=>{e.exports=require("better-sqlite3")},20399:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},30517:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},78893:e=>{e.exports=require("buffer")},61282:e=>{e.exports=require("child_process")},84770:e=>{e.exports=require("crypto")},17702:e=>{e.exports=require("events")},92048:e=>{e.exports=require("fs")},20629:e=>{e.exports=require("fs/promises")},32615:e=>{e.exports=require("http")},35240:e=>{e.exports=require("https")},98216:e=>{e.exports=require("net")},19801:e=>{e.exports=require("os")},55315:e=>{e.exports=require("path")},76162:e=>{e.exports=require("stream")},82452:e=>{e.exports=require("tls")},17360:e=>{e.exports=require("url")},21764:e=>{e.exports=require("util")},71568:e=>{e.exports=require("zlib")},17679:(e,r,t)=>{t.r(r),t.d(r,{originalPathname:()=>v,patchFetch:()=>w,requestAsyncStorage:()=>x,routeModule:()=>g,serverHooks:()=>q,staticGenerationAsyncStorage:()=>f});var s={};t.r(s),t.d(s,{GET:()=>h,dynamic:()=>m});var o=t(49303),i=t(88716),n=t(60670),a=t(87070),p=t(97425),u=t(75748),c=t(43839),d=t(89194),l=t(13561);let m="force-dynamic";async function h(e){try{let r=(0,p.n)(),t=e.nextUrl?.searchParams,s=t?.get("repository"),o=(0,u.Xv)(r,s||void 0),i=c.g.getInstance(),n=["claude","codex","gemini"],m=await Promise.all(o.map(async e=>{let t={},s=!1,o=!1,a=!1;for(let p of n){let n=i.getTool(p),c=await n.isRunning(e.id),m=!1,h=!1;if(c)try{let t=await (0,d.NA)(e.id,p,100),s=(0,l._)(t,p);m="waiting"===s.status,h="running"===s.status,!s.hasActivePrompt&&(0,u._U)(r,e.id,void 0,10,p).some(e=>"prompt"===e.messageType&&e.promptData?.status!=="answered")&&(0,u.GP)(r,e.id,p)}catch{h=!0}t[p]={isRunning:c,isWaitingForResponse:m,isProcessing:h},c&&(s=!0),m&&(o=!0),h&&(a=!0)}return{...e,isSessionRunning:s,isWaitingForResponse:o,isProcessing:a,sessionStatusByCli:t}})),h=(0,u.ER)(r);return a.NextResponse.json({worktrees:m,repositories:h},{status:200})}catch(e){return console.error("Error fetching worktrees:",e),a.NextResponse.json({error:"Failed to fetch worktrees"},{status:500})}}let g=new o.AppRouteRouteModule({definition:{kind:i.x.APP_ROUTE,page:"/api/worktrees/route",pathname:"/api/worktrees",filename:"route",bundlePath:"app/api/worktrees/route"},resolvedPagePath:"/home/runner/work/CommandMate/CommandMate/src/app/api/worktrees/route.ts",nextConfigOutput:"",userland:s}),{requestAsyncStorage:x,staticGenerationAsyncStorage:f,serverHooks:q}=g,v="/api/worktrees/route";function w(){return(0,n.patchFetch)({serverHooks:q,staticGenerationAsyncStorage:f})}},13561:(e,r,t)=>{t.d(r,{_:()=>i});var s=t(19377),o=t(63661);function i(e,r,t){let i=(0,s.vp)(e).split("\n"),n=i.length-1;for(;n>=0&&""===i[n].trim();)n--;let a=i.slice(0,n+1),p=a.slice(-15).join("\n"),u=a.slice(-5).join("\n"),c=(0,s.Sg)(r);if((0,o.F)(p,c).isPrompt)return{status:"waiting",confidence:"high",reason:"prompt_detected",hasActivePrompt:!0};if((0,s.Wg)(r,u))return{status:"running",confidence:"high",reason:"thinking_indicator",hasActivePrompt:!1};let{promptPattern:d}=(0,s.bs)(r);return d.test(p)?{status:"ready",confidence:"high",reason:"input_prompt",hasActivePrompt:!1}:t&&Date.now()-t.getTime()>5e3?{status:"ready",confidence:"low",reason:"no_recent_output",hasActivePrompt:!1}:{status:"running",confidence:"low",reason:"default",hasActivePrompt:!1}}}};var r=require("../../../webpack-runtime.js");r.C(e);var t=e=>r(r.s=e),s=r.X(0,[8948,5972,3853,4893,7425,9367,7536],()=>t(17679));module.exports=s})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../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/2597.js","../../../chunks/2648.js","../../../chunks/5972.js","../../../chunks/7425.js","../../../chunks/8948.js","../../../webpack-runtime.js"]}
1
+ {"version":1,"files":["../../../../../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/3853.js","../../../chunks/4893.js","../../../chunks/5972.js","../../../chunks/7425.js","../../../chunks/7536.js","../../../chunks/8948.js","../../../chunks/9367.js","../../../webpack-runtime.js"]}
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/376b339640084689.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3fc79fab9bb738d7.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/7648-325564a6e12a3257.js" async=""></script><script src="/_next/static/chunks/9365-733d8c05712d2888.js" async=""></script><script src="/_next/static/chunks/6725-f7607851b7d57eb1.js" async=""></script><script src="/_next/static/chunks/816-7e340dad784be28c.js" async=""></script><script src="/_next/static/chunks/2853-d11a80b03c9a1640.js" async=""></script><script src="/_next/static/chunks/app/page-fe35d61f14b90a51.js" async=""></script><script src="/_next/static/chunks/app/layout-37e55f11dcc8b1bf.js" async=""></script><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><link rel="icon" href="/icon.png?32d9127ba30ee286" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon.png?31a89e65aa4ac65b" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div data-testid="app-shell" class="h-screen flex"><aside data-testid="sidebar-container" class="
1
+ <!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/28be35e4727ae7ef.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4f85dcef6279c6ee.js"/><script src="/_next/static/chunks/fd9d1056-bbe86e4ae099d5cd.js" async=""></script><script src="/_next/static/chunks/2117-d845c2cd62e344a6.js" async=""></script><script src="/_next/static/chunks/main-app-420d93e43682fee5.js" async=""></script><script src="/_next/static/chunks/7648-325564a6e12a3257.js" async=""></script><script src="/_next/static/chunks/4343-ebe884a2a80eb033.js" async=""></script><script src="/_next/static/chunks/6725-f7607851b7d57eb1.js" async=""></script><script src="/_next/static/chunks/816-c254f4e2406e696a.js" async=""></script><script src="/_next/static/chunks/6568-38a33aa67d82e12b.js" async=""></script><script src="/_next/static/chunks/app/page-3926224c4cdf315b.js" async=""></script><script src="/_next/static/chunks/app/layout-4804cfba519283cf.js" async=""></script><title>CommandMate</title><meta name="description" content="Git worktree management with Claude CLI and tmux sessions"/><link rel="icon" href="/icon.png?32d9127ba30ee286" type="image/png" sizes="32x32"/><link rel="apple-touch-icon" href="/apple-icon.png?31a89e65aa4ac65b" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-gray-50"><div data-testid="app-shell" class="h-screen flex"><aside data-testid="sidebar-container" class="
2
2
  fixed left-0 top-0 h-full w-72
3
3
  transform transition-transform duration-300 ease-out
4
4
  translate-x-0
@@ -6,4 +6,4 @@
6
6
  flex-1 min-w-0 h-full overflow-hidden
7
7
  transition-[padding] duration-300 ease-out
8
8
  md:pl-72
9
- " role="main"><div class="container-custom py-8 overflow-auto h-full"><div class="mb-8"><h1 class="mb-2">CommandMate</h1><p class="text-lg text-gray-600">Git worktree management with Claude CLI and tmux sessions</p></div><div class="mb-8"><div class="space-y-4"><div class="flex gap-2 flex-wrap"><button class="btn btn-primary btn-sm">+ Add Repository</button><button class="btn btn-secondary btn-sm">Sync All</button></div></div></div><div class="space-y-6"><div class="flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between"><div class="flex items-center gap-2 flex-wrap"><span class="badge badge-gray">0<!-- --> branches</span></div><div class="flex gap-2 w-full sm:w-auto"><button class="btn btn-secondary btn-sm opacity-50 cursor-not-allowed" disabled="">Loading...</button></div></div><div class="flex flex-col sm:flex-row gap-3"><input type="text" placeholder="Search worktrees..." class="input flex-1" value=""/></div><div class="flex gap-2 flex-wrap items-center"><button class="btn btn-primary btn-sm">All</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">📝 ToDo</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">🚧 Doing</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">✅ Done</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Not set</button></div><div class="flex gap-2 flex-wrap"><span class="text-sm text-gray-600 self-center">Sort by:</span><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">⭐ Favorite </button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Name </button><button class="btn btn-primary btn-sm">Updated <!-- -->↓</button></div><div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"></div><p class="mt-4 text-gray-600">Loading worktrees...</p></div></div><div class="mt-8"><div class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold text-gray-900">External Apps</h2><button class="btn btn-primary btn-sm">+ Add App</button></div><div class="card p-6"><div class="flex items-center justify-center py-8"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="ml-3 text-gray-600">Loading apps...</span></div></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-3fc79fab9bb738d7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/376b339640084689.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[19107,[],\"ClientPageRoot\"]\n5:I[89707,[\"7648\",\"static/chunks/7648-325564a6e12a3257.js\",\"9365\",\"static/chunks/9365-733d8c05712d2888.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"2853\",\"static/chunks/2853-d11a80b03c9a1640.js\",\"1931\",\"static/chunks/app/page-fe35d61f14b90a51.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-7e340dad784be28c.js\",\"3185\",\"static/chunks/app/layout-37e55f11dcc8b1bf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"564GHwluX5xIv9qpqLJV2\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/376b339640084689.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.png?32d9127ba30ee286\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?31a89e65aa4ac65b\",\"type\":\"image/png\",\"sizes\":\"180x180\"}]]\n3:null\n"])</script></body></html>
9
+ " role="main"><div class="container-custom py-8 overflow-auto h-full"><div class="mb-8"><h1 class="mb-2">CommandMate</h1><p class="text-lg text-gray-600">Git worktree management with Claude CLI and tmux sessions</p></div><div class="mb-8"><div class="space-y-4"><div class="flex gap-2 flex-wrap"><button class="btn btn-primary btn-sm">+ Add Repository</button><button class="btn btn-secondary btn-sm">Sync All</button></div></div></div><div class="space-y-6"><div class="flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between"><div class="flex items-center gap-2 flex-wrap"><span class="badge badge-gray">0<!-- --> branches</span></div><div class="flex gap-2 w-full sm:w-auto"><button class="btn btn-secondary btn-sm opacity-50 cursor-not-allowed" disabled="">Loading...</button></div></div><div class="flex flex-col sm:flex-row gap-3"><input type="text" placeholder="Search worktrees..." class="input flex-1" value=""/></div><div class="flex gap-2 flex-wrap items-center"><button class="btn btn-primary btn-sm">All</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">📝 ToDo</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">🚧 Doing</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">✅ Done</button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Not set</button></div><div class="flex gap-2 flex-wrap"><span class="text-sm text-gray-600 self-center">Sort by:</span><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">⭐ Favorite </button><button class="btn bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500 btn-sm">Name </button><button class="btn btn-primary btn-sm">Updated <!-- -->↓</button></div><div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-blue-600"></div><p class="mt-4 text-gray-600">Loading worktrees...</p></div></div><div class="mt-8"><div class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold text-gray-900">External Apps</h2><button class="btn btn-primary btn-sm">+ Add App</button></div><div class="card p-6"><div class="flex items-center justify-center py-8"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="ml-3 text-gray-600">Loading apps...</span></div></div></div></div></div></main></div><script src="/_next/static/chunks/webpack-4f85dcef6279c6ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/28be35e4727ae7ef.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[12846,[],\"\"]\n4:I[19107,[],\"ClientPageRoot\"]\n5:I[89707,[\"7648\",\"static/chunks/7648-325564a6e12a3257.js\",\"4343\",\"static/chunks/4343-ebe884a2a80eb033.js\",\"6725\",\"static/chunks/6725-f7607851b7d57eb1.js\",\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"6568\",\"static/chunks/6568-38a33aa67d82e12b.js\",\"1931\",\"static/chunks/app/page-3926224c4cdf315b.js\"],\"default\",1]\n6:I[91795,[\"816\",\"static/chunks/816-c254f4e2406e696a.js\",\"3185\",\"static/chunks/app/layout-4804cfba519283cf.js\"],\"AppProviders\"]\n7:I[4707,[],\"\"]\n8:I[36423,[],\"\"]\na:I[61060,[],\"\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"oUD-A998xeBoez6zsrTH3\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/28be35e4727ae7ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-gray-50\",\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"CommandMate\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Git worktree management with Claude CLI and tmux sessions\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/icon.png?32d9127ba30ee286\",\"type\":\"image/png\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?31a89e65aa4ac65b\",\"type\":\"image/png\",\"sizes\":\"180x180\"}]]\n3:null\n"])</script></body></html>
@@ -1,8 +1,8 @@
1
1
  2:I[19107,[],"ClientPageRoot"]
2
- 3:I[89707,["7648","static/chunks/7648-325564a6e12a3257.js","9365","static/chunks/9365-733d8c05712d2888.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-7e340dad784be28c.js","2853","static/chunks/2853-d11a80b03c9a1640.js","1931","static/chunks/app/page-fe35d61f14b90a51.js"],"default",1]
3
- 4:I[91795,["816","static/chunks/816-7e340dad784be28c.js","3185","static/chunks/app/layout-37e55f11dcc8b1bf.js"],"AppProviders"]
2
+ 3:I[89707,["7648","static/chunks/7648-325564a6e12a3257.js","4343","static/chunks/4343-ebe884a2a80eb033.js","6725","static/chunks/6725-f7607851b7d57eb1.js","816","static/chunks/816-c254f4e2406e696a.js","6568","static/chunks/6568-38a33aa67d82e12b.js","1931","static/chunks/app/page-3926224c4cdf315b.js"],"default",1]
3
+ 4:I[91795,["816","static/chunks/816-c254f4e2406e696a.js","3185","static/chunks/app/layout-4804cfba519283cf.js"],"AppProviders"]
4
4
  5:I[4707,[],""]
5
5
  6:I[36423,[],""]
6
- 0:["564GHwluX5xIv9qpqLJV2",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/376b339640084689.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
6
+ 0:["oUD-A998xeBoez6zsrTH3",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/28be35e4727ae7ef.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ja","children":["$","body",null,{"className":"min-h-screen bg-gray-50","children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]],null],null],["$L7",null]]]]
7
7
  7:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"CommandMate"}],["$","meta","3",{"name":"description","content":"Git worktree management with Claude CLI and tmux sessions"}],["$","link","4",{"rel":"icon","href":"/icon.png?32d9127ba30ee286","type":"image/png","sizes":"32x32"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-icon.png?31a89e65aa4ac65b","type":"image/png","sizes":"180x180"}]]
8
8
  1:null