commandmate 0.30.1 → 0.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +141 -141
  3. package/.next/app-path-routes-manifest.json +29 -29
  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_client-reference-manifest.js +1 -1
  9. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  10. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update-check/route.js +1 -1
  12. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/capabilities/route.js +1 -1
  24. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/hooks/agent-event/route.js +1 -1
  33. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/hooks/claude-done/route.js +1 -1
  35. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/hooks/permission-request/route.js +1 -1
  37. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  154. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  155. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  157. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  158. package/.next/server/app/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  161. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  162. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  163. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  164. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  165. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  166. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/worktrees/[id]/page.js +1 -1
  168. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  170. package/.next/server/app-paths-manifest.json +29 -29
  171. package/.next/server/chunks/3099.js +3 -3
  172. package/.next/server/chunks/5043.js +1 -1
  173. package/.next/server/chunks/6130.js +1 -1
  174. package/.next/server/chunks/6894.js +1 -1
  175. package/.next/server/chunks/9696.js +2 -2
  176. package/.next/server/middleware-manifest.json +5 -5
  177. package/.next/server/pages/500.html +1 -1
  178. package/.next/server/pages-manifest.json +1 -1
  179. package/.next/server/server-reference-manifest.json +1 -1
  180. package/.next/static/chunks/{6381-dbf04a99647f6018.js → 6381-147dde2a967e9458.js} +1 -1
  181. package/.next/static/chunks/app/worktrees/[id]/{page-aac399392ec8c273.js → page-2f73d69187936627.js} +1 -1
  182. package/.next/trace +13 -13
  183. package/dist/server/src/lib/hooks/sources/antigravity/history.js +24 -5
  184. package/dist/server/src/lib/hooks/sources/antigravity/transcript.js +39 -0
  185. package/dist/server/src/lib/hooks/sources/claude/history.js +152 -4
  186. package/dist/server/src/lib/hooks/sources/claude/transcript.js +175 -13
  187. package/dist/server/src/lib/hooks/stop-history-capture.js +58 -25
  188. package/package.json +1 -1
  189. /package/.next/static/{pcpB4K6KreMzu2qbhvuRY → QXxQbXWoo7ldUyOcv7PCZ}/_buildManifest.js +0 -0
  190. /package/.next/static/{pcpB4K6KreMzu2qbhvuRY → QXxQbXWoo7ldUyOcv7PCZ}/_ssgManifest.js +0 -0
@@ -20,6 +20,15 @@
20
20
  * The agent itself knows the boundary exactly, and has been telling us: the
21
21
  * `stop` hook. This module is that second trigger.
22
22
  *
23
+ * ## Knowing the boundary is not the same as the file having reached it
24
+ *
25
+ * The `stop` post and the transcript's last append are two events with no
26
+ * ordering between them, and Issue #2264 is what happens when the reader is
27
+ * asked in the gap. The reader now refuses a turn it cannot prove is closed, so
28
+ * the cost of asking too early is a `false` rather than a truncated row — and
29
+ * this module's answer to a `false` is to ask again, up to
30
+ * {@link STOP_TRANSCRIPT_MAX_ATTEMPTS} times, before handing the turn back.
31
+ *
23
32
  * ## What it does not do
24
33
  *
25
34
  * **It does not replace the poller's call.** A session with no hooks — or with
@@ -70,27 +79,42 @@ var __importStar = (this && this.__importStar) || (function () {
70
79
  };
71
80
  })();
72
81
  Object.defineProperty(exports, "__esModule", { value: true });
73
- exports.STOP_TRANSCRIPT_RETRY_DELAY_MS = void 0;
82
+ exports.STOP_TRANSCRIPT_MAX_ATTEMPTS = exports.STOP_TRANSCRIPT_RETRY_DELAY_MS = void 0;
74
83
  exports.captureTranscriptTurnOnStop = captureTranscriptTurnOnStop;
75
84
  const logger_1 = require("../../lib/logger");
76
85
  const logger = (0, logger_1.createLogger)('lib/hooks/stop-history-capture');
77
86
  /**
78
- * How long to wait before asking a second time.
87
+ * How long to wait before asking again.
79
88
  *
80
89
  * The `stop` hook fires when the agent considers the turn over, and the last
81
90
  * assistant record is appended to the transcript around — not necessarily
82
- * before — that instant. A reader that arrives in the gap sees the prompt
83
- * record and no body, answers false (correctly: an empty row would be a blank
84
- * reply forever) and, without a retry, hands a turn the agent has definitely
85
- * finished back to the scraper.
91
+ * before — that instant. A reader that arrives in the gap sees a turn that is
92
+ * not closed, answers false (correctly: the row it would write is a reply with
93
+ * its last paragraph missing, frozen under the turn key forever) and, without a
94
+ * retry, hands a turn the agent has definitely finished back to the scraper.
86
95
  *
87
96
  * Half a second is chosen against what the gap actually is — a file append that
88
- * has already been issued — rather than against a timeout. One retry and not a
89
- * loop, because the poller's own trigger is still behind this: if the file is
90
- * still empty after the retry, the next poll is the right place to notice, and
91
- * a hook handler that waits on a file is a hook handler that can hang a turn.
97
+ * has already been issued — rather than against a timeout.
92
98
  */
93
99
  exports.STOP_TRANSCRIPT_RETRY_DELAY_MS = 500;
100
+ /**
101
+ * How many times the reader is asked in total (Issue #2264).
102
+ *
103
+ * #2246 asked twice, on the reading that the only thing a retry waits for is one
104
+ * append that has already been issued. The incident #2264 was reported for says
105
+ * that is not always one append: the measured gap between the `stop` post and
106
+ * the last `text` record was around 100 ms in the fast case, but the turns that
107
+ * were saved short had *tool* records still arriving, and a single 500 ms retry
108
+ * lands inside that run rather than after it.
109
+ *
110
+ * Three and not a loop, because the poller's own trigger is still behind this:
111
+ * if the turn is still open after the third ask, the next poll is the right
112
+ * place to notice — it runs when the pane returns to the composer, by which time
113
+ * the transcript is written — and a hook handler that waits on a file is a hook
114
+ * handler that can hang a turn. The worst case this bounds is 1 s of the agent's
115
+ * stop path, spent only on an instance that has a transcript and an open turn.
116
+ */
117
+ exports.STOP_TRANSCRIPT_MAX_ATTEMPTS = 3;
94
118
  function sleep(ms) {
95
119
  return new Promise((resolve) => {
96
120
  setTimeout(resolve, ms);
@@ -130,24 +154,33 @@ async function captureTranscriptTurnOnStop(worktree, cliToolId, instanceId, opti
130
154
  const retryDelayMs = options.retryDelayMs ?? exports.STOP_TRANSCRIPT_RETRY_DELAY_MS;
131
155
  if (retryDelayMs <= 0)
132
156
  return false;
133
- // The retry is for one failure and one only: the turn's last assistant
134
- // record had not been appended yet. Every other reason the capture answers
135
- // false — no session pointer, no transcript, the operator never wired hooks
136
- // for this tool — is a reason waiting cannot fix, and this handler is on the
137
- // agent's own stop path, so half a second spent for nothing is half a second
138
- // added to every turn it is spent on.
157
+ // The retry is for one failure and one only: the turn is not closed yet
158
+ // because its remaining assistant records have not been appended. Every
159
+ // other reason the capture answers false — no session pointer, no
160
+ // transcript, the operator never wired hooks for this tool — is a reason
161
+ // waiting cannot fix, and this handler is on the agent's own stop path, so
162
+ // half a second spent for nothing is half a second added to every turn it is
163
+ // spent on. Asked once, before the first sleep: a transcript that exists
164
+ // does not stop existing between attempts.
139
165
  if (!(await hasStructuredHistoryTranscript(worktree.id, cliToolId, instanceId, capture))) {
140
166
  return false;
141
167
  }
142
- await sleep(retryDelayMs);
143
- const captured = await captureStructuredHistoryTurn(worktree.id, cliToolId, instanceId, capture);
144
- logger.debug('stop-history-capture-retried', {
145
- worktreeId: worktree.id,
146
- cliToolId,
147
- instanceId,
148
- captured,
149
- });
150
- return captured;
168
+ const maxAttempts = Math.max(1, options.maxAttempts ?? exports.STOP_TRANSCRIPT_MAX_ATTEMPTS);
169
+ for (let attempt = 2; attempt <= maxAttempts; attempt += 1) {
170
+ await sleep(retryDelayMs);
171
+ const captured = await captureStructuredHistoryTurn(worktree.id, cliToolId, instanceId, capture);
172
+ logger.debug('stop-history-capture-retried', {
173
+ worktreeId: worktree.id,
174
+ cliToolId,
175
+ instanceId,
176
+ attempt,
177
+ maxAttempts,
178
+ captured,
179
+ });
180
+ if (captured)
181
+ return true;
182
+ }
183
+ return false;
151
184
  }
152
185
  catch (error) {
153
186
  logger.warn('stop-history-capture-failed', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commandmate",
3
- "version": "0.30.1",
3
+ "version": "0.30.2",
4
4
  "description": "A local control plane for agent CLIs — orchestration and visibility for Claude Code, Codex, Gemini CLI, and more across Git worktrees",
5
5
  "keywords": [
6
6
  "claude-code",