baxian 1.2.25 → 1.2.27

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 (203) hide show
  1. package/dist/agent/bootstrap-poller.d.ts.map +1 -1
  2. package/dist/agent/bootstrap-poller.js +0 -11
  3. package/dist/agent/bootstrap-poller.js.map +1 -1
  4. package/dist/agent/bootstrap.d.ts.map +1 -1
  5. package/dist/agent/bootstrap.js +0 -42
  6. package/dist/agent/bootstrap.js.map +1 -1
  7. package/dist/agent/diff-split.d.ts.map +1 -1
  8. package/dist/agent/diff-split.js +0 -4
  9. package/dist/agent/diff-split.js.map +1 -1
  10. package/dist/agent/image-input.d.ts.map +1 -1
  11. package/dist/agent/image-input.js +0 -3
  12. package/dist/agent/image-input.js.map +1 -1
  13. package/dist/agent/liveness.d.ts.map +1 -1
  14. package/dist/agent/liveness.js +0 -3
  15. package/dist/agent/liveness.js.map +1 -1
  16. package/dist/agent/manager.d.ts +0 -4
  17. package/dist/agent/manager.d.ts.map +1 -1
  18. package/dist/agent/manager.js +9 -951
  19. package/dist/agent/manager.js.map +1 -1
  20. package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
  21. package/dist/agent/pane-streamer-manager.js +0 -9
  22. package/dist/agent/pane-streamer-manager.js.map +1 -1
  23. package/dist/agent/pane-streamer.d.ts.map +1 -1
  24. package/dist/agent/pane-streamer.js +2 -27
  25. package/dist/agent/pane-streamer.js.map +1 -1
  26. package/dist/agent/pet-input.d.ts.map +1 -1
  27. package/dist/agent/pet-input.js +0 -3
  28. package/dist/agent/pet-input.js.map +1 -1
  29. package/dist/agent/phase-signal-watcher.d.ts +0 -6
  30. package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
  31. package/dist/agent/phase-signal-watcher.js +0 -41
  32. package/dist/agent/phase-signal-watcher.js.map +1 -1
  33. package/dist/agent/phase-signal.d.ts.map +1 -1
  34. package/dist/agent/phase-signal.js +1 -18
  35. package/dist/agent/phase-signal.js.map +1 -1
  36. package/dist/agent/preflight.d.ts.map +1 -1
  37. package/dist/agent/preflight.js +0 -12
  38. package/dist/agent/preflight.js.map +1 -1
  39. package/dist/agent/prompt.d.ts +0 -4
  40. package/dist/agent/prompt.d.ts.map +1 -1
  41. package/dist/agent/prompt.js +0 -66
  42. package/dist/agent/prompt.js.map +1 -1
  43. package/dist/agent/repo-store.d.ts.map +1 -1
  44. package/dist/agent/repo-store.js +0 -21
  45. package/dist/agent/repo-store.js.map +1 -1
  46. package/dist/agent/review-transport.d.ts +0 -1
  47. package/dist/agent/review-transport.d.ts.map +1 -1
  48. package/dist/agent/review-transport.js +0 -16
  49. package/dist/agent/review-transport.js.map +1 -1
  50. package/dist/agent/runner.d.ts +0 -3
  51. package/dist/agent/runner.d.ts.map +1 -1
  52. package/dist/agent/runner.js +0 -40
  53. package/dist/agent/runner.js.map +1 -1
  54. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  55. package/dist/agent/tmux-probe-poller.js +1 -20
  56. package/dist/agent/tmux-probe-poller.js.map +1 -1
  57. package/dist/agent/tmux.d.ts +0 -1
  58. package/dist/agent/tmux.d.ts.map +1 -1
  59. package/dist/agent/tmux.js +6 -45
  60. package/dist/agent/tmux.js.map +1 -1
  61. package/dist/agent/worktree.d.ts.map +1 -1
  62. package/dist/agent/worktree.js +0 -9
  63. package/dist/agent/worktree.js.map +1 -1
  64. package/dist/api/agents.d.ts.map +1 -1
  65. package/dist/api/agents.js +0 -5
  66. package/dist/api/agents.js.map +1 -1
  67. package/dist/api/config.d.ts.map +1 -1
  68. package/dist/api/config.js +0 -16
  69. package/dist/api/config.js.map +1 -1
  70. package/dist/api/hosts.d.ts.map +1 -1
  71. package/dist/api/hosts.js +0 -37
  72. package/dist/api/hosts.js.map +1 -1
  73. package/dist/api/pets.d.ts.map +1 -1
  74. package/dist/api/pets.js +0 -5
  75. package/dist/api/pets.js.map +1 -1
  76. package/dist/api/probe.d.ts.map +1 -1
  77. package/dist/api/probe.js +0 -5
  78. package/dist/api/probe.js.map +1 -1
  79. package/dist/api/projects.d.ts.map +1 -1
  80. package/dist/api/projects.js +0 -40
  81. package/dist/api/projects.js.map +1 -1
  82. package/dist/api/tasks.d.ts.map +1 -1
  83. package/dist/api/tasks.js +28 -15
  84. package/dist/api/tasks.js.map +1 -1
  85. package/dist/app.d.ts +2 -3
  86. package/dist/app.d.ts.map +1 -1
  87. package/dist/app.js +0 -14
  88. package/dist/app.js.map +1 -1
  89. package/dist/cli.d.ts.map +1 -1
  90. package/dist/cli.js +0 -13
  91. package/dist/cli.js.map +1 -1
  92. package/dist/config/hot-reload.d.ts.map +1 -1
  93. package/dist/config/hot-reload.js +0 -3
  94. package/dist/config/hot-reload.js.map +1 -1
  95. package/dist/config/loader.d.ts +0 -27
  96. package/dist/config/loader.d.ts.map +1 -1
  97. package/dist/config/loader.js +0 -56
  98. package/dist/config/loader.js.map +1 -1
  99. package/dist/config/normalizer.js +0 -1
  100. package/dist/config/normalizer.js.map +1 -1
  101. package/dist/config/validator.d.ts.map +1 -1
  102. package/dist/config/validator.js +0 -16
  103. package/dist/config/validator.js.map +1 -1
  104. package/dist/event/broker.d.ts.map +1 -1
  105. package/dist/event/broker.js +0 -2
  106. package/dist/event/broker.js.map +1 -1
  107. package/dist/event/bus.d.ts.map +1 -1
  108. package/dist/event/bus.js +0 -2
  109. package/dist/event/bus.js.map +1 -1
  110. package/dist/event/handlers.d.ts.map +1 -1
  111. package/dist/event/handlers.js +2 -150
  112. package/dist/event/handlers.js.map +1 -1
  113. package/dist/event/publish.d.ts.map +1 -1
  114. package/dist/event/publish.js +0 -8
  115. package/dist/event/publish.js.map +1 -1
  116. package/dist/event/server-handlers.d.ts.map +1 -1
  117. package/dist/event/server-handlers.js +0 -80
  118. package/dist/event/server-handlers.js.map +1 -1
  119. package/dist/event/ws.d.ts.map +1 -1
  120. package/dist/event/ws.js +0 -5
  121. package/dist/event/ws.js.map +1 -1
  122. package/dist/github/mapper.d.ts.map +1 -1
  123. package/dist/github/mapper.js +0 -13
  124. package/dist/github/mapper.js.map +1 -1
  125. package/dist/github/poller.d.ts.map +1 -1
  126. package/dist/github/poller.js +0 -15
  127. package/dist/github/poller.js.map +1 -1
  128. package/dist/github/pr-conversation.d.ts +7 -0
  129. package/dist/github/pr-conversation.d.ts.map +1 -0
  130. package/dist/github/pr-conversation.js +175 -0
  131. package/dist/github/pr-conversation.js.map +1 -0
  132. package/dist/github/resolver.d.ts.map +1 -1
  133. package/dist/github/resolver.js +0 -1
  134. package/dist/github/resolver.js.map +1 -1
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +1 -26
  137. package/dist/index.js.map +1 -1
  138. package/dist/lifecycle/restart-sentinel.d.ts.map +1 -1
  139. package/dist/lifecycle/restart-sentinel.js +0 -1
  140. package/dist/lifecycle/restart-sentinel.js.map +1 -1
  141. package/dist/lifecycle/restart.d.ts +0 -1
  142. package/dist/lifecycle/restart.d.ts.map +1 -1
  143. package/dist/lifecycle/restart.js +0 -3
  144. package/dist/lifecycle/restart.js.map +1 -1
  145. package/dist/shared/constants.d.ts.map +1 -1
  146. package/dist/shared/constants.js +0 -19
  147. package/dist/shared/constants.js.map +1 -1
  148. package/dist/shared/git-url.d.ts +0 -2
  149. package/dist/shared/git-url.d.ts.map +1 -1
  150. package/dist/shared/git-url.js +0 -21
  151. package/dist/shared/git-url.js.map +1 -1
  152. package/dist/shared/types.d.ts +23 -54
  153. package/dist/shared/types.d.ts.map +1 -1
  154. package/dist/shared/types.js.map +1 -1
  155. package/dist/skill/registry.d.ts.map +1 -1
  156. package/dist/skill/registry.js +3 -25
  157. package/dist/skill/registry.js.map +1 -1
  158. package/dist/state/agent-store.d.ts +0 -1
  159. package/dist/state/agent-store.d.ts.map +1 -1
  160. package/dist/state/agent-store.js +0 -5
  161. package/dist/state/agent-store.js.map +1 -1
  162. package/dist/state/error-record-store.d.ts.map +1 -1
  163. package/dist/state/error-record-store.js +1 -27
  164. package/dist/state/error-record-store.js.map +1 -1
  165. package/dist/state/lock.d.ts.map +1 -1
  166. package/dist/state/lock.js +1 -6
  167. package/dist/state/lock.js.map +1 -1
  168. package/dist/state/pet-store.d.ts.map +1 -1
  169. package/dist/state/pet-store.js +0 -10
  170. package/dist/state/pet-store.js.map +1 -1
  171. package/dist/state/post-approve-store.d.ts.map +1 -1
  172. package/dist/state/post-approve-store.js +0 -1
  173. package/dist/state/post-approve-store.js.map +1 -1
  174. package/dist/state/process-lock.d.ts +0 -2
  175. package/dist/state/process-lock.d.ts.map +1 -1
  176. package/dist/state/process-lock.js +0 -5
  177. package/dist/state/process-lock.js.map +1 -1
  178. package/dist/state/review-store.d.ts.map +1 -1
  179. package/dist/state/review-store.js +0 -3
  180. package/dist/state/review-store.js.map +1 -1
  181. package/dist/state/snapshot.d.ts.map +1 -1
  182. package/dist/state/snapshot.js +0 -19
  183. package/dist/state/snapshot.js.map +1 -1
  184. package/dist/state/task-store.d.ts.map +1 -1
  185. package/dist/state/task-store.js +0 -4
  186. package/dist/state/task-store.js.map +1 -1
  187. package/dist/terminal/attach.d.ts.map +1 -1
  188. package/dist/terminal/attach.js +0 -12
  189. package/dist/terminal/attach.js.map +1 -1
  190. package/dist/terminal/key-sanitizer.d.ts.map +1 -1
  191. package/dist/terminal/key-sanitizer.js +0 -2
  192. package/dist/terminal/key-sanitizer.js.map +1 -1
  193. package/dist/terminal/stream-ws.d.ts.map +1 -1
  194. package/dist/terminal/stream-ws.js +0 -5
  195. package/dist/terminal/stream-ws.js.map +1 -1
  196. package/dist/timing/backoff.d.ts.map +1 -1
  197. package/dist/timing/backoff.js.map +1 -1
  198. package/dist/web/assets/index-DPFouq3q.js +7 -0
  199. package/dist/web/assets/index-DvVOHfHm.css +1 -0
  200. package/dist/web/index.html +2 -2
  201. package/package.json +2 -2
  202. package/dist/web/assets/index-B94unmLb.js +0 -7
  203. package/dist/web/assets/index-DuER3MFf.css +0 -1
package/dist/api/hosts.js CHANGED
@@ -6,8 +6,6 @@ import { applyConfigHotReload } from '../config/hot-reload.js';
6
6
  import { redactHosts } from './config.js';
7
7
  const REDACTED = '***';
8
8
  const CHECK_TIMEOUT_MS = 5000;
9
- // SSH reachability, forced through a FRESH authenticated connection (noMux) so a lingering mux
10
- // can't make a wrong updated password pass — the bad password would then be saved.
11
9
  async function checkHostConnectivity(host, makeLocal) {
12
10
  await ensureMuxDir();
13
11
  const target = sshTarget(host);
@@ -40,29 +38,22 @@ function generateHostId(base, existing) {
40
38
  }
41
39
  return `host-${existing.size + 1}`;
42
40
  }
43
- // REDACTED / missing password both mean "keep the stored one" (mirrors server.token handling).
44
41
  function resolvePassword(incoming, current) {
45
42
  if (incoming === REDACTED || incoming === undefined)
46
43
  return current;
47
44
  return incoming;
48
45
  }
49
- // A missing port (honors ~/.ssh/config's Port) and an explicit 22 are DIFFERENT endpoints — collapsing
50
- // them with `?? 22` would let a port:22 edit slip past the password-exfiltration / live-agent guards.
51
46
  function structuralChange(prev, next) {
52
47
  return prev.hostname !== next.hostname
53
48
  || (prev.user ?? '') !== (next.user ?? '')
54
49
  || prev.port !== next.port;
55
50
  }
56
- // Whether two hosts would dial the same SSH connection (so a re-probe is unnecessary).
57
51
  function sameConnection(a, b) {
58
52
  return a.hostname === b.hostname
59
53
  && a.port === b.port
60
54
  && (a.user ?? '') === (b.user ?? '')
61
55
  && (a.password ?? '') === (b.password ?? '');
62
56
  }
63
- // Agents whose host reference resolves to this id AND that currently occupy the machine: bound to an
64
- // active task / mid-bootstrap (creationToken) / awaiting_human, or with a live pane / present tmux
65
- // session. Moving the host's endpoint under them would orphan those sessions.
66
57
  async function liveAgentsReferencingHost(app, hostId) {
67
58
  const live = [];
68
59
  for (const project of app.ctx.config.project) {
@@ -78,9 +69,6 @@ async function liveAgentsReferencingHost(app, hostId) {
78
69
  }
79
70
  return live;
80
71
  }
81
- // These routes have no Fastify schema, so raw JSON reaches the handlers untyped: a truthy non-string
82
- // hostname (e.g. 123) would throw on .trim(), and a string/array port would inject into the ssh command.
83
- // Validate types here so malformed host-management requests return 400, never a 500.
84
72
  function hostBodyError(body, hostnameRequired) {
85
73
  if (hostnameRequired || body.hostname !== undefined) {
86
74
  if (typeof body.hostname !== 'string' || !body.hostname.trim())
@@ -97,9 +85,6 @@ function hostBodyError(body, hostnameRequired) {
97
85
  }
98
86
  return null;
99
87
  }
100
- // Apply a PATCH body onto a base host: provided fields win, omitted fields inherit base, an explicit
101
- // empty alias/user/password (or port: null) clears. Re-applied against the FRESH host inside the lock
102
- // so concurrent edits to other fields aren't clobbered by a stale full-host replacement.
103
88
  function applyHostPatch(base, body) {
104
89
  const password = resolvePassword(body.password, base.password);
105
90
  const alias = body.alias?.trim() ?? base.alias;
@@ -114,11 +99,6 @@ function applyHostPatch(base, body) {
114
99
  ...(password ? { password } : {}),
115
100
  };
116
101
  }
117
- // Tear down live web terminal streamers of agents referencing this host so their cached host-derived
118
- // runner/tmux (attach PTY, resize, session probe) are rebuilt with the new credential on reconnect.
119
- // NOT silent: a silent destroy would skip onSessionGone, leaving open /api/stream sockets believing
120
- // they're still subscribed to a now-deleted streamer (input silently dropped). The normal teardown
121
- // fires session_gone so clients release and reconnect, which rebuilds the streamer with the new host.
122
102
  function invalidateStreamersForHost(app, hostId) {
123
103
  const mgr = app.ctx.paneStreamerManager;
124
104
  if (!mgr)
@@ -199,9 +179,6 @@ export async function hostRoutes(app, options = {}) {
199
179
  if (bodyError) {
200
180
  return reply.status(400).send({ error: bodyError });
201
181
  }
202
- // SECURITY: changing the endpoint (hostname/user/port) of a password host requires an explicit
203
- // password (a new one, or '' to clear). Otherwise the stored secret — which the caller can't read,
204
- // it's redacted — would be sent to the newly supplied SSH target during the probe (exfiltration).
205
182
  const endpointChanged = structuralChange(current, applyHostPatch(current, { ...body, password: undefined }));
206
183
  if (endpointChanged && current.password !== undefined
207
184
  && (body.password === undefined || body.password === REDACTED)) {
@@ -209,7 +186,6 @@ export async function hostRoutes(app, options = {}) {
209
186
  error: '修改 host 地址 / 端口 / 用户名时必须重新填写密码(或清空密码改用 key 登录)',
210
187
  });
211
188
  }
212
- // Probe the host the request describes (submitted fields over the current snapshot).
213
189
  const probeHost = applyHostPatch(current, body);
214
190
  if (structuralChange(current, probeHost)) {
215
191
  const live = await liveAgentsReferencingHost(app, id);
@@ -224,19 +200,14 @@ export async function hostRoutes(app, options = {}) {
224
200
  if (!conn.ok) {
225
201
  return reply.status(400).send({ error: conn.message });
226
202
  }
227
- // A request that sets or clears the password invalidates live streamers (below) so they rebuild
228
- // with the new credential; '***' / omitted means "keep", so no invalidation.
229
203
  const passwordChanged = body.password !== undefined && body.password !== REDACTED;
230
204
  return withConfigLock(async () => {
231
205
  const idx = app.ctx.config.host.findIndex(h => h.id === id);
232
206
  if (idx === -1) {
233
207
  return reply.status(404).send({ error: `Host "${id}" not found` });
234
208
  }
235
- // Rebase the patch onto the FRESH host inside the lock so a concurrent edit to other fields
236
- // (saved during our connectivity probe) isn't clobbered by a stale full-host replacement.
237
209
  const lockedCurrent = app.ctx.config.host[idx];
238
210
  const next = applyHostPatch(lockedCurrent, body);
239
- // Re-check liveness: an agent may have gone live during the (lock-free) probe.
240
211
  if (structuralChange(lockedCurrent, next)) {
241
212
  const live = await liveAgentsReferencingHost(app, id);
242
213
  if (live.length > 0) {
@@ -246,8 +217,6 @@ export async function hostRoutes(app, options = {}) {
246
217
  });
247
218
  }
248
219
  }
249
- // If a concurrent edit changed the connection fields, the rebased combination was never probed
250
- // (e.g. A's new hostname + B's new password). Never save an unverified host — re-check it here.
251
220
  if (!sameConnection(next, probeHost)) {
252
221
  const reConn = await checkHostConnectivity(next, makeLocal);
253
222
  if (!reConn.ok) {
@@ -258,8 +227,6 @@ export async function hostRoutes(app, options = {}) {
258
227
  hosts[idx] = next;
259
228
  try {
260
229
  const validated = await persistHosts(app, hosts);
261
- // A live web terminal streamer caches its host-derived runner/tmux; tear down referencing
262
- // streamers on a credential change so the next reconnect rebuilds with the new password.
263
230
  if (passwordChanged)
264
231
  invalidateStreamersForHost(app, id);
265
232
  const stored = validated.host.find(h => h.id === id);
@@ -309,10 +276,6 @@ export async function hostRoutes(app, options = {}) {
309
276
  }
310
277
  const stored = body.id ? app.ctx.config.host.find(h => h.id === body.id) : undefined;
311
278
  const submitted = buildHostFromBody(body, body.id ?? 'check', undefined);
312
- // SECURITY: the stored password may only be reused to probe the SAME endpoint it belongs to.
313
- // Reusing it for a caller-chosen hostname/user/port would let an editor who can't read the
314
- // redacted secret exfiltrate it to a controlled SSH server. A changed endpoint must carry an
315
- // explicit password (else we probe key-auth only).
316
279
  const reuseStored = !!stored && !structuralChange(stored, submitted);
317
280
  const password = (body.password === undefined || body.password === REDACTED)
318
281
  ? (reuseStored ? stored.password : undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/api/hosts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/api/hosts.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,eAAe,EACf,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAe9B,KAAK,UAAU,qBAAqB,CAClC,IAAgB,EAChB,SAA8B;IAE9B,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;IACtH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE;SAC7B,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SACxF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAClE,OAAO;QACL,EAAE;QACF,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;KACpF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAqB;IACzD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,QAA4B,EAAE,OAA2B;IAChF,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACpE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB,EAAE,IAAgB;IAC1D,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;WACjC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;WACvC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,CAAa,EAAE,CAAa;IAClD,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;WAC3B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;WACjB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;WACjC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,GAAoB,EAAE,MAAc;IAC3E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBACpC,IAAI,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAc,EAAE,gBAAyB;IAC9D,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,sBAAsB,CAAC;IAChG,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;WAC5C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAU,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,GAAG,KAAK,mBAAmB,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,IAAc;IACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ;QAChD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAoB,EAAE,MAAc;IACtE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC/C,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc,EAAE,EAAU,EAAE,QAA4B;IACjF,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,IAAI,CAAC,QAAS,CAAC,IAAI,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAoB,EAAE,KAAmB;IACnE,MAAM,MAAM,GAAiB,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAW,EAAE,SAAS,CAAC,CAAC;IACjD,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;IAC3B,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAoB,EAAE,UAA6B,EAAE;IACpF,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAE1E,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,GAAG,CAAC,IAAI,CAAqB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAa,CAAC;QAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,cAAc,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CACxF,CAAC;YACF,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAS,EAAE,WAAW,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC;gBACtD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;oBACzC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,KAAK,CAA6C,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAa,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,eAAe,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;eAChD,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,gDAAgD;aACxD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EACH,SAAS,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;wBAClD,wBAAwB;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAElF,OAAO,cAAc,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC5B,KAAK,EACH,SAAS,EAAE,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;4BAClD,wBAAwB;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,eAAe;oBAAE,0BAA0B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC;gBACtD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;oBACzC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAA6B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,OAAO,cAAc,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;wBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;4BAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,SAAS,EAAE,cAAc,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;iBACpF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAqB,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAa,CAAC;QAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAC1E,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pets.d.ts","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFnE"}
1
+ {"version":3,"file":"pets.d.ts","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EnE"}
package/dist/api/pets.js CHANGED
@@ -47,8 +47,6 @@ export async function petRoutes(app) {
47
47
  if (!sprite)
48
48
  return reply.status(404).send({ error: 'pet not found' });
49
49
  reply.header('Content-Type', sprite.ext === 'png' ? 'image/png' : 'image/webp');
50
- // private (not public): the response is fetched with a bearer token, so a shared/proxy
51
- // cache must not store and replay it. UUID-keyed + immutable → safe in the browser cache only.
52
50
  reply.header('Cache-Control', 'private, max-age=31536000, immutable');
53
51
  return reply.send(sprite.bytes);
54
52
  });
@@ -64,9 +62,6 @@ export async function petRoutes(app) {
64
62
  if (typeof petId === 'string' && !(await store.getMeta(petId))) {
65
63
  return reply.status(404).send({ error: 'pet not found' });
66
64
  }
67
- // Serialize with DELETE /agents (same config lock + deletion claim): otherwise a PUT that
68
- // passes the agent check during DELETE's lock-free phase2 can write AFTER phase3 cleared
69
- // this agent's assignment, leaving a stale assignment a recreated id would inherit.
70
65
  return withConfigLock(async () => {
71
66
  if (app.ctx.agentManager.isDeletionInFlight(agentId)) {
72
67
  return reply.status(409).send({ error: `Agent "${agentId}" is being deleted; cannot set pet.` });
@@ -1 +1 @@
1
- {"version":3,"file":"pets.js","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pets.js","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAqEzE,MAAM,WAAW,kBAAkB;IAEjC,kBAAkB,CAAC,EAAE,MAAM,aAAa,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,aAAa,CAAC;CAC3D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFvG"}
1
+ {"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAmEzE,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,MAAM,aAAa,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,aAAa,CAAC;CAC3D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EvG"}
package/dist/api/probe.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { createRunner, LocalRunner, buildSshOptions, ensureMuxDir, shellQuote, sshTarget, sshEnv } from '../agent/runner.js';
2
2
  const PROBE_TIMEOUT_MS = 5000;
3
- // Interactive shells may print banners before `which`; the path is the last line.
4
3
  function lastNonEmptyLine(s) {
5
4
  const lines = s.split(/\r?\n/);
6
5
  for (let i = lines.length - 1; i >= 0; i--) {
@@ -41,14 +40,12 @@ export async function probeRoutes(app, options = {}) {
41
40
  let host;
42
41
  if (mode === 'remote') {
43
42
  if (hostId) {
44
- // Resolve the registry entry server-side so the real password never crosses the wire.
45
43
  host = app.ctx.config.host.find(h => h.id === hostId);
46
44
  if (!host) {
47
45
  return reply.status(400).send({ error: `unknown host id "${hostId}"` });
48
46
  }
49
47
  }
50
48
  else if (typeof inlineHost?.hostname === 'string' && inlineHost.hostname.trim()) {
51
- // Carry the (validated) inline port through so non-default-port hosts are probed correctly.
52
49
  const port = inlineHost.port;
53
50
  if (port !== undefined && (!Number.isInteger(port) || port <= 0 || port > 65535)) {
54
51
  return reply.status(400).send({ error: 'host.port must be a positive integer ≤ 65535' });
@@ -73,7 +70,6 @@ export async function probeRoutes(app, options = {}) {
73
70
  if (mode === 'remote') {
74
71
  const target = sshTarget(host);
75
72
  await ensureMuxDir();
76
- // noMux: force a fresh authenticated connection so a stale mux can't mask a wrong password.
77
73
  const sshCmd = `ssh ${buildSshOptions(host, { connectTimeoutSec: 5, noMux: true })} -- ${shellQuote(target)} echo ok`;
78
74
  const env = await sshEnv(host);
79
75
  const sshResult = await makeLocal()
@@ -96,7 +92,6 @@ export async function probeRoutes(app, options = {}) {
96
92
  }
97
93
  }
98
94
  const runner = mode === 'remote' ? makeRemote(host) : makeLocal();
99
- // Match each binary's runtime shell mode to avoid false-positive probes.
100
95
  const [tmux, claude, codex] = await Promise.all([
101
96
  probeWhich(runner, 'tmux', '请安装 tmux'),
102
97
  probeWhich(runner, 'claude', '请先安装 Claude Code CLI', 'login-interactive'),
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/api/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA8C/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqnBvE"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/api/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA8C/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAulBvE"}
@@ -42,9 +42,6 @@ export async function projectRoutes(app) {
42
42
  if (!app.ctx.bootstrapPoller) {
43
43
  return reply.status(503).send({ error: 'bootstrap poller not initialised' });
44
44
  }
45
- // Use the poller's view of config (not app.ctx.config) as the source of truth — PATCH /config
46
- // updates ctx.config but only DELETE /agents currently hot-replaces the poller, so during the
47
- // PATCH-then-restart window ctx.config can list projects the poller doesn't know yet.
48
45
  const result = await app.ctx.bootstrapPoller.pollProject(request.params.id);
49
46
  if (!result.knownProject) {
50
47
  return reply.status(404).send({
@@ -52,7 +49,6 @@ export async function projectRoutes(app) {
52
49
  });
53
50
  }
54
51
  if (result.ran === 0) {
55
- // Project exists but has no auto-mode agents (all have explicit workdir) → success no-op.
56
52
  return reply.send({ ok: true, ran: 0, message: 'no bootstrap targets for this project' });
57
53
  }
58
54
  return reply.send({ ok: result.ok, ran: result.ran });
@@ -158,7 +154,6 @@ export async function projectRoutes(app) {
158
154
  return reply.status(201).send({ project: stored, restartRequired: false });
159
155
  });
160
156
  });
161
- // Config commit precedes bootstrap; failures emit events instead of rolling back config.
162
157
  app.post('/projects/:projectId/agents', async (request, reply) => {
163
158
  if (!app.ctx.configPath) {
164
159
  return reply.status(500).send({ error: 'No config path configured' });
@@ -284,16 +279,12 @@ export async function projectRoutes(app) {
284
279
  for (const id of targets) {
285
280
  const state = await app.ctx.agentStore.get(id);
286
281
  const task = state?.taskId ? await app.ctx.taskStore.get(state.taskId) : null;
287
- // active task 始终拒——即使 awaiting_human 也不行,否则会留 orphan task 指向已删 agent。
288
- // operator 必须先 cancelTask 让 task 进 cancelled,再 DELETE。
289
- // active 含 max_rounds:其 dev 是 reserved 态(持锁+worktree),删它同样会留 orphan。
290
282
  if (task && TASK_ACTIVE_STATUS_SET.has(task.status)) {
291
283
  return reply.status(409).send({
292
284
  error: `Agent "${id}" is still active on task ${task.id}; cancel the task before deleting ` +
293
285
  `(prevents orphan task / tmux session / lock / worktree).`,
294
286
  });
295
287
  }
296
- // awaiting_human + 无活跃 task = 合法回收出口。
297
288
  if (state?.status === 'awaiting_human')
298
289
  continue;
299
290
  if (state?.creationToken) {
@@ -302,11 +293,6 @@ export async function projectRoutes(app) {
302
293
  });
303
294
  }
304
295
  }
305
- // An active task can reference a target it no longer has BOUND — e.g. a spec-phase
306
- // max_rounds task whose dev/QA were released (agentId/qaAgentId cleared) but whose
307
- // preferredAgentId is kept for Retry. The binding-based checks above miss that; deleting
308
- // the agent would dangle the reference and break Retry. Refuse if any active task names a
309
- // target via preferredAgentId / agentId / qaAgentId.
310
296
  const targetSet = new Set(targets);
311
297
  const referencing = (await app.ctx.taskStore.list({})).find(t => TASK_ACTIVE_STATUS_SET.has(t.status)
312
298
  && ((t.preferredAgentId !== '' && targetSet.has(t.preferredAgentId))
@@ -318,8 +304,6 @@ export async function projectRoutes(app) {
318
304
  `cancel or finish that task before deleting (would dangle its dev/QA/retry reference).`,
319
305
  });
320
306
  }
321
- // claim deletion 占位:挡住第二个 DELETE 在 awaiting_human stale-lock takeover 路径下
322
- // 撞同一 agent → 否则 phase2 (cleanupRemovedAgentRuntime) 会并发 kill 同一 tmux/worktree。
323
307
  const conflict = app.ctx.agentManager.tryClaimDeletion(targets);
324
308
  if (conflict) {
325
309
  return reply.status(409).send({
@@ -330,9 +314,6 @@ export async function projectRoutes(app) {
330
314
  for (const id of targets) {
331
315
  const ok = await app.ctx.lockManager.acquire(id);
332
316
  if (!ok) {
333
- // awaiting_human 状态下 lock 是前任 op 留下的 stale lock(markAwaitingHuman 不释放
334
- // lock),DELETE 是显式回收入口,直接接管——不计入 acquiredLocks,cleanupRemovedAgentRuntime
335
- // 会一并删除 stale lock 文件。deletionInFlight claim 已挡住并发 DELETE。
336
317
  const state = await app.ctx.agentStore.get(id);
337
318
  if (state?.status === 'awaiting_human')
338
319
  continue;
@@ -429,9 +410,6 @@ export async function projectRoutes(app) {
429
410
  catch (delErr) {
430
411
  app.log.warn({ err: delErr, agentId: id }, 'DELETE /agents Phase 3 agentStore.delete failed');
431
412
  }
432
- // Clear stale error records so reusing the same agent id (delete + recreate) doesn't
433
- // inherit the previous incarnation's bootstrap failures in the new snapshot.
434
- // Best-effort; failure is logged but doesn't block deletion.
435
413
  if (app.ctx.errorRecordStore) {
436
414
  try {
437
415
  await app.ctx.errorRecordStore.purgeAgent(id);
@@ -440,8 +418,6 @@ export async function projectRoutes(app) {
440
418
  app.log.warn({ err: purgeErr, agentId: id }, 'DELETE /agents errorRecordStore.purgeAgent failed');
441
419
  }
442
420
  }
443
- // Same reason as the error-record purge: drop the pet assignment so reusing the
444
- // agent id (delete + recreate) doesn't inherit the previous incarnation's pet.
445
421
  if (app.ctx.petStore) {
446
422
  try {
447
423
  await app.ctx.petStore.setAssignment(id, null);
@@ -468,12 +444,7 @@ export async function projectRoutes(app) {
468
444
  if (!cfg || cfg.projectId !== projectId) {
469
445
  return reply.status(404).send({ error: `Agent "${agentId}" not found in project "${projectId}"` });
470
446
  }
471
- // withConfigLock 与 DELETE / create-agent 同一把锁串行化——避免 operator 同时
472
- // 发起 DELETE 和 Resume 时,Resume 把 state 改回 ok,而 DELETE 的
473
- // cleanupRemovedAgentRuntime 还在杀 tmux/删 worktree。
474
447
  return withConfigLock(async () => {
475
- // DELETE phase2 (cleanupRemovedAgentRuntime) 在 phase1 释放 withConfigLock 后无锁运行;
476
- // 期间 Resume 拿到 withConfigLock 仍可能撞——deletionInFlight claim 跨 phase 持有,拒绝 Resume。
477
448
  if (app.ctx.agentManager.isDeletionInFlight(agentId)) {
478
449
  return reply.status(409).send({
479
450
  error: `Agent "${agentId}" is being deleted; Resume not allowed.`,
@@ -566,7 +537,6 @@ export async function projectRoutes(app) {
566
537
  });
567
538
  }
568
539
  catch (err) {
569
- // dialogPending check must precede createdSession-kill (kill strips dismiss handle).
570
540
  if (await app.ctx.agentManager.handleDialogPendingFromRuntime(agentId, err)) {
571
541
  if (!owner.takeover)
572
542
  await app.ctx.lockManager.release(agentId);
@@ -596,7 +566,6 @@ export async function projectRoutes(app) {
596
566
  return reply.send({ ok: true, agentId });
597
567
  });
598
568
  }
599
- /** dev keeps its lock across the fix loop — restart/retry must reuse it. */
600
569
  async function resolveLockOwnership(app, agentId) {
601
570
  const cfg = app.ctx.agentManager.getAgentConfig(agentId);
602
571
  if (!cfg || cfg.role !== 'dev')
@@ -607,7 +576,6 @@ async function resolveLockOwnership(app, agentId) {
607
576
  const task = await app.ctx.taskStore.get(state.taskId);
608
577
  if (!task)
609
578
  return { takeover: false };
610
- // max_rounds 含在内:reserved dev 持锁,restart/retry 应保留锁(takeover),勿误 release。
611
579
  if (!TASK_ACTIVE_STATUS_SET.has(task.status))
612
580
  return { takeover: false };
613
581
  const locked = await app.ctx.lockManager.isLocked(agentId);
@@ -615,7 +583,6 @@ async function resolveLockOwnership(app, agentId) {
615
583
  return { takeover: false };
616
584
  return { takeover: true };
617
585
  }
618
- /** Returns null when the agent is open for ops. */
619
586
  async function rejectIfOpInProgress(app, agentId) {
620
587
  const state = await app.ctx.agentStore.get(agentId);
621
588
  if (state?.creationToken) {
@@ -623,13 +590,10 @@ async function rejectIfOpInProgress(app, agentId) {
623
590
  }
624
591
  return null;
625
592
  }
626
- /** Terminal task → idle release; active task → mark waiting (keeps lock). */
627
593
  async function pendingCleanupAfterReplReady(app, agentId, takeover) {
628
594
  const state = await app.ctx.agentStore.get(agentId);
629
595
  const taskId = state?.taskId;
630
596
  if (!taskId) {
631
- // A greeting_failed hold must re-prove signal capability, not be silently cleared:
632
- // re-run the handshake on the restarted REPL; only a pass clears the hold.
633
597
  if (state?.awaitingPhase === 'greeting_failed') {
634
598
  await app.ctx.agentManager.regreetHeldAgent(agentId);
635
599
  }
@@ -641,10 +605,6 @@ async function pendingCleanupAfterReplReady(app, agentId, takeover) {
641
605
  return;
642
606
  }
643
607
  const task = await app.ctx.taskStore.get(taskId);
644
- // restart-repl / retry 是显式 operator 操作,已确认 REPL 重启;前面的 ack_unknown/dev-wait-gate-failed/
645
- // dialog_pending Held 状态都因新 REPL 而不再成立 → 用 allowAwaitingHuman + clearAwaitingHuman 清掉。
646
- // 否则 endpoint 返回 200 但 agent 仍 Held + Resume 也拒,operator 卡死。
647
- // max_rounds 非终态:reserved dev restart 后走 markWaiting 保锁+worktree,不被误 idle-release 删 worktree。
648
608
  if (!task || TASK_TERMINAL_STATUS_SET.has(task.status)) {
649
609
  await app.ctx.agentManager.releaseAgentForTask(agentId, taskId, 'idle', { allowAwaitingHuman: true })
650
610
  .catch(err => app.log.warn({ err, agentId, taskId }, 'restart/retry idle-release failed'));