@agent-relay/factory 0.1.19 → 0.1.21

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 (83) hide show
  1. package/README.md +42 -0
  2. package/dist/cli/fleet.d.ts +4 -0
  3. package/dist/cli/fleet.d.ts.map +1 -1
  4. package/dist/cli/fleet.js +186 -23
  5. package/dist/cli/fleet.js.map +1 -1
  6. package/dist/config/local-clone-paths.d.ts +18 -0
  7. package/dist/config/local-clone-paths.d.ts.map +1 -0
  8. package/dist/config/local-clone-paths.js +188 -0
  9. package/dist/config/local-clone-paths.js.map +1 -0
  10. package/dist/config/schema.d.ts +84 -2
  11. package/dist/config/schema.d.ts.map +1 -1
  12. package/dist/config/schema.js +71 -5
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/dispatch/templates.d.ts +18 -0
  15. package/dist/dispatch/templates.d.ts.map +1 -1
  16. package/dist/dispatch/templates.js +45 -11
  17. package/dist/dispatch/templates.js.map +1 -1
  18. package/dist/fleet/internal-fleet-client.d.ts +4 -0
  19. package/dist/fleet/internal-fleet-client.d.ts.map +1 -1
  20. package/dist/fleet/internal-fleet-client.js +4 -1
  21. package/dist/fleet/internal-fleet-client.js.map +1 -1
  22. package/dist/fleet/relay-fleet-client.d.ts +4 -0
  23. package/dist/fleet/relay-fleet-client.d.ts.map +1 -1
  24. package/dist/fleet/relay-fleet-client.js +14 -3
  25. package/dist/fleet/relay-fleet-client.js.map +1 -1
  26. package/dist/logging.d.ts +17 -0
  27. package/dist/logging.d.ts.map +1 -0
  28. package/dist/logging.js +347 -0
  29. package/dist/logging.js.map +1 -0
  30. package/dist/mount/relayfile-cloud-mount-client.js +10 -0
  31. package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
  32. package/dist/mount/relayfile-github-connection-write.d.ts.map +1 -1
  33. package/dist/mount/relayfile-github-connection-write.js +19 -7
  34. package/dist/mount/relayfile-github-connection-write.js.map +1 -1
  35. package/dist/orchestrator/batch-tracker.d.ts +3 -0
  36. package/dist/orchestrator/batch-tracker.d.ts.map +1 -1
  37. package/dist/orchestrator/batch-tracker.js +28 -0
  38. package/dist/orchestrator/batch-tracker.js.map +1 -1
  39. package/dist/orchestrator/factory.d.ts +2 -1
  40. package/dist/orchestrator/factory.d.ts.map +1 -1
  41. package/dist/orchestrator/factory.js +3295 -321
  42. package/dist/orchestrator/factory.js.map +1 -1
  43. package/dist/orchestrator/reaper.d.ts.map +1 -1
  44. package/dist/orchestrator/reaper.js +6 -4
  45. package/dist/orchestrator/reaper.js.map +1 -1
  46. package/dist/ports/fleet.d.ts +25 -0
  47. package/dist/ports/fleet.d.ts.map +1 -1
  48. package/dist/ports/mount.d.ts +7 -1
  49. package/dist/ports/mount.d.ts.map +1 -1
  50. package/dist/ports/state.d.ts +120 -0
  51. package/dist/ports/state.d.ts.map +1 -1
  52. package/dist/ports/writeback.d.ts +2 -0
  53. package/dist/ports/writeback.d.ts.map +1 -1
  54. package/dist/state/file-state-store.d.ts +33 -2
  55. package/dist/state/file-state-store.d.ts.map +1 -1
  56. package/dist/state/file-state-store.js +520 -10
  57. package/dist/state/file-state-store.js.map +1 -1
  58. package/dist/state/in-memory-state-store.d.ts +31 -1
  59. package/dist/state/in-memory-state-store.d.ts.map +1 -1
  60. package/dist/state/in-memory-state-store.js +245 -0
  61. package/dist/state/in-memory-state-store.js.map +1 -1
  62. package/dist/testing/fakes.d.ts +7 -0
  63. package/dist/testing/fakes.d.ts.map +1 -1
  64. package/dist/testing/fakes.js +1 -0
  65. package/dist/testing/fakes.js.map +1 -1
  66. package/dist/triage/agent-names.d.ts +13 -0
  67. package/dist/triage/agent-names.d.ts.map +1 -0
  68. package/dist/triage/agent-names.js +54 -0
  69. package/dist/triage/agent-names.js.map +1 -0
  70. package/dist/triage/heuristic.d.ts.map +1 -1
  71. package/dist/triage/heuristic.js +16 -23
  72. package/dist/triage/heuristic.js.map +1 -1
  73. package/dist/triage/llm.d.ts.map +1 -1
  74. package/dist/triage/llm.js +3 -2
  75. package/dist/triage/llm.js.map +1 -1
  76. package/dist/triage/schema.d.ts +26 -26
  77. package/dist/types.d.ts +2 -1
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/writeback/github.d.ts +1 -0
  80. package/dist/writeback/github.d.ts.map +1 -1
  81. package/dist/writeback/github.js +11 -0
  82. package/dist/writeback/github.js.map +1 -1
  83. package/package.json +1 -1
@@ -12,23 +12,137 @@ export const githubWatchStatePath = (registryPath) => join(dirname(registryPath)
12
12
  const WATCH_STATE_LOCK_STALE_MS = 60_000;
13
13
  /**
14
14
  * Keeps the factory's general runtime bookkeeping in memory while persisting
15
- * GitHub escalation watches atomically so they survive a CLI process restart.
15
+ * GitHub escalation watches, parked clarification teams, and exact babysitter
16
+ * PR ownership/pending wakes atomically so they survive a CLI process restart.
16
17
  * Mutations reload under an advisory lock so independent processes merge
17
18
  * updates instead of publishing divergent cached documents.
18
19
  */
19
20
  export class FileStateStore extends InMemoryStateStore {
20
21
  #watchStatePath;
22
+ #batchSize;
21
23
  #operation = Promise.resolve();
22
24
  constructor(options) {
23
25
  super(options);
24
26
  this.#watchStatePath = options.watchStatePath;
27
+ this.#batchSize = options.batchSize;
28
+ }
29
+ async claimDispatchLifecycle(workspaceId, key, seed, owner, nowMs, leaseMs) {
30
+ return await this.#exclusive(async () => this.#withMutationLock(async () => {
31
+ const document = await this.#loadFromDisk();
32
+ const workspace = document.workspaces[workspaceId] ??= emptyWorkspaceState();
33
+ let lifecycle = workspace.dispatchLifecycles[key];
34
+ const created = !lifecycle;
35
+ if (!lifecycle) {
36
+ lifecycle = cloneLifecycle(seed);
37
+ if (activeDispatchLifecycleCount(workspace.dispatchLifecycles) >= this.#batchSize)
38
+ lifecycle.phase = 'queued';
39
+ workspace.dispatchLifecycles[key] = lifecycle;
40
+ }
41
+ const terminal = lifecycle.phase === 'complete' || lifecycle.phase === 'abandoned';
42
+ const activeOtherOwner = lifecycle.lease && lifecycle.lease.owner !== owner && lifecycle.lease.leaseUntilMs > nowMs;
43
+ if (terminal || activeOtherOwner) {
44
+ return { acquired: false, lifecycle: cloneLifecycle(lifecycle), created };
45
+ }
46
+ const epoch = lifecycle.lease?.owner === owner
47
+ ? lifecycle.lease.epoch
48
+ : (lifecycle.lease?.epoch ?? 0) + 1;
49
+ lifecycle.lease = { owner, epoch, leaseUntilMs: nowMs + leaseMs };
50
+ lifecycle.updatedAtMs = nowMs;
51
+ await this.#persist(document);
52
+ return {
53
+ acquired: true,
54
+ lifecycle: cloneLifecycle(lifecycle),
55
+ lease: { ...lifecycle.lease },
56
+ created,
57
+ };
58
+ }));
59
+ }
60
+ async renewDispatchLifecycle(workspaceId, key, owner, epoch, nowMs, leaseMs) {
61
+ return await this.#exclusive(async () => this.#withMutationLock(async () => {
62
+ const document = await this.#loadFromDisk();
63
+ const lifecycle = document.workspaces[workspaceId]?.dispatchLifecycles[key];
64
+ if (!lifecycle?.lease || lifecycle.lease.owner !== owner || lifecycle.lease.epoch !== epoch)
65
+ return false;
66
+ lifecycle.lease.leaseUntilMs = nowMs + leaseMs;
67
+ lifecycle.updatedAtMs = nowMs;
68
+ await this.#persist(document);
69
+ return true;
70
+ }));
71
+ }
72
+ async promoteDispatchLifecycle(workspaceId, key, owner, epoch, nowMs) {
73
+ return await this.#exclusive(async () => this.#withMutationLock(async () => {
74
+ const document = await this.#loadFromDisk();
75
+ const workspace = document.workspaces[workspaceId];
76
+ const lifecycle = workspace?.dispatchLifecycles[key];
77
+ if ((lifecycle?.phase !== 'queued' && lifecycle?.phase !== 'waiting-for-human') ||
78
+ !lifecycle.lease ||
79
+ lifecycle.lease.owner !== owner ||
80
+ lifecycle.lease.epoch !== epoch ||
81
+ lifecycle.lease.leaseUntilMs <= nowMs ||
82
+ activeDispatchLifecycleCount(workspace.dispatchLifecycles, key) >= this.#batchSize)
83
+ return false;
84
+ lifecycle.phase = 'dispatching';
85
+ lifecycle.updatedAtMs = nowMs;
86
+ await this.#persist(document);
87
+ return true;
88
+ }));
89
+ }
90
+ async releaseDispatchLifecycleLease(workspaceId, key, owner, epoch) {
91
+ await this.#exclusive(async () => this.#withMutationLock(async () => {
92
+ const document = await this.#loadFromDisk();
93
+ const lease = document.workspaces[workspaceId]?.dispatchLifecycles[key]?.lease;
94
+ if (lease?.owner !== owner || lease.epoch !== epoch)
95
+ return;
96
+ lease.leaseUntilMs = Number.MIN_SAFE_INTEGER;
97
+ await this.#persist(document);
98
+ }));
99
+ }
100
+ async saveDispatchLifecycle(workspaceId, key, owner, epoch, nowMs, lifecycle) {
101
+ return await this.#exclusive(async () => this.#withMutationLock(async () => {
102
+ const document = await this.#loadFromDisk();
103
+ const workspace = document.workspaces[workspaceId];
104
+ const current = workspace?.dispatchLifecycles[key];
105
+ if (!current?.lease || current.lease.owner !== owner || current.lease.epoch !== epoch || current.lease.leaseUntilMs <= nowMs) {
106
+ return false;
107
+ }
108
+ const next = cloneLifecycle(lifecycle);
109
+ next.lease = { ...current.lease };
110
+ next.updatedAtMs = nowMs;
111
+ workspace.dispatchLifecycles[key] = next;
112
+ await this.#persist(document);
113
+ return true;
114
+ }));
115
+ }
116
+ async getDispatchLifecycle(workspaceId, key) {
117
+ return await this.#exclusive(async () => {
118
+ const lifecycle = (await this.#loadFromDisk()).workspaces[workspaceId]?.dispatchLifecycles[key];
119
+ return lifecycle ? cloneLifecycle(lifecycle) : undefined;
120
+ });
121
+ }
122
+ async listDispatchLifecycles(workspaceId) {
123
+ return await this.#exclusive(async () => {
124
+ const lifecycles = (await this.#loadFromDisk()).workspaces[workspaceId]?.dispatchLifecycles ?? {};
125
+ return Object.entries(lifecycles).map(([key, lifecycle]) => [key, cloneLifecycle(lifecycle)]);
126
+ });
127
+ }
128
+ async clearDispatchLifecycle(workspaceId, key) {
129
+ await this.#exclusive(async () => this.#withMutationLock(async () => {
130
+ const document = await this.#loadFromDisk();
131
+ const workspace = document.workspaces[workspaceId];
132
+ if (!workspace || !(key in workspace.dispatchLifecycles))
133
+ return;
134
+ delete workspace.dispatchLifecycles[key];
135
+ if (workspaceIsEmpty(workspace))
136
+ delete document.workspaces[workspaceId];
137
+ await this.#persist(document);
138
+ }));
25
139
  }
26
140
  async setGithubIssueCommentWatch(workspaceId, key, watch) {
27
141
  await this.#exclusive(async () => {
28
142
  await this.#withMutationLock(async () => {
29
143
  const document = await this.#loadFromDisk();
30
- const workspace = document.workspaces[workspaceId] ??= {};
31
- workspace[key] = cloneWatch(watch);
144
+ const workspace = document.workspaces[workspaceId] ??= emptyWorkspaceState();
145
+ workspace.githubIssueCommentWatches[key] = cloneWatch(watch);
32
146
  await this.#persist(document);
33
147
  });
34
148
  });
@@ -36,7 +150,7 @@ export class FileStateStore extends InMemoryStateStore {
36
150
  async listGithubIssueCommentWatches(workspaceId) {
37
151
  return await this.#exclusive(async () => {
38
152
  const document = await this.#loadFromDisk();
39
- return Object.entries(document.workspaces[workspaceId] ?? {})
153
+ return Object.entries(document.workspaces[workspaceId]?.githubIssueCommentWatches ?? {})
40
154
  .map(([key, watch]) => [key, cloneWatch(watch)]);
41
155
  });
42
156
  }
@@ -45,16 +159,302 @@ export class FileStateStore extends InMemoryStateStore {
45
159
  await this.#withMutationLock(async () => {
46
160
  const document = await this.#loadFromDisk();
47
161
  const workspace = document.workspaces[workspaceId];
48
- if (!workspace || !(key in workspace))
162
+ if (!workspace || !(key in workspace.githubIssueCommentWatches))
163
+ return;
164
+ delete workspace.githubIssueCommentWatches[key];
165
+ if (workspaceIsEmpty(workspace)) {
166
+ delete document.workspaces[workspaceId];
167
+ }
168
+ await this.#persist(document);
169
+ });
170
+ });
171
+ }
172
+ async reserveWaitingClarification(workspaceId, issueKey, record) {
173
+ return await this.#exclusive(async () => {
174
+ return await this.#withMutationLock(async () => {
175
+ const document = await this.#loadFromDisk();
176
+ const workspace = document.workspaces[workspaceId] ??= emptyWorkspaceState();
177
+ if (workspace.waitingClarifications[issueKey])
178
+ return false;
179
+ workspace.waitingClarifications[issueKey] = cloneClarification(record);
180
+ await this.#persist(document);
181
+ return true;
182
+ });
183
+ });
184
+ }
185
+ async getWaitingClarification(workspaceId, issueKey) {
186
+ return await this.#exclusive(async () => {
187
+ const document = await this.#loadFromDisk();
188
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
189
+ return record ? cloneClarification(record) : undefined;
190
+ });
191
+ }
192
+ async listWaitingClarifications(workspaceId) {
193
+ return await this.#exclusive(async () => {
194
+ const document = await this.#loadFromDisk();
195
+ return Object.entries(document.workspaces[workspaceId]?.waitingClarifications ?? {})
196
+ .map(([key, record]) => [key, cloneClarification(record)]);
197
+ });
198
+ }
199
+ async claimClarificationQuestionDelivery(workspaceId, issueKey, owner, nowMs, leaseMs) {
200
+ return await this.#exclusive(async () => {
201
+ return await this.#withMutationLock(async () => {
202
+ const document = await this.#loadFromDisk();
203
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
204
+ if (!record || record.questionPostedAtMs !== undefined || (record.questionDelivery?.owner &&
205
+ nowMs - record.questionDelivery.claimedAtMs < leaseMs))
206
+ return undefined;
207
+ record.questionDelivery = {
208
+ owner,
209
+ claimedAtMs: nowMs,
210
+ attempts: (record.questionDelivery?.attempts ?? 0) + 1,
211
+ };
212
+ await this.#persist(document);
213
+ return cloneClarification(record);
214
+ });
215
+ });
216
+ }
217
+ async completeClarificationQuestionDelivery(workspaceId, issueKey, owner, postedAtMs) {
218
+ return await this.#exclusive(async () => {
219
+ return await this.#withMutationLock(async () => {
220
+ const document = await this.#loadFromDisk();
221
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
222
+ if (record?.questionDelivery?.owner !== owner)
223
+ return false;
224
+ record.questionPostedAtMs = postedAtMs;
225
+ delete record.questionDelivery;
226
+ await this.#persist(document);
227
+ return true;
228
+ });
229
+ });
230
+ }
231
+ async renewClarificationQuestionDelivery(workspaceId, issueKey, owner, nowMs) {
232
+ return await this.#exclusive(async () => {
233
+ return await this.#withMutationLock(async () => {
234
+ const document = await this.#loadFromDisk();
235
+ const delivery = document.workspaces[workspaceId]?.waitingClarifications[issueKey]?.questionDelivery;
236
+ if (delivery?.owner !== owner)
237
+ return false;
238
+ delivery.claimedAtMs = nowMs;
239
+ await this.#persist(document);
240
+ return true;
241
+ });
242
+ });
243
+ }
244
+ async releaseClarificationQuestionDelivery(workspaceId, issueKey, owner) {
245
+ await this.#mutateClarification(workspaceId, issueKey, (record) => {
246
+ if (record.questionDelivery?.owner !== owner)
247
+ return;
248
+ record.questionDelivery.owner = '';
249
+ record.questionDelivery.claimedAtMs = Number.MIN_SAFE_INTEGER;
250
+ });
251
+ }
252
+ async claimClarificationReply(workspaceId, issueKey, reply) {
253
+ return await this.#exclusive(async () => {
254
+ return await this.#withMutationLock(async () => {
255
+ const document = await this.#loadFromDisk();
256
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
257
+ if (!record || (record.questionPostedAtMs === undefined && !record.questionDelivery?.owner) || record.reply) {
258
+ return undefined;
259
+ }
260
+ record.reply = { ...reply };
261
+ await this.#persist(document);
262
+ return cloneClarification(record);
263
+ });
264
+ });
265
+ }
266
+ async markClarificationAgentReleased(workspaceId, issueKey, agentName) {
267
+ return await this.#mutateClarification(workspaceId, issueKey, (record) => {
268
+ record.releasedAgents ??= [];
269
+ if (!record.releasedAgents.includes(agentName))
270
+ record.releasedAgents.push(agentName);
271
+ });
272
+ }
273
+ async claimClarificationWake(workspaceId, issueKey, owner, nowMs, leaseMs) {
274
+ return await this.#exclusive(async () => {
275
+ return await this.#withMutationLock(async () => {
276
+ const document = await this.#loadFromDisk();
277
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
278
+ if (!record?.reply || record.questionPostedAtMs === undefined || record.parkedAtMs === undefined || (record.wake && record.wake.owner !== owner && nowMs - record.wake.claimedAtMs < leaseMs)) {
279
+ return undefined;
280
+ }
281
+ record.wake = {
282
+ owner,
283
+ claimedAtMs: nowMs,
284
+ attempts: (record.wake?.attempts ?? 0) + 1,
285
+ injectedAgents: [...(record.wake?.injectedAgents ?? [])],
286
+ };
287
+ await this.#persist(document);
288
+ return cloneClarification(record);
289
+ });
290
+ });
291
+ }
292
+ async markClarificationParked(workspaceId, issueKey, parkedAtMs) {
293
+ return await this.#exclusive(async () => {
294
+ return await this.#withMutationLock(async () => {
295
+ const document = await this.#loadFromDisk();
296
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
297
+ if (!record)
298
+ return undefined;
299
+ const released = new Set(record.releasedAgents ?? []);
300
+ if (record.agents.some(({ name }) => !released.has(name)))
301
+ return undefined;
302
+ record.parkedAtMs ??= parkedAtMs;
303
+ await this.#persist(document);
304
+ return cloneClarification(record);
305
+ });
306
+ });
307
+ }
308
+ async claimClarificationEscalation(workspaceId, issueKey, owner, nowMs, leaseMs) {
309
+ return await this.#exclusive(async () => {
310
+ return await this.#withMutationLock(async () => {
311
+ const document = await this.#loadFromDisk();
312
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
313
+ if (!record || record.reply || record.escalatedAtMs || (record.escalation && record.escalation.owner !== owner && nowMs - record.escalation.claimedAtMs < leaseMs))
314
+ return undefined;
315
+ record.escalation = {
316
+ owner,
317
+ claimedAtMs: nowMs,
318
+ attempts: (record.escalation?.attempts ?? 0) + 1,
319
+ };
320
+ await this.#persist(document);
321
+ return cloneClarification(record);
322
+ });
323
+ });
324
+ }
325
+ async completeClarificationEscalation(workspaceId, issueKey, owner, escalatedAtMs) {
326
+ return await this.#exclusive(async () => {
327
+ return await this.#withMutationLock(async () => {
328
+ const document = await this.#loadFromDisk();
329
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
330
+ if (record?.escalation?.owner !== owner)
331
+ return false;
332
+ record.escalatedAtMs = escalatedAtMs;
333
+ delete record.escalation;
334
+ await this.#persist(document);
335
+ return true;
336
+ });
337
+ });
338
+ }
339
+ async releaseClarificationEscalation(workspaceId, issueKey, owner) {
340
+ await this.#mutateClarification(workspaceId, issueKey, (record) => {
341
+ if (record.escalation?.owner !== owner)
342
+ return;
343
+ record.escalation.owner = '';
344
+ record.escalation.claimedAtMs = Number.MIN_SAFE_INTEGER;
345
+ });
346
+ }
347
+ async renewClarificationWake(workspaceId, issueKey, owner, nowMs) {
348
+ return await this.#mutateOwnedWake(workspaceId, issueKey, owner, (record) => {
349
+ record.wake.claimedAtMs = nowMs;
350
+ });
351
+ }
352
+ async markClarificationAgentInjected(workspaceId, issueKey, owner, agentName) {
353
+ return await this.#mutateOwnedWake(workspaceId, issueKey, owner, (record) => {
354
+ if (!record.wake.injectedAgents.includes(agentName))
355
+ record.wake.injectedAgents.push(agentName);
356
+ });
357
+ }
358
+ async completeClarificationWake(workspaceId, issueKey, owner) {
359
+ return await this.#exclusive(async () => {
360
+ return await this.#withMutationLock(async () => {
361
+ const document = await this.#loadFromDisk();
362
+ const workspace = document.workspaces[workspaceId];
363
+ if (workspace?.waitingClarifications[issueKey]?.wake?.owner !== owner)
364
+ return false;
365
+ delete workspace.waitingClarifications[issueKey];
366
+ if (workspaceIsEmpty(workspace))
367
+ delete document.workspaces[workspaceId];
368
+ await this.#persist(document);
369
+ return true;
370
+ });
371
+ });
372
+ }
373
+ async releaseClarificationWake(workspaceId, issueKey, owner) {
374
+ await this.#exclusive(async () => {
375
+ await this.#withMutationLock(async () => {
376
+ const document = await this.#loadFromDisk();
377
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
378
+ if (record?.wake?.owner !== owner)
379
+ return;
380
+ record.wake.owner = '';
381
+ record.wake.claimedAtMs = Number.MIN_SAFE_INTEGER;
382
+ await this.#persist(document);
383
+ });
384
+ });
385
+ }
386
+ async #mutateOwnedWake(workspaceId, issueKey, owner, mutate) {
387
+ return await this.#exclusive(async () => {
388
+ return await this.#withMutationLock(async () => {
389
+ const document = await this.#loadFromDisk();
390
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
391
+ if (record?.wake?.owner !== owner)
392
+ return false;
393
+ mutate(record);
394
+ await this.#persist(document);
395
+ return true;
396
+ });
397
+ });
398
+ }
399
+ async #mutateClarification(workspaceId, issueKey, mutate) {
400
+ return await this.#exclusive(async () => {
401
+ return await this.#withMutationLock(async () => {
402
+ const document = await this.#loadFromDisk();
403
+ const record = document.workspaces[workspaceId]?.waitingClarifications[issueKey];
404
+ if (!record)
405
+ return undefined;
406
+ mutate(record);
407
+ await this.#persist(document);
408
+ return cloneClarification(record);
409
+ });
410
+ });
411
+ }
412
+ async clearWaitingClarification(workspaceId, issueKey) {
413
+ await this.#exclusive(async () => {
414
+ await this.#withMutationLock(async () => {
415
+ const document = await this.#loadFromDisk();
416
+ const workspace = document.workspaces[workspaceId];
417
+ if (!workspace || !(issueKey in workspace.waitingClarifications))
49
418
  return;
50
- delete workspace[key];
51
- if (Object.keys(workspace).length === 0) {
419
+ delete workspace.waitingClarifications[issueKey];
420
+ if (workspaceIsEmpty(workspace)) {
52
421
  delete document.workspaces[workspaceId];
53
422
  }
54
423
  await this.#persist(document);
55
424
  });
56
425
  });
57
426
  }
427
+ async setBabysitterSession(workspaceId, issueKey, session) {
428
+ await this.#exclusive(async () => {
429
+ await this.#withMutationLock(async () => {
430
+ const document = await this.#loadFromDisk();
431
+ const workspace = document.workspaces[workspaceId] ??= emptyWorkspaceState();
432
+ workspace.babysitterSessions[issueKey] = cloneBabysitterSession(session);
433
+ await this.#persist(document);
434
+ });
435
+ });
436
+ }
437
+ async listBabysitterSessions(workspaceId) {
438
+ return await this.#exclusive(async () => {
439
+ const document = await this.#loadFromDisk();
440
+ return Object.entries(document.workspaces[workspaceId]?.babysitterSessions ?? {})
441
+ .map(([key, session]) => [key, cloneBabysitterSession(session)]);
442
+ });
443
+ }
444
+ async clearBabysitterSession(workspaceId, issueKey) {
445
+ await this.#exclusive(async () => {
446
+ await this.#withMutationLock(async () => {
447
+ const document = await this.#loadFromDisk();
448
+ const workspace = document.workspaces[workspaceId];
449
+ if (!workspace || !(issueKey in workspace.babysitterSessions))
450
+ return;
451
+ delete workspace.babysitterSessions[issueKey];
452
+ if (workspaceIsEmpty(workspace))
453
+ delete document.workspaces[workspaceId];
454
+ await this.#persist(document);
455
+ });
456
+ });
457
+ }
58
458
  async #loadFromDisk() {
59
459
  try {
60
460
  const parsed = JSON.parse(await readFile(this.#watchStatePath, 'utf8'));
@@ -63,7 +463,7 @@ export class FileStateStore extends InMemoryStateStore {
63
463
  catch (error) {
64
464
  if (!isMissingFileError(error))
65
465
  throw error;
66
- return { version: 1, workspaces: {} };
466
+ return { version: 3, workspaces: {} };
67
467
  }
68
468
  }
69
469
  async #persist(document) {
@@ -112,12 +512,122 @@ export class FileStateStore extends InMemoryStateStore {
112
512
  }
113
513
  }
114
514
  const parseDocument = (value) => {
115
- if (!isRecord(value) || value.version !== 1 || !isRecord(value.workspaces)) {
515
+ if (!isRecord(value) || !isRecord(value.workspaces)) {
116
516
  throw new Error('Factory GitHub watch state file is invalid');
117
517
  }
118
- return value;
518
+ if (value.version === 3) {
519
+ const workspaces = {};
520
+ for (const [workspaceId, rawWorkspace] of Object.entries(value.workspaces)) {
521
+ if (!isRecord(rawWorkspace))
522
+ throw new Error('Factory GitHub watch state file is invalid');
523
+ const watches = rawWorkspace.githubIssueCommentWatches;
524
+ const clarifications = rawWorkspace.waitingClarifications;
525
+ const babysitters = rawWorkspace.babysitterSessions;
526
+ const lifecycles = rawWorkspace.dispatchLifecycles;
527
+ if (!isRecord(watches) ||
528
+ !isRecord(clarifications) ||
529
+ (babysitters !== undefined && !isRecord(babysitters)) ||
530
+ (lifecycles !== undefined && !isRecord(lifecycles))) {
531
+ throw new Error('Factory GitHub watch state file is invalid');
532
+ }
533
+ workspaces[workspaceId] = {
534
+ githubIssueCommentWatches: watches,
535
+ waitingClarifications: clarifications,
536
+ babysitterSessions: parseBabysitterSessions(babysitters ?? {}),
537
+ dispatchLifecycles: (lifecycles ?? {}),
538
+ };
539
+ }
540
+ return { version: 3, workspaces };
541
+ }
542
+ if (value.version === 2) {
543
+ const workspaces = {};
544
+ for (const [workspaceId, rawWorkspace] of Object.entries(value.workspaces)) {
545
+ if (!isRecord(rawWorkspace))
546
+ throw new Error('Factory GitHub watch state file is invalid');
547
+ const watches = rawWorkspace.githubIssueCommentWatches;
548
+ const clarifications = rawWorkspace.waitingClarifications;
549
+ const babysitters = rawWorkspace.babysitterSessions;
550
+ if (!isRecord(watches) || !isRecord(clarifications) || (babysitters !== undefined && !isRecord(babysitters))) {
551
+ throw new Error('Factory GitHub watch state file is invalid');
552
+ }
553
+ workspaces[workspaceId] = {
554
+ githubIssueCommentWatches: watches,
555
+ waitingClarifications: clarifications,
556
+ babysitterSessions: parseBabysitterSessions(babysitters ?? {}),
557
+ dispatchLifecycles: {},
558
+ };
559
+ }
560
+ return { version: 3, workspaces };
561
+ }
562
+ if (value.version === 1) {
563
+ const workspaces = {};
564
+ for (const [workspaceId, watches] of Object.entries(value.workspaces)) {
565
+ if (!isRecord(watches)) {
566
+ throw new Error('Factory GitHub watch state file is invalid');
567
+ }
568
+ workspaces[workspaceId] = {
569
+ githubIssueCommentWatches: watches,
570
+ waitingClarifications: {},
571
+ babysitterSessions: {},
572
+ dispatchLifecycles: {},
573
+ };
574
+ }
575
+ return { version: 3, workspaces };
576
+ }
577
+ throw new Error('Factory GitHub watch state file is invalid');
119
578
  };
120
579
  const cloneWatch = (watch) => structuredClone(watch);
580
+ const cloneClarification = (record) => structuredClone(record);
581
+ const cloneBabysitterSession = (session) => structuredClone(session);
582
+ const parseBabysitterSessions = (value) => {
583
+ const sessions = {};
584
+ for (const [key, candidate] of Object.entries(value)) {
585
+ if (!isRecord(candidate) || !isRecord(candidate.issue)) {
586
+ throw new Error('Factory GitHub watch state file is invalid');
587
+ }
588
+ const issue = candidate.issue;
589
+ if (typeof issue.uuid !== 'string' ||
590
+ typeof issue.key !== 'string' ||
591
+ typeof issue.path !== 'string' ||
592
+ typeof candidate.repo !== 'string' ||
593
+ !Number.isSafeInteger(candidate.prNumber) ||
594
+ candidate.prNumber < 1 ||
595
+ typeof candidate.agentName !== 'string' ||
596
+ (candidate.path !== undefined && typeof candidate.path !== 'string') ||
597
+ typeof candidate.critical !== 'boolean' ||
598
+ !Array.isArray(candidate.pendingKinds) ||
599
+ !candidate.pendingKinds.every((kind) => typeof kind === 'string')) {
600
+ throw new Error('Factory GitHub watch state file is invalid');
601
+ }
602
+ sessions[key] = {
603
+ issue: { uuid: issue.uuid, key: issue.key, path: issue.path },
604
+ repo: candidate.repo,
605
+ prNumber: candidate.prNumber,
606
+ agentName: candidate.agentName,
607
+ ...(candidate.path === undefined ? {} : { path: candidate.path }),
608
+ critical: candidate.critical,
609
+ pendingKinds: [...candidate.pendingKinds],
610
+ };
611
+ }
612
+ return sessions;
613
+ };
614
+ const cloneLifecycle = (record) => structuredClone(record);
615
+ const activeDispatchLifecycleCount = (lifecycles, exceptKey) => Object.entries(lifecycles).filter(([key, lifecycle]) => key !== exceptKey && dispatchLifecycleOccupiesSlot(lifecycle)).length;
616
+ const dispatchLifecycleOccupiesSlot = (lifecycle) => lifecycle.phase !== 'queued' &&
617
+ lifecycle.phase !== 'waiting-for-human' &&
618
+ lifecycle.phase !== 'releasing' &&
619
+ lifecycle.phase !== 'complete' &&
620
+ lifecycle.phase !== 'abandoned';
621
+ const emptyWorkspaceState = () => ({
622
+ githubIssueCommentWatches: {},
623
+ waitingClarifications: {},
624
+ babysitterSessions: {},
625
+ dispatchLifecycles: {},
626
+ });
627
+ const workspaceIsEmpty = (workspace) => Object.keys(workspace.githubIssueCommentWatches).length === 0 &&
628
+ Object.keys(workspace.waitingClarifications).length === 0 &&
629
+ Object.keys(workspace.babysitterSessions).length === 0 &&
630
+ Object.keys(workspace.dispatchLifecycles).length === 0;
121
631
  const syncParentDirectory = async (filePath) => {
122
632
  const handle = await open(dirname(filePath), 'r');
123
633
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"file-state-store.js","sourceRoot":"","sources":["../../src/state/file-state-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-state-store.js","sourceRoot":"","sources":["../../src/state/file-state-store.ts"],"names":[],"mappings":"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"}