@cat-factory/worker 0.156.0 → 0.158.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.
- package/dist/infrastructure/config/retention.d.ts.map +1 -1
- package/dist/infrastructure/config/retention.js +6 -3
- package/dist/infrastructure/config/retention.js.map +1 -1
- package/dist/infrastructure/repositories/D1RiskPolicyRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1RiskPolicyRepository.js +9 -3
- package/dist/infrastructure/repositories/D1RiskPolicyRepository.js.map +1 -1
- package/migrations/0081_submission_allowlist.sql +13 -0
- package/package.json +18 -18
- package/telemetry-migrations/0003_llm_cache_class_split.sql +1 -1
- package/telemetry-migrations/0004_llm_call_phase_turn.sql +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGjC,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGjC,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,eAAe,CA8C7D"}
|
|
@@ -7,9 +7,12 @@ export function loadRetentionConfig(env) {
|
|
|
7
7
|
rateLimitMs: retentionMs('GITHUB_RATE_LIMIT_RETENTION_DAYS', env.GITHUB_RATE_LIMIT_RETENTION_DAYS, 7),
|
|
8
8
|
// Caps the commits projection and bounds the initial backfill to the same age.
|
|
9
9
|
commitMs: retentionMs('GITHUB_COMMIT_RETENTION_DAYS', env.GITHUB_COMMIT_RETENTION_DAYS, 90),
|
|
10
|
-
// Heavy (full per-call prompt/response)
|
|
11
|
-
//
|
|
12
|
-
|
|
10
|
+
// Heavy (full per-call prompt/response), so the window trades disk against how far back a
|
|
11
|
+
// post-mortem can reach: default 14 days, matching the Node facade. The 3 days it replaced
|
|
12
|
+
// expired the record before most investigations start; a post-mortem that cannot read the
|
|
13
|
+
// calls it is about is the same as no telemetry at all. Set it back to 3 to restore the old
|
|
14
|
+
// footprint on a deployment that also stores bodies.
|
|
15
|
+
llmCallMetricsMs: retentionMs('LLM_CALL_METRICS_RETENTION_DAYS', env.LLM_CALL_METRICS_RETENTION_DAYS, 14),
|
|
13
16
|
// High-churn provisioning event log (separate D1 db); aggressive default of 14 days.
|
|
14
17
|
provisioningLogMs: retentionMs('PROVISIONING_LOG_RETENTION_DAYS', env.PROVISIONING_LOG_RETENTION_DAYS, 14),
|
|
15
18
|
// Resolved (acted/dismissed) notifications; generous default of 90 days so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../../src/infrastructure/config/retention.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrC,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,OAAO;QACL,8EAA8E;QAC9E,YAAY,EAAE,WAAW,CAAC,4BAA4B,EAAE,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC;QAC5F,8EAA8E;QAC9E,WAAW,EAAE,WAAW,CACtB,kCAAkC,EAClC,GAAG,CAAC,gCAAgC,EACpC,CAAC,CACF;QACD,+EAA+E;QAC/E,QAAQ,EAAE,WAAW,CAAC,8BAA8B,EAAE,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC;QAC3F,
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../../src/infrastructure/config/retention.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrC,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,OAAO;QACL,8EAA8E;QAC9E,YAAY,EAAE,WAAW,CAAC,4BAA4B,EAAE,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC;QAC5F,8EAA8E;QAC9E,WAAW,EAAE,WAAW,CACtB,kCAAkC,EAClC,GAAG,CAAC,gCAAgC,EACpC,CAAC,CACF;QACD,+EAA+E;QAC/E,QAAQ,EAAE,WAAW,CAAC,8BAA8B,EAAE,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC;QAC3F,0FAA0F;QAC1F,2FAA2F;QAC3F,0FAA0F;QAC1F,4FAA4F;QAC5F,qDAAqD;QACrD,gBAAgB,EAAE,WAAW,CAC3B,iCAAiC,EACjC,GAAG,CAAC,+BAA+B,EACnC,EAAE,CACH;QACD,qFAAqF;QACrF,iBAAiB,EAAE,WAAW,CAC5B,iCAAiC,EACjC,GAAG,CAAC,+BAA+B,EACnC,EAAE,CACH;QACD,+EAA+E;QAC/E,gEAAgE;QAChE,eAAe,EAAE,WAAW,CAC1B,6BAA6B,EAC7B,GAAG,CAAC,2BAA2B,EAC/B,EAAE,CACH;QACD,uFAAuF;QACvF,8EAA8E;QAC9E,cAAc,EAAE,WAAW,CAAC,6BAA6B,EAAE,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC;QAC/F,wFAAwF;QACxF,yFAAyF;QACzF,SAAS,EAAE,WAAW,CACpB,iCAAiC,EACjC,GAAG,CAAC,+BAA+B,EACnC,GAAG,CACJ;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1RiskPolicyRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RiskPolicyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAGV,UAAU,
|
|
1
|
+
{"version":3,"file":"D1RiskPolicyRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RiskPolicyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAGV,UAAU,EAKX,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkE3D;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,oBAAoB;IACjE,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,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAMrE;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQrD;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAUhE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEnE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3D;CACF"}
|
|
@@ -25,6 +25,11 @@ function rowToPreset(row) {
|
|
|
25
25
|
? JSON.parse(row.class_rules_by_role)
|
|
26
26
|
: {},
|
|
27
27
|
dryRunRoles: row.dry_run_roles ? JSON.parse(row.dry_run_roles) : [],
|
|
28
|
+
// Same defensive read again, and the same identity: `{}` scopes no role, so a preset that
|
|
29
|
+
// predates the allowlist lands exactly what it always did.
|
|
30
|
+
submissionClassesByRole: row.submission_classes_by_role
|
|
31
|
+
? JSON.parse(row.submission_classes_by_role)
|
|
32
|
+
: {},
|
|
28
33
|
isDefault: row.is_default === 1,
|
|
29
34
|
...(row.version != null ? { version: row.version } : {}),
|
|
30
35
|
createdAt: row.created_at,
|
|
@@ -82,8 +87,8 @@ export class D1RiskPolicyRepository {
|
|
|
82
87
|
release_watch_window_minutes, release_max_attempts, human_review_grace_minutes,
|
|
83
88
|
judge_min_score, judge_max_bounces,
|
|
84
89
|
auto_merge_enabled, fork_decision, class_rules, class_rules_by_role, dry_run_roles,
|
|
85
|
-
version, is_default, created_at)
|
|
86
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
90
|
+
submission_classes_by_role, version, is_default, created_at)
|
|
91
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
87
92
|
ON CONFLICT (workspace_id, id) DO UPDATE SET
|
|
88
93
|
name = excluded.name,
|
|
89
94
|
max_complexity = excluded.max_complexity,
|
|
@@ -103,9 +108,10 @@ export class D1RiskPolicyRepository {
|
|
|
103
108
|
class_rules = excluded.class_rules,
|
|
104
109
|
class_rules_by_role = excluded.class_rules_by_role,
|
|
105
110
|
dry_run_roles = excluded.dry_run_roles,
|
|
111
|
+
submission_classes_by_role = excluded.submission_classes_by_role,
|
|
106
112
|
version = excluded.version,
|
|
107
113
|
is_default = excluded.is_default`)
|
|
108
|
-
.bind(workspaceId, preset.id, preset.name, preset.maxComplexity, preset.maxRisk, preset.maxImpact, preset.ciMaxAttempts, preset.maxRequirementIterations, preset.maxRequirementConcernAllowed, preset.maxTesterQualityIterations, preset.releaseWatchWindowMinutes, preset.releaseMaxAttempts, preset.humanReviewGraceMinutes, preset.judgeMinScore, preset.judgeMaxBounces, preset.autoMergeEnabled ? 1 : 0, preset.forkDecision ? JSON.stringify(preset.forkDecision) : null, JSON.stringify(preset.classRules ?? {}), JSON.stringify(preset.classRulesByRole ?? {}), JSON.stringify(preset.dryRunRoles ?? []), preset.version ?? null, preset.isDefault ? 1 : 0, preset.createdAt)
|
|
114
|
+
.bind(workspaceId, preset.id, preset.name, preset.maxComplexity, preset.maxRisk, preset.maxImpact, preset.ciMaxAttempts, preset.maxRequirementIterations, preset.maxRequirementConcernAllowed, preset.maxTesterQualityIterations, preset.releaseWatchWindowMinutes, preset.releaseMaxAttempts, preset.humanReviewGraceMinutes, preset.judgeMinScore, preset.judgeMaxBounces, preset.autoMergeEnabled ? 1 : 0, preset.forkDecision ? JSON.stringify(preset.forkDecision) : null, JSON.stringify(preset.classRules ?? {}), JSON.stringify(preset.classRulesByRole ?? {}), JSON.stringify(preset.dryRunRoles ?? []), JSON.stringify(preset.submissionClassesByRole ?? {}), preset.version ?? null, preset.isDefault ? 1 : 0, preset.createdAt)
|
|
109
115
|
.run();
|
|
110
116
|
}
|
|
111
117
|
async remove(workspaceId, id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1RiskPolicyRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RiskPolicyRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"D1RiskPolicyRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1RiskPolicyRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- Per-role SUBMISSION ALLOWLIST on the merge preset.
|
|
2
|
+
--
|
|
3
|
+
-- `submission_classes_by_role` is a JSON partial map from workspace role (`admin` | `member` |
|
|
4
|
+
-- `viewer`) to the list of change classes that role's runs may LAND at all. It sits above the
|
|
5
|
+
-- per-class rules rather than beside them: a class may be `always` under `class_rules_by_role`
|
|
6
|
+
-- and still outside the role's allowlist, and the allowlist wins, because it bars landing where
|
|
7
|
+
-- a class rule only decides how much review landing takes.
|
|
8
|
+
--
|
|
9
|
+
-- An ABSENT role entry means unrestricted (not empty), so the `{}` default leaves every
|
|
10
|
+
-- existing row on exactly its previous behaviour: nobody is scoped. An EMPTY array is a real and
|
|
11
|
+
-- different policy (that role lands nothing). Mirrored on Node by the `submission_classes_by_role`
|
|
12
|
+
-- text column on the Drizzle `merge_threshold_presets` table.
|
|
13
|
+
ALTER TABLE merge_threshold_presets ADD COLUMN submission_classes_by_role TEXT NOT NULL DEFAULT '{}';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.158.0",
|
|
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,22 +42,22 @@
|
|
|
42
42
|
"pino": "^10.3.1",
|
|
43
43
|
"valibot": "^1.4.2",
|
|
44
44
|
"workers-ai-provider": "^4.0.0",
|
|
45
|
-
"@cat-factory/agents": "0.112.
|
|
46
|
-
"@cat-factory/
|
|
47
|
-
"@cat-factory/
|
|
48
|
-
"@cat-factory/
|
|
49
|
-
"@cat-factory/
|
|
50
|
-
"@cat-factory/gates": "0.9.
|
|
51
|
-
"@cat-factory/gitlab": "0.15.
|
|
52
|
-
"@cat-factory/integrations": "0.130.
|
|
53
|
-
"@cat-factory/kernel": "0.
|
|
54
|
-
"@cat-factory/observability-langfuse": "0.10.
|
|
55
|
-
"@cat-factory/observability-otel": "0.13.
|
|
56
|
-
"@cat-factory/orchestration": "0.
|
|
57
|
-
"@cat-factory/prompt-fragments": "0.15.
|
|
58
|
-
"@cat-factory/provider-cloudflare": "0.7.
|
|
59
|
-
"@cat-factory/server": "0.222.
|
|
60
|
-
"@cat-factory/spend": "0.15.
|
|
45
|
+
"@cat-factory/agents": "0.112.6",
|
|
46
|
+
"@cat-factory/contracts": "0.245.0",
|
|
47
|
+
"@cat-factory/caching": "0.14.26",
|
|
48
|
+
"@cat-factory/eks": "0.1.236",
|
|
49
|
+
"@cat-factory/consensus": "0.14.26",
|
|
50
|
+
"@cat-factory/gates": "0.9.5",
|
|
51
|
+
"@cat-factory/gitlab": "0.15.41",
|
|
52
|
+
"@cat-factory/integrations": "0.130.2",
|
|
53
|
+
"@cat-factory/kernel": "0.243.1",
|
|
54
|
+
"@cat-factory/observability-langfuse": "0.10.10",
|
|
55
|
+
"@cat-factory/observability-otel": "0.13.2",
|
|
56
|
+
"@cat-factory/orchestration": "0.212.0",
|
|
57
|
+
"@cat-factory/prompt-fragments": "0.15.71",
|
|
58
|
+
"@cat-factory/provider-cloudflare": "0.7.388",
|
|
59
|
+
"@cat-factory/server": "0.222.2",
|
|
60
|
+
"@cat-factory/spend": "0.15.8"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@cloudflare/vitest-pool-workers": "^0.20.1",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"typescript": "7.0.2",
|
|
66
66
|
"vitest": "^4.1.10",
|
|
67
67
|
"wrangler": "^4.118.0",
|
|
68
|
-
"@cat-factory/conformance": "0.30.
|
|
68
|
+
"@cat-factory/conformance": "0.30.4"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build": "tsc -b tsconfig.build.json",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
-- token-burn instrumentation needs (docs/initiatives/token-burn-instrumentation.md).
|
|
9
9
|
--
|
|
10
10
|
-- The old column is DROPPED rather than dual-read: backwards compatibility is a non-goal, and
|
|
11
|
-
-- this table is pruned to LLM_CALL_METRICS_RETENTION_DAYS
|
|
11
|
+
-- this table is pruned to LLM_CALL_METRICS_RETENTION_DAYS, so the rows whose
|
|
12
12
|
-- `prompt_tokens` still carries the old inclusive semantics churn out within the window. No
|
|
13
13
|
-- backfill is attempted for the same reason — and because the split genuinely cannot be
|
|
14
14
|
-- recovered from one summed number.
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
-- has no job-scoped counter at all. A 0 there would read as "the first turn" and quietly sort
|
|
14
14
|
-- every proxied call to the front of its phase.
|
|
15
15
|
--
|
|
16
|
-
-- No backfill and no index: this table is pruned to LLM_CALL_METRICS_RETENTION_DAYS
|
|
17
|
-
--
|
|
16
|
+
-- No backfill and no index: this table is pruned to LLM_CALL_METRICS_RETENTION_DAYS, so
|
|
17
|
+
-- pre-axis rows churn out within the window, and the per-execution rollup already
|
|
18
18
|
-- rides idx_llm_call_metrics_execution.
|
|
19
19
|
ALTER TABLE llm_call_metrics ADD COLUMN phase TEXT NOT NULL DEFAULT '';
|
|
20
20
|
ALTER TABLE llm_call_metrics ADD COLUMN turn_index INTEGER;
|