@cat-factory/orchestration 0.174.0 → 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.
- package/dist/container/dependencies.d.ts +9 -1
- package/dist/container/dependencies.d.ts.map +1 -1
- package/dist/container/module-shapes.d.ts +5 -0
- package/dist/container/module-shapes.d.ts.map +1 -1
- package/dist/container/modules.d.ts +8 -20
- package/dist/container/modules.d.ts.map +1 -1
- package/dist/container/modules.js +20 -174
- package/dist/container/modules.js.map +1 -1
- package/dist/container/review-modules.d.ts +21 -0
- package/dist/container/review-modules.d.ts.map +1 -0
- package/dist/container/review-modules.js +203 -0
- package/dist/container/review-modules.js.map +1 -0
- package/dist/container.d.ts +3 -2
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +2 -1
- package/dist/container.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/agentSettings/WorkspaceAgentSettingsService.d.ts +33 -0
- package/dist/modules/agentSettings/WorkspaceAgentSettingsService.d.ts.map +1 -0
- package/dist/modules/agentSettings/WorkspaceAgentSettingsService.js +54 -0
- package/dist/modules/agentSettings/WorkspaceAgentSettingsService.js.map +1 -0
- package/dist/modules/board/BoardService.d.ts +22 -22
- package/dist/modules/board/BoardService.d.ts.map +1 -1
- package/dist/modules/board/BoardService.js +42 -47
- package/dist/modules/board/BoardService.js.map +1 -1
- package/dist/modules/board/board.logic.d.ts +7 -0
- package/dist/modules/board/board.logic.d.ts.map +1 -1
- package/dist/modules/board/layoutWrites.d.ts +35 -0
- package/dist/modules/board/layoutWrites.d.ts.map +1 -0
- package/dist/modules/board/layoutWrites.js +74 -0
- package/dist/modules/board/layoutWrites.js.map +1 -0
- package/dist/modules/board/mountProjection.d.ts +21 -0
- package/dist/modules/board/mountProjection.d.ts.map +1 -0
- package/dist/modules/board/mountProjection.js +49 -0
- package/dist/modules/board/mountProjection.js.map +1 -0
- package/dist/modules/brainstorm/BrainstormService.d.ts +3 -2
- package/dist/modules/brainstorm/BrainstormService.d.ts.map +1 -1
- package/dist/modules/brainstorm/BrainstormService.js +14 -10
- package/dist/modules/brainstorm/BrainstormService.js.map +1 -1
- package/dist/modules/brainstorm/brainstorm.logic.d.ts +9 -1
- package/dist/modules/brainstorm/brainstorm.logic.d.ts.map +1 -1
- package/dist/modules/brainstorm/brainstorm.logic.js +15 -9
- package/dist/modules/brainstorm/brainstorm.logic.js.map +1 -1
- package/dist/modules/clarity/ClarityReviewService.d.ts +3 -3
- package/dist/modules/clarity/ClarityReviewService.d.ts.map +1 -1
- package/dist/modules/clarity/ClarityReviewService.js +5 -4
- package/dist/modules/clarity/ClarityReviewService.js.map +1 -1
- package/dist/modules/clarity/clarity.logic.d.ts +8 -1
- package/dist/modules/clarity/clarity.logic.d.ts.map +1 -1
- package/dist/modules/clarity/clarity.logic.js +14 -7
- package/dist/modules/clarity/clarity.logic.js.map +1 -1
- package/dist/modules/execution/AgentContextBuilder.d.ts +23 -1
- package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
- package/dist/modules/execution/AgentContextBuilder.js +36 -1
- package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts +8 -1
- package/dist/modules/execution/ExecutionServiceDependencies.d.ts.map +1 -1
- package/dist/modules/execution/gate-window-controllers.d.ts +1 -0
- package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
- package/dist/modules/execution/run-context-admission.d.ts +1 -1
- package/dist/modules/execution/run-context-admission.d.ts.map +1 -1
- package/dist/modules/execution/run-context-admission.js +1 -0
- package/dist/modules/execution/run-context-admission.js.map +1 -1
- package/dist/modules/requirements/RequirementReviewService.d.ts +9 -2
- package/dist/modules/requirements/RequirementReviewService.d.ts.map +1 -1
- package/dist/modules/requirements/RequirementReviewService.js +77 -16
- package/dist/modules/requirements/RequirementReviewService.js.map +1 -1
- package/dist/modules/requirements/requirements.logic.d.ts +61 -21
- package/dist/modules/requirements/requirements.logic.d.ts.map +1 -1
- package/dist/modules/requirements/requirements.logic.js +109 -20
- package/dist/modules/requirements/requirements.logic.js.map +1 -1
- package/dist/modules/review/IterativeReviewService.d.ts +42 -3
- package/dist/modules/review/IterativeReviewService.d.ts.map +1 -1
- package/dist/modules/review/IterativeReviewService.js +31 -4
- package/dist/modules/review/IterativeReviewService.js.map +1 -1
- package/dist/modules/review/product-context.d.ts +23 -0
- package/dist/modules/review/product-context.d.ts.map +1 -0
- package/dist/modules/review/product-context.js +47 -0
- package/dist/modules/review/product-context.js.map +1 -0
- package/package.json +11 -11
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Block, RequirementConcernLevel, RequirementReviewItem } from '@cat-factory/kernel';
|
|
1
|
+
import type { Block, OwnServiceContext, RequirementConcernLevel, RequirementReviewItem } from '@cat-factory/kernel';
|
|
2
|
+
import type { RecommendationSource } from '@cat-factory/contracts';
|
|
2
3
|
/** A requirements/PRD/RFC document linked to the block as context. */
|
|
3
4
|
export interface ReviewContextDoc {
|
|
4
5
|
title: string;
|
|
@@ -18,11 +19,31 @@ export interface RequirementsContext {
|
|
|
18
19
|
block: Pick<Block, 'title' | 'type' | 'description'>;
|
|
19
20
|
docs: ReviewContextDoc[];
|
|
20
21
|
tasks: ReviewContextTask[];
|
|
22
|
+
/**
|
|
23
|
+
* Which system this work belongs to — the enclosing service frame, or the positive reason there
|
|
24
|
+
* is none. The reviewer runs INLINE with no checkout, so this is its only means of knowing what
|
|
25
|
+
* software is under discussion; `renderProductContext` states the unresolved case rather than
|
|
26
|
+
* omitting it. Absent only for a caller that does not resolve it (a test fake), which renders
|
|
27
|
+
* nothing either way.
|
|
28
|
+
*/
|
|
29
|
+
service?: OwnServiceContext;
|
|
30
|
+
/**
|
|
31
|
+
* One-paragraph intent lifted from the service repo's committed `spec/overview.md`, when the
|
|
32
|
+
* repo is readable. Grounds the reviewer in what the service actually is, beyond its board
|
|
33
|
+
* title. Absent when unwired, unreadable or empty.
|
|
34
|
+
*/
|
|
35
|
+
specIntent?: string;
|
|
36
|
+
/**
|
|
37
|
+
* The converged direction an upstream `requirements-brainstorm` dialogue settled on. When
|
|
38
|
+
* present it is the primary subject the reviewer critiques — the rough description that fed the
|
|
39
|
+
* dialogue is kept ALONGSIDE it (see {@link renderRequirements}) rather than replaced.
|
|
40
|
+
*/
|
|
41
|
+
refinedDirection?: string;
|
|
21
42
|
/**
|
|
22
43
|
* The standardized requirements document produced by a prior incorporation. When
|
|
23
44
|
* present (a re-review or a redo), it is the authoritative requirements text the
|
|
24
|
-
* reviewer/rework reasons over — the original description + linked context
|
|
25
|
-
* background reference. Absent on the first pass.
|
|
45
|
+
* reviewer/rework reasons over — the original description + linked context stay in the prompt
|
|
46
|
+
* as background reference. Absent on the first pass.
|
|
26
47
|
*/
|
|
27
48
|
incorporatedDoc?: string;
|
|
28
49
|
/**
|
|
@@ -32,12 +53,33 @@ export interface RequirementsContext {
|
|
|
32
53
|
reworkFeedback?: string;
|
|
33
54
|
}
|
|
34
55
|
/**
|
|
35
|
-
* Render the
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
|
|
56
|
+
* Render the system this work belongs to (shared renderer — see `review/product-context.ts`, which
|
|
57
|
+
* holds why the unresolved case is stated rather than omitted), plus the service's own statement of
|
|
58
|
+
* intent from its committed `spec/overview.md` when one was readable.
|
|
59
|
+
*/
|
|
60
|
+
export declare function renderProductContext(ctx: RequirementsContext): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Render the block's "collected requirements" as a single Markdown document — the system the work
|
|
63
|
+
* belongs to, the current subject (the standardized incorporated document on a later cycle, else
|
|
64
|
+
* the brainstormed direction, else the raw description), and any linked PRD/RFC pages and tracker
|
|
65
|
+
* issues. Used both as the reviewer's input and as the base the incorporate step rewrites.
|
|
66
|
+
*
|
|
67
|
+
* A derived subject (an incorporated document, a brainstormed direction) NEVER displaces the
|
|
68
|
+
* requester's own words: it is rendered above them, and the original description stays in the
|
|
69
|
+
* prompt labelled as the original request. Displacement was how a single stray assumption became
|
|
70
|
+
* permanent — the incorporated document is authoritative on the next pass, so once one pass wrote
|
|
71
|
+
* an assumed product into it, no later pass could see the request it came from, and every
|
|
72
|
+
* re-review re-derived from the drifted text. Keeping the original in view is what lets both the
|
|
73
|
+
* reviewer and a human notice the drift.
|
|
39
74
|
*/
|
|
40
75
|
export declare function renderRequirements(ctx: RequirementsContext): string;
|
|
76
|
+
/**
|
|
77
|
+
* Whether the context identifies the system under discussion. Read by the Requirement Writer path
|
|
78
|
+
* to decide whether a product-specific WEB SEARCH is legitimate: searching about a product the
|
|
79
|
+
* model had to guess at launders an invention into cited fact, which is far more convincing to a
|
|
80
|
+
* human than the guess would have been.
|
|
81
|
+
*/
|
|
82
|
+
export declare function productIsIdentified(ctx: RequirementsContext): boolean;
|
|
41
83
|
export declare function buildReviewPrompt(ctx: RequirementsContext): string;
|
|
42
84
|
/** Pull the first JSON value out of a model response (tolerates code fences). */
|
|
43
85
|
export { extractJson } from '@cat-factory/kernel';
|
|
@@ -85,15 +127,19 @@ export interface RecommendationGrounding {
|
|
|
85
127
|
* differently" steer for a single re-requested recommendation.
|
|
86
128
|
*/
|
|
87
129
|
export declare function buildRecommendationPrompt(ctx: RequirementsContext, findings: RequirementReviewItem[], grounding: RecommendationGrounding, note?: string): string;
|
|
130
|
+
/** One Writer suggestion as parsed off the model's reply, before it is persisted. */
|
|
131
|
+
export interface WriterSuggestion {
|
|
132
|
+
recommendation: string;
|
|
133
|
+
fromStandard: string | null;
|
|
134
|
+
/** The precedence level the Writer reports it came from; null when it reported none. */
|
|
135
|
+
groundedIn: RecommendationSource | null;
|
|
136
|
+
}
|
|
88
137
|
/**
|
|
89
|
-
* Coerce the Requirement Writer's parsed JSON into a map of itemId → {
|
|
90
|
-
*
|
|
138
|
+
* Coerce the Requirement Writer's parsed JSON into a map of itemId → {@link WriterSuggestion}.
|
|
139
|
+
* Tolerant of a bare array or a `{recommendations:[...]}` wrapper; entries
|
|
91
140
|
* missing a recommendation string are dropped.
|
|
92
141
|
*/
|
|
93
|
-
export declare function coerceRecommendations(raw: unknown): Map<string,
|
|
94
|
-
recommendation: string;
|
|
95
|
-
fromStandard: string | null;
|
|
96
|
-
}>;
|
|
142
|
+
export declare function coerceRecommendations(raw: unknown): Map<string, WriterSuggestion>;
|
|
97
143
|
/**
|
|
98
144
|
* Coerce the Writer's JSON for a MULTI-finding chunk into a map keyed by FINDING id. Prefers the
|
|
99
145
|
* echoed `itemId` to route each suggestion to its finding (so two findings that share an identical
|
|
@@ -104,10 +150,7 @@ export declare function coerceRecommendations(raw: unknown): Map<string, {
|
|
|
104
150
|
* the order {@link buildRecommendationPrompt} lists them and asks the Writer to answer them in — so
|
|
105
151
|
* a response that echoes no ids still routes correctly as long as it preserves that order.
|
|
106
152
|
*/
|
|
107
|
-
export declare function coerceChunkRecommendations(raw: unknown, findings: RequirementReviewItem[]): Map<string,
|
|
108
|
-
recommendation: string;
|
|
109
|
-
fromStandard: string | null;
|
|
110
|
-
}>;
|
|
153
|
+
export declare function coerceChunkRecommendations(raw: unknown, findings: RequirementReviewItem[]): Map<string, WriterSuggestion>;
|
|
111
154
|
/**
|
|
112
155
|
* Coerce the Writer's JSON for a SINGLE-finding call. The per-finding recommendation flow
|
|
113
156
|
* prompts the Writer with exactly one finding, so it must tolerate a missing/garbled `itemId`:
|
|
@@ -117,10 +160,7 @@ export declare function coerceChunkRecommendations(raw: unknown, findings: Requi
|
|
|
117
160
|
* lone entry with a recommendation string, take it regardless of the id. Returns null only when
|
|
118
161
|
* there is genuinely no usable recommendation.
|
|
119
162
|
*/
|
|
120
|
-
export declare function coerceSingleRecommendation(raw: unknown, itemId: string):
|
|
121
|
-
recommendation: string;
|
|
122
|
-
fromStandard: string | null;
|
|
123
|
-
} | null;
|
|
163
|
+
export declare function coerceSingleRecommendation(raw: unknown, itemId: string): WriterSuggestion | null;
|
|
124
164
|
/**
|
|
125
165
|
* Resolve the live review item a recommendation answers. Prefers the snapshotted `itemId` (the
|
|
126
166
|
* primary anchor, so two findings with identical title+detail stay distinct), then falls back to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/requirements/requirements.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,uBAAuB,EACvB,qBAAqB,EAGtB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"requirements.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/requirements/requirements.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { REQUIREMENT_CONCERN_RANK } from '@cat-factory/contracts';
|
|
2
|
+
import { productIsIdentifiedFrom, renderProductContextLines } from '../review/product-context.js';
|
|
2
3
|
// Pure logic for the requirements-review agent: assembling the "collected
|
|
3
4
|
// requirements" text from a block + its linked context, building the review and
|
|
4
5
|
// incorporate prompts, and coercing the model's JSON response into review items.
|
|
@@ -8,25 +9,59 @@ const CATEGORIES = ['gap', 'clarification', 'assumption', 'risk', 'question'];
|
|
|
8
9
|
const SEVERITIES = ['low', 'medium', 'high'];
|
|
9
10
|
const SEVERITY_RANK = { high: 0, medium: 1, low: 2 };
|
|
10
11
|
/**
|
|
11
|
-
* Render the
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
|
|
12
|
+
* Render the system this work belongs to (shared renderer — see `review/product-context.ts`, which
|
|
13
|
+
* holds why the unresolved case is stated rather than omitted), plus the service's own statement of
|
|
14
|
+
* intent from its committed `spec/overview.md` when one was readable.
|
|
15
|
+
*/
|
|
16
|
+
export function renderProductContext(ctx) {
|
|
17
|
+
return renderProductContextLines(ctx.service, 'reason', {
|
|
18
|
+
label: 'From the service specification (`spec/overview.md`):',
|
|
19
|
+
body: ctx.specIntent ?? '',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Render the block's "collected requirements" as a single Markdown document — the system the work
|
|
24
|
+
* belongs to, the current subject (the standardized incorporated document on a later cycle, else
|
|
25
|
+
* the brainstormed direction, else the raw description), and any linked PRD/RFC pages and tracker
|
|
26
|
+
* issues. Used both as the reviewer's input and as the base the incorporate step rewrites.
|
|
27
|
+
*
|
|
28
|
+
* A derived subject (an incorporated document, a brainstormed direction) NEVER displaces the
|
|
29
|
+
* requester's own words: it is rendered above them, and the original description stays in the
|
|
30
|
+
* prompt labelled as the original request. Displacement was how a single stray assumption became
|
|
31
|
+
* permanent — the incorporated document is authoritative on the next pass, so once one pass wrote
|
|
32
|
+
* an assumed product into it, no later pass could see the request it came from, and every
|
|
33
|
+
* re-review re-derived from the drifted text. Keeping the original in view is what lets both the
|
|
34
|
+
* reviewer and a human notice the drift.
|
|
15
35
|
*/
|
|
16
36
|
export function renderRequirements(ctx) {
|
|
17
|
-
const
|
|
37
|
+
const heading = [`# ${ctx.block.title} (${ctx.block.type})`, ...renderProductContext(ctx)];
|
|
38
|
+
const original = ctx.block.description?.trim();
|
|
39
|
+
const derived = ctx.incorporatedDoc?.trim()
|
|
40
|
+
? {
|
|
41
|
+
title: 'Current standardized requirements (under review)',
|
|
42
|
+
body: ctx.incorporatedDoc.trim(),
|
|
43
|
+
}
|
|
44
|
+
: ctx.refinedDirection?.trim()
|
|
45
|
+
? {
|
|
46
|
+
title: 'Requirements direction (agreed in the brainstorm)',
|
|
47
|
+
body: ctx.refinedDirection.trim(),
|
|
48
|
+
}
|
|
49
|
+
: undefined;
|
|
50
|
+
const lines = derived
|
|
18
51
|
? [
|
|
19
|
-
|
|
52
|
+
...heading,
|
|
20
53
|
'',
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
54
|
+
`## ${derived.title}`,
|
|
55
|
+
derived.body,
|
|
56
|
+
'',
|
|
57
|
+
'## Original request (as written by the requester)',
|
|
58
|
+
original || '(no description provided)',
|
|
26
59
|
'',
|
|
27
|
-
'
|
|
28
|
-
|
|
29
|
-
|
|
60
|
+
'The section above is derived from this original request. Where the two disagree about ' +
|
|
61
|
+
'what is being built, treat the derived document as the current subject but FLAG the ' +
|
|
62
|
+
'divergence — it means an earlier pass drifted.',
|
|
63
|
+
]
|
|
64
|
+
: [...heading, '', '## Description', original || '(no description provided)'];
|
|
30
65
|
if (ctx.docs.length) {
|
|
31
66
|
lines.push('', '## Linked requirement / PRD / RFC documents');
|
|
32
67
|
for (const d of ctx.docs)
|
|
@@ -40,12 +75,29 @@ export function renderRequirements(ctx) {
|
|
|
40
75
|
}
|
|
41
76
|
return lines.join('\n');
|
|
42
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Whether the context identifies the system under discussion. Read by the Requirement Writer path
|
|
80
|
+
* to decide whether a product-specific WEB SEARCH is legitimate: searching about a product the
|
|
81
|
+
* model had to guess at launders an invention into cited fact, which is far more convincing to a
|
|
82
|
+
* human than the guess would have been.
|
|
83
|
+
*/
|
|
84
|
+
export function productIsIdentified(ctx) {
|
|
85
|
+
return productIsIdentifiedFrom(ctx.service);
|
|
86
|
+
}
|
|
43
87
|
export function buildReviewPrompt(ctx) {
|
|
44
88
|
return [
|
|
45
89
|
'Here are the collected requirements to review:',
|
|
46
90
|
'',
|
|
47
91
|
renderRequirements(ctx),
|
|
48
92
|
'',
|
|
93
|
+
...(productIsIdentified(ctx)
|
|
94
|
+
? []
|
|
95
|
+
: [
|
|
96
|
+
'Note: the context above does not identify which system this work belongs to. Do not ' +
|
|
97
|
+
'pick one. If knowing it matters for this work, raise THAT as a finding (a `gap` — ' +
|
|
98
|
+
'which service / product is this for?) instead of assuming an answer.',
|
|
99
|
+
'',
|
|
100
|
+
]),
|
|
49
101
|
'Produce a JSON object of this exact shape:',
|
|
50
102
|
'{',
|
|
51
103
|
' "items": [',
|
|
@@ -224,9 +276,28 @@ export function buildRecommendationPrompt(ctx, findings, grounding, note) {
|
|
|
224
276
|
'recommend; the Architect step owns the design.', '', 'Return ONLY the JSON object described in your instructions (one entry per itemId above).');
|
|
225
277
|
return lines.join('\n');
|
|
226
278
|
}
|
|
279
|
+
const RECOMMENDATION_SOURCES = [
|
|
280
|
+
'standard',
|
|
281
|
+
'project-spec',
|
|
282
|
+
'web',
|
|
283
|
+
'general-practice',
|
|
284
|
+
];
|
|
227
285
|
/**
|
|
228
|
-
* Coerce the
|
|
229
|
-
*
|
|
286
|
+
* Coerce the Writer's reported grounding level, or null.
|
|
287
|
+
*
|
|
288
|
+
* Null rather than a default, deliberately: a missing or unrecognised value means the Writer did
|
|
289
|
+
* not say, and filling that in with `general-practice` would invent the very provenance claim this
|
|
290
|
+
* field exists to make trustworthy — in the direction that makes a well-grounded answer look
|
|
291
|
+
* weak, while a garbled `standard` would make a guess look authoritative.
|
|
292
|
+
*/
|
|
293
|
+
function coerceSource(value) {
|
|
294
|
+
return RECOMMENDATION_SOURCES.includes(value)
|
|
295
|
+
? value
|
|
296
|
+
: null;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Coerce the Requirement Writer's parsed JSON into a map of itemId → {@link WriterSuggestion}.
|
|
300
|
+
* Tolerant of a bare array or a `{recommendations:[...]}` wrapper; entries
|
|
230
301
|
* missing a recommendation string are dropped.
|
|
231
302
|
*/
|
|
232
303
|
export function coerceRecommendations(raw) {
|
|
@@ -245,7 +316,11 @@ export function coerceRecommendations(raw) {
|
|
|
245
316
|
if (!itemId || !recommendation)
|
|
246
317
|
continue;
|
|
247
318
|
const fromStandard = asString(obj.fromStandard);
|
|
248
|
-
out.set(itemId, {
|
|
319
|
+
out.set(itemId, {
|
|
320
|
+
recommendation,
|
|
321
|
+
fromStandard: fromStandard || null,
|
|
322
|
+
groundedIn: coerceSource(obj.groundedIn),
|
|
323
|
+
});
|
|
249
324
|
}
|
|
250
325
|
return out;
|
|
251
326
|
}
|
|
@@ -271,6 +346,7 @@ export function coerceChunkRecommendations(raw, findings) {
|
|
|
271
346
|
itemId: asString(obj.itemId),
|
|
272
347
|
recommendation: asString(obj.recommendation),
|
|
273
348
|
fromStandard: asString(obj.fromStandard) || null,
|
|
349
|
+
groundedIn: coerceSource(obj.groundedIn),
|
|
274
350
|
}))
|
|
275
351
|
.filter((e) => e.recommendation);
|
|
276
352
|
const out = new Map();
|
|
@@ -279,7 +355,11 @@ export function coerceChunkRecommendations(raw, findings) {
|
|
|
279
355
|
// Pass 1: route each entry whose echoed itemId names a finding in this chunk.
|
|
280
356
|
entries.forEach((e, idx) => {
|
|
281
357
|
if (e.itemId && findingIds.has(e.itemId) && !out.has(e.itemId)) {
|
|
282
|
-
out.set(e.itemId, {
|
|
358
|
+
out.set(e.itemId, {
|
|
359
|
+
recommendation: e.recommendation,
|
|
360
|
+
fromStandard: e.fromStandard,
|
|
361
|
+
groundedIn: e.groundedIn,
|
|
362
|
+
});
|
|
283
363
|
consumed.add(idx);
|
|
284
364
|
}
|
|
285
365
|
});
|
|
@@ -290,7 +370,11 @@ export function coerceChunkRecommendations(raw, findings) {
|
|
|
290
370
|
if (out.has(f.id) || li >= leftover.length)
|
|
291
371
|
continue;
|
|
292
372
|
const e = leftover[li++];
|
|
293
|
-
out.set(f.id, {
|
|
373
|
+
out.set(f.id, {
|
|
374
|
+
recommendation: e.recommendation,
|
|
375
|
+
fromStandard: e.fromStandard,
|
|
376
|
+
groundedIn: e.groundedIn,
|
|
377
|
+
});
|
|
294
378
|
}
|
|
295
379
|
return out;
|
|
296
380
|
}
|
|
@@ -315,13 +399,18 @@ export function coerceSingleRecommendation(raw, itemId) {
|
|
|
315
399
|
itemId: asString(obj.itemId),
|
|
316
400
|
recommendation: asString(obj.recommendation),
|
|
317
401
|
fromStandard: asString(obj.fromStandard) || null,
|
|
402
|
+
groundedIn: coerceSource(obj.groundedIn),
|
|
318
403
|
}))
|
|
319
404
|
.filter((e) => e.recommendation);
|
|
320
405
|
if (entries.length === 0)
|
|
321
406
|
return null;
|
|
322
407
|
const chosen = entries.find((e) => e.itemId === itemId) ?? (entries.length === 1 ? entries[0] : null);
|
|
323
408
|
return chosen
|
|
324
|
-
? {
|
|
409
|
+
? {
|
|
410
|
+
recommendation: chosen.recommendation,
|
|
411
|
+
fromStandard: chosen.fromStandard,
|
|
412
|
+
groundedIn: chosen.groundedIn,
|
|
413
|
+
}
|
|
325
414
|
: null;
|
|
326
415
|
}
|
|
327
416
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.logic.js","sourceRoot":"","sources":["../../../src/modules/requirements/requirements.logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requirements.logic.js","sourceRoot":"","sources":["../../../src/modules/requirements/requirements.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Block, BlockRepository, Clock, IdGenerator, ModelProvider, ModelProviderResolver, ModelRef, NotificationType, RequirementConcernLevel, RequirementReviewItem, RequirementReviewStatus, ReviewItemStatus } from '@cat-factory/kernel';
|
|
1
|
+
import type { Block, BlockRepository, Clock, IdGenerator, ModelProvider, ModelProviderResolver, ModelRef, NotificationType, OwnServiceContext, RequirementConcernLevel, RequirementReviewItem, RequirementReviewStatus, ReviewItemStatus } from '@cat-factory/kernel';
|
|
2
|
+
import { type BespokeSystemPrompt } from '@cat-factory/agents';
|
|
2
3
|
import { type ResolveBlockRunContext } from '../../inlineScope.js';
|
|
3
4
|
import type { NotificationService } from '../notifications/NotificationService.js';
|
|
4
5
|
/** The fields every review (requirements or clarity) shares; the doc field is per-kind. */
|
|
@@ -63,6 +64,16 @@ export interface IterativeReviewDeps {
|
|
|
63
64
|
resolveRunContext?: ResolveBlockRunContext;
|
|
64
65
|
/** Raises a notification when a review yields findings. Optional. */
|
|
65
66
|
notificationService?: NotificationService;
|
|
67
|
+
/**
|
|
68
|
+
* The workspace's live system prompt for an agent kind, when it has edited one from the prompt
|
|
69
|
+
* editor — the same append-only revision log the engine reads per dispatch, reaching the inline
|
|
70
|
+
* review kinds here.
|
|
71
|
+
*
|
|
72
|
+
* They were the one prompt-assembly path that ignored it: the editor accepts any kind id, so a
|
|
73
|
+
* workspace could save an override for `requirements-review` and have it silently never run.
|
|
74
|
+
* Optional so a standalone/unit construction still works; absent ⇒ the shipped prompt.
|
|
75
|
+
*/
|
|
76
|
+
resolveSystemPromptOverride?: (workspaceId: string, agentKind: string) => Promise<string | undefined>;
|
|
66
77
|
}
|
|
67
78
|
/**
|
|
68
79
|
* Stateless, synchronous iterative reviewer (no container, no durable driver). The LLM is
|
|
@@ -90,8 +101,15 @@ export declare abstract class IterativeReviewService<TReview extends ReviewCommo
|
|
|
90
101
|
protected abstract readonly reviewAgentKind: string;
|
|
91
102
|
/** The rework agent kind for observability (e.g. 'requirements-rework'). */
|
|
92
103
|
protected abstract readonly reworkAgentKind: string;
|
|
93
|
-
|
|
94
|
-
|
|
104
|
+
/**
|
|
105
|
+
* The reviewer's and rework editor's system prompts, each SPLIT into the role half a workspace
|
|
106
|
+
* override replaces and the directives half it may not (`BespokeSystemPrompt`). These kinds run
|
|
107
|
+
* as bare inline `generateText` calls and so never reach `systemPromptFor`, which is the seam
|
|
108
|
+
* that applies an override elsewhere AND re-appends what an override must not delete — here the
|
|
109
|
+
* JSON output contract this service parses and the scope rules the whole flow depends on.
|
|
110
|
+
*/
|
|
111
|
+
protected abstract readonly reviewPrompt: BespokeSystemPrompt;
|
|
112
|
+
protected abstract readonly reworkPrompt: BespokeSystemPrompt;
|
|
95
113
|
/** Id prefix for fresh reviews / items (e.g. 'rrv' / 'rri'). */
|
|
96
114
|
protected abstract readonly reviewIdPrefix: string;
|
|
97
115
|
protected abstract readonly itemIdPrefix: string;
|
|
@@ -196,6 +214,27 @@ export declare abstract class IterativeReviewService<TReview extends ReviewCommo
|
|
|
196
214
|
*/
|
|
197
215
|
protected modelFor(workspaceId: string, block: Block): Promise<ModelRef | undefined>;
|
|
198
216
|
/** Resolve the provider + ref, throwing the kind's "no model configured" error if unavailable. */
|
|
217
|
+
/**
|
|
218
|
+
* Compose a bespoke inline prompt for one call, honouring the workspace's override of its ROLE
|
|
219
|
+
* half. The directives half is re-appended on top, so an edited prompt keeps the JSON output
|
|
220
|
+
* contract this service parses and the flow-wide rules (product/technical scope, the
|
|
221
|
+
* no-assumed-product rule) it is run under — the same guarantee `systemPromptFor` gives the
|
|
222
|
+
* kinds that go through it.
|
|
223
|
+
*
|
|
224
|
+
* Resolved per call rather than cached on the instance: the log is append-only and a human may
|
|
225
|
+
* edit the prompt between a reviewer pass and the incorporation that follows it, and one point
|
|
226
|
+
* read beside an LLM call costs nothing.
|
|
227
|
+
*/
|
|
228
|
+
/**
|
|
229
|
+
* Which system the block under review belongs to (see kernel's `OwnServiceContext`). Walks the
|
|
230
|
+
* block's ancestry through the SAME shared helper the engine's `AgentContextBuilder` uses, so an
|
|
231
|
+
* inline reviewer and a container agent cannot answer "what am I working on" differently.
|
|
232
|
+
*
|
|
233
|
+
* On the base class because all three inline flows need it for the same reason: none has a
|
|
234
|
+
* checkout, so without it their entire notion of the subject is a block title.
|
|
235
|
+
*/
|
|
236
|
+
protected resolveOwnService(workspaceId: string, block: Block): Promise<OwnServiceContext>;
|
|
237
|
+
protected systemPromptFor(workspaceId: string, agentKind: string, prompt: BespokeSystemPrompt): Promise<string>;
|
|
199
238
|
protected resolveModel(workspaceId: string, block: Block): Promise<{
|
|
200
239
|
modelProvider: ModelProvider;
|
|
201
240
|
ref: ModelRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IterativeReviewService.d.ts","sourceRoot":"","sources":["../../../src/modules/review/IterativeReviewService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EACf,KAAK,EACL,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"IterativeReviewService.d.ts","sourceRoot":"","sources":["../../../src/modules/review/IterativeReviewService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { generateText } from 'ai';
|
|
2
|
-
import { assertFound, ReviewContendedError, DEFAULT_MAX_REQUIREMENT_ITERATIONS, inlineModelRef, resolveScopedModelProvider, ValidationError, } from '@cat-factory/kernel';
|
|
3
|
-
import { catFactoryObservability } from '@cat-factory/agents';
|
|
2
|
+
import { assertFound, describeOwnService, resolveServiceFrameBlock, ReviewContendedError, DEFAULT_MAX_REQUIREMENT_ITERATIONS, inlineModelRef, resolveScopedModelProvider, ValidationError, } from '@cat-factory/kernel';
|
|
3
|
+
import { catFactoryObservability, composeBespokePrompt, } from '@cat-factory/agents';
|
|
4
4
|
import { scopeForBlockRun } from '../../inlineScope.js';
|
|
5
5
|
import { coerceReviewItems, disposeReview, extractJson, } from '../requirements/requirements.logic.js';
|
|
6
6
|
/**
|
|
@@ -193,7 +193,7 @@ export class IterativeReviewService {
|
|
|
193
193
|
const model = modelProvider.resolve(ref);
|
|
194
194
|
const result = await generateText({
|
|
195
195
|
model,
|
|
196
|
-
system: this.
|
|
196
|
+
system: await this.systemPromptFor(workspaceId, this.reworkAgentKind, this.reworkPrompt),
|
|
197
197
|
prompt: this.buildReworkPrompt(context, review.items),
|
|
198
198
|
temperature: 0.2,
|
|
199
199
|
// The reworked doc is a full standard-format document that becomes the SOLE source of
|
|
@@ -286,6 +286,33 @@ export class IterativeReviewService {
|
|
|
286
286
|
return fallback;
|
|
287
287
|
}
|
|
288
288
|
/** Resolve the provider + ref, throwing the kind's "no model configured" error if unavailable. */
|
|
289
|
+
/**
|
|
290
|
+
* Compose a bespoke inline prompt for one call, honouring the workspace's override of its ROLE
|
|
291
|
+
* half. The directives half is re-appended on top, so an edited prompt keeps the JSON output
|
|
292
|
+
* contract this service parses and the flow-wide rules (product/technical scope, the
|
|
293
|
+
* no-assumed-product rule) it is run under — the same guarantee `systemPromptFor` gives the
|
|
294
|
+
* kinds that go through it.
|
|
295
|
+
*
|
|
296
|
+
* Resolved per call rather than cached on the instance: the log is append-only and a human may
|
|
297
|
+
* edit the prompt between a reviewer pass and the incorporation that follows it, and one point
|
|
298
|
+
* read beside an LLM call costs nothing.
|
|
299
|
+
*/
|
|
300
|
+
/**
|
|
301
|
+
* Which system the block under review belongs to (see kernel's `OwnServiceContext`). Walks the
|
|
302
|
+
* block's ancestry through the SAME shared helper the engine's `AgentContextBuilder` uses, so an
|
|
303
|
+
* inline reviewer and a container agent cannot answer "what am I working on" differently.
|
|
304
|
+
*
|
|
305
|
+
* On the base class because all three inline flows need it for the same reason: none has a
|
|
306
|
+
* checkout, so without it their entire notion of the subject is a block title.
|
|
307
|
+
*/
|
|
308
|
+
async resolveOwnService(workspaceId, block) {
|
|
309
|
+
const serviceFrame = await resolveServiceFrameBlock((id) => this.deps.blockRepository.get(workspaceId, id), block.id, block);
|
|
310
|
+
return describeOwnService(block, serviceFrame);
|
|
311
|
+
}
|
|
312
|
+
async systemPromptFor(workspaceId, agentKind, prompt) {
|
|
313
|
+
const override = await this.deps.resolveSystemPromptOverride?.(workspaceId, agentKind);
|
|
314
|
+
return composeBespokePrompt(prompt, override?.trim() ? override : undefined);
|
|
315
|
+
}
|
|
289
316
|
async resolveModel(workspaceId, block) {
|
|
290
317
|
const modelProvider = await this.providerFor(workspaceId, block);
|
|
291
318
|
const ref = await this.modelFor(workspaceId, block);
|
|
@@ -307,7 +334,7 @@ export class IterativeReviewService {
|
|
|
307
334
|
const model = modelProvider.resolve(ref);
|
|
308
335
|
const result = await generateText({
|
|
309
336
|
model,
|
|
310
|
-
system: this.
|
|
337
|
+
system: await this.systemPromptFor(workspaceId, this.reviewAgentKind, this.reviewPrompt),
|
|
311
338
|
prompt: this.buildReviewPrompt(context),
|
|
312
339
|
temperature: 0.2,
|
|
313
340
|
maxOutputTokens: 5000,
|