@cat-factory/worker 0.174.1 → 0.176.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 (70) hide show
  1. package/dist/infrastructure/config/execution.d.ts +1 -1
  2. package/dist/infrastructure/config/execution.d.ts.map +1 -1
  3. package/dist/infrastructure/config/execution.js +12 -3
  4. package/dist/infrastructure/config/execution.js.map +1 -1
  5. package/dist/infrastructure/config/gitlab.d.ts +10 -5
  6. package/dist/infrastructure/config/gitlab.d.ts.map +1 -1
  7. package/dist/infrastructure/config/gitlab.js +10 -7
  8. package/dist/infrastructure/config/gitlab.js.map +1 -1
  9. package/dist/infrastructure/container-assembly.d.ts.map +1 -1
  10. package/dist/infrastructure/container-assembly.js +5 -1
  11. package/dist/infrastructure/container-assembly.js.map +1 -1
  12. package/dist/infrastructure/container-documents-deps.d.ts.map +1 -1
  13. package/dist/infrastructure/container-documents-deps.js +9 -6
  14. package/dist/infrastructure/container-documents-deps.js.map +1 -1
  15. package/dist/infrastructure/container-tracker-deps.d.ts.map +1 -1
  16. package/dist/infrastructure/container-tracker-deps.js +7 -7
  17. package/dist/infrastructure/container-tracker-deps.js.map +1 -1
  18. package/dist/infrastructure/container.js +3 -3
  19. package/dist/infrastructure/container.js.map +1 -1
  20. package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts +15 -1
  21. package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts.map +1 -1
  22. package/dist/infrastructure/containers/CloudflareContainerTransport.js +55 -16
  23. package/dist/infrastructure/containers/CloudflareContainerTransport.js.map +1 -1
  24. package/dist/infrastructure/containers/DeployContainer.d.ts +2 -20
  25. package/dist/infrastructure/containers/DeployContainer.d.ts.map +1 -1
  26. package/dist/infrastructure/containers/DeployContainer.js +7 -56
  27. package/dist/infrastructure/containers/DeployContainer.js.map +1 -1
  28. package/dist/infrastructure/containers/ExecutionContainer.d.ts +2 -51
  29. package/dist/infrastructure/containers/ExecutionContainer.d.ts.map +1 -1
  30. package/dist/infrastructure/containers/ExecutionContainer.js +9 -93
  31. package/dist/infrastructure/containers/ExecutionContainer.js.map +1 -1
  32. package/dist/infrastructure/containers/RunContainer.d.ts +98 -0
  33. package/dist/infrastructure/containers/RunContainer.d.ts.map +1 -0
  34. package/dist/infrastructure/containers/RunContainer.js +164 -0
  35. package/dist/infrastructure/containers/RunContainer.js.map +1 -0
  36. package/dist/infrastructure/containers/stopCause.d.ts +105 -0
  37. package/dist/infrastructure/containers/stopCause.d.ts.map +1 -0
  38. package/dist/infrastructure/containers/stopCause.js +108 -0
  39. package/dist/infrastructure/containers/stopCause.js.map +1 -0
  40. package/dist/infrastructure/env.d.ts +10 -0
  41. package/dist/infrastructure/env.d.ts.map +1 -1
  42. package/dist/infrastructure/env.js.map +1 -1
  43. package/dist/infrastructure/github-deps.js +1 -1
  44. package/dist/infrastructure/github-deps.js.map +1 -1
  45. package/dist/infrastructure/repositories/D1BinaryArtifactMetadataStore.d.ts +3 -1
  46. package/dist/infrastructure/repositories/D1BinaryArtifactMetadataStore.d.ts.map +1 -1
  47. package/dist/infrastructure/repositories/D1BinaryArtifactMetadataStore.js +38 -5
  48. package/dist/infrastructure/repositories/D1BinaryArtifactMetadataStore.js.map +1 -1
  49. package/dist/infrastructure/repositories/D1DocumentConnectionRepository.d.ts +11 -14
  50. package/dist/infrastructure/repositories/D1DocumentConnectionRepository.d.ts.map +1 -1
  51. package/dist/infrastructure/repositories/D1DocumentConnectionRepository.js +11 -38
  52. package/dist/infrastructure/repositories/D1DocumentConnectionRepository.js.map +1 -1
  53. package/dist/infrastructure/repositories/D1DocumentRepository.d.ts.map +1 -1
  54. package/dist/infrastructure/repositories/D1DocumentRepository.js +5 -3
  55. package/dist/infrastructure/repositories/D1DocumentRepository.js.map +1 -1
  56. package/dist/infrastructure/repositories/D1TaskConnectionRepository.d.ts +8 -14
  57. package/dist/infrastructure/repositories/D1TaskConnectionRepository.d.ts.map +1 -1
  58. package/dist/infrastructure/repositories/D1TaskConnectionRepository.js +8 -38
  59. package/dist/infrastructure/repositories/D1TaskConnectionRepository.js.map +1 -1
  60. package/dist/infrastructure/tasks-deps.d.ts.map +1 -1
  61. package/dist/infrastructure/tasks-deps.js +10 -7
  62. package/dist/infrastructure/tasks-deps.js.map +1 -1
  63. package/dist/infrastructure/vcsConnect.d.ts.map +1 -1
  64. package/dist/infrastructure/vcsConnect.js +5 -2
  65. package/dist/infrastructure/vcsConnect.js.map +1 -1
  66. package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts.map +1 -1
  67. package/dist/infrastructure/workflows/ExecutionWorkflow.js +17 -8
  68. package/dist/infrastructure/workflows/ExecutionWorkflow.js.map +1 -1
  69. package/migrations/0087_document_renders.sql +28 -0
  70. package/package.json +18 -18
@@ -1,27 +1,24 @@
1
- import type { DocumentConnectionRecord, DocumentConnectionRepository, DocumentSourceKind, SecretCipher } from '@cat-factory/kernel';
1
+ import type { DocumentConnectionRepository, DocumentSourceKind, SealedDocumentConnectionRecord } from '@cat-factory/kernel';
2
2
  import type { D1Database } from '@cloudflare/workers-types';
3
3
  /**
4
4
  * D1-backed store of workspace → document-source connections (migration 0012).
5
5
  *
6
- * Source credentials (e.g. a Notion/Confluence API token) are third-party
7
- * secrets, so they are encrypted at rest with the same AES-256-GCM envelope the
8
- * environments integration uses — never written to D1 in plaintext. A row whose
9
- * `credentials` column predates encryption (no `v1.` envelope) is still read as
10
- * legacy plaintext JSON, then re-encrypted on the next write.
6
+ * Source credentials are third-party secrets and cross this repository as the AES-256-GCM
7
+ * ENVELOPE they are stored as: the seal is the row's value, not an encoding this class hides.
8
+ * Opening it belongs to `createDocumentConnectionStore` (`@cat-factory/integrations`), which is
9
+ * what lets a deployment holding no key for these rows — a mothership-mode node — still read them
10
+ * (it names the row over `/internal/secrets/unseal`). A repository that decrypted could only be
11
+ * called by a key-holder, which is precisely what kept this integration off the persistence RPC.
11
12
  */
12
13
  export declare class D1DocumentConnectionRepository implements DocumentConnectionRepository {
13
14
  private readonly db;
14
- private readonly cipher;
15
- constructor({ db, cipher }: {
15
+ constructor({ db }: {
16
16
  db: D1Database;
17
- cipher: SecretCipher;
18
17
  });
19
- /** Decode the stored credential blob, decrypting the envelope when present. */
20
- private decodeCredentials;
21
18
  private rowToRecord;
22
- getByWorkspace(workspaceId: string, source: DocumentSourceKind): Promise<DocumentConnectionRecord | null>;
23
- listByWorkspace(workspaceId: string): Promise<DocumentConnectionRecord[]>;
24
- upsert(record: DocumentConnectionRecord): Promise<void>;
19
+ getByWorkspace(workspaceId: string, source: DocumentSourceKind): Promise<SealedDocumentConnectionRecord | null>;
20
+ listByWorkspace(workspaceId: string): Promise<SealedDocumentConnectionRecord[]>;
21
+ upsert(record: SealedDocumentConnectionRecord): Promise<void>;
25
22
  softDelete(workspaceId: string, source: DocumentSourceKind, at: number): Promise<void>;
26
23
  }
27
24
  //# sourceMappingURL=D1DocumentConnectionRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1DocumentConnectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentConnectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,YAAY,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAqB3D;;;;;;;;GAQG;AACH,qBAAa,8BAA+B,YAAW,4BAA4B;IACjF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,EAGnE;IAED,+EAA+E;YACjE,iBAAiB;YAYjB,WAAW;IAWnB,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAQ1C;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAQ9E;IAEK,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB5D;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;CACF"}
1
+ {"version":3,"file":"D1DocumentConnectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentConnectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,kBAAkB,EAClB,8BAA8B,EAC/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D;;;;;;;;;GASG;AACH,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;IAED,OAAO,CAAC,WAAW;IAWb,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAQhD;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAQpF;IAEK,MAAM,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlE;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F;CACF"}
@@ -1,49 +1,23 @@
1
- function parseCredentials(json) {
2
- try {
3
- const parsed = JSON.parse(json);
4
- if (parsed && typeof parsed === 'object')
5
- return parsed;
6
- }
7
- catch {
8
- // A malformed bag is treated as empty; the import path then fails closed.
9
- }
10
- return {};
11
- }
12
1
  /**
13
2
  * D1-backed store of workspace → document-source connections (migration 0012).
14
3
  *
15
- * Source credentials (e.g. a Notion/Confluence API token) are third-party
16
- * secrets, so they are encrypted at rest with the same AES-256-GCM envelope the
17
- * environments integration uses — never written to D1 in plaintext. A row whose
18
- * `credentials` column predates encryption (no `v1.` envelope) is still read as
19
- * legacy plaintext JSON, then re-encrypted on the next write.
4
+ * Source credentials are third-party secrets and cross this repository as the AES-256-GCM
5
+ * ENVELOPE they are stored as: the seal is the row's value, not an encoding this class hides.
6
+ * Opening it belongs to `createDocumentConnectionStore` (`@cat-factory/integrations`), which is
7
+ * what lets a deployment holding no key for these rows — a mothership-mode node — still read them
8
+ * (it names the row over `/internal/secrets/unseal`). A repository that decrypted could only be
9
+ * called by a key-holder, which is precisely what kept this integration off the persistence RPC.
20
10
  */
21
11
  export class D1DocumentConnectionRepository {
22
12
  db;
23
- cipher;
24
- constructor({ db, cipher }) {
13
+ constructor({ db }) {
25
14
  this.db = db;
26
- this.cipher = cipher;
27
- }
28
- /** Decode the stored credential blob, decrypting the envelope when present. */
29
- async decodeCredentials(stored) {
30
- // Legacy plaintext rows (written before encryption) lack the envelope tag.
31
- if (!stored.startsWith('v1.'))
32
- return parseCredentials(stored);
33
- try {
34
- return parseCredentials(await this.cipher.decrypt(stored));
35
- }
36
- catch {
37
- // Wrong key / corrupt envelope: fail closed with an empty bag so the
38
- // import path errors rather than leaking a decrypt exception.
39
- return {};
40
- }
41
15
  }
42
- async rowToRecord(row) {
16
+ rowToRecord(row) {
43
17
  return {
44
18
  workspaceId: row.workspace_id,
45
19
  source: row.source,
46
- credentials: await this.decodeCredentials(row.credentials),
20
+ credentialsCipher: row.credentials,
47
21
  label: row.label,
48
22
  createdAt: row.created_at,
49
23
  deletedAt: row.deleted_at,
@@ -61,7 +35,7 @@ export class D1DocumentConnectionRepository {
61
35
  .prepare('SELECT * FROM document_connections WHERE workspace_id = ? AND deleted_at IS NULL ORDER BY created_at DESC')
62
36
  .bind(workspaceId)
63
37
  .all();
64
- return Promise.all(results.map((row) => this.rowToRecord(row)));
38
+ return results.map((row) => this.rowToRecord(row));
65
39
  }
66
40
  async upsert(record) {
67
41
  // A workspace has a single live connection per source: clear any prior
@@ -71,12 +45,11 @@ export class D1DocumentConnectionRepository {
71
45
  .prepare('DELETE FROM document_connections WHERE workspace_id = ? AND source = ?')
72
46
  .bind(record.workspaceId, record.source)
73
47
  .run();
74
- const credentials = await this.cipher.encrypt(JSON.stringify(record.credentials));
75
48
  await this.db
76
49
  .prepare(`INSERT INTO document_connections
77
50
  (workspace_id, source, credentials, label, created_at, deleted_at)
78
51
  VALUES (?, ?, ?, ?, ?, NULL)`)
79
- .bind(record.workspaceId, record.source, credentials, record.label, record.createdAt)
52
+ .bind(record.workspaceId, record.source, record.credentialsCipher, record.label, record.createdAt)
80
53
  .run();
81
54
  }
82
55
  async softDelete(workspaceId, source, at) {
@@ -1 +1 @@
1
- {"version":3,"file":"D1DocumentConnectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentConnectionRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1DocumentConnectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentConnectionRepository.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,MAAM,OAAO,8BAA8B;IACxB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAEO,WAAW,CAAC,GAA0B;QAC5C,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,MAAM,EAAE,GAAG,CAAC,MAA4B;YACxC,iBAAiB,EAAE,GAAG,CAAC,WAAW;YAClC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,MAA0B;QAE1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,iGAAiG,CAClG;aACA,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;aACzB,KAAK,EAAyB,CAAA;QACjC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,2GAA2G,CAC5G;aACA,IAAI,CAAC,WAAW,CAAC;aACjB,GAAG,EAAyB,CAAA;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAsC;QACjD,uEAAuE;QACvE,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,wEAAwE,CAAC;aACjF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;aACvC,GAAG,EAAE,CAAA;QACR,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;sCAE8B,CAC/B;aACA,IAAI,CACH,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,MAA0B,EAAE,EAAU;QAC1E,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,6GAA6G,CAC9G;aACA,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC;aAC7B,GAAG,EAAE,CAAA;IACV,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"D1DocumentRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAqD3D,yFAAyF;AACzF,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,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,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClD;IAEK,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkB7F;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQpE;IAEK,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQjF;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAa/E;IAEK,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF;IAEK,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAqBf;IAEK,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;IAEK,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ3B;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ7E;IAEK,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9F;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;CACF"}
1
+ {"version":3,"file":"D1DocumentRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,WAAW,EAEX,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAuD3D,yFAAyF;AACzF,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,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,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkClD;IAEK,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkB7F;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQpE;IAEK,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQjF;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAa/E;IAEK,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF;IAEK,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,IAAI,CAAC,CAqBf;IAEK,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;IAEK,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ3B;IAEK,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ7E;IAEK,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;IAEK,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9F;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;CACF"}
@@ -27,6 +27,7 @@ function rowToRecord(row) {
27
27
  body: row.body,
28
28
  contentHash: row.content_hash ?? '',
29
29
  sourceVersion: row.source_version,
30
+ renderStatus: row.render_status ?? null,
30
31
  linkedBlockId: row.linked_block_id,
31
32
  role: row.role ?? null,
32
33
  docKind: row.doc_kind ?? null,
@@ -44,8 +45,8 @@ export class D1DocumentRepository {
44
45
  await this.db
45
46
  .prepare(`INSERT INTO documents
46
47
  (workspace_id, source, external_id, title, url, excerpt, body,
47
- content_hash, source_version, linked_block_id, synced_at, deleted_at)
48
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL)
48
+ content_hash, source_version, render_status, linked_block_id, synced_at, deleted_at)
49
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL)
49
50
  ON CONFLICT (workspace_id, source, external_id) DO UPDATE SET
50
51
  title = excluded.title,
51
52
  url = excluded.url,
@@ -53,10 +54,11 @@ export class D1DocumentRepository {
53
54
  body = excluded.body,
54
55
  content_hash = excluded.content_hash,
55
56
  source_version = excluded.source_version,
57
+ render_status = excluded.render_status,
56
58
  linked_block_id = excluded.linked_block_id,
57
59
  synced_at = excluded.synced_at,
58
60
  deleted_at = NULL`)
59
- .bind(record.workspaceId, record.source, record.externalId, record.title, record.url, record.excerpt, record.body, record.contentHash, record.sourceVersion, record.linkedBlockId, record.syncedAt)
61
+ .bind(record.workspaceId, record.source, record.externalId, record.title, record.url, record.excerpt, record.body, record.contentHash, record.sourceVersion, record.renderStatus, record.linkedBlockId, record.syncedAt)
60
62
  .run();
61
63
  }
62
64
  async get(workspaceId, source, externalId) {
@@ -1 +1 @@
1
- {"version":3,"file":"D1DocumentRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1DocumentRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1DocumentRepository.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,21 @@
1
- import type { TaskConnectionRecord, TaskConnectionRepository, TaskSourceKind, SecretCipher } from '@cat-factory/kernel';
1
+ import type { SealedTaskConnectionRecord, TaskConnectionRepository, TaskSourceKind } from '@cat-factory/kernel';
2
2
  import type { D1Database } from '@cloudflare/workers-types';
3
3
  /**
4
4
  * D1-backed store of workspace → task-source connections (migration 0014).
5
5
  *
6
- * Source credentials (e.g. a Jira API token) are third-party secrets, so they
7
- * are encrypted at rest with the same AES-256-GCM envelope the documents /
8
- * environments integrations use never written to D1 in plaintext. A row whose
9
- * `credentials` column predates encryption (no `v1.` envelope) is still read as
10
- * legacy plaintext JSON, then re-encrypted on the next write.
6
+ * Source credentials (e.g. a Jira API token) cross this repository as the AES-256-GCM ENVELOPE
7
+ * they are stored as; opening one belongs to `createTaskConnectionStore`
8
+ * (`@cat-factory/integrations`). Same shape, and the same reason, as its document-source sibling.
11
9
  */
12
10
  export declare class D1TaskConnectionRepository implements TaskConnectionRepository {
13
11
  private readonly db;
14
- private readonly cipher;
15
- constructor({ db, cipher }: {
12
+ constructor({ db }: {
16
13
  db: D1Database;
17
- cipher: SecretCipher;
18
14
  });
19
- /** Decode the stored credential blob, decrypting the envelope when present. */
20
- private decodeCredentials;
21
15
  private rowToRecord;
22
- getByWorkspace(workspaceId: string, source: TaskSourceKind): Promise<TaskConnectionRecord | null>;
23
- listByWorkspace(workspaceId: string): Promise<TaskConnectionRecord[]>;
24
- upsert(record: TaskConnectionRecord): Promise<void>;
16
+ getByWorkspace(workspaceId: string, source: TaskSourceKind): Promise<SealedTaskConnectionRecord | null>;
17
+ listByWorkspace(workspaceId: string): Promise<SealedTaskConnectionRecord[]>;
18
+ upsert(record: SealedTaskConnectionRecord): Promise<void>;
25
19
  softDelete(workspaceId: string, source: TaskSourceKind, at: number): Promise<void>;
26
20
  }
27
21
  //# sourceMappingURL=D1TaskConnectionRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1TaskConnectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1TaskConnectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAqB3D;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,YAAW,wBAAwB;IACzE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,EAGnE;IAED,+EAA+E;YACjE,iBAAiB;YAYjB,WAAW;IAWnB,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAQtC;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAQ1E;IAEK,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxD;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF;CACF"}
1
+ {"version":3,"file":"D1TaskConnectionRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1TaskConnectionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D;;;;;;GAMG;AACH,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;IAED,OAAO,CAAC,WAAW;IAWb,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAQ5C;IAEK,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAQhF;IAEK,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9D;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF;CACF"}
@@ -1,49 +1,20 @@
1
- function parseCredentials(json) {
2
- try {
3
- const parsed = JSON.parse(json);
4
- if (parsed && typeof parsed === 'object')
5
- return parsed;
6
- }
7
- catch {
8
- // A malformed bag is treated as empty; the import path then fails closed.
9
- }
10
- return {};
11
- }
12
1
  /**
13
2
  * D1-backed store of workspace → task-source connections (migration 0014).
14
3
  *
15
- * Source credentials (e.g. a Jira API token) are third-party secrets, so they
16
- * are encrypted at rest with the same AES-256-GCM envelope the documents /
17
- * environments integrations use never written to D1 in plaintext. A row whose
18
- * `credentials` column predates encryption (no `v1.` envelope) is still read as
19
- * legacy plaintext JSON, then re-encrypted on the next write.
4
+ * Source credentials (e.g. a Jira API token) cross this repository as the AES-256-GCM ENVELOPE
5
+ * they are stored as; opening one belongs to `createTaskConnectionStore`
6
+ * (`@cat-factory/integrations`). Same shape, and the same reason, as its document-source sibling.
20
7
  */
21
8
  export class D1TaskConnectionRepository {
22
9
  db;
23
- cipher;
24
- constructor({ db, cipher }) {
10
+ constructor({ db }) {
25
11
  this.db = db;
26
- this.cipher = cipher;
27
- }
28
- /** Decode the stored credential blob, decrypting the envelope when present. */
29
- async decodeCredentials(stored) {
30
- // Legacy plaintext rows (written before encryption) lack the envelope tag.
31
- if (!stored.startsWith('v1.'))
32
- return parseCredentials(stored);
33
- try {
34
- return parseCredentials(await this.cipher.decrypt(stored));
35
- }
36
- catch {
37
- // Wrong key / corrupt envelope: fail closed with an empty bag so the
38
- // import path errors rather than leaking a decrypt exception.
39
- return {};
40
- }
41
12
  }
42
- async rowToRecord(row) {
13
+ rowToRecord(row) {
43
14
  return {
44
15
  workspaceId: row.workspace_id,
45
16
  source: row.source,
46
- credentials: await this.decodeCredentials(row.credentials),
17
+ credentialsCipher: row.credentials,
47
18
  label: row.label,
48
19
  createdAt: row.created_at,
49
20
  deletedAt: row.deleted_at,
@@ -61,7 +32,7 @@ export class D1TaskConnectionRepository {
61
32
  .prepare('SELECT * FROM task_connections WHERE workspace_id = ? AND deleted_at IS NULL ORDER BY created_at DESC')
62
33
  .bind(workspaceId)
63
34
  .all();
64
- return Promise.all(results.map((row) => this.rowToRecord(row)));
35
+ return results.map((row) => this.rowToRecord(row));
65
36
  }
66
37
  async upsert(record) {
67
38
  // A workspace has a single live connection per source: clear any prior
@@ -71,12 +42,11 @@ export class D1TaskConnectionRepository {
71
42
  .prepare('DELETE FROM task_connections WHERE workspace_id = ? AND source = ?')
72
43
  .bind(record.workspaceId, record.source)
73
44
  .run();
74
- const credentials = await this.cipher.encrypt(JSON.stringify(record.credentials));
75
45
  await this.db
76
46
  .prepare(`INSERT INTO task_connections
77
47
  (workspace_id, source, credentials, label, created_at, deleted_at)
78
48
  VALUES (?, ?, ?, ?, ?, NULL)`)
79
- .bind(record.workspaceId, record.source, credentials, record.label, record.createdAt)
49
+ .bind(record.workspaceId, record.source, record.credentialsCipher, record.label, record.createdAt)
80
50
  .run();
81
51
  }
82
52
  async softDelete(workspaceId, source, at) {
@@ -1 +1 @@
1
- {"version":3,"file":"D1TaskConnectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1TaskConnectionRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1TaskConnectionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1TaskConnectionRepository.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IACpB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAEO,WAAW,CAAC,GAAsB;QACxC,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,MAAM,EAAE,GAAG,CAAC,MAAwB;YACpC,iBAAiB,EAAE,GAAG,CAAC,WAAW;YAClC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,MAAsB;QAEtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,6FAA6F,CAC9F;aACA,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;aACzB,KAAK,EAAqB,CAAA;QAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,uGAAuG,CACxG;aACA,IAAI,CAAC,WAAW,CAAC;aACjB,GAAG,EAAqB,CAAA;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAkC;QAC7C,uEAAuE;QACvE,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,oEAAoE,CAAC;aAC7E,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;aACvC,GAAG,EAAE,CAAA;QACR,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;sCAE8B,CAC/B;aACA,IAAI,CACH,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,MAAsB,EAAE,EAAU;QACtE,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,yGAAyG,CAC1G;aACA,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC;aAC7B,GAAG,EAAE,CAAA;IACV,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-deps.d.ts","sourceRoot":"","sources":["../../src/infrastructure/tasks-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAA;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAQlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAmBhC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B"}
1
+ {"version":3,"file":"tasks-deps.d.ts","sourceRoot":"","sources":["../../src/infrastructure/tasks-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAA;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AASlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAmBhC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CA2D3B"}
@@ -1,4 +1,4 @@
1
- import { GitHubIssuesProvider, GitLabIssuesProvider, JiraProvider, LinearTaskProvider, gitlabWebBaseFromApiBase, } from '@cat-factory/integrations';
1
+ import { createTaskConnectionStore, GitHubIssuesProvider, GitLabIssuesProvider, gitlabWebBaseFromApiBase, JiraProvider, LinearTaskProvider, } from '@cat-factory/integrations';
2
2
  import { buildAppRegistry } from './container';
3
3
  import { selectWorkerVcsConnectDeps } from './vcsConnect';
4
4
  import { FetchGitHubClient } from './github/FetchGitHubClient';
@@ -52,16 +52,19 @@ export function selectTasksDeps(env, config, db, clock, idGenerator) {
52
52
  providers.push(new GitLabIssuesProvider({
53
53
  gitlabClient: gitlabConnect.client,
54
54
  installations,
55
- webBaseUrl: gitlabWebBaseFromApiBase(config.gitlab?.apiBase),
55
+ webBaseUrl: gitlabWebBaseFromApiBase(config.gitlab.apiBase),
56
56
  }));
57
57
  }
58
+ const taskConnectionRepository = new D1TaskConnectionRepository({ db });
58
59
  return {
59
60
  taskSourceProviders: providers,
60
- taskConnectionRepository: new D1TaskConnectionRepository({
61
- db,
62
- // The config gate guarantees the key is present when enabled; source
63
- // credentials are encrypted at rest under a tasks-scoped HKDF info.
64
- cipher: new WebCryptoSecretCipher({
61
+ taskConnectionRepository,
62
+ taskConnectionStore: createTaskConnectionStore({
63
+ taskConnectionRepository,
64
+ // The config gate guarantees the key is present when enabled; source credentials are sealed
65
+ // at rest under a tasks-scoped HKDF info. No delegate: a Cloudflare deployment holds its own
66
+ // key (it is the mothership others delegate TO).
67
+ secretCipher: new WebCryptoSecretCipher({
65
68
  masterKeyBase64: config.tasks.encryptionKey,
66
69
  info: 'cat-factory:tasks',
67
70
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-deps.js","sourceRoot":"","sources":["../../src/infrastructure/tasks-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks-deps.js","sourceRoot":"","sources":["../../src/infrastructure/tasks-deps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vcsConnect.d.ts","sourceRoot":"","sources":["../../src/infrastructure/vcsConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAInE;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,4BAA4B,EAC3C,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,GACX;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,GAAG,SAAS,CAwBxE"}
1
+ {"version":3,"file":"vcsConnect.d.ts","sourceRoot":"","sources":["../../src/infrastructure/vcsConnect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAInE;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,4BAA4B,EAC3C,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,GACX;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,GAAG,SAAS,CA2BxE"}
@@ -1,4 +1,4 @@
1
- import { logger } from '@cat-factory/server';
1
+ import { logger, resolveVcsWebUrls } from '@cat-factory/server';
2
2
  import { buildGitLabConnectClient, GitLabIdentityResolver } from '@cat-factory/gitlab';
3
3
  import { VcsPatConnectionService } from '@cat-factory/integrations';
4
4
  import { WebCryptoSecretCipher } from './environments/WebCryptoSecretCipher';
@@ -13,7 +13,7 @@ import { D1WorkspaceRepository } from './repositories/D1WorkspaceRepository';
13
13
  */
14
14
  export function selectWorkerVcsConnectDeps(config, installations, db, clock) {
15
15
  const gitlab = config.gitlab;
16
- if (!gitlab?.enabled || !gitlab.encryptionKey)
16
+ if (!gitlab.enabled || !gitlab.encryptionKey)
17
17
  return undefined;
18
18
  // One cipher seals (connect) and unseals (token source) under the same domain.
19
19
  const cipher = new WebCryptoSecretCipher({
@@ -34,6 +34,9 @@ export function selectWorkerVcsConnectDeps(config, installations, db, clock) {
34
34
  identityResolver: new GitLabIdentityResolver({ apiBase: gitlab.apiBase }),
35
35
  cipher,
36
36
  clock,
37
+ // Where this connection's projects can be opened in a browser, from the SAME resolver the
38
+ // App connect path and the connect-capability route read.
39
+ webUrls: resolveVcsWebUrls(config),
37
40
  });
38
41
  return { client, service };
39
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vcsConnect.js","sourceRoot":"","sources":["../../src/infrastructure/vcsConnect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,aAA2C,EAC3C,EAAc,EACd,KAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,SAAS,CAAA;IAC/D,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,eAAe,EAAE,MAAM,CAAC,aAAa;QACrC,IAAI,EAAE,uBAAuB;KAC9B,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,aAAa;QACb,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK;QACL,MAAM;KACP,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC;QAC1C,QAAQ,EAAE,QAAQ;QAClB,aAAa;QACb,mBAAmB,EAAE,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;QACtD,gBAAgB,EAAE,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACzE,MAAM;QACN,KAAK;KACN,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"vcsConnect.js","sourceRoot":"","sources":["../../src/infrastructure/vcsConnect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,aAA2C,EAC3C,EAAc,EACd,KAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,SAAS,CAAA;IAC9D,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,eAAe,EAAE,MAAM,CAAC,aAAa;QACrC,IAAI,EAAE,uBAAuB;KAC9B,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,aAAa;QACb,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK;QACL,MAAM;KACP,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC;QAC1C,QAAQ,EAAE,QAAQ;QAClB,aAAa;QACb,mBAAmB,EAAE,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;QACtD,gBAAgB,EAAE,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACzE,MAAM;QACN,KAAK;QACL,0FAA0F;QAC1F,0DAA0D;QAC1D,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC;KACnC,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC"}
@@ -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;AAMjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAoJpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IAC5E,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F;YAEa,KAAK;CAyMpB"}
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;AAMjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AA6JpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IAC5E,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F;YAEa,KAAK;CA2MpB"}
@@ -6,11 +6,18 @@ import { loadConfig } from '../config';
6
6
  import { logger } from '../observability/logger';
7
7
  import { withWorkflowLogExport } from './logExport';
8
8
  import { buildWorkflowRuntime } from './runtime';
9
- /** Per-step retry policy: failures retry a few times before the run is failed. */
10
- const STEP_CONFIG = {
11
- retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
12
- timeout: '5 minutes',
13
- };
9
+ /**
10
+ * Per-step retry policy: failures retry a few times before the run is failed. The timeout is the
11
+ * engine's hang bound on one advance (`ExecutionConfig.advanceTimeout`) rather than a constant,
12
+ * because Node races the SAME value in `driveExecution`: one knob, so the two facades cannot
13
+ * drift apart on how long a wedged advance is waited out (stuck-run audit F9).
14
+ */
15
+ function buildStepConfig(timeout) {
16
+ return {
17
+ retries: { limit: 3, delay: '5 seconds', backoff: 'exponential' },
18
+ timeout: timeout,
19
+ };
20
+ }
14
21
  /**
15
22
  * Poll a dispatched async job (a container coding step) for step `i` between durable
16
23
  * sleeps until it finishes. A thrown poll error is always transient, so tolerate a
@@ -97,7 +104,7 @@ async function driveGatePollLoop(deps, i, initial) {
97
104
  // Poll budget spent. Let the gate decide: a time-windowed watch gate
98
105
  // (post-release-health) PASSES, while CI/conflicts resolve to a `job_failed`
99
106
  // timeout the checks below funnel through `failRun`. One policy, both runtimes.
100
- result = (await step.do(`gate-exhausted-${i}`, STEP_CONFIG, deps.resolveExhaustion));
107
+ result = (await step.do(`gate-exhausted-${i}`, deps.stepConfig, deps.resolveExhaustion));
101
108
  }
102
109
  return result;
103
110
  }
@@ -133,6 +140,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
133
140
  const decisionTimeout = execConfig.decisionTimeout;
134
141
  const jobPollInterval = execConfig.jobPollInterval;
135
142
  const ciPollInterval = execConfig.ciPollInterval;
143
+ const stepConfig = buildStepConfig(execConfig.advanceTimeout);
136
144
  // Chunk length for a spend-paused run's budget re-check (see the `paused` branch below).
137
145
  // Reuses the decision-wait cadence (default 24h), NOT the short gate-poll cadence: the run
138
146
  // parks on `waitForEvent`, so `/spend/resume` wakes it immediately via `signalResume` and
@@ -160,7 +168,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
160
168
  // Eviction / a genuine job failure are RETURNED as an `ok` AdvanceResult, not thrown.
161
169
  const pollOnce = async (label, read) => {
162
170
  try {
163
- return { kind: 'ok', result: (await step.do(label, STEP_CONFIG, read)) };
171
+ return { kind: 'ok', result: (await step.do(label, stepConfig, read)) };
164
172
  }
165
173
  catch (error) {
166
174
  // Scrubbed HERE, once, because this message is both logged and folded into the run's
@@ -179,6 +187,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
179
187
  maxPolls: execConfig.jobMaxPolls,
180
188
  failureTolerance: execConfig.jobPollFailureTolerance,
181
189
  pollInterval: jobPollInterval,
190
+ stepConfig,
182
191
  pollOnce,
183
192
  failRun,
184
193
  poll: () => container.executionService.pollAgentJob(workspaceId, executionId),
@@ -193,7 +202,7 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
193
202
  for (let i = 0;; i++) {
194
203
  let result;
195
204
  try {
196
- result = (await step.do(`advance-${i}`, STEP_CONFIG, () => container.executionService.advanceInstance(workspaceId, executionId, {
205
+ result = (await step.do(`advance-${i}`, stepConfig, () => container.executionService.advanceInstance(workspaceId, executionId, {
197
206
  rethrowAgentErrors: true,
198
207
  })));
199
208
  }
@@ -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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"}
@@ -0,0 +1,28 @@
1
+ -- Design-document renders: the pixels an import retains beside the text.
2
+ --
3
+ -- A design source describes a screen twice over, as the structure/styling an agent reads and as the
4
+ -- picture a person recognises. The second half now lands in the binary-artifact store as a
5
+ -- `reference` artifact, which is the same shelf the visual-confirmation gate already reads from,
6
+ -- so a design frame and a hand-uploaded reference image are the same kind of thing to every reader
7
+ -- downstream. Two columns are needed to make that work.
8
+
9
+ -- What became of the renders at the import that wrote the stored body: `stored` / `partial` /
10
+ -- `none` / `failed` / `storage_unavailable`. Deliberately nullable, and NULL is a distinct fourth
11
+ -- state rather than a default: it means the question does not apply (a prose source, an `upload`,
12
+ -- or a row written before renders existed), where every non-null value means renders WERE in scope
13
+ -- and says how they went. Each of those failures renders as the same absence of images and asks for
14
+ -- a different fix (configure image storage, retry a rate-limited source, or nothing at all), which
15
+ -- is the whole reason this is a vocabulary and not a boolean.
16
+ ALTER TABLE documents ADD COLUMN render_status TEXT;
17
+
18
+ -- Which imported document an artifact was rendered FROM, or NULL for one a person uploaded.
19
+ --
20
+ -- The document's own SOURCE identity (`documents` is keyed by `(workspace_id, source, external_id)`)
21
+ -- rather than the block it happens to be attached to: an import runs before the document is
22
+ -- attached to anything, the attachment can move later, and only artifacts that came from a document
23
+ -- may be replaced wholesale when it is re-imported. Keyed on the pair so the reclaim is one indexed
24
+ -- range delete rather than a scan.
25
+ ALTER TABLE binary_artifacts ADD COLUMN document_source TEXT;
26
+ ALTER TABLE binary_artifacts ADD COLUMN document_external_id TEXT;
27
+ CREATE INDEX idx_binary_artifacts_document
28
+ ON binary_artifacts (workspace_id, document_source, document_external_id);