commandmate 0.41.1 → 0.42.0

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 (347) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +118 -118
  3. package/.next/app-path-routes-manifest.json +25 -25
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/api/agents/update/route.js +1 -1
  9. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/agents/versions/route.js +1 -1
  11. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update-check/route.js +1 -1
  15. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/capabilities/route.js +1 -1
  20. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  29. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  30. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  32. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  33. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  35. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  36. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  43. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  44. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/relays/route.js +1 -1
  46. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  47. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  51. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  52. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/repositories/clone/route.js +1 -1
  54. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  55. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/repositories/restore/route.js +1 -1
  58. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  59. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/route.js +1 -1
  61. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  62. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/repositories/scan/route.js +1 -1
  64. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  65. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/repositories/sync/route.js +1 -1
  67. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  68. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  71. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  72. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/slash-commands/route.js.nft.json +1 -1
  81. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  90. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  93. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  96. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  102. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  105. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  135. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  138. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  141. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  153. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  157. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/route.js +103 -1
  159. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  160. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/send/route.js +103 -1
  166. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  167. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +1 -103
  169. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  170. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  182. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
  184. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -103
  186. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  187. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  191. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/route.js +1 -1
  208. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  213. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  214. package/.next/server/app/page_client-reference-manifest.js +1 -1
  215. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  218. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  220. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  223. package/.next/server/app/worktrees/[id]/page.js +9 -9
  224. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app-paths-manifest.json +25 -25
  227. package/.next/server/chunks/1068.js +1 -0
  228. package/.next/server/chunks/1210.js +1 -1
  229. package/.next/server/chunks/1501.js +5 -5
  230. package/.next/server/chunks/1990.js +103 -0
  231. package/.next/server/chunks/2119.js +1 -1
  232. package/.next/server/chunks/2445.js +1 -1
  233. package/.next/server/chunks/3241.js +1 -1
  234. package/.next/server/chunks/3707.js +1 -1
  235. package/.next/server/chunks/3718.js +1 -0
  236. package/.next/server/chunks/434.js +1 -1
  237. package/.next/server/chunks/4443.js +1 -1
  238. package/.next/server/chunks/5164.js +1 -1
  239. package/.next/server/chunks/5775.js +1 -0
  240. package/.next/server/chunks/611.js +1 -0
  241. package/.next/server/chunks/6130.js +1 -1
  242. package/.next/server/chunks/650.js +1 -1
  243. package/.next/server/chunks/6781.js +1 -1
  244. package/.next/server/chunks/7905.js +1 -1
  245. package/.next/server/chunks/8581.js +1 -1
  246. package/.next/server/chunks/8583.js +1 -1
  247. package/.next/server/chunks/8673.js +2 -2
  248. package/.next/server/chunks/8728.js +3 -3
  249. package/.next/server/chunks/8791.js +1 -0
  250. package/.next/server/chunks/8800.js +1 -1
  251. package/.next/server/chunks/8918.js +1 -103
  252. package/.next/server/chunks/9130.js +2 -2
  253. package/.next/server/chunks/964.js +1 -1
  254. package/.next/server/chunks/9731.js +3 -3
  255. package/.next/server/chunks/9882.js +3 -3
  256. package/.next/server/middleware-manifest.json +5 -5
  257. package/.next/server/pages/500.html +1 -1
  258. package/.next/server/server-reference-manifest.json +1 -1
  259. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  260. package/.next/static/chunks/{2407-7bd75de2f6be3692.js → 2407-faae66d204748f7b.js} +1 -1
  261. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  262. package/.next/static/chunks/7705-2a2936551b0cf9a3.js +1 -0
  263. package/.next/static/chunks/8165-235859c6930f01b1.js +1 -0
  264. package/.next/static/chunks/app/{layout-51fa91ea833c97fc.js → layout-9a715043610e4e27.js} +1 -1
  265. package/.next/static/chunks/app/worktrees/[id]/page-61dd928d635db590.js +1 -0
  266. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  267. package/.next/static/css/{974314e796232f53.css → b3f433d52b8ed5c8.css} +1 -1
  268. package/.next/trace +13 -13
  269. package/dist/cli/commands/attach.d.ts +6 -4
  270. package/dist/cli/commands/attach.d.ts.map +1 -1
  271. package/dist/cli/commands/attach.js +36 -5
  272. package/dist/cli/commands/instances.d.ts.map +1 -1
  273. package/dist/cli/commands/instances.js +5 -0
  274. package/dist/cli/commands/ls.d.ts.map +1 -1
  275. package/dist/cli/commands/ls.js +19 -9
  276. package/dist/cli/commands/whoami.d.ts +9 -25
  277. package/dist/cli/commands/whoami.d.ts.map +1 -1
  278. package/dist/cli/commands/whoami.js +18 -42
  279. package/dist/cli/types/api-responses.d.ts +37 -0
  280. package/dist/cli/types/api-responses.d.ts.map +1 -1
  281. package/dist/lib/cli-tools/session-name.d.ts +72 -4
  282. package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
  283. package/dist/lib/cli-tools/session-name.js +115 -12
  284. package/dist/lib/detection/tools/verified-against.d.ts +11 -2
  285. package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
  286. package/dist/lib/detection/tools/verified-against.js +11 -2
  287. package/dist/lib/session/tmux-session-surface.d.ts +9 -7
  288. package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
  289. package/dist/lib/session/tmux-session-surface.js +15 -8
  290. package/dist/lib/tmux/legacy-session-alias.d.ts +43 -0
  291. package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -0
  292. package/dist/lib/tmux/legacy-session-alias.js +64 -0
  293. package/dist/lib/verification/verify-config.d.ts +21 -0
  294. package/dist/lib/verification/verify-config.d.ts.map +1 -1
  295. package/dist/lib/verification/verify-config.js +54 -1
  296. package/dist/server/locales/en/worktree.json +4 -1
  297. package/dist/server/locales/ja/worktree.json +4 -1
  298. package/dist/server/server.js +29 -0
  299. package/dist/server/src/lib/auto-yes-poller.js +15 -0
  300. package/dist/server/src/lib/cli-tools/antigravity.js +1 -1
  301. package/dist/server/src/lib/cli-tools/base.js +10 -1
  302. package/dist/server/src/lib/cli-tools/codex.js +1 -1
  303. package/dist/server/src/lib/cli-tools/command-code.js +1 -1
  304. package/dist/server/src/lib/cli-tools/copilot.js +1 -1
  305. package/dist/server/src/lib/cli-tools/gemini.js +1 -1
  306. package/dist/server/src/lib/cli-tools/legacy-session-adoption.js +19 -0
  307. package/dist/server/src/lib/cli-tools/opencode.js +1 -1
  308. package/dist/server/src/lib/cli-tools/session-name.js +115 -12
  309. package/dist/server/src/lib/cli-tools/session-namespace.js +55 -0
  310. package/dist/server/src/lib/cli-tools/session-ownership.js +21 -0
  311. package/dist/server/src/lib/cli-tools/vibe-local.js +1 -1
  312. package/dist/server/src/lib/cli-tools/worktree-session-ownership.js +28 -0
  313. package/dist/server/src/lib/db/app-settings-db.js +29 -0
  314. package/dist/server/src/lib/detection/cli-patterns.js +46 -8
  315. package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +8 -2
  316. package/dist/server/src/lib/detection/tools/codex/detect.js +8 -1
  317. package/dist/server/src/lib/detection/tools/codex/prompt.js +6 -2
  318. package/dist/server/src/lib/detection/tools/verified-against.js +11 -2
  319. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +77 -2
  320. package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +77 -1
  321. package/dist/server/src/lib/realtime/terminal-broadcast.js +11 -0
  322. package/dist/server/src/lib/session/adopt-legacy-sessions.js +89 -0
  323. package/dist/server/src/lib/session/claude-session.js +13 -10
  324. package/dist/server/src/lib/session/current-output-builder.js +18 -0
  325. package/dist/server/src/lib/session/send-user-message.js +26 -0
  326. package/dist/server/src/lib/session/session-instance-targets.js +53 -0
  327. package/dist/server/src/lib/session/tmux-session-surface.js +15 -8
  328. package/dist/server/src/lib/session/worktree-session-reconcile.js +101 -56
  329. package/dist/server/src/lib/session-cleanup.js +33 -3
  330. package/dist/server/src/lib/tmux/legacy-session-alias.js +64 -0
  331. package/dist/server/src/lib/tmux/session-hook-scripts.js +12 -4
  332. package/dist/server/src/lib/tmux/session-ownership.js +174 -0
  333. package/dist/server/src/lib/tmux/tmux.js +13 -3
  334. package/dist/server/src/lib/verification/env-clean-gate.js +46 -14
  335. package/dist/server/src/lib/verification/gate-runner.js +1 -0
  336. package/dist/server/src/lib/verification/verify-config.js +54 -1
  337. package/dist/server/src/lib/ws-server.js +11 -0
  338. package/package.json +1 -1
  339. package/release-notes/0.42.0.json +62 -0
  340. package/.next/server/chunks/3323.js +0 -1
  341. package/.next/server/chunks/7075.js +0 -1
  342. package/.next/server/chunks/9080.js +0 -1
  343. package/.next/static/chunks/7705-25076b57224da370.js +0 -1
  344. package/.next/static/chunks/8165-d3b7c8a7aa776bc7.js +0 -1
  345. package/.next/static/chunks/app/worktrees/[id]/page-1e6300dd50cd9a4d.js +0 -1
  346. /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → EbTDBXcXRpFNH4eom-HVv}/_buildManifest.js +0 -0
  347. /package/.next/static/{_fBjTkjoWfOqdjl2SeMIN → EbTDBXcXRpFNH4eom-HVv}/_ssgManifest.js +0 -0
@@ -15,15 +15,56 @@
15
15
  * `import('@/lib/ws-server')` の 458ms のうち 234ms を占めていた。
16
16
  *
17
17
  * 規則そのものは 1 箇所に保つ — `BaseCLITool.getSessionName()` はこの関数へ委譲する。
18
+ *
19
+ * ## Issue #2866: 名前空間(ns)
20
+ *
21
+ * worktree ID はディレクトリ名から作られるので、DB が別の 2 台のサーバでも
22
+ * `mcbd-{cli}-{worktreeId}` が重なる。サーバ起動時に `initSessionNamespace()`
23
+ * (`session-namespace.ts`)が ns(16 進 8 桁)を決めると、以後の名前は
24
+ * `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]` になる。ns 未設定(CLI・テスト・
25
+ * 初期化失敗時)は従来形式のまま。ns はどの CLI ツール ID とも一致しないので、
26
+ * `mcbd-` の直後の区切りで新旧を見分けられる({@link parseSessionName})。
27
+ *
28
+ * このモジュールは CLI バンドル(`tsconfig.cli.json` は paths なし)にも入るので、
29
+ * `@/` を使わず、DB にも触らない。ns の保持だけをここで行い、DB からの読み書きは
30
+ * `session-namespace.ts` が受け持つ。
18
31
  */
19
32
  import { type CLIToolType } from './types';
33
+ /** Shape of a session-name namespace: 8 lowercase hex digits (Issue #2866). */
34
+ export declare const SESSION_NAMESPACE_PATTERN: RegExp;
35
+ declare global {
36
+ var __cmTmuxSessionNamespace: string | null | undefined;
37
+ }
38
+ /**
39
+ * The namespace this process names its sessions with, or null (legacy names).
40
+ *
41
+ * @internal Read through `getSessionNamespace()` in `session-namespace.ts`.
42
+ * Kept on `globalThis` because the custom server sets it at startup while the
43
+ * Next route bundles — a separate module graph (Issue #2223) — read it.
44
+ */
45
+ export declare function getActiveSessionNamespace(): string | null;
46
+ /**
47
+ * @internal Set by `initSessionNamespace()` / reset by tests only.
48
+ */
49
+ export declare function setActiveSessionNamespace(namespace: string | null): void;
50
+ /**
51
+ * The session name in the given namespace, ignoring legacy adoptions
52
+ * (Issue #2866). `namespace === null` is the legacy form.
53
+ *
54
+ * @throws Error if the resulting session name is invalid
55
+ */
56
+ export declare function resolveNamespacedSessionName(namespace: string | null, cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
20
57
  /**
21
58
  * Resolve the tmux session name for a (worktree, CLI tool, instance) triple.
22
59
  *
23
- * Format (Issue #868):
24
- * - Primary instance (`instanceId` omitted or `=== cliToolId`):
25
- * `mcbd-{cli_tool_id}-{worktree_id}` — the backward-compatible anchor
26
- * - Additional instance: `mcbd-{cli_tool_id}-{worktree_id}-{suffix}`
60
+ * Format (Issue #868, #2866):
61
+ * - namespace set: `mcbd-{ns}-{cli_tool_id}-{worktree_id}[-{suffix}]` — unless a
62
+ * legacy session was adopted for that name (`adoptLegacySessions`), in which
63
+ * case the adopted legacy name is returned
64
+ * - namespace unset: `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`
65
+ *
66
+ * The primary instance (`instanceId` omitted or `=== cliToolId`) carries no
67
+ * suffix.
27
68
  *
28
69
  * T2.3 (MF4-001): the result is validated to keep shell metacharacters out of
29
70
  * the tmux command line.
@@ -36,9 +77,36 @@ import { type CLIToolType } from './types';
36
77
  *
37
78
  * @example
38
79
  * ```typescript
80
+ * // namespace unset
39
81
  * resolveSessionName('claude', 'wt-1'); // 'mcbd-claude-wt-1'
40
82
  * resolveSessionName('claude', 'wt-1', 'claude-2'); // 'mcbd-claude-wt-1-2'
83
+ * // namespace '0a1b2c3d'
84
+ * resolveSessionName('claude', 'wt-1'); // 'mcbd-0a1b2c3d-claude-wt-1'
41
85
  * ```
42
86
  */
43
87
  export declare function resolveSessionName(cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
88
+ /**
89
+ * The legacy (pre-#2866) session name, whatever the namespace:
90
+ * `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`.
91
+ *
92
+ * @throws Error if the resulting session name is invalid
93
+ */
94
+ export declare function resolveLegacySessionName(cliToolId: CLIToolType, worktreeId: string, instanceId?: string): string;
95
+ /** A session name split into its parts (Issue #2866). */
96
+ export interface ParsedSessionName {
97
+ /** The server namespace, or null for the legacy form */
98
+ namespace: string | null;
99
+ cliToolId: CLIToolType;
100
+ /** What follows `mcbd-[{ns}-]{cli}-`: the worktree ID and an optional suffix */
101
+ rest: string;
102
+ }
103
+ /**
104
+ * Split a session name of either form. The worktree ID and the instance suffix
105
+ * are NOT separated — worktree IDs may contain `-`, so only the caller (who
106
+ * knows the set of worktree IDs) can tell them apart.
107
+ *
108
+ * @returns null when the name does not start with `mcbd-`, names no known CLI
109
+ * tool, or has nothing after the tool
110
+ */
111
+ export declare function parseSessionName(name: string): ParsedSessionName | null;
44
112
  //# sourceMappingURL=session-name.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-name.d.ts","sourceRoot":"","sources":["../../../src/lib/cli-tools/session-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAUR"}
1
+ {"version":3,"file":"session-name.d.ts","sourceRoot":"","sources":["../../../src/lib/cli-tools/session-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAM9E,+EAA+E;AAC/E,eAAO,MAAM,yBAAyB,QAAkB,CAAC;AAOzD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKxE;AAmBD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAER;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAgBvE"}
@@ -16,18 +16,87 @@
16
16
  * `import('@/lib/ws-server')` の 458ms のうち 234ms を占めていた。
17
17
  *
18
18
  * 規則そのものは 1 箇所に保つ — `BaseCLITool.getSessionName()` はこの関数へ委譲する。
19
+ *
20
+ * ## Issue #2866: 名前空間(ns)
21
+ *
22
+ * worktree ID はディレクトリ名から作られるので、DB が別の 2 台のサーバでも
23
+ * `mcbd-{cli}-{worktreeId}` が重なる。サーバ起動時に `initSessionNamespace()`
24
+ * (`session-namespace.ts`)が ns(16 進 8 桁)を決めると、以後の名前は
25
+ * `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]` になる。ns 未設定(CLI・テスト・
26
+ * 初期化失敗時)は従来形式のまま。ns はどの CLI ツール ID とも一致しないので、
27
+ * `mcbd-` の直後の区切りで新旧を見分けられる({@link parseSessionName})。
28
+ *
29
+ * このモジュールは CLI バンドル(`tsconfig.cli.json` は paths なし)にも入るので、
30
+ * `@/` を使わず、DB にも触らない。ns の保持だけをここで行い、DB からの読み書きは
31
+ * `session-namespace.ts` が受け持つ。
19
32
  */
20
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.SESSION_NAMESPACE_PATTERN = void 0;
35
+ exports.getActiveSessionNamespace = getActiveSessionNamespace;
36
+ exports.setActiveSessionNamespace = setActiveSessionNamespace;
37
+ exports.resolveNamespacedSessionName = resolveNamespacedSessionName;
21
38
  exports.resolveSessionName = resolveSessionName;
39
+ exports.resolveLegacySessionName = resolveLegacySessionName;
40
+ exports.parseSessionName = parseSessionName;
22
41
  const types_1 = require("./types");
23
42
  const validation_1 = require("./validation");
43
+ const legacy_session_alias_1 = require("../tmux/legacy-session-alias");
44
+ const SESSION_NAME_PREFIX = 'mcbd-';
45
+ /** Shape of a session-name namespace: 8 lowercase hex digits (Issue #2866). */
46
+ exports.SESSION_NAMESPACE_PATTERN = /^[0-9a-f]{8}$/;
47
+ /** CLI tool ids, longest first, so a longer id is never read as a shorter one. */
48
+ const CLI_TOOL_IDS_LONGEST_FIRST = [...types_1.CLI_TOOL_IDS].sort((a, b) => b.length - a.length);
49
+ /**
50
+ * The namespace this process names its sessions with, or null (legacy names).
51
+ *
52
+ * @internal Read through `getSessionNamespace()` in `session-namespace.ts`.
53
+ * Kept on `globalThis` because the custom server sets it at startup while the
54
+ * Next route bundles — a separate module graph (Issue #2223) — read it.
55
+ */
56
+ function getActiveSessionNamespace() {
57
+ return globalThis.__cmTmuxSessionNamespace ?? null;
58
+ }
59
+ /**
60
+ * @internal Set by `initSessionNamespace()` / reset by tests only.
61
+ */
62
+ function setActiveSessionNamespace(namespace) {
63
+ if (namespace !== null && !exports.SESSION_NAMESPACE_PATTERN.test(namespace)) {
64
+ throw new Error(`Invalid session namespace: ${namespace}`);
65
+ }
66
+ globalThis.__cmTmuxSessionNamespace = namespace;
67
+ }
68
+ function buildSessionName(head, cliToolId, worktreeId, instanceId) {
69
+ const base = `${head}${cliToolId}-${worktreeId}`;
70
+ if (!instanceId || instanceId === cliToolId) {
71
+ (0, validation_1.validateSessionName)(base);
72
+ return base;
73
+ }
74
+ const suffix = (0, types_1.deriveSessionSuffix)(instanceId, cliToolId);
75
+ const sessionName = suffix ? `${base}-${suffix}` : base;
76
+ (0, validation_1.validateSessionName)(sessionName);
77
+ return sessionName;
78
+ }
79
+ /**
80
+ * The session name in the given namespace, ignoring legacy adoptions
81
+ * (Issue #2866). `namespace === null` is the legacy form.
82
+ *
83
+ * @throws Error if the resulting session name is invalid
84
+ */
85
+ function resolveNamespacedSessionName(namespace, cliToolId, worktreeId, instanceId) {
86
+ const head = namespace === null ? SESSION_NAME_PREFIX : `${SESSION_NAME_PREFIX}${namespace}-`;
87
+ return buildSessionName(head, cliToolId, worktreeId, instanceId);
88
+ }
24
89
  /**
25
90
  * Resolve the tmux session name for a (worktree, CLI tool, instance) triple.
26
91
  *
27
- * Format (Issue #868):
28
- * - Primary instance (`instanceId` omitted or `=== cliToolId`):
29
- * `mcbd-{cli_tool_id}-{worktree_id}` — the backward-compatible anchor
30
- * - Additional instance: `mcbd-{cli_tool_id}-{worktree_id}-{suffix}`
92
+ * Format (Issue #868, #2866):
93
+ * - namespace set: `mcbd-{ns}-{cli_tool_id}-{worktree_id}[-{suffix}]` — unless a
94
+ * legacy session was adopted for that name (`adoptLegacySessions`), in which
95
+ * case the adopted legacy name is returned
96
+ * - namespace unset: `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`
97
+ *
98
+ * The primary instance (`instanceId` omitted or `=== cliToolId`) carries no
99
+ * suffix.
31
100
  *
32
101
  * T2.3 (MF4-001): the result is validated to keep shell metacharacters out of
33
102
  * the tmux command line.
@@ -40,18 +109,52 @@ const validation_1 = require("./validation");
40
109
  *
41
110
  * @example
42
111
  * ```typescript
112
+ * // namespace unset
43
113
  * resolveSessionName('claude', 'wt-1'); // 'mcbd-claude-wt-1'
44
114
  * resolveSessionName('claude', 'wt-1', 'claude-2'); // 'mcbd-claude-wt-1-2'
115
+ * // namespace '0a1b2c3d'
116
+ * resolveSessionName('claude', 'wt-1'); // 'mcbd-0a1b2c3d-claude-wt-1'
45
117
  * ```
46
118
  */
47
119
  function resolveSessionName(cliToolId, worktreeId, instanceId) {
48
- const base = `mcbd-${cliToolId}-${worktreeId}`;
49
- if (!instanceId || instanceId === cliToolId) {
50
- (0, validation_1.validateSessionName)(base);
51
- return base;
120
+ const namespace = getActiveSessionNamespace();
121
+ const name = resolveNamespacedSessionName(namespace, cliToolId, worktreeId, instanceId);
122
+ if (namespace === null)
123
+ return name;
124
+ return (0, legacy_session_alias_1.lookupLegacyAlias)(name) ?? name;
125
+ }
126
+ /**
127
+ * The legacy (pre-#2866) session name, whatever the namespace:
128
+ * `mcbd-{cli_tool_id}-{worktree_id}[-{suffix}]`.
129
+ *
130
+ * @throws Error if the resulting session name is invalid
131
+ */
132
+ function resolveLegacySessionName(cliToolId, worktreeId, instanceId) {
133
+ return resolveNamespacedSessionName(null, cliToolId, worktreeId, instanceId);
134
+ }
135
+ /**
136
+ * Split a session name of either form. The worktree ID and the instance suffix
137
+ * are NOT separated — worktree IDs may contain `-`, so only the caller (who
138
+ * knows the set of worktree IDs) can tell them apart.
139
+ *
140
+ * @returns null when the name does not start with `mcbd-`, names no known CLI
141
+ * tool, or has nothing after the tool
142
+ */
143
+ function parseSessionName(name) {
144
+ if (!name.startsWith(SESSION_NAME_PREFIX))
145
+ return null;
146
+ let body = name.slice(SESSION_NAME_PREFIX.length);
147
+ let namespace = null;
148
+ const dash = body.indexOf('-');
149
+ if (dash > 0 && exports.SESSION_NAMESPACE_PATTERN.test(body.slice(0, dash))) {
150
+ namespace = body.slice(0, dash);
151
+ body = body.slice(dash + 1);
52
152
  }
53
- const suffix = (0, types_1.deriveSessionSuffix)(instanceId, cliToolId);
54
- const sessionName = suffix ? `${base}-${suffix}` : base;
55
- (0, validation_1.validateSessionName)(sessionName);
56
- return sessionName;
153
+ const cliToolId = CLI_TOOL_IDS_LONGEST_FIRST.find((id) => body.startsWith(`${id}-`));
154
+ if (!cliToolId)
155
+ return null;
156
+ const rest = body.slice(cliToolId.length + 1);
157
+ if (rest === '')
158
+ return null;
159
+ return { namespace, cliToolId, rest };
57
160
  }
@@ -57,10 +57,19 @@ export declare const CLAUDE_VERIFIED_AGAINST: {
57
57
  * verdict. **The stamp moved to 0.155.1 because every 0.155.1 frame now reads
58
58
  * correctly** (`codex-thread-title-bar-2818.test.ts`,
59
59
  * `codex-dialogs-0155-2808.test.ts`).
60
+ *
61
+ * ## Advanced to 0.157.1 by Issue #2868
62
+ *
63
+ * 0.157.1 reworded the `/model` picker's footer to `enter select · esc back`, so
64
+ * the picker read `prompt_detected` and `/prompt-response` refused its answers.
65
+ * #2868 ran the #2842 probe (`tests/fixtures/codex-dialogs-0157/`, 2026-09-27):
66
+ * of the six standard screens only `model-picker.txt` failed, and it reads
67
+ * `codex_selection_list` again via `CODEX_PICKER_FOOTER_PATTERN`
68
+ * (`codex-dialogs-0157.test.ts`).
60
69
  */
61
70
  export declare const CODEX_VERIFIED_AGAINST: {
62
- readonly version: "0.155.1";
63
- readonly capturedAt: "2026-09-21";
71
+ readonly version: "0.157.1";
72
+ readonly capturedAt: "2026-09-27";
64
73
  readonly paneGeometry: "200x1000";
65
74
  };
66
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B;;;;CAI9B,CAAC;AAEX,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CASpF,CAAC"}
1
+ {"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B;;;;CAI9B,CAAC;AAEX,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CASpF,CAAC"}
@@ -60,10 +60,19 @@ exports.CLAUDE_VERIFIED_AGAINST = {
60
60
  * verdict. **The stamp moved to 0.155.1 because every 0.155.1 frame now reads
61
61
  * correctly** (`codex-thread-title-bar-2818.test.ts`,
62
62
  * `codex-dialogs-0155-2808.test.ts`).
63
+ *
64
+ * ## Advanced to 0.157.1 by Issue #2868
65
+ *
66
+ * 0.157.1 reworded the `/model` picker's footer to `enter select · esc back`, so
67
+ * the picker read `prompt_detected` and `/prompt-response` refused its answers.
68
+ * #2868 ran the #2842 probe (`tests/fixtures/codex-dialogs-0157/`, 2026-09-27):
69
+ * of the six standard screens only `model-picker.txt` failed, and it reads
70
+ * `codex_selection_list` again via `CODEX_PICKER_FOOTER_PATTERN`
71
+ * (`codex-dialogs-0157.test.ts`).
63
72
  */
64
73
  exports.CODEX_VERIFIED_AGAINST = {
65
- version: '0.155.1',
66
- capturedAt: '2026-09-21',
74
+ version: '0.157.1',
75
+ capturedAt: '2026-09-27',
67
76
  paneGeometry: '200x1000',
68
77
  };
69
78
  /**
@@ -2,9 +2,9 @@
2
2
  * The tmux "surface" CommandMate publishes on its own sessions (Issue #2317).
3
3
  *
4
4
  * Everything here is a pure argument builder or a pure predicate — no
5
- * `child_process`, no `@/` path alias, and one constants import. Three
6
- * constraints put it here rather than under `lib/tmux/`, and all three are
7
- * load-bearing:
5
+ * `child_process`, no `@/` path alias, one constants import and the pure
6
+ * session-name parser. Three constraints put it here rather than under
7
+ * `lib/tmux/`, and all three are load-bearing:
8
8
  *
9
9
  * 1. **`tsconfig.cli.json` sets `"paths": {}`.** The CLI bundle resolves nothing
10
10
  * through `@/…`, so a module the `attach` command needs may only reach the
@@ -200,8 +200,9 @@ export declare function isLiveAttachSupported(cliToolId: string): boolean;
200
200
  /**
201
201
  * Whether a tmux session's NAME says it runs a tool `--live` supports.
202
202
  *
203
- * The session name is `mcbd-<tool>-<worktree>` and no supported tool id is a
204
- * prefix of another, so this is exact rather than a guess. It exists because
203
+ * The session name is `mcbd-[<ns>-]<tool>-<worktree>` and `parseSessionName`
204
+ * reads the tool out of either form (Issue #2866), so this is exact rather
205
+ * than a guess. It exists because
205
206
  * the two callers that need the answer — the attach hook script's installer and
206
207
  * the response poller — hold a session name and nothing else: a hook fires with
207
208
  * tmux formats, and the poller must not pay a tmux round-trip to ask about a
@@ -219,8 +220,9 @@ export declare function isLiveAttachEligibleSession(sessionName: string): boolea
219
220
  * else. `attach` prints its hint for exactly these.
220
221
  *
221
222
  * Deliberately a local list rather than an import of `usesAlternateScreen()`:
222
- * this module must stay free of `lib/cli-tools`, whose graph the CLI bundle
223
- * cannot afford (see the module docblock). The two are pinned to each other by
223
+ * this module must stay free of `lib/cli-tools` beyond the pure
224
+ * `session-name.ts`, whose tool graph the CLI bundle cannot afford (see the
225
+ * module docblock). The two are pinned to each other by
224
226
  * `tests/unit/tmux/session-surface-2317.test.ts`, so a tool moving in or out of
225
227
  * the alternate screen breaks a test rather than silently dropping the hint.
226
228
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tmux-session-surface.d.ts","sourceRoot":"","sources":["../../../src/lib/session/tmux-session-surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tmux-session-surface.d.ts","sourceRoot":"","sources":["../../../src/lib/session/tmux-session-surface.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@
3
3
  * The tmux "surface" CommandMate publishes on its own sessions (Issue #2317).
4
4
  *
5
5
  * Everything here is a pure argument builder or a pure predicate — no
6
- * `child_process`, no `@/` path alias, and one constants import. Three
7
- * constraints put it here rather than under `lib/tmux/`, and all three are
8
- * load-bearing:
6
+ * `child_process`, no `@/` path alias, one constants import and the pure
7
+ * session-name parser. Three constraints put it here rather than under
8
+ * `lib/tmux/`, and all three are load-bearing:
9
9
  *
10
10
  * 1. **`tsconfig.cli.json` sets `"paths": {}`.** The CLI bundle resolves nothing
11
11
  * through `@/…`, so a module the `attach` command needs may only reach the
@@ -67,6 +67,10 @@ exports.buildRemoveAutoPopupHookArgs = buildRemoveAutoPopupHookArgs;
67
67
  exports.buildDelegateGeometryCommands = buildDelegateGeometryCommands;
68
68
  exports.buildRestoreGeometryCommands = buildRestoreGeometryCommands;
69
69
  const tmux_pane_config_1 = require("../../config/tmux-pane-config");
70
+ // Relative on purpose (constraint 1 above). `session-name.ts` is already part of
71
+ // the CLI bundle (`commands/attach.ts` imports it) and reaches nothing through
72
+ // `@/…`, so it costs the bundle nothing new (Issue #2866).
73
+ const session_name_1 = require("../cli-tools/session-name");
70
74
  /**
71
75
  * Session-name prefix every CommandMate tmux session carries.
72
76
  *
@@ -308,8 +312,9 @@ function isLiveAttachSupported(cliToolId) {
308
312
  /**
309
313
  * Whether a tmux session's NAME says it runs a tool `--live` supports.
310
314
  *
311
- * The session name is `mcbd-<tool>-<worktree>` and no supported tool id is a
312
- * prefix of another, so this is exact rather than a guess. It exists because
315
+ * The session name is `mcbd-[<ns>-]<tool>-<worktree>` and `parseSessionName`
316
+ * reads the tool out of either form (Issue #2866), so this is exact rather
317
+ * than a guess. It exists because
313
318
  * the two callers that need the answer — the attach hook script's installer and
314
319
  * the response poller — hold a session name and nothing else: a hook fires with
315
320
  * tmux formats, and the poller must not pay a tmux round-trip to ask about a
@@ -320,7 +325,8 @@ function isLiveAttachSupported(cliToolId) {
320
325
  function isLiveAttachEligibleSession(sessionName) {
321
326
  if (!isCommandMateSession(sessionName))
322
327
  return false;
323
- return exports.LIVE_ATTACH_TOOLS.some((tool) => sessionName.startsWith(`${exports.MCBD_SESSION_PREFIX}${tool}-`));
328
+ const cliToolId = (0, session_name_1.parseSessionName)(sessionName)?.cliToolId;
329
+ return cliToolId !== undefined && exports.LIVE_ATTACH_TOOLS.includes(cliToolId);
324
330
  }
325
331
  /**
326
332
  * CLI tools that paint their transcript in the terminal's alternate screen.
@@ -331,8 +337,9 @@ function isLiveAttachEligibleSession(sessionName) {
331
337
  * else. `attach` prints its hint for exactly these.
332
338
  *
333
339
  * Deliberately a local list rather than an import of `usesAlternateScreen()`:
334
- * this module must stay free of `lib/cli-tools`, whose graph the CLI bundle
335
- * cannot afford (see the module docblock). The two are pinned to each other by
340
+ * this module must stay free of `lib/cli-tools` beyond the pure
341
+ * `session-name.ts`, whose tool graph the CLI bundle cannot afford (see the
342
+ * module docblock). The two are pinned to each other by
336
343
  * `tests/unit/tmux/session-surface-2317.test.ts`, so a tool moving in or out of
337
344
  * the alternate screen breaks a test rather than silently dropping the hint.
338
345
  */
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Legacy tmux session adoption table (Issue #2866).
3
+ *
4
+ * Once the server has a session-name namespace, a session is named
5
+ * `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]`. Sessions the same server started
6
+ * before that (`mcbd-{cli}-{worktreeId}[-{suffix}]`) are NOT renamed — a rename
7
+ * would lose them for an older CommandMate running beside this one, or after a
8
+ * downgrade. Instead `adoptLegacySessions` records "the new-format name X is
9
+ * served by the legacy session Y", and `resolveSessionName` returns Y for X
10
+ * while the entry lives.
11
+ *
12
+ * An entry is dropped when its legacy session is killed or found gone
13
+ * (`tmux.ts` `killSession` / `hasSession`), so the next start uses the
14
+ * new-format name.
15
+ *
16
+ * Pure (no `@/` alias, no child_process): `cli-tools/session-name.ts` reads it,
17
+ * and that module is part of the CLI bundle (`tsconfig.cli.json` has no paths).
18
+ *
19
+ * Kept on `globalThis` rather than in module scope: under `next start` this
20
+ * module is evaluated once in the custom server's graph and again in each Next
21
+ * route bundle (see `tui-accumulator.ts`, Issue #2223), and the table is filled
22
+ * by the server at startup but read by the routes.
23
+ */
24
+ declare global {
25
+ var __cmLegacySessionAliases: Map<string, string> | undefined;
26
+ }
27
+ /**
28
+ * Serve the new-format session name `newName` with the existing legacy session
29
+ * `legacyName`.
30
+ */
31
+ export declare function registerLegacyAlias(newName: string, legacyName: string): void;
32
+ /** The legacy session name adopted for `newName`, if any. */
33
+ export declare function lookupLegacyAlias(newName: string): string | undefined;
34
+ /**
35
+ * Forget every adoption served by the legacy session `legacyName`. A no-op for
36
+ * a name that is not an adopted legacy session.
37
+ *
38
+ * @returns true when an entry was removed
39
+ */
40
+ export declare function dropLegacyAliasByLegacyName(legacyName: string): boolean;
41
+ /** Test-only: forget every adoption. */
42
+ export declare function clearLegacyAliasesForTests(): void;
43
+ //# sourceMappingURL=legacy-session-alias.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-session-alias.d.ts","sourceRoot":"","sources":["../../../src/lib/tmux/legacy-session-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC/D;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvE;AAED,wCAAwC;AACxC,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * Legacy tmux session adoption table (Issue #2866).
4
+ *
5
+ * Once the server has a session-name namespace, a session is named
6
+ * `mcbd-{ns}-{cli}-{worktreeId}[-{suffix}]`. Sessions the same server started
7
+ * before that (`mcbd-{cli}-{worktreeId}[-{suffix}]`) are NOT renamed — a rename
8
+ * would lose them for an older CommandMate running beside this one, or after a
9
+ * downgrade. Instead `adoptLegacySessions` records "the new-format name X is
10
+ * served by the legacy session Y", and `resolveSessionName` returns Y for X
11
+ * while the entry lives.
12
+ *
13
+ * An entry is dropped when its legacy session is killed or found gone
14
+ * (`tmux.ts` `killSession` / `hasSession`), so the next start uses the
15
+ * new-format name.
16
+ *
17
+ * Pure (no `@/` alias, no child_process): `cli-tools/session-name.ts` reads it,
18
+ * and that module is part of the CLI bundle (`tsconfig.cli.json` has no paths).
19
+ *
20
+ * Kept on `globalThis` rather than in module scope: under `next start` this
21
+ * module is evaluated once in the custom server's graph and again in each Next
22
+ * route bundle (see `tui-accumulator.ts`, Issue #2223), and the table is filled
23
+ * by the server at startup but read by the routes.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.registerLegacyAlias = registerLegacyAlias;
27
+ exports.lookupLegacyAlias = lookupLegacyAlias;
28
+ exports.dropLegacyAliasByLegacyName = dropLegacyAliasByLegacyName;
29
+ exports.clearLegacyAliasesForTests = clearLegacyAliasesForTests;
30
+ function aliases() {
31
+ return (globalThis.__cmLegacySessionAliases ??= new Map());
32
+ }
33
+ /**
34
+ * Serve the new-format session name `newName` with the existing legacy session
35
+ * `legacyName`.
36
+ */
37
+ function registerLegacyAlias(newName, legacyName) {
38
+ aliases().set(newName, legacyName);
39
+ }
40
+ /** The legacy session name adopted for `newName`, if any. */
41
+ function lookupLegacyAlias(newName) {
42
+ return aliases().get(newName);
43
+ }
44
+ /**
45
+ * Forget every adoption served by the legacy session `legacyName`. A no-op for
46
+ * a name that is not an adopted legacy session.
47
+ *
48
+ * @returns true when an entry was removed
49
+ */
50
+ function dropLegacyAliasByLegacyName(legacyName) {
51
+ const table = aliases();
52
+ let dropped = false;
53
+ for (const [newName, legacy] of table) {
54
+ if (legacy === legacyName) {
55
+ table.delete(newName);
56
+ dropped = true;
57
+ }
58
+ }
59
+ return dropped;
60
+ }
61
+ /** Test-only: forget every adoption. */
62
+ function clearLegacyAliasesForTests() {
63
+ aliases().clear();
64
+ }
@@ -87,6 +87,22 @@ export interface VerifyOptions {
87
87
  * never a pass.
88
88
  */
89
89
  requireEnvClean: boolean;
90
+ /**
91
+ * `$HOME` entry names the `env-clean` gate does not count (Issue #2890).
92
+ * Default `[]`; the loader always fills it, so a loaded config has the key.
93
+ *
94
+ * **Exact names, no glob, no regex.** A pattern would let one careless line
95
+ * (`.*`) switch the `home-entries` probe off, and the probe exists to catch
96
+ * exactly what an agent leaves in `$HOME`. The list is for entries that
97
+ * appear on their own — another tool's dotdir created by a process nobody on
98
+ * this task started — and it is applied when the two snapshots are compared,
99
+ * so it also covers baselines taken before the entry was listed here.
100
+ * Whatever it excused is named in the gate's report rather than dropped.
101
+ *
102
+ * Optional in the type only so a hand-built {@link VerifyConfig} fixture that
103
+ * predates the key keeps compiling; the parser never leaves it out.
104
+ */
105
+ envCleanIgnoreHomeEntries?: string[];
90
106
  }
91
107
  export interface VerifyConfig {
92
108
  version: 1;
@@ -170,6 +186,11 @@ export declare const MAX_GATE_MUTEX_LENGTH = 64;
170
186
  * reports the machine's luck, not the work.
171
187
  */
172
188
  export declare const MAX_RETRY_ON_FAIL = 1;
189
+ /**
190
+ * Most names `options.envCleanIgnoreHomeEntries` may list (Issue #2890). A list
191
+ * this long is already a repository papering over a machine it should fix.
192
+ */
193
+ export declare const MAX_ENV_CLEAN_IGNORE_HOME_ENTRIES = 32;
173
194
  export declare class VerifyConfigError extends Error {
174
195
  readonly issues: string[];
175
196
  constructor(issues: string[]);
@@ -1 +1 @@
1
- {"version":3,"file":"verify-config.d.ts","sourceRoot":"","sources":["../../../src/lib/verification/verify-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,kDAIpB,CAAC;AAEX,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,aAAa,GAAE,SAAS,UAAU,EAAO,GACxC,MAAM,EAAE,CAWV;AAED,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAM/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAA8B,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAYnC,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE;CAK7B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAe9F;AA2OD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYtE"}
1
+ {"version":3,"file":"verify-config.d.ts","sourceRoot":"","sources":["../../../src/lib/verification/verify-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,kDAIpB,CAAC;AAEX,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,aAAa,GAAE,SAAS,UAAU,EAAO,GACxC,MAAM,EAAE,CAWV;AAED,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAM/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,QAA8B,CAAC;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAapD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE;CAK7B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAe9F;AA8RD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYtE"}