@cat-factory/orchestration 0.20.0 → 0.21.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.
@@ -0,0 +1,37 @@
1
+ import type { SandboxExpectation, SandboxFixture, SandboxGradeDimension, SandboxObjectiveResult } from '@cat-factory/contracts';
2
+ import type { ModelRef } from '@cat-factory/kernel';
3
+ import { type ExpectationScore, type Rubric } from '@cat-factory/sandbox';
4
+ export { extractJson } from '@cat-factory/kernel';
5
+ /** Split a model catalog id (`provider:model`) into a {@link ModelRef}. */
6
+ export declare function parseModelCatalogId(id: string): ModelRef;
7
+ /**
8
+ * Render an inline fixture's payload into the task input the candidate reasons over (its
9
+ * system prompt carries the role instructions) and the judge grades against. Defensive:
10
+ * the payload is a `Record<string, unknown>` matching a `RequirementsContext` /
11
+ * `ClarityContext` (a `block` + optional `docs`/`tasks`) or a reviewer `AgentRunContext`
12
+ * (a `block` + the work-to-review in `priorOutputs`), so it reads each field tolerantly.
13
+ */
14
+ export declare function renderFixtureInput(fixture: SandboxFixture): string;
15
+ /** System prompt for the Sandbox judge — a reference-free rubric grader. */
16
+ export declare const JUDGE_SYSTEM_PROMPT: string;
17
+ /** Build the judge user prompt for one cell: rubric + task input + candidate output + expectations. */
18
+ export declare function buildJudgePrompt(rubric: Rubric, taskInput: string, output: string, expectations: readonly SandboxExpectation[]): string;
19
+ /**
20
+ * Coerce a judge's raw JSON into one score per rubric dimension. Scores are clamped to
21
+ * [1,5]; a dimension the judge omitted (or scored non-numerically) defaults to 1 with a
22
+ * note, so the weighted mean never silently drops a dimension from its denominator.
23
+ */
24
+ export declare function coerceJudgeScores(rubric: Rubric, raw: unknown): SandboxGradeDimension[];
25
+ /** Project the deterministic objective score into the wire `SandboxObjectiveResult` (findings). */
26
+ export declare function toFindingsObjectiveResult(score: ExpectationScore): SandboxObjectiveResult;
27
+ /** Score a candidate's output against a fixture's `findings` objective, if it declares one. */
28
+ export declare function objectiveFor(fixture: SandboxFixture, output: string): SandboxObjectiveResult | null;
29
+ /**
30
+ * How many rubric dimensions the judge actually scored with a usable numeric value. The
31
+ * run-driver treats a count of 0 as a grading FAILURE (record an error on the cell) rather
32
+ * than letting {@link coerceJudgeScores} silently floor every dimension to 1 — an
33
+ * unparseable / empty / reasoning-only judge reply must not masquerade as a confident
34
+ * bottom-of-scale grade.
35
+ */
36
+ export declare function gradedDimensionCount(rubric: Rubric, raw: unknown): number;
37
+ //# sourceMappingURL=sandbox.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/sandbox/sandbox.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EAGZ,MAAM,sBAAsB,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAOjD,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAIxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAyClE;AAED,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,QAUrB,CAAA;AAEX,uGAAuG;AACvG,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,MAAM,CAsBR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAavF;AAED,mGAAmG;AACnG,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,GAAG,sBAAsB,CAWzF;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAC1B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACb,sBAAsB,GAAG,IAAI,CAI/B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAOzE"}
@@ -0,0 +1,178 @@
1
+ import { FINAL_ANSWER_IN_REPLY } from '@cat-factory/agents';
2
+ import { renderExpectationBrief, scoreExpectations, } from '@cat-factory/sandbox';
3
+ // The robust LLM-reply JSON extractor lives in the kernel (one copy shared by the
4
+ // requirements reviewer, the document planner, and the Sandbox judge). Re-exported here
5
+ // so the run-driver imports it alongside the other judge helpers.
6
+ export { extractJson } from '@cat-factory/kernel';
7
+ // Pure helpers for the Sandbox run-driver + judge. Kept side-effect-free (no LLM/IO,
8
+ // no clock/identity) so the candidate-input rendering, judge-prompt assembly, score
9
+ // coercion and objective projection are deterministic and unit-testable; the service
10
+ // wraps them with the model-provider calls + persistence.
11
+ /** Split a model catalog id (`provider:model`) into a {@link ModelRef}. */
12
+ export function parseModelCatalogId(id) {
13
+ const idx = id.indexOf(':');
14
+ if (idx === -1)
15
+ return { provider: id, model: '' };
16
+ return { provider: id.slice(0, idx), model: id.slice(idx + 1) };
17
+ }
18
+ /**
19
+ * Render an inline fixture's payload into the task input the candidate reasons over (its
20
+ * system prompt carries the role instructions) and the judge grades against. Defensive:
21
+ * the payload is a `Record<string, unknown>` matching a `RequirementsContext` /
22
+ * `ClarityContext` (a `block` + optional `docs`/`tasks`) or a reviewer `AgentRunContext`
23
+ * (a `block` + the work-to-review in `priorOutputs`), so it reads each field tolerantly.
24
+ */
25
+ export function renderFixtureInput(fixture) {
26
+ const payload = (fixture.payload ?? {});
27
+ const parts = [];
28
+ const block = payload.block;
29
+ if (block) {
30
+ const heading = block.type ? `${block.title ?? 'Untitled'} (${block.type})` : block.title;
31
+ parts.push(`# ${heading ?? 'Untitled'}`);
32
+ if (block.description)
33
+ parts.push(block.description);
34
+ }
35
+ const docs = Array.isArray(payload.docs) ? payload.docs : [];
36
+ if (docs.length > 0) {
37
+ parts.push('## Linked documents');
38
+ for (const doc of docs) {
39
+ const d = doc;
40
+ parts.push(`### ${d.title ?? 'Document'}\n${d.body ?? d.content ?? ''}`.trim());
41
+ }
42
+ }
43
+ const tasks = Array.isArray(payload.tasks) ? payload.tasks : [];
44
+ if (tasks.length > 0) {
45
+ parts.push('## Linked tracker issues');
46
+ for (const task of tasks) {
47
+ const t = task;
48
+ parts.push(`- ${t.title ?? 'Issue'}${t.body ? `: ${t.body}` : ''}`);
49
+ }
50
+ }
51
+ const priorOutputs = Array.isArray(payload.priorOutputs)
52
+ ? payload.priorOutputs
53
+ : [];
54
+ if (priorOutputs.length > 0) {
55
+ parts.push('## Work from earlier agents');
56
+ for (const prior of priorOutputs) {
57
+ const p = prior;
58
+ parts.push(`### ${p.agentKind ?? 'agent'}\n${p.output ?? ''}`.trim());
59
+ }
60
+ }
61
+ return parts.join('\n\n').trim();
62
+ }
63
+ /** System prompt for the Sandbox judge — a reference-free rubric grader. */
64
+ export const JUDGE_SYSTEM_PROMPT = [
65
+ "You are a meticulous, impartial evaluator. You grade an AI agent's output for a given",
66
+ 'task against a fixed rubric, scoring each dimension from 1 (poor) to 5 (excellent).',
67
+ 'Judge ONLY against the task input and the candidate output you are given — never invent',
68
+ 'context. Be calibrated: reserve 5 for genuinely excellent work and 1 for output that',
69
+ 'fails the dimension outright. Your entire visible reply MUST be the requested JSON object',
70
+ 'and nothing else.',
71
+ // The judge's deliverable IS its (parsed) final reply, so append the shared directive
72
+ // that keeps reasoning models from emitting the answer into a hidden thinking channel.
73
+ FINAL_ANSWER_IN_REPLY,
74
+ ].join(' ');
75
+ /** Build the judge user prompt for one cell: rubric + task input + candidate output + expectations. */
76
+ export function buildJudgePrompt(rubric, taskInput, output, expectations) {
77
+ const dims = rubric.dimensions
78
+ .map((d) => `- "${d.key}" — ${d.label}: ${d.description}`)
79
+ .join('\n');
80
+ const brief = renderExpectationBrief(expectations);
81
+ return [
82
+ `You are grading an AI agent's output for a "${rubric.task}" task.`,
83
+ '',
84
+ '## Task input',
85
+ taskInput || '(no task input was supplied)',
86
+ '',
87
+ '## Candidate output',
88
+ output.trim() || '(the candidate produced no output)',
89
+ '',
90
+ '## Rubric — score every dimension from 1 to 5',
91
+ dims,
92
+ ...(brief ? ['', brief] : []),
93
+ '',
94
+ 'Respond with ONLY this JSON object (no prose, no code fences):',
95
+ '{"scores":[{"key":"<dimension key>","score":<1-5>,"rationale":"<one short sentence>"}]}',
96
+ 'Include every dimension key exactly once.',
97
+ ].join('\n');
98
+ }
99
+ /**
100
+ * Coerce a judge's raw JSON into one score per rubric dimension. Scores are clamped to
101
+ * [1,5]; a dimension the judge omitted (or scored non-numerically) defaults to 1 with a
102
+ * note, so the weighted mean never silently drops a dimension from its denominator.
103
+ */
104
+ export function coerceJudgeScores(rubric, raw) {
105
+ const byKey = scoreEntriesByKey(raw);
106
+ return rubric.dimensions.map((dim) => {
107
+ const found = byKey.get(dim.key);
108
+ const score = clampScore(found?.score);
109
+ const rationale = typeof found?.rationale === 'string' && found.rationale.trim()
110
+ ? found.rationale.trim()
111
+ : score === null
112
+ ? 'Judge did not score this dimension.'
113
+ : '';
114
+ return { key: dim.key, score: score ?? 1, rationale };
115
+ });
116
+ }
117
+ /** Project the deterministic objective score into the wire `SandboxObjectiveResult` (findings). */
118
+ export function toFindingsObjectiveResult(score) {
119
+ return {
120
+ kind: 'findings',
121
+ pass: score.missedHighImpact.length === 0,
122
+ detail: `Caught ${score.caught.length}/${score.caught.length + score.missed.length} expected findings; impact recall ${score.impactRecall}, wow bonus ${score.wowBonus}.`,
123
+ impactRecall: score.impactRecall,
124
+ wowBonus: score.wowBonus,
125
+ caught: score.caught.length,
126
+ total: score.caught.length + score.missed.length,
127
+ missedHighImpact: score.missedHighImpact,
128
+ };
129
+ }
130
+ /** Score a candidate's output against a fixture's `findings` objective, if it declares one. */
131
+ export function objectiveFor(fixture, output) {
132
+ const objective = fixture.objective;
133
+ if (!objective || objective.kind !== 'findings')
134
+ return null;
135
+ return toFindingsObjectiveResult(scoreExpectations(objective.expectations, output));
136
+ }
137
+ /**
138
+ * How many rubric dimensions the judge actually scored with a usable numeric value. The
139
+ * run-driver treats a count of 0 as a grading FAILURE (record an error on the cell) rather
140
+ * than letting {@link coerceJudgeScores} silently floor every dimension to 1 — an
141
+ * unparseable / empty / reasoning-only judge reply must not masquerade as a confident
142
+ * bottom-of-scale grade.
143
+ */
144
+ export function gradedDimensionCount(rubric, raw) {
145
+ const byKey = scoreEntriesByKey(raw);
146
+ let count = 0;
147
+ for (const dim of rubric.dimensions) {
148
+ if (clampScore(byKey.get(dim.key)?.score) !== null)
149
+ count++;
150
+ }
151
+ return count;
152
+ }
153
+ function scoreEntriesByKey(raw) {
154
+ const byKey = new Map();
155
+ for (const entry of extractScoreArray(raw)) {
156
+ if (entry &&
157
+ typeof entry === 'object' &&
158
+ typeof entry.key === 'string') {
159
+ byKey.set(entry.key, entry);
160
+ }
161
+ }
162
+ return byKey;
163
+ }
164
+ function extractScoreArray(raw) {
165
+ if (Array.isArray(raw))
166
+ return raw;
167
+ if (raw && typeof raw === 'object' && Array.isArray(raw.scores)) {
168
+ return raw.scores;
169
+ }
170
+ return [];
171
+ }
172
+ function clampScore(value) {
173
+ const n = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : NaN;
174
+ if (!Number.isFinite(n))
175
+ return null;
176
+ return Math.min(5, Math.max(1, n));
177
+ }
178
+ //# sourceMappingURL=sandbox.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.logic.js","sourceRoot":"","sources":["../../../src/modules/sandbox/sandbox.logic.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,13 +25,14 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "ai": "^6.0.209",
28
- "@cat-factory/agents": "0.14.6",
29
- "@cat-factory/contracts": "0.24.0",
30
- "@cat-factory/integrations": "0.19.0",
31
- "@cat-factory/kernel": "0.27.0",
32
- "@cat-factory/prompt-fragments": "0.7.21",
33
- "@cat-factory/spend": "0.9.0",
34
- "@cat-factory/workspaces": "0.7.33"
28
+ "@cat-factory/agents": "0.14.7",
29
+ "@cat-factory/contracts": "0.25.0",
30
+ "@cat-factory/integrations": "0.20.0",
31
+ "@cat-factory/kernel": "0.28.0",
32
+ "@cat-factory/prompt-fragments": "0.7.22",
33
+ "@cat-factory/sandbox": "0.8.0",
34
+ "@cat-factory/spend": "0.9.1",
35
+ "@cat-factory/workspaces": "0.7.34"
35
36
  },
36
37
  "devDependencies": {
37
38
  "typescript": "7.0.1-rc",