@cat-factory/server 0.256.0 → 0.258.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 (34) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +13 -0
  3. package/dist/app.js.map +1 -1
  4. package/dist/modules/notifications/notificationActions.d.ts +27 -3
  5. package/dist/modules/notifications/notificationActions.d.ts.map +1 -1
  6. package/dist/modules/notifications/notificationActions.js +36 -7
  7. package/dist/modules/notifications/notificationActions.js.map +1 -1
  8. package/dist/modules/publicApi/PublicApiController.d.ts.map +1 -1
  9. package/dist/modules/publicApi/PublicApiController.js +16 -4
  10. package/dist/modules/publicApi/PublicApiController.js.map +1 -1
  11. package/dist/modules/publicApi/PublicEvidenceController.d.ts.map +1 -1
  12. package/dist/modules/publicApi/PublicEvidenceController.js +5 -16
  13. package/dist/modules/publicApi/PublicEvidenceController.js.map +1 -1
  14. package/dist/modules/publicApi/PublicMergeEvidenceController.d.ts +4 -0
  15. package/dist/modules/publicApi/PublicMergeEvidenceController.d.ts.map +1 -0
  16. package/dist/modules/publicApi/PublicMergeEvidenceController.js +158 -0
  17. package/dist/modules/publicApi/PublicMergeEvidenceController.js.map +1 -0
  18. package/dist/modules/publicApi/PublicSpecController.d.ts +4 -0
  19. package/dist/modules/publicApi/PublicSpecController.d.ts.map +1 -0
  20. package/dist/modules/publicApi/PublicSpecController.js +169 -0
  21. package/dist/modules/publicApi/PublicSpecController.js.map +1 -0
  22. package/dist/modules/publicApi/decisions/scope.d.ts +21 -0
  23. package/dist/modules/publicApi/decisions/scope.d.ts.map +1 -1
  24. package/dist/modules/publicApi/decisions/scope.js +26 -0
  25. package/dist/modules/publicApi/decisions/scope.js.map +1 -1
  26. package/dist/modules/publicApi/openapiDocument.generated.d.ts +1 -1
  27. package/dist/modules/publicApi/openapiDocument.generated.d.ts.map +1 -1
  28. package/dist/modules/publicApi/openapiDocument.generated.js +1 -1
  29. package/dist/modules/publicApi/openapiDocument.generated.js.map +1 -1
  30. package/dist/modules/publicApi/specProjection.d.ts +11 -0
  31. package/dist/modules/publicApi/specProjection.d.ts.map +1 -0
  32. package/dist/modules/publicApi/specProjection.js +189 -0
  33. package/dist/modules/publicApi/specProjection.js.map +1 -0
  34. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"openapiDocument.generated.js","sourceRoot":"","sources":["../../../src/modules/publicApi/openapiDocument.generated.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,0FAA0F;AAC1F,8FAA8F;AAC9F,8FAA8F;AAC9F,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,6xrgBAA6xrgB,CAAA"}
1
+ {"version":3,"file":"openapiDocument.generated.js","sourceRoot":"","sources":["../../../src/modules/publicApi/openapiDocument.generated.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,0FAA0F;AAC1F,8FAA8F;AAC9F,8FAA8F;AAC9F,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,uomjBAAuomjB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { type PublicServiceSpec, type PublicSpecAnchor, type PublicSpecProvenance, type ServiceSpecView } from '@cat-factory/contracts';
2
+ /**
3
+ * Project a read view onto the wire, under `anchor`.
4
+ *
5
+ * The anchor is passed IN rather than re-derived: the caller is where the four outcomes are
6
+ * separated (an unreadable repository never reaches here at all), and a projection that recomputed
7
+ * it from `view.present` would be a second opinion on the one judgement this endpoint exists to
8
+ * make.
9
+ */
10
+ export declare function toPublicServiceSpec(serviceId: string, anchor: PublicSpecAnchor, view: ServiceSpecView, provenance: PublicSpecProvenance): PublicServiceSpec;
11
+ //# sourceMappingURL=specProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specProjection.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/specProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAErB,KAAK,oBAAoB,EAIzB,KAAK,eAAe,EAGrB,MAAM,wBAAwB,CAAA;AAsL/B;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,oBAAoB,GAC/B,iBAAiB,CAgBnB"}
@@ -0,0 +1,189 @@
1
+ import { PUBLIC_SPEC_MAX_ACCEPTANCE, PUBLIC_SPEC_MAX_FEATURE_CHARS, PUBLIC_SPEC_MAX_FEATURE_FILES, PUBLIC_SPEC_MAX_FEATURE_TOTAL_CHARS, PUBLIC_SPEC_MAX_ISSUES, PUBLIC_SPEC_MAX_REQUIREMENTS, PUBLIC_SPEC_MAX_RULES, } from '@cat-factory/contracts';
2
+ // Project the reader's {@link ServiceSpecView} onto the public wire shape, BOUNDED.
3
+ //
4
+ // A pure reduction, kept out of the controller because it is the half worth testing on its own:
5
+ // what a cap does to a tree is a property of this function, and every rule it applies exists to
6
+ // keep a bounded response from reading as a smaller spec.
7
+ //
8
+ // Four rules, and each is the same rule:
9
+ //
10
+ // 1. **A cap counts against the WHOLE tree, and reports the whole tree's total.** `shown`/`total`
11
+ // are computed before anything is dropped, so a reader of a capped response still learns how
12
+ // many requirements the service declares. A count taken off the rows would be exactly the lie
13
+ // the truncation record exists to prevent.
14
+ // 2. **A cap cuts in TRAVERSAL ORDER and nothing is re-ranked.** The platform does not judge which
15
+ // requirement matters more, so it drops the tail rather than inventing a severity. The wire
16
+ // contract says so; a reader that needs a particular requirement has its id and the spec is a
17
+ // repository away.
18
+ // 3. **An emptied group/module is kept, not pruned.** A group whose requirements all fell past the
19
+ // cap still names itself, because a vanished group reads as a service that never had one. Same
20
+ // for a requirement whose criteria the acceptance budget could not fit: its id is the join key
21
+ // this endpoint exists for, so the criteria are what a cap cuts, never the row that names them.
22
+ // 4. **EVERY axis is bounded, including the ones that do not grow with the spec.** The Gherkin is
23
+ // capped across all files as well as within each one, and the issue list is capped too: it grows
24
+ // with FAILURE, so a rate-limit window part-way through a large walk would otherwise make the
25
+ // report of a degraded read the largest thing in a response whose every other axis is bounded.
26
+ /**
27
+ * Clamp one feature file's Gherkin to `limit`, reporting what was kept and what exists.
28
+ *
29
+ * Counted and cut in code POINTS rather than UTF-16 units, the unit the debug surface's own
30
+ * `chars`/`totalChars` are measured in: a `slice` on the raw string can land between the halves of
31
+ * a surrogate pair and emit a lone one, which is a replacement character in the response and a
32
+ * character count nobody can reproduce.
33
+ *
34
+ * `limit` is the smaller of the per-file cap and what is left of the response-wide one, so both
35
+ * bounds report through the same `chars < totalChars` a reader already has to honour.
36
+ */
37
+ function clampFeature(file, limit) {
38
+ const points = [...file.content];
39
+ const totalChars = points.length;
40
+ const chars = Math.min(totalChars, Math.max(limit, 0));
41
+ return {
42
+ module: file.module,
43
+ group: file.group,
44
+ path: file.path,
45
+ content: chars === totalChars ? file.content : points.slice(0, chars).join(''),
46
+ chars,
47
+ totalChars,
48
+ truncated: chars < totalChars,
49
+ };
50
+ }
51
+ /**
52
+ * The feature files this response carries: at most {@link PUBLIC_SPEC_MAX_FEATURE_FILES} of them,
53
+ * holding at most {@link PUBLIC_SPEC_MAX_FEATURE_TOTAL_CHARS} of Gherkin between them.
54
+ *
55
+ * The file count alone bounded the wrong thing: 500 files at the 20,000-character per-file cap is
56
+ * a ten-megabyte body. A file the total budget cannot fit whole is carried CLAMPED rather than
57
+ * dropped (its own `truncated` says so) and the walk stops at the first file the budget cannot
58
+ * start, so `shown` counts what a caller actually received.
59
+ */
60
+ function capFeatures(files) {
61
+ const features = [];
62
+ let charBudget = PUBLIC_SPEC_MAX_FEATURE_TOTAL_CHARS;
63
+ for (const file of files.slice(0, PUBLIC_SPEC_MAX_FEATURE_FILES)) {
64
+ if (charBudget <= 0)
65
+ break;
66
+ const clamped = clampFeature(file, Math.min(PUBLIC_SPEC_MAX_FEATURE_CHARS, charBudget));
67
+ charBudget -= clamped.chars;
68
+ features.push(clamped);
69
+ }
70
+ return {
71
+ features,
72
+ truncations: features.length < files.length
73
+ ? [{ section: 'features', shown: features.length, total: files.length }]
74
+ : [],
75
+ };
76
+ }
77
+ /** Every group in the tree, in traversal order, so all three item caps cut the same way. */
78
+ function groupsOf(spec) {
79
+ return (spec.modules ?? []).flatMap((module) => module.groups ?? []);
80
+ }
81
+ /** What the whole tree declares, counted BEFORE anything is cut. */
82
+ function treeTotals(groups) {
83
+ let requirements = 0;
84
+ let rules = 0;
85
+ let acceptance = 0;
86
+ for (const group of groups) {
87
+ rules += (group.rules ?? []).length;
88
+ for (const requirement of group.requirements ?? []) {
89
+ requirements += 1;
90
+ acceptance += (requirement.acceptance ?? []).length;
91
+ }
92
+ }
93
+ return { requirements, rules, acceptance };
94
+ }
95
+ /**
96
+ * Rebuild the tree with at most {@link PUBLIC_SPEC_MAX_REQUIREMENTS} requirements,
97
+ * {@link PUBLIC_SPEC_MAX_RULES} rules and {@link PUBLIC_SPEC_MAX_ACCEPTANCE} acceptance criteria
98
+ * across it, reporting each cap that bit.
99
+ *
100
+ * The budgets are independent: a spec heavy in rules and light in requirements loses none of the
101
+ * latter. They are spent in traversal order, so a group is either whole, partial, or empty, and
102
+ * never a sample. A requirement whose criteria the acceptance budget could not fit is still
103
+ * CARRIED (a requirement is the join key the whole endpoint exists for), with the criteria the
104
+ * budget covered; the truncation row is what says the rest exist.
105
+ */
106
+ function capTree(spec) {
107
+ const totals = treeTotals(groupsOf(spec));
108
+ const truncations = [];
109
+ if (totals.requirements > PUBLIC_SPEC_MAX_REQUIREMENTS) {
110
+ truncations.push({
111
+ section: 'requirements',
112
+ shown: PUBLIC_SPEC_MAX_REQUIREMENTS,
113
+ total: totals.requirements,
114
+ });
115
+ }
116
+ if (totals.rules > PUBLIC_SPEC_MAX_RULES) {
117
+ truncations.push({ section: 'rules', shown: PUBLIC_SPEC_MAX_RULES, total: totals.rules });
118
+ }
119
+ if (totals.acceptance > PUBLIC_SPEC_MAX_ACCEPTANCE) {
120
+ truncations.push({
121
+ section: 'acceptance',
122
+ shown: PUBLIC_SPEC_MAX_ACCEPTANCE,
123
+ total: totals.acceptance,
124
+ });
125
+ }
126
+ if (truncations.length === 0)
127
+ return { spec, truncations };
128
+ let requirementBudget = PUBLIC_SPEC_MAX_REQUIREMENTS;
129
+ let ruleBudget = PUBLIC_SPEC_MAX_RULES;
130
+ let acceptanceBudget = PUBLIC_SPEC_MAX_ACCEPTANCE;
131
+ const modules = (spec.modules ?? []).map((module) => ({
132
+ ...module,
133
+ groups: (module.groups ?? []).map((group) => {
134
+ const requirements = (group.requirements ?? [])
135
+ .slice(0, Math.max(requirementBudget, 0))
136
+ .map((requirement) => {
137
+ const acceptance = (requirement.acceptance ?? []).slice(0, Math.max(acceptanceBudget, 0));
138
+ acceptanceBudget -= acceptance.length;
139
+ return { ...requirement, acceptance };
140
+ });
141
+ const rules = (group.rules ?? []).slice(0, Math.max(ruleBudget, 0));
142
+ requirementBudget -= requirements.length;
143
+ ruleBudget -= rules.length;
144
+ return { ...group, requirements, rules };
145
+ }),
146
+ }));
147
+ return { spec: { ...spec, modules }, truncations };
148
+ }
149
+ /**
150
+ * The read issues this response carries, capped, with a row saying so when the cap bit.
151
+ *
152
+ * The one axis that grows with FAILURE rather than with the spec: a rate-limit window part-way
153
+ * through a few-thousand-shard walk logs a row per shard, so an uncapped list makes the report of
154
+ * a degraded read the largest thing in a response whose every other axis is bounded.
155
+ */
156
+ function capIssues(issues) {
157
+ if (issues.length <= PUBLIC_SPEC_MAX_ISSUES)
158
+ return { issues, truncations: [] };
159
+ return {
160
+ issues: issues.slice(0, PUBLIC_SPEC_MAX_ISSUES),
161
+ truncations: [{ section: 'issues', shown: PUBLIC_SPEC_MAX_ISSUES, total: issues.length }],
162
+ };
163
+ }
164
+ /**
165
+ * Project a read view onto the wire, under `anchor`.
166
+ *
167
+ * The anchor is passed IN rather than re-derived: the caller is where the four outcomes are
168
+ * separated (an unreadable repository never reaches here at all), and a projection that recomputed
169
+ * it from `view.present` would be a second opinion on the one judgement this endpoint exists to
170
+ * make.
171
+ */
172
+ export function toPublicServiceSpec(serviceId, anchor, view, provenance) {
173
+ const capped = view.spec ? capTree(view.spec) : { spec: null, truncations: [] };
174
+ const features = capFeatures(view.features);
175
+ // An absent `diagnostics` means the producer diagnosed nothing, which on this path cannot
176
+ // happen (the reader always sets it) but is answered as "no issues found" rather than left to
177
+ // throw on a view assembled by hand.
178
+ const issues = capIssues(view.diagnostics?.issues ?? []);
179
+ return {
180
+ serviceId,
181
+ anchor,
182
+ spec: capped.spec,
183
+ features: features.features,
184
+ provenance,
185
+ issues: issues.issues,
186
+ truncations: [...capped.truncations, ...features.truncations, ...issues.truncations],
187
+ };
188
+ }
189
+ //# sourceMappingURL=specProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specProjection.js","sourceRoot":"","sources":["../../../src/modules/publicApi/specProjection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/server",
3
- "version": "0.256.0",
3
+ "version": "0.258.0",
4
4
  "description": "Runtime-neutral HTTP layer for the Agent Architecture Board: the Hono controllers, middleware (auth/authz/CORS/error), request helpers and the gateway seams shared by every deployment facade (Cloudflare Worker, Node service).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,13 +31,13 @@
31
31
  "jose": "^6.2.8",
32
32
  "pino": "^10.3.1",
33
33
  "valibot": "^1.4.2",
34
- "@cat-factory/agents": "0.119.2",
35
- "@cat-factory/contracts": "0.278.0",
36
- "@cat-factory/integrations": "0.152.3",
37
- "@cat-factory/kernel": "0.275.2",
38
- "@cat-factory/mcp-server": "0.24.0",
39
- "@cat-factory/orchestration": "0.244.0",
40
- "@cat-factory/spend": "0.15.45"
34
+ "@cat-factory/agents": "0.120.0",
35
+ "@cat-factory/contracts": "0.280.0",
36
+ "@cat-factory/kernel": "0.275.4",
37
+ "@cat-factory/integrations": "0.152.5",
38
+ "@cat-factory/mcp-server": "0.26.0",
39
+ "@cat-factory/orchestration": "0.246.0",
40
+ "@cat-factory/spend": "0.15.47"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^26.1.2",