commandmate 0.44.2 → 0.44.3

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 (581) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +149 -149
  3. package/.next/app-path-routes-manifest.json +21 -21
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +0 -6
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/update/route.js +1 -1
  10. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/versions/route.js +1 -1
  12. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update/route.js +2 -2
  15. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/login/route.js +1 -1
  18. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/capabilities/route.js +1 -1
  22. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/route.js +1 -1
  24. package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
  25. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/daily-summary/status/route.js +1 -1
  27. package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
  28. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/external-apps/[id]/route.js +1 -1
  31. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/external-apps/route.js +1 -1
  33. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/agent-event/route.js +2 -2
  37. package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
  38. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/hooks/claude-done/route.js +2 -2
  40. package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
  41. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  43. package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
  44. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/push/escalation/route.js +1 -1
  48. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/push/subscriptions/route.js +2 -2
  50. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/push/vapid/route.js +1 -1
  52. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
  54. package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
  55. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/relays/route.js +1 -1
  57. package/.next/server/app/api/relays/route.js.nft.json +1 -1
  58. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/repositories/[id]/route.js +1 -1
  61. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
  63. package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/repositories/clone/route.js +1 -1
  66. package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
  67. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/repositories/restore/route.js +1 -1
  70. package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
  71. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/repositories/route.js +1 -1
  73. package/.next/server/app/api/repositories/route.js.nft.json +1 -1
  74. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/repositories/scan/route.js +1 -1
  76. package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
  77. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/repositories/sync/route.js +1 -1
  79. package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
  80. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/settings/default-agents/route.js +1 -1
  83. package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
  84. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/sidebar/group-order/route.js +1 -1
  87. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/skills/[id]/route.js +1 -1
  89. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/skills/route.js +1 -1
  94. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/templates/[id]/route.js +2 -2
  99. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/templates/route.js +2 -2
  101. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
  106. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
  109. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
  112. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/cli-tool/route.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -3
  117. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
  118. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
  121. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
  124. package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +2 -2
  128. package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
  129. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/git/branch/create/route.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/git/checkout/route.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/git/commit/route.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/git/fetch/route.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/git/pull/route.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/git/push/route.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/git/reset/route.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/[id]/git/revert/route.js +1 -1
  152. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/worktrees/[id]/git/stage/route.js +1 -1
  155. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route.js +1 -1
  159. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route.js +1 -1
  161. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/worktrees/[id]/git/stash/push/route.js +1 -1
  163. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/worktrees/[id]/git/unstage/route.js +1 -1
  167. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/worktrees/[id]/instances/notes/route.js +1 -1
  170. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
  172. package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
  173. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
  175. package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
  176. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
  178. package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
  179. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/worktrees/[id]/marp-render/route.js +1 -1
  183. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route.js +1 -1
  185. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  186. package/.next/server/app/api/worktrees/[id]/memos/route.js +1 -1
  187. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js +1 -1
  190. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
  192. package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
  193. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
  195. package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
  196. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
  198. package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
  199. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
  202. package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
  203. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/worktrees/[id]/route.js +1 -1
  205. package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
  206. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +2 -2
  208. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
  209. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +2 -2
  211. package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
  212. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -3
  214. package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
  215. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
  218. package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
  219. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
  221. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
  222. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route.js +1 -1
  225. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  228. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route.js +1 -1
  230. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  231. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
  233. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  234. package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
  235. package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
  236. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  237. package/.next/server/app/api/worktrees/[id]/tasks/route.js +1 -1
  238. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
  240. package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
  241. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
  244. package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
  245. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js +1 -1
  247. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/api/worktrees/[id]/todos/route.js +1 -1
  249. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  250. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  252. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  253. package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
  254. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  255. package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
  256. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
  258. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  259. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  261. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  262. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/api/worktrees/route.js +1 -1
  264. package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
  265. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  267. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  268. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  273. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/sessions/page.js +1 -1
  275. package/.next/server/app/sessions/page.js.nft.json +1 -1
  276. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  277. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  280. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  281. package/.next/server/app/worktrees/[id]/page.js +11 -11
  282. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  283. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  284. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  285. package/.next/server/app-paths-manifest.json +21 -21
  286. package/.next/server/chunks/1191.js +2 -2
  287. package/.next/server/chunks/1210.js +1 -1
  288. package/.next/server/chunks/1559.js +2 -0
  289. package/.next/server/chunks/1789.js +1 -0
  290. package/.next/server/chunks/2119.js +1 -1
  291. package/.next/server/chunks/2404.js +1 -1
  292. package/.next/server/chunks/2445.js +1 -1
  293. package/.next/server/chunks/2460.js +1 -1
  294. package/.next/server/chunks/2710.js +1 -1
  295. package/.next/server/chunks/2908.js +1 -1
  296. package/.next/server/chunks/2980.js +1 -1
  297. package/.next/server/chunks/3241.js +1 -1
  298. package/.next/server/chunks/3480.js +1 -1
  299. package/.next/server/chunks/3718.js +1 -1
  300. package/.next/server/chunks/4207.js +2 -2
  301. package/.next/server/chunks/450.js +1 -1
  302. package/.next/server/chunks/4672.js +5 -0
  303. package/.next/server/chunks/{9353.js → 4718.js} +2 -2
  304. package/.next/server/chunks/4837.js +14 -0
  305. package/.next/server/chunks/5048.js +1 -1
  306. package/.next/server/chunks/5209.js +1 -0
  307. package/.next/server/chunks/5595.js +1 -1
  308. package/.next/server/chunks/5625.js +25 -0
  309. package/.next/server/chunks/611.js +1 -1
  310. package/.next/server/chunks/6130.js +1 -1
  311. package/.next/server/chunks/6401.js +1 -1
  312. package/.next/server/chunks/6781.js +1 -1
  313. package/.next/server/chunks/6793.js +3 -3
  314. package/.next/server/chunks/7491.js +2 -2
  315. package/.next/server/chunks/7905.js +1 -1
  316. package/.next/server/chunks/850.js +1 -1
  317. package/.next/server/chunks/8728.js +3 -3
  318. package/.next/server/chunks/8791.js +1 -1
  319. package/.next/server/chunks/8800.js +1 -1
  320. package/.next/server/chunks/8918.js +7 -7
  321. package/.next/server/chunks/9130.js +1 -1
  322. package/.next/server/chunks/9390.js +2 -2
  323. package/.next/server/chunks/9584.js +1 -1
  324. package/.next/server/chunks/9627.js +6 -6
  325. package/.next/server/chunks/9731.js +3 -3
  326. package/.next/server/middleware-manifest.json +5 -5
  327. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  328. package/.next/server/pages/500.html +1 -1
  329. package/.next/server/server-reference-manifest.json +1 -1
  330. package/.next/static/chunks/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
  331. package/.next/static/chunks/{2407-051f6f84226a9f2c.js → 2407-06d35bb1aa02de80.js} +1 -1
  332. package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
  333. package/.next/static/chunks/4727-5d695d71e3fdf97b.js +1 -0
  334. package/.next/static/chunks/{8165-3853772f6ae1299b.js → 8165-3525fb42f1b4976e.js} +1 -1
  335. package/.next/static/chunks/app/{layout-9da1ab602bcb3051.js → layout-0d1750b833f5cc3e.js} +1 -1
  336. package/.next/static/chunks/app/sessions/page-2af68c63211c751f.js +1 -0
  337. package/.next/static/chunks/app/worktrees/[id]/page-e36898c3a80e7302.js +1 -0
  338. package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
  339. package/.next/static/css/057f64a65726c439.css +1 -0
  340. package/.next/trace +13 -13
  341. package/dist/cli/commands/ask.d.ts.map +1 -1
  342. package/dist/cli/commands/ask.js +120 -119
  343. package/dist/cli/commands/attach.d.ts +94 -0
  344. package/dist/cli/commands/attach.d.ts.map +1 -1
  345. package/dist/cli/commands/attach.js +145 -7
  346. package/dist/cli/commands/auto-yes.js +1 -1
  347. package/dist/cli/commands/capture.d.ts.map +1 -1
  348. package/dist/cli/commands/capture.js +3 -5
  349. package/dist/cli/commands/command-target.d.ts +23 -0
  350. package/dist/cli/commands/command-target.d.ts.map +1 -0
  351. package/dist/cli/commands/command-target.js +25 -0
  352. package/dist/cli/commands/instances.d.ts.map +1 -1
  353. package/dist/cli/commands/instances.js +41 -2
  354. package/dist/cli/commands/message-dispatch.d.ts +36 -0
  355. package/dist/cli/commands/message-dispatch.d.ts.map +1 -0
  356. package/dist/cli/commands/message-dispatch.js +63 -0
  357. package/dist/cli/commands/reply.d.ts.map +1 -1
  358. package/dist/cli/commands/reply.js +2 -5
  359. package/dist/cli/commands/respond.d.ts.map +1 -1
  360. package/dist/cli/commands/respond.js +3 -6
  361. package/dist/cli/commands/send.d.ts.map +1 -1
  362. package/dist/cli/commands/send.js +149 -146
  363. package/dist/cli/commands/wait.d.ts.map +1 -1
  364. package/dist/cli/commands/wait.js +589 -431
  365. package/dist/cli/types/api-responses.d.ts +159 -27
  366. package/dist/cli/types/api-responses.d.ts.map +1 -1
  367. package/dist/cli/types/api-responses.js +4 -2
  368. package/dist/cli/utils/api-client.d.ts +25 -5
  369. package/dist/cli/utils/api-client.d.ts.map +1 -1
  370. package/dist/cli/utils/api-client.js +87 -55
  371. package/dist/cli/utils/server-url.d.ts +1 -0
  372. package/dist/cli/utils/server-url.d.ts.map +1 -1
  373. package/dist/cli/utils/server-url.js +7 -0
  374. package/dist/config/uat-isolation.d.ts +140 -0
  375. package/dist/config/uat-isolation.d.ts.map +1 -0
  376. package/dist/config/uat-isolation.js +246 -0
  377. package/dist/lib/global-state.d.ts +12 -0
  378. package/dist/lib/global-state.d.ts.map +1 -0
  379. package/dist/lib/global-state.js +16 -0
  380. package/dist/lib/polling/auto-yes-suppression-reason.d.ts +33 -0
  381. package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -0
  382. package/dist/lib/polling/auto-yes-suppression-reason.js +2 -0
  383. package/dist/lib/session/prompt-view.d.ts +26 -3
  384. package/dist/lib/session/prompt-view.d.ts.map +1 -1
  385. package/dist/lib/session/prompt-view.js +26 -3
  386. package/dist/lib/session/status-evidence-type.d.ts +16 -0
  387. package/dist/lib/session/status-evidence-type.d.ts.map +1 -0
  388. package/dist/lib/session/status-evidence-type.js +2 -0
  389. package/dist/lib/tmux/legacy-session-alias.d.ts.map +1 -1
  390. package/dist/lib/tmux/legacy-session-alias.js +2 -1
  391. package/dist/server/locales/en/worktree.json +3 -1
  392. package/dist/server/locales/ja/worktree.json +3 -1
  393. package/dist/server/src/cli/types/api-responses.js +4 -2
  394. package/dist/server/src/config/cli-tool-timing-config.js +1 -6
  395. package/dist/server/src/config/uat-isolation.js +246 -0
  396. package/dist/server/src/lib/assistant-response-saver.js +62 -3
  397. package/dist/server/src/lib/auto-yes-lifecycle.js +6 -0
  398. package/dist/server/src/lib/auto-yes-poller.js +450 -160
  399. package/dist/server/src/lib/auto-yes-state.js +2 -2
  400. package/dist/server/src/lib/cli-tools/antigravity.js +38 -79
  401. package/dist/server/src/lib/cli-tools/base.js +151 -0
  402. package/dist/server/src/lib/cli-tools/codex.js +44 -80
  403. package/dist/server/src/lib/cli-tools/command-code.js +24 -56
  404. package/dist/server/src/lib/cli-tools/copilot.js +25 -67
  405. package/dist/server/src/lib/cli-tools/direct-input.js +8 -0
  406. package/dist/server/src/lib/cli-tools/gemini.js +23 -73
  407. package/dist/server/src/lib/cli-tools/opencode-pane-width.js +53 -0
  408. package/dist/server/src/lib/cli-tools/opencode-v2.js +9 -7
  409. package/dist/server/src/lib/cli-tools/opencode.js +21 -85
  410. package/dist/server/src/lib/cli-tools/submit-verified-sender.js +127 -4
  411. package/dist/server/src/lib/cli-tools/vibe-local.js +21 -66
  412. package/dist/server/src/lib/detection/cli-patterns.js +374 -3065
  413. package/dist/server/src/lib/detection/idle-evidence-observation.js +2 -2
  414. package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +7 -32
  415. package/dist/server/src/lib/detection/prompt-detector.js +2 -35
  416. package/dist/server/src/lib/detection/selection-shape-patterns.js +69 -0
  417. package/dist/server/src/lib/detection/selection-shape.js +32 -520
  418. package/dist/server/src/lib/detection/shared/pasted-text.js +41 -0
  419. package/dist/server/src/lib/detection/shared/shell-pane-command.js +16 -0
  420. package/dist/server/src/lib/detection/shared/strip-box-drawing.js +25 -0
  421. package/dist/server/src/lib/detection/tools/antigravity/detect.js +5 -29
  422. package/dist/server/src/lib/detection/tools/antigravity/dialog.js +2 -15
  423. package/dist/server/src/lib/detection/tools/antigravity/patterns.js +286 -0
  424. package/dist/server/src/lib/detection/tools/claude/detect.js +3 -14
  425. package/dist/server/src/lib/detection/tools/claude/patterns.js +264 -4
  426. package/dist/server/src/lib/detection/tools/claude/prompt.js +2 -10
  427. package/dist/server/src/lib/detection/tools/codex/detect.js +46 -85
  428. package/dist/server/src/lib/detection/tools/codex/live-region.js +33 -2
  429. package/dist/server/src/lib/detection/tools/codex/patterns.js +855 -0
  430. package/dist/server/src/lib/detection/tools/codex/prompt.js +2 -10
  431. package/dist/server/src/lib/detection/tools/command-code/detect.js +8 -50
  432. package/dist/server/src/lib/detection/tools/command-code/dialog.js +2 -18
  433. package/dist/server/src/lib/detection/tools/command-code/patterns.js +234 -0
  434. package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +461 -0
  435. package/dist/server/src/lib/detection/tools/context-above.js +20 -0
  436. package/dist/server/src/lib/detection/tools/copilot/detect.js +10 -35
  437. package/dist/server/src/lib/detection/tools/copilot/patterns.js +640 -0
  438. package/dist/server/src/lib/detection/tools/copilot/prompt.js +2 -10
  439. package/dist/server/src/lib/detection/tools/gemini/patterns.js +29 -0
  440. package/dist/server/src/lib/detection/tools/live-region-specs.js +1 -1
  441. package/dist/server/src/lib/detection/tools/opencode/detect.js +8 -49
  442. package/dist/server/src/lib/detection/tools/opencode/patterns.js +508 -0
  443. package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +7 -42
  444. package/dist/server/src/lib/detection/tools/opencode-v2/patterns.js +63 -0
  445. package/dist/server/src/lib/detection/tools/run-detection.js +6 -47
  446. package/dist/server/src/lib/detection/tools/verdicts.js +59 -0
  447. package/dist/server/src/lib/detection/tools/vibe-local/patterns.js +20 -0
  448. package/dist/server/src/lib/detection/truncate-raw-content.js +38 -0
  449. package/dist/server/src/lib/detection/turn-abandoned.js +66 -0
  450. package/dist/server/src/lib/detection/unclassified-frame-tracker.js +2 -2
  451. package/dist/server/src/lib/global-state.js +16 -0
  452. package/dist/server/src/lib/hooks/agent-session-telemetry.js +4 -6
  453. package/dist/server/src/lib/hooks/permission-decision-state.js +2 -2
  454. package/dist/server/src/lib/hooks/sources/antigravity/history.js +11 -76
  455. package/dist/server/src/lib/hooks/sources/antigravity/hooks-config.js +63 -1
  456. package/dist/server/src/lib/hooks/sources/antigravity/source.js +16 -0
  457. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +3 -12
  458. package/dist/server/src/lib/hooks/sources/claude/history.js +17 -156
  459. package/dist/server/src/lib/hooks/sources/claude/queued-notice.js +53 -0
  460. package/dist/server/src/lib/hooks/sources/claude/source.js +33 -3
  461. package/dist/server/src/lib/hooks/sources/claude/transcript.js +3 -13
  462. package/dist/server/src/lib/hooks/sources/codex/history.js +11 -74
  463. package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +147 -11
  464. package/dist/server/src/lib/hooks/sources/codex/relay-install.js +64 -21
  465. package/dist/server/src/lib/hooks/sources/codex/transcript.js +5 -15
  466. package/dist/server/src/lib/hooks/sources/command-code/history.js +20 -121
  467. package/dist/server/src/lib/hooks/sources/command-code/transcript.js +3 -13
  468. package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +161 -31
  469. package/dist/server/src/lib/hooks/sources/define-source.js +40 -55
  470. package/dist/server/src/lib/hooks/sources/event-mapper.js +2 -1
  471. package/dist/server/src/lib/hooks/sources/opencode/diff.js +3 -4
  472. package/dist/server/src/lib/hooks/sources/opencode/history.js +2 -1
  473. package/dist/server/src/lib/hooks/sources/opencode/launch-settings.js +2 -1
  474. package/dist/server/src/lib/hooks/sources/opencode/payloads.js +2 -1
  475. package/dist/server/src/lib/hooks/sources/opencode/ports.js +2 -1
  476. package/dist/server/src/lib/hooks/sources/opencode/subscription.js +4 -3
  477. package/dist/server/src/lib/hooks/sources/opencode/transcript.js +3 -16
  478. package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +2 -1
  479. package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +5 -4
  480. package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +2 -1
  481. package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +3 -7
  482. package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +2 -1
  483. package/dist/server/src/lib/hooks/sources/pending-decisions.js +2 -1
  484. package/dist/server/src/lib/hooks/sources/registry.js +3 -2
  485. package/dist/server/src/lib/hooks/sources/transcript-history.js +262 -0
  486. package/dist/server/src/lib/hooks/sources/turn-body.js +31 -0
  487. package/dist/server/src/lib/hooks/tool-input-normalization-state.js +2 -2
  488. package/dist/server/src/lib/polling/antigravity-permission-receipts.js +2 -2
  489. package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +142 -0
  490. package/dist/server/src/lib/polling/auto-yes-enter-fallback.js +187 -0
  491. package/dist/server/src/lib/polling/auto-yes-resolver.js +9 -3
  492. package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +2 -0
  493. package/dist/server/src/lib/polling/auto-yes-suppression-state.js +2 -2
  494. package/dist/server/src/lib/polling/pending-scraped-response.js +190 -0
  495. package/dist/server/src/lib/polling/prompt-dedup-state.js +2 -2
  496. package/dist/server/src/lib/polling/prompt-dedup.js +2 -2
  497. package/dist/server/src/lib/polling/response-checker-dialog-gate.js +95 -0
  498. package/dist/server/src/lib/polling/response-checker-extraction-result.js +50 -0
  499. package/dist/server/src/lib/polling/response-checker-extraction-steps.js +670 -0
  500. package/dist/server/src/lib/polling/response-checker.js +641 -1142
  501. package/dist/server/src/lib/polling/response-dedup.js +3 -4
  502. package/dist/server/src/lib/polling/response-poller-constants.js +17 -0
  503. package/dist/server/src/lib/polling/response-poller-core.js +54 -20
  504. package/dist/server/src/lib/polling/startup-screen.js +142 -0
  505. package/dist/server/src/lib/polling/structured-history-gate.js +3 -2
  506. package/dist/server/src/lib/prompt-answer-semantic.js +178 -0
  507. package/dist/server/src/lib/prompt-answer-sender.js +5 -4
  508. package/dist/server/src/lib/push/failure-episode-state.js +2 -2
  509. package/dist/server/src/lib/push/notification-dedup.js +3 -4
  510. package/dist/server/src/lib/push/prompt-card-state.js +2 -2
  511. package/dist/server/src/lib/push/waiting-push-notifier.js +3 -4
  512. package/dist/server/src/lib/realtime/publisher-registry.js +3 -2
  513. package/dist/server/src/lib/realtime/terminal-broadcast.js +38 -5
  514. package/dist/server/src/lib/realtime/terminal-session-ownership.js +45 -0
  515. package/dist/server/src/lib/relay/relay-delivery.js +3 -2
  516. package/dist/server/src/lib/relay/relay-readiness.js +38 -1
  517. package/dist/server/src/lib/response-cleaner.js +24 -1
  518. package/dist/server/src/lib/response-extractor.js +16 -0
  519. package/dist/server/src/lib/schedule-manager.js +8 -10
  520. package/dist/server/src/lib/session/agent-event-ask-user-question.js +168 -0
  521. package/dist/server/src/lib/session/agent-event-awaiting-instruction.js +104 -0
  522. package/dist/server/src/lib/session/agent-event-dedup.js +539 -0
  523. package/dist/server/src/lib/session/agent-event-model.js +562 -0
  524. package/dist/server/src/lib/session/agent-event-record.js +10 -0
  525. package/dist/server/src/lib/session/agent-event-state.js +106 -1854
  526. package/dist/server/src/lib/session/agent-event-structured-state.js +109 -0
  527. package/dist/server/src/lib/session/agent-event-turn.js +811 -0
  528. package/dist/server/src/lib/session/agent-session-lifecycle.js +11 -2
  529. package/dist/server/src/lib/session/chat-turn-progress.js +322 -0
  530. package/dist/server/src/lib/session/claude-executor.js +45 -5
  531. package/dist/server/src/lib/session/claude-session.js +21 -65
  532. package/dist/server/src/lib/session/cli-session.js +17 -0
  533. package/dist/server/src/lib/session/current-output-builder.js +450 -1103
  534. package/dist/server/src/lib/session/current-output-history-writers.js +255 -0
  535. package/dist/server/src/lib/session/current-output-types.js +9 -0
  536. package/dist/server/src/lib/session/detection-divergence.js +55 -0
  537. package/dist/server/src/lib/session/global-session-constants.js +2 -13
  538. package/dist/server/src/lib/session/hook-turn-hold.js +102 -0
  539. package/dist/server/src/lib/session/layer-disagreement.js +2 -2
  540. package/dist/server/src/lib/session/opencode-session-store.js +2 -1
  541. package/dist/server/src/lib/session/prompt-view.js +26 -3
  542. package/dist/server/src/lib/session/prompt-waiting-composition.js +3 -2
  543. package/dist/server/src/lib/session/provisional-turn.js +3 -1
  544. package/dist/server/src/lib/session/send-user-message.js +1 -1
  545. package/dist/server/src/lib/session/session-starting-state.js +4 -6
  546. package/dist/server/src/lib/session/status-evidence-type.js +2 -0
  547. package/dist/server/src/lib/session/status-evidence.js +2 -2
  548. package/dist/server/src/lib/session/structured-status-merge.js +335 -0
  549. package/dist/server/src/lib/session/waiting-episode-state.js +3 -4
  550. package/dist/server/src/lib/session-cleanup.js +1 -5
  551. package/dist/server/src/lib/skills/install-plan.js +2 -1
  552. package/dist/server/src/lib/skills/snapshot-store.js +2 -2
  553. package/dist/server/src/lib/skills/uninstall-plan.js +2 -2
  554. package/dist/server/src/lib/timer-manager.js +6 -8
  555. package/dist/server/src/lib/tmux/geometry-delegation.js +3 -4
  556. package/dist/server/src/lib/tmux/legacy-session-alias.js +2 -1
  557. package/dist/server/src/lib/tmux/session-hooks.js +2 -1
  558. package/dist/server/src/lib/tmux/session-status-options.js +3 -3
  559. package/dist/server/src/lib/tmux/tmux-capture-cache.js +3 -2
  560. package/dist/server/src/lib/tmux/tmux.js +33 -59
  561. package/dist/server/src/lib/tui-accumulator.js +2 -2
  562. package/dist/server/src/lib/version-checker.js +6 -6
  563. package/dist/server/src/lib/ws-server.js +47 -11
  564. package/docs/en/user-guide/webapp-guide.md +27 -3
  565. package/package.json +1 -1
  566. package/release-notes/0.44.3.json +82 -0
  567. package/scripts/hooks/cmate-agent-event.sh +18 -0
  568. package/.next/server/chunks/1068.js +0 -1
  569. package/.next/server/chunks/4372.js +0 -5
  570. package/.next/server/chunks/6474.js +0 -14
  571. package/.next/server/chunks/967.js +0 -1
  572. package/.next/server/chunks/9798.js +0 -2
  573. package/.next/server/chunks/9882.js +0 -25
  574. package/.next/static/chunks/591-539fec878c9dec5e.js +0 -1
  575. package/.next/static/chunks/app/sessions/page-049e06335187aa91.js +0 -1
  576. package/.next/static/chunks/app/worktrees/[id]/page-2a81397e60f17e63.js +0 -1
  577. package/.next/static/css/38070d879efa1371.css +0 -1
  578. package/dist/server/src/lib/cli-tools/index.js +0 -41
  579. package/dist/server/src/lib/polling/global-session-poller.js +0 -140
  580. /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_buildManifest.js +0 -0
  581. /package/.next/static/{QlCqLjorauDDBXPa-C7TK → tWwHQzmvc-rv9KKUtDWfQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ /**
3
+ * The history rows `buildCurrentOutput` writes on its own account: the
4
+ * "detection failed on this frame" row and the "a dialog is open and we could
5
+ * not read it" row, and the push that delivers either to the worktree room
6
+ * (Issue #3215).
7
+ *
8
+ * Moved verbatim out of `current-output-builder`. The comments came along
9
+ * unedited: where one says "this module", it was written about
10
+ * `current-output-builder`.
11
+ *
12
+ * `recordUnclassifiedFrame` and `recordStructuredPrompt` are exported for
13
+ * `buildPayload` and for nothing else; `current-output-builder` does not
14
+ * re-export them.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.recordUnclassifiedFrame = recordUnclassifiedFrame;
51
+ exports.recordStructuredPrompt = recordStructuredPrompt;
52
+ const db_1 = require("../../lib/db");
53
+ const opencode_pane_obstruction_1 = require("../../lib/detection/opencode-pane-obstruction");
54
+ const models_1 = require("../../types/models");
55
+ const logger_1 = require("../../lib/logger");
56
+ const structured_prompt_1 = require("../../lib/session/structured-prompt");
57
+ // Issue #3215: the name is the one these lines have always been logged under.
58
+ // It is what an operator greps for, so it did not move with the code.
59
+ const logger = (0, logger_1.createLogger)('current-output-builder');
60
+ /**
61
+ * Write the "detection failed on this frame" row (Issue #1708).
62
+ *
63
+ * Stored as a `prompt` message so `capture --prompts` — the audit trail that
64
+ * exists precisely to answer "why did this stall?" — lists it alongside the
65
+ * prompts that WERE detected. It must never read as one of them, so the
66
+ * promptData carries `type: 'unclassified'` and `status: 'unclassified'`; the
67
+ * latter is also what keeps it out of `markPendingPromptsAsAnswered()`, whose
68
+ * SQL selects `status = 'pending'`. A frame nobody could read must not end up
69
+ * stamped "(answered via terminal)" the moment the flag clears.
70
+ *
71
+ * Not broadcast: this is a record for after the fact, and the prompt-answering
72
+ * UI has nothing to render for a frame with no parsed options.
73
+ *
74
+ * REACH, stated plainly because it is a real limit: this is driven by
75
+ * observation, not by the server's own loops. `buildCurrentOutput` has exactly
76
+ * two callers — the current-output route and `broadcastTerminalSnapshot`, which
77
+ * returns immediately when the room has no subscribers. So a row is written
78
+ * while `commandmate wait` is polling (every POLL_INTERVAL_MS), while a browser
79
+ * has the terminal open, or on a `capture --json`. A stall that nobody is
80
+ * watching at all writes nothing, and `capture --prompts` afterwards will not
81
+ * show it. That is tolerable because the stalls this exists to explain are the
82
+ * ones something WAS waiting on — but it means the Auto-Yes poller running
83
+ * alone is not enough. Feeding the tracker from that loop would need a second
84
+ * producer of `isUnclassifiedActive`, i.e. either duplicating its definition or
85
+ * adding a detectSessionStatus pass to a hot path; deliberately not done here.
86
+ *
87
+ * Best effort — a failed insert must never break the payload the caller is
88
+ * waiting on. The tracker has already marked the run as recorded, so a failure
89
+ * costs this one row, not a retry storm.
90
+ */
91
+ /**
92
+ * The sentence that turns "nothing could read this frame" into "here is what is
93
+ * on it, and here is the key that removes it" (Issue #2095).
94
+ *
95
+ * Empty string when there is no obstruction, so every caller can concatenate it
96
+ * unconditionally and the #1708 wording is byte-identical on a frame that has
97
+ * none.
98
+ *
99
+ * English, like the rest of {@link recordUnclassifiedFrame}'s row and unlike the
100
+ * UI banner this pairs with. The row is read in `capture --prompts` as often as
101
+ * in the history pane, and `commandmate` has no locale to read it in.
102
+ */
103
+ function describePaneObstruction(obstruction) {
104
+ if (!obstruction)
105
+ return '';
106
+ return (` Cause: opencode's sidebar is sharing rows with the transcript ` +
107
+ `(paneObstruction=${obstruction.id}, second column reads ` +
108
+ `${JSON.stringify(obstruction.matchedText)}), which covers the marker that ends a ` +
109
+ `turn. Press \`${opencode_pane_obstruction_1.OPENCODE_SIDEBAR_RECOVERY_CHORD}\` in the pane to close it.`);
110
+ }
111
+ /**
112
+ * Push a history row this module just wrote to the worktree room (Issue #2214).
113
+ *
114
+ * Always `'message'`: both callers INSERT a brand-new row, so nothing has been
115
+ * delivered for it before and the client appends rather than replaces.
116
+ *
117
+ * Detached on purpose, and for two reasons that both matter here:
118
+ *
119
+ * - the `ws-server` import stays dynamic, which is the same bargain
120
+ * {@link emitChatTurnProgress} strikes — this module's *other* callers (the
121
+ * `/current-output` route and the terminal push) must not pull the WebSocket
122
+ * server into their graph just by building a payload;
123
+ * - the row is already committed when this runs, so a socket write can never
124
+ * turn a written row into a failed one. The two record functions below are
125
+ * best-effort by contract and their callers are waiting on a payload.
126
+ *
127
+ * #2214 recorded a limitation here — a route bundle holding its own empty copy
128
+ * of `ws-server`'s `rooms` under `next dev` — and added that "production runs
129
+ * one custom-server bundle and is unaffected". **That last clause was wrong.**
130
+ * `npm run dev` and `npm start` run the *same* custom server (`tsx server.ts`
131
+ * vs `node dist/server/server.js`); what differs is only whether Next evaluates
132
+ * a route handler from a dev compilation or from `.next/server`. Either way the
133
+ * route handler's copy of this module and of `ws-server` is not the custom
134
+ * server's, so this push was silent in production too. #2220 bridged it: the
135
+ * `broadcastMessage` below now reaches the socket owner through
136
+ * `lib/realtime/publisher-registry` regardless of which graph called it.
137
+ */
138
+ function broadcastRecordedRow(worktreeId, message) {
139
+ void Promise.resolve().then(() => __importStar(require('../../lib/ws-server'))).then(({ broadcastMessage }) => {
140
+ broadcastMessage('message', { worktreeId, message });
141
+ })
142
+ .catch((error) => {
143
+ logger.warn('history-row-broadcast-failed', {
144
+ worktreeId,
145
+ error: error instanceof Error ? error.message : String(error),
146
+ });
147
+ });
148
+ }
149
+ function recordUnclassifiedFrame(db, params) {
150
+ const dwellSeconds = Math.round(params.dwellMs / 1000);
151
+ const statusReason = `${params.sessionStatus}/${params.sessionStatusReason}`;
152
+ const question = `Unclassified interactive frame (${statusReason}) held for ${dwellSeconds}s. ` +
153
+ `The detection layer could not parse it, so no prompt was published and ` +
154
+ `nothing could answer it. Inspect the raw pane with ` +
155
+ `\`commandmate capture ${params.worktreeId} --pane\`.` +
156
+ // Issue #2095: appended rather than substituted. Everything above is still
157
+ // true — the frame really was unreadable — and a caller matching on the
158
+ // #1708 wording keeps matching. What follows turns "we could not read it"
159
+ // into "here is why, and here is the key that fixes it".
160
+ describePaneObstruction(params.obstruction);
161
+ const record = {
162
+ type: models_1.UNCLASSIFIED_PROMPT_TYPE,
163
+ status: 'unclassified',
164
+ question,
165
+ options: [],
166
+ dwellSeconds,
167
+ sessionStatusReason: statusReason,
168
+ };
169
+ try {
170
+ const message = (0, db_1.createMessage)(db, {
171
+ worktreeId: params.worktreeId,
172
+ role: 'assistant',
173
+ content: question,
174
+ messageType: 'prompt',
175
+ // Not a PromptData: nothing may answer this row, which is why the record
176
+ // type is kept out of that union (see UnclassifiedFrameRecord). The column
177
+ // is shared, so the cast is confined to this one write.
178
+ promptData: record,
179
+ timestamp: new Date(),
180
+ cliToolId: params.cliToolId,
181
+ instanceId: params.instanceId,
182
+ });
183
+ logger.info('unclassified-frame-recorded', {
184
+ worktreeId: params.worktreeId,
185
+ cliToolId: params.cliToolId,
186
+ dwellSeconds,
187
+ statusReason,
188
+ });
189
+ // `cliToolId` / `instanceId` are already the explicit values passed above —
190
+ // `createMessage` hands back the caller's own object — so the published row
191
+ // addresses the same instance the column does.
192
+ broadcastRecordedRow(params.worktreeId, message);
193
+ }
194
+ catch (error) {
195
+ logger.warn('unclassified-frame-record-failed', {
196
+ worktreeId: params.worktreeId,
197
+ error: error instanceof Error ? error.message : String(error),
198
+ });
199
+ }
200
+ }
201
+ /**
202
+ * Write the "the agent said a dialog is open and we could not read it" row
203
+ * (Issue #1725, continuing #1708's proposal 2).
204
+ *
205
+ * Written once per waiting episode, and ONLY while the scraper is publishing no
206
+ * prompt of its own. Both halves matter:
207
+ *
208
+ * - once, because `buildCurrentOutput` runs on every poll and a row per poll
209
+ * would turn one blocked dialog into a wall of identical history;
210
+ * - only when the scraper is blind, because when it is not, the existing
211
+ * prompt writers already record that prompt with its options and its answer.
212
+ * A second row would double-count the audit trail `capture --prompts` prints
213
+ * and put a "nobody could read this" line next to the parsed prompt that
214
+ * proves somebody could.
215
+ *
216
+ * So a row here means exactly one thing, which is the thing #1708 asked to be
217
+ * recorded: a prompt existed and the detection layer did not see it.
218
+ *
219
+ * Best effort, for the same reason as {@link recordUnclassifiedFrame}: the
220
+ * caller is waiting on a payload, and a failed insert must cost this row and
221
+ * nothing else.
222
+ */
223
+ function recordStructuredPrompt(db, params) {
224
+ const record = (0, structured_prompt_1.buildStructuredPromptHistoryRecord)(params.worktreeId, params.facts);
225
+ try {
226
+ const message = (0, db_1.createMessage)(db, {
227
+ worktreeId: params.worktreeId,
228
+ role: 'assistant',
229
+ content: record.question,
230
+ summary: `structured prompt · source=${params.state.source}${params.state.toolName ? ` · tool=${params.state.toolName}` : ''}`,
231
+ messageType: 'prompt',
232
+ // Not a PromptData: it has no options and nothing may answer it by
233
+ // number. The column is shared, so the cast is confined to this write —
234
+ // the same arrangement UnclassifiedFrameRecord uses.
235
+ promptData: record,
236
+ timestamp: new Date(),
237
+ cliToolId: params.cliToolId,
238
+ instanceId: params.instanceId,
239
+ });
240
+ logger.info('structured-prompt-recorded', {
241
+ worktreeId: params.worktreeId,
242
+ cliToolId: params.cliToolId,
243
+ instanceId: params.instanceId,
244
+ source: params.state.source,
245
+ toolName: params.state.toolName,
246
+ });
247
+ broadcastRecordedRow(params.worktreeId, message);
248
+ }
249
+ catch (error) {
250
+ logger.warn('structured-prompt-record-failed', {
251
+ worktreeId: params.worktreeId,
252
+ error: error instanceof Error ? error.message : String(error),
253
+ });
254
+ }
255
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * The shapes `buildCurrentOutput` publishes (Issue #3215).
4
+ *
5
+ * Types only: no function, no constant, nothing that exists at runtime. Moved
6
+ * verbatim out of `current-output-builder`, which re-exports every name here,
7
+ * so an import from either module reads the same declaration.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * How long the screen and the agent kept disagreeing (Issue #3311).
4
+ *
5
+ * `detection-divergence` (Issue #1723 §3) is written on every poll where the
6
+ * scraper's status and the agent's own differ, and on no other. Joining those
7
+ * lines cannot say how long one disagreement lasted: nothing marks the polls in
8
+ * between where the two agreed again. So the server keeps, per target, when the
9
+ * current disagreement began, and says once — `detection-divergence-resolved`,
10
+ * written by the caller — when a poll finds the two agreeing again. One line
11
+ * per disagreement, at its end; the per-poll line is left as it was.
12
+ *
13
+ * A disagreement whose target is never polled again (the session was killed,
14
+ * nobody watches it) is never resolved and has no length. It stays in the map,
15
+ * one small entry per target, until the next poll of that target.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.trackDetectionDivergence = trackDetectionDivergence;
19
+ exports.resetDetectionDivergenceTracking = resetDetectionDivergenceTracking;
20
+ const global_state_1 = require("../global-state");
21
+ /**
22
+ * On `globalThis` because the HTTP pull and the WebSocket push both build the
23
+ * payload, and under `next dev` they are separate bundles: two maps would each
24
+ * see half the polls.
25
+ */
26
+ const episodes = (0, global_state_1.getOrInitGlobal)('__detectionDivergenceEpisodes', () => new Map());
27
+ function targetKey(worktreeId, cliToolId, instanceId) {
28
+ return `${worktreeId}\u0000${cliToolId}\u0000${instanceId}`;
29
+ }
30
+ /**
31
+ * Record one poll's verdict. Returns the disagreement that this poll ended, or
32
+ * null — for a diverging poll, and for an agreeing one with nothing to end.
33
+ *
34
+ * @param diverging - Whether this poll wrote `detection-divergence`
35
+ * @param now - Epoch ms; defaults to now
36
+ */
37
+ function trackDetectionDivergence(worktreeId, cliToolId, instanceId, diverging, now = Date.now()) {
38
+ const key = targetKey(worktreeId, cliToolId, instanceId);
39
+ const episode = episodes.get(key);
40
+ if (diverging) {
41
+ if (episode)
42
+ episode.polls++;
43
+ else
44
+ episodes.set(key, { startedAt: now, polls: 1 });
45
+ return null;
46
+ }
47
+ if (!episode)
48
+ return null;
49
+ episodes.delete(key);
50
+ return { durationMs: Math.max(0, now - episode.startedAt), polls: episode.polls };
51
+ }
52
+ /** Forget every open disagreement. Test seam. */
53
+ function resetDetectionDivergenceTracking() {
54
+ episodes.clear();
55
+ }
@@ -3,11 +3,10 @@
3
3
  * Global session constants for assistant chat feature
4
4
  * Issue #649: Assistant chat with global (non-worktree) sessions
5
5
  *
6
- * These constants define the special worktree ID used for global assistant sessions
7
- * and polling configuration for the assistant chat panel.
6
+ * Defines the special worktree ID used for global assistant sessions.
8
7
  */
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.GLOBAL_POLL_MAX_RETRIES = exports.GLOBAL_POLL_INTERVAL_MS = exports.GLOBAL_SESSION_WORKTREE_ID = void 0;
9
+ exports.GLOBAL_SESSION_WORKTREE_ID = void 0;
11
10
  /**
12
11
  * Special worktree ID for global assistant sessions.
13
12
  * Used as the worktreeId parameter when creating tmux sessions
@@ -16,13 +15,3 @@ exports.GLOBAL_POLL_MAX_RETRIES = exports.GLOBAL_POLL_INTERVAL_MS = exports.GLOB
16
15
  * This value must NOT appear as a real worktree ID in the database.
17
16
  */
18
17
  exports.GLOBAL_SESSION_WORKTREE_ID = '__global__';
19
- /**
20
- * Polling interval for global session output capture (ms).
21
- * Matches the existing POLLING_INTERVAL in response-poller-core.ts (2 seconds).
22
- */
23
- exports.GLOBAL_POLL_INTERVAL_MS = 2000;
24
- /**
25
- * Maximum number of polling retries before giving up.
26
- * 900 retries * 2s interval = 30 minutes (matches MAX_POLLING_DURATION).
27
- */
28
- exports.GLOBAL_POLL_MAX_RETRIES = 900;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * Whether the agent's own hooks hold a pane at `running` over what the screen
4
+ * reads (Issue #3337).
5
+ *
6
+ * The one statement of the rule, read by both places that ask "is this pane
7
+ * mid-turn": `buildCurrentOutput` (`capture --json`, the terminal stream) and
8
+ * the relay's readiness check, which types a reply into the pane only when it
9
+ * is not. Two copies of it is how a relay was free to type into a running codex
10
+ * turn whose `capture --json` already said `running`.
11
+ *
12
+ * The rule: when the agent's hooks speak for the pane (source kind `hooks`)
13
+ * and the tool is one whose hook turns the screen may not end
14
+ * ({@link screenMayCloseHookTurn} — codex, where a frame of a live 0.160.0 turn
15
+ * read `ready`, `tests/fixtures/codex-mid-turn-3337/`), a turn the hooks opened
16
+ * ends at the agent's own `Stop`. Only two things end it without the `Stop`,
17
+ * because they say the `Stop` is not coming:
18
+ *
19
+ * - `stale` — nothing heard for `TURN_STALE_AFTER_MS`, applied by the turn
20
+ * record itself;
21
+ * - a frame that shows the turn was abandoned (codex's `■ Conversation
22
+ * interrupted`).
23
+ *
24
+ * Every other case is not held, as before #3337: a source with no hooks
25
+ * (`scraper`), a pull source (`sse`), and a hooks tool with no policy (Claude
26
+ * and the rest), whose turns the screen still closes.
27
+ *
28
+ * @module lib/session/hook-turn-hold
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.screenMayEndTurn = screenMayEndTurn;
32
+ exports.agentEventSourceKind = agentEventSourceKind;
33
+ exports.hookTurnHoldsPane = hookTurnHoldsPane;
34
+ exports.structuredStateForFrame = structuredStateForFrame;
35
+ const turn_abandoned_1 = require("../../lib/detection/turn-abandoned");
36
+ const define_source_1 = require("../../lib/hooks/sources/define-source");
37
+ const registry_1 = require("../../lib/hooks/sources/registry");
38
+ const agent_event_state_1 = require("../../lib/session/agent-event-state");
39
+ /**
40
+ * Whether the screen may end a turn the agent has not ended.
41
+ *
42
+ * `buildCurrentOutput` passes this to `observeScraperCompletionEvidence` as its
43
+ * `mayClose`.
44
+ *
45
+ * @param sourceKind - `structuredEvents.source.kind` for the pane
46
+ * @param output - The pane as captured
47
+ */
48
+ function screenMayEndTurn(sourceKind, cliToolId, output) {
49
+ return sourceKind !== 'hooks' || (0, turn_abandoned_1.screenMayCloseHookTurn)(cliToolId, output);
50
+ }
51
+ /** The source kind speaking for this pane now — the same fold `capture --json` publishes. */
52
+ function agentEventSourceKind(worktreeId, cliToolId, instanceId, now = Date.now()) {
53
+ const source = (0, registry_1.getAgentEventSource)(cliToolId);
54
+ return (0, define_source_1.describeAgentEventSource)(source, source.liveness({ worktreeId, cliToolId, instanceId: instanceId ?? cliToolId }), now).kind;
55
+ }
56
+ /**
57
+ * Whether the hooks hold this pane at `running`, whatever the frame reads.
58
+ *
59
+ * True when the source is `hooks`, the tool's policy keeps the screen from
60
+ * ending the turn on this frame ({@link screenMayEndTurn}), and its turn record
61
+ * publishes `running` (open, current generation, not stale, no dialog — a dialog
62
+ * is `waiting`, which is the send path's to judge).
63
+ *
64
+ * @param output - The pane as captured
65
+ */
66
+ function hookTurnHoldsPane(worktreeId, cliToolId, instanceId, output, now = Date.now()) {
67
+ const kind = agentEventSourceKind(worktreeId, cliToolId, instanceId, now);
68
+ if (screenMayEndTurn(kind, cliToolId, output))
69
+ return false;
70
+ return (0, agent_event_state_1.getStructuredSessionState)(worktreeId, cliToolId, instanceId, now)?.status === 'running';
71
+ }
72
+ /**
73
+ * The turn record's verdict as this frame lets it be published (Issue #3377).
74
+ *
75
+ * `getStructuredSessionState`, except that a `running` is dropped (null — the
76
+ * frame decides) when the hooks speak for the pane and the frame shows the
77
+ * turn was abandoned (codex's `■ Conversation interrupted`). That is the frame
78
+ * this module already lets the screen end the turn on, and the one the list
79
+ * already reads as not processing (`hookTurnHoldsPane` does not hold it).
80
+ * Without this, `capture --json` kept publishing `running` until
81
+ * `SCRAPER_COMPLETION_POLLS` such frames had closed the record — ~3 s on
82
+ * 2026-10-06 while the list said not processing.
83
+ *
84
+ * Only what is PUBLISHED changes: the record still closes on the third frame,
85
+ * as before. Every other frame — a misread mid-turn frame included — keeps the
86
+ * hooks' `running` (#3337), and a tool with no policy (Claude and the rest) is
87
+ * untouched.
88
+ *
89
+ * Read by `buildCurrentOutput` and the list's `foldHookTurn`.
90
+ *
91
+ * @param sourceKind - `structuredEvents.source.kind` for the pane
92
+ * @param output - The pane as captured
93
+ */
94
+ function structuredStateForFrame(worktreeId, cliToolId, instanceId, sourceKind, output, now = Date.now()) {
95
+ const state = (0, agent_event_state_1.getStructuredSessionState)(worktreeId, cliToolId, instanceId, now);
96
+ if (state?.status === 'running' &&
97
+ sourceKind === 'hooks' &&
98
+ (0, turn_abandoned_1.screenShowsAbandonedHookTurn)(cliToolId, output)) {
99
+ return null;
100
+ }
101
+ return state;
102
+ }
@@ -47,6 +47,7 @@ const status_detector_1 = require("../../lib/detection/status-detector");
47
47
  const cli_patterns_1 = require("../../lib/detection/cli-patterns");
48
48
  const agent_event_types_1 = require("../../lib/hooks/agent-event-types");
49
49
  const logger_1 = require("../../lib/logger");
50
+ const global_state_1 = require("../global-state");
50
51
  const logger = (0, logger_1.createLogger)('layer-disagreement');
51
52
  /**
52
53
  * Classify one poll. Pure.
@@ -74,8 +75,7 @@ function classifyLayerDisagreement(input) {
74
75
  }
75
76
  /** How many rows of the frame's tail go into the log line. */
76
77
  exports.DISAGREEMENT_FRAME_TAIL_ROWS = 40;
77
- const reported = globalThis.__layerDisagreementReported ??
78
- (globalThis.__layerDisagreementReported = new Set());
78
+ const reported = (0, global_state_1.getOrInitGlobal)('__layerDisagreementReported', () => new Set());
79
79
  /** Bound on {@link reported}; at the cap the set is cleared (worst case: one repeat line). */
80
80
  const REPORTED_CAP = 512;
81
81
  /**
@@ -74,6 +74,7 @@ const path_1 = require("path");
74
74
  const safe_directory_1 = require("../../config/safe-directory");
75
75
  const auto_yes_state_1 = require("../../lib/auto-yes-state");
76
76
  const logger_1 = require("../../lib/logger");
77
+ const global_state_1 = require("../global-state");
77
78
  const logger = (0, logger_1.createLogger)('lib/session/opencode-session-store');
78
79
  /**
79
80
  * What an opencode session id looks like.
@@ -94,7 +95,7 @@ function isOpencodeSessionId(value) {
94
95
  }
95
96
  /** Longest title kept. Display only; opencode's own titles are one line. */
96
97
  exports.MAX_OPENCODE_SESSION_TITLE_LENGTH = 200;
97
- const memories = (globalThis.__opencodeSessionMemories ??= new Map());
98
+ const memories = (0, global_state_1.getOrInitGlobal)('__opencodeSessionMemories', () => new Map());
98
99
  function keyOf(target) {
99
100
  return (0, auto_yes_state_1.buildCompositeKey)(target.worktreeId, target.cliToolId, target.instanceId);
100
101
  }
@@ -65,9 +65,32 @@ function promptHeadingMessage(heading) {
65
65
  // Field readers (moved from components/worktree/prompt-decision-id, #1932/#2039/#3181)
66
66
  // =============================================================================
67
67
  /**
68
- * The option labels measured to be a text field on screen (Issue #2573).
69
- * Restated from `TYPED_TEXT_FIELD_LABEL_PATTERNS` in
70
- * `lib/detection/prompt-detect-multiple-choice`, whose graph reaches `fs`.
68
+ * Labels of the rows measured to BE a text field on screen (Issue #2573).
69
+ *
70
+ * `requiresTextInput` (from {@link TEXT_INPUT_PATTERNS}) reads the WORDS of a
71
+ * label — "tell … what to do differently", "custom", "enter …" — and says the
72
+ * option is about the user's own text. It does not say where typed characters
73
+ * land, and for two rows it flags alike the measured answer is opposite:
74
+ *
75
+ * | row | on screen | free text + Enter |
76
+ * |-----|-----------|-------------------|
77
+ * | Command Code `AskUserQuestion` `Type something...` (#2522) | a `TextInput` | lands in the field — the answer |
78
+ * | Command Code permission `No, tell Command Code what to do differently` | a menu row | ignored; the Enter confirms the highlighted `1. Yes` |
79
+ *
80
+ * The second is how a "No + reason" was delivered as an approval. The same
81
+ * words sit on codex's and copilot's approval rows (codex's also name letter
82
+ * hotkeys, `(y)` / `(p)`), and the generic patterns match inside the command an
83
+ * approval row quotes (`… commands that start with 'npm run custom'`).
84
+ *
85
+ * So this is an allowlist of what was measured, not a denylist of what went
86
+ * wrong: a flagged row is a field only when its label is one of these. Anchored
87
+ * at the start so Command Code's folded description (`Type something... Give me
88
+ * a branch name …`) still matches. Command Code's reader
89
+ * (`tools/command-code/dialog.ts`) marks the same rows with the same expression.
90
+ *
91
+ * The one definition since Issue #3218: `isTypedTextFieldOption` in
92
+ * `lib/detection/prompt-detect-multiple-choice`, whose graph reaches `fs`,
93
+ * reads it through `optionTakesTypedText` below.
71
94
  */
72
95
  exports.TYPED_TEXT_FIELD_LABEL_PATTERNS = [
73
96
  /^[^\S\n]*type\s+something\b/i,
@@ -45,8 +45,9 @@ const structured_prompt_1 = require("../../lib/session/structured-prompt");
45
45
  * Whether a structured wait is one the app answers over the agent's own API
46
46
  * (Issue #3184, design §6-2).
47
47
  *
48
- * The same three conjuncts `current-output-builder` requires before it
49
- * publishes a `decisionId` on the live payload (its `addressableDecisionId`):
48
+ * The three conjuncts `composePromptData` in `current-output-builder` requires
49
+ * — by calling this function (Issue #3215) — before it publishes a
50
+ * `decisionId` on the live payload (its `addressableDecisionId`):
50
51
  * the record came from `Notification(permission_prompt)` rather than being a
51
52
  * `permission-request` forecast, the tool's event source names each decision
52
53
  * by id (`eventIdentity: 'permission-id'`), and the record carries such an id.
@@ -88,7 +88,9 @@ exports.TURN_ACTIVITY_EVENTS = new Set([
88
88
  * bound that stops a lost `Stop` from asserting `running` forever.
89
89
  * - `scraper_evidence` — the terminal frame said "done" on
90
90
  * {@link SCRAPER_COMPLETION_POLLS} consecutive polls with positive evidence.
91
- * The screen, not the agent.
91
+ * The screen, not the agent. For a codex hooks source only when the frame
92
+ * shows a turn whose `Stop` is not coming — an interrupt (Issue #3337, see
93
+ * `lib/detection/turn-abandoned`).
92
94
  * - `resync_idle` — a source that can be re-read (`capabilities.resync`) was
93
95
  * asked after a dropped transport and answered "not busy".
94
96
  * - `generation` — the process that owned the turn was replaced.
@@ -401,7 +401,7 @@ async function sendUserMessage(db, params) {
401
401
  (0, db_1.updateLastUserMessage)(db, worktreeId, content, userMessageTimestamp);
402
402
  // 8. Clear in-progress message ID (session state managed by savePendingAssistantResponse).
403
403
  (0, db_1.clearInProgressMessageId)(db, worktreeId, cliToolId, instanceId);
404
- logger.info('cleared-in-progress-message-for');
404
+ logger.info('cleared-in-progress-message');
405
405
  // 9. Start polling for the CLI tool's response.
406
406
  (0, response_poller_1.startPolling)(worktreeId, cliToolId, instanceId);
407
407
  return { ok: true, message };
@@ -73,13 +73,11 @@ const node_async_hooks_1 = require("node:async_hooks");
73
73
  const auto_yes_state_1 = require("../../lib/auto-yes-state");
74
74
  const status_reason_1 = require("../../lib/detection/status-reason");
75
75
  const session_starting_config_1 = require("../../config/session-starting-config");
76
- const records = globalThis.__sessionStartingRecords ??
77
- (globalThis.__sessionStartingRecords = new Map());
76
+ const global_state_1 = require("../global-state");
77
+ const records = (0, global_state_1.getOrInitGlobal)('__sessionStartingRecords', () => new Map());
78
78
  /** On `globalThis` like the map, so tokens keep growing across route bundles. */
79
- const tokenSeq = globalThis.__sessionStartingTokenSeq ??
80
- (globalThis.__sessionStartingTokenSeq = { last: 0 });
81
- const tokenScope = globalThis.__sessionStartingTokenScope ??
82
- (globalThis.__sessionStartingTokenScope = new node_async_hooks_1.AsyncLocalStorage());
79
+ const tokenSeq = (0, global_state_1.getOrInitGlobal)('__sessionStartingTokenSeq', () => ({ last: 0 }));
80
+ const tokenScope = (0, global_state_1.getOrInitGlobal)('__sessionStartingTokenScope', () => new node_async_hooks_1.AsyncLocalStorage());
83
81
  /**
84
82
  * A token for a launch about to begin (Issue #3195). Strictly greater than
85
83
  * every token issued before it.
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -55,6 +55,7 @@ exports.clearLastKnownStatuses = clearLastKnownStatuses;
55
55
  // at exactly that moment (`worktree-status-helper.test.ts` does).
56
56
  const status_reason_1 = require("../../lib/detection/status-reason");
57
57
  const agent_event_state_1 = require("../../lib/session/agent-event-state");
58
+ const global_state_1 = require("../global-state");
58
59
  /**
59
60
  * The reasons that mean "no rule could read this frame" (Issue #2011).
60
61
  *
@@ -110,8 +111,7 @@ function isUnclassifiedFrame(status, reason) {
110
111
  * whole job is to be honest about age.
111
112
  */
112
113
  exports.LAST_KNOWN_STATUS_TTL_MS = agent_event_state_1.STRUCTURED_STATE_MAX_AGE_MS;
113
- const latches = globalThis.__lastKnownStatusByKey ??
114
- (globalThis.__lastKnownStatusByKey = new Map());
114
+ const latches = (0, global_state_1.getOrInitGlobal)('__lastKnownStatusByKey', () => new Map());
115
115
  /**
116
116
  * Cap on retained latches, so a long-lived server cannot grow one per worktree
117
117
  * per tool per instance forever.