@cat-factory/worker 0.129.0 → 0.131.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +13 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/infrastructure/container-assembly.d.ts.map +1 -1
  5. package/dist/infrastructure/container-assembly.js +43 -28
  6. package/dist/infrastructure/container-assembly.js.map +1 -1
  7. package/dist/infrastructure/container-shared-services.d.ts +49 -0
  8. package/dist/infrastructure/container-shared-services.d.ts.map +1 -0
  9. package/dist/infrastructure/container-shared-services.js +130 -0
  10. package/dist/infrastructure/container-shared-services.js.map +1 -0
  11. package/dist/infrastructure/container.d.ts +60 -3
  12. package/dist/infrastructure/container.d.ts.map +1 -1
  13. package/dist/infrastructure/container.js +53 -117
  14. package/dist/infrastructure/container.js.map +1 -1
  15. package/dist/infrastructure/repositories/D1FoundationalServiceRepository.d.ts +38 -0
  16. package/dist/infrastructure/repositories/D1FoundationalServiceRepository.d.ts.map +1 -0
  17. package/dist/infrastructure/repositories/D1FoundationalServiceRepository.js +280 -0
  18. package/dist/infrastructure/repositories/D1FoundationalServiceRepository.js.map +1 -0
  19. package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.d.ts.map +1 -1
  20. package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.js +9 -4
  21. package/dist/infrastructure/repositories/D1WorkspaceSettingsRepository.js.map +1 -1
  22. package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts.map +1 -1
  23. package/dist/infrastructure/workflows/ExecutionWorkflow.js +110 -84
  24. package/dist/infrastructure/workflows/ExecutionWorkflow.js.map +1 -1
  25. package/migrations/0073_foundational_services.sql +84 -0
  26. package/migrations/0073_workspace_metadata.sql +9 -0
  27. package/package.json +18 -18
@@ -0,0 +1,280 @@
1
+ // D1-backed stores for the foundational-services catalog (migration 0073). The Drizzle mirrors
2
+ // live in `runtimes/node/src/repositories/foundationalServices.ts`; the two are kept honest by
3
+ // the conformance suite's foundational-services assertions.
4
+ /**
5
+ * How many service ids ride ONE `IN (…)` of the lazy contract read. D1 binds parameters
6
+ * positionally with a per-statement ceiling, so a design that declared many services is chunked
7
+ * rather than issued as a query per id (which is the banned N+1) or as one over-long statement.
8
+ */
9
+ const ID_CHUNK = 50;
10
+ function toServiceRecord(row) {
11
+ return {
12
+ serviceId: row.service_id,
13
+ ownerKind: row.owner_kind,
14
+ ownerId: row.owner_id,
15
+ name: row.name,
16
+ summary: row.summary,
17
+ description: row.description,
18
+ capabilities: parseStringArray(row.capabilities),
19
+ sourceId: row.source_id,
20
+ sourcePath: row.source_path,
21
+ pinnedCommit: row.pinned_commit,
22
+ createdAt: row.created_at,
23
+ updatedAt: row.updated_at,
24
+ deletedAt: row.deleted_at,
25
+ };
26
+ }
27
+ /**
28
+ * A JSON `string[]` column, read LENIENTLY. A malformed value degrades to `[]` rather than
29
+ * throwing: these columns are written only by our own repos, so a bad value means a hand edit or
30
+ * a partially-applied migration, and failing the whole catalog read over one row's tags would
31
+ * take down every design dispatch in the workspace.
32
+ */
33
+ function parseStringArray(value) {
34
+ if (!value)
35
+ return [];
36
+ try {
37
+ const parsed = JSON.parse(value);
38
+ return Array.isArray(parsed) ? parsed.filter((v) => typeof v === 'string') : [];
39
+ }
40
+ catch {
41
+ // silent-catch-ok: see the note above — a malformed tag list reads as no tags, and the row
42
+ // it belongs to is still served.
43
+ return [];
44
+ }
45
+ }
46
+ export class D1FoundationalServiceRepository {
47
+ db;
48
+ constructor({ db }) {
49
+ this.db = db;
50
+ }
51
+ async listByOwner(ownerKind, ownerId, includeDeleted = false) {
52
+ const where = includeDeleted ? '' : ' AND deleted_at IS NULL';
53
+ const { results } = await this.db
54
+ .prepare(`SELECT * FROM foundational_services WHERE owner_kind = ? AND owner_id = ?${where} ORDER BY service_id`)
55
+ .bind(ownerKind, ownerId)
56
+ .all();
57
+ return results.map(toServiceRecord);
58
+ }
59
+ async get(ownerKind, ownerId, serviceId) {
60
+ const row = await this.db
61
+ .prepare('SELECT * FROM foundational_services WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
62
+ .bind(ownerKind, ownerId, serviceId)
63
+ .first();
64
+ return row ? toServiceRecord(row) : null;
65
+ }
66
+ async upsert(record) {
67
+ await this.db
68
+ .prepare(`INSERT INTO foundational_services
69
+ (service_id, owner_kind, owner_id, name, summary, description, capabilities,
70
+ source_id, source_path, pinned_commit, created_at, updated_at, deleted_at)
71
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
72
+ ON CONFLICT (owner_kind, owner_id, service_id) DO UPDATE SET
73
+ name = excluded.name,
74
+ summary = excluded.summary,
75
+ description = excluded.description,
76
+ capabilities = excluded.capabilities,
77
+ source_id = excluded.source_id,
78
+ source_path = excluded.source_path,
79
+ pinned_commit = excluded.pinned_commit,
80
+ updated_at = excluded.updated_at,
81
+ deleted_at = excluded.deleted_at`)
82
+ .bind(record.serviceId, record.ownerKind, record.ownerId, record.name, record.summary, record.description, JSON.stringify(record.capabilities), record.sourceId, record.sourcePath, record.pinnedCommit, record.createdAt, record.updatedAt, record.deletedAt)
83
+ .run();
84
+ }
85
+ async softDelete(ownerKind, ownerId, serviceId, at) {
86
+ await this.db
87
+ .prepare('UPDATE foundational_services SET deleted_at = ?, updated_at = ? WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
88
+ .bind(at, at, ownerKind, ownerId, serviceId)
89
+ .run();
90
+ }
91
+ async listBySource(sourceId) {
92
+ const { results } = await this.db
93
+ .prepare('SELECT * FROM foundational_services WHERE source_id = ? AND deleted_at IS NULL ORDER BY service_id')
94
+ .bind(sourceId)
95
+ .all();
96
+ return results.map(toServiceRecord);
97
+ }
98
+ async softDeleteBySource(sourceId, at) {
99
+ await this.db
100
+ .prepare('UPDATE foundational_services SET deleted_at = ?, updated_at = ? WHERE source_id = ? AND deleted_at IS NULL')
101
+ .bind(at, at, sourceId)
102
+ .run();
103
+ }
104
+ }
105
+ export class D1ApiContractRepository {
106
+ db;
107
+ constructor({ db }) {
108
+ this.db = db;
109
+ }
110
+ async listManifestByOwner(ownerKind, ownerId) {
111
+ // `length(body)` rather than `body`: the whole point of the manifest is that a catalog read
112
+ // never transfers a document. SQLite's `length()` on TEXT counts characters, which is what
113
+ // the size is compared against everywhere else (`body.length` in JS).
114
+ const { results } = await this.db
115
+ .prepare(`SELECT service_id, contract_id, format, title, length(body) AS size,
116
+ operations, omitted_operations, source_path
117
+ FROM api_contracts
118
+ WHERE owner_kind = ? AND owner_id = ?
119
+ ORDER BY service_id, contract_id`)
120
+ .bind(ownerKind, ownerId)
121
+ .all();
122
+ return results.map((row) => ({
123
+ serviceId: row.service_id,
124
+ contractId: row.contract_id,
125
+ format: row.format,
126
+ title: row.title,
127
+ size: row.size,
128
+ operations: parseStringArray(row.operations),
129
+ omittedOperations: row.omitted_operations,
130
+ sourcePath: row.source_path,
131
+ }));
132
+ }
133
+ async listByServiceIds(ownerKind, ownerId, serviceIds) {
134
+ const ids = [...new Set(serviceIds)].filter(Boolean);
135
+ if (ids.length === 0)
136
+ return [];
137
+ const out = [];
138
+ for (let i = 0; i < ids.length; i += ID_CHUNK) {
139
+ const chunk = ids.slice(i, i + ID_CHUNK);
140
+ const placeholders = chunk.map(() => '?').join(', ');
141
+ const { results } = await this.db
142
+ .prepare(`SELECT * FROM api_contracts
143
+ WHERE owner_kind = ? AND owner_id = ? AND service_id IN (${placeholders})
144
+ ORDER BY service_id, contract_id`)
145
+ .bind(ownerKind, ownerId, ...chunk)
146
+ .all();
147
+ for (const row of results)
148
+ out.push(toContractRecord(row));
149
+ }
150
+ return out;
151
+ }
152
+ async replaceForService(ownerKind, ownerId, serviceId, contracts) {
153
+ // One BATCH so the delete and the inserts land together: a reader between the two would
154
+ // otherwise see a service whose contracts had vanished, which the catalog renders as a
155
+ // service with no interface rather than as a write in progress.
156
+ const statements = [
157
+ this.db
158
+ .prepare('DELETE FROM api_contracts WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
159
+ .bind(ownerKind, ownerId, serviceId),
160
+ ...contracts.map((contract) => this.db
161
+ .prepare(`INSERT INTO api_contracts
162
+ (owner_kind, owner_id, service_id, contract_id, format, title, body,
163
+ operations, omitted_operations, source_path, source_sha, created_at, updated_at)
164
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
165
+ .bind(ownerKind, ownerId, serviceId, contract.contractId, contract.format, contract.title, contract.body, JSON.stringify(contract.operations), contract.omittedOperations, contract.sourcePath, contract.sourceSha, contract.createdAt, contract.updatedAt)),
166
+ ];
167
+ await this.db.batch(statements);
168
+ }
169
+ async deleteForService(ownerKind, ownerId, serviceId) {
170
+ await this.db
171
+ .prepare('DELETE FROM api_contracts WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
172
+ .bind(ownerKind, ownerId, serviceId)
173
+ .run();
174
+ }
175
+ }
176
+ function toContractRecord(row) {
177
+ return {
178
+ ownerKind: row.owner_kind,
179
+ ownerId: row.owner_id,
180
+ serviceId: row.service_id,
181
+ contractId: row.contract_id,
182
+ format: row.format,
183
+ title: row.title,
184
+ body: row.body,
185
+ operations: parseStringArray(row.operations),
186
+ omittedOperations: row.omitted_operations,
187
+ sourcePath: row.source_path,
188
+ sourceSha: row.source_sha,
189
+ createdAt: row.created_at,
190
+ updatedAt: row.updated_at,
191
+ };
192
+ }
193
+ function toSourceRecord(row) {
194
+ return {
195
+ id: row.id,
196
+ ownerKind: row.owner_kind,
197
+ ownerId: row.owner_id,
198
+ repoOwner: row.repo_owner,
199
+ repoName: row.repo_name,
200
+ gitRef: row.git_ref,
201
+ mode: row.mode,
202
+ dirPath: row.dir_path,
203
+ filePaths: parseStringArray(row.file_paths),
204
+ serviceId: row.service_id,
205
+ serviceName: row.service_name,
206
+ serviceSummary: row.service_summary,
207
+ lastSyncedCommit: row.last_synced_commit,
208
+ lastSyncedAt: row.last_synced_at,
209
+ createdAt: row.created_at,
210
+ deletedAt: row.deleted_at,
211
+ };
212
+ }
213
+ export class D1FoundationalServiceSourceRepository {
214
+ db;
215
+ constructor({ db }) {
216
+ this.db = db;
217
+ }
218
+ async listByOwner(ownerKind, ownerId) {
219
+ const { results } = await this.db
220
+ .prepare('SELECT * FROM foundational_service_sources WHERE owner_kind = ? AND owner_id = ? AND deleted_at IS NULL ORDER BY created_at DESC')
221
+ .bind(ownerKind, ownerId)
222
+ .all();
223
+ return results.map(toSourceRecord);
224
+ }
225
+ async get(id) {
226
+ const row = await this.db
227
+ .prepare('SELECT * FROM foundational_service_sources WHERE id = ?')
228
+ .bind(id)
229
+ .first();
230
+ return row ? toSourceRecord(row) : null;
231
+ }
232
+ async upsert(record) {
233
+ await this.db
234
+ .prepare(`INSERT INTO foundational_service_sources
235
+ (id, owner_kind, owner_id, repo_owner, repo_name, git_ref, mode, dir_path, file_paths,
236
+ service_id, service_name, service_summary, last_synced_commit, last_synced_at,
237
+ created_at, deleted_at)
238
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
239
+ ON CONFLICT (id) DO UPDATE SET
240
+ repo_owner = excluded.repo_owner,
241
+ repo_name = excluded.repo_name,
242
+ git_ref = excluded.git_ref,
243
+ mode = excluded.mode,
244
+ dir_path = excluded.dir_path,
245
+ file_paths = excluded.file_paths,
246
+ service_id = excluded.service_id,
247
+ service_name = excluded.service_name,
248
+ service_summary = excluded.service_summary,
249
+ last_synced_commit = excluded.last_synced_commit,
250
+ last_synced_at = excluded.last_synced_at,
251
+ deleted_at = excluded.deleted_at`)
252
+ .bind(record.id, record.ownerKind, record.ownerId, record.repoOwner, record.repoName, record.gitRef, record.mode, record.dirPath, JSON.stringify(record.filePaths), record.serviceId, record.serviceName, record.serviceSummary, record.lastSyncedCommit, record.lastSyncedAt, record.createdAt, record.deletedAt)
253
+ .run();
254
+ }
255
+ async updateSyncState(id, lastSyncedCommit, lastSyncedAt) {
256
+ await this.db
257
+ .prepare('UPDATE foundational_service_sources SET last_synced_commit = ?, last_synced_at = ? WHERE id = ?')
258
+ .bind(lastSyncedCommit, lastSyncedAt, id)
259
+ .run();
260
+ }
261
+ async softDelete(id, at) {
262
+ await this.db
263
+ .prepare('UPDATE foundational_service_sources SET deleted_at = ? WHERE id = ?')
264
+ .bind(at, id)
265
+ .run();
266
+ }
267
+ async listStale(staleBefore, limit) {
268
+ // `last_synced_at IS NULL` first: a source linked but never synced is the stalest thing there
269
+ // is, and ordering by a nullable column alone would sort it unpredictably across engines.
270
+ const { results } = await this.db
271
+ .prepare(`SELECT * FROM foundational_service_sources
272
+ WHERE deleted_at IS NULL AND (last_synced_at IS NULL OR last_synced_at < ?)
273
+ ORDER BY (last_synced_at IS NULL) DESC, last_synced_at ASC
274
+ LIMIT ?`)
275
+ .bind(staleBefore, limit)
276
+ .all();
277
+ return results.map(toSourceRecord);
278
+ }
279
+ }
280
+ //# sourceMappingURL=D1FoundationalServiceRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1FoundationalServiceRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1FoundationalServiceRepository.ts"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,+FAA+F;AAC/F,4DAA4D;AAE5D;;;;GAIG;AACH,MAAM,QAAQ,GAAG,EAAE,CAAA;AAkBnB,SAAS,eAAe,CAAC,GAAe;IACtC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAA0C;QACzD,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC;QAChD,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACzC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,2FAA2F;QAC3F,iCAAiC;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,OAAO,+BAA+B;IACzB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAuC,EACvC,OAAe,EACf,cAAc,GAAG,KAAK;QAEtB,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAA;QAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,4EAA4E,KAAK,sBAAsB,CACxG;aACA,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;aACxB,GAAG,EAAc,CAAA;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,SAAuC,EACvC,OAAe,EACf,SAAiB;QAEjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,8FAA8F,CAC/F;aACA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;aACnC,KAAK,EAAc,CAAA;QACtB,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAiC;QAC5C,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;;;;;;;;;;;4CAaoC,CACrC;aACA,IAAI,CACH,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EACnC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,UAAU,CACd,SAAuC,EACvC,OAAe,EACf,SAAiB,EACjB,EAAU;QAEV,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,0HAA0H,CAC3H;aACA,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;aAC3C,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,oGAAoG,CACrG;aACA,IAAI,CAAC,QAAQ,CAAC;aACd,GAAG,EAAc,CAAA;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,EAAU;QACnD,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,4GAA4G,CAC7G;aACA,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC;aACtB,GAAG,EAAE,CAAA;IACV,CAAC;CACF;AAkBD,MAAM,OAAO,uBAAuB;IACjB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,SAAuC,EACvC,OAAe;QAEf,4FAA4F;QAC5F,2FAA2F;QAC3F,sEAAsE;QACtE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;;;2CAImC,CACpC;aACA,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;aACxB,GAAG,EASA,CAAA;QACN,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,MAAM,EAAE,GAAG,CAAC,MAA2B;YACvC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YAC5C,iBAAiB,EAAE,GAAG,CAAC,kBAAkB;YACzC,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAuC,EACvC,OAAe,EACf,UAAoB;QAEpB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAwB,EAAE,CAAA;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAA;YACxC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;iBAC9B,OAAO,CACN;uEAC6D,YAAY;6CACtC,CACpC;iBACA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;iBAClC,GAAG,EAAe,CAAA;YACrB,KAAK,MAAM,GAAG,IAAI,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,SAAuC,EACvC,OAAe,EACf,SAAiB,EACjB,SAA8B;QAE9B,wFAAwF;QACxF,uFAAuF;QACvF,gEAAgE;QAChE,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN,oFAAoF,CACrF;iBACA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;YACtC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5B,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;;;4DAGgD,CACjD;iBACA,IAAI,CACH,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,IAAI,EACb,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,QAAQ,CAAC,iBAAiB,EAC1B,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,SAAS,CACnB,CACJ;SACF,CAAA;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAuC,EACvC,OAAe,EACf,SAAiB;QAEjB,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,oFAAoF,CAAC;aAC7F,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;aACnC,GAAG,EAAE,CAAA;IACV,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,GAAgB;IACxC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAA0C;QACzD,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,MAAM,EAAE,GAAG,CAAC,MAA2B;QACvC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC5C,iBAAiB,EAAE,GAAG,CAAC,kBAAkB;QACzC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAA;AACH,CAAC;AAqBD,SAAS,cAAc,CAAC,GAAc;IACpC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAA0C;QACzD,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,IAAI,EAAE,GAAG,CAAC,IAAqC;QAC/C,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC3C,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,cAAc,EAAE,GAAG,CAAC,eAAe;QACnC,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;QACxC,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAA;AACH,CAAC;AAED,MAAM,OAAO,qCAAqC;IAC/B,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAuC,EACvC,OAAe;QAEf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,kIAAkI,CACnI;aACA,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;aACxB,GAAG,EAAa,CAAA;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,yDAAyD,CAAC;aAClE,IAAI,CAAC,EAAE,CAAC;aACR,KAAK,EAAa,CAAA;QACrB,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAuC;QAClD,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;;;;;;;;;;;;;;;4CAiBoC,CACrC;aACA,IAAI,CACH,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAChC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,EAAU,EACV,gBAA+B,EAC/B,YAAoB;QAEpB,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,iGAAiG,CAClG;aACA,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,EAAE,CAAC;aACxC,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,EAAU;QACrC,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,qEAAqE,CAAC;aAC9E,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;aACZ,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,KAAa;QAChD,8FAA8F;QAC9F,0FAA0F;QAC1F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;;kBAGU,CACX;aACA,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;aACxB,GAAG,EAAa,CAAA;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"D1WorkspaceSettingsRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EAKV,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAuD3D;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,2BAA2B;IAC/E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAMhE;IAEK,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAaxF;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD5E;CACF"}
1
+ {"version":3,"file":"D1WorkspaceSettingsRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EAMV,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AA2D3D;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,2BAA2B;IAC/E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAMhE;IAEK,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAaxF;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5E;CACF"}
@@ -28,6 +28,9 @@ function rowToSettings(row) {
28
28
  spendMonthlyLimit: row.spend_monthly_limit,
29
29
  defaultProvisionType: row.default_provision_type ?? null,
30
30
  defaultProvisionManifestId: row.default_provision_manifest_id,
31
+ // An absent (or unparseable) blob reads as "nothing filled in", never as a missing key
32
+ // the settings object would have to be nullable for.
33
+ metadata: parseJson(row.metadata) ?? {},
31
34
  };
32
35
  }
33
36
  /**
@@ -71,8 +74,9 @@ export class D1WorkspaceSettingsRepository {
71
74
  artifact_retention_days, kaizen_enabled,
72
75
  delegate_agents_to_runner_pool, review_friction_mode, review_friction_warn_count,
73
76
  review_friction_block_count, review_friction_block_stuck_minutes, spend_currency,
74
- spend_monthly_limit, default_provision_type, default_provision_manifest_id)
75
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
77
+ spend_monthly_limit, default_provision_type, default_provision_manifest_id,
78
+ metadata)
79
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
76
80
  ON CONFLICT (workspace_id) DO UPDATE SET
77
81
  waiting_escalation_minutes = excluded.waiting_escalation_minutes,
78
82
  task_limit_mode = excluded.task_limit_mode,
@@ -90,8 +94,9 @@ export class D1WorkspaceSettingsRepository {
90
94
  spend_currency = excluded.spend_currency,
91
95
  spend_monthly_limit = excluded.spend_monthly_limit,
92
96
  default_provision_type = excluded.default_provision_type,
93
- default_provision_manifest_id = excluded.default_provision_manifest_id`)
94
- .bind(workspaceId, settings.waitingEscalationMinutes, settings.taskLimitMode, settings.taskLimitShared, settings.taskLimitPerType ? JSON.stringify(settings.taskLimitPerType) : null, settings.storeAgentContext ? 1 : 0, settings.publishPrVerificationReport ? 1 : 0, settings.artifactRetentionDays, settings.kaizenEnabled ? 1 : 0, settings.delegateAgentsToRunnerPool ? 1 : 0, settings.reviewFrictionMode, settings.reviewFrictionWarnCount, settings.reviewFrictionBlockCount, settings.reviewFrictionBlockStuckMinutes, settings.spendCurrency, settings.spendMonthlyLimit, settings.defaultProvisionType, settings.defaultProvisionManifestId)
97
+ default_provision_manifest_id = excluded.default_provision_manifest_id,
98
+ metadata = excluded.metadata`)
99
+ .bind(workspaceId, settings.waitingEscalationMinutes, settings.taskLimitMode, settings.taskLimitShared, settings.taskLimitPerType ? JSON.stringify(settings.taskLimitPerType) : null, settings.storeAgentContext ? 1 : 0, settings.publishPrVerificationReport ? 1 : 0, settings.artifactRetentionDays, settings.kaizenEnabled ? 1 : 0, settings.delegateAgentsToRunnerPool ? 1 : 0, settings.reviewFrictionMode, settings.reviewFrictionWarnCount, settings.reviewFrictionBlockCount, settings.reviewFrictionBlockStuckMinutes, settings.spendCurrency, settings.spendMonthlyLimit, settings.defaultProvisionType, settings.defaultProvisionManifestId, JSON.stringify(settings.metadata))
95
100
  .run();
96
101
  }
97
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"D1WorkspaceSettingsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1WorkspaceSettingsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAKjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAWpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsSf;CACF"}
1
+ {"version":3,"file":"ExecutionWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAKjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAoJpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAwMf;CACF"}
@@ -10,6 +10,96 @@ const STEP_CONFIG = {
10
10
  retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
11
11
  timeout: '5 minutes',
12
12
  };
13
+ /**
14
+ * Poll a dispatched async job (a container coding step) for step `i` between durable
15
+ * sleeps until it finishes. A thrown poll error is always transient, so tolerate a
16
+ * bounded run of them (reset on any good poll) and only fail the run once the tolerance
17
+ * is spent or the budget runs out. Returns the settled result, or `null` once it has
18
+ * already failed the run (the caller returns).
19
+ */
20
+ async function drivePollLoop(deps, i, initial) {
21
+ const { step, log, maxPolls, failureTolerance, pollInterval, pollOnce, failRun, poll } = deps;
22
+ let result = initial;
23
+ let polled = false;
24
+ let pollReadFailures = 0;
25
+ for (let p = 0; p < maxPolls; p++) {
26
+ // Poll-first: the job was dispatched instants ago by `advance-${i}`, so the first
27
+ // status read runs immediately — a leading sleep would be a full poll interval of
28
+ // dead air. Later iterations sleep between polls.
29
+ if (p > 0)
30
+ await step.sleep(`poll-wait-${i}-${p}`, pollInterval);
31
+ const attempt = await pollOnce(`poll-${i}-${p}`, poll);
32
+ if (attempt.kind === 'read_failed') {
33
+ pollReadFailures += 1;
34
+ log.warn('poll could not read job status; treating as still running and retrying', {
35
+ step: i,
36
+ poll: p,
37
+ pollReadFailures,
38
+ err: attempt.message,
39
+ });
40
+ if (pollReadFailures < failureTolerance)
41
+ continue;
42
+ await failRun(i, failureFromDriver(`Job status was unreadable for ${pollReadFailures} consecutive polls; ` +
43
+ `the container appears unreachable (last error: ${attempt.message})`, 'timeout'));
44
+ return null;
45
+ }
46
+ pollReadFailures = 0;
47
+ result = attempt.result;
48
+ if (result.kind !== 'awaiting_job') {
49
+ polled = true;
50
+ break;
51
+ }
52
+ }
53
+ if (!polled && result.kind === 'awaiting_job') {
54
+ await failRun(i, failureFromDriver('Implementation job did not finish within its polling budget', 'timeout'));
55
+ return null;
56
+ }
57
+ return result;
58
+ }
59
+ /**
60
+ * Drive a polling gate (`ci` / `conflicts` / post-release-health) for step `i` between
61
+ * durable sleeps until its precheck yields something terminal. A passing precheck
62
+ * returns `continue`, a dispatched helper agent returns `awaiting_job`, and a spent
63
+ * budget resolves through the gate's own exhaustion policy. Read failures are tolerated
64
+ * exactly like the job loop. Returns the updated result, or `null` once it failed the run.
65
+ */
66
+ async function driveGatePollLoop(deps, i, initial) {
67
+ const { step, log, maxPolls, failureTolerance, pollInterval, pollOnce, failRun, poll } = deps;
68
+ let result = initial;
69
+ let settled = false;
70
+ let pollReadFailures = 0;
71
+ for (let p = 0; p < maxPolls; p++) {
72
+ await step.sleep(`gate-wait-${i}-${p}`, pollInterval);
73
+ const attempt = await pollOnce(`gate-poll-${i}-${p}`, poll);
74
+ if (attempt.kind === 'read_failed') {
75
+ pollReadFailures += 1;
76
+ log.warn('gate poll could not read its precheck; treating as still pending and retrying', {
77
+ step: i,
78
+ poll: p,
79
+ pollReadFailures,
80
+ err: attempt.message,
81
+ });
82
+ if (pollReadFailures < failureTolerance)
83
+ continue;
84
+ await failRun(i, failureFromDriver(`Gate precheck was unreadable for ${pollReadFailures} consecutive polls ` +
85
+ `(last error: ${attempt.message})`, 'timeout'));
86
+ return null;
87
+ }
88
+ pollReadFailures = 0;
89
+ result = attempt.result;
90
+ if (result.kind !== 'awaiting_gate') {
91
+ settled = true;
92
+ break;
93
+ }
94
+ }
95
+ if (!settled && result.kind === 'awaiting_gate') {
96
+ // Poll budget spent. Let the gate decide: a time-windowed watch gate
97
+ // (post-release-health) PASSES, while CI/conflicts resolve to a `job_failed`
98
+ // timeout the checks below funnel through `failRun`. One policy, both runtimes.
99
+ result = (await step.do(`gate-exhausted-${i}`, STEP_CONFIG, deps.resolveExhaustion));
100
+ }
101
+ return result;
102
+ }
13
103
  /**
14
104
  * Durable driver for one pipeline run. It contains NO business logic — every
15
105
  * decision lives in core's ExecutionService. Each loop iteration advances the
@@ -72,89 +162,25 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
72
162
  return { kind: 'read_failed', message: redactSecrets(raw) ?? '' };
73
163
  }
74
164
  };
75
- // Poll a dispatched async job (a container coding step) for step `i` between durable
76
- // sleeps until it finishes. A thrown poll error is always transient, so tolerate a
77
- // bounded run of them (reset on any good poll) and only fail the run once the tolerance
78
- // is spent or the budget runs out. Returns the settled result, or `null` once it has
79
- // already failed the run (the caller returns).
80
- const drivePollLoop = async (i, initial) => {
81
- let result = initial;
82
- let polled = false;
83
- let pollReadFailures = 0;
84
- for (let p = 0; p < execConfig.jobMaxPolls; p++) {
85
- // Poll-first: the job was dispatched instants ago by `advance-${i}`, so the first
86
- // status read runs immediately — a leading sleep would be a full poll interval of
87
- // dead air. Later iterations sleep between polls.
88
- if (p > 0)
89
- await step.sleep(`poll-wait-${i}-${p}`, jobPollInterval);
90
- const attempt = await pollOnce(`poll-${i}-${p}`, () => container.executionService.pollAgentJob(workspaceId, executionId));
91
- if (attempt.kind === 'read_failed') {
92
- pollReadFailures += 1;
93
- log.warn('poll could not read job status; treating as still running and retrying', {
94
- step: i,
95
- poll: p,
96
- pollReadFailures,
97
- err: attempt.message,
98
- });
99
- if (pollReadFailures < execConfig.jobPollFailureTolerance)
100
- continue;
101
- await failRun(i, failureFromDriver(`Job status was unreadable for ${pollReadFailures} consecutive polls; ` +
102
- `the container appears unreachable (last error: ${attempt.message})`, 'timeout'));
103
- return null;
104
- }
105
- pollReadFailures = 0;
106
- result = attempt.result;
107
- if (result.kind !== 'awaiting_job') {
108
- polled = true;
109
- break;
110
- }
111
- }
112
- if (!polled && result.kind === 'awaiting_job') {
113
- await failRun(i, failureFromDriver('Implementation job did not finish within its polling budget', 'timeout'));
114
- return null;
115
- }
116
- return result;
165
+ // The two durable poll loops are module-level (see `drivePollLoop` / `driveGatePollLoop`),
166
+ // taking the run-scoped closures above as bound deps so this driver stays within the
167
+ // per-function line budget.
168
+ const jobPollDeps = {
169
+ step,
170
+ log,
171
+ maxPolls: execConfig.jobMaxPolls,
172
+ failureTolerance: execConfig.jobPollFailureTolerance,
173
+ pollInterval: jobPollInterval,
174
+ pollOnce,
175
+ failRun,
176
+ poll: () => container.executionService.pollAgentJob(workspaceId, executionId),
117
177
  };
118
- // Drive a polling gate (`ci` / `conflicts` / post-release-health) for step `i` between
119
- // durable sleeps until its precheck yields something terminal. A passing precheck
120
- // returns `continue`, a dispatched helper agent returns `awaiting_job`, and a spent
121
- // budget resolves through the gate's own exhaustion policy. Read failures are tolerated
122
- // exactly like the job loop. Returns the updated result, or `null` once it failed the run.
123
- const driveGatePollLoop = async (i, initial) => {
124
- let result = initial;
125
- let settled = false;
126
- let pollReadFailures = 0;
127
- for (let p = 0; p < execConfig.ciMaxPolls; p++) {
128
- await step.sleep(`gate-wait-${i}-${p}`, ciPollInterval);
129
- const attempt = await pollOnce(`gate-poll-${i}-${p}`, () => container.executionService.pollGate(workspaceId, executionId));
130
- if (attempt.kind === 'read_failed') {
131
- pollReadFailures += 1;
132
- log.warn('gate poll could not read its precheck; treating as still pending and retrying', {
133
- step: i,
134
- poll: p,
135
- pollReadFailures,
136
- err: attempt.message,
137
- });
138
- if (pollReadFailures < execConfig.jobPollFailureTolerance)
139
- continue;
140
- await failRun(i, failureFromDriver(`Gate precheck was unreadable for ${pollReadFailures} consecutive polls ` +
141
- `(last error: ${attempt.message})`, 'timeout'));
142
- return null;
143
- }
144
- pollReadFailures = 0;
145
- result = attempt.result;
146
- if (result.kind !== 'awaiting_gate') {
147
- settled = true;
148
- break;
149
- }
150
- }
151
- if (!settled && result.kind === 'awaiting_gate') {
152
- // Poll budget spent. Let the gate decide: a time-windowed watch gate
153
- // (post-release-health) PASSES, while CI/conflicts resolve to a `job_failed`
154
- // timeout the checks below funnel through `failRun`. One policy, both runtimes.
155
- result = (await step.do(`gate-exhausted-${i}`, STEP_CONFIG, () => container.executionService.resolveGatePollExhaustion(workspaceId, executionId)));
156
- }
157
- return result;
178
+ const gatePollDeps = {
179
+ ...jobPollDeps,
180
+ maxPolls: execConfig.ciMaxPolls,
181
+ pollInterval: ciPollInterval,
182
+ poll: () => container.executionService.pollGate(workspaceId, executionId),
183
+ resolveExhaustion: () => container.executionService.resolveGatePollExhaustion(workspaceId, executionId),
158
184
  };
159
185
  for (let i = 0;; i++) {
160
186
  let result;
@@ -179,7 +205,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
179
205
  // max-duration watchdogs); `jobMaxPolls` is only a backstop. `null` means the loop
180
206
  // already failed the run.
181
207
  if (result.kind === 'awaiting_job') {
182
- const polledResult = await drivePollLoop(i, result);
208
+ const polledResult = await drivePollLoop(jobPollDeps, i, result);
183
209
  if (polledResult === null)
184
210
  return;
185
211
  result = polledResult;
@@ -189,7 +215,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
189
215
  // something terminal (see `driveGatePollLoop`). One loop drives every gate kind, since
190
216
  // which gate is resolved inside `pollGate` from the current step.
191
217
  if (result.kind === 'awaiting_gate') {
192
- const gatedResult = await driveGatePollLoop(i, result);
218
+ const gatedResult = await driveGatePollLoop(gatePollDeps, i, result);
193
219
  if (gatedResult === null)
194
220
  return;
195
221
  result = gatedResult;
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"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"}