@cat-factory/worker 0.82.20 → 0.83.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 (36) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +28 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/infrastructure/container.d.ts.map +1 -1
  6. package/dist/infrastructure/container.js +52 -15
  7. package/dist/infrastructure/container.js.map +1 -1
  8. package/dist/infrastructure/env.d.ts +6 -0
  9. package/dist/infrastructure/env.d.ts.map +1 -1
  10. package/dist/infrastructure/env.js.map +1 -1
  11. package/dist/infrastructure/events/DurableObjectEventPublisher.d.ts +2 -1
  12. package/dist/infrastructure/events/DurableObjectEventPublisher.d.ts.map +1 -1
  13. package/dist/infrastructure/events/DurableObjectEventPublisher.js +3 -0
  14. package/dist/infrastructure/events/DurableObjectEventPublisher.js.map +1 -1
  15. package/dist/infrastructure/repositories/D1EnvironmentTestRunRepository.d.ts +15 -0
  16. package/dist/infrastructure/repositories/D1EnvironmentTestRunRepository.d.ts.map +1 -0
  17. package/dist/infrastructure/repositories/D1EnvironmentTestRunRepository.js +84 -0
  18. package/dist/infrastructure/repositories/D1EnvironmentTestRunRepository.js.map +1 -0
  19. package/dist/infrastructure/repositories/D1RepoProjectionRepository.d.ts +1 -0
  20. package/dist/infrastructure/repositories/D1RepoProjectionRepository.d.ts.map +1 -1
  21. package/dist/infrastructure/repositories/D1RepoProjectionRepository.js +7 -0
  22. package/dist/infrastructure/repositories/D1RepoProjectionRepository.js.map +1 -1
  23. package/dist/infrastructure/workflows/EnvironmentTestWorkflow.d.ts +19 -0
  24. package/dist/infrastructure/workflows/EnvironmentTestWorkflow.d.ts.map +1 -0
  25. package/dist/infrastructure/workflows/EnvironmentTestWorkflow.js +71 -0
  26. package/dist/infrastructure/workflows/EnvironmentTestWorkflow.js.map +1 -0
  27. package/dist/infrastructure/workflows/WorkflowsEnvironmentTestRunner.d.ts +15 -0
  28. package/dist/infrastructure/workflows/WorkflowsEnvironmentTestRunner.d.ts.map +1 -0
  29. package/dist/infrastructure/workflows/WorkflowsEnvironmentTestRunner.js +38 -0
  30. package/dist/infrastructure/workflows/WorkflowsEnvironmentTestRunner.js.map +1 -0
  31. package/dist/infrastructure/workflows/sweeper.d.ts +32 -1
  32. package/dist/infrastructure/workflows/sweeper.d.ts.map +1 -1
  33. package/dist/infrastructure/workflows/sweeper.js +28 -0
  34. package/dist/infrastructure/workflows/sweeper.js.map +1 -1
  35. package/migrations/0050_environment_test_runs.sql +30 -0
  36. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAogB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA0gB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BrainstormSession, Block, BootstrapJob, ConsensusSession, ClarityReview, DocInterviewSession, EnvConfigRepairJob, ExecutionInstance, Initiative, KaizenGrading, LlmCallActivity, Notification, RequirementReview } from '@cat-factory/contracts';
1
+ import type { BrainstormSession, Block, BootstrapJob, ConsensusSession, ClarityReview, DocInterviewSession, EnvConfigRepairJob, EnvironmentTestRun, ExecutionInstance, Initiative, KaizenGrading, LlmCallActivity, Notification, RequirementReview } from '@cat-factory/contracts';
2
2
  import type { ExecutionEventPublisher } from '@cat-factory/kernel';
3
3
  import type { DurableObjectNamespace } from '@cloudflare/workers-types';
4
4
  import type { WorkspaceEventsHub } from '../durable-objects/WorkspaceEventsHub';
@@ -16,6 +16,7 @@ export declare class DurableObjectEventPublisher implements ExecutionEventPublis
16
16
  boardChanged(workspaceId: string, reason: string, _blockId?: string | null, originConnectionId?: string | null): Promise<void>;
17
17
  bootstrapChanged(workspaceId: string, job: BootstrapJob, block?: Block | null): Promise<void>;
18
18
  envConfigRepairChanged(workspaceId: string, job: EnvConfigRepairJob): Promise<void>;
19
+ envTestChanged(workspaceId: string, run: EnvironmentTestRun): Promise<void>;
19
20
  notificationChanged(workspaceId: string, notification: Notification): Promise<void>;
20
21
  llmCallObserved(workspaceId: string, activity: LlmCallActivity): Promise<void>;
21
22
  requirementReviewChanged(workspaceId: string, review: RequirementReview): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"DurableObjectEventPublisher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E;;;;;;GAMG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,EAAI;IAEhF,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC,CAMf;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,YAAY,EACjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;IAEK,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;IAEK,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;YAEa,OAAO;CAqBtB"}
1
+ {"version":3,"file":"DurableObjectEventPublisher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,iBAAiB,EAElB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E;;;;;;GAMG;AACH,qBAAa,2BAA4B,YAAW,uBAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,EAAI;IAEhF,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,IAAI,CAAC,CAMf;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,YAAY,EACjB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;IAEK,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IAEK,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;IAEK,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;YAEa,OAAO;CAqBtB"}
@@ -36,6 +36,9 @@ export class DurableObjectEventPublisher {
36
36
  async envConfigRepairChanged(workspaceId, job) {
37
37
  await this.publish(workspaceId, { type: 'env-config-repair', job, at: Date.now() });
38
38
  }
39
+ async envTestChanged(workspaceId, run) {
40
+ await this.publish(workspaceId, { type: 'envTest', run, at: Date.now() });
41
+ }
39
42
  async notificationChanged(workspaceId, notification) {
40
43
  await this.publish(workspaceId, { type: 'notification', notification, at: Date.now() });
41
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DurableObjectEventPublisher.js","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DurableObjectEventPublisher.js","sourceRoot":"","sources":["../../../src/infrastructure/events/DurableObjectEventPublisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { EnvironmentTestRunRecord, EnvironmentTestRunRecordPatch, EnvironmentTestRunRepository } from '@cat-factory/kernel';
2
+ import type { D1Database } from '@cloudflare/workers-types';
3
+ /** D1-backed ephemeral-environment self-test runs (migration 0050). */
4
+ export declare class D1EnvironmentTestRunRepository implements EnvironmentTestRunRepository {
5
+ private readonly db;
6
+ constructor({ db }: {
7
+ db: D1Database;
8
+ });
9
+ insert(record: EnvironmentTestRunRecord): Promise<void>;
10
+ updateIfRunning(workspaceId: string, id: string, patch: EnvironmentTestRunRecordPatch): Promise<boolean>;
11
+ get(workspaceId: string, id: string): Promise<EnvironmentTestRunRecord | null>;
12
+ listRunningByWorkspace(workspaceId: string): Promise<EnvironmentTestRunRecord[]>;
13
+ listStale(cutoffMs: number, limit?: number): Promise<EnvironmentTestRunRecord[]>;
14
+ }
15
+ //# sourceMappingURL=D1EnvironmentTestRunRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1EnvironmentTestRunRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1EnvironmentTestRunRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAI7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkD3D,uEAAuE;AACvE,qBAAa,8BAA+B,YAAW,4BAA4B;IACjF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5D;IAEK,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,OAAO,CAAC,CAelB;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAMnF;IAEK,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CASrF;IAEK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CASjF;CACF"}
@@ -0,0 +1,84 @@
1
+ function rowToRecord(row) {
2
+ return {
3
+ id: row.id,
4
+ workspaceId: row.workspace_id,
5
+ blockId: row.block_id,
6
+ status: row.status,
7
+ stage: row.stage,
8
+ initiatedBy: row.initiated_by,
9
+ provisioning: JSON.parse(row.provisioning),
10
+ branch: row.branch,
11
+ environmentId: row.environment_id,
12
+ envUrl: row.env_url,
13
+ error: row.error,
14
+ failedStage: row.failed_stage ?? null,
15
+ createdAt: row.created_at,
16
+ updatedAt: row.updated_at,
17
+ };
18
+ }
19
+ /** A patch field name → its DB column. */
20
+ const PATCH_COLUMNS = {
21
+ status: 'status',
22
+ stage: 'stage',
23
+ branch: 'branch',
24
+ environmentId: 'environment_id',
25
+ envUrl: 'env_url',
26
+ error: 'error',
27
+ failedStage: 'failed_stage',
28
+ updatedAt: 'updated_at',
29
+ };
30
+ /** D1-backed ephemeral-environment self-test runs (migration 0050). */
31
+ export class D1EnvironmentTestRunRepository {
32
+ db;
33
+ constructor({ db }) {
34
+ this.db = db;
35
+ }
36
+ async insert(record) {
37
+ await this.db
38
+ .prepare(`INSERT INTO environment_test_runs
39
+ (id, workspace_id, block_id, status, stage, initiated_by, provisioning, branch,
40
+ environment_id, env_url, error, failed_stage, created_at, updated_at)
41
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
42
+ .bind(record.id, record.workspaceId, record.blockId, record.status, record.stage, record.initiatedBy, JSON.stringify(record.provisioning), record.branch, record.environmentId, record.envUrl, record.error, record.failedStage, record.createdAt, record.updatedAt)
43
+ .run();
44
+ }
45
+ async updateIfRunning(workspaceId, id, patch) {
46
+ const entries = Object.entries(patch).filter(([, value]) => value !== undefined);
47
+ if (entries.length === 0)
48
+ return false;
49
+ const setClause = entries
50
+ .map(([key]) => `${PATCH_COLUMNS[key]} = ?`)
51
+ .join(', ');
52
+ const values = entries.map(([, value]) => value);
53
+ const { meta } = await this.db
54
+ .prepare(`UPDATE environment_test_runs SET ${setClause}
55
+ WHERE workspace_id = ? AND id = ? AND status = 'running'`)
56
+ .bind(...values, workspaceId, id)
57
+ .run();
58
+ return (meta.changes ?? 0) > 0;
59
+ }
60
+ async get(workspaceId, id) {
61
+ const row = await this.db
62
+ .prepare('SELECT * FROM environment_test_runs WHERE workspace_id = ? AND id = ?')
63
+ .bind(workspaceId, id)
64
+ .first();
65
+ return row ? rowToRecord(row) : null;
66
+ }
67
+ async listRunningByWorkspace(workspaceId) {
68
+ const { results } = await this.db
69
+ .prepare(`SELECT * FROM environment_test_runs
70
+ WHERE workspace_id = ? AND status = 'running' ORDER BY created_at DESC`)
71
+ .bind(workspaceId)
72
+ .all();
73
+ return (results ?? []).map(rowToRecord);
74
+ }
75
+ async listStale(cutoffMs, limit = 50) {
76
+ const { results } = await this.db
77
+ .prepare(`SELECT * FROM environment_test_runs
78
+ WHERE status = 'running' AND updated_at < ? ORDER BY updated_at ASC LIMIT ?`)
79
+ .bind(cutoffMs, limit)
80
+ .all();
81
+ return (results ?? []).map(rowToRecord);
82
+ }
83
+ }
84
+ //# sourceMappingURL=D1EnvironmentTestRunRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1EnvironmentTestRunRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1EnvironmentTestRunRepository.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class D1RepoProjectionRepository implements RepoProjectionReposit
9
9
  upsertMany(workspaceId: string, repos: GitHubRepo[]): Promise<void>;
10
10
  list(workspaceId: string): Promise<GitHubRepo[]>;
11
11
  get(workspaceId: string, githubId: number): Promise<GitHubRepo | null>;
12
+ listByInstallation(installationId: number): Promise<GitHubRepo[]>;
12
13
  linkedWorkspaces(repoGithubId: number, candidateWorkspaceIds: string[]): Promise<string[]>;
13
14
  tombstoneMissing(workspaceId: string, installationId: number, seenGithubIds: number[], at: number): Promise<void>;
14
15
  setMonorepo(workspaceId: string, githubId: number, isMonorepo: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"D1RepoProjectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RepoProjectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,UAAU,EACV,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D,wFAAwF;AACxF,qBAAa,0BAA2B,YAAW,wBAAwB;IACzE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQrD;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ3E;IAEK,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB/F;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAAE,EACvB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAmBf;IAEK,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F;IAEK,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4BjE;IAEK,SAAS,CACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;IAEK,SAAS,CACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;CACF"}
1
+ {"version":3,"file":"D1RepoProjectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RepoProjectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,UAAU,EACV,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D,wFAAwF;AACxF,qBAAa,0BAA2B,YAAW,wBAAwB;IACzE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxE;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQrD;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ3E;IAEK,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQtE;IAEK,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB/F;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAAE,EACvB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAmBf;IAEK,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3F;IAEK,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4BjE;IAEK,SAAS,CACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ5B;IAEK,SAAS,CACb,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;CACF"}
@@ -30,6 +30,13 @@ export class D1RepoProjectionRepository {
30
30
  .first();
31
31
  return row ? rowToRepo(row) : null;
32
32
  }
33
+ async listByInstallation(installationId) {
34
+ const { results } = await this.db
35
+ .prepare('SELECT * FROM github_repos WHERE installation_id = ? AND deleted_at IS NULL ORDER BY owner, name')
36
+ .bind(installationId)
37
+ .all();
38
+ return results.map(rowToRepo);
39
+ }
33
40
  async linkedWorkspaces(repoGithubId, candidateWorkspaceIds) {
34
41
  if (candidateWorkspaceIds.length === 0)
35
42
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"D1RepoProjectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RepoProjectionRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1RepoProjectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RepoProjectionRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { WorkflowEntrypoint, type WorkflowEvent, type WorkflowStep } from 'cloudflare:workers';
2
+ import type { Env } from '../env';
3
+ /** Params passed to an EnvironmentTestWorkflow instance (its id is the self-test run id). */
4
+ export interface EnvironmentTestWorkflowParams {
5
+ workspaceId: string;
6
+ jobId: string;
7
+ }
8
+ /**
9
+ * Durable driver for one ephemeral-environment self-test run, mirroring
10
+ * EnvConfigRepairWorkflow / BootstrapWorkflow. It holds NO business logic — every stage
11
+ * transition lives in core's EnvironmentTestService. Each iteration advances the run's
12
+ * state machine by one step (poll provisioning / tear down / delete branch) inside a
13
+ * retriable, checkpointed `step.do` and sleeps durably between polls, so a long
14
+ * provisioning survives eviction while the driver stays cheap.
15
+ */
16
+ export declare class EnvironmentTestWorkflow extends WorkflowEntrypoint<Env, EnvironmentTestWorkflowParams> {
17
+ run(event: WorkflowEvent<EnvironmentTestWorkflowParams>, step: WorkflowStep): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=EnvironmentTestWorkflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentTestWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/EnvironmentTestWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAMjC,6FAA6F;AAC7F,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAQD;;;;;;;GAOG;AACH,qBAAa,uBAAwB,SAAQ,kBAAkB,CAC7D,GAAG,EACH,6BAA6B,CAC9B;IACgB,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,6BAA6B,CAAC,EACnD,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Df;CACF"}
@@ -0,0 +1,71 @@
1
+ import { WorkflowEntrypoint, } from 'cloudflare:workers';
2
+ import { buildContainer } from '../container';
3
+ import { loadConfig } from '../config';
4
+ import { logger } from '../observability/logger';
5
+ import { buildWorkflowRuntime } from './runtime';
6
+ /** Per-step retry policy: a transient poll failure retries before the run fails. */
7
+ const STEP_CONFIG = {
8
+ retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
9
+ timeout: '2 minutes',
10
+ };
11
+ /**
12
+ * Durable driver for one ephemeral-environment self-test run, mirroring
13
+ * EnvConfigRepairWorkflow / BootstrapWorkflow. It holds NO business logic — every stage
14
+ * transition lives in core's EnvironmentTestService. Each iteration advances the run's
15
+ * state machine by one step (poll provisioning / tear down / delete branch) inside a
16
+ * retriable, checkpointed `step.do` and sleeps durably between polls, so a long
17
+ * provisioning survives eviction while the driver stays cheap.
18
+ */
19
+ export class EnvironmentTestWorkflow extends WorkflowEntrypoint {
20
+ async run(event, step) {
21
+ const { workspaceId, jobId } = event.payload;
22
+ const { container, execConfig } = await buildWorkflowRuntime(() => ({ container: buildContainer(this.env), execConfig: loadConfig(this.env).execution }), step, 'env-test');
23
+ const pollInterval = execConfig.jobPollInterval;
24
+ const log = logger.child({ workspaceId, jobId, workflow: 'env-test' });
25
+ // Consecutive failures to READ/advance the run — treated as transient. See
26
+ // BootstrapWorkflow (F2): returning on a transient throw would make the instance terminal
27
+ // and get the still-`running` run finalized as STOPPED by the env-test sweep
28
+ // (`sweepStuckEnvTests`, cron) instead of resumed.
29
+ let pollReadFailures = 0;
30
+ for (let p = 0; p < execConfig.jobMaxPolls; p++) {
31
+ await step.sleep(`poll-wait-${p}`, pollInterval);
32
+ let result;
33
+ try {
34
+ result = (await step.do(`poll-${p}`, STEP_CONFIG, async () => {
35
+ const service = container.environments?.environmentTest;
36
+ if (!service) {
37
+ throw new Error('Environment test module is not configured');
38
+ }
39
+ return service.pollEnvTest(workspaceId, jobId);
40
+ }));
41
+ }
42
+ catch (error) {
43
+ pollReadFailures += 1;
44
+ log.warn({ err: error instanceof Error ? error.message : String(error), pollReadFailures }, 'env-test poll could not advance the run; treating as still running and retrying');
45
+ continue;
46
+ }
47
+ pollReadFailures = 0;
48
+ if (result.state === 'done') {
49
+ log.info('env-test run succeeded');
50
+ return;
51
+ }
52
+ if (result.state === 'failed') {
53
+ log.warn({ error: result.error }, 'env-test run failed');
54
+ return;
55
+ }
56
+ // still running — loop and advance again after the next durable sleep.
57
+ }
58
+ // Poll budget exhausted: finalize the run HERE (best-effort cleanup + failed) rather
59
+ // than leaving it `running` — this instance is about to end and can never be
60
+ // re-created under the same id. The cron env-test sweep is only the backstop for an
61
+ // instance that dies before reaching this step.
62
+ log.warn('env-test run did not finish within its polling budget; finalizing as failed');
63
+ await step.do('finalize-budget-exhausted', STEP_CONFIG, async () => {
64
+ const service = container.environments?.environmentTest;
65
+ if (!service)
66
+ return;
67
+ await service.expire(workspaceId, jobId, 'The environment test did not finish within its polling budget.');
68
+ });
69
+ }
70
+ }
71
+ //# sourceMappingURL=EnvironmentTestWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentTestWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/EnvironmentTestWorkflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { EnvironmentTestRunner } from '@cat-factory/kernel';
2
+ import type { Workflow } from '@cloudflare/workers-types';
3
+ /**
4
+ * Drives ephemeral-environment self-test runs durably via Cloudflare Workflows,
5
+ * mirroring WorkflowsEnvConfigRepairRunner. Each run maps to one Workflows instance
6
+ * whose id is the run id, which makes `startRun` idempotent (a duplicate start, or a
7
+ * sweeper re-drive racing a live instance, is tolerated).
8
+ */
9
+ export declare class WorkflowsEnvironmentTestRunner implements EnvironmentTestRunner {
10
+ private readonly workflow;
11
+ constructor(workflow: Workflow);
12
+ startRun(workspaceId: string, id: string): Promise<void>;
13
+ cancelRun(_workspaceId: string, id: string): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=WorkflowsEnvironmentTestRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowsEnvironmentTestRunner.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/WorkflowsEnvironmentTestRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAIzD;;;;;GAKG;AACH,qBAAa,8BAA+B,YAAW,qBAAqB;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,QAAQ,EAAI;IAE7C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7D;IAEK,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/D;CACF"}
@@ -0,0 +1,38 @@
1
+ import { logger } from '../observability/logger';
2
+ /**
3
+ * Drives ephemeral-environment self-test runs durably via Cloudflare Workflows,
4
+ * mirroring WorkflowsEnvConfigRepairRunner. Each run maps to one Workflows instance
5
+ * whose id is the run id, which makes `startRun` idempotent (a duplicate start, or a
6
+ * sweeper re-drive racing a live instance, is tolerated).
7
+ */
8
+ export class WorkflowsEnvironmentTestRunner {
9
+ workflow;
10
+ constructor(workflow) {
11
+ this.workflow = workflow;
12
+ }
13
+ async startRun(workspaceId, id) {
14
+ try {
15
+ await this.workflow.create({
16
+ id,
17
+ params: { workspaceId, jobId: id },
18
+ });
19
+ }
20
+ catch (error) {
21
+ // Usually an instance with this id already exists (a duplicate start or a sweeper
22
+ // re-drive racing a live instance) — the existing instance is authoritative. Log it
23
+ // regardless: a GENUINE create failure (rate limit, outage) strands the run until
24
+ // the cron env-test sweep re-drives it, and this line is the only trace of why.
25
+ logger.warn({ workspaceId, runId: id, err: error instanceof Error ? error.message : String(error) }, 'env-test workflow create was rejected; relying on the existing instance or the sweeper');
26
+ }
27
+ }
28
+ async cancelRun(_workspaceId, id) {
29
+ try {
30
+ const instance = await this.workflow.get(id);
31
+ await instance.terminate();
32
+ }
33
+ catch {
34
+ // No live instance to terminate (already finished/terminated). Nothing to do.
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=WorkflowsEnvironmentTestRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowsEnvironmentTestRunner.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/WorkflowsEnvironmentTestRunner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,OAAO,8BAA8B;IACZ,QAAQ;IAArC,YAA6B,QAAkB;wBAAlB,QAAQ;IAAa,CAAC;IAEnD,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,EAAU;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,EAAE;gBACF,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAA0C;aAC3E,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kFAAkF;YAClF,oFAAoF;YACpF,kFAAkF;YAClF,gFAAgF;YAChF,MAAM,CAAC,IAAI,CACT,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACvF,wFAAwF,CACzF,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,YAAoB,EAAE,EAAU;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5C,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,8EAA8E;QAChF,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { AgentRunRef, AgentRunRepository, Clock } from '@cat-factory/kernel';
1
+ import type { AgentRunRef, AgentRunRepository, Clock, EnvironmentTestRunRecord } from '@cat-factory/kernel';
2
2
  import type { Workflow } from '@cloudflare/workers-types';
3
3
  /**
4
4
  * A run's durable instance, as the sweeper needs to classify it:
@@ -76,5 +76,36 @@ export interface SweepResult {
76
76
  * Pure orchestration over its ports so it is unit-testable with fakes.
77
77
  */
78
78
  export declare function sweepStuckRuns({ agentRunRepository, instanceState, redrive, finalizeOrphan, failStalled, clock, leaseMs, hardStallMs, orphanedSince, }: SweepDeps): Promise<SweepResult>;
79
+ export interface EnvTestSweepDeps {
80
+ repository: {
81
+ listStale(cutoffMs: number): Promise<EnvironmentTestRunRecord[]>;
82
+ };
83
+ /** State of the run's EnvironmentTestWorkflow instance. */
84
+ instanceState(runId: string): Promise<InstanceState>;
85
+ /** (Re-)create the durable driver for a run whose instance is `missing`. */
86
+ redrive(workspaceId: string, runId: string): Promise<void>;
87
+ /**
88
+ * Finalize a run whose instance is `terminal` (it can't be re-created under the same
89
+ * id): best-effort cleanup + mark it failed, via `EnvironmentTestService.expire`.
90
+ */
91
+ finalizeOrphan(workspaceId: string, runId: string): Promise<void>;
92
+ clock: Clock;
93
+ /** A run is considered stuck if its record hasn't been touched in this many ms. */
94
+ leaseMs: number;
95
+ }
96
+ /**
97
+ * The env-test sibling of {@link sweepStuckRuns}: self-test runs live in their own
98
+ * `environment_test_runs` table (not `agent_runs`), so the unified run sweep never sees
99
+ * them — without this, a run whose Workflows instance was lost (eviction, a silently
100
+ * failed `create`) or ended without settling it (poll budget exhausted before the
101
+ * self-finalize landed, a terminal instance error) would show `running` forever. Note a
102
+ * long provisioning legitimately leaves `updatedAt` untouched between stage transitions,
103
+ * so a stale lease alone proves nothing — the instance lookup disambiguates (`alive` →
104
+ * leave it; a re-drive of an alive instance would be a no-op anyway).
105
+ */
106
+ export declare function sweepStuckEnvTests({ repository, instanceState, redrive, finalizeOrphan, clock, leaseMs, }: EnvTestSweepDeps): Promise<{
107
+ redriven: number;
108
+ finalized: number;
109
+ }>;
79
110
  export {};
80
111
  //# sourceMappingURL=sweeper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sweeper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/sweeper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5D,+DAA+D;AAC/D,UAAU,cAAc;IACtB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CACrD;AAED,0DAA0D;AAC1D,qBAAa,eAAgB,YAAW,cAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,QAAQ,EAAI;IAE7C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBzD;CACF;AAED,MAAM,WAAW,SAAS;IACxB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,gEAAgE;IAChE,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACvD,4EAA4E;IAC5E,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,EACnC,kBAAkB,EAClB,aAAa,EACb,OAAO,EACP,cAAc,EACd,WAAW,EACX,KAAK,EACL,OAAO,EACP,WAAW,EACX,aAAyC,GAC1C,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDlC"}
1
+ {"version":3,"file":"sweeper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/sweeper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAA;AAE5D,+DAA+D;AAC/D,UAAU,cAAc;IACtB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CACrD;AAED,0DAA0D;AAC1D,qBAAa,eAAgB,YAAW,cAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,QAAQ,EAAI;IAE7C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBzD;CACF;AAED,MAAM,WAAW,SAAS;IACxB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,gEAAgE;IAChE,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACvD,4EAA4E;IAC5E,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,EACnC,kBAAkB,EAClB,aAAa,EACb,OAAO,EACP,cAAc,EACd,WAAW,EACX,KAAK,EACL,OAAO,EACP,WAAW,EACX,aAAyC,GAC1C,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDlC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA;KAAE,CAAA;IAChF,2DAA2D;IAC3D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACpD,4EAA4E;IAC5E,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,KAAK,EAAE,KAAK,CAAA;IACZ,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,UAAU,EACV,aAAa,EACb,OAAO,EACP,cAAc,EACd,KAAK,EACL,OAAO,GACR,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBrE"}
@@ -91,4 +91,32 @@ export async function sweepStuckRuns({ agentRunRepository, instanceState, redriv
91
91
  }
92
92
  return { redriven, finalized, stalled };
93
93
  }
94
+ /**
95
+ * The env-test sibling of {@link sweepStuckRuns}: self-test runs live in their own
96
+ * `environment_test_runs` table (not `agent_runs`), so the unified run sweep never sees
97
+ * them — without this, a run whose Workflows instance was lost (eviction, a silently
98
+ * failed `create`) or ended without settling it (poll budget exhausted before the
99
+ * self-finalize landed, a terminal instance error) would show `running` forever. Note a
100
+ * long provisioning legitimately leaves `updatedAt` untouched between stage transitions,
101
+ * so a stale lease alone proves nothing — the instance lookup disambiguates (`alive` →
102
+ * leave it; a re-drive of an alive instance would be a no-op anyway).
103
+ */
104
+ export async function sweepStuckEnvTests({ repository, instanceState, redrive, finalizeOrphan, clock, leaseMs, }) {
105
+ const stale = await repository.listStale(clock.now() - leaseMs);
106
+ let redriven = 0;
107
+ let finalized = 0;
108
+ for (const run of stale) {
109
+ const state = await instanceState(run.id);
110
+ if (state === 'alive')
111
+ continue;
112
+ if (state === 'terminal') {
113
+ await finalizeOrphan(run.workspaceId, run.id);
114
+ finalized++;
115
+ continue;
116
+ }
117
+ await redrive(run.workspaceId, run.id);
118
+ redriven++;
119
+ }
120
+ return { redriven, finalized };
121
+ }
94
122
  //# sourceMappingURL=sweeper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sweeper.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/sweeper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sweeper.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/sweeper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ -- Ephemeral-environment self-test runs: a developer-triggered diagnostic that exercises a
2
+ -- service frame's provisioning config end to end against a throwaway branch (create branch →
3
+ -- provision → tear down → delete branch) and reports success or the stage it failed at. It has
4
+ -- its own table (not `agent_runs`) because it carries a `stage` state machine and is not a
5
+ -- container agent. Mirrored on Node by the Drizzle `environmentTestRuns` table.
6
+ CREATE TABLE IF NOT EXISTS environment_test_runs (
7
+ id TEXT PRIMARY KEY,
8
+ workspace_id TEXT NOT NULL,
9
+ block_id TEXT NOT NULL,
10
+ status TEXT NOT NULL,
11
+ stage TEXT NOT NULL,
12
+ initiated_by TEXT,
13
+ -- The frame's provisioning config, pinned at dispatch (JSON) — see the kernel port.
14
+ provisioning TEXT NOT NULL,
15
+ branch TEXT,
16
+ environment_id TEXT,
17
+ env_url TEXT,
18
+ error TEXT,
19
+ failed_stage TEXT,
20
+ created_at INTEGER NOT NULL,
21
+ updated_at INTEGER NOT NULL
22
+ );
23
+
24
+ -- The snapshot loads a workspace's in-flight runs; the driver/sweeper reads running runs.
25
+ CREATE INDEX IF NOT EXISTS idx_environment_test_runs_ws_status
26
+ ON environment_test_runs (workspace_id, status);
27
+
28
+ -- The cross-workspace stale-run sweep (`listStale`) scans running runs by lease age.
29
+ CREATE INDEX IF NOT EXISTS idx_environment_test_runs_status_updated
30
+ ON environment_test_runs (status, updated_at);