@cat-factory/worker 0.82.12 → 0.82.14

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.
@@ -1,4 +1,4 @@
1
- import type { GitHubConfig, PrivilegedAppConfig } from '@cat-factory/server';
1
+ import { type GitHubConfig, type PrivilegedAppConfig } from '@cat-factory/server';
2
2
  import type { Env } from '../env';
3
3
  export type { GitHubConfig, PrivilegedAppConfig };
4
4
  export declare function loadGitHubConfig(env: Env): GitHubConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAcvD"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/github.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAmBvD"}
@@ -1,8 +1,15 @@
1
+ import { requireGitHubAppPrivateKey, } from '@cat-factory/server';
1
2
  export function loadGitHubConfig(env) {
2
3
  // Enabled when the App id and both secrets are present; the integration is
3
4
  // entirely opt-in (a default-off convention shared by the optional integrations).
4
5
  const appId = env.GITHUB_APP_ID?.trim() ?? '';
5
6
  const enabled = appId !== '' && !!env.GITHUB_APP_PRIVATE_KEY && !!env.GITHUB_WEBHOOK_SECRET;
7
+ // Validate the App private key's SHAPE at boot (present + PKCS#8 PEM + decodable body) whenever
8
+ // the App is configured, so a malformed key fails on the misconfigured screen with the openssl
9
+ // conversion remedy rather than opaquely at the first installation-token mint (error-message
10
+ // coverage A3). Mirrors the Node loader; the shared validator keeps the message identical.
11
+ if (enabled)
12
+ requireGitHubAppPrivateKey(env.GITHUB_APP_PRIVATE_KEY);
6
13
  return {
7
14
  enabled,
8
15
  appId,
@@ -20,6 +27,8 @@ function loadPrivilegedApp(env) {
20
27
  const appId = env.GITHUB_PRIVILEGED_APP_ID?.trim() ?? '';
21
28
  if (appId === '' || !env.GITHUB_PRIVILEGED_APP_PRIVATE_KEY)
22
29
  return undefined;
30
+ // Same boot-time shape validation as the default App key (error-message coverage A3).
31
+ requireGitHubAppPrivateKey(env.GITHUB_PRIVILEGED_APP_PRIVATE_KEY, 'GITHUB_PRIVILEGED_APP_PRIVATE_KEY');
23
32
  return { appId };
24
33
  }
25
34
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/infrastructure/config/github.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,2EAA2E;IAC3E,kFAAkF;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC7C,MAAM,OAAO,GAAG,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAA;IAC3F,OAAO;QACL,OAAO;QACP,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1C,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,wBAAwB;QAChE,gBAAgB,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,GAAG;QAC9D,aAAa,EAAE,GAAG,CAAC,qBAAqB,IAAI,EAAE;QAC9C,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC;KACtC,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,wCAAwC;AACxC,SAAS,iBAAiB,CAAC,GAAQ;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACxD,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iCAAiC;QAAE,OAAO,SAAS,CAAA;IAC5E,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/infrastructure/config/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,0BAA0B,GAC3B,MAAM,qBAAqB,CAAA;AAK5B,MAAM,UAAU,gBAAgB,CAAC,GAAQ;IACvC,2EAA2E;IAC3E,kFAAkF;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC7C,MAAM,OAAO,GAAG,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAA;IAC3F,gGAAgG;IAChG,+FAA+F;IAC/F,6FAA6F;IAC7F,2FAA2F;IAC3F,IAAI,OAAO;QAAE,0BAA0B,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACnE,OAAO;QACL,OAAO;QACP,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;QAC1C,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,wBAAwB;QAChE,gBAAgB,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,GAAG;QAC9D,aAAa,EAAE,GAAG,CAAC,qBAAqB,IAAI,EAAE;QAC9C,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC;KACtC,CAAA;AACH,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,wCAAwC;AACxC,SAAS,iBAAiB,CAAC,GAAQ;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACxD,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,iCAAiC;QAAE,OAAO,SAAS,CAAA;IAC5E,sFAAsF;IACtF,0BAA0B,CACxB,GAAG,CAAC,iCAAiC,EACrC,mCAAmC,CACpC,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC"}
@@ -12,6 +12,7 @@ export declare class D1WorkspaceSettingsRepository implements WorkspaceSettingsR
12
12
  db: D1Database;
13
13
  });
14
14
  get(workspaceId: string): Promise<WorkspaceSettings | null>;
15
+ listByWorkspaceIds(workspaceIds: string[]): Promise<Map<string, WorkspaceSettings>>;
15
16
  upsert(workspaceId: string, settings: WorkspaceSettings): Promise<void>;
16
17
  }
17
18
  //# sourceMappingURL=D1WorkspaceSettingsRepository.d.ts.map
@@ -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,EAAmC,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAuC3D;;;;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,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;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,EAAmC,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAyC3D;;;;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,CAmC5E;CACF"}
@@ -1,3 +1,4 @@
1
+ import { chunkForIn } from './chunk';
1
2
  function parseJson(raw) {
2
3
  if (!raw)
3
4
  return null;
@@ -39,6 +40,22 @@ export class D1WorkspaceSettingsRepository {
39
40
  .first();
40
41
  return row ? rowToSettings(row) : null;
41
42
  }
43
+ async listByWorkspaceIds(workspaceIds) {
44
+ const out = new Map();
45
+ if (workspaceIds.length === 0)
46
+ return out;
47
+ // Chunk the IN list to stay under D1's bound-parameter limit.
48
+ for (const chunk of chunkForIn(workspaceIds)) {
49
+ const placeholders = chunk.map(() => '?').join(', ');
50
+ const { results } = await this.db
51
+ .prepare(`SELECT * FROM workspace_settings WHERE workspace_id IN (${placeholders})`)
52
+ .bind(...chunk)
53
+ .all();
54
+ for (const row of results ?? [])
55
+ out.set(row.workspace_id, rowToSettings(row));
56
+ }
57
+ return out;
58
+ }
42
59
  async upsert(workspaceId, settings) {
43
60
  await this.db
44
61
  .prepare(`INSERT INTO workspace_settings
@@ -1 +1 @@
1
- {"version":3,"file":"D1WorkspaceSettingsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"AAiBA,SAAS,SAAS,CAAI,GAAkB;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAyB;IAC9C,OAAO;QACL,wBAAwB,EAAE,GAAG,CAAC,0BAA0B;QACxD,aAAa,EAAE,GAAG,CAAC,eAAgC;QACnD,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,gBAAgB,EAAE,SAAS,CAAmB,GAAG,CAAC,mBAAmB,CAAC;QACtE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,KAAK,CAAC;QAChD,qBAAqB,EAAE,GAAG,CAAC,uBAAuB;QAClD,aAAa,EAAE,GAAG,CAAC,cAAc,KAAK,CAAC;QACvC,0BAA0B,EAAE,GAAG,CAAC,8BAA8B,KAAK,CAAC;QACpE,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;KAC3C,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IACvB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAmB;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,yDAAyD,CAAC;aAClE,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,EAAwB,CAAA;QAChC,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,QAA2B;QAC3D,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;;;;;;;;;;;;;;8DAgBsD,CACvD;aACA,IAAI,CACH,WAAW,EACX,QAAQ,CAAC,wBAAwB,EACjC,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5E,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,QAAQ,CAAC,qBAAqB,EAC9B,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3C,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,iBAAiB,CAC3B;aACA,GAAG,EAAE,CAAA;IACV,CAAC;CACF"}
1
+ {"version":3,"file":"D1WorkspaceSettingsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1WorkspaceSettingsRepository.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/worker",
3
- "version": "0.82.12",
3
+ "version": "0.82.14",
4
4
  "description": "Reusable Cloudflare Worker library (Hono + D1) exposing the Agent Architecture Board core: the `createApp()` Hono factory, the default fetch/scheduled/queue handler, and the Durable Object + Workflow classes. Deployments (see deploy/backend) supply the wrangler.toml + config and re-export these.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,21 +42,21 @@
42
42
  "pino": "^10.3.1",
43
43
  "valibot": "^1.4.2",
44
44
  "workers-ai-provider": "^3.3.1",
45
- "@cat-factory/agents": "0.54.0",
46
- "@cat-factory/caching": "0.6.35",
47
- "@cat-factory/consensus": "0.10.36",
45
+ "@cat-factory/agents": "0.54.1",
46
+ "@cat-factory/caching": "0.6.36",
47
+ "@cat-factory/consensus": "0.10.37",
48
48
  "@cat-factory/contracts": "0.127.0",
49
- "@cat-factory/eks": "0.1.59",
50
- "@cat-factory/gates": "0.5.20",
51
- "@cat-factory/gitlab": "0.7.58",
52
- "@cat-factory/integrations": "0.81.7",
53
- "@cat-factory/kernel": "0.121.2",
54
- "@cat-factory/observability-langfuse": "0.7.190",
55
- "@cat-factory/orchestration": "0.106.1",
49
+ "@cat-factory/eks": "0.1.60",
50
+ "@cat-factory/gates": "0.5.21",
51
+ "@cat-factory/gitlab": "0.7.59",
52
+ "@cat-factory/integrations": "0.81.8",
53
+ "@cat-factory/kernel": "0.121.3",
54
+ "@cat-factory/observability-langfuse": "0.7.191",
55
+ "@cat-factory/orchestration": "0.106.2",
56
56
  "@cat-factory/prompt-fragments": "0.13.13",
57
- "@cat-factory/provider-cloudflare": "0.7.207",
58
- "@cat-factory/server": "0.112.1",
59
- "@cat-factory/spend": "0.12.16"
57
+ "@cat-factory/provider-cloudflare": "0.7.208",
58
+ "@cat-factory/server": "0.112.3",
59
+ "@cat-factory/spend": "0.12.17"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@cloudflare/vitest-pool-workers": "^0.18.0",
@@ -64,7 +64,7 @@
64
64
  "typescript": "7.0.1-rc",
65
65
  "vitest": "^4.1.9",
66
66
  "wrangler": "^4.107.0",
67
- "@cat-factory/conformance": "0.10.100"
67
+ "@cat-factory/conformance": "0.10.102"
68
68
  },
69
69
  "scripts": {
70
70
  "build": "tsc -b tsconfig.build.json",