@mcp-abap-adt/llm-agent-server-libs 19.2.0 → 20.4.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/builders/controller-skill-pipeline-builder.d.ts +57 -0
- package/dist/builders/controller-skill-pipeline-builder.d.ts.map +1 -0
- package/dist/builders/controller-skill-pipeline-builder.js +175 -0
- package/dist/builders/controller-skill-pipeline-builder.js.map +1 -0
- package/dist/factories/controller-factory.d.ts +2 -2
- package/dist/factories/controller-factory.d.ts.map +1 -1
- package/dist/factories/controller-factory.js +2 -1
- package/dist/factories/controller-factory.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pipelines/controller.d.ts +4 -2
- package/dist/pipelines/controller.d.ts.map +1 -1
- package/dist/pipelines/controller.js +33 -8
- package/dist/pipelines/controller.js.map +1 -1
- package/dist/pipelines/coordinator-resolvers.d.ts +68 -0
- package/dist/pipelines/coordinator-resolvers.d.ts.map +1 -0
- package/dist/pipelines/coordinator-resolvers.js +97 -0
- package/dist/pipelines/coordinator-resolvers.js.map +1 -0
- package/dist/pipelines/dag.d.ts +2 -2
- package/dist/pipelines/dag.js +2 -2
- package/dist/pipelines/parsers.d.ts +1 -1
- package/dist/pipelines/parsers.d.ts.map +1 -1
- package/dist/pipelines/parsers.js +5 -4
- package/dist/pipelines/parsers.js.map +1 -1
- package/dist/pipelines/register-skill-sources.d.ts.map +1 -1
- package/dist/pipelines/register-skill-sources.js +5 -0
- package/dist/pipelines/register-skill-sources.js.map +1 -1
- package/dist/pipelines/stepper.d.ts +2 -2
- package/dist/pipelines/stepper.js +2 -2
- package/dist/smart-agent/build-stepper-root.d.ts +3 -2
- package/dist/smart-agent/build-stepper-root.d.ts.map +1 -1
- package/dist/smart-agent/build-stepper-root.js +2 -1
- package/dist/smart-agent/build-stepper-root.js.map +1 -1
- package/dist/smart-agent/config-reload-watcher.d.ts +30 -0
- package/dist/smart-agent/config-reload-watcher.d.ts.map +1 -0
- package/dist/smart-agent/config-reload-watcher.js +101 -0
- package/dist/smart-agent/config-reload-watcher.js.map +1 -0
- package/dist/smart-agent/config-validator.d.ts +21 -0
- package/dist/smart-agent/config-validator.d.ts.map +1 -0
- package/dist/smart-agent/config-validator.js +196 -0
- package/dist/smart-agent/config-validator.js.map +1 -0
- package/dist/smart-agent/config.d.ts +16 -254
- package/dist/smart-agent/config.d.ts.map +1 -1
- package/dist/smart-agent/config.js +17 -904
- package/dist/smart-agent/config.js.map +1 -1
- package/dist/smart-agent/controller/board.d.ts +6 -3
- package/dist/smart-agent/controller/board.d.ts.map +1 -1
- package/dist/smart-agent/controller/board.js +21 -0
- package/dist/smart-agent/controller/board.js.map +1 -1
- package/dist/smart-agent/controller/controller-coordinator-handler.d.ts +16 -50
- package/dist/smart-agent/controller/controller-coordinator-handler.d.ts.map +1 -1
- package/dist/smart-agent/controller/controller-coordinator-handler.js +83 -371
- package/dist/smart-agent/controller/controller-coordinator-handler.js.map +1 -1
- package/dist/smart-agent/controller/finalizer.d.ts +5 -0
- package/dist/smart-agent/controller/finalizer.d.ts.map +1 -1
- package/dist/smart-agent/controller/finalizer.js +12 -5
- package/dist/smart-agent/controller/finalizer.js.map +1 -1
- package/dist/smart-agent/controller/parser.d.ts +11 -0
- package/dist/smart-agent/controller/parser.d.ts.map +1 -0
- package/dist/smart-agent/controller/parser.js +77 -0
- package/dist/smart-agent/controller/parser.js.map +1 -0
- package/dist/smart-agent/controller/planner.d.ts +20 -16
- package/dist/smart-agent/controller/planner.d.ts.map +1 -1
- package/dist/smart-agent/controller/planner.js +58 -64
- package/dist/smart-agent/controller/planner.js.map +1 -1
- package/dist/smart-agent/controller/recall.d.ts +48 -0
- package/dist/smart-agent/controller/recall.d.ts.map +1 -0
- package/dist/smart-agent/controller/recall.js +196 -0
- package/dist/smart-agent/controller/recall.js.map +1 -0
- package/dist/smart-agent/controller/reviewer.d.ts.map +1 -1
- package/dist/smart-agent/controller/reviewer.js +1 -1
- package/dist/smart-agent/controller/reviewer.js.map +1 -1
- package/dist/smart-agent/controller/types.d.ts +8 -9
- package/dist/smart-agent/controller/types.d.ts.map +1 -1
- package/dist/smart-agent/controller/usage-logging.d.ts +16 -0
- package/dist/smart-agent/controller/usage-logging.d.ts.map +1 -0
- package/dist/smart-agent/controller/usage-logging.js +39 -0
- package/dist/smart-agent/controller/usage-logging.js.map +1 -0
- package/dist/smart-agent/http/adapter-route-handler.d.ts +13 -0
- package/dist/smart-agent/http/adapter-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/adapter-route-handler.js +76 -0
- package/dist/smart-agent/http/adapter-route-handler.js.map +1 -0
- package/dist/smart-agent/http/chat-route-handler.d.ts +15 -0
- package/dist/smart-agent/http/chat-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/chat-route-handler.js +327 -0
- package/dist/smart-agent/http/chat-route-handler.js.map +1 -0
- package/dist/smart-agent/http/config-route-handler.d.ts +21 -0
- package/dist/smart-agent/http/config-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/config-route-handler.js +149 -0
- package/dist/smart-agent/http/config-route-handler.js.map +1 -0
- package/dist/smart-agent/http/health-route-handler.d.ts +12 -0
- package/dist/smart-agent/http/health-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/health-route-handler.js +19 -0
- package/dist/smart-agent/http/health-route-handler.js.map +1 -0
- package/dist/smart-agent/http/models-route-handler.d.ts +17 -0
- package/dist/smart-agent/http/models-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/models-route-handler.js +65 -0
- package/dist/smart-agent/http/models-route-handler.js.map +1 -0
- package/dist/smart-agent/http/response-helpers.d.ts +31 -0
- package/dist/smart-agent/http/response-helpers.d.ts.map +1 -0
- package/dist/smart-agent/http/response-helpers.js +59 -0
- package/dist/smart-agent/http/response-helpers.js.map +1 -0
- package/dist/smart-agent/http/route-table.d.ts +44 -0
- package/dist/smart-agent/http/route-table.d.ts.map +1 -0
- package/dist/smart-agent/http/route-table.js +35 -0
- package/dist/smart-agent/http/route-table.js.map +1 -0
- package/dist/smart-agent/http/session-cookie.d.ts +10 -0
- package/dist/smart-agent/http/session-cookie.d.ts.map +1 -0
- package/dist/smart-agent/http/session-cookie.js +16 -0
- package/dist/smart-agent/http/session-cookie.js.map +1 -0
- package/dist/smart-agent/http/sessions-route-handler.d.ts +8 -0
- package/dist/smart-agent/http/sessions-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/sessions-route-handler.js +54 -0
- package/dist/smart-agent/http/sessions-route-handler.js.map +1 -0
- package/dist/smart-agent/http/usage-route-handler.d.ts +12 -0
- package/dist/smart-agent/http/usage-route-handler.d.ts.map +1 -0
- package/dist/smart-agent/http/usage-route-handler.js +28 -0
- package/dist/smart-agent/http/usage-route-handler.js.map +1 -0
- package/dist/smart-agent/knowledge/make-knowledge-backend.d.ts +13 -0
- package/dist/smart-agent/knowledge/make-knowledge-backend.d.ts.map +1 -0
- package/dist/smart-agent/knowledge/make-knowledge-backend.js +18 -0
- package/dist/smart-agent/knowledge/make-knowledge-backend.js.map +1 -0
- package/dist/smart-agent/llm/role-llm-resolver.d.ts +30 -0
- package/dist/smart-agent/llm/role-llm-resolver.d.ts.map +1 -0
- package/dist/smart-agent/llm/role-llm-resolver.js +44 -0
- package/dist/smart-agent/llm/role-llm-resolver.js.map +1 -0
- package/dist/smart-agent/llm-config-map.d.ts +38 -0
- package/dist/smart-agent/llm-config-map.d.ts.map +1 -0
- package/dist/smart-agent/llm-config-map.js +75 -0
- package/dist/smart-agent/llm-config-map.js.map +1 -0
- package/dist/smart-agent/mcp-readiness-monitor.d.ts +38 -0
- package/dist/smart-agent/mcp-readiness-monitor.d.ts.map +1 -0
- package/dist/smart-agent/mcp-readiness-monitor.js +81 -0
- package/dist/smart-agent/mcp-readiness-monitor.js.map +1 -0
- package/dist/smart-agent/mcp-readiness-registry.d.ts +37 -0
- package/dist/smart-agent/mcp-readiness-registry.d.ts.map +1 -0
- package/dist/smart-agent/mcp-readiness-registry.js +55 -0
- package/dist/smart-agent/mcp-readiness-registry.js.map +1 -0
- package/dist/smart-agent/resolve-config-sections.d.ts +15 -0
- package/dist/smart-agent/resolve-config-sections.d.ts.map +1 -0
- package/dist/smart-agent/resolve-config-sections.js +212 -0
- package/dist/smart-agent/resolve-config-sections.js.map +1 -0
- package/dist/smart-agent/session-lifecycle/index.d.ts +117 -0
- package/dist/smart-agent/session-lifecycle/index.d.ts.map +1 -0
- package/dist/smart-agent/session-lifecycle/index.js +152 -0
- package/dist/smart-agent/session-lifecycle/index.js.map +1 -0
- package/dist/smart-agent/skill-plugins-config.d.ts +9 -1
- package/dist/smart-agent/skill-plugins-config.d.ts.map +1 -1
- package/dist/smart-agent/skill-plugins-config.js +27 -1
- package/dist/smart-agent/skill-plugins-config.js.map +1 -1
- package/dist/smart-agent/skill-plugins-host-factory.d.ts +14 -2
- package/dist/smart-agent/skill-plugins-host-factory.d.ts.map +1 -1
- package/dist/smart-agent/skill-plugins-host-factory.js +16 -4
- package/dist/smart-agent/skill-plugins-host-factory.js.map +1 -1
- package/dist/smart-agent/smart-server.d.ts +151 -222
- package/dist/smart-agent/smart-server.d.ts.map +1 -1
- package/dist/smart-agent/smart-server.js +529 -1385
- package/dist/smart-agent/smart-server.js.map +1 -1
- package/dist/smart-agent/stepper-config.d.ts +138 -0
- package/dist/smart-agent/stepper-config.d.ts.map +1 -0
- package/dist/smart-agent/stepper-config.js +216 -0
- package/dist/smart-agent/stepper-config.js.map +1 -0
- package/dist/smart-agent/tools-rag-handle.d.ts +10 -0
- package/dist/smart-agent/tools-rag-handle.d.ts.map +1 -0
- package/dist/smart-agent/tools-rag-handle.js +76 -0
- package/dist/smart-agent/tools-rag-handle.js.map +1 -0
- package/dist/smart-agent/workers/worker-registry.d.ts +159 -0
- package/dist/smart-agent/workers/worker-registry.d.ts.map +1 -0
- package/dist/smart-agent/workers/worker-registry.js +203 -0
- package/dist/smart-agent/workers/worker-registry.js.map +1 -0
- package/dist/smart-agent/yaml-loader.d.ts +7 -0
- package/dist/smart-agent/yaml-loader.d.ts.map +1 -0
- package/dist/smart-agent/yaml-loader.js +146 -0
- package/dist/smart-agent/yaml-loader.js.map +1 -0
- package/package.json +7 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mintCreateStepIds, mintReplanStepIds, } from './artifacts.js';
|
|
2
|
-
import { extractJsonObject
|
|
2
|
+
import { extractJsonObject } from './parser.js';
|
|
3
3
|
import { appendHint } from './prompts.js';
|
|
4
4
|
import { MAX_REQUIRE_CHARS, MAX_REQUIRES, validateRequires, } from './types.js';
|
|
5
5
|
// Built from the validation constants so the prompt cap can NEVER drift from what
|
|
@@ -15,25 +15,6 @@ export const ENGLISH_INSTRUCTIONS_RULE = ' Step `instructions` AND `requires` re
|
|
|
15
15
|
`List at MOST ${MAX_REQUIRES} \`requires\`, each a SHORT reference (a few words, ` +
|
|
16
16
|
`≤ ${MAX_REQUIRE_CHARS} chars) — not pasted content. (The user-facing answer is ` +
|
|
17
17
|
"composed separately in the user's language.)";
|
|
18
|
-
export const PLANNER_SYSTEM = 'You are the planner. Given the goal and progress, return a SINGLE JSON ' +
|
|
19
|
-
'object: {"kind":"next","step":{"name":...,"instructions":...}} to take the ' +
|
|
20
|
-
'next step, {"kind":"done","result":...} when the goal is met, or ' +
|
|
21
|
-
'{"kind":"rewind","reason":...} to discard the current path. Output JSON only.\n' +
|
|
22
|
-
'An executor carries out each step against the live target system using tools. ' +
|
|
23
|
-
'Describe each step by INTENT — WHAT to fetch or do — in plain language. Do ' +
|
|
24
|
-
'NOT choose, name, or assume a specific tool (no tool names in the step); the ' +
|
|
25
|
-
'executor selects the right tool for the step. Any fact about the system MUST ' +
|
|
26
|
-
'be obtained by planning a step that fetches it with a tool — do NOT answer ' +
|
|
27
|
-
'from prior knowledge, and do NOT mark the goal "done" until the required data ' +
|
|
28
|
-
'has actually been fetched (fetched results appear under Progress). Until then, ' +
|
|
29
|
-
'return a concrete "next" fetch step. ' +
|
|
30
|
-
'Keep each step MINIMAL and do NOT broaden the scope beyond what the goal asks, ' +
|
|
31
|
-
'at the granularity it asks: a LIST/SHOW/find request is satisfied by the list ' +
|
|
32
|
-
'itself — do NOT plan a step that fetches the full details of every listed item ' +
|
|
33
|
-
'unless the goal explicitly asks for per-item details.' +
|
|
34
|
-
ENGLISH_INSTRUCTIONS_RULE;
|
|
35
|
-
const RETRY_HINT = '\nIMPORTANT: your previous reply was NOT valid JSON. Reply with ONLY the raw ' +
|
|
36
|
-
'JSON object — no prose, no explanation, no markdown code fences.';
|
|
37
18
|
/** Append a non-empty recall block to a user message, preserving the agnostic
|
|
38
19
|
* message byte-for-byte when the block is empty. */
|
|
39
20
|
function withSkillsBlock(userContent, block) {
|
|
@@ -42,47 +23,12 @@ function withSkillsBlock(userContent, block) {
|
|
|
42
23
|
/** The planner's progress context. With a live board, render the AUTHORITATIVE
|
|
43
24
|
* structured board AND the plannerPrivate tail — the latter carries non-board
|
|
44
25
|
* deltas the planner still needs (clarify answers, legacy external-tool result).
|
|
45
|
-
* An empty board
|
|
46
|
-
* byte-identical to the legacy prompt. */
|
|
26
|
+
* An empty board → plannerPrivate alone, byte-identical to the legacy prompt. */
|
|
47
27
|
function progressBlock(bundle, boardText) {
|
|
48
28
|
return boardText && boardText.length > 0
|
|
49
29
|
? `${boardText}\n${bundle.plannerPrivate}`
|
|
50
30
|
: bundle.plannerPrivate;
|
|
51
31
|
}
|
|
52
|
-
export class IncrementalPlanner {
|
|
53
|
-
planner;
|
|
54
|
-
hint;
|
|
55
|
-
skillsRecall;
|
|
56
|
-
constructor(planner,
|
|
57
|
-
/** Optional consumer domain hint appended to the agnostic planner prompt. */
|
|
58
|
-
hint,
|
|
59
|
-
/** Optional controller-own skills recall hook (B4). */
|
|
60
|
-
skillsRecall) {
|
|
61
|
-
this.planner = planner;
|
|
62
|
-
this.hint = hint;
|
|
63
|
-
this.skillsRecall = skillsRecall;
|
|
64
|
-
}
|
|
65
|
-
async next(input) {
|
|
66
|
-
const { bundle, prompt, retrying, logUsage, options, boardText } = input;
|
|
67
|
-
const block = this.skillsRecall
|
|
68
|
-
? await this.skillsRecall(bundle.goal, options)
|
|
69
|
-
: '';
|
|
70
|
-
const res = await this.planner.send([
|
|
71
|
-
{
|
|
72
|
-
role: 'system',
|
|
73
|
-
content: appendHint(PLANNER_SYSTEM, this.hint) + (retrying ? RETRY_HINT : ''),
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
role: 'user',
|
|
77
|
-
content: withSkillsBlock(`Goal: ${bundle.goal}\nProgress:${progressBlock(bundle, boardText)}\nRequest: ${prompt}`, block),
|
|
78
|
-
},
|
|
79
|
-
]);
|
|
80
|
-
logUsage?.('planner', res.usage);
|
|
81
|
-
if (res.kind !== 'content')
|
|
82
|
-
return null;
|
|
83
|
-
return parseNextStep(res.content);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
32
|
export const CREATE_PLAN_SYSTEM = 'You are the planner. Produce the COMPLETE, ordered plan that covers the ENTIRE ' +
|
|
87
33
|
'goal NOW, as a SINGLE JSON object: {"plan":[{"name":...,"instructions":...}, ...]}. ' +
|
|
88
34
|
'This is plan-once: there will be NO chance to add steps later (a replan happens ' +
|
|
@@ -130,6 +76,30 @@ export const EXTERNAL_RESULT_REPLAN_SYSTEM = 'You are the planner. A NEW externa
|
|
|
130
76
|
'separate finalizer composes the answer). If the goal is already satisfied by ' +
|
|
131
77
|
'the result, return {"plan":[]}. Output JSON only.' +
|
|
132
78
|
ENGLISH_INSTRUCTIONS_RULE;
|
|
79
|
+
/** Smart-executor granularity clause (§C). A capable executor can self-expand a
|
|
80
|
+
* coarse step inside its own tool-loop, so the planner MAY plan coarse. Clarifies
|
|
81
|
+
* that the base's "one concrete action" means one INTENT — a coarse batch step is
|
|
82
|
+
* one intent, not a planner-side per-item fan-out. AGNOSTIC: no tool names. */
|
|
83
|
+
const SMART_GRANULARITY = ' GRANULARITY (smart executor): a step MAY be COARSE — a single intent that ' +
|
|
84
|
+
'covers a set of related items (e.g. "read every item referenced by the prior ' +
|
|
85
|
+
'result"); a capable executor enumerates and processes each item WITHIN ITS OWN ' +
|
|
86
|
+
'tool-loop, and control returns to the reviewer after the coarse step. This does ' +
|
|
87
|
+
'NOT violate "one concrete action": a coarse batch is ONE intent. PREFER fewer ' +
|
|
88
|
+
'coarse steps over enumerating items yourself.';
|
|
89
|
+
/** Weak-executor granularity clause (§C). A weak executor cannot be trusted to
|
|
90
|
+
* self-expand, so every step is exactly one atomic action. (Deferred discovery
|
|
91
|
+
* fan-out for plan-time-unknowable batches — §D — is Phase 4; in Phase 3 the weak
|
|
92
|
+
* planner just plans the finest grain it can.) AGNOSTIC: no tool names. */
|
|
93
|
+
const WEAK_GRANULARITY = ' GRANULARITY (weak executor): each step is EXACTLY ONE ATOMIC action the ' +
|
|
94
|
+
'executor performs in a SINGLE tool use. NEVER emit a coarse/batch step and ' +
|
|
95
|
+
'NEVER rely on the executor to self-expand a step — the executor handles one ' +
|
|
96
|
+
'action at a time; if work spans several actions, emit that many steps.';
|
|
97
|
+
export const SMART_CREATE_PLAN_SYSTEM = CREATE_PLAN_SYSTEM + SMART_GRANULARITY;
|
|
98
|
+
export const SMART_REPLAN_SYSTEM = REPLAN_SYSTEM + SMART_GRANULARITY;
|
|
99
|
+
export const SMART_EXTERNAL_RESULT_REPLAN_SYSTEM = EXTERNAL_RESULT_REPLAN_SYSTEM + SMART_GRANULARITY;
|
|
100
|
+
export const WEAK_CREATE_PLAN_SYSTEM = CREATE_PLAN_SYSTEM + WEAK_GRANULARITY;
|
|
101
|
+
export const WEAK_REPLAN_SYSTEM = REPLAN_SYSTEM + WEAK_GRANULARITY;
|
|
102
|
+
export const WEAK_EXTERNAL_RESULT_REPLAN_SYSTEM = EXTERNAL_RESULT_REPLAN_SYSTEM + WEAK_GRANULARITY;
|
|
133
103
|
const FINALIZE_SYSTEM = 'All planned steps are complete. Using the progress below (the fetched results), ' +
|
|
134
104
|
'write the final answer to the user request. Plain text, no JSON.';
|
|
135
105
|
/** Parse {"plan":[{name,instructions},...]} from a (possibly fenced) reply.
|
|
@@ -174,7 +144,7 @@ function recordDecision(bundle, decision) {
|
|
|
174
144
|
bundle.pendingPlanDecisions = [];
|
|
175
145
|
bundle.pendingPlanDecisions.push(decision);
|
|
176
146
|
}
|
|
177
|
-
export class
|
|
147
|
+
export class SmartExecutorPlanner {
|
|
178
148
|
planner;
|
|
179
149
|
hint;
|
|
180
150
|
skillsRecall;
|
|
@@ -192,11 +162,21 @@ export class AdaptivePlanner {
|
|
|
192
162
|
this.hint = hint;
|
|
193
163
|
this.skillsRecall = skillsRecall;
|
|
194
164
|
}
|
|
165
|
+
/** Prompt seam — overridden by WeakExecutorPlanner for atomic granularity (§C). */
|
|
166
|
+
get createPlanSystem() {
|
|
167
|
+
return SMART_CREATE_PLAN_SYSTEM;
|
|
168
|
+
}
|
|
169
|
+
get replanSystem() {
|
|
170
|
+
return SMART_REPLAN_SYSTEM;
|
|
171
|
+
}
|
|
172
|
+
get externalResultReplanSystem() {
|
|
173
|
+
return SMART_EXTERNAL_RESULT_REPLAN_SYSTEM;
|
|
174
|
+
}
|
|
195
175
|
async next(input) {
|
|
196
176
|
const { bundle, prompt, lastOutcome, resumedExternal, retrying, logUsage, options, boardText, } = input;
|
|
197
177
|
// 1. No plan yet → create it.
|
|
198
178
|
if (!bundle.plan) {
|
|
199
|
-
const plan = await this.callPlan(
|
|
179
|
+
const plan = await this.callPlan(this.createPlanSystem, bundle, prompt, retrying, logUsage, [], options, boardText);
|
|
200
180
|
// An EMPTY plan from createPlan is invalid: it would skip straight to the
|
|
201
181
|
// finalizer and answer WITHOUT fetching the required data. Treat it as a
|
|
202
182
|
// format failure → handler re-asks (bounded by maxRetries). (An empty plan
|
|
@@ -222,8 +202,8 @@ export class AdaptivePlanner {
|
|
|
222
202
|
lastOutcome === 'partial' ||
|
|
223
203
|
resumedExternal) {
|
|
224
204
|
const system = resumedExternal
|
|
225
|
-
?
|
|
226
|
-
:
|
|
205
|
+
? this.externalResultReplanSystem
|
|
206
|
+
: this.replanSystem;
|
|
227
207
|
const cursor = bundle.planCursor ?? 0;
|
|
228
208
|
// Steps before the cursor already ran successfully — pass them so the replan
|
|
229
209
|
// plans only the remaining work and never repeats a completed step.
|
|
@@ -321,9 +301,23 @@ export class AdaptivePlanner {
|
|
|
321
301
|
return parsePlan(res.content);
|
|
322
302
|
}
|
|
323
303
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
304
|
+
/** Weak-executor planner (§C): the same plan-first engine as SmartExecutorPlanner,
|
|
305
|
+
* but with the finest-grain create/replan prompts (one action per step). Phase 4
|
|
306
|
+
* adds deferred discovery expansion to this class; Phase 3 differs only by prompt. */
|
|
307
|
+
export class WeakExecutorPlanner extends SmartExecutorPlanner {
|
|
308
|
+
get createPlanSystem() {
|
|
309
|
+
return WEAK_CREATE_PLAN_SYSTEM;
|
|
310
|
+
}
|
|
311
|
+
get replanSystem() {
|
|
312
|
+
return WEAK_REPLAN_SYSTEM;
|
|
313
|
+
}
|
|
314
|
+
get externalResultReplanSystem() {
|
|
315
|
+
return WEAK_EXTERNAL_RESULT_REPLAN_SYSTEM;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
export function makeControllerPlanner(kind, planner, hint, skillsRecall) {
|
|
319
|
+
return kind === 'weak-executor'
|
|
320
|
+
? new WeakExecutorPlanner(planner, hint, skillsRecall)
|
|
321
|
+
: new SmartExecutorPlanner(planner, hint, skillsRecall);
|
|
328
322
|
}
|
|
329
323
|
//# sourceMappingURL=planner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/smart-agent/controller/planner.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/smart-agent/controller/planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { CallOptions, IEmbedder, IKnowledgeRagHandle, KnowledgeEntry } from '@mcp-abap-adt/llm-agent';
|
|
2
|
+
/** Top-k recalled artifacts injected into the executor context per step. */
|
|
3
|
+
/** Artifact types eligible for recall (excludes the 'controller-bundle' record
|
|
4
|
+
* that shares the same backend). */
|
|
5
|
+
export declare const RECALL_ARTIFACT_TYPES: readonly ["step-result", "mcp-result"];
|
|
6
|
+
/** Per-kind recall counts (distinct artifacts kept after dedup + cap). */
|
|
7
|
+
export declare const RECALL_K_STEP = 4;
|
|
8
|
+
export declare const RECALL_K_MCP = 4;
|
|
9
|
+
/** SEPARATE char budgets per kind, so a huge step-result cannot starve MCP context. */
|
|
10
|
+
export declare const RECALL_MAX_CHARS_STEP = 2000;
|
|
11
|
+
export declare const RECALL_MAX_CHARS_MCP = 2000;
|
|
12
|
+
/** Char budget for a single per-`requires` evidence extract handed to the reviewer. */
|
|
13
|
+
export declare const RECALL_EVIDENCE_CHARS = 800;
|
|
14
|
+
/** Build a bounded "Relevant prior context" block from recalled artifacts under
|
|
15
|
+
* the given char budget, or undefined when there is nothing to inject. */
|
|
16
|
+
export declare function buildRecallBlock(hits: readonly {
|
|
17
|
+
content: string;
|
|
18
|
+
}[], maxChars: number): string | undefined;
|
|
19
|
+
/** Gather the run's approved results, one per seq, resolved by outcome precedence
|
|
20
|
+
* (ok/exists > partial > failed), ordered by seq. Reconstructs the complete
|
|
21
|
+
* Outcome from artifact metadata (status/note/remainder) + content. */
|
|
22
|
+
export declare function collectApproved(rag: IKnowledgeRagHandle, runId: string): Promise<{
|
|
23
|
+
seq: number;
|
|
24
|
+
content: string;
|
|
25
|
+
}[]>;
|
|
26
|
+
/** The ONE run-scoped results-RAG recall primitive — used by BOTH the whole-step
|
|
27
|
+
* recall AND the per-`requires` evidence. EMBEDDING-based similarity via the
|
|
28
|
+
* backend's semantic query (NO homemade lexical scoring): the backend embeds the
|
|
29
|
+
* query + ranks by vector similarity, with the `runId` filter applied PRE-cap.
|
|
30
|
+
* Over-fetch `kPrime` (caller-supplied so the duplication bound is justified PER
|
|
31
|
+
* KIND), then dedup and cap to `k`. Dedup: step-results (have `seq`) →
|
|
32
|
+
* precedence-winner per seq; mcp-results → by `identityKey`. Embedding rank order
|
|
33
|
+
* is preserved through the dedup.
|
|
34
|
+
* `options` is forwarded into the embedder so recall-time embeds are metered. */
|
|
35
|
+
export declare function runScopedRecall(rag: IKnowledgeRagHandle, text: string, k: number, runId: string | undefined, kPrime: number, artifactType: readonly string[], options?: CallOptions): Promise<readonly KnowledgeEntry[]>;
|
|
36
|
+
/** Return the ≤`maxChars` fragment of `content` most similar to `ref` by EMBEDDING
|
|
37
|
+
* (NOT ASCII lexical overlap). DIRECT single-pass ranking: every candidate is
|
|
38
|
+
* scored on its own. The SCORED window IS the RETURNED body: candidates are
|
|
39
|
+
* `body = maxChars - 2` chars (head+tail '…' reserved up front), so the
|
|
40
|
+
* highest-scoring fragment is never truncated by the markers. Stride is 50%
|
|
41
|
+
* overlap, widened to span the whole content within MAX_EXTRACT_WINDOWS windows
|
|
42
|
+
* (point coverage for content ≤ MAX_EXTRACT_WINDOWS×maxChars; larger thins to
|
|
43
|
+
* non-overlapping, best-effort). Embeds are SEQUENTIAL and BOUNDED to ≤
|
|
44
|
+
* MAX_EXTRACT_WINDOWS + 1 — touches NO public embedder API (batch is a deferred
|
|
45
|
+
* optimization). Result STRICTLY ≤ maxChars; tiny maxChars (< 3) → bare slice.
|
|
46
|
+
* The `requires` ref is English (planner invariant) → a normal embedder suffices. */
|
|
47
|
+
export declare function relevantExtract(content: string, ref: string, maxChars: number, embedder: IEmbedder, options?: CallOptions): Promise<string>;
|
|
48
|
+
//# sourceMappingURL=recall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/recall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC,4EAA4E;AAC5E;qCACqC;AACrC,eAAO,MAAM,qBAAqB,wCAAyC,CAAC;AAC5E,0EAA0E;AAC1E,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;2EAC2E;AAC3E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EACpC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAgBpB;AAED;;wEAEwE;AACxE,wBAAsB,eAAe,CACnC,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAwB7C;AAED;;;;;;;;kFAQkF;AAClF,wBAAsB,eAAe,CACnC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAsCpC;AA2CD;;;;;;;;;;sFAUsF;AACtF,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAyBjB"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { cosine } from '../embedder-knowledge-index.js';
|
|
2
|
+
import { resolveByPrecedence } from './outcome.js';
|
|
3
|
+
/** Top-k recalled artifacts injected into the executor context per step. */
|
|
4
|
+
/** Artifact types eligible for recall (excludes the 'controller-bundle' record
|
|
5
|
+
* that shares the same backend). */
|
|
6
|
+
export const RECALL_ARTIFACT_TYPES = ['step-result', 'mcp-result'];
|
|
7
|
+
/** Per-kind recall counts (distinct artifacts kept after dedup + cap). */
|
|
8
|
+
export const RECALL_K_STEP = 4;
|
|
9
|
+
export const RECALL_K_MCP = 4;
|
|
10
|
+
/** SEPARATE char budgets per kind, so a huge step-result cannot starve MCP context. */
|
|
11
|
+
export const RECALL_MAX_CHARS_STEP = 2000;
|
|
12
|
+
export const RECALL_MAX_CHARS_MCP = 2000;
|
|
13
|
+
/** Char budget for a single per-`requires` evidence extract handed to the reviewer. */
|
|
14
|
+
export const RECALL_EVIDENCE_CHARS = 800;
|
|
15
|
+
/** Build a bounded "Relevant prior context" block from recalled artifacts under
|
|
16
|
+
* the given char budget, or undefined when there is nothing to inject. */
|
|
17
|
+
export function buildRecallBlock(hits, maxChars) {
|
|
18
|
+
if (hits.length === 0)
|
|
19
|
+
return undefined;
|
|
20
|
+
const parts = [];
|
|
21
|
+
let used = 0;
|
|
22
|
+
for (const h of hits) {
|
|
23
|
+
const c = h.content ?? '';
|
|
24
|
+
if (c.length === 0)
|
|
25
|
+
continue;
|
|
26
|
+
if (used + c.length > maxChars) {
|
|
27
|
+
parts.push(c.slice(0, maxChars - used));
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
parts.push(c);
|
|
31
|
+
used += c.length;
|
|
32
|
+
}
|
|
33
|
+
if (parts.length === 0)
|
|
34
|
+
return undefined;
|
|
35
|
+
return `Relevant prior context:\n${parts.join('\n')}`;
|
|
36
|
+
}
|
|
37
|
+
/** Gather the run's approved results, one per seq, resolved by outcome precedence
|
|
38
|
+
* (ok/exists > partial > failed), ordered by seq. Reconstructs the complete
|
|
39
|
+
* Outcome from artifact metadata (status/note/remainder) + content. */
|
|
40
|
+
export async function collectApproved(rag, runId) {
|
|
41
|
+
const all = await rag.list({ runId, artifactType: 'step-result' });
|
|
42
|
+
const bySeq = new Map();
|
|
43
|
+
for (const e of all) {
|
|
44
|
+
const seq = e.metadata.seq ?? 0;
|
|
45
|
+
const o = {
|
|
46
|
+
status: (e.metadata.status ?? 'failed'),
|
|
47
|
+
approved: e.content,
|
|
48
|
+
remainder: e.metadata.remainder ?? '',
|
|
49
|
+
note: e.metadata.note ?? '',
|
|
50
|
+
};
|
|
51
|
+
const arr = bySeq.get(seq);
|
|
52
|
+
if (arr)
|
|
53
|
+
arr.push(o);
|
|
54
|
+
else
|
|
55
|
+
bySeq.set(seq, [o]);
|
|
56
|
+
}
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const [seq, outcomes] of [...bySeq.entries()].sort((a, b) => a[0] - b[0])) {
|
|
59
|
+
const resolved = resolveByPrecedence(outcomes);
|
|
60
|
+
if (resolved && resolved.status !== 'failed')
|
|
61
|
+
out.push({ seq, content: resolved.approved });
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
/** The ONE run-scoped results-RAG recall primitive — used by BOTH the whole-step
|
|
66
|
+
* recall AND the per-`requires` evidence. EMBEDDING-based similarity via the
|
|
67
|
+
* backend's semantic query (NO homemade lexical scoring): the backend embeds the
|
|
68
|
+
* query + ranks by vector similarity, with the `runId` filter applied PRE-cap.
|
|
69
|
+
* Over-fetch `kPrime` (caller-supplied so the duplication bound is justified PER
|
|
70
|
+
* KIND), then dedup and cap to `k`. Dedup: step-results (have `seq`) →
|
|
71
|
+
* precedence-winner per seq; mcp-results → by `identityKey`. Embedding rank order
|
|
72
|
+
* is preserved through the dedup.
|
|
73
|
+
* `options` is forwarded into the embedder so recall-time embeds are metered. */
|
|
74
|
+
export async function runScopedRecall(rag, text, k, runId, kPrime, artifactType, options) {
|
|
75
|
+
const hits = await rag.query(text, {
|
|
76
|
+
k: kPrime,
|
|
77
|
+
filter: { runId, artifactType },
|
|
78
|
+
options,
|
|
79
|
+
});
|
|
80
|
+
const bestStep = new Map();
|
|
81
|
+
const bestMcp = new Map();
|
|
82
|
+
for (const e of hits) {
|
|
83
|
+
if (e.metadata.seq !== undefined && e.metadata.status !== undefined) {
|
|
84
|
+
const prev = bestStep.get(e.metadata.seq);
|
|
85
|
+
if (!prev || isBetterStep(e, prev))
|
|
86
|
+
bestStep.set(e.metadata.seq, e);
|
|
87
|
+
}
|
|
88
|
+
else if (e.metadata.identityKey) {
|
|
89
|
+
const prev = bestMcp.get(e.metadata.identityKey);
|
|
90
|
+
if (!prev || isBetterMcp(e, prev))
|
|
91
|
+
bestMcp.set(e.metadata.identityKey, e);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Walk hits in embedding-rank order; emit each (runId,seq) / identityKey once.
|
|
95
|
+
const out = [];
|
|
96
|
+
const seenSeq = new Set();
|
|
97
|
+
const seenMcp = new Set();
|
|
98
|
+
for (const e of hits) {
|
|
99
|
+
if (e.metadata.seq !== undefined && e.metadata.status !== undefined) {
|
|
100
|
+
if (seenSeq.has(e.metadata.seq))
|
|
101
|
+
continue;
|
|
102
|
+
seenSeq.add(e.metadata.seq);
|
|
103
|
+
// biome-ignore lint/style/noNonNullAssertion: bestStep has this seq (set above).
|
|
104
|
+
out.push(bestStep.get(e.metadata.seq));
|
|
105
|
+
}
|
|
106
|
+
else if (e.metadata.identityKey) {
|
|
107
|
+
if (seenMcp.has(e.metadata.identityKey))
|
|
108
|
+
continue;
|
|
109
|
+
seenMcp.add(e.metadata.identityKey);
|
|
110
|
+
// biome-ignore lint/style/noNonNullAssertion: bestMcp has this key (set above).
|
|
111
|
+
out.push(bestMcp.get(e.metadata.identityKey));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
out.push(e);
|
|
115
|
+
}
|
|
116
|
+
if (out.length >= k)
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return out.slice(0, k);
|
|
120
|
+
}
|
|
121
|
+
/** Outcome-precedence rank for step-result dedup (ok/exists > partial > failed). */
|
|
122
|
+
function rankStatus(s) {
|
|
123
|
+
return s === 'ok' || s === 'exists'
|
|
124
|
+
? 3
|
|
125
|
+
: s === 'partial'
|
|
126
|
+
? 2
|
|
127
|
+
: s === 'failed'
|
|
128
|
+
? 1
|
|
129
|
+
: 0;
|
|
130
|
+
}
|
|
131
|
+
/** True when candidate `a` is a better winner than current `b` for step-result
|
|
132
|
+
* dedup. Latest-wins by EXECUTION IDENTITY, not by semantic-rank position:
|
|
133
|
+
* 1. Higher status rank wins; on tie →
|
|
134
|
+
* 2. Higher attempt wins; on further tie →
|
|
135
|
+
* 3. Higher writeOrdinal wins (tie-breaks same-timestamp artifacts from one run); on tie →
|
|
136
|
+
* 4. Later createdAt wins (missing = older: compare with '' as sentinel). */
|
|
137
|
+
function isBetterStep(a, b) {
|
|
138
|
+
const ra = rankStatus(a.metadata.status);
|
|
139
|
+
const rb = rankStatus(b.metadata.status);
|
|
140
|
+
if (ra !== rb)
|
|
141
|
+
return ra > rb;
|
|
142
|
+
const aa = a.metadata.attempt ?? 0;
|
|
143
|
+
const ba = b.metadata.attempt ?? 0;
|
|
144
|
+
if (aa !== ba)
|
|
145
|
+
return aa > ba;
|
|
146
|
+
const ao = a.metadata.writeOrdinal ?? -1;
|
|
147
|
+
const bo = b.metadata.writeOrdinal ?? -1;
|
|
148
|
+
if (ao !== bo)
|
|
149
|
+
return ao > bo;
|
|
150
|
+
return (a.metadata.createdAt ?? '') > (b.metadata.createdAt ?? '');
|
|
151
|
+
}
|
|
152
|
+
/** True when candidate `a` is a better winner than current `b` for mcp-result
|
|
153
|
+
* dedup. Latest-fetch wins by writeOrdinal first (handles same-timestamp), then
|
|
154
|
+
* falls back to createdAt (missing = older). */
|
|
155
|
+
function isBetterMcp(a, b) {
|
|
156
|
+
const ao = a.metadata.writeOrdinal ?? -1;
|
|
157
|
+
const bo = b.metadata.writeOrdinal ?? -1;
|
|
158
|
+
if (ao !== bo)
|
|
159
|
+
return ao > bo;
|
|
160
|
+
return (a.metadata.createdAt ?? '') > (b.metadata.createdAt ?? '');
|
|
161
|
+
}
|
|
162
|
+
const MAX_EXTRACT_WINDOWS = 64;
|
|
163
|
+
/** Return the ≤`maxChars` fragment of `content` most similar to `ref` by EMBEDDING
|
|
164
|
+
* (NOT ASCII lexical overlap). DIRECT single-pass ranking: every candidate is
|
|
165
|
+
* scored on its own. The SCORED window IS the RETURNED body: candidates are
|
|
166
|
+
* `body = maxChars - 2` chars (head+tail '…' reserved up front), so the
|
|
167
|
+
* highest-scoring fragment is never truncated by the markers. Stride is 50%
|
|
168
|
+
* overlap, widened to span the whole content within MAX_EXTRACT_WINDOWS windows
|
|
169
|
+
* (point coverage for content ≤ MAX_EXTRACT_WINDOWS×maxChars; larger thins to
|
|
170
|
+
* non-overlapping, best-effort). Embeds are SEQUENTIAL and BOUNDED to ≤
|
|
171
|
+
* MAX_EXTRACT_WINDOWS + 1 — touches NO public embedder API (batch is a deferred
|
|
172
|
+
* optimization). Result STRICTLY ≤ maxChars; tiny maxChars (< 3) → bare slice.
|
|
173
|
+
* The `requires` ref is English (planner invariant) → a normal embedder suffices. */
|
|
174
|
+
export async function relevantExtract(content, ref, maxChars, embedder, options) {
|
|
175
|
+
if (content.length <= maxChars)
|
|
176
|
+
return content;
|
|
177
|
+
if (maxChars < 3)
|
|
178
|
+
return content.slice(0, Math.max(0, maxChars));
|
|
179
|
+
const body = maxChars - 2;
|
|
180
|
+
const stride = Math.max(Math.floor(body / 2), Math.ceil(content.length / MAX_EXTRACT_WINDOWS));
|
|
181
|
+
const { vector: q } = await embedder.embed(ref, options);
|
|
182
|
+
let bestStart = 0;
|
|
183
|
+
let bestScore = Number.NEGATIVE_INFINITY;
|
|
184
|
+
for (let s = 0; s < content.length; s += stride) {
|
|
185
|
+
const { vector } = await embedder.embed(content.slice(s, s + body), options);
|
|
186
|
+
const score = cosine(q, vector);
|
|
187
|
+
if (score > bestScore) {
|
|
188
|
+
bestScore = score;
|
|
189
|
+
bestStart = s;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const head = bestStart > 0 ? '…' : '';
|
|
193
|
+
const tail = bestStart + body < content.length ? '…' : '';
|
|
194
|
+
return head + content.slice(bestStart, bestStart + body) + tail;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/smart-agent/controller/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,iFAAiF;AACjF,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;+EAO+E;AAC/E,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C;kFACkF;AAClF,MAAM,WAAW,SAAS;IACxB,MAAM,CACJ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1B;AAwBD,qBAAa,WAAY,YAAW,SAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE9C,MAAM,CACV,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC;CA8BzB;AAED;;;;6EAI6E;AAC7E,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,cAAc,SAAM,GACnB,YAAY,CAyDd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { extractJsonObject } from './
|
|
1
|
+
import { extractJsonObject } from './parser.js';
|
|
2
2
|
import { appendHint } from './prompts.js';
|
|
3
3
|
const REVIEWER_SYSTEM = 'You are the reviewer. You did NOT do the work — you JUDGE it. Given the ' +
|
|
4
4
|
"step intent, the per-reference evidence, and the executor's result, decide " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../../src/smart-agent/controller/reviewer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../../src/smart-agent/controller/reviewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,7 +164,6 @@ export interface ControllerConfig {
|
|
|
164
164
|
sessionMemory: {
|
|
165
165
|
collection: string;
|
|
166
166
|
};
|
|
167
|
-
planner?: 'incremental' | 'adaptive';
|
|
168
167
|
budgets: {
|
|
169
168
|
maxSteps: number;
|
|
170
169
|
maxRetries: number;
|
|
@@ -191,29 +190,29 @@ export interface ControllerConfig {
|
|
|
191
190
|
* explicit incomplete marker. */
|
|
192
191
|
onFinalizeExhausted?: 'error' | 'best-effort';
|
|
193
192
|
}
|
|
194
|
-
export type PlannerKind = '
|
|
193
|
+
export type PlannerKind = 'smart-executor' | 'weak-executor';
|
|
195
194
|
export interface PlannerNextInput {
|
|
196
195
|
bundle: SessionBundle;
|
|
197
196
|
prompt: string;
|
|
198
197
|
/** Outcome of the step run since the previous `next()` (undefined on the first
|
|
199
|
-
* call / after a rewind / on resume). The
|
|
200
|
-
*
|
|
198
|
+
* call / after a rewind / on resume). The plan-first planner replans on 'failed';
|
|
199
|
+
* a planner that does not implement commit() ignores it. Cursor advance on 'advanced' happens in
|
|
201
200
|
* commit(), not here. */
|
|
202
201
|
lastOutcome?: 'advanced' | 'failed' | 'partial';
|
|
203
202
|
/** True when re-asking after an unparsable reply (stern format reminder). */
|
|
204
203
|
retrying: boolean;
|
|
205
204
|
/** True on the first call of a turn that just resumed an EXTERNAL-tool result
|
|
206
|
-
* (the result is now in `bundle.plannerPrivate`). The
|
|
205
|
+
* (the result is now in `bundle.plannerPrivate`). The plan-first planner replans
|
|
207
206
|
* from the cursor so it incorporates the result via the planner — which reads
|
|
208
207
|
* plannerPrivate — instead of blindly re-running the suspended step (the
|
|
209
|
-
* executor prompt does NOT include plannerPrivate).
|
|
208
|
+
* executor prompt does NOT include plannerPrivate). A no-op planner ignores it. */
|
|
210
209
|
resumedExternal?: boolean;
|
|
211
210
|
/** The rendered step-state digest board (§B), reconstructed by the controller
|
|
212
211
|
* from artifacts before each call. When present + non-empty it is the
|
|
213
212
|
* AUTHORITATIVE step-state context, rendered ADDITIVELY ahead of the
|
|
214
213
|
* `plannerPrivate` tail (which still carries non-board deltas — clarify answers,
|
|
215
214
|
* the legacy external result). Empty/absent → the planner uses `plannerPrivate`
|
|
216
|
-
* alone (
|
|
215
|
+
* alone (board-less path; prompt byte-identical to the pre-board baseline). */
|
|
217
216
|
boardText?: string;
|
|
218
217
|
logUsage?: (role: string, u?: LlmUsage) => void;
|
|
219
218
|
/** Request-scoped call options (request logger / trace / cancellation signal).
|
|
@@ -224,8 +223,8 @@ export interface PlannerNextInput {
|
|
|
224
223
|
export interface IControllerPlanner {
|
|
225
224
|
next(input: PlannerNextInput): Promise<NextStep | null>;
|
|
226
225
|
/** Optional: record a just-finished step's outcome so the planner's durable
|
|
227
|
-
* bookkeeping (e.g. the
|
|
228
|
-
* SAME write that follows.
|
|
226
|
+
* bookkeeping (e.g. the plan-first cursor) is updated and can be persisted in the
|
|
227
|
+
* SAME write that follows. A planner that does not track state need not implement it (no-op). */
|
|
229
228
|
commit?(bundle: SessionBundle, outcome: 'advanced' | 'failed' | 'partial'): void;
|
|
230
229
|
}
|
|
231
230
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IRequestLogger, LlmUsage } from '@mcp-abap-adt/llm-agent';
|
|
2
|
+
/**
|
|
3
|
+
* Build a request-time `logUsage(role, usage)` that writes each subagent call
|
|
4
|
+
* into the per-request `IRequestLogger` (the single aggregator), attributing the
|
|
5
|
+
* role's configured model. The role is explicit at the call site, so the shared
|
|
6
|
+
* planner/finalizer client is attributed correctly. `durationMs: 0` — the seam
|
|
7
|
+
* carries no timing (matches the rag-query precedent).
|
|
8
|
+
*/
|
|
9
|
+
export declare function makeLogUsage(requestLogger: IRequestLogger, requestId: string | undefined, models: {
|
|
10
|
+
evaluator: string;
|
|
11
|
+
planner: string;
|
|
12
|
+
executor: string;
|
|
13
|
+
reviewer?: string;
|
|
14
|
+
finalizer?: string;
|
|
15
|
+
}): (role: string, u?: LlmUsage) => void;
|
|
16
|
+
//# sourceMappingURL=usage-logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-logging.d.ts","sourceRoot":"","sources":["../../../src/smart-agent/controller/usage-logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAWjC;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAwBtC"}
|