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,4 +1,4 @@
1
- "use strict";exports.id=7425,exports.ids=[7425],exports.modules={97425:(e,t,r)=>{r.d(t,{n:()=>p});var s=r(85890),a=r.n(s),o=r(55315),i=r.n(o),_=r(75748);let n=[{version:1,name:"initial-schema",up:e=>{(0,_.qZ)(e)},down:e=>{e.exec("DROP TABLE IF EXISTS session_states;"),e.exec("DROP TABLE IF EXISTS chat_messages;"),e.exec("DROP TABLE IF EXISTS worktrees;")}},{version:2,name:"add-multi-repo-and-memo-support",up:e=>{e.exec(`
1
+ "use strict";exports.id=7425,exports.ids=[7425],exports.modules={43753:(e,t,s)=>{s.d(t,{F:()=>a});let r=["/etc","/usr","/bin","/sbin","/var","/tmp","/dev","/sys","/proc"];function a(e){return r.some(t=>e.startsWith(t))}},97425:(e,t,s)=>{s.d(t,{n:()=>p});var r=s(85890),a=s.n(r),o=s(55315),i=s.n(o),_=s(75748);let n=[{version:1,name:"initial-schema",up:e=>{(0,_.qZ)(e)},down:e=>{e.exec("DROP TABLE IF EXISTS session_states;"),e.exec("DROP TABLE IF EXISTS chat_messages;"),e.exec("DROP TABLE IF EXISTS worktrees;")}},{version:2,name:"add-multi-repo-and-memo-support",up:e=>{e.exec(`
2
2
  ALTER TABLE worktrees ADD COLUMN repository_path TEXT;
3
3
  ALTER TABLE worktrees ADD COLUMN repository_name TEXT;
4
4
  ALTER TABLE worktrees ADD COLUMN memo TEXT;
@@ -7,23 +7,23 @@
7
7
  `),e.exec(`
8
8
  CREATE INDEX IF NOT EXISTS idx_worktrees_repository
9
9
  ON worktrees(repository_path);
10
- `);let t=e.prepare("SELECT id, path FROM worktrees").all(),r=e.prepare(`
10
+ `);let t=e.prepare("SELECT id, path FROM worktrees").all(),s=e.prepare(`
11
11
  UPDATE worktrees
12
12
  SET repository_path = ?,
13
13
  repository_name = ?
14
14
  WHERE id = ?
15
- `);for(let e of t){let t=E(e.path),s=i().basename(t);r.run(t,s,e.id)}let s=e.prepare(`
15
+ `);for(let e of t){let t=E(e.path),r=i().basename(t);s.run(t,r,e.id)}let r=e.prepare(`
16
16
  UPDATE worktrees
17
17
  SET last_user_message = ?,
18
18
  last_user_message_at = ?
19
19
  WHERE id = ?
20
- `);for(let r of t){let t=e.prepare(`
20
+ `);for(let s of t){let t=e.prepare(`
21
21
  SELECT content, timestamp
22
22
  FROM chat_messages
23
23
  WHERE worktree_id = ? AND role = 'user'
24
24
  ORDER BY timestamp DESC
25
25
  LIMIT 1
26
- `).get(r.id);if(t){let e=t.content.substring(0,200);s.run(e,t.timestamp,r.id)}}},down:e=>{e.exec(`
26
+ `).get(s.id);if(t){let e=t.content.substring(0,200);r.run(e,t.timestamp,s.id)}}},down:e=>{e.exec(`
27
27
  -- Create backup table
28
28
  CREATE TABLE worktrees_backup AS
29
29
  SELECT id, name, path, last_message_summary, updated_at
@@ -51,12 +51,12 @@
51
51
 
52
52
  -- Drop index
53
53
  DROP INDEX IF EXISTS idx_worktrees_repository;
54
- `)}},{version:3,name:"fix-worktree-repository-paths",up:e=>{let t=e.prepare("SELECT id, path FROM worktrees").all(),r=e.prepare(`
54
+ `)}},{version:3,name:"fix-worktree-repository-paths",up:e=>{let t=e.prepare("SELECT id, path FROM worktrees").all(),s=e.prepare(`
55
55
  UPDATE worktrees
56
56
  SET repository_path = ?,
57
57
  repository_name = ?
58
58
  WHERE id = ?
59
- `);for(let e of t){let t=E(e.path),s=i().basename(t);r.run(t,s,e.id)}},down:()=>{console.log("No rollback needed for repository path fix")}},{version:4,name:"add-favorite-field",up:e=>{e.exec(`
59
+ `);for(let e of t){let t=E(e.path),r=i().basename(t);s.run(t,r,e.id)}},down:()=>{console.log("No rollback needed for repository path fix")}},{version:4,name:"add-favorite-field",up:e=>{e.exec(`
60
60
  ALTER TABLE worktrees ADD COLUMN favorite INTEGER DEFAULT 0;
61
61
  `),e.exec(`
62
62
  CREATE INDEX IF NOT EXISTS idx_worktrees_favorite
@@ -175,12 +175,12 @@
175
175
  `),e.exec(`
176
176
  CREATE INDEX idx_worktree_memos_worktree
177
177
  ON worktree_memos(worktree_id, position);
178
- `);let{randomUUID:t}=r(84770),s=e.prepare(`
178
+ `);let{randomUUID:t}=s(84770),r=e.prepare(`
179
179
  SELECT id, memo FROM worktrees WHERE memo IS NOT NULL AND memo != ''
180
180
  `).all(),a=e.prepare(`
181
181
  INSERT INTO worktree_memos (id, worktree_id, title, content, position, created_at, updated_at)
182
182
  VALUES (?, ?, 'Memo', ?, 0, ?, ?)
183
- `),o=Date.now();for(let e of s)a.run(t(),e.id,e.memo,o,o);console.log(`āœ“ Created worktree_memos table`),console.log(`āœ“ Migrated ${s.length} existing memos to new table`)},down:e=>{e.exec("DROP TABLE IF EXISTS worktree_memos"),console.log("āœ“ Dropped worktree_memos table")}},{version:11,name:"add-viewed-tracking",up:e=>{e.exec(`
183
+ `),o=Date.now();for(let e of r)a.run(t(),e.id,e.memo,o,o);console.log(`āœ“ Created worktree_memos table`),console.log(`āœ“ Migrated ${r.length} existing memos to new table`)},down:e=>{e.exec("DROP TABLE IF EXISTS worktree_memos"),console.log("āœ“ Dropped worktree_memos table")}},{version:11,name:"add-viewed-tracking",up:e=>{e.exec(`
184
184
  ALTER TABLE worktrees ADD COLUMN last_viewed_at TEXT;
185
185
  `),e.exec(`
186
186
  CREATE INDEX IF NOT EXISTS idx_chat_messages_assistant_latest
@@ -372,16 +372,16 @@
372
372
  -- 6. Recreate original indexes
373
373
  CREATE INDEX idx_external_apps_path_prefix ON external_apps(path_prefix);
374
374
  CREATE INDEX idx_external_apps_enabled ON external_apps(enabled);
375
- `),console.log("āœ“ Removed issue_no column from external_apps table")}}];function E(e){let t=r(92048),s=e;for(;s!==i().dirname(s);){let e=i().join(s,".git");if(t.existsSync(e)){let r=t.statSync(e);if(r.isDirectory())return s;if(r.isFile()){let r=t.readFileSync(e,"utf-8").trim().match(/^gitdir:\s*(.+)$/);if(r)return r[1].split("/.git/")[0]}}s=i().dirname(s)}return e}function l(e){try{let t=e.prepare("SELECT MAX(version) as version FROM schema_version").get();return t?.version??0}catch{return 0}}var d=r(93346);let T=null;function p(){if(!T){let e=(0,d.dU)().CM_DB_PATH,t=r(92048),s=i().dirname(e);t.existsSync(s)||t.mkdirSync(s,{recursive:!0,mode:448}),function(e){!function(e){e.exec(`
375
+ `),console.log("āœ“ Removed issue_no column from external_apps table")}}];function E(e){let t=s(92048),r=e;for(;r!==i().dirname(r);){let e=i().join(r,".git");if(t.existsSync(e)){let s=t.statSync(e);if(s.isDirectory())return r;if(s.isFile()){let s=t.readFileSync(e,"utf-8").trim().match(/^gitdir:\s*(.+)$/);if(s)return s[1].split("/.git/")[0]}}r=i().dirname(r)}return e}function l(e){try{let t=e.prepare("SELECT MAX(version) as version FROM schema_version").get();return t?.version??0}catch{return 0}}var d=s(57569);let T=null;function p(){if(!T){let e=(0,d.dU)().CM_DB_PATH,t=s(92048),r=i().dirname(e);t.existsSync(r)||t.mkdirSync(r,{recursive:!0,mode:448}),function(e){!function(e){e.exec(`
376
376
  CREATE TABLE IF NOT EXISTS schema_version (
377
377
  version INTEGER PRIMARY KEY,
378
378
  name TEXT NOT NULL,
379
379
  applied_at INTEGER NOT NULL
380
380
  );
381
- `)}(e);let t=l(e);console.log(`Current schema version: ${t}`);let r=n.filter(e=>e.version>t);if(0===r.length){console.log("āœ“ Schema is up to date");return}for(let t of(console.log(`Found ${r.length} pending migration(s)`),r)){console.log(`Applying migration ${t.version}: ${t.name}...`);try{e.transaction(()=>{t.up(e),e.prepare(`
381
+ `)}(e);let t=l(e);console.log(`Current schema version: ${t}`);let s=n.filter(e=>e.version>t);if(0===s.length){console.log("āœ“ Schema is up to date");return}for(let t of(console.log(`Found ${s.length} pending migration(s)`),s)){console.log(`Applying migration ${t.version}: ${t.name}...`);try{e.transaction(()=>{t.up(e),e.prepare(`
382
382
  INSERT INTO schema_version (version, name, applied_at)
383
383
  VALUES (?, ?, ?)
384
- `).run(t.version,t.name,Date.now())})(),console.log(`āœ“ Migration ${t.version} applied successfully`)}catch(r){let e=r instanceof Error?r.message:String(r);throw console.error(`āœ— Migration ${t.version} failed:`,e),Error(`Migration ${t.version} (${t.name}) failed: ${e}`)}}console.log(`āœ“ All migrations completed. Current version: ${l(e)}`)}(T=new(a())(e))}return T}},75748:(e,t,r)=>{r.d(t,{DF:()=>b,Db:()=>h,ER:()=>_,Ek:()=>M,GA:()=>A,GP:()=>g,HE:()=>u,IH:()=>L,Mf:()=>R,Nf:()=>S,Nr:()=>U,OK:()=>I,Of:()=>T,Pv:()=>y,Q7:()=>F,R3:()=>D,S$:()=>O,VW:()=>k,Xv:()=>i,ZI:()=>X,_U:()=>c,_e:()=>f,dD:()=>x,gU:()=>n,j8:()=>w,ly:()=>E,pM:()=>v,qZ:()=>o,tn:()=>p,vX:()=>m,xr:()=>l,y:()=>d,zl:()=>N});var s=r(84770);function a(e){return{id:e.id,worktreeId:e.worktree_id,role:e.role,content:e.content,summary:e.summary||void 0,timestamp:new Date(e.timestamp),logFileName:e.log_file_name||void 0,requestId:e.request_id||void 0,messageType:e.message_type||"normal",promptData:e.prompt_data?JSON.parse(e.prompt_data):void 0,cliToolId:e.cli_tool_id??"claude"}}function o(e){e.exec(`
384
+ `).run(t.version,t.name,Date.now())})(),console.log(`āœ“ Migration ${t.version} applied successfully`)}catch(s){let e=s instanceof Error?s.message:String(s);throw console.error(`āœ— Migration ${t.version} failed:`,e),Error(`Migration ${t.version} (${t.name}) failed: ${e}`)}}console.log(`āœ“ All migrations completed. Current version: ${l(e)}`)}(T=new(a())(e))}return T}},75748:(e,t,s)=>{s.d(t,{DF:()=>b,Db:()=>X,ER:()=>_,Ek:()=>y,GA:()=>A,GP:()=>D,GZ:()=>N,HE:()=>u,IH:()=>R,Mf:()=>w,Nf:()=>k,Nr:()=>f,OK:()=>g,Of:()=>T,Pv:()=>v,Q7:()=>M,R3:()=>S,S$:()=>O,VW:()=>C,Xv:()=>i,ZI:()=>x,_U:()=>c,_e:()=>F,dD:()=>U,gU:()=>n,j8:()=>I,ly:()=>E,pM:()=>B,qZ:()=>o,tn:()=>p,vX:()=>m,xr:()=>l,y:()=>d,zl:()=>L});var r=s(84770);function a(e){return{id:e.id,worktreeId:e.worktree_id,role:e.role,content:e.content,summary:e.summary||void 0,timestamp:new Date(e.timestamp),logFileName:e.log_file_name||void 0,requestId:e.request_id||void 0,messageType:e.message_type||"normal",promptData:e.prompt_data?JSON.parse(e.prompt_data):void 0,cliToolId:e.cli_tool_id??"claude"}}function o(e){e.exec(`
385
385
  CREATE TABLE IF NOT EXISTS worktrees (
386
386
  id TEXT PRIMARY KEY,
387
387
  name TEXT NOT NULL,
@@ -429,7 +429,7 @@
429
429
  PRIMARY KEY (worktree_id, cli_tool_id),
430
430
  FOREIGN KEY (worktree_id) REFERENCES worktrees(id) ON DELETE CASCADE
431
431
  );
432
- `)}function i(e,t){let r=`
432
+ `)}function i(e,t){let s=`
433
433
  SELECT
434
434
  w.id, w.name, w.path, w.repository_path, w.repository_name, w.description,
435
435
  w.last_user_message, w.last_user_message_at, w.last_message_summary,
@@ -437,7 +437,7 @@
437
437
  (SELECT MAX(timestamp) FROM chat_messages
438
438
  WHERE worktree_id = w.id AND role = 'assistant') as last_assistant_message_at
439
439
  FROM worktrees w
440
- `,s=[];t&&(r+=" WHERE w.repository_path = ?",s.push(t)),r+=" ORDER BY w.updated_at DESC NULLS LAST";let a=e.prepare(r).all(...s),o=function(e,t){if(0===t.length)return new Map;let r=t.map(()=>"?").join(","),s=e.prepare(`
440
+ `,r=[];t&&(s+=" WHERE w.repository_path = ?",r.push(t)),s+=" ORDER BY w.updated_at DESC NULLS LAST";let a=e.prepare(s).all(...r),o=function(e,t){if(0===t.length)return new Map;let s=t.map(()=>"?").join(","),r=e.prepare(`
441
441
  WITH ranked_messages AS (
442
442
  SELECT
443
443
  worktree_id,
@@ -448,14 +448,14 @@
448
448
  ORDER BY timestamp DESC
449
449
  ) as rn
450
450
  FROM chat_messages
451
- WHERE worktree_id IN (${r})
451
+ WHERE worktree_id IN (${s})
452
452
  AND role = 'user'
453
453
  AND cli_tool_id IN ('claude', 'codex', 'gemini')
454
454
  )
455
455
  SELECT worktree_id, cli_tool_id, content
456
456
  FROM ranked_messages
457
457
  WHERE rn = 1
458
- `).all(...t),a=new Map;for(let e of t)a.set(e,{});for(let e of s){let t=a.get(e.worktree_id)||{};t[e.cli_tool_id]=e.content.substring(0,50),a.set(e.worktree_id,t)}return a}(e,a.map(e=>e.id));return a.map(e=>{let t=o.get(e.id)||{};return{id:e.id,name:e.name,path:e.path,repositoryPath:e.repository_path||"",repositoryName:e.repository_name||"",description:e.description||void 0,lastUserMessage:e.last_user_message||void 0,lastUserMessageAt:e.last_user_message_at?new Date(e.last_user_message_at):void 0,lastMessageSummary:e.last_message_summary||void 0,lastMessagesByCli:t,updatedAt:e.updated_at?new Date(e.updated_at):void 0,lastViewedAt:e.last_viewed_at?new Date(e.last_viewed_at):void 0,lastAssistantMessageAt:e.last_assistant_message_at?new Date(e.last_assistant_message_at):void 0,favorite:1===e.favorite,status:e.status||null,link:e.link||void 0,cliToolId:e.cli_tool_id??"claude"}})}function _(e){return e.prepare(`
458
+ `).all(...t),a=new Map;for(let e of t)a.set(e,{});for(let e of r){let t=a.get(e.worktree_id)||{};t[e.cli_tool_id]=e.content.substring(0,50),a.set(e.worktree_id,t)}return a}(e,a.map(e=>e.id));return a.map(e=>{let t=o.get(e.id)||{};return{id:e.id,name:e.name,path:e.path,repositoryPath:e.repository_path||"",repositoryName:e.repository_name||"",description:e.description||void 0,lastUserMessage:e.last_user_message||void 0,lastUserMessageAt:e.last_user_message_at?new Date(e.last_user_message_at):void 0,lastMessageSummary:e.last_message_summary||void 0,lastMessagesByCli:t,updatedAt:e.updated_at?new Date(e.updated_at):void 0,lastViewedAt:e.last_viewed_at?new Date(e.last_viewed_at):void 0,lastAssistantMessageAt:e.last_assistant_message_at?new Date(e.last_assistant_message_at):void 0,favorite:1===e.favorite,status:e.status||null,link:e.link||void 0,cliToolId:e.cli_tool_id??"claude"}})}function _(e){return e.prepare(`
459
459
  SELECT
460
460
  repository_path as path,
461
461
  repository_name as name,
@@ -464,7 +464,7 @@
464
464
  WHERE repository_path IS NOT NULL
465
465
  GROUP BY repository_path, repository_name
466
466
  ORDER BY repository_name ASC
467
- `).all().map(e=>({path:e.path,name:e.name,worktreeCount:e.worktree_count}))}function n(e,t){let r=e.prepare(`
467
+ `).all().map(e=>({path:e.path,name:e.name,worktreeCount:e.worktree_count}))}function n(e,t){let s=e.prepare(`
468
468
  SELECT
469
469
  w.id, w.name, w.path, w.repository_path, w.repository_name, w.description,
470
470
  w.last_user_message, w.last_user_message_at, w.last_message_summary,
@@ -473,7 +473,7 @@
473
473
  WHERE worktree_id = w.id AND role = 'assistant') as last_assistant_message_at
474
474
  FROM worktrees w
475
475
  WHERE w.id = ?
476
- `).get(t);return r?{id:r.id,name:r.name,path:r.path,repositoryPath:r.repository_path||"",repositoryName:r.repository_name||"",description:r.description||void 0,lastUserMessage:r.last_user_message||void 0,lastUserMessageAt:r.last_user_message_at?new Date(r.last_user_message_at):void 0,lastMessageSummary:r.last_message_summary||void 0,updatedAt:r.updated_at?new Date(r.updated_at):void 0,lastViewedAt:r.last_viewed_at?new Date(r.last_viewed_at):void 0,lastAssistantMessageAt:r.last_assistant_message_at?new Date(r.last_assistant_message_at):void 0,favorite:1===r.favorite,status:r.status||null,link:r.link||void 0,cliToolId:r.cli_tool_id??"claude"}:null}function E(e,t){e.prepare("DELETE FROM worktrees WHERE path = ? AND id != ?").run(t.path,t.id),e.prepare(`
476
+ `).get(t);return s?{id:s.id,name:s.name,path:s.path,repositoryPath:s.repository_path||"",repositoryName:s.repository_name||"",description:s.description||void 0,lastUserMessage:s.last_user_message||void 0,lastUserMessageAt:s.last_user_message_at?new Date(s.last_user_message_at):void 0,lastMessageSummary:s.last_message_summary||void 0,updatedAt:s.updated_at?new Date(s.updated_at):void 0,lastViewedAt:s.last_viewed_at?new Date(s.last_viewed_at):void 0,lastAssistantMessageAt:s.last_assistant_message_at?new Date(s.last_assistant_message_at):void 0,favorite:1===s.favorite,status:s.status||null,link:s.link||void 0,cliToolId:s.cli_tool_id??"claude"}:null}function E(e,t){e.prepare("DELETE FROM worktrees WHERE path = ? AND id != ?").run(t.path,t.id),e.prepare(`
477
477
  INSERT INTO worktrees (
478
478
  id, name, path, repository_path, repository_name, description,
479
479
  last_user_message, last_user_message_at, last_message_summary, updated_at, cli_tool_id
@@ -490,73 +490,76 @@
490
490
  last_message_summary = COALESCE(excluded.last_message_summary, worktrees.last_message_summary),
491
491
  updated_at = COALESCE(excluded.updated_at, worktrees.updated_at),
492
492
  cli_tool_id = COALESCE(excluded.cli_tool_id, worktrees.cli_tool_id)
493
- `).run(t.id,t.name,t.path,t.repositoryPath||null,t.repositoryName||null,t.description||null,t.lastUserMessage||null,t.lastUserMessageAt?.getTime()||null,t.lastMessageSummary||null,t.updatedAt?.getTime()||null,t.cliToolId||"claude")}function l(e,t,r){e.prepare(`
493
+ `).run(t.id,t.name,t.path,t.repositoryPath||null,t.repositoryName||null,t.description||null,t.lastUserMessage||null,t.lastUserMessageAt?.getTime()||null,t.lastMessageSummary||null,t.updatedAt?.getTime()||null,t.cliToolId||"claude")}function l(e,t,s){e.prepare(`
494
494
  UPDATE worktrees
495
495
  SET description = ?
496
496
  WHERE id = ?
497
- `).run(r||null,t)}function d(e,t,r){e.prepare(`
497
+ `).run(s||null,t)}function d(e,t,s){e.prepare(`
498
498
  UPDATE worktrees
499
499
  SET link = ?
500
500
  WHERE id = ?
501
- `).run(r||null,t)}function T(e,t,r){e.prepare(`
501
+ `).run(s||null,t)}function T(e,t,s){e.prepare(`
502
502
  UPDATE worktrees
503
503
  SET last_viewed_at = ?
504
504
  WHERE id = ?
505
- `).run(r.toISOString(),t)}function p(e,t){let r=(0,s.randomUUID)();return e.prepare(`
505
+ `).run(s.toISOString(),t)}function p(e,t){let s=(0,r.randomUUID)();return e.prepare(`
506
506
  INSERT INTO chat_messages
507
507
  (id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id)
508
508
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
509
- `).run(r,t.worktreeId,t.role,t.content,t.summary||null,t.timestamp.getTime(),t.logFileName||null,t.requestId||null,t.messageType||"normal",t.promptData?JSON.stringify(t.promptData):null,t.cliToolId||"claude"),function(e,t,r){e.prepare(`
509
+ `).run(s,t.worktreeId,t.role,t.content,t.summary||null,t.timestamp.getTime(),t.logFileName||null,t.requestId||null,t.messageType||"normal",t.promptData?JSON.stringify(t.promptData):null,t.cliToolId||"claude"),function(e,t,s){e.prepare(`
510
510
  UPDATE worktrees
511
511
  SET updated_at = ?
512
512
  WHERE id = ?
513
- `).run(r.getTime(),t)}(e,t.worktreeId,t.timestamp),"user"===t.role&&I(e,t.worktreeId,t.content,t.timestamp),{id:r,...t}}function c(e,t,r,s=50,o){let i=`
513
+ `).run(s.getTime(),t)}(e,t.worktreeId,t.timestamp),"user"===t.role&&g(e,t.worktreeId,t.content,t.timestamp),{id:s,...t}}function c(e,t,s,r=50,o){let i=`
514
514
  SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id
515
515
  FROM chat_messages
516
516
  WHERE worktree_id = ? AND (? IS NULL OR timestamp < ?)
517
- `,_=[t,r?.getTime()||null,r?.getTime()||null];return o&&(i+=" AND cli_tool_id = ?",_.push(o)),i+=" ORDER BY timestamp DESC LIMIT ?",_.push(s),e.prepare(i).all(..._).map(a)}function m(e,t){let r=e.prepare(`
517
+ `,_=[t,s?.getTime()||null,s?.getTime()||null];return o&&(i+=" AND cli_tool_id = ?",_.push(o)),i+=" ORDER BY timestamp DESC LIMIT ?",_.push(r),e.prepare(i).all(..._).map(a)}function m(e,t){let s=e.prepare(`
518
518
  SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id
519
519
  FROM chat_messages
520
520
  WHERE worktree_id = ? AND role = 'user'
521
521
  ORDER BY timestamp DESC
522
522
  LIMIT 1
523
- `).get(t);return r?a(r):null}function u(e,t){e.prepare(`
523
+ `).get(t);return s?a(s):null}function u(e,t){e.prepare(`
524
524
  DELETE FROM chat_messages
525
525
  WHERE worktree_id = ?
526
- `).run(t),console.log(`[deleteAllMessages] Deleted all messages for worktree: ${t}`)}function N(e,t,r="claude"){let s=e.prepare(`
526
+ `).run(t),console.log(`[deleteAllMessages] Deleted all messages for worktree: ${t}`)}function N(e,t,s){let r=e.prepare(`
527
+ DELETE FROM chat_messages
528
+ WHERE worktree_id = ? AND cli_tool_id = ?
529
+ `).run(t,s);return console.log(`[deleteMessagesByCliTool] Deleted ${r.changes} messages for worktree: ${t}, cliTool: ${s}`),r.changes}function L(e,t,s="claude"){let r=e.prepare(`
527
530
  SELECT worktree_id, cli_tool_id, last_captured_line, in_progress_message_id
528
531
  FROM session_states
529
532
  WHERE worktree_id = ? AND cli_tool_id = ?
530
- `).get(t,r);return s?{worktreeId:s.worktree_id,cliToolId:s.cli_tool_id,lastCapturedLine:s.last_captured_line,inProgressMessageId:s.in_progress_message_id||null}:null}function L(e,t,r,s){e.prepare(`
533
+ `).get(t,s);return r?{worktreeId:r.worktree_id,cliToolId:r.cli_tool_id,lastCapturedLine:r.last_captured_line,inProgressMessageId:r.in_progress_message_id||null}:null}function R(e,t,s,r){e.prepare(`
531
534
  INSERT INTO session_states (worktree_id, cli_tool_id, last_captured_line)
532
535
  VALUES (?, ?, ?)
533
536
  ON CONFLICT(worktree_id, cli_tool_id) DO UPDATE SET
534
537
  last_captured_line = excluded.last_captured_line
535
- `).run(t,r,s)}function R(e,t,r){!function(e,t,r,s){e.prepare(`
538
+ `).run(t,s,r)}function w(e,t,s){!function(e,t,s,r){e.prepare(`
536
539
  INSERT INTO session_states (worktree_id, cli_tool_id, last_captured_line, in_progress_message_id)
537
540
  VALUES (?, ?, 0, ?)
538
541
  ON CONFLICT(worktree_id, cli_tool_id) DO UPDATE SET
539
542
  in_progress_message_id = excluded.in_progress_message_id
540
- `).run(t,r,null)}(e,t,r,0)}function w(e,t,r){r?e.prepare(`
543
+ `).run(t,s,null)}(e,t,s,0)}function I(e,t,s){s?e.prepare(`
541
544
  DELETE FROM session_states
542
545
  WHERE worktree_id = ? AND cli_tool_id = ?
543
- `).run(t,r):e.prepare(`
546
+ `).run(t,s):e.prepare(`
544
547
  DELETE FROM session_states
545
548
  WHERE worktree_id = ?
546
- `).run(t)}function I(e,t,r,s){let a=e.prepare(`
549
+ `).run(t)}function g(e,t,s,r){let a=e.prepare(`
547
550
  UPDATE worktrees
548
551
  SET last_user_message = ?,
549
552
  last_user_message_at = ?
550
553
  WHERE id = ?
551
- `),o=r.substring(0,200);a.run(o,s.getTime(),t)}function O(e,t){let r=e.prepare(`
554
+ `),o=s.substring(0,200);a.run(o,r.getTime(),t)}function O(e,t){let s=e.prepare(`
552
555
  SELECT id, worktree_id, role, content, summary, timestamp, log_file_name, request_id, message_type, prompt_data, cli_tool_id
553
556
  FROM chat_messages
554
557
  WHERE id = ?
555
- `).get(t);return r?a(r):null}function A(e,t,r){e.prepare(`
558
+ `).get(t);return s?a(s):null}function A(e,t,s){e.prepare(`
556
559
  UPDATE chat_messages
557
560
  SET prompt_data = ?
558
561
  WHERE id = ?
559
- `).run(JSON.stringify(r),t)}function g(e,t,r){let s=e.prepare(`
562
+ `).run(JSON.stringify(s),t)}function D(e,t,s){let r=e.prepare(`
560
563
  SELECT id, prompt_data
561
564
  FROM chat_messages
562
565
  WHERE worktree_id = ?
@@ -564,53 +567,53 @@
564
567
  AND message_type = 'prompt'
565
568
  AND json_extract(prompt_data, '$.status') = 'pending'
566
569
  ORDER BY timestamp DESC
567
- `).all(t,r);if(0===s.length)return 0;let a=e.prepare(`
570
+ `).all(t,s);if(0===r.length)return 0;let a=e.prepare(`
568
571
  UPDATE chat_messages
569
572
  SET prompt_data = ?
570
573
  WHERE id = ?
571
- `),o=0;for(let e of s)try{let t=JSON.parse(e.prompt_data);t.status="answered",t.answer="(answered via terminal)",t.answeredAt=new Date().toISOString(),a.run(JSON.stringify(t),e.id),o++}catch{}return o}function D(e,t,r){e.prepare(`
574
+ `),o=0;for(let e of r)try{let t=JSON.parse(e.prompt_data);t.status="answered",t.answer="(answered via terminal)",t.answeredAt=new Date().toISOString(),a.run(JSON.stringify(t),e.id),o++}catch{}return o}function S(e,t,s){e.prepare(`
572
575
  UPDATE worktrees
573
576
  SET favorite = ?
574
577
  WHERE id = ?
575
- `).run(r?1:0,t)}function S(e,t,r){e.prepare(`
578
+ `).run(s?1:0,t)}function k(e,t,s){e.prepare(`
576
579
  UPDATE worktrees
577
580
  SET status = ?
578
581
  WHERE id = ?
579
- `).run(r,t)}function k(e,t,r){e.prepare(`
582
+ `).run(s,t)}function C(e,t,s){e.prepare(`
580
583
  UPDATE worktrees
581
584
  SET cli_tool_id = ?
582
585
  WHERE id = ?
583
- `).run(r,t)}function C(e){return{id:e.id,worktreeId:e.worktree_id,title:e.title,content:e.content,position:e.position,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function h(e,t){return e.prepare(`
586
+ `).run(s,t)}function h(e){return{id:e.id,worktreeId:e.worktree_id,title:e.title,content:e.content,position:e.position,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function X(e,t){return e.prepare(`
584
587
  SELECT id, worktree_id, title, content, position, created_at, updated_at
585
588
  FROM worktree_memos
586
589
  WHERE worktree_id = ?
587
590
  ORDER BY position ASC
588
- `).all(t).map(C)}function X(e,t){let r=e.prepare(`
591
+ `).all(t).map(h)}function x(e,t){let s=e.prepare(`
589
592
  SELECT id, worktree_id, title, content, position, created_at, updated_at
590
593
  FROM worktree_memos
591
594
  WHERE id = ?
592
- `).get(t);return r?C(r):null}function x(e,t,r){let a=(0,s.randomUUID)(),o=Date.now(),i=r.title??"Memo",_=r.content??"";return e.prepare(`
595
+ `).get(t);return s?h(s):null}function U(e,t,s){let a=(0,r.randomUUID)(),o=Date.now(),i=s.title??"Memo",_=s.content??"";return e.prepare(`
593
596
  INSERT INTO worktree_memos (id, worktree_id, title, content, position, created_at, updated_at)
594
597
  VALUES (?, ?, ?, ?, ?, ?, ?)
595
- `).run(a,t,i,_,r.position,o,o),{id:a,worktreeId:t,title:i,content:_,position:r.position,createdAt:new Date(o),updatedAt:new Date(o)}}function U(e,t,r){let s=Date.now(),a=["updated_at = ?"],o=[s];void 0!==r.title&&(a.push("title = ?"),o.push(r.title)),void 0!==r.content&&(a.push("content = ?"),o.push(r.content)),o.push(t),e.prepare(`
598
+ `).run(a,t,i,_,s.position,o,o),{id:a,worktreeId:t,title:i,content:_,position:s.position,createdAt:new Date(o),updatedAt:new Date(o)}}function f(e,t,s){let r=Date.now(),a=["updated_at = ?"],o=[r];void 0!==s.title&&(a.push("title = ?"),o.push(s.title)),void 0!==s.content&&(a.push("content = ?"),o.push(s.content)),o.push(t),e.prepare(`
596
599
  UPDATE worktree_memos
597
600
  SET ${a.join(", ")}
598
601
  WHERE id = ?
599
- `).run(...o)}function f(e,t){e.prepare(`
602
+ `).run(...o)}function F(e,t){e.prepare(`
600
603
  DELETE FROM worktree_memos
601
604
  WHERE id = ?
602
- `).run(t)}function M(e,t,r){e.prepare(`
605
+ `).run(t)}function y(e,t,s){e.prepare(`
603
606
  UPDATE worktrees
604
607
  SET initial_branch = ?
605
608
  WHERE id = ?
606
- `).run(r,t)}function F(e,t){let r=e.prepare(`
609
+ `).run(s,t)}function M(e,t){let s=e.prepare(`
607
610
  SELECT initial_branch
608
611
  FROM worktrees
609
612
  WHERE id = ?
610
- `).get(t);return r?.initial_branch??null}function y(e,t){return e.prepare(`
613
+ `).get(t);return s?.initial_branch??null}function v(e,t){return e.prepare(`
611
614
  SELECT id FROM worktrees WHERE repository_path = ?
612
615
  `).all(t).map(e=>e.id)}function b(e,t){return{deletedCount:e.prepare(`
613
616
  DELETE FROM worktrees WHERE repository_path = ?
614
- `).run(t).changes}}function v(e,t){if(0===t.length)return{deletedCount:0};let r=t.map(()=>"?").join(",");return{deletedCount:e.prepare(`
615
- DELETE FROM worktrees WHERE id IN (${r})
616
- `).run(...t).changes}}},93346:(e,t,r)=>{r.d(t,{dU:()=>m,Hb:()=>T,LI:()=>c});var s=r(55315),a=r.n(s),o=r(19801);function i(){let e=(0,s.dirname)(__dirname);return e.includes("/lib/node_modules/")||e.includes("\\node_modules\\")||e.includes("/node_modules/commandmate")}r(92048);let _=["/etc","/usr","/bin","/sbin","/var","/tmp","/dev","/sys","/proc"];function n(){return i()?a().join((0,o.homedir)(),".commandmate","data","cm.db"):a().resolve(process.cwd(),"data","cm.db")}function E(e){let t=a().resolve(e);if(i()){let e=(0,o.homedir)();if(!t.startsWith(e))throw Error(`Security error: DB path must be within home directory: ${t}`)}else if(_.some(e=>t.startsWith(e)))throw Error(`Security error: DB path cannot be in system directory: ${t}`);return t}let l={CM_ROOT_DIR:"MCBD_ROOT_DIR",CM_PORT:"MCBD_PORT",CM_BIND:"MCBD_BIND",CM_AUTH_TOKEN:"MCBD_AUTH_TOKEN",CM_LOG_LEVEL:"MCBD_LOG_LEVEL",CM_LOG_FORMAT:"MCBD_LOG_FORMAT",CM_LOG_DIR:"MCBD_LOG_DIR",CM_DB_PATH:"MCBD_DB_PATH"},d=new Set;function T(e){return function(e,t){let r=process.env[e];if(void 0!==r)return r;let s=process.env[t];if(void 0!==s)return d.has(t)||(console.warn(`[DEPRECATED] ${t} is deprecated, use ${e} instead`),d.add(t)),s}(e,l[e])}let p=!1;function c(){let e=T("CM_LOG_LEVEL")?.toLowerCase(),t=T("CM_LOG_FORMAT")?.toLowerCase();return{level:void 0!==e&&["debug","info","warn","error"].includes(e)?e:"info",format:"json"===t?"json":"text"}}function m(){let e;let t=T("CM_ROOT_DIR")||process.cwd(),r=parseInt(T("CM_PORT")||"3000",10),s=T("CM_BIND")||"127.0.0.1",o=T("CM_AUTH_TOKEN"),i=T("CM_DB_PATH")||function(){let e=process.env.DATABASE_PATH;return e&&!p&&(console.warn("[DEPRECATED] DATABASE_PATH is deprecated. Use CM_DB_PATH instead."),p=!0),e}()||n();if(!t)throw Error("CM_ROOT_DIR (or MCBD_ROOT_DIR) is required");if(isNaN(r)||r<1||r>65535)throw Error(`Invalid CM_PORT: ${T("CM_PORT")}. Must be between 1 and 65535.`);if("127.0.0.1"!==s&&"0.0.0.0"!==s&&"localhost"!==s)throw Error(`Invalid CM_BIND: ${s}. Must be '127.0.0.1', '0.0.0.0', or 'localhost'.`);if("0.0.0.0"===s&&!o)throw Error("CM_AUTH_TOKEN (or MCBD_AUTH_TOKEN) is required when CM_BIND=0.0.0.0");try{e=E(i)}catch{console.warn(`[Security] Invalid DB path "${i}", using default.`),e=E(n())}return{CM_ROOT_DIR:a().resolve(t),CM_PORT:r,CM_BIND:s,CM_AUTH_TOKEN:o,CM_DB_PATH:e}}}};
617
+ `).run(t).changes}}function B(e,t){if(0===t.length)return{deletedCount:0};let s=t.map(()=>"?").join(",");return{deletedCount:e.prepare(`
618
+ DELETE FROM worktrees WHERE id IN (${s})
619
+ `).run(...t).changes}}},57569:(e,t,s)=>{s.d(t,{dU:()=>m,Hb:()=>T,LI:()=>c});var r=s(55315),a=s.n(r),o=s(19801);function i(){let e=(0,r.dirname)(__dirname);return e.includes("/lib/node_modules/")||e.includes("\\node_modules\\")||e.includes("/node_modules/commandmate")}s(92048);var _=s(43753);function n(){return i()?a().join((0,o.homedir)(),".commandmate","data","cm.db"):a().resolve(process.cwd(),"data","cm.db")}function E(e){let t=a().resolve(e);if(i()){let e=(0,o.homedir)();if(!t.startsWith(e))throw Error(`Security error: DB path must be within home directory: ${t}`)}else if((0,_.F)(t))throw Error(`Security error: DB path cannot be in system directory: ${t}`);return t}let l={CM_ROOT_DIR:"MCBD_ROOT_DIR",CM_PORT:"MCBD_PORT",CM_BIND:"MCBD_BIND",CM_LOG_LEVEL:"MCBD_LOG_LEVEL",CM_LOG_FORMAT:"MCBD_LOG_FORMAT",CM_LOG_DIR:"MCBD_LOG_DIR",CM_DB_PATH:"MCBD_DB_PATH"},d=new Set;function T(e){return function(e,t){let s=process.env[e];if(void 0!==s)return s;let r=process.env[t];if(void 0!==r)return d.has(t)||(console.warn(`[DEPRECATED] ${t} is deprecated, use ${e} instead`),d.add(t)),r}(e,l[e])}let p=!1;function c(){let e=T("CM_LOG_LEVEL")?.toLowerCase(),t=T("CM_LOG_FORMAT")?.toLowerCase();return{level:void 0!==e&&["debug","info","warn","error"].includes(e)?e:"info",format:"json"===t?"json":"text"}}function m(){let e;let t=T("CM_ROOT_DIR")||process.cwd(),s=parseInt(T("CM_PORT")||"3000",10),r=T("CM_BIND")||"127.0.0.1",o=T("CM_DB_PATH")||function(){let e=process.env.DATABASE_PATH;return e&&!p&&(console.warn("[DEPRECATED] DATABASE_PATH is deprecated. Use CM_DB_PATH instead."),p=!0),e}()||n();if(!t)throw Error("CM_ROOT_DIR (or MCBD_ROOT_DIR) is required");if(isNaN(s)||s<1||s>65535)throw Error(`Invalid CM_PORT: ${T("CM_PORT")}. Must be between 1 and 65535.`);if("127.0.0.1"!==r&&"0.0.0.0"!==r&&"localhost"!==r)throw Error(`Invalid CM_BIND: ${r}. Must be '127.0.0.1', '0.0.0.0', or 'localhost'.`);try{e=E(o)}catch{console.warn(`[Security] Invalid DB path "${o}", using default.`),e=E(n())}return{CM_ROOT_DIR:a().resolve(t),CM_PORT:s,CM_BIND:r,CM_DB_PATH:e}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=7536,exports.ids=[7536],exports.modules={43632:(e,t,s)=>{s.d(t,{FN:()=>o}),s(62648),s(97425),s(75748),s(25079),s(63661),s(76966);let n=new Map,i=new Map;function o(e){let t=n.get(e);t&&(clearInterval(t),n.delete(e),i.delete(e),console.log(`Stopped poller for ${e}`))}},89194:(e,t,s)=>{s.d(t,{Lg:()=>r,NA:()=>a});var n=s(10927),i=s(43839);let o=(0,s(43895).h)("cli-session");async function r(e,t){let s=i.g.getInstance().getTool(t).getSessionName(e);return await (0,n.Hk)(s)}async function a(e,t,s=1e3){let r=o.withContext({worktreeId:e,cliToolId:t});r.debug("captureSessionOutput:start",{requestedLines:s});let a=i.g.getInstance().getTool(t),l=a.getSessionName(e);if(!await (0,n.Hk)(l))throw r.debug("captureSessionOutput:sessionNotFound",{sessionName:l}),Error(`${a.name} session ${l} does not exist`);try{let e=await (0,n.xq)(l,{startLine:-s}),t=e.split("\n").length;return r.debug("captureSessionOutput:success",{actualLines:t,lastFewLines:e.split("\n").slice(-3).join(" | ")}),e}catch(t){let e=t instanceof Error?t.message:String(t);throw r.error("captureSessionOutput:failed",{error:e}),Error(`Failed to capture ${a.name} output: ${e}`)}}},43839:(e,t,s)=>{s.d(t,{g:()=>w});var n=s(61282),i=s(21764);let o=/^[a-zA-Z0-9_-]+$/;var r=s(10927);let a=(0,i.promisify)(n.exec);class l{async isInstalled(){try{return await a(`which ${this.command}`,{timeout:5e3}),!0}catch{return!1}}getSessionName(e){let t=`mcbd-${this.id}-${e}`;return function(e){if(!o.test(e))throw Error(`Invalid session name format: ${e}`)}(t),t}async interrupt(e){let t=this.getSessionName(e);await (0,r.ZV)(t,"Escape")}}var u=s(62648);class c extends l{async isInstalled(){return await (0,u.Uv)()}async isRunning(e){return await (0,u.YI)(e)}async startSession(e,t){await (0,u.ym)({worktreeId:e,worktreePath:t})}async sendMessage(e,t){await (0,u.xd)(e,t)}async killSession(e){await (0,u._f)(e)}constructor(...e){super(...e),this.id="claude",this.name="Claude Code",this.command="claude"}}let m=(0,i.promisify)(n.exec);class p extends l{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Codex CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Codex session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),await new Promise(e=>setTimeout(e,100)),await (0,r.Is)(s,"codex",!0),await new Promise(e=>setTimeout(e,3e3)),await (0,r.Is)(s,"2",!0),await new Promise(e=>setTimeout(e,200)),await m(`tmux send-keys -t "${s}" Down`),await new Promise(e=>setTimeout(e,200)),await m(`tmux send-keys -t "${s}" Enter`),await new Promise(e=>setTimeout(e,200)),console.log(`āœ“ Started Codex session: ${s}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to start Codex session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Codex session ${s} does not exist. Start the session first.`);try{await (0,r.Is)(s,t,!1),await new Promise(e=>setTimeout(e,100)),await m(`tmux send-keys -t "${s}" C-m`),await new Promise(e=>setTimeout(e,200)),console.log(`āœ“ Sent message to Codex session: ${s}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send message to Codex: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await m(`tmux send-keys -t "${t}" C-d`),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`āœ“ Stopped Codex session: ${t}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw console.error(`Error stopping Codex session: ${e}`),t}}constructor(...e){super(...e),this.id="codex",this.name="Codex CLI",this.command="codex"}}let d=(0,i.promisify)(n.exec);class f extends l{async isRunning(e){let t=this.getSessionName(e);return await (0,r.Hk)(t)}async startSession(e,t){if(!await this.isInstalled())throw Error("Gemini CLI is not installed or not in PATH");let s=this.getSessionName(e);if(await (0,r.Hk)(s)){console.log(`Gemini session ${s} already exists`);return}try{await (0,r.ed)({sessionName:s,workingDirectory:t,historyLimit:5e4}),console.log(`āœ“ Started Gemini session: ${s}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to start Gemini session: ${e}`)}}async sendMessage(e,t){let s=this.getSessionName(e);if(!await (0,r.Hk)(s))throw Error(`Gemini session ${s} does not exist. Start the session first.`);try{let e=t.replace(/'/g,"'\\''");await (0,r.Is)(s,`echo '${e}' | gemini`,!0),console.log(`āœ“ Sent message to Gemini session: ${s}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send message to Gemini: ${e}`)}}async killSession(e){let t=this.getSessionName(e);try{await (0,r.Hk)(t)&&(await d(`tmux send-keys -t "${t}" C-d`),await new Promise(e=>setTimeout(e,500))),await (0,r.AJ)(t)&&console.log(`āœ“ Stopped Gemini session: ${t}`)}catch(t){let e=t instanceof Error?t.message:String(t);throw console.error(`Error stopping Gemini session: ${e}`),t}}constructor(...e){super(...e),this.id="gemini",this.name="Gemini CLI",this.command="gemini"}}var g=s(59991),h=s(43632);class w{constructor(){this.tools=new Map,this.tools.set("claude",new c),this.tools.set("codex",new p),this.tools.set("gemini",new f)}static getInstance(){return w.instance||(w.instance=new w),w.instance}getTool(e){let t=this.tools.get(e);if(!t)throw Error(`CLI tool '${e}' not found`);return t}getAllTools(){return Array.from(this.tools.values())}async getToolInfo(e){let t=this.getTool(e),s=await t.isInstalled();return{id:t.id,name:t.name,command:t.command,installed:s}}async getAllToolsInfo(){return Promise.all(this.getAllTools().map(async e=>{let t=await e.isInstalled();return{id:e.id,name:e.name,command:e.command,installed:t}}))}async getInstalledTools(){return(await this.getAllToolsInfo()).filter(e=>e.installed)}stopPollers(e,t){(0,g.FN)(e,t),"claude"===t&&(0,h.FN)(e)}}},63661:(e,t,s)=>{s.d(t,{F:()=>o,J:()=>p});let n=(0,s(43895).h)("prompt-detector"),i=[{regex:/^(.+)\s+\(y\/n\)\s*$/m},{regex:/^(.+)\s+\[y\/N\]\s*$/m,defaultOption:"no"},{regex:/^(.+)\s+\[Y\/n\]\s*$/m,defaultOption:"yes"},{regex:/^(.+)\s+\(yes\/no\)\s*$/m}];function o(e,t){n.debug("detectPrompt:start",{outputLength:e.length});let s=e.split("\n").slice(-10).join("\n"),o=function(e,t){let s=t?.requireDefaultIndicator??!0,n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=Math.max(0,i-50);if(s){let t=!1;for(let e=o;e<i;e++){let s=n[e].trim();if(a.test(s)){t=!0;break}}if(!t)return c(e)}let p=[],d=-1;for(let e=i-1;e>=o;e--){let t=n[e].trim(),s=t.match(a);if(s){let e=parseInt(s[1],10),t=s[2].trim();p.unshift({number:e,label:t,isDefault:!0});continue}let i=t.match(l);if(i){let e=parseInt(i[1],10),t=i[2].trim();p.unshift({number:e,label:t,isDefault:!1});continue}if(p.length>0&&t&&!u.test(t)){if(function(e,t){let s=t.endsWith("?")||t.endsWith("?"),n=e.match(/^\s{2,}[^\d]/)&&!e.match(/^\s*\d+\./)&&!s,i=t.length<5&&!s,o=/^[\/~]/.test(t)||t.length>=2&&/^[a-zA-Z0-9_-]+$/.test(t);return!!n||i||o}(n[e],t))continue;d=e;break}}if(!function(e){if(0===e.length||1!==e[0])return!1;for(let t=1;t<e.length;t++)if(e[t]!==e[t-1]+1)return!1;return!0}(p.map(e=>e.number)))return c(e);let f=p.some(e=>e.isDefault);if(p.length<2||s&&!f)return c(e);if(!s){var g;if(-1===d||!(0!==(g=n[d]?.trim()??"").length&&(g.endsWith("?")||g.endsWith("?")||g.endsWith(":")&&m.test(g))))return c(e)}let h="";if(d>=0){let e=[];for(let t=Math.max(0,d-5);t<=d;t++){let s=n[t].trim();s&&!u.test(s)&&e.push(s)}h=e.join(" ")}else h="Please select an option:";return{isPrompt:!0,promptData:{type:"multiple_choice",question:h.trim(),options:p.map(e=>{let t=r.some(t=>t.test(e.label));return{number:e.number,label:e.label,isDefault:e.isDefault,requiresTextInput:t}}),status:"pending"},cleanContent:h.trim()}}(e,t);if(o.isPrompt)return n.info("detectPrompt:multipleChoice",{isPrompt:!0,question:o.promptData?.question,optionsCount:o.promptData?.options?.length}),o;for(let e of i){let t=s.match(e.regex);if(t){let s=t[1].trim();return{isPrompt:!0,promptData:{type:"yes_no",question:s,options:["yes","no"],status:"pending",...void 0!==e.defaultOption&&{defaultOption:e.defaultOption}},cleanContent:s}}}let p=s.match(/^(.*?)Approve\?\s*$/m);if(p){let e=p[1].trim();return{isPrompt:!0,promptData:{type:"yes_no",question:e?`${e} Approve?`:"Approve?",options:["yes","no"],status:"pending"},cleanContent:e||"Approve?"}}return n.debug("detectPrompt:complete",{isPrompt:!1}),{isPrompt:!1,cleanContent:e.trim()}}let r=[/type\s+here/i,/tell\s+(me|claude)/i,/enter\s+/i,/custom/i,/differently/i],a=/^\s*\u276F\s*(\d+)\.\s*(.+)$/,l=/^\s*(\d+)\.\s*(.+)$/,u=/^[-─]+$/;function c(e){return{isPrompt:!1,cleanContent:e.trim()}}let m=/(?:select|choose|pick|which|what|how|where|enter|type|specify|confirm|approve|accept|reject|decide|preference|option)/i;function p(e,t="yes_no"){let s=e.toLowerCase().trim();if("multiple_choice"===t){if(/^\d+$/.test(s))return s;throw Error("Invalid answer for multiple choice prompt. Expected a number.")}if("yes"===s||"y"===s)return"y";if("no"===s||"n"===s)return"n";throw Error("Invalid answer for yes/no prompt. Expected 'yes', 'no', 'y', or 'n'.")}},59991:(e,t,s)=>{s.d(t,{FN:()=>y,RJ:()=>g,ci:()=>f,cn:()=>w});var n=s(89194),i=s(97425),o=s(75748),r=s(25079),a=s(63661),l=s(76966),u=s(89287),c=s(19377);let m=new Map,p=new Map;function d(e,t){let s=(0,c.Sg)(t);return(0,a.F)((0,c.vp)(e),s)}function f(e){let t=(0,c.vp)(e).split("\n"),s=-1;for(let e=t.length-1;e>=0;e--)if(/^āÆ\s+\S/.test(t[e])){s=e;break}let n=s>=0?s+1:0,i=t.slice(n),o=[/CLAUDE_HOOKS_/,/\/bin\/claude/,/^claude\s*$/,/@.*\s+%\s*$/,/^[^āŗ]*curl.*POST/,/^[^āŗ]*Content-Type/,/^[^āŗ]*export\s+CLAUDE_/,/^\s*$/,/^[╭╮╰╯│─\s]+$/,/^[│╭╮╰╯].*[│╭╮╰╯]$/,/Claude Code v[\d.]+/,/^Tips for getting started/,/^Welcome back/,/Run \/init to create/,/^Recent activity/,/^No recent activity/,/ā–ā–›ā–ˆā–ˆā–ˆā–œā–Œ|ā–ā–œā–ˆā–ˆā–ˆā–ˆā–ˆā–›ā–˜|ā–˜ā–˜ ā–ā–/,/^\s*Opus \d+\.\d+\s*Ā·\s*Claude Max/,/\.com's Organization/,/\?\s*for shortcuts\s*$/,/^─{10,}$/,/^āÆ\s*$/],r=[];for(let e of i)!o.some(t=>t.test(e))&&e.trim()&&r.push(e);return r.join("\n").trim()}function g(e){let t=e.split("\n"),s=[],n=[/^maenokota@.*%/,/^zsh:/,/^feature-issue-\d+/,/^\s*$/],i=!1,o=[];for(let e of t){if(e.includes("✦")){i=!0;let t=e.indexOf("✦"),s=e.substring(t+1).trim();s&&o.push(s);continue}if(i){if(n.some(t=>t.test(e)))continue;o.push(e)}}if(o.length>0)return o.join("\n").trim();for(let e of t)n.some(t=>t.test(e))||s.push(e);return s.join("\n").trim()}async function h(e,t){let s=(0,i.n)();try{if(!(0,o.gU)(s,e))return console.error(`Worktree ${e} not found, stopping poller`),y(e,t),!1;if(!await (0,n.Lg)(e,t))return y(e,t),!1;let i=(0,o.zl)(s,e,t),a=i?.lastCapturedLine||0,m=await (0,n.NA)(e,t,1e4),p=function(e,t,s){let n=e.split("\n"),i=n.length;for(;i>0&&""===n[i-1].trim();)i--;let o=n.slice(0,i),r=o.length,a=r>0&&t>25&&r+25<t||r>0&&t>50&&r<50;if(!a&&r<t-5)return null;let l=o.slice(Math.max(0,r-20)).join("\n"),{promptPattern:u,separatorPattern:m,thinkingPattern:p,skipPatterns:f}=(0,c.bs)(s),g=(e=60)=>{let t="codex"===s?/^›\s+(?!Implement|Find and fix|Type|Summarize)/:/^[>āÆ]\s+\S/;for(let s=r-1;s>=Math.max(0,r-e);s--){let e=(0,c.vp)(o[s]);if(t.test(e))return s}return -1};if("claude"===s){let e=o.join("\n");if(d(e,s).isPrompt)return{response:(0,c.vp)(e),isComplete:!0,lineCount:r}}let h=(0,c.vp)(l),w=u.test(h),y=m.test(h),$=p.test(h),C=("codex"===s||"gemini"===s)&&w&&!$,x="claude"===s&&w&&y&&!$;if(C||x){let e;let n=[];if(t>=r||a){let t=g(40);e=t>=0?t+1:0}else if("codex"===s)e=Math.max(0,t);else if(t>=r-5){let t=g(50);e=t>=0?t+1:Math.max(0,r-40)}else e=Math.max(0,t);let i=r;for(let t=e;t<r;t++){let e=o[t],r=(0,c.vp)(e);if("codex"===s&&/^›\s+/.test(r)||"gemini"===s&&/^(%|\$|.*@.*[%$#])\s*$/.test(r)){i=t;break}f.some(e=>e.test(r))||n.push(e)}let l=n.join("\n").trim(),u=l.split("\n").slice(-5).join("\n");if(p.test(u))return{response:"",isComplete:!1,lineCount:r};if("claude"===s){let e=(0,c.vp)(l),t=/[╭╮╰╯│]/.test(e)||/ā–‘{3,}/.test(e)||/ā–“{3,}/.test(e),s=/Claude Code|claude\/|v\d+\.\d+/.test(e),n=/Tip:|for shortcuts|\?\s*for help/.test(e),i=/^\s*\/Users\/.*$/m.test(e)&&e.split("\n").length<30,o=e.match(/^[>āÆ]\s+(\S.*)$/m);if(o){let t=e.indexOf(o[0]);if(0===e.substring(t+o[0].length).trim().split("\n").filter(e=>{let t=e.trim();return t&&!f.some(e=>e.test(t))&&!/^─+$/.test(t)}).length)return{response:"",isComplete:!1,lineCount:r}}else if((t||s||n||i)&&l.length<2e3)return{response:"",isComplete:!1,lineCount:r}}return"gemini"===s&&((l.match(/[ā–‘ā–ˆā–ˆā–ˆ]/g)||[]).length>.3*l.length||["Waiting for auth","ā ‹","ā ™","ā ¹","ā ø","ā ¼","ā “","ā ¦","ā §","ā ‡","ā "].some(e=>l.includes(e))||!l.includes("✦")&&l.length<10)?{response:"",isComplete:!1,lineCount:r}:{response:l,isComplete:!0,lineCount:i}}let S=o.join("\n");if(d(S,s).isPrompt)return{response:S,isComplete:!0,lineCount:r};let I=[],v=a||t>=r-5,k=v?g(80):-1,P=v?k>=0?k+1:Math.max(0,r-80):Math.max(0,t);for(let e=P;e<r;e++){let t=o[e],s=(0,c.vp)(t);f.some(e=>e.test(s))||I.push(t)}let E=I.join("\n").trim();return E?{response:E,isComplete:!1,lineCount:r}:{response:"",isComplete:!1,lineCount:r}}(m,a,t);if(!p||!p.isComplete){let{thinkingPattern:n}=(0,c.bs)(t),i=(0,c.vp)(m).split("\n").slice(-5).join("\n");if(n.test(i)){let n=(0,o.GP)(s,e,t);n>0&&console.log(`Marked ${n} pending prompt(s) as answered (thinking detected) for ${e}`)}return!1}if(p.lineCount===a&&!i?.inProgressMessageId)return!1;if(p.lineCount<=a)return console.log(`[checkForResponse] Already saved up to line ${a}, skipping (result: ${p.lineCount})`),!1;let h=d(p.response,t);if(h.isPrompt){(0,o.Mf)(s,e,t);let n=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:h.cleanContent,messageType:"prompt",promptData:h.promptData,timestamp:new Date,cliToolId:t});return(0,o.IH)(s,e,t,p.lineCount),(0,r.ps)("message",{worktreeId:e,message:n}),y(e,t),!0}if(!p.response||""===p.response.trim())return(0,o.IH)(s,e,t,p.lineCount),!1;let w="claude"===t?(0,u.Z)(p.response):void 0,$=p.response;if("gemini"===t?$=g(p.response):"claude"===t&&($=f(p.response)),!$||""===$.trim()||"[No content]"===$)return(0,o.IH)(s,e,t,p.lineCount),(0,o.Mf)(s,e,t),!1;$&&await (0,l.o)(s,e,$,t);let C=(0,o.GP)(s,e,t);C>0&&console.log(`Marked ${C} pending prompt(s) as answered for ${e}`);let x=(0,o.zl)(s,e,t);if(x&&p.lineCount<=x.lastCapturedLine)return console.log(`[checkForResponse] Race condition detected, skipping save (result: ${p.lineCount}, current: ${x.lastCapturedLine})`),!1;let S=(0,o.tn)(s,{worktreeId:e,role:"assistant",content:$,messageType:"normal",timestamp:new Date,cliToolId:t,summary:w?.summary,logFileName:w?.logFileName,requestId:w?.requestId});return(0,r.ps)("message",{worktreeId:e,message:S}),(0,o.IH)(s,e,t,p.lineCount),!0}catch(t){return console.error(`Error checking for response (${e}):`,t instanceof Error?t.message:String(t)),!1}}function w(e,t){let s=`${e}:${t}`;y(e,t),p.set(s,Date.now());let n=setInterval(async()=>{let n=p.get(s);if(n&&Date.now()-n>3e5){y(e,t);return}try{await h(e,t)}catch(e){console.error("[Poller] Error:",e)}},2e3);m.set(s,n)}function y(e,t){let s=`${e}:${t}`,n=m.get(s);n&&(clearInterval(n),m.delete(s),p.delete(s))}}};
@@ -0,0 +1,23 @@
1
+ "use strict";exports.id=8174,exports.ids=[8174],exports.modules={75076:(e,t,a)=>{a.d(t,{Vw:()=>j});var s=a(10326),r=a(17577);a(90434);var l=a(87403),n=a(2982),i=a(35047),o=a(3885),c=a(61421);function d({status:e,label:t}){let a=c.F4[e],r=`${t}: ${a.label}`;return"spinner"===a.type?s.jsx("span",{className:`w-2 h-2 rounded-full flex-shrink-0 border-2 border-t-transparent animate-spin ${a.className}`,title:r,"aria-label":r}):s.jsx("span",{className:`w-2 h-2 rounded-full flex-shrink-0 ${a.className}`,title:r,"aria-label":r})}let u=(0,r.memo)(function({branch:e,isSelected:t,onClick:a}){return(0,s.jsxs)("button",{"data-testid":"branch-list-item",onClick:a,"aria-current":t?"true":void 0,className:`
2
+ w-full px-4 py-3 flex flex-col gap-1
3
+ hover:bg-gray-800 transition-colors
4
+ focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500
5
+ ${t?"bg-gray-700 border-l-2 border-blue-500":"border-l-2 border-transparent"}
6
+ `,children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 w-full",children:[e.cliStatus&&(0,s.jsxs)("div",{className:"flex items-center gap-1 flex-shrink-0","aria-label":"CLI tool status",children:[s.jsx(d,{status:e.cliStatus.claude,label:"Claude"}),s.jsx(d,{status:e.cliStatus.codex,label:"Codex"})]}),(0,s.jsxs)("div",{className:"flex-1 min-w-0 text-left",children:[s.jsx("p",{className:"text-sm font-medium text-white truncate",children:e.name}),s.jsx("p",{className:"text-xs text-gray-400 truncate",children:e.repositoryName})]}),e.hasUnread&&s.jsx("span",{"data-testid":"unread-indicator",className:"w-2 h-2 rounded-full bg-blue-500 flex-shrink-0","aria-label":"Has unread messages"})]}),e.description&&s.jsx("div",{"data-testid":"branch-description",className:"pl-6 pr-2 mt-1 text-left",children:s.jsx("p",{className:"text-xs text-gray-400 line-clamp-2",children:e.description})})]})}),m=[{key:"updatedAt",label:"Updated"},{key:"repositoryName",label:"Repository"},{key:"branchName",label:"Branch"},{key:"status",label:"Status"}],x=(0,r.memo)(function(){let{sortKey:e,sortDirection:t,setSortKey:a,setSortDirection:n}=(0,l.Sz)(),[i,o]=(0,r.useState)(!1),c=(0,r.useRef)(null);(0,r.useEffect)(()=>{function e(e){c.current&&!c.current.contains(e.target)&&o(!1)}if(i)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]),(0,r.useEffect)(()=>{function e(e){"Escape"===e.key&&o(!1)}if(i)return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[i]);let d=(0,r.useCallback)(()=>{o(e=>!e)},[]),u=(0,r.useCallback)(s=>{s===e?n("asc"===t?"desc":"asc"):(a(s),n("updatedAt"===s?"desc":"asc")),o(!1)},[e,t,a,n]),x=(0,r.useCallback)(()=>{n("asc"===t?"desc":"asc")},[t,n]),g=m.find(t=>t.key===e)?.label||"Sort";return(0,s.jsxs)("div",{ref:c,className:"relative","data-testid":"sort-selector",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsxs)("button",{type:"button",onClick:d,"aria-expanded":i,"aria-haspopup":"listbox","aria-label":`Sort by ${g}`,className:" flex items-center gap-1 px-2 py-1 rounded text-xs text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ",children:[s.jsx(p,{className:"w-3 h-3"}),s.jsx("span",{className:"hidden sm:inline",children:g})]}),s.jsx("button",{type:"button",onClick:x,"aria-label":"asc"===t?"Sort ascending":"Sort descending",className:" p-1 rounded text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors ",children:"asc"===t?s.jsx(h,{className:"w-3 h-3"}):s.jsx(b,{className:"w-3 h-3"})})]}),i&&s.jsx("div",{role:"listbox","aria-label":"Sort options",className:" absolute right-0 top-full mt-1 z-50 min-w-[140px] py-1 rounded-md shadow-lg bg-gray-800 border border-gray-600 ",children:m.map(a=>(0,s.jsxs)("button",{type:"button",role:"option","aria-selected":e===a.key,onClick:()=>u(a.key),className:`
7
+ w-full px-3 py-2 text-left text-sm
8
+ flex items-center justify-between
9
+ hover:bg-gray-700 transition-colors
10
+ ${e===a.key?"text-blue-400":"text-gray-300"}
11
+ `,children:[s.jsx("span",{children:a.label}),e===a.key&&s.jsx("span",{className:"text-xs",children:"asc"===t?"ASC":"DESC"})]},a.key))})]})});function p({className:e}){return s.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"})})}function h({className:e}){return s.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 15l7-7 7 7"})})}function b({className:e}){return s.jsx("svg",{className:e,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})}var g=a(18421);let f={waiting:0,ready:1,running:2,generating:3,idle:4},y=(0,r.memo)(function(){let e=(0,i.useRouter)(),{worktrees:t,selectedWorktreeId:a,selectWorktree:n}=(0,o.Mu)(),{closeMobileDrawer:c,sortKey:d,sortDirection:m}=(0,l.Sz)(),[p,h]=(0,r.useState)(""),b=(0,r.useMemo)(()=>{let e=t.map(g.I_),a=e;if(p.trim()){let t=p.toLowerCase();a=e.filter(e=>e.name.toLowerCase().includes(t)||e.repositoryName.toLowerCase().includes(t))}return function(e,t,a){let s=[...e];return s.sort((e,s)=>{let r=0;switch(t){case"updatedAt":{let t=e=>e?e instanceof Date?e.getTime():new Date(e).getTime():0,a=t(e.lastActivity);r=t(s.lastActivity)-a;break}case"repositoryName":{let t=e.repositoryName.toLowerCase(),a=s.repositoryName.toLowerCase();r=t.localeCompare(a);break}case"branchName":{let t=e.name.toLowerCase(),a=s.name.toLowerCase();r=t.localeCompare(a);break}case"status":r=f[e.status]-f[s.status]}return("updatedAt"===t?"desc"===a:"asc"===a)?r:-r}),s}(a,d,m)},[t,p,d,m]),y=t=>{n(t),e.push(`/worktrees/${t}`),c()};return(0,s.jsxs)("nav",{"data-testid":"sidebar","aria-label":"Branch navigation",className:"h-full flex flex-col bg-gray-900 text-white",role:"navigation",children:[s.jsx("div",{"data-testid":"sidebar-header",className:"flex-shrink-0 px-4 py-4 border-b border-gray-700",children:(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[s.jsx("h2",{className:"text-lg font-semibold text-white",children:"Branches"}),s.jsx(x,{})]})}),s.jsx("div",{className:"flex-shrink-0 px-4 py-3 border-b border-gray-700",children:s.jsx("input",{type:"text",placeholder:"Search branches...",value:p,onChange:e=>h(e.target.value),className:" w-full px-3 py-2 rounded-md bg-gray-800 text-white placeholder-gray-400 border border-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent "})}),s.jsx("div",{"data-testid":"branch-list",className:"flex-1 overflow-y-auto",children:0===b.length?s.jsx("div",{className:"px-4 py-8 text-center text-gray-400",children:p?"No branches found":"No branches available"}):b.map(e=>s.jsx(u,{branch:e,isSelected:e.id===a,onClick:()=>y(e.id)},e.id))})]})});var w=a(22202);let v="transform transition-transform duration-300 ease-out",j=(0,r.memo)(function({children:e}){let{isOpen:t,isMobileDrawerOpen:a,closeMobileDrawer:r}=(0,l.Sz)();return(0,n.d)()?(0,s.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[a&&s.jsx("div",{"data-testid":"drawer-overlay",className:"fixed inset-0 bg-black/50 z-40",onClick:r,"aria-hidden":"true"}),s.jsx("aside",{"data-testid":"sidebar-container",className:`
12
+ fixed left-0 top-0 h-full w-72 z-50
13
+ ${v}
14
+ ${a?"translate-x-0":"-translate-x-full"}
15
+ `,role:"complementary",children:s.jsx(y,{})}),s.jsx("main",{className:"flex-1 min-h-0 overflow-hidden",role:"main",children:e})]}):(0,s.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex",children:[s.jsx("aside",{"data-testid":"sidebar-container",className:`
16
+ fixed left-0 top-0 h-full w-72
17
+ ${v}
18
+ ${t?"translate-x-0":"-translate-x-full"}
19
+ `,style:{zIndex:w.k.SIDEBAR},role:"complementary","aria-hidden":!t,children:s.jsx(y,{})}),s.jsx("main",{className:`
20
+ flex-1 min-w-0 h-full overflow-hidden
21
+ transition-[padding] duration-300 ease-out
22
+ ${t?"md:pl-72":"md:pl-0"}
23
+ `,role:"main",children:e})]})})},28676:(e,t,a)=>{a.d(t,{u:()=>l});var s=a(10326),r=a(17577);function l({isOpen:e,onClose:t,title:a,children:l,size:n="lg",showCloseButton:i=!0,disableClose:o=!1}){let c=(0,r.useRef)(null);return e?(0,s.jsxs)("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[s.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 transition-opacity",onClick:o?void 0:t}),s.jsx("div",{className:"flex min-h-full items-center justify-center p-2 sm:p-4",children:(0,s.jsxs)("div",{ref:c,className:`relative w-full ${{sm:"max-w-[calc(100vw-2rem)] sm:max-w-md",md:"max-w-[calc(100vw-2rem)] sm:max-w-2xl",lg:"max-w-[calc(100vw-2rem)] sm:max-w-4xl",xl:"max-w-[calc(100vw-2rem)] sm:max-w-6xl",full:"max-w-[calc(100vw-2rem)] sm:max-w-[95vw]"}[n]} bg-white rounded-lg shadow-xl transform transition-all`,children:[(a||i)&&(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 sm:px-6 py-3 sm:py-4 border-b border-gray-200",children:[s.jsx("h3",{className:"text-base sm:text-lg font-semibold text-gray-900 truncate pr-2",children:a}),i&&s.jsx("button",{onClick:t,className:"text-gray-400 hover:text-gray-600 transition-colors flex-shrink-0",children:s.jsx("svg",{className:"w-5 h-5 sm:w-6 sm:h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),s.jsx("div",{className:"px-4 sm:px-6 py-3 sm:py-4",children:l})]})})]}):null}},77758:(e,t,a)=>{a.d(t,{Ct:()=>c,zx:()=>r,Zb:()=>l,aY:()=>o,Ol:()=>n,ll:()=>i,u_:()=>d.u});var s=a(10326);function r({variant:e="primary",size:t="md",fullWidth:a=!1,loading:r=!1,disabled:l,className:n="",children:i,...o}){let c=["btn",{primary:"btn-primary",secondary:"btn-secondary",danger:"btn-danger",ghost:"bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-500"}[e],{sm:"btn-sm",md:"",lg:"btn-lg"}[t],a?"w-full":"",l||r?"opacity-50 cursor-not-allowed":"",n].filter(Boolean).join(" ");return(0,s.jsxs)("button",{className:c,disabled:l||r,...o,children:[r&&(0,s.jsxs)("svg",{className:"animate-spin -ml-1 mr-2 h-4 w-4",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[s.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),s.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),i]})}function l({hover:e=!1,padding:t="md",className:a="",children:r,...l}){let n=["card",e?"card-hover":"",{none:"",sm:"p-3",md:"p-4",lg:"p-6"}[t],a].filter(Boolean).join(" ");return s.jsx("div",{className:n,...l,children:r})}function n({className:e="",children:t,...a}){return s.jsx("div",{className:`mb-3 ${e}`,...a,children:t})}function i({className:e="",children:t,...a}){return s.jsx("h3",{className:`text-lg font-semibold text-gray-900 ${e}`,...a,children:t})}function o({className:e="",children:t,...a}){return s.jsx("div",{className:e,...a,children:t})}function c({variant:e="gray",dot:t=!1,className:a="",children:r,...l}){let n=["badge",{success:"badge-success",warning:"badge-warning",error:"badge-error",info:"badge-info",gray:"badge-gray"}[e],a].filter(Boolean).join(" ");return(0,s.jsxs)("span",{className:n,...l,children:[t&&s.jsx("span",{className:`mr-1.5 inline-block h-2 w-2 rounded-full ${{success:"bg-green-600",warning:"bg-yellow-600",error:"bg-red-600",info:"bg-blue-600",gray:"bg-gray-600"}[e]}`,"aria-hidden":"true"}),r]})}a(17577);var d=a(28676)},15470:(e,t,a)=>{a.d(t,{R:()=>m});var s=a(10326),r=a(17577),l=a(73002);function n(e,t){if(!t.trim())return e;let a=t.toLowerCase();return e.map(e=>({...e,commands:e.commands.filter(e=>{let t=e.name.toLowerCase().includes(a),s=e.description.toLowerCase().includes(a);return t||s})})).filter(e=>e.commands.length>0)}function i({groups:e,onSelect:t,highlightedIndex:a=-1,className:r=""}){let l=0;return 0===e.length?s.jsx("div",{className:`text-sm text-gray-500 p-4 text-center ${r}`,children:"No commands available"}):s.jsx("div",{className:`overflow-y-auto ${r}`,children:e.map(e=>(0,s.jsxs)("div",{className:"mb-2",children:[s.jsx("div",{className:"px-3 py-1.5 text-xs font-semibold text-gray-500 uppercase tracking-wider bg-gray-50",children:e.label}),s.jsx("div",{children:e.commands.map(e=>{let r=l;l++;let n=r===a;return(0,s.jsxs)("button",{type:"button","data-command-item":!0,"data-highlighted":n,onClick:()=>t(e),className:`w-full px-3 py-2 text-left flex items-start gap-2 hover:bg-blue-50 transition-colors ${n?"bg-blue-100":""}`,children:[(0,s.jsxs)("span",{className:"text-blue-600 font-mono text-sm flex-shrink-0",children:["/",e.name]}),s.jsx("span",{className:"text-gray-600 text-sm truncate",children:e.description})]},e.name)})})]},e.category))})}function o({isOpen:e,groups:t,onSelect:a,onClose:l,isMobile:o=!1,position:c,onFreeInput:d}){let[u,m]=(0,r.useState)(""),[x,p]=(0,r.useState)(0),h=(0,r.useRef)(null),b=(0,r.useMemo)(()=>n(t,u),[t,u]),g=(0,r.useMemo)(()=>b.flatMap(e=>e.commands),[b]),f=(0,r.useCallback)(e=>{a(e),l()},[a,l]);return((0,r.useCallback)(t=>{if(e)switch(t.key){case"Escape":t.preventDefault(),l();break;case"ArrowDown":t.preventDefault(),p(e=>Math.min(e+1,g.length-1));break;case"ArrowUp":t.preventDefault(),p(e=>Math.max(e-1,0));break;case"Enter":t.preventDefault(),g[x]&&f(g[x])}},[e,g,x,l,f]),e)?o?(0,s.jsxs)(s.Fragment,{children:[s.jsx("div",{className:"fixed inset-0 bg-black/50 z-40",onClick:l,"aria-hidden":"true"}),(0,s.jsxs)("div",{"data-testid":"slash-command-bottom-sheet",className:"fixed bottom-0 left-0 right-0 bg-white rounded-t-xl z-50 max-h-[70vh] flex flex-col shadow-xl",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-gray-200",children:[s.jsx("h2",{className:"text-lg font-semibold",children:"Commands"}),s.jsx("button",{type:"button",onClick:l,"aria-label":"Close",className:"p-2 rounded-full hover:bg-gray-100",children:s.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),s.jsx("div",{className:"px-4 py-2 border-b border-gray-100",children:s.jsx("input",{ref:h,type:"text",value:u,onChange:e=>m(e.target.value),placeholder:"Search commands...",className:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"})}),d&&(0,s.jsxs)("button",{type:"button","data-testid":"free-input-button",onClick:d,className:"w-full px-4 py-3 text-left border-b border-gray-100 flex items-center gap-2 hover:bg-blue-50 transition-colors",children:[s.jsx("span",{className:"text-blue-600",children:s.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),s.jsx("span",{className:"text-gray-600",children:"Enter custom command..."})]}),s.jsx(i,{groups:b,onSelect:f,highlightedIndex:x,className:"flex-1 overflow-y-auto pb-20"})]})]}):(0,s.jsxs)("div",{role:"listbox",className:"absolute bg-white border border-gray-200 rounded-lg shadow-lg z-50 w-80 max-h-96 flex flex-col",style:c?{top:c.top,left:c.left}:{bottom:"100%",left:0,marginBottom:"4px"},children:[s.jsx("div",{className:"px-3 py-2 border-b border-gray-100",children:s.jsx("input",{ref:h,type:"text",value:u,onChange:e=>m(e.target.value),placeholder:"Search commands...",className:"w-full px-3 py-1.5 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-blue-500"})}),d&&(0,s.jsxs)("button",{type:"button","data-testid":"free-input-button",onClick:d,className:"w-full px-3 py-2 text-left border-b border-gray-100 flex items-center gap-2 hover:bg-blue-50 transition-colors text-sm",children:[s.jsx("span",{className:"text-blue-600",children:s.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),s.jsx("span",{className:"text-gray-600",children:"Enter custom command..."})]}),s.jsx(i,{groups:b,onSelect:f,highlightedIndex:x,className:"flex-1 overflow-y-auto"}),(0,s.jsxs)("div",{className:"px-3 py-1.5 border-t border-gray-100 text-xs text-gray-400 flex gap-3",children:[(0,s.jsxs)("span",{children:[s.jsx("kbd",{className:"px-1 py-0.5 bg-gray-100 rounded",children:"Enter"})," select"]}),(0,s.jsxs)("span",{children:[s.jsx("kbd",{className:"px-1 py-0.5 bg-gray-100 rounded",children:"Esc"})," close"]})]})]}):null}function c({worktreeId:e,cliToolId:t,disabled:a=!1,onInterrupt:l}){let[n,i]=(0,r.useState)(!1),o=(0,r.useRef)(0),c=(0,r.useCallback)(async()=>{let a=Date.now();if(!(a-o.current<1e3)){o.current=a,i(!0);try{let a=await fetch(`/api/worktrees/${e}/interrupt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cliToolId:t})});if(a.ok)l?.();else{let e=await a.json().catch(()=>({}));console.error("[InterruptButton] Failed to send interrupt:",e.error||a.statusText)}}catch(e){console.error("[InterruptButton] Error sending interrupt:",e)}finally{i(!1)}}},[e,t,l]);return s.jsx("button",{type:"button",onClick:c,disabled:a||n,className:"flex-shrink-0 p-2 text-orange-600 hover:bg-orange-50 rounded-full transition-colors disabled:text-gray-300 disabled:hover:bg-transparent","aria-label":"Stop processing","data-testid":"interrupt-button",children:n?(0,s.jsxs)("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[s.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),s.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):s.jsx(d,{})})}function d(){return s.jsx("svg",{className:"h-5 w-5",fill:"currentColor",viewBox:"0 0 24 24",children:s.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})})}var u=a(2982);function m({worktreeId:e,onMessageSent:t,cliToolId:a,isSessionRunning:i=!1}){let[d,m]=(0,r.useState)(""),[x,p]=(0,r.useState)(!1),[h,b]=(0,r.useState)(null),[g,f]=(0,r.useState)(!1),[y,w]=(0,r.useState)(!1),v=(0,r.useRef)(null),j=(0,r.useRef)(null),N=(0,r.useRef)(!1),k=(0,r.useRef)(null),C=(0,u.d)(),{groups:S}=function(e,t){let[a,s]=(0,r.useState)([]),[i,o]=(0,r.useState)(!0),[c,d]=(0,r.useState)(null),[u,m]=(0,r.useState)(""),[x,p]=(0,r.useState)(t||"claude"),h=(0,r.useCallback)(async()=>{try{o(!0),d(null);let a=e?`/api/worktrees/${e}/slash-commands`:"/api/slash-commands";t&&(a+=`?cliTool=${t}`);let r=await fetch(a);if(!r.ok)throw Error(`HTTP error ${r.status}`);let l=await r.json();s(l.groups),p(l.cliTool||t||"claude")}catch(e){d((0,l.zG)(e)),s([])}finally{o(!1)}},[e,t]),b=(0,r.useMemo)(()=>a.flatMap(e=>e.commands),[a]),g=(0,r.useMemo)(()=>n(a,u),[a,u]);return{groups:a,filteredGroups:g,allCommands:b,loading:i,error:c,filter:u,setFilter:m,refresh:(0,r.useCallback)(()=>{h()},[h]),cliTool:x}}(e,a),L=async()=>{if(!g&&d.trim()&&!x)try{p(!0),b(null);let s=a||"claude";await l.Iv.sendMessage(e,d.trim(),s),m(""),t?.(s)}catch(e){b((0,l.zG)(e))}finally{p(!1)}},M=async e=>{e.preventDefault(),await L()},E=()=>{w(!1),v.current?.focus()};return(0,s.jsxs)("div",{ref:k,className:"space-y-2 relative",children:[h&&s.jsx("div",{className:"p-2 bg-red-50 border border-red-200 rounded text-sm text-red-800",children:h}),(0,s.jsxs)("form",{onSubmit:M,className:"flex items-end gap-2 bg-white border border-gray-300 rounded-lg px-4 py-2 focus-within:border-blue-500 focus-within:ring-1 focus-within:ring-blue-500",children:[C&&s.jsx("button",{type:"button",onClick:()=>w(!0),className:"flex-shrink-0 p-2 text-gray-500 hover:text-blue-600 hover:bg-blue-50 rounded-full transition-colors","aria-label":"Show slash commands","data-testid":"mobile-command-button",children:s.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 20l4-16m2 16l4-16M6 9h14M4 15h14"})})}),s.jsx("textarea",{ref:v,value:d,onChange:e=>{let t=e.target.value;m(t),"/"===t||t.startsWith("/")&&!t.includes(" ")?w(!0):w(!1)},onKeyDown:e=>{let{keyCode:t}=e.nativeEvent;if(229!==t){if("Escape"===e.key&&y){e.preventDefault(),E();return}if(N.current&&"Enter"===e.key){N.current=!1;return}if("Enter"===e.key&&!g&&!y){if(C)return;e.shiftKey||(e.preventDefault(),L())}}},onCompositionStart:()=>{f(!0),N.current=!1,j.current&&clearTimeout(j.current)},onCompositionEnd:()=>{f(!1),N.current=!0,j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{N.current=!1},300)},placeholder:C?"Type your message...":"Type your message... (/ for commands, Shift+Enter for line break)",disabled:x,rows:1,className:"flex-1 outline-none bg-transparent resize-none py-1 overflow-y-auto scrollbar-thin",style:{minHeight:"24px",maxHeight:"160px"}}),s.jsx(c,{worktreeId:e,cliToolId:a||"claude",disabled:!i}),s.jsx("button",{type:"submit",disabled:!d.trim()||x,className:"flex-shrink-0 p-2 text-blue-600 hover:bg-blue-50 rounded-full transition-colors disabled:text-gray-300 disabled:hover:bg-transparent","aria-label":"Send message",children:x?(0,s.jsxs)("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[s.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),s.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):s.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:s.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 19l9 2-9-18-9 18 9-2zm0 0v-8"})})})]}),s.jsx(o,{isOpen:y,groups:S,onSelect:e=>{m(`/${e.name} `),w(!1),v.current?.focus()},onClose:E,isMobile:C,onFreeInput:()=>{w(!1),m("/"),setTimeout(()=>{v.current?.focus()},50)}})]})}},61421:(e,t,a)=>{a.d(t,{F4:()=>r,Ie:()=>n,xh:()=>l});let s={idle:"bg-gray-500",ready:"bg-green-500",spinner:"border-blue-500",waiting:"bg-yellow-500",error:"bg-red-500"},r={idle:{className:s.idle,label:"Idle",type:"dot"},ready:{className:s.ready,label:"Ready",type:"dot"},running:{className:s.spinner,label:"Running",type:"spinner"},waiting:{className:s.waiting,label:"Waiting for response",type:"dot"},generating:{className:s.spinner,label:"Generating",type:"spinner"}},l={idle:{className:s.idle,label:"Idle",type:"dot"},ready:{className:s.ready,label:"Ready",type:"dot"},running:{className:s.spinner,label:"Running",type:"spinner"},waiting:{className:s.waiting,label:"Waiting for response",type:"dot"},error:{className:s.error,label:"Error",type:"dot"}},n={idle:{className:s.idle,label:"Idle - No active session",type:"dot"},ready:{className:s.ready,label:"Ready - Waiting for input",type:"dot"},running:{className:s.spinner,label:"Running - Processing",type:"spinner"},waiting:{className:s.waiting,label:"Waiting - User input required",type:"dot"},error:{className:s.error,label:"Error",type:"dot"}}},22202:(e,t,a)=>{a.d(t,{k:()=>s});let s={DROPDOWN:10,SIDEBAR:30,MODAL:50,MAXIMIZED_EDITOR:55,TOAST:60,CONTEXT_MENU:70}},2982:(e,t,a)=>{a.d(t,{d:()=>r});var s=a(17577);function r(e={}){let{breakpoint:t=768}=e,[a,r]=(0,s.useState)(!1);return a}},18421:(e,t,a)=>{function s(e){return e?e.isWaitingForResponse?"waiting":e.isProcessing?"running":e.isRunning?"ready":"idle":"idle"}function r(e){let t=!!e.lastAssistantMessageAt&&(!e.lastViewedAt||new Date(e.lastAssistantMessageAt)>new Date(e.lastViewedAt));return{id:e.id,name:e.name,repositoryName:e.repositoryName,status:"idle",hasUnread:t,lastActivity:e.updatedAt,description:e.description,cliStatus:{claude:s(e.sessionStatusByCli?.claude),codex:s(e.sessionStatusByCli?.codex)}}}a.d(t,{He:()=>s,I_:()=>r})},63601:(e,t,a)=>{a.r(t),a.d(t,{default:()=>r});var s=a(66621);let r=e=>[{type:"image/png",sizes:"180x180",url:(0,s.fillMetadataSegment)(".",e.params,"apple-icon.png")+"?31a89e65aa4ac65b"}]},71150:(e,t,a)=>{a.r(t),a.d(t,{default:()=>r});var s=a(66621);let r=e=>[{type:"image/png",sizes:"32x32",url:(0,s.fillMetadataSegment)(".",e.params,"icon.png")+"?32d9127ba30ee286"}]}};
@@ -0,0 +1,19 @@
1
+ exports.id=9367,exports.ids=[9367],exports.modules={58359:()=>{},93739:()=>{},89287:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});let n=/šŸ“„ Session log: (.+?\/([^\/\s]+\.jsonl))/,o=/Request ID: ([^\s\n]+)/,a=/Summary: (.+?)(?:\n─|$)/s;function i(e){let t={content:e},r=n.exec(e);r&&(t.logFileName=r[2]);let i=o.exec(e);i&&(t.requestId=i[1]);let s=a.exec(e);return s&&(t.summary=s[1].trim()),t}},62648:(e,t,r)=>{"use strict";r.d(t,{Lm:()=>p,Uv:()=>d,YI:()=>f,_f:()=>y,xd:()=>g,ym:()=>w});var n=r(10927),o=r(19377),a=r(61282);let i=(0,r(21764).promisify)(a.exec);function s(e){return e instanceof Error?e.message:String(e)}let c=null;async function l(){if(c)return c;if(process.env.CLAUDE_PATH)return c=process.env.CLAUDE_PATH;try{let{stdout:e}=await i("which claude",{timeout:5e3});return c=e.trim()}catch{for(let e of["/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude"])try{return await i(`test -x "${e}"`,{timeout:1e3}),c=e}catch{}throw Error("Claude CLI not found. Set CLAUDE_PATH environment variable or install Claude CLI.")}}function u(e){return`mcbd-claude-${e}`}async function d(){try{return await i("which claude",{timeout:5e3}),!0}catch{return!1}}async function f(e){let t=u(e);return await (0,n.Hk)(t)}async function m(e,t=5e3){let r=Date.now();for(;Date.now()-r<t;){let t=await (0,n.xq)(e,{startLine:-50});if(o.V7.test((0,o.vp)(t)))return;await new Promise(e=>setTimeout(e,200))}throw Error(`Prompt detection timeout (${t}ms)`)}async function w(e){let{worktreeId:t,worktreePath:r}=e;if(!await d())throw Error("Claude CLI is not installed or not in PATH");let a=u(t);if(await (0,n.Hk)(a)){console.log(`Claude session ${a} already exists`);return}try{await (0,n.ed)({sessionName:a,workingDirectory:r,historyLimit:5e4});let e=await l();await (0,n.Is)(a,e,!0);let t=Date.now(),i=!1,s=!1;for(;Date.now()-t<15e3;){await new Promise(e=>setTimeout(e,300));try{let e=await (0,n.xq)(a,{startLine:-50}),r=(0,o.vp)(e);if(o.V7.test(r)){await new Promise(e=>setTimeout(e,500)),console.log(`Claude initialized in ${Date.now()-t}ms`),i=!0;break}!s&&o.H3.test(r)&&(await (0,n.Is)(a,"",!0),s=!0,console.log("Trust dialog detected, sending Enter to confirm"))}catch{}}if(!i)throw Error("Claude initialization timeout (15000ms)");console.log(`Started Claude session: ${a}`)}catch(e){throw Error(`Failed to start Claude session: ${s(e)}`)}}async function g(e,t){let r=u(e);if(!await (0,n.Hk)(r))throw Error(`Claude session ${r} does not exist. Start the session first.`);let a=await (0,n.xq)(r,{startLine:-50});o.V7.test((0,o.vp)(a))||await m(r,1e4),await new Promise(e=>setTimeout(e,500)),await (0,n.Is)(r,t,!1),await (0,n.Is)(r,"",!0),console.log(`Sent message to Claude session: ${r}`)}async function p(e,t=1e3){let r=u(e);if(!await (0,n.Hk)(r))throw Error(`Claude session ${r} does not exist`);try{return await (0,n.xq)(r,{startLine:-t})}catch(e){throw Error(`Failed to capture Claude output: ${s(e)}`)}}async function y(e){let t=u(e);try{await (0,n.Hk)(t)&&(await (0,n.Is)(t,"",!1),await i(`tmux send-keys -t "${t}" C-d`),await new Promise(e=>setTimeout(e,500)));let e=await (0,n.AJ)(t);return e&&console.log(`āœ“ Stopped Claude session: ${t}`),e}catch(e){return console.error(`Error stopping Claude session: ${s(e)}`),!1}}},19377:(e,t,r)=>{"use strict";r.d(t,{H3:()=>c,Sg:()=>g,V7:()=>i,Wg:()=>f,bs:()=>function e(t){switch(t){case"claude":return{promptPattern:i,separatorPattern:s,thinkingPattern:o,skipPatterns:[/^─{10,}$/,/^[>āÆ]\s*$/,o,/^\s*[āŽæā‹]\s+Tip:/,/^\s*Tip:/,/^\s*\?\s*for shortcuts/,/to interrupt\)/]};case"codex":return{promptPattern:l,separatorPattern:u,thinkingPattern:a,skipPatterns:[/^─.*─+$/,/^›\s*$/,/^›\s+(Implement|Find and fix|Type)/,a,/^\s*\d+%\s+context left/,/^\s*for shortcuts$/,/╭─+ā•®/,/╰─+╯/,/•\s*Ran\s+/,/^\s*ā””/,/^\s*│/,/\(.*esc to interrupt\)/]};case"gemini":return{promptPattern:d,separatorPattern:/^gemini\s+--\s+/m,thinkingPattern:/(?!)/m,skipPatterns:[/^gemini\s+--\s+/,d,/^\s*$/]};default:return e("claude")}},vp:()=>w});let n=(0,r(43895).h)("cli-patterns"),o=RegExp(`[āœ»āœ½āŗ\xb7āˆ“āœ¢āœ³āœ¶ā¦æā—‰ā—ā—‹ā—Œā—ŽāŠ™āŠšā ‹ā ™ā ¹ā øā ¼ā “ā ¦ā §ā ‡ā ]\\s+.+…|esc to interrupt`,"m"),a=/•\s*(Planning|Searching|Exploring|Running|Thinking|Working|Reading|Writing|Analyzing|Ran|Deciding)/m,i=/^[>āÆ](\s*$|\s+\S)/m,s=/^─{10,}$/m,c=/Yes, I trust this folder/m,l=/^›\s*/m,u=/^─.*Worked for.*─+$/m,d=/^(%|\$|.*@.*[%$#])\s*$/m;function f(e,t){let r;let i=n.withContext({cliToolId:e});switch(i.debug("detectThinking:check",{contentLength:t.length}),e){case"claude":default:r=o.test(t);break;case"codex":r=a.test(t);break;case"gemini":r=!1}return i.debug("detectThinking:result",{isThinking:r}),r}let m=/\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\[[0-9;]*m/g;function w(e){return e.replace(m,"")}function g(e){if("claude"===e)return{requireDefaultIndicator:!1}}},76966:(e,t,r)=>{"use strict";r.d(t,{o:()=>a});var n=r(75748),o=r(98636);async function a(e,t,r,a="claude"){let i=(0,n.vX)(e,t);if(i)try{await (0,o.xN)(t,i.content,r,a)}catch(e){console.error("[recordClaudeConversation] Failed to create log file:",e)}}},98636:(e,t,r)=>{"use strict";r.d(t,{e7:()=>f,xN:()=>d});var n=r(20629),o=r.n(n),a=r(55315),i=r.n(a),s=r(73853);let c=(0,r(57569).Hb)("CM_LOG_DIR")||i().join(process.cwd(),"data","logs");function l(e="claude"){return i().join(c,e)}async function u(e="claude"){let t=l(e);try{await o().access(t)}catch{await o().mkdir(t,{recursive:!0})}}async function d(e,t,r,n="claude"){await u(n);let a=function(e,t="claude"){let r=(0,s.WU)(new Date,"yyyy-MM-dd"),n=`${e}-${r}.md`,o=l(t);return i().join(o,n)}(e,n),c=(0,s.WU)(new Date,"yyyy-MM-dd HH:mm:ss"),d="";try{d=await o().readFile(a,"utf-8")}catch{let t="claude"===n?"Claude Code":"codex"===n?"Codex CLI":"Gemini CLI";d=`# ${t} Conversation Log: ${e}
2
+
3
+ Created: ${c}
4
+
5
+ ---
6
+
7
+ `}return d+=`## Conversation at ${c}
8
+
9
+ ### User
10
+
11
+ ${t}
12
+
13
+ ### ${"claude"===n?"Claude":"codex"===n?"Codex":"Gemini"}
14
+
15
+ ${r}
16
+
17
+ ---
18
+
19
+ `,await o().writeFile(a,d,"utf-8"),a}async function f(e,t="all"){let r=[];for(let n of"all"===t?["claude","codex","gemini"]:[t]){await u(n);let t=l(n);try{let n=(await o().readdir(t)).filter(t=>t.startsWith(`${e}-`)&&t.endsWith(".md")).map(e=>i().join(t,e));r.push(...n)}catch{}}return r.sort().reverse()}},43895:(e,t,r)=>{"use strict";r.d(t,{Y:()=>c,h:()=>l});var n=r(57569);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,i={debug:0,info:1,warn:2,error:3};function s(e,t,r,s,c){let l=(0,n.LI)().level;if(i[e]<i[l])return;let u=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[n,o]of Object.entries(t))a.test(n)?r[n]="[REDACTED]":r[n]=e(o);return r}return t}(s):void 0,d=function(e){if("json"===(0,n.LI)().format)return JSON.stringify(e);let{timestamp:t,level:r,module:o,action:a,data:i,worktreeId:s,cliToolId:c,requestId:l}=e,u=[s,c].filter(Boolean),d=u.length>0?` [${u.join(":")}]`:"",f=l?` (${l.slice(0,8)})`:"",m=i?` ${JSON.stringify(i)}`:"";return`[${t}] [${r.toUpperCase()}] [${o}]${d}${f} ${a}${m}`}({level:e,module:t,action:r,timestamp:new Date().toISOString(),...c,...u&&{data:u}});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 l(e){let t=r=>({debug:(t,n)=>s("debug",e,t,n,r),info:(t,n)=>s("info",e,t,n,r),warn:(t,n)=>s("warn",e,t,n,r),error:(t,n)=>s("error",e,t,n,r),withContext:e=>t({...r,...e})});return t()}},10927:(e,t,r)=>{"use strict";r.d(t,{AJ:()=>d,Hk:()=>a,Is:()=>s,ZV:()=>f,ed:()=>i,hL:()=>l,xq:()=>u});var n=r(61282);let o=(0,r(21764).promisify)(n.exec);async function a(e){try{return await o(`tmux has-session -t "${e}"`,{timeout:5e3}),!0}catch{return!1}}async function i(e,t){let r,n,a;"string"==typeof e?(r=e,n=t,a=5e4):(r=e.sessionName,n=e.workingDirectory,a=e.historyLimit||5e4);try{await o(`tmux new-session -d -s "${r}" -c "${n}"`,{timeout:5e3}),await o(`tmux set-option -t "${r}" history-limit ${a}`,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to create tmux session: ${e}`)}}async function s(e,t,r=!0){let n=t.replace(/'/g,"'\\''"),a=r?`tmux send-keys -t "${e}" '${n}' C-m`:`tmux send-keys -t "${e}" '${n}'`;try{await o(a,{timeout:5e3})}catch(t){let e=t instanceof Error?t.message:String(t);throw Error(`Failed to send keys to tmux session: ${e}`)}}let c=new Set(["Up","Down","Left","Right","Enter","Space","Tab","Escape","BSpace","DC"]);async function l(e,t){if(0!==t.length){for(let e of t)if(!c.has(e))throw Error(`Invalid special key: ${e}`);try{for(let r=0;r<t.length;r++){let n=`tmux send-keys -t "${e}" ${t[r]}`;await o(n,{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 u(e,t){let r,n;"number"==typeof t?(r=-t,n="-"):t?(r=t.startLine??-1e4,n=t.endLine??"-"):(r=-1e3,n="-");try{let{stdout:t}=await o(`tmux capture-pane -t "${e}" -p -e -S ${r} -E ${n}`,{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 d(e){try{return await o(`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 f(e,t){try{await o(`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}`)}}},25079:(e,t,r)=>{"use strict";r.d(t,{ZV:()=>l,fM:()=>s,ps:()=>c});var n=r(34893);let o=new Map,a=new Map;function i(e,t){let r=a.get(e);if(console.log(`[WS] handleBroadcast called for ${e}, room size: ${r?.size||0}`),!r){console.log(`[WS] No room found for ${e}`);return}if(0===r.size){console.log(`[WS] Room for ${e} is empty`);return}try{let o=JSON.stringify({type:"broadcast",worktreeId:e,data:t}),a=0,i=0;r.forEach(e=>{if(e.readyState===n.XY.OPEN)try{e.send(o),a++}catch(e){i++,console.error("Error sending WebSocket message to client:",e)}}),console.log(`Broadcast to worktree ${e}: ${a}/${r.size} clients (${i} errors)`)}catch(t){console.error(`Error broadcasting to worktree ${e}:`,t);try{let t=JSON.stringify({type:"broadcast",worktreeId:e,data:{error:"Message encoding error"}});r.forEach(e=>{if(e.readyState===n.XY.OPEN)try{e.send(t)}catch{}})}catch(e){console.error("Failed to send fallback message:",e)}}}function s(e,t){i(e,t)}function c(e,t){t.worktreeId?i(t.worktreeId,{type:e,...t}):console.warn("broadcastMessage called without worktreeId")}function l(e){for(let t of e){let e=a.get(t);e&&(e.forEach(e=>{let r=o.get(e);r&&r.worktreeIds.delete(t)}),a.delete(t),console.log(`[WS] Cleaned up room for worktree: ${t}`))}}}};
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-3fc79fab9bb738d7.js","static/chunks/fd9d1056-bbe86e4ae099d5cd.js","static/chunks/2117-d845c2cd62e344a6.js","static/chunks/main-app-420d93e43682fee5.js"],pages:{"/_app":["static/chunks/webpack-3fc79fab9bb738d7.js","static/chunks/framework-8e0e0f4a6b83a956.js","static/chunks/main-a960f4a5e1a2f598.js","static/chunks/pages/_app-3c9ca398d360b709.js"],"/_error":["static/chunks/webpack-3fc79fab9bb738d7.js","static/chunks/framework-8e0e0f4a6b83a956.js","static/chunks/main-a960f4a5e1a2f598.js","static/chunks/pages/_error-cf5ca766ac8f493f.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-4f85dcef6279c6ee.js","static/chunks/fd9d1056-bbe86e4ae099d5cd.js","static/chunks/2117-d845c2cd62e344a6.js","static/chunks/main-app-420d93e43682fee5.js"],pages:{"/_app":["static/chunks/webpack-4f85dcef6279c6ee.js","static/chunks/framework-8e0e0f4a6b83a956.js","static/chunks/main-b6d727aa9248d4f2.js","static/chunks/pages/_app-3c9ca398d360b709.js"],"/_error":["static/chunks/webpack-4f85dcef6279c6ee.js","static/chunks/framework-8e0e0f4a6b83a956.js","static/chunks/main-b6d727aa9248d4f2.js","static/chunks/pages/_error-cf5ca766ac8f493f.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -1,32 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "middleware": {
4
- "/": {
5
- "files": [
6
- "server/edge-runtime-webpack.js",
7
- "server/src/middleware.js"
8
- ],
9
- "name": "src/middleware",
10
- "page": "/",
11
- "matchers": [
12
- {
13
- "regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?\\/api(?:\\/((?:[^\\/#\\?]+?)(?:\\/(?:[^\\/#\\?]+?))*))?(.json)?[\\/#\\?]?$",
14
- "originalSource": "/api/:path*"
15
- }
16
- ],
17
- "wasm": [],
18
- "assets": [],
19
- "env": {
20
- "__NEXT_BUILD_ID": "564GHwluX5xIv9qpqLJV2",
21
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "WZQZTpbyxdoxwnVXbfgEFi2saQO1l2Y+QKDsPXuKNTo=",
22
- "__NEXT_PREVIEW_MODE_ID": "73e471248ddc622f71f7950778c782a5",
23
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "79ce2ea6052ed270373736080939873febf10c1920cbbdf3fc348f8ecb713ff9",
24
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "97937e161965ce96eacd64177d23d6d20614df266ce8a0f72b21340cdc294dc7"
25
- }
26
- }
27
- },
3
+ "middleware": {},
28
4
  "functions": {},
29
- "sortedMiddleware": [
30
- "/"
31
- ]
5
+ "sortedMiddleware": []
32
6
  }