@mcp-abap-adt/llm-agent-libs 18.0.2 → 18.1.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 (52) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +5 -2
  3. package/dist/agent.js.map +1 -1
  4. package/dist/builder.d.ts +7 -0
  5. package/dist/builder.d.ts.map +1 -1
  6. package/dist/builder.js +20 -3
  7. package/dist/builder.js.map +1 -1
  8. package/dist/coordinator/stepper/cyclic-react-executor.d.ts +22 -0
  9. package/dist/coordinator/stepper/cyclic-react-executor.d.ts.map +1 -1
  10. package/dist/coordinator/stepper/cyclic-react-executor.js +132 -13
  11. package/dist/coordinator/stepper/cyclic-react-executor.js.map +1 -1
  12. package/dist/coordinator/stepper/index.d.ts +1 -0
  13. package/dist/coordinator/stepper/index.d.ts.map +1 -1
  14. package/dist/coordinator/stepper/index.js +1 -0
  15. package/dist/coordinator/stepper/index.js.map +1 -1
  16. package/dist/coordinator/stepper/llm-evaluator.d.ts +1 -1
  17. package/dist/coordinator/stepper/llm-evaluator.d.ts.map +1 -1
  18. package/dist/coordinator/stepper/llm-evaluator.js.map +1 -1
  19. package/dist/coordinator/stepper/llm-stepper-planner.d.ts +1 -1
  20. package/dist/coordinator/stepper/llm-stepper-planner.d.ts.map +1 -1
  21. package/dist/coordinator/stepper/llm-stepper-planner.js +28 -8
  22. package/dist/coordinator/stepper/llm-stepper-planner.js.map +1 -1
  23. package/dist/coordinator/stepper/need-resolver.d.ts +1 -0
  24. package/dist/coordinator/stepper/need-resolver.d.ts.map +1 -1
  25. package/dist/coordinator/stepper/need-resolver.js +12 -4
  26. package/dist/coordinator/stepper/need-resolver.js.map +1 -1
  27. package/dist/coordinator/stepper/stepper-interpreter.d.ts.map +1 -1
  28. package/dist/coordinator/stepper/stepper-interpreter.js +61 -4
  29. package/dist/coordinator/stepper/stepper-interpreter.js.map +1 -1
  30. package/dist/coordinator/stepper/stepper.d.ts +8 -1
  31. package/dist/coordinator/stepper/stepper.d.ts.map +1 -1
  32. package/dist/coordinator/stepper/stepper.js +78 -18
  33. package/dist/coordinator/stepper/stepper.js.map +1 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/logger/default-request-logger.d.ts.map +1 -1
  39. package/dist/logger/default-request-logger.js +1 -0
  40. package/dist/logger/default-request-logger.js.map +1 -1
  41. package/dist/pipeline/handlers/tool-loop.d.ts.map +1 -1
  42. package/dist/pipeline/handlers/tool-loop.js +9 -2
  43. package/dist/pipeline/handlers/tool-loop.js.map +1 -1
  44. package/dist/pipeline/index.d.ts +2 -1
  45. package/dist/pipeline/index.d.ts.map +1 -1
  46. package/dist/pipeline/index.js +4 -0
  47. package/dist/pipeline/index.js.map +1 -1
  48. package/dist/rag/knowledge-rag.d.ts +15 -0
  49. package/dist/rag/knowledge-rag.d.ts.map +1 -1
  50. package/dist/rag/knowledge-rag.js +47 -0
  51. package/dist/rag/knowledge-rag.js.map +1 -1
  52. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import { renderTaskSpec, } from '@mcp-abap-adt/llm-agent';
1
+ import { artifactIdentityKey, ClarifySignal, renderTaskSpec, } from '@mcp-abap-adt/llm-agent';
2
2
  /**
3
3
  * Task-agnostic tool-use protocol for the executor. It says NOTHING about the
4
4
  * task type or any specific tool/MCP — only how to behave when a needed
@@ -73,6 +73,12 @@ export class CyclicReActExecutor {
73
73
  ];
74
74
  const tools = [...input.tools];
75
75
  let usage = ZERO;
76
+ // Phase 2 identity dedup: remember every (tool, canonical-args) fetched THIS
77
+ // run. A repeat call short-circuits — no MCP round-trip and, crucially, no
78
+ // re-injection of the (often large) payload into the context. The model is
79
+ // told it already has the data instead. Cuts the redundant include re-reads
80
+ // seen live (gi≈34 calls for 6 includes) + the context bloat they cause.
81
+ const fetched = new Set();
76
82
  // Counts consecutive unmet-need iterations whose tool re-query surfaced NO
77
83
  // new tool. One such "nudge" is allowed (the tool may already be present and
78
84
  // the model just needs prompting); a second consecutive no-progress need
@@ -89,16 +95,33 @@ export class CyclicReActExecutor {
89
95
  // program" task, so the model would fall back to the wrong tool. This is the
90
96
  // contextual-RAG-then-tool-search ordering.
91
97
  if (tools.length === 0) {
92
- // The seed query reflects the OVERALL intent (taskSpec) + shared guidance
93
- // (factsPrefix) + this node's prompt — so tool-search ranks tools for the
94
- // whole task, not just the narrow sub-goal.
98
+ // TWO ADDITIVE single-intent searches, UNIONed — never one mixed query.
99
+ // (1) PROMPT search: the overall intent (taskSpec) + guidance + node prompt
100
+ // → the main-task tools (e.g. GetProgram for the program shell).
101
+ // (2) NEEDS search: each Evaluator gap ("read the include bodies") queried
102
+ // SEPARATELY → the specific tool for that gap (GetInclude /
103
+ // GetIncludesList). Kept separate because a single mixed query DILUTES
104
+ // and DEMOTES the prompt-driven tools (measured: GetProgram #8 → #18
105
+ // when needs are mixed in). Single-intent queries each match their tool
106
+ // cleanly; the union covers both intents without lexical collision.
95
107
  const seedQuery = `${taskAnchor ? `${renderTaskSpec(taskSpec)}\n` : ''}${factsPrefix}${prompt}`;
96
108
  const seeded = await toolsRag.query(seedQuery, 10);
97
109
  for (const t of seeded)
98
110
  tools.push(t);
111
+ let needSeeded = 0;
112
+ if (input.evaluatorNeeds && input.evaluatorNeeds.length > 0) {
113
+ const have = new Set(tools.map((t) => t.name));
114
+ const byNeeds = await toolsRag.query(input.evaluatorNeeds.join('; '), 10);
115
+ for (const t of byNeeds)
116
+ if (!have.has(t.name)) {
117
+ tools.push(t);
118
+ needSeeded++;
119
+ }
120
+ }
99
121
  input.sessionLogger?.logStep('executor_tool_seed', {
100
122
  source: ref,
101
123
  seededCount: seeded.length,
124
+ needSeededCount: needSeeded,
102
125
  });
103
126
  }
104
127
  // Issue #167: MERGE client-provided external tools (consumer-executed, e.g.
@@ -111,6 +134,35 @@ export class CyclicReActExecutor {
111
134
  if (!have.has(t.name))
112
135
  tools.push(t);
113
136
  }
137
+ // Guard 2b — explicit "no capability" error, never a silent hallucination.
138
+ // The trigger is precise: the Evaluator established a NEED for this step
139
+ // (evaluatorNeeds non-empty → it judged the input needs-work and named the
140
+ // missing data/capability), yet every seeding path (input tools, prompt
141
+ // search, the needs search itself, external tools) left the toolset EMPTY.
142
+ // So a need exists and NO tool in RAG can satisfy it — calling the LLM now
143
+ // would fabricate the missing data (the live DAG-on-dead-proxy failure:
144
+ // 0 tools → invented review, promptTokens=1224 vs 507650 with a live proxy).
145
+ // We surface the gap to the consumer instead of returning invented content.
146
+ // NOTE the condition is gated on evaluatorNeeds — a step with NO established
147
+ // need is allowed to answer tool-free (legitimate reasoning); only an UNMET
148
+ // established need is an error. Opt out entirely with deps.allowToolless.
149
+ if (tools.length === 0 &&
150
+ !this.deps.allowToolless &&
151
+ (input.evaluatorNeeds?.length ?? 0) > 0) {
152
+ input.sessionLogger?.logStep('executor_no_tools', {
153
+ source: ref,
154
+ reason: 'evaluator established a need but the toolset is empty',
155
+ evaluatorNeeds: input.evaluatorNeeds ?? [],
156
+ });
157
+ throw new ClarifySignal(`I cannot complete this task: it requires ${(input.evaluatorNeeds ?? []).join('; ')}, but no tool is available to provide that (the tool subsystem returned an empty set — the MCP connection may be down, or no tool matches). I am stopping rather than inventing an answer.`);
158
+ }
159
+ // Guard 1 — groundedness/hallucination detector (token-based). Track whether
160
+ // the model ever actually called a tool and the size of the context the final
161
+ // answer was produced from. An answer emitted with ZERO tool calls, no seeded
162
+ // facts, and a tiny prompt — while tools WERE offered — is the hallucination
163
+ // signature (answered from the model's prior, not from retrieved data).
164
+ let toolCallsMade = 0;
165
+ let lastPromptTokens = 0;
114
166
  for (let iter = 0; iter < maxIterations; iter++) {
115
167
  // Gate BEFORE any further work (review R2-F1/R6-F1). The ledger is the
116
168
  // SHARED run-wide counter (not a local snapshot). If it is exhausted we
@@ -144,6 +196,8 @@ export class CyclicReActExecutor {
144
196
  };
145
197
  const v = res.value;
146
198
  usage = add(usage, v.usage);
199
+ if (v.usage)
200
+ lastPromptTokens = v.usage.promptTokens;
147
201
  if (v.usage) {
148
202
  budget.tokens.spend(v.usage); // decrement the shared ledger immediately
149
203
  onProgress?.({
@@ -155,6 +209,7 @@ export class CyclicReActExecutor {
155
209
  }
156
210
  const toolCalls = v.toolCalls ?? [];
157
211
  if (toolCalls.length > 0) {
212
+ toolCallsMade += toolCalls.length;
158
213
  // Relay the assistant turn WITH its tool_calls, then one tool message
159
214
  // per call carrying the matching tool_call_id. Anthropic/SAP AI SDK (and
160
215
  // the DeepSeek/OpenAI protocol) reject a `tool` message that does not
@@ -174,6 +229,53 @@ export class CyclicReActExecutor {
174
229
  });
175
230
  for (const tc of toolCalls) {
176
231
  const toolName = tc.name;
232
+ const identityKey = artifactIdentityKey(toolName, tc.arguments ?? {});
233
+ // Already fetched THIS run → do NOT re-call MCP and do NOT re-inject the
234
+ // payload; reply with a short note so the model stops re-requesting it
235
+ // (the full result is already earlier in this conversation + the store).
236
+ if (fetched.has(identityKey)) {
237
+ input.sessionLogger?.logStep('executor_fetch_dedup', {
238
+ source: ref,
239
+ scope: 'in-loop',
240
+ tool: toolName,
241
+ identityKey,
242
+ });
243
+ messages.push({
244
+ role: 'tool',
245
+ content: `(Already retrieved ${toolName} with these exact arguments earlier in this run — reuse the prior result above; do not fetch it again.)`,
246
+ tool_call_id: tc.id,
247
+ });
248
+ continue;
249
+ }
250
+ // CROSS-step dedup: another step already fetched this exact artefact
251
+ // into the shared session store. Inject the STORED content (it is NOT
252
+ // in this executor's history) instead of re-calling the tool. No
253
+ // mcp-call, no duplicate write.
254
+ if (knowledgeRag.hasArtifact && knowledgeRag.getArtifact) {
255
+ let priorContent;
256
+ try {
257
+ if (await knowledgeRag.hasArtifact(identityKey))
258
+ priorContent = await knowledgeRag.getArtifact(identityKey);
259
+ }
260
+ catch {
261
+ // store unavailable → fall through to a live fetch
262
+ }
263
+ if (priorContent !== undefined) {
264
+ fetched.add(identityKey);
265
+ input.sessionLogger?.logStep('executor_fetch_dedup', {
266
+ source: ref,
267
+ scope: 'cross-step',
268
+ tool: toolName,
269
+ identityKey,
270
+ });
271
+ messages.push({
272
+ role: 'tool',
273
+ content: priorContent,
274
+ tool_call_id: tc.id,
275
+ });
276
+ continue;
277
+ }
278
+ }
177
279
  onProgress?.({
178
280
  kind: 'mcp-call',
179
281
  source: ref,
@@ -181,6 +283,7 @@ export class CyclicReActExecutor {
181
283
  args: tc.arguments,
182
284
  });
183
285
  const result = await callMcp(toolName, tc.arguments, signal);
286
+ fetched.add(identityKey);
184
287
  onProgress?.({
185
288
  kind: 'mcp-result',
186
289
  source: ref,
@@ -198,6 +301,7 @@ export class CyclicReActExecutor {
198
301
  task: prompt,
199
302
  artifactType: 'mcp-result',
200
303
  toolName,
304
+ identityKey,
201
305
  createdAt: nowIso(),
202
306
  },
203
307
  });
@@ -229,15 +333,13 @@ export class CyclicReActExecutor {
229
333
  added++;
230
334
  }
231
335
  if (added === 0) {
232
- // Re-query surfaced nothing new. Allow one nudge (tool may already be
233
- // present); on a second consecutive no-progress need, the capability
234
- // is genuinely unavailable — stop honestly.
235
- if (++noProgressNeeds >= 2) {
236
- return {
237
- status: 'incomplete',
238
- missing: [need.queryToolsRag],
239
- usage,
240
- };
336
+ // Re-query surfaced nothing new. Allow a few nudges (the tool may
337
+ // already be present); once the cap is hit the capability is genuinely
338
+ // unavailable → escalate to the CONSUMER (18.1) rather than returning a
339
+ // silent partial: analyze → find tools → add → retry exhausted, so ask.
340
+ const cap = Math.max(1, this.deps.maxNoProgressNeeds ?? 2);
341
+ if (++noProgressNeeds >= cap) {
342
+ throw new ClarifySignal(`I could not complete the task: I still need to ${need.queryToolsRag}, and no available tool provides that capability.`);
241
343
  }
242
344
  }
243
345
  else {
@@ -250,6 +352,23 @@ export class CyclicReActExecutor {
250
352
  });
251
353
  continue;
252
354
  }
355
+ // Guard 1 — flag a likely hallucination BEFORE accepting the answer. The
356
+ // model produced a final answer without ever calling a tool, with no seeded
357
+ // facts to ground it, while tools WERE on offer — and the answer-producing
358
+ // call ingested only a small prompt (no retrieved data). That is content
359
+ // generated from the model's prior, not from this session's sources. We do
360
+ // not hard-fail (a legitimately tool-free answer is possible) but we emit a
361
+ // structured, token-backed signal so the coordinator/consumer can audit it.
362
+ if (toolCallsMade === 0 && factsPrefix === '' && tools.length > 0) {
363
+ input.sessionLogger?.logStep('hallucination_suspected', {
364
+ source: ref,
365
+ reason: 'final answer produced with no tool calls and no grounding facts',
366
+ toolsOffered: tools.length,
367
+ toolCallsMade,
368
+ finalPromptTokens: lastPromptTokens,
369
+ answerChars: (v.content ?? '').length,
370
+ });
371
+ }
253
372
  // Clean final answer → write + return ok.
254
373
  await knowledgeRag.write({
255
374
  content: v.content ?? '',
@@ -1 +1 @@
1
- {"version":3,"file":"cyclic-react-executor.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/cyclic-react-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cyclic-react-executor.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/cyclic-react-executor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { CyclicReActExecutor } from './cyclic-react-executor.js';
2
+ export { EVALUATOR_SYSTEM, LlmEvaluator, parseVerdict, } from './llm-evaluator.js';
2
3
  export { LlmStepperPlanner, STEPPER_PLANNER_SYSTEM, } from './llm-stepper-planner.js';
3
4
  export { LlmTaskFormalizer, parseTaskSpec, TASK_FORMALIZER_SYSTEM, } from './llm-task-formalizer.js';
4
5
  export { LoggingLlm } from './logging-llm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { CyclicReActExecutor } from './cyclic-react-executor.js';
2
+ export { EVALUATOR_SYSTEM, LlmEvaluator, parseVerdict, } from './llm-evaluator.js';
2
3
  export { LlmStepperPlanner, STEPPER_PLANNER_SYSTEM, } from './llm-stepper-planner.js';
3
4
  export { LlmTaskFormalizer, parseTaskSpec, TASK_FORMALIZER_SYSTEM, } from './llm-task-formalizer.js';
4
5
  export { LoggingLlm } from './logging-llm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { EvaluatorVerdict, IEvaluator, IKnowledgeRagHandle, ILlm, IToolsRagHandle, ITaskSpec, RunIdentity } from '@mcp-abap-adt/llm-agent';
1
+ import type { EvaluatorVerdict, IEvaluator, IKnowledgeRagHandle, ILlm, ITaskSpec, IToolsRagHandle, RunIdentity } from '@mcp-abap-adt/llm-agent';
2
2
  /**
3
3
  * Task-agnostic Evaluator prompt. It judges the INPUT (the sub-prompt) against
4
4
  * the RAG context — NOT how to do the task. "What completeness means" comes from
@@ -1 +1 @@
1
- {"version":3,"file":"llm-evaluator.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,eAAe,EACf,SAAS,EACT,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAGjC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,+oCAKoF,CAAC;AAQlH,qBAAa,YAAa,YAAW,UAAU;IAM3C,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,GAAG,EAAE,IAAI,EAC1B,YAAY,GAAE,MAAyB;IAMnC,QAAQ,CAAC,KAAK,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC;QAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,QAAQ,EAAE,WAAW,CAAC;QACtB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA6C9B;AAED;;2DAE2D;AAC3D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAc1D"}
1
+ {"version":3,"file":"llm-evaluator.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,eAAe,EACf,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAGjC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,+oCAKoF,CAAC;AAQlH,qBAAa,YAAa,YAAW,UAAU;IAM3C,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,GAAG,EAAE,IAAI,EAC1B,YAAY,GAAE,MAAyB;IAMnC,QAAQ,CAAC,KAAK,EAAE;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC;QAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,QAAQ,EAAE,WAAW,CAAC;QACtB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+C9B;AAED;;2DAE2D;AAC3D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAc1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-evaluator.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-evaluator.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-evaluator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;iHAKiF,CAAC;AAElH,MAAM,MAAM,GAAwB,IAAI,GAAG,CAAC;IAC1C,YAAY;IACZ,YAAY;IACZ,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,OAAO,YAAY;IAMJ;IALV,IAAI,GAAG,eAAe,CAAC;IACvB,KAAK,CAAU;IACP,YAAY,CAAS;IAEtC,YACmB,GAAS,EAC1B,eAAuB,gBAAgB;QADtB,QAAG,GAAH,GAAG,CAAM;QAG1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAOd;QACC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;YAC5B,CAAC,CAAC,kDAAkD,KAAK;iBACpD,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CACpE;iBACA,IAAI,CAAC,IAAI,CAAC,MAAM;YACrB,CAAC,CAAC,6BAA6B,CAAC;QAElC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,UAAU;oBACR,8DAA8D;wBAC9D,KAAK;6BACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;6BAChE,IAAI,CAAC,IAAI,CAAC;wBACb,MAAM,CAAC;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ;YAC9B,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC;QAE1E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;SACvB,EACV,EAAW,EACX,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzB,CAAC;QACF,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK;YAClB,MAAM,IAAI,KAAK,CACb,cAAe,GAAwC,CAAC,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,CACxF,CAAC;QACJ,OAAO,YAAY,CAChB,GAAgD,CAAC,KAAK,CAAC,OAAO,CAChE,CAAC;IACJ,CAAC;CACF;AAED;;2DAE2D;AAC3D,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GACT,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9D,CAAC,CAAE,IAAI,CAAC,KAAwB;QAChC,CAAC,CAAC,YAAY,CAAC;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QAC1C,CAAC,CAAC,CAAC,IAAI,EAAE,OAAqB,CAAA,CAAC,MAAM,CACjC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GACV,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAA4B,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { DagPlan, IKnowledgeRagHandle, ILlm, IStepperPlanner, ITaskSpec, IToolsRagHandle, RunIdentity } from '@mcp-abap-adt/llm-agent';
2
- export declare const STEPPER_PLANNER_SYSTEM = "You are a planner in a recursive Stepper hierarchy. Decompose the task into a SHALLOW DAG of steps.\nCOMPLETENESS: first assess whether the task states everything needed to execute it. If a prerequisite is implied but not stated \u2014 e.g. an analysis/review needs the COMPLETE artifact (all of its parts/sub-parts), not only its top level \u2014 add explicit steps to obtain it FIRST. Use the \"Known facts\" to decide what \"complete\" means for this domain.\nRAG-FIRST: the \"Known facts\" section lists what is already in the shared knowledge store. If a fact you need is already there, DO NOT add a step to re-fetch it \u2014 use it. Only add a step to obtain information that is genuinely missing.\nFETCH STEPS \u2014 NOT needInfo: Workers can read the live system by calling the tools listed in the \"Available tools\" section below. For ANY data a worker could fetch (program source, includes, table contents, object metadata, search results), emit a fetch STEP whose goal names the fetch \u2014 NEVER use needInfo for fetchable data.\nDECOMPOSE TO CONCRETE LEAVES: if a task is achievable by ONE tool call, emit a single-step plan whose goal is that concrete leaf call \u2014 do NOT re-emit the parent's task verbatim (that causes infinite recursion). Each node spawns a fresh worker that does NOT share your context; over-decomposition multiplies cost.\nDELEGATION: if an \"Available workers\" section is listed below, you MAY set a node's \"agent\" to one of those worker names to delegate a SUB-GOAL to that recursive worker (it will plan and execute the sub-goal itself). Omit \"agent\" for a concrete leaf you want executed directly. Only delegate when the sub-goal is a distinct unit of work that benefits from its own planning \u2014 otherwise emit a direct leaf.\nEach node: {\"id\",\"goal\",\"agent\"(optional worker name),\"dependsOn\"(optional ids)}.\nRespond with ONLY one of:\n{\"objective\":\"...\",\"nodes\":[...]}\n{\"needInfo\":\"<query>\"} \u2014 ONLY for a fact that NO listed tool can obtain (e.g. a human decision, or knowledge external to the system). If a listed tool below could get it, plan a step instead.\n{\"clarify\":\"<question>\"} \u2014 you need a human decision before planning";
2
+ export declare const STEPPER_PLANNER_SYSTEM = "You are a planner in a recursive Stepper hierarchy. Decompose the task into a SHALLOW DAG of steps.\nRAG-FIRST: the \"Known facts\" section lists what is already in the shared knowledge store. If a fact you need is already there, DO NOT add a step to re-fetch it \u2014 use it. Only add a step to obtain information that is genuinely missing.\nFETCHING IS THE EXECUTOR'S JOB \u2014 plan WORK, not granular fetches. A worker reads whatever its step needs (program source, includes, tables, metadata) at EXECUTION time via the available tools; do NOT decompose a task into many tiny fetch steps. Emit a separate \"gather\" step ONLY when its result must be SHARED by MULTIPLE later steps \u2014 and then emit ONE gather step they all \"dependsOn\" (fetched once, threaded to them), NEVER several fetch steps. (Use needInfo ONLY for a fact no listed tool can obtain \u2014 see below.)\nDECOMPOSE TO CONCRETE LEAVES: if a task is achievable by ONE tool call, emit a single-step plan whose goal is that concrete leaf call \u2014 do NOT re-emit the parent's task verbatim (that causes infinite recursion). Each node spawns a fresh worker that does NOT share your context; over-decomposition multiplies cost.\nDELEGATION: if an \"Available workers\" section is listed below, you MAY set a node's \"agent\" to one of those worker names to delegate a SUB-GOAL to that recursive worker (it will plan and execute the sub-goal itself). Omit \"agent\" for a concrete leaf you want executed directly. Only delegate when the sub-goal is a distinct unit of work that benefits from its own planning \u2014 otherwise emit a direct leaf.\nDEPENDENCIES \u2014 DATAFLOW + ORDERING. A step receives another step's output ONLY if that step is in its \"dependsOn\"; steps WITHOUT dependsOn run in PARALLEL and do NOT see each other's data. THEREFORE: NEVER place in parallel two steps that depend on, build on, or read the SAME data \u2014 that is the most common planning error. If step B uses, refines, or overlaps step A, set B.\"dependsOn\" = [A] so they run sequentially and A's output flows into B. Emit parallel (no-dependsOn) steps ONLY for GENUINELY INDEPENDENT, DISJOINT work. Prose like \"using step 1\" is NOT enough \u2014 encode it as dependsOn. When unsure whether two steps are independent, CHAIN them (sequential is safe; wrong parallelism re-fetches and races).\nONE READ PER ARTEFACT \u2014 discovery (list/shell to find what exists) and reading the bodies are SEQUENTIAL: the read step \"dependsOn\" the discovery; never two parallel steps that both fetch the same object.\nEach node: {\"id\",\"goal\",\"agent\"(optional worker name),\"dependsOn\"(ids of steps whose OUTPUT this step needs)}.\nRespond with ONLY one of:\n{\"objective\":\"...\",\"nodes\":[...]}\n{\"needInfo\":\"<query>\"} \u2014 ONLY for a fact that NO listed tool can obtain (e.g. a human decision, or knowledge external to the system). If a listed tool below could get it, plan a step instead.\n{\"clarify\":\"<question>\"} \u2014 you need a human decision before planning";
3
3
  export declare class LlmStepperPlanner implements IStepperPlanner {
4
4
  private readonly llm;
5
5
  readonly name = "llm-stepper";
@@ -1 +1 @@
1
- {"version":3,"file":"llm-stepper-planner.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-stepper-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,IAAI,EACJ,eAAe,EACf,SAAS,EACT,eAAe,EACf,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,sBAAsB,mrEAUmC,CAAC;AAYvE,qBAAa,iBAAkB,YAAW,eAAe;IAUrD,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD;;4EAEwE;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,GAAG,EAAE,IAAI,EAC1B,WAAW,GAAE,SAAS,GAAG,UAAsB,EAC/C,YAAY,GAAE,MAA+B;IAOzC,IAAI,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,EAAE,WAAW,CAAC;QACtB,MAAM,CAAC,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/D,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC;CA0DrB"}
1
+ {"version":3,"file":"llm-stepper-planner.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-stepper-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,IAAI,EACJ,eAAe,EACf,SAAS,EACT,eAAe,EACf,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAUjC,eAAO,MAAM,sBAAsB,o+FAWmC,CAAC;AAYvE,qBAAa,iBAAkB,YAAW,eAAe;IAUrD,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD;;4EAEwE;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,GAAG,EAAE,IAAI,EAC1B,WAAW,GAAE,SAAS,GAAG,UAAsB,EAC/C,YAAY,GAAE,MAA+B;IAOzC,IAAI,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,eAAe,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,EAAE,WAAW,CAAC;QACtB,MAAM,CAAC,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/D,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC;CA2ErB"}
@@ -1,16 +1,19 @@
1
1
  import { renderTaskSpec } from '@mcp-abap-adt/llm-agent';
2
2
  import { parseDagPlan } from '../dag/llm-dag-planner.js';
3
- // NOTE (18.0 workaround): the COMPLETENESS clause below is a SOFT stand-in for
4
- // the dedicated 18.1 Evaluator (judging prompt/plan completeness WITH the RAG
5
- // context, routing executable / needs-work / needs-consumer). When the Evaluator
6
- // lands, this clause may DOUBLE-JUDGE / conflict — revisit then.
3
+ // NOTE (18.1): the 18.0 SOFT completeness clause was REMOVED here — the dedicated
4
+ // Evaluator now owns prompt/plan completeness (it judges WITH the RAG context and
5
+ // feeds the planner the named gaps as "Prerequisites to address FIRST"), so a
6
+ // completeness clause here would double-judge. If a deployment disables the
7
+ // Evaluator (`flow.evaluator.enabled: false`), supply thoroughness via a
8
+ // knowledgeSeed / planner.systemPrompt override instead.
7
9
  export const STEPPER_PLANNER_SYSTEM = `You are a planner in a recursive Stepper hierarchy. Decompose the task into a SHALLOW DAG of steps.
8
- COMPLETENESS: first assess whether the task states everything needed to execute it. If a prerequisite is implied but not stated — e.g. an analysis/review needs the COMPLETE artifact (all of its parts/sub-parts), not only its top level — add explicit steps to obtain it FIRST. Use the "Known facts" to decide what "complete" means for this domain.
9
10
  RAG-FIRST: the "Known facts" section lists what is already in the shared knowledge store. If a fact you need is already there, DO NOT add a step to re-fetch it — use it. Only add a step to obtain information that is genuinely missing.
10
- FETCH STEPS — NOT needInfo: Workers can read the live system by calling the tools listed in the "Available tools" section below. For ANY data a worker could fetch (program source, includes, table contents, object metadata, search results), emit a fetch STEP whose goal names the fetch — NEVER use needInfo for fetchable data.
11
+ FETCHING IS THE EXECUTOR'S JOB — plan WORK, not granular fetches. A worker reads whatever its step needs (program source, includes, tables, metadata) at EXECUTION time via the available tools; do NOT decompose a task into many tiny fetch steps. Emit a separate "gather" step ONLY when its result must be SHARED by MULTIPLE later steps — and then emit ONE gather step they all "dependsOn" (fetched once, threaded to them), NEVER several fetch steps. (Use needInfo ONLY for a fact no listed tool can obtain — see below.)
11
12
  DECOMPOSE TO CONCRETE LEAVES: if a task is achievable by ONE tool call, emit a single-step plan whose goal is that concrete leaf call — do NOT re-emit the parent's task verbatim (that causes infinite recursion). Each node spawns a fresh worker that does NOT share your context; over-decomposition multiplies cost.
12
13
  DELEGATION: if an "Available workers" section is listed below, you MAY set a node's "agent" to one of those worker names to delegate a SUB-GOAL to that recursive worker (it will plan and execute the sub-goal itself). Omit "agent" for a concrete leaf you want executed directly. Only delegate when the sub-goal is a distinct unit of work that benefits from its own planning — otherwise emit a direct leaf.
13
- Each node: {"id","goal","agent"(optional worker name),"dependsOn"(optional ids)}.
14
+ DEPENDENCIES — DATAFLOW + ORDERING. A step receives another step's output ONLY if that step is in its "dependsOn"; steps WITHOUT dependsOn run in PARALLEL and do NOT see each other's data. THEREFORE: NEVER place in parallel two steps that depend on, build on, or read the SAME data — that is the most common planning error. If step B uses, refines, or overlaps step A, set B."dependsOn" = [A] so they run sequentially and A's output flows into B. Emit parallel (no-dependsOn) steps ONLY for GENUINELY INDEPENDENT, DISJOINT work. Prose like "using step 1" is NOT enough — encode it as dependsOn. When unsure whether two steps are independent, CHAIN them (sequential is safe; wrong parallelism re-fetches and races).
15
+ ONE READ PER ARTEFACT — discovery (list/shell to find what exists) and reading the bodies are SEQUENTIAL: the read step "dependsOn" the discovery; never two parallel steps that both fetch the same object.
16
+ Each node: {"id","goal","agent"(optional worker name),"dependsOn"(ids of steps whose OUTPUT this step needs)}.
14
17
  Respond with ONLY one of:
15
18
  {"objective":"...","nodes":[...]}
16
19
  {"needInfo":"<query>"} — ONLY for a fact that NO listed tool can obtain (e.g. a human decision, or knowledge external to the system). If a listed tool below could get it, plan a step instead.
@@ -57,6 +60,23 @@ export class LlmStepperPlanner {
57
60
  catch {
58
61
  // toolsRag unavailable — omit the section gracefully
59
62
  }
63
+ // 18.1 dedup manifest: the EXACT artefacts already fetched this run (by
64
+ // identity, not lossy semantic top-k). The planner must NOT plan a step to
65
+ // re-fetch any of these — backs the "RAG-FIRST: don't re-fetch" rule with a
66
+ // hard lookup. Feature-detected (older handles omit it).
67
+ let fetchedBlock = '';
68
+ try {
69
+ const arts = (await input.knowledgeRag.listArtifacts?.()) ?? [];
70
+ if (arts.length > 0) {
71
+ fetchedBlock =
72
+ 'Already fetched (DO NOT plan a step to re-fetch these — they are in the store):\n' +
73
+ arts.map((a) => `- ${a.identityKey}`).join('\n') +
74
+ '\n\n';
75
+ }
76
+ }
77
+ catch {
78
+ // listArtifacts unavailable / failed — omit the manifest gracefully
79
+ }
60
80
  const agentsBlock = input.agents && input.agents.length > 0
61
81
  ? `Available workers (set a node's "agent" to delegate a sub-goal):\n${input.agents
62
82
  .map((a) => `- ${a.name}: ${truncate(a.description ?? '(no description)', 200)}`)
@@ -67,7 +87,7 @@ export class LlmStepperPlanner {
67
87
  const taskBlock = input.taskSpec
68
88
  ? `${renderTaskSpec(input.taskSpec)}\n\n`
69
89
  : '';
70
- const user = `${taskBlock}${factBlock}${toolsBlock}${agentsBlock}Task: ${input.prompt}`;
90
+ const user = `${taskBlock}${factBlock}${fetchedBlock}${toolsBlock}${agentsBlock}Task: ${input.prompt}`;
71
91
  const res = await this.llm.chat([
72
92
  {
73
93
  role: 'system',
@@ -1 +1 @@
1
- {"version":3,"file":"llm-stepper-planner.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-stepper-planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-stepper-planner.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/llm-stepper-planner.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare class RegexNeedResolver implements INeedResolver {
6
6
  queryToolsRag: string;
7
7
  } | undefined>;
8
8
  }
9
+ export declare const CLASSIFY_SYSTEM: string;
9
10
  /** LLM-driven need classifier. Opt-in (more accurate on paraphrase, costs a
10
11
  * small classifier call). */
11
12
  export declare class LlmNeedResolver implements INeedResolver {
@@ -1 +1 @@
1
- {"version":3,"file":"need-resolver.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/need-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKnE;uEACuE;AACvE,qBAAa,iBAAkB,YAAW,aAAa;IAC/C,OAAO,CAAC,QAAQ,EAAE,MAAM;;;CAM/B;AAQD;8BAC8B;AAC9B,qBAAa,eAAgB,YAAW,aAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,IAAI;IAChC,OAAO,CAAC,QAAQ,EAAE,MAAM;;;CAqB/B"}
1
+ {"version":3,"file":"need-resolver.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/need-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKnE;uEACuE;AACvE,qBAAa,iBAAkB,YAAW,aAAa;IAC/C,OAAO,CAAC,QAAQ,EAAE,MAAM;;;CAM/B;AAED,eAAO,MAAM,eAAe,QAYqD,CAAC;AAElF;8BAC8B;AAC9B,qBAAa,eAAgB,YAAW,aAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,IAAI;IAChC,OAAO,CAAC,QAAQ,EAAE,MAAM;;;CAqB/B"}
@@ -10,10 +10,18 @@ export class RegexNeedResolver {
10
10
  return { queryToolsRag: m[1].trim() };
11
11
  }
12
12
  }
13
- const CLASSIFY_SYSTEM = 'Classify whether the assistant utterance expresses an unmet capability ' +
14
- 'need (it cannot proceed because it lacks a tool or data). Respond with ' +
15
- 'ONLY JSON: {"need":boolean,"capability":string}. capability is the ' +
16
- 'short description of what is needed, or "" when need is false.';
13
+ export const CLASSIFY_SYSTEM = 'You decide whether an assistant answer is INCOMPLETE because it is missing ' +
14
+ 'data or a capability — so the agent should obtain it and try again. Two cases ' +
15
+ 'count as a need:\n' +
16
+ '1. It explicitly cannot proceed (it says it lacks a tool, access, or data).\n' +
17
+ '2. It DID produce an answer but TRANSPARENTLY caveats that the answer is based ' +
18
+ 'on PARTIAL/INCOMPLETE input — e.g. a part/sub-part was missing, returned ' +
19
+ '"not found", was inaccessible or could not be read, or the result is "based ' +
20
+ 'on X only". A self-flagged incompleteness IS a need, even when the assistant ' +
21
+ 'still gave an answer.\n' +
22
+ 'Respond with ONLY JSON: {"need":boolean,"capability":string}. capability = a ' +
23
+ 'short description of the missing data/capability to obtain (e.g. "read the ' +
24
+ 'include bodies of the program"), or "" when the answer is genuinely complete.';
17
25
  /** LLM-driven need classifier. Opt-in (more accurate on paraphrase, costs a
18
26
  * small classifier call). */
19
27
  export class LlmNeedResolver {
@@ -1 +1 @@
1
- {"version":3,"file":"need-resolver.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/need-resolver.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GACX,0FAA0F,CAAC;AAE7F;uEACuE;AACvE,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,eAAe,GACnB,yEAAyE;IACzE,yEAAyE;IACzE,qEAAqE;IACrE,gEAAgE,CAAC;AAEnE;8BAC8B;AAC9B,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAC1C,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE;YAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;SACpC,EACD,EAAE,CACH,CAAC;QACF,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAG1C,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU;gBAClC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"need-resolver.js","sourceRoot":"","sources":["../../../src/coordinator/stepper/need-resolver.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GACX,0FAA0F,CAAC;AAE7F;uEACuE;AACvE,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAC1B,6EAA6E;IAC7E,gFAAgF;IAChF,oBAAoB;IACpB,+EAA+E;IAC/E,iFAAiF;IACjF,2EAA2E;IAC3E,8EAA8E;IAC9E,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E,CAAC;AAElF;8BAC8B;AAC9B,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAC1C,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC7B;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE;YAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;SACpC,EACD,EAAE,CACH,CAAC;QACF,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAG1C,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU;gBAClC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper-interpreter.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/stepper-interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,cAAc,EAGf,MAAM,yBAAyB,CAAC;AAUjC,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,IAAI,aAAa;IAEpB,SAAS,CACb,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,cAAc,CAAC;CAqH3B"}
1
+ {"version":3,"file":"stepper-interpreter.d.ts","sourceRoot":"","sources":["../../../src/coordinator/stepper/stepper-interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,mBAAmB,EACnB,cAAc,EAGf,MAAM,yBAAyB,CAAC;AAgBjC,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,IAAI,aAAa;IAEpB,SAAS,CACb,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,cAAc,CAAC;CAoI3B"}
@@ -1,3 +1,8 @@
1
+ /** Total cap on injected dependsOn-dataflow content per node — a backstop against
2
+ * context explosion. dependsOn already scopes it to predecessors (selective);
3
+ * this bounds a pathological accumulation. Generous: a few large include bodies
4
+ * fit. On overflow the block is truncated with an explicit note. */
5
+ const DEPS_CONTEXT_CAP = 60_000;
1
6
  const ZERO = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
2
7
  const addUsage = (a, b) => ({
3
8
  promptTokens: a.promptTokens + b.promptTokens,
@@ -10,11 +15,20 @@ export class StepperInterpreter {
10
15
  async interpret(plan, ctx) {
11
16
  const done = new Set();
12
17
  const results = new Map();
18
+ // node.id → the stepperId minted for it, so a dependent node can pull its
19
+ // predecessors' artifacts by identity (Phase 3 dataflow).
20
+ const stepperIdByNode = new Map();
13
21
  let usage = ZERO;
14
22
  let worst = 'ok';
15
23
  const ready = () => plan.nodes.filter((n) => !done.has(n.id) && (n.dependsOn ?? []).every((d) => done.has(d)));
16
24
  const runNode = async (node) => {
17
25
  const childId = ctx.mintStepperId();
26
+ stepperIdByNode.set(node.id, childId);
27
+ // Phase 3 dataflow: hydrate this node's context with the FULL output of its
28
+ // dependsOn predecessors (by identity / stepperId — NOT lossy semantic
29
+ // top-k), so e.g. an `analyze` step receives the source a `gather` step
30
+ // already fetched and never re-fetches it.
31
+ const depsBlock = await gatherDepsContext(node, ctx.knowledgeRag, stepperIdByNode);
18
32
  const childIdentity = {
19
33
  ...ctx.identity,
20
34
  stepperId: childId,
@@ -45,7 +59,7 @@ export class StepperInterpreter {
45
59
  // (review R2-F1) so spend is accounted across all branches (soft cap,
46
60
  // bounded overshoot under parallelism — review R3-F2).
47
61
  result = await subagent.run({
48
- prompt: composeTask(node, plan),
62
+ prompt: composeTask(node, plan, depsBlock),
49
63
  knowledgeRag: ctx.knowledgeRag,
50
64
  toolsRag: ctx.toolsRag,
51
65
  budget: {
@@ -55,6 +69,7 @@ export class StepperInterpreter {
55
69
  identity: childIdentity,
56
70
  taskSpec: ctx.taskSpec,
57
71
  externalTools: ctx.externalTools,
72
+ evaluatorNeeds: ctx.evaluatorNeeds,
58
73
  signal: ctx.signal,
59
74
  sessionLogger: ctx.sessionLogger,
60
75
  onProgress: ctx.onProgress,
@@ -63,9 +78,10 @@ export class StepperInterpreter {
63
78
  else if (ctx.executor) {
64
79
  // Case 2 (depth floor) + Case 3 (no agent) — terminal executor leaf
65
80
  const r = await ctx.executor.execute({
66
- prompt: composeTask(node, plan),
81
+ prompt: composeTask(node, plan, depsBlock),
67
82
  tools: [],
68
83
  externalTools: ctx.externalTools,
84
+ evaluatorNeeds: ctx.evaluatorNeeds,
69
85
  knowledgeRag: ctx.knowledgeRag,
70
86
  toolsRag: ctx.toolsRag,
71
87
  budget: ctx.budget,
@@ -117,10 +133,51 @@ export class StepperInterpreter {
117
133
  };
118
134
  }
119
135
  }
120
- function composeTask(node, plan) {
121
- return plan.objective
136
+ function composeTask(node, plan, depsBlock = '') {
137
+ const base = plan.objective
122
138
  ? `Objective: ${plan.objective}\nTask: ${node.goal}`
123
139
  : node.goal;
140
+ return depsBlock ? `${base}\n\n${depsBlock}` : base;
141
+ }
142
+ /**
143
+ * Phase 3 dataflow: assemble the FULL output of a node's dependsOn predecessors
144
+ * (their blackboard artefacts, fetched by stepperId — exact identity, NOT lossy
145
+ * semantic top-k) into a "Gathered inputs" block. The dependent node thus has
146
+ * the source/data its prerequisites produced already in context, and does not
147
+ * re-fetch it. Scoped to predecessors (selective) + capped (explosion backstop).
148
+ */
149
+ async function gatherDepsContext(node, knowledgeRag, stepperIdByNode) {
150
+ const deps = node.dependsOn ?? [];
151
+ if (deps.length === 0)
152
+ return '';
153
+ const parts = [];
154
+ for (const depId of deps) {
155
+ const sid = stepperIdByNode.get(depId);
156
+ if (!sid)
157
+ continue;
158
+ let entries = [];
159
+ try {
160
+ entries = await knowledgeRag.list({ stepperId: sid });
161
+ }
162
+ catch {
163
+ continue; // store unavailable for this dep → skip it
164
+ }
165
+ for (const e of entries)
166
+ parts.push(e.content);
167
+ }
168
+ if (parts.length === 0)
169
+ return '';
170
+ let block = parts.join('\n\n');
171
+ let truncated = false;
172
+ if (block.length > DEPS_CONTEXT_CAP) {
173
+ block = block.slice(0, DEPS_CONTEXT_CAP);
174
+ truncated = true;
175
+ }
176
+ return ('Gathered inputs from prerequisite steps (use these — do NOT re-fetch them):\n' +
177
+ block +
178
+ (truncated
179
+ ? '\n\n[…gathered inputs truncated; query the knowledge store for the rest if needed]'
180
+ : ''));
124
181
  }
125
182
  function collectMissing(results) {
126
183
  const out = [];