@mcp-abap-adt/llm-agent-server-libs 26.0.0 → 27.0.1
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 +6 -5
- package/dist/builders/controller-skill-pipeline-builder.d.ts.map +1 -1
- package/dist/builders/controller-skill-pipeline-builder.js +49 -54
- package/dist/builders/controller-skill-pipeline-builder.js.map +1 -1
- package/dist/factories/controller-factory.d.ts +13 -10
- package/dist/factories/controller-factory.d.ts.map +1 -1
- package/dist/factories/controller-factory.js +33 -12
- 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 +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pipelines/controller-subagents.d.ts +11 -0
- package/dist/pipelines/controller-subagents.d.ts.map +1 -0
- package/dist/pipelines/controller-subagents.js +77 -0
- package/dist/pipelines/controller-subagents.js.map +1 -0
- package/dist/pipelines/controller.d.ts +11 -10
- package/dist/pipelines/controller.d.ts.map +1 -1
- package/dist/pipelines/controller.js +14 -65
- package/dist/pipelines/controller.js.map +1 -1
- package/dist/pipelines/coordinator-resolvers.d.ts +6 -11
- package/dist/pipelines/coordinator-resolvers.d.ts.map +1 -1
- package/dist/pipelines/coordinator-resolvers.js +7 -17
- package/dist/pipelines/coordinator-resolvers.js.map +1 -1
- package/dist/pipelines/dag.d.ts +9 -9
- package/dist/pipelines/dag.d.ts.map +1 -1
- package/dist/pipelines/dag.js +11 -22
- package/dist/pipelines/dag.js.map +1 -1
- package/dist/pipelines/flat.d.ts +4 -7
- package/dist/pipelines/flat.d.ts.map +1 -1
- package/dist/pipelines/flat.js +3 -8
- package/dist/pipelines/flat.js.map +1 -1
- package/dist/pipelines/linear.d.ts +8 -10
- package/dist/pipelines/linear.d.ts.map +1 -1
- package/dist/pipelines/linear.js +18 -11
- package/dist/pipelines/linear.js.map +1 -1
- package/dist/pipelines/parsers.d.ts +0 -3
- package/dist/pipelines/parsers.d.ts.map +1 -1
- package/dist/pipelines/parsers.js +4 -19
- package/dist/pipelines/parsers.js.map +1 -1
- package/dist/pipelines/server-context.d.ts +0 -5
- package/dist/pipelines/server-context.d.ts.map +1 -1
- package/dist/pipelines/server-context.js.map +1 -1
- package/dist/pipelines/stepper.d.ts +5 -4
- package/dist/pipelines/stepper.d.ts.map +1 -1
- package/dist/pipelines/stepper.js +5 -4
- package/dist/pipelines/stepper.js.map +1 -1
- package/dist/smart-agent/build-dag-coordinator-deps.d.ts +11 -22
- package/dist/smart-agent/build-dag-coordinator-deps.d.ts.map +1 -1
- package/dist/smart-agent/build-dag-coordinator-deps.js +21 -78
- package/dist/smart-agent/build-dag-coordinator-deps.js.map +1 -1
- package/dist/smart-agent/build-stepper-root.d.ts.map +1 -1
- package/dist/smart-agent/build-stepper-root.js +0 -1
- package/dist/smart-agent/build-stepper-root.js.map +1 -1
- package/dist/smart-agent/config-validator.d.ts +8 -1
- package/dist/smart-agent/config-validator.d.ts.map +1 -1
- package/dist/smart-agent/config-validator.js +200 -62
- package/dist/smart-agent/config-validator.js.map +1 -1
- package/dist/smart-agent/config.d.ts +7 -7
- package/dist/smart-agent/config.d.ts.map +1 -1
- package/dist/smart-agent/config.js +24 -11
- package/dist/smart-agent/config.js.map +1 -1
- package/dist/smart-agent/controller/types.d.ts +22 -15
- package/dist/smart-agent/controller/types.d.ts.map +1 -1
- package/dist/smart-agent/controller/types.js.map +1 -1
- package/dist/smart-agent/http/config-route-handler.d.ts +2 -0
- package/dist/smart-agent/http/config-route-handler.d.ts.map +1 -1
- package/dist/smart-agent/http/config-route-handler.js +20 -0
- package/dist/smart-agent/http/config-route-handler.js.map +1 -1
- package/dist/smart-agent/llm/role-llm-resolver.d.ts +23 -11
- package/dist/smart-agent/llm/role-llm-resolver.d.ts.map +1 -1
- package/dist/smart-agent/llm/role-llm-resolver.js +65 -37
- package/dist/smart-agent/llm/role-llm-resolver.js.map +1 -1
- package/dist/smart-agent/llm-config-map.d.ts +9 -1
- package/dist/smart-agent/llm-config-map.d.ts.map +1 -1
- package/dist/smart-agent/llm-config-map.js +27 -5
- package/dist/smart-agent/llm-config-map.js.map +1 -1
- package/dist/smart-agent/pipeline-settings.d.ts +50 -0
- package/dist/smart-agent/pipeline-settings.d.ts.map +1 -0
- package/dist/smart-agent/pipeline-settings.js +174 -0
- package/dist/smart-agent/pipeline-settings.js.map +1 -0
- package/dist/smart-agent/pipeline.d.ts +3 -63
- package/dist/smart-agent/pipeline.d.ts.map +1 -1
- package/dist/smart-agent/pipeline.js +3 -2
- package/dist/smart-agent/pipeline.js.map +1 -1
- package/dist/smart-agent/rag-config.d.ts +155 -0
- package/dist/smart-agent/rag-config.d.ts.map +1 -0
- package/dist/smart-agent/rag-config.js +62 -0
- package/dist/smart-agent/rag-config.js.map +1 -0
- package/dist/smart-agent/resolve-agent-embedder.d.ts +11 -10
- package/dist/smart-agent/resolve-agent-embedder.d.ts.map +1 -1
- package/dist/smart-agent/resolve-agent-embedder.js +37 -36
- package/dist/smart-agent/resolve-agent-embedder.js.map +1 -1
- package/dist/smart-agent/resolve-config-sections.d.ts +1 -1
- package/dist/smart-agent/resolve-config-sections.d.ts.map +1 -1
- package/dist/smart-agent/resolve-config-sections.js +124 -30
- package/dist/smart-agent/resolve-config-sections.js.map +1 -1
- package/dist/smart-agent/select-pipeline-plugin.d.ts +8 -0
- package/dist/smart-agent/select-pipeline-plugin.d.ts.map +1 -0
- package/dist/smart-agent/select-pipeline-plugin.js +26 -0
- package/dist/smart-agent/select-pipeline-plugin.js.map +1 -0
- package/dist/smart-agent/session-lifecycle/index.d.ts +38 -4
- package/dist/smart-agent/session-lifecycle/index.d.ts.map +1 -1
- package/dist/smart-agent/session-lifecycle/index.js +11 -1
- package/dist/smart-agent/session-lifecycle/index.js.map +1 -1
- package/dist/smart-agent/session-lifecycle/session-rag-registry.d.ts +39 -0
- package/dist/smart-agent/session-lifecycle/session-rag-registry.d.ts.map +1 -0
- package/dist/smart-agent/session-lifecycle/session-rag-registry.js +109 -0
- package/dist/smart-agent/session-lifecycle/session-rag-registry.js.map +1 -0
- package/dist/smart-agent/skill-plugins-config.d.ts +3 -2
- package/dist/smart-agent/skill-plugins-config.d.ts.map +1 -1
- package/dist/smart-agent/skill-plugins-config.js +12 -1
- package/dist/smart-agent/skill-plugins-config.js.map +1 -1
- package/dist/smart-agent/skill-plugins-host-factory.d.ts +9 -0
- package/dist/smart-agent/skill-plugins-host-factory.d.ts.map +1 -1
- package/dist/smart-agent/skill-plugins-host-factory.js +12 -6
- package/dist/smart-agent/skill-plugins-host-factory.js.map +1 -1
- package/dist/smart-agent/smart-server.d.ts +90 -78
- package/dist/smart-agent/smart-server.d.ts.map +1 -1
- package/dist/smart-agent/smart-server.js +201 -152
- package/dist/smart-agent/smart-server.js.map +1 -1
- package/dist/smart-agent/worker-llm.d.ts +18 -0
- package/dist/smart-agent/worker-llm.d.ts.map +1 -0
- package/dist/smart-agent/worker-llm.js +59 -0
- package/dist/smart-agent/worker-llm.js.map +1 -0
- package/dist/smart-agent/workers/worker-registry.d.ts +6 -14
- package/dist/smart-agent/workers/worker-registry.d.ts.map +1 -1
- package/dist/smart-agent/workers/worker-registry.js +2 -11
- package/dist/smart-agent/workers/worker-registry.js.map +1 -1
- package/dist/smart-agent/yaml-loader.d.ts +1 -1
- package/dist/smart-agent/yaml-loader.d.ts.map +1 -1
- package/dist/smart-agent/yaml-loader.js +20 -17
- package/dist/smart-agent/yaml-loader.js.map +1 -1
- package/package.json +8 -7
- package/dist/smart-agent/mcp/mcp-content.d.ts +0 -19
- package/dist/smart-agent/mcp/mcp-content.d.ts.map +0 -1
- package/dist/smart-agent/mcp/mcp-content.js +0 -31
- package/dist/smart-agent/mcp/mcp-content.js.map +0 -1
- package/dist/smart-agent/mcp/require-mcp-timeout.d.ts +0 -20
- package/dist/smart-agent/mcp/require-mcp-timeout.d.ts.map +0 -1
- package/dist/smart-agent/mcp/require-mcp-timeout.js +0 -23
- package/dist/smart-agent/mcp/require-mcp-timeout.js.map +0 -1
- package/dist/smart-agent/mcp-readiness-monitor.d.ts +0 -38
- package/dist/smart-agent/mcp-readiness-monitor.d.ts.map +0 -1
- package/dist/smart-agent/mcp-readiness-monitor.js +0 -81
- package/dist/smart-agent/mcp-readiness-monitor.js.map +0 -1
- package/dist/smart-agent/mcp-readiness-registry.d.ts +0 -37
- package/dist/smart-agent/mcp-readiness-registry.d.ts.map +0 -1
- package/dist/smart-agent/mcp-readiness-registry.js +0 -55
- package/dist/smart-agent/mcp-readiness-registry.js.map +0 -1
- package/dist/smart-agent/skill-plugins-config.test.d.ts +0 -2
- package/dist/smart-agent/skill-plugins-config.test.d.ts.map +0 -1
- package/dist/smart-agent/skill-plugins-config.test.js.map +0 -1
- package/dist/smart-agent/skill-plugins-host-factory.test.d.ts +0 -2
- package/dist/smart-agent/skill-plugins-host-factory.test.d.ts.map +0 -1
- package/dist/smart-agent/skill-plugins-host-factory.test.js.map +0 -1
|
@@ -4,7 +4,8 @@ import type { BuildAgentDeps, SmartServerConfig } from '../smart-agent/smart-ser
|
|
|
4
4
|
export interface BuilderLlmInput {
|
|
5
5
|
provider: 'sap-ai-sdk' | 'openai' | 'anthropic' | 'deepseek' | 'ollama';
|
|
6
6
|
model?: string;
|
|
7
|
-
|
|
7
|
+
/** Names the account the composition root resolves; omit for its default. */
|
|
8
|
+
credentialRef?: string;
|
|
8
9
|
url?: string;
|
|
9
10
|
temperature?: number;
|
|
10
11
|
maxTokens?: number;
|
|
@@ -21,6 +22,8 @@ export interface BuilderEmbedderInput {
|
|
|
21
22
|
model?: string;
|
|
22
23
|
scenario?: string;
|
|
23
24
|
resourceGroup?: string;
|
|
25
|
+
/** Names the embedder's account; omit for the root's default. */
|
|
26
|
+
credentialRef?: string;
|
|
24
27
|
}
|
|
25
28
|
type Role = 'evaluator' | 'planner' | 'executor';
|
|
26
29
|
export declare class ControllerSkillPipelineBuilder {
|
|
@@ -45,10 +48,8 @@ export declare class ControllerSkillPipelineBuilder {
|
|
|
45
48
|
withBudgets(b: Record<string, unknown>): this;
|
|
46
49
|
withTargetState(t: Record<string, unknown>): this;
|
|
47
50
|
withPlanner(kind: PlannerKind): this;
|
|
48
|
-
toConfig(
|
|
49
|
-
|
|
50
|
-
}): SmartServerConfig;
|
|
51
|
-
build(deps?: BuildAgentDeps): Promise<{
|
|
51
|
+
toConfig(): SmartServerConfig;
|
|
52
|
+
build(deps: BuildAgentDeps): Promise<{
|
|
52
53
|
agent: ISmartAgent;
|
|
53
54
|
close: () => Promise<void>;
|
|
54
55
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-skill-pipeline-builder.d.ts","sourceRoot":"","sources":["../../src/builders/controller-skill-pipeline-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAGlB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"controller-skill-pipeline-builder.d.ts","sourceRoot":"","sources":["../../src/builders/controller-skill-pipeline-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAGlB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD,KAAK,IAAI,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAmBjD,qBAAa,8BAA8B;IACzC,OAAO,CAAC,IAAI,CAAC,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,MAAM,CAAC,CAA0B;IACzC,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,YAAY,CAAiC;IAErD,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAInC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI;IAInD,OAAO,CAAC,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI;IAQrE,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAI3C,eAAe,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI;IAInD,YAAY,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI;IAI7C,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7C,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjD,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAKpC,QAAQ,IAAI,iBAAiB;IAmGvB,KAAK,CACT,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CAgB/D"}
|
|
@@ -1,23 +1,13 @@
|
|
|
1
1
|
import { resolveSmartServerConfig } from '../smart-agent/config.js';
|
|
2
2
|
import { buildAgent } from '../smart-agent/smart-server.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
anthropic: 'ANTHROPIC_API_KEY',
|
|
7
|
-
deepseek: 'DEEPSEEK_API_KEY',
|
|
8
|
-
};
|
|
9
|
-
function toLlmConfig(input, opts = {}) {
|
|
10
|
-
let apiKey = input.apiKey ?? '';
|
|
11
|
-
if (!KEYLESS.has(input.provider) && apiKey === '') {
|
|
12
|
-
apiKey = process.env[ENV_KEY[input.provider] ?? ''] ?? '';
|
|
13
|
-
if (apiKey === '' && !opts.skipRuntime) {
|
|
14
|
-
throw new Error(`ControllerSkillPipelineBuilder: provider '${input.provider}' needs an apiKey — ` +
|
|
15
|
-
`pass it to .withLlm()/.withRoleLlm() or set ${ENV_KEY[input.provider]}`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
3
|
+
// A builder reads no environment: which key a provider uses is the composition
|
|
4
|
+
// root's business, reached through credentialRef (§4.6.2).
|
|
5
|
+
function toLlmConfig(input) {
|
|
18
6
|
return {
|
|
19
7
|
provider: input.provider,
|
|
20
|
-
|
|
8
|
+
...(input.credentialRef !== undefined
|
|
9
|
+
? { credentialRef: input.credentialRef }
|
|
10
|
+
: {}),
|
|
21
11
|
...(input.model !== undefined ? { model: input.model } : {}),
|
|
22
12
|
...(input.url !== undefined ? { url: input.url } : {}),
|
|
23
13
|
...(input.temperature !== undefined
|
|
@@ -76,7 +66,7 @@ export class ControllerSkillPipelineBuilder {
|
|
|
76
66
|
this._plannerKind = kind;
|
|
77
67
|
return this;
|
|
78
68
|
}
|
|
79
|
-
toConfig(
|
|
69
|
+
toConfig() {
|
|
80
70
|
if (!this._llm && Object.keys(this._roleLlm).length === 0) {
|
|
81
71
|
throw new Error('ControllerSkillPipelineBuilder: call .withLlm() (or .withRoleLlm() for all roles) before building');
|
|
82
72
|
}
|
|
@@ -86,31 +76,34 @@ export class ControllerSkillPipelineBuilder {
|
|
|
86
76
|
if (!this._embedder) {
|
|
87
77
|
throw new Error('ControllerSkillPipelineBuilder: call .withEmbedder() before building (skills need an embedder)');
|
|
88
78
|
}
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
: undefined;
|
|
93
|
-
const roleCfg = (r) => {
|
|
79
|
+
const base = this._llm ? toLlmConfig(this._llm) : undefined;
|
|
80
|
+
const llm = {};
|
|
81
|
+
const subagent = (r) => {
|
|
94
82
|
const ovr = this._roleLlm[r];
|
|
95
|
-
if (ovr)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
83
|
+
if (!ovr) {
|
|
84
|
+
if (!base) {
|
|
85
|
+
throw new Error(`ControllerSkillPipelineBuilder: no LLM for role '${r}' (set .withLlm() or .withRoleLlm('${r}', …))`);
|
|
86
|
+
}
|
|
87
|
+
return {}; // the role's own name → llm.<role> absent → the main instance
|
|
88
|
+
}
|
|
89
|
+
llm[r] = toLlmConfig(ovr);
|
|
90
|
+
return { llm: r };
|
|
100
91
|
};
|
|
92
|
+
const subagents = {
|
|
93
|
+
evaluator: subagent('evaluator'),
|
|
94
|
+
planner: subagent('planner'),
|
|
95
|
+
executor: subagent('executor'),
|
|
96
|
+
};
|
|
97
|
+
llm.main = base ?? llm.executor;
|
|
101
98
|
const collection = this._skill.collection ?? 'sap';
|
|
102
99
|
return {
|
|
103
|
-
llm
|
|
100
|
+
llm,
|
|
104
101
|
pipeline: {
|
|
105
102
|
name: this._plannerKind === 'weak-executor'
|
|
106
103
|
? 'controller-weak'
|
|
107
104
|
: 'controller',
|
|
108
105
|
config: {
|
|
109
|
-
subagents
|
|
110
|
-
evaluator: roleCfg('evaluator'),
|
|
111
|
-
planner: roleCfg('planner'),
|
|
112
|
-
executor: roleCfg('executor'),
|
|
113
|
-
},
|
|
106
|
+
subagents,
|
|
114
107
|
...(Object.keys(this._targetState).length
|
|
115
108
|
? { targetState: this._targetState }
|
|
116
109
|
: {}),
|
|
@@ -120,15 +113,20 @@ export class ControllerSkillPipelineBuilder {
|
|
|
120
113
|
},
|
|
121
114
|
},
|
|
122
115
|
rag: {
|
|
123
|
-
type: 'in-memory',
|
|
124
|
-
embedder:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
store: { type: 'in-memory' },
|
|
117
|
+
embedder: {
|
|
118
|
+
provider: this._embedder.provider,
|
|
119
|
+
...(this._embedder.model ? { model: this._embedder.model } : {}),
|
|
120
|
+
...(this._embedder.scenario
|
|
121
|
+
? { scenario: this._embedder.scenario }
|
|
122
|
+
: {}),
|
|
123
|
+
...(this._embedder.resourceGroup
|
|
124
|
+
? { resourceGroup: this._embedder.resourceGroup }
|
|
125
|
+
: {}),
|
|
126
|
+
...(this._embedder.credentialRef
|
|
127
|
+
? { credentialRef: this._embedder.credentialRef }
|
|
128
|
+
: {}),
|
|
129
|
+
},
|
|
132
130
|
},
|
|
133
131
|
...(this._mcp.length ? { mcp: this._mcp } : {}),
|
|
134
132
|
skillPlugins: {
|
|
@@ -158,18 +156,15 @@ export class ControllerSkillPipelineBuilder {
|
|
|
158
156
|
};
|
|
159
157
|
}
|
|
160
158
|
async build(deps) {
|
|
161
|
-
//
|
|
162
|
-
// provider
|
|
163
|
-
//
|
|
164
|
-
const skipProviderRuntimeChecks =
|
|
165
|
-
const normalized = resolveSmartServerConfig({}, this.toConfig(
|
|
166
|
-
|
|
167
|
-
? {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
: undefined;
|
|
172
|
-
return buildAgent(normalized, mergedDeps);
|
|
159
|
+
// With an injected embedder the configured embedder model is never used, so the
|
|
160
|
+
// provider-runtime checks (models required) are skipped; structural ones run.
|
|
161
|
+
// makeLlm is always the caller's now, so this is the old `makeLlm && embedder`.
|
|
162
|
+
const skipProviderRuntimeChecks = deps.embedder !== undefined;
|
|
163
|
+
const normalized = resolveSmartServerConfig({}, this.toConfig(), process.env, { skipProviderRuntimeChecks });
|
|
164
|
+
return buildAgent(normalized, {
|
|
165
|
+
...(this._mcpClients ? { mcpClients: this._mcpClients } : {}),
|
|
166
|
+
...deps,
|
|
167
|
+
});
|
|
173
168
|
}
|
|
174
169
|
}
|
|
175
170
|
//# sourceMappingURL=controller-skill-pipeline-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-skill-pipeline-builder.js","sourceRoot":"","sources":["../../src/builders/controller-skill-pipeline-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAQpE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-skill-pipeline-builder.js","sourceRoot":"","sources":["../../src/builders/controller-skill-pipeline-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAQpE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AA4B5D,+EAA+E;AAC/E,2DAA2D;AAC3D,SAAS,WAAW,CAAC,KAAsB;IACzC,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,8BAA8B;IACjC,IAAI,CAAmB;IACvB,QAAQ,GAA2C,EAAE,CAAC;IACtD,IAAI,GAA2B,EAAE,CAAC;IAClC,WAAW,CAAgB;IAC3B,MAAM,CAA2B;IACjC,SAAS,CAAwB;IACjC,QAAQ,GAA4B,EAAE,CAAC;IACvC,YAAY,GAA4B,EAAE,CAAC;IAC3C,YAAY,GAAgB,gBAAgB,CAAC;IAErD,OAAO,CAAC,GAAoB;QAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,WAAW,CAAC,IAAU,EAAE,GAAoB;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAsD;QAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzB,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,cAAc,CAAC,OAAqB;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAe,CAAC,GAA4B;QAC1C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,CAAC,GAAyB;QACpC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,WAAW,CAAC,CAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAe,CAAC,CAA0B;QACxC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,WAAW,CAAC,IAAiB;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,MAAM,GAAG,GAAyC,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAO,EAAoB,EAAE;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CACb,oDAAoD,CAAC,sCAAsC,CAAC,QAAQ,CACrG,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC,CAAC,8DAA8D;YAC3E,CAAC;YACD,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG;YAChB,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;YAC5B,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;SAC/B,CAAC;QACF,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;QACnD,OAAO;YACL,GAAG;YACH,QAAQ,EAAE;gBACR,IAAI,EACF,IAAI,CAAC,YAAY,KAAK,eAAe;oBACnC,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,YAAY;gBAClB,MAAM,EAAE;oBACN,SAAS;oBACT,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM;wBACvC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE;wBACpC,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;wBACnC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;wBAC5B,CAAC,CAAC,EAAE,CAAC;iBACR;aACF;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC5B,QAAQ,EAAE;oBACR,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;oBACjC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;wBACzB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;wBACvC,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa;wBAC9B,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;wBACjD,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa;wBAC9B,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;wBACjD,CAAC,CAAC,EAAE,CAAC;iBACR;aACF;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC5B,2EAA2E;gBAC3E,wEAAwE;gBACxE,oEAAoE;gBACpE,yEAAyE;gBACzE,yEAAyE;gBACzE,wEAAwE;gBACxE,oBAAoB,EAAE,UAAU;gBAChC,OAAO,EAAE;oBACP;wBACE,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;wBAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;wBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1D,QAAQ,EAAE,mBAAmB;wBAC7B,cAAc,EAAE,EAAE,UAAU,EAAE;qBAC/B;iBACF;aACF;YACD,kFAAkF;YAClF,mFAAmF;YACnF,8EAA8E;SAC/C,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK,CACT,IAAoB;QAEpB,gFAAgF;QAChF,8EAA8E;QAC9E,gFAAgF;QAChF,MAAM,yBAAyB,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;QAC9D,MAAM,UAAU,GAAG,wBAAwB,CACzC,EAAE,EACF,IAAI,CAAC,QAAQ,EAAgB,EAC7B,OAAO,CAAC,GAAG,EACX,EAAE,yBAAyB,EAAE,CAC9B,CAAC;QACF,OAAO,UAAU,CAAC,UAA+B,EAAE;YACjD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuiltCoordinator, CallOptions, IEmbedder, IKnowledgeRagHandle, IPipelineFactory, IRunExecutionControl, IStepExecutionControl, IWaitStrategy, LlmTool, PipelineFactoryDepsBase, ToolLoopContextStrategyFactory } from '@mcp-abap-adt/llm-agent';
|
|
1
|
+
import type { BuiltCoordinator, CallOptions, IEmbedder, IKnowledgeRagHandle, ILlm, IPipelineContext, IPipelineFactory, IRunExecutionControl, IStepExecutionControl, IWaitStrategy, LlmTool, PipelineFactoryDepsBase, ToolLoopContextStrategyFactory } from '@mcp-abap-adt/llm-agent';
|
|
2
2
|
import type { KnowledgeBackend } from '@mcp-abap-adt/llm-agent-libs';
|
|
3
3
|
import type { ControllerConfig, PlannerKind } from '../smart-agent/controller/types.js';
|
|
4
4
|
/**
|
|
@@ -61,16 +61,11 @@ export interface ControllerFactoryDeps extends PipelineFactoryDepsBase {
|
|
|
61
61
|
*
|
|
62
62
|
* @example
|
|
63
63
|
* ```ts
|
|
64
|
-
* import { ControllerFactory } from '@mcp-abap-adt/llm-agent-server-libs/controller';
|
|
64
|
+
* import { ControllerFactory, makeControllerRoleLlm } from '@mcp-abap-adt/llm-agent-server-libs/controller';
|
|
65
65
|
* const { handler } = await new ControllerFactory().build(config, {
|
|
66
|
-
* //
|
|
67
|
-
* // finalizer
|
|
68
|
-
*
|
|
69
|
-
* makeRoleLlm: (role) =>
|
|
70
|
-
* makeLlm(
|
|
71
|
-
* config.subagents[role as keyof typeof config.subagents] ??
|
|
72
|
-
* config.subagents.planner,
|
|
73
|
-
* ),
|
|
66
|
+
* // named keys resolve strictly, omitted ones by the role's own name; an
|
|
67
|
+
* // absent reviewer/finalizer block is never asked for — it gets the planner's
|
|
68
|
+
* makeRoleLlm: makeControllerRoleLlm(config.subagents, ctx),
|
|
74
69
|
* callMcp, backend, knowledgeRagFor, embedder, selectTools,
|
|
75
70
|
* });
|
|
76
71
|
* const handle = await builder.withStepperCoordinator(handler).build();
|
|
@@ -80,4 +75,12 @@ export declare class ControllerFactory implements IPipelineFactory<ControllerCon
|
|
|
80
75
|
readonly kind: "controller";
|
|
81
76
|
build(config: ControllerConfig, deps: ControllerFactoryDeps, plannerKind?: PlannerKind): Promise<BuiltCoordinator>;
|
|
82
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* The controller's `makeRoleLlm`: a role whose subagent block NAMES a key
|
|
80
|
+
* resolves it strictly through `ctx.resolveNamedLlm(key)`; a role whose key was
|
|
81
|
+
* omitted asks `ctx.resolveLlm(role)` with its own name (§4.6.7). Never the
|
|
82
|
+
* other way round — `resolveLlm` answers an unknown name with `main`, which
|
|
83
|
+
* would turn a misspelled key into a silent model change.
|
|
84
|
+
*/
|
|
85
|
+
export declare function makeControllerRoleLlm(subagents: ControllerConfig['subagents'], ctx: Pick<IPipelineContext, 'resolveLlm' | 'resolveNamedLlm'>): (role: string) => Promise<ILlm>;
|
|
83
86
|
//# sourceMappingURL=controller-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-factory.d.ts","sourceRoot":"","sources":["../../src/factories/controller-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,OAAO,EACP,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,uEAAuE;IACvE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,2CAA2C;IAC3C,eAAe,EAAE,CACf,SAAS,EAAE,MAAM,KACd,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD;;wFAEoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,EACb,CAAC,CAAC,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACjC,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;IAChE;;0EAEsE;IACtE,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C;;qDAEiD;IACjD,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C;;mCAE+B;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED
|
|
1
|
+
{"version":3,"file":"controller-factory.d.ts","sourceRoot":"","sources":["../../src/factories/controller-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,OAAO,EACP,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,uEAAuE;IACvE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,2CAA2C;IAC3C,eAAe,EAAE,CACf,SAAS,EAAE,MAAM,KACd,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD;;wFAEoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,EACb,CAAC,CAAC,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACjC,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;IAChE;;0EAEsE;IACtE,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C;;qDAEiD;IACjD,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C;;mCAE+B;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBACX,YAAW,gBAAgB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IAEpE,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAEhC,KAAK,CACT,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,qBAAqB,EAC3B,WAAW,GAAE,WAA8B,GAC1C,OAAO,CAAC,gBAAgB,CAAC;CAsF7B;AAeD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACxC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAC5D,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAUjC"}
|
|
@@ -13,16 +13,11 @@ import { makeSubagentClient } from '../smart-agent/controller/subagent-client.js
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```ts
|
|
16
|
-
* import { ControllerFactory } from '@mcp-abap-adt/llm-agent-server-libs/controller';
|
|
16
|
+
* import { ControllerFactory, makeControllerRoleLlm } from '@mcp-abap-adt/llm-agent-server-libs/controller';
|
|
17
17
|
* const { handler } = await new ControllerFactory().build(config, {
|
|
18
|
-
* //
|
|
19
|
-
* // finalizer
|
|
20
|
-
*
|
|
21
|
-
* makeRoleLlm: (role) =>
|
|
22
|
-
* makeLlm(
|
|
23
|
-
* config.subagents[role as keyof typeof config.subagents] ??
|
|
24
|
-
* config.subagents.planner,
|
|
25
|
-
* ),
|
|
18
|
+
* // named keys resolve strictly, omitted ones by the role's own name; an
|
|
19
|
+
* // absent reviewer/finalizer block is never asked for — it gets the planner's
|
|
20
|
+
* makeRoleLlm: makeControllerRoleLlm(config.subagents, ctx),
|
|
26
21
|
* callMcp, backend, knowledgeRagFor, embedder, selectTools,
|
|
27
22
|
* });
|
|
28
23
|
* const handle = await builder.withStepperCoordinator(handler).build();
|
|
@@ -60,9 +55,9 @@ export class ControllerFactory {
|
|
|
60
55
|
deps.makeRoleLlm('planner'),
|
|
61
56
|
deps.makeRoleLlm('executor'),
|
|
62
57
|
]);
|
|
63
|
-
// reviewer/finalizer
|
|
64
|
-
//
|
|
65
|
-
//
|
|
58
|
+
// An ABSENT reviewer/finalizer block means the planner's instance — obtained
|
|
59
|
+
// through the planner's key, or its default when it named none (§4.6.7) — so
|
|
60
|
+
// the role is not asked for at all. A PRESENT block resolves its own role.
|
|
66
61
|
const reviewerLlm = config.subagents.reviewer
|
|
67
62
|
? await deps.makeRoleLlm('reviewer')
|
|
68
63
|
: plannerLlm;
|
|
@@ -110,4 +105,30 @@ export class ControllerFactory {
|
|
|
110
105
|
return { handler };
|
|
111
106
|
}
|
|
112
107
|
}
|
|
108
|
+
const CONTROLLER_ROLES = [
|
|
109
|
+
'evaluator',
|
|
110
|
+
'planner',
|
|
111
|
+
'executor',
|
|
112
|
+
'reviewer',
|
|
113
|
+
'finalizer',
|
|
114
|
+
];
|
|
115
|
+
function isControllerRole(role) {
|
|
116
|
+
return CONTROLLER_ROLES.includes(role);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The controller's `makeRoleLlm`: a role whose subagent block NAMES a key
|
|
120
|
+
* resolves it strictly through `ctx.resolveNamedLlm(key)`; a role whose key was
|
|
121
|
+
* omitted asks `ctx.resolveLlm(role)` with its own name (§4.6.7). Never the
|
|
122
|
+
* other way round — `resolveLlm` answers an unknown name with `main`, which
|
|
123
|
+
* would turn a misspelled key into a silent model change.
|
|
124
|
+
*/
|
|
125
|
+
export function makeControllerRoleLlm(subagents, ctx) {
|
|
126
|
+
return (role) => {
|
|
127
|
+
if (!isControllerRole(role)) {
|
|
128
|
+
return Promise.reject(new Error(`controller: unknown subagent role '${role}'`));
|
|
129
|
+
}
|
|
130
|
+
const key = subagents[role]?.llm;
|
|
131
|
+
return key !== undefined ? ctx.resolveNamedLlm(key) : ctx.resolveLlm(role);
|
|
132
|
+
};
|
|
133
|
+
}
|
|
113
134
|
//# sourceMappingURL=controller-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-factory.js","sourceRoot":"","sources":["../../src/factories/controller-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller-factory.js","sourceRoot":"","sources":["../../src/factories/controller-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "
|
|
1
|
+
export declare const PACKAGE_VERSION = "27.0.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export * from './smart-agent/jsonl-knowledge-backend.js';
|
|
|
8
8
|
export * from './smart-agent/mcp/mcp-clients-with-descriptors.js';
|
|
9
9
|
export { makePgPool, makePgReadPool } from './smart-agent/pg-pool.js';
|
|
10
10
|
export * from './smart-agent/pipeline.js';
|
|
11
|
+
export * from './smart-agent/pipeline-settings.js';
|
|
12
|
+
export * from './smart-agent/rag-config.js';
|
|
11
13
|
export * from './smart-agent/resolve-agent-embedder.js';
|
|
12
14
|
export * from './smart-agent/session-identity-resolver.js';
|
|
13
15
|
export * from './smart-agent/session-meta-store.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,8BAA8B,GAC/B,MAAM,iDAAiD,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,8BAA8B,GAC/B,MAAM,iDAAiD,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export * from './smart-agent/jsonl-knowledge-backend.js';
|
|
|
8
8
|
export * from './smart-agent/mcp/mcp-clients-with-descriptors.js';
|
|
9
9
|
export { makePgPool, makePgReadPool } from './smart-agent/pg-pool.js';
|
|
10
10
|
export * from './smart-agent/pipeline.js';
|
|
11
|
+
export * from './smart-agent/pipeline-settings.js';
|
|
12
|
+
export * from './smart-agent/rag-config.js';
|
|
11
13
|
export * from './smart-agent/resolve-agent-embedder.js';
|
|
12
14
|
export * from './smart-agent/session-identity-resolver.js';
|
|
13
15
|
export * from './smart-agent/session-meta-store.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,8BAA8B,GAC/B,MAAM,iDAAiD,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,8BAA8B,GAC/B,MAAM,iDAAiD,CAAC;AACzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mDAAmD,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8CAA8C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ControllerConfig } from '../smart-agent/controller/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse `pipeline.config.subagents` for the controller (§4.6.7). Each role is
|
|
4
|
+
* `{}` or `{ llm?: <key>, hint?: <text> }`. evaluator/planner/executor are
|
|
5
|
+
* required; reviewer/finalizer stay absent when their block is absent, which the
|
|
6
|
+
* factory reads as "the planner's instance". Called by the server in `start()`,
|
|
7
|
+
* with the keys of the main file's `llm:` map, so a named key with no entry is a
|
|
8
|
+
* startup error rather than a silent fallback to `main`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseControllerSubagents(raw: unknown, llmKeys: ReadonlySet<string>): ControllerConfig['subagents'];
|
|
11
|
+
//# sourceMappingURL=controller-subagents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-subagents.d.ts","sourceRoot":"","sources":["../../src/pipelines/controller-subagents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,oCAAoC,CAAC;AAgE5C;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,gBAAgB,CAAC,WAAW,CAAC,CAgC/B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { INLINE_LLM_CONFIG_FIELDS } from '../smart-agent/llm-config-map.js';
|
|
2
|
+
const REQUIRED = ['evaluator', 'planner', 'executor'];
|
|
3
|
+
const OPTIONAL = ['reviewer', 'finalizer'];
|
|
4
|
+
const ROLES = [...REQUIRED, ...OPTIONAL];
|
|
5
|
+
function isPlainObject(v) {
|
|
6
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
7
|
+
}
|
|
8
|
+
function parseOne(role, raw, llmKeys) {
|
|
9
|
+
if (!isPlainObject(raw)) {
|
|
10
|
+
throw new Error(`pipeline 'controller': subagents.${role} must be an object — {} or { llm: <key>, hint: <text> }`);
|
|
11
|
+
}
|
|
12
|
+
const inline = Object.keys(raw).filter((k) => INLINE_LLM_CONFIG_FIELDS.includes(k));
|
|
13
|
+
if (inline.length > 0) {
|
|
14
|
+
throw new Error(`pipeline 'controller': subagents.${role} holds an inline LLM configuration ` +
|
|
15
|
+
`(${inline.join(', ')}); models are configured once, in the top-level llm: map — ` +
|
|
16
|
+
`add an entry there and name it here with \`llm: <key>\``);
|
|
17
|
+
}
|
|
18
|
+
for (const k of Object.keys(raw)) {
|
|
19
|
+
if (k !== 'llm' && k !== 'hint') {
|
|
20
|
+
throw new Error(`pipeline 'controller': subagents.${role}: unknown field '${k}' (allowed: llm, hint)`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const out = {};
|
|
24
|
+
if (raw.llm !== undefined) {
|
|
25
|
+
if (typeof raw.llm !== 'string' || raw.llm === '') {
|
|
26
|
+
throw new Error(`pipeline 'controller': subagents.${role}.llm must be a non-empty string naming an llm: entry`);
|
|
27
|
+
}
|
|
28
|
+
if (!llmKeys.has(raw.llm)) {
|
|
29
|
+
throw new Error(`pipeline 'controller': subagents.${role}.llm names '${raw.llm}', which has no entry ` +
|
|
30
|
+
`in the top-level llm: map (entries: ${[...llmKeys].join(', ')})`);
|
|
31
|
+
}
|
|
32
|
+
out.llm = raw.llm;
|
|
33
|
+
}
|
|
34
|
+
if (raw.hint !== undefined) {
|
|
35
|
+
if (typeof raw.hint !== 'string') {
|
|
36
|
+
throw new Error(`pipeline 'controller': subagents.${role}.hint must be a string`);
|
|
37
|
+
}
|
|
38
|
+
out.hint = raw.hint;
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse `pipeline.config.subagents` for the controller (§4.6.7). Each role is
|
|
44
|
+
* `{}` or `{ llm?: <key>, hint?: <text> }`. evaluator/planner/executor are
|
|
45
|
+
* required; reviewer/finalizer stay absent when their block is absent, which the
|
|
46
|
+
* factory reads as "the planner's instance". Called by the server in `start()`,
|
|
47
|
+
* with the keys of the main file's `llm:` map, so a named key with no entry is a
|
|
48
|
+
* startup error rather than a silent fallback to `main`.
|
|
49
|
+
*/
|
|
50
|
+
export function parseControllerSubagents(raw, llmKeys) {
|
|
51
|
+
if (!isPlainObject(raw)) {
|
|
52
|
+
throw new Error("pipeline 'controller' requires 'subagents' with evaluator, planner and executor " +
|
|
53
|
+
'(each {} or { llm: <key>, hint: <text> })');
|
|
54
|
+
}
|
|
55
|
+
for (const k of Object.keys(raw)) {
|
|
56
|
+
if (!ROLES.includes(k)) {
|
|
57
|
+
throw new Error(`pipeline 'controller': unknown subagent role '${k}' (roles: ${ROLES.join(', ')})`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const role of REQUIRED) {
|
|
61
|
+
if (raw[role] === undefined) {
|
|
62
|
+
throw new Error(`pipeline 'controller' requires 'subagents.${role}' ({} or { llm: <key>, hint: <text> })`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const subagents = {
|
|
66
|
+
evaluator: parseOne('evaluator', raw.evaluator, llmKeys),
|
|
67
|
+
planner: parseOne('planner', raw.planner, llmKeys),
|
|
68
|
+
executor: parseOne('executor', raw.executor, llmKeys),
|
|
69
|
+
};
|
|
70
|
+
for (const role of OPTIONAL) {
|
|
71
|
+
if (raw[role] !== undefined) {
|
|
72
|
+
subagents[role] = parseOne(role, raw[role], llmKeys);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return subagents;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=controller-subagents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller-subagents.js","sourceRoot":"","sources":["../../src/pipelines/controller-subagents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import type { IPipelineInstance, IPipelinePlugin } from '@mcp-abap-adt/llm-agent';
|
|
2
2
|
import type { ControllerConfig, PlannerKind } from '../smart-agent/controller/types.js';
|
|
3
3
|
import type { IControllerServerPipelineContext } from './server-context.js';
|
|
4
|
-
export { ControllerFactory, type ControllerFactoryDeps, } from '../factories/controller-factory.js';
|
|
4
|
+
export { ControllerFactory, type ControllerFactoryDeps, makeControllerRoleLlm, } from '../factories/controller-factory.js';
|
|
5
5
|
export { ControllerCoordinatorHandler, type ControllerHandlerDeps, } from '../smart-agent/controller/controller-coordinator-handler.js';
|
|
6
6
|
export { type ISubagentClient, makeSubagentClient, } from '../smart-agent/controller/subagent-client.js';
|
|
7
7
|
export type { ControllerConfig, SessionBundle, } from '../smart-agent/controller/types.js';
|
|
8
8
|
/**
|
|
9
|
-
* Built-in `controller` pipeline plugin.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* the runnable agent plus a disposal hook.
|
|
9
|
+
* Built-in `controller` pipeline plugin. Constructed with settings the server
|
|
10
|
+
* parsed (`parseControllerSettings`); wires the {@link ControllerCoordinatorHandler}
|
|
11
|
+
* from the server pipeline context, registers it on a fresh agent builder, and
|
|
12
|
+
* returns the runnable agent plus a disposal hook.
|
|
14
13
|
*/
|
|
15
|
-
export declare class ControllerPipelinePlugin implements IPipelinePlugin
|
|
14
|
+
export declare class ControllerPipelinePlugin implements IPipelinePlugin {
|
|
16
15
|
readonly name: string;
|
|
17
16
|
private readonly plannerKind;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
private readonly settings;
|
|
18
|
+
/** `controller` and `controller-weak` are two registry entries over this class;
|
|
19
|
+
* `settings` come from the server's `parseControllerSettings`. */
|
|
20
|
+
constructor(name: string, plannerKind: PlannerKind, settings: ControllerConfig);
|
|
21
|
+
build(ctx: IControllerServerPipelineContext): Promise<IPipelineInstance>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/pipelines/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EAGhB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/pipelines/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EAGhB,MAAM,yBAAyB,CAAC;AA0BjC,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAM5E,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,6DAA6D,CAAC;AACrE,OAAO,EACL,KAAK,eAAe,EACpB,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,YAAY,EACV,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C;uEACmE;gBAEjE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,gBAAgB;IAOtB,KAAK,CACT,GAAG,EAAE,gCAAgC,GACpC,OAAO,CAAC,iBAAiB,CAAC;CA4M9B"}
|