@mcp-abap-adt/llm-agent-libs 25.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/README.md +11 -14
- package/dist/agent.d.ts +2 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +6 -5
- package/dist/agent.js.map +1 -1
- package/dist/builder.d.ts +36 -14
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +472 -348
- package/dist/builder.js.map +1 -1
- package/dist/config/config-watcher.d.ts.map +1 -1
- package/dist/config/config-watcher.js +9 -5
- package/dist/config/config-watcher.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/vectorize-mcp-tools.d.ts.map +1 -1
- package/dist/mcp/vectorize-mcp-tools.js +21 -2
- package/dist/mcp/vectorize-mcp-tools.js.map +1 -1
- package/dist/pipeline/handlers/history-upsert.d.ts.map +1 -1
- package/dist/pipeline/handlers/history-upsert.js +8 -1
- package/dist/pipeline/handlers/history-upsert.js.map +1 -1
- package/dist/pipeline/handlers/rag-query.d.ts +1 -1
- package/dist/pipeline/handlers/rag-query.d.ts.map +1 -1
- package/dist/pipeline/handlers/rag-query.js +10 -2
- package/dist/pipeline/handlers/rag-query.js.map +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/types.d.ts +7 -0
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/plugins/types.js +85 -14
- package/dist/plugins/types.js.map +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +8 -5
- package/dist/providers.js.map +1 -1
- package/dist/session/session-graph-factory.d.ts +49 -16
- package/dist/session/session-graph-factory.d.ts.map +1 -1
- package/dist/session/session-graph-factory.js +140 -62
- package/dist/session/session-graph-factory.js.map +1 -1
- package/dist/skills/plugin-host/qdrant-store.d.ts +6 -1
- package/dist/skills/plugin-host/qdrant-store.d.ts.map +1 -1
- package/dist/skills/plugin-host/qdrant-store.js +7 -7
- package/dist/skills/plugin-host/qdrant-store.js.map +1 -1
- package/dist/util/stop-all.d.ts +19 -0
- package/dist/util/stop-all.d.ts.map +1 -0
- package/dist/util/stop-all.js +30 -0
- package/dist/util/stop-all.js.map +1 -0
- package/package.json +5 -35
- package/dist/coordinator/dag/reviewer-error-strategy.d.ts +0 -15
- package/dist/coordinator/dag/reviewer-error-strategy.d.ts.map +0 -1
- package/dist/coordinator/dag/reviewer-error-strategy.js +0 -38
- package/dist/coordinator/dag/reviewer-error-strategy.js.map +0 -1
- package/dist/skills/plugin-host/chunker.test.d.ts +0 -2
- package/dist/skills/plugin-host/chunker.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/chunker.test.js +0 -31
- package/dist/skills/plugin-host/chunker.test.js.map +0 -1
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts +0 -2
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/compatible-skills-rag.test.js +0 -174
- package/dist/skills/plugin-host/compatible-skills-rag.test.js.map +0 -1
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts +0 -2
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/http-marketplace-source.test.js +0 -71
- package/dist/skills/plugin-host/http-marketplace-source.test.js.map +0 -1
- package/dist/skills/plugin-host/in-memory-store.test.d.ts +0 -2
- package/dist/skills/plugin-host/in-memory-store.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/in-memory-store.test.js +0 -100
- package/dist/skills/plugin-host/in-memory-store.test.js.map +0 -1
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts +0 -2
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/marketplace-adapter.test.js +0 -46
- package/dist/skills/plugin-host/marketplace-adapter.test.js.map +0 -1
- package/dist/skills/plugin-host/qdrant-store.test.d.ts +0 -2
- package/dist/skills/plugin-host/qdrant-store.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/qdrant-store.test.js +0 -396
- package/dist/skills/plugin-host/qdrant-store.test.js.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts +0 -2
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js +0 -520
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts +0 -2
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js +0 -328
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js.map +0 -1
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts +0 -2
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skills-rag-source.test.js +0 -69
- package/dist/skills/plugin-host/skills-rag-source.test.js.map +0 -1
- package/dist/skills/plugin-host/source-strategies.test.d.ts +0 -2
- package/dist/skills/plugin-host/source-strategies.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/source-strategies.test.js +0 -52
- package/dist/skills/plugin-host/source-strategies.test.js.map +0 -1
package/dist/plugins/types.js
CHANGED
|
@@ -16,11 +16,37 @@ export function emptyLoadedPlugins() {
|
|
|
16
16
|
clientAdapters: [],
|
|
17
17
|
apiAdapters: new Map(),
|
|
18
18
|
pipelinePlugins: new Map(),
|
|
19
|
+
pipelinePluginFactories: new Map(),
|
|
19
20
|
pipelinePluginSources: new Map(),
|
|
20
21
|
loadedFiles: [],
|
|
21
22
|
errors: [],
|
|
22
23
|
};
|
|
23
24
|
}
|
|
25
|
+
const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
26
|
+
const kindOf = (v) => (v === null ? 'null' : typeof v);
|
|
27
|
+
/**
|
|
28
|
+
* What is wrong with a value offered as a pipeline plugin under `key`, or
|
|
29
|
+
* `undefined` when nothing is. An imported module is `unknown` until something
|
|
30
|
+
* inspects it, so this is the check that makes the cast after it honest (§4.6.7).
|
|
31
|
+
* The loader runs it on an instance export; the server runs it on a factory's result.
|
|
32
|
+
*/
|
|
33
|
+
export function describePipelinePluginDefect(value, key) {
|
|
34
|
+
if (typeof value !== 'object' || value === null) {
|
|
35
|
+
return `expected an object with 'name' and 'build', got ${kindOf(value)}`;
|
|
36
|
+
}
|
|
37
|
+
const { name, build } = value;
|
|
38
|
+
const missing = [];
|
|
39
|
+
if (typeof name !== 'string')
|
|
40
|
+
missing.push(`'name' must be a string, got ${kindOf(name)}`);
|
|
41
|
+
if (typeof build !== 'function')
|
|
42
|
+
missing.push(`'build' must be a function, got ${kindOf(build)}`);
|
|
43
|
+
if (missing.length > 0)
|
|
44
|
+
return missing.join('; ');
|
|
45
|
+
if (name !== key) {
|
|
46
|
+
return `its name '${String(name)}' differs from the key '${key}' it is registered under`;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
24
50
|
/**
|
|
25
51
|
* Merges a single plugin module's exports into a {@link LoadedPlugins} result.
|
|
26
52
|
* Useful for custom `IPluginLoader` implementations.
|
|
@@ -80,21 +106,66 @@ export function mergePluginExports(result, mod, source) {
|
|
|
80
106
|
}
|
|
81
107
|
}
|
|
82
108
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
109
|
+
// One key space for instances and factories; the first source keeps a key.
|
|
110
|
+
const claim = (key) => {
|
|
111
|
+
const prior = result.pipelinePluginSources.get(key);
|
|
112
|
+
if (prior === undefined)
|
|
113
|
+
return true;
|
|
114
|
+
result.errors.push({
|
|
115
|
+
file: source,
|
|
116
|
+
error: `duplicate pipeline name '${key}' from '${source}'; already registered by '${prior}' (keeping the first)`,
|
|
117
|
+
});
|
|
118
|
+
return false;
|
|
119
|
+
};
|
|
120
|
+
if (mod.pipelinePlugins !== undefined) {
|
|
121
|
+
if (!isRecord(mod.pipelinePlugins)) {
|
|
122
|
+
result.errors.push({
|
|
123
|
+
file: source,
|
|
124
|
+
error: `'pipelinePlugins' from '${source}' must be an object keyed by pipeline name`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
for (const [key, plugin] of Object.entries(mod.pipelinePlugins)) {
|
|
129
|
+
const defect = describePipelinePluginDefect(plugin, key);
|
|
130
|
+
if (defect !== undefined) {
|
|
131
|
+
result.errors.push({
|
|
132
|
+
file: source,
|
|
133
|
+
error: `pipeline plugin '${key}' from '${source}' refused: ${defect}`,
|
|
134
|
+
});
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (!claim(key))
|
|
138
|
+
continue;
|
|
139
|
+
result.pipelinePlugins.set(key, plugin);
|
|
140
|
+
result.pipelinePluginSources.set(key, source);
|
|
141
|
+
registered = true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (mod.pipelinePluginFactories !== undefined) {
|
|
146
|
+
if (!isRecord(mod.pipelinePluginFactories)) {
|
|
147
|
+
result.errors.push({
|
|
148
|
+
file: source,
|
|
149
|
+
error: `'pipelinePluginFactories' from '${source}' must be an object keyed by pipeline name`,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
result.pipelinePluginFactories ??= new Map();
|
|
154
|
+
const factories = result.pipelinePluginFactories;
|
|
155
|
+
for (const [key, factory] of Object.entries(mod.pipelinePluginFactories)) {
|
|
156
|
+
if (typeof factory !== 'function') {
|
|
157
|
+
result.errors.push({
|
|
158
|
+
file: source,
|
|
159
|
+
error: `pipeline plugin factory '${key}' from '${source}' refused: expected a function, got ${kindOf(factory)}`,
|
|
160
|
+
});
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (!claim(key))
|
|
164
|
+
continue;
|
|
165
|
+
factories.set(key, factory);
|
|
166
|
+
result.pipelinePluginSources.set(key, source);
|
|
167
|
+
registered = true;
|
|
94
168
|
}
|
|
95
|
-
result.pipelinePlugins.set(name, plugin);
|
|
96
|
-
result.pipelinePluginSources.set(name, source);
|
|
97
|
-
registered = true;
|
|
98
169
|
}
|
|
99
170
|
}
|
|
100
171
|
if (registered) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"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"}
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EACd,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAyBzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,+FAA+F;IAC/F,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAuHD;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAwHf;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAEvD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,EAC5C,QAAQ,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO;IAGpD,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GACrC,OAAO,CAAC,IAAI,CAAC;CAKjB"}
|
package/dist/providers.js
CHANGED
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
* LLM provider packages are optional peers loaded via dynamic import().
|
|
8
8
|
* MissingProviderError is thrown when a required peer is not installed.
|
|
9
9
|
*/
|
|
10
|
-
import { MissingProviderError } from '@mcp-abap-adt/llm-agent';
|
|
10
|
+
import { MissingProviderError, staticApiKey } from '@mcp-abap-adt/llm-agent';
|
|
11
11
|
import { LlmAdapter } from './adapters/llm-adapter.js';
|
|
12
12
|
import { LlmProviderBridge } from './adapters/llm-provider-bridge.js';
|
|
13
13
|
import { NonStreamingLlm } from './adapters/non-streaming-llm.js';
|
|
14
|
+
function shimCredential(apiKey) {
|
|
15
|
+
return apiKey ? staticApiKey(apiKey) : undefined;
|
|
16
|
+
}
|
|
14
17
|
// ---------------------------------------------------------------------------
|
|
15
18
|
// Per-provider dynamic loaders
|
|
16
19
|
// ---------------------------------------------------------------------------
|
|
@@ -101,7 +104,7 @@ export async function makeLlm(cfg, temperature) {
|
|
|
101
104
|
case 'deepseek': {
|
|
102
105
|
const DeepSeekProvider = await loadDeepSeek();
|
|
103
106
|
const provider = new DeepSeekProvider({
|
|
104
|
-
|
|
107
|
+
credential: shimCredential(cfg.apiKey),
|
|
105
108
|
baseURL: cfg.baseURL,
|
|
106
109
|
model: cfg.model,
|
|
107
110
|
temperature,
|
|
@@ -118,7 +121,7 @@ export async function makeLlm(cfg, temperature) {
|
|
|
118
121
|
case 'ollama': {
|
|
119
122
|
const OllamaProvider = await loadOllama();
|
|
120
123
|
const provider = new OllamaProvider({
|
|
121
|
-
|
|
124
|
+
credential: shimCredential(cfg.apiKey),
|
|
122
125
|
baseURL: cfg.baseURL,
|
|
123
126
|
model: cfg.model,
|
|
124
127
|
temperature,
|
|
@@ -135,7 +138,7 @@ export async function makeLlm(cfg, temperature) {
|
|
|
135
138
|
case 'openai': {
|
|
136
139
|
const OpenAIProvider = await loadOpenAI();
|
|
137
140
|
const provider = new OpenAIProvider({
|
|
138
|
-
|
|
141
|
+
credential: shimCredential(cfg.apiKey),
|
|
139
142
|
baseURL: cfg.baseURL,
|
|
140
143
|
model: cfg.model,
|
|
141
144
|
temperature,
|
|
@@ -152,7 +155,7 @@ export async function makeLlm(cfg, temperature) {
|
|
|
152
155
|
case 'anthropic': {
|
|
153
156
|
const AnthropicProvider = await loadAnthropic();
|
|
154
157
|
const provider = new AnthropicProvider({
|
|
155
|
-
|
|
158
|
+
credential: shimCredential(cfg.apiKey),
|
|
156
159
|
baseURL: cfg.baseURL,
|
|
157
160
|
model: cfg.model,
|
|
158
161
|
temperature,
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AnyLogger, IMcpClient, IMcpServer, IRag, IRagRegistry, McpClientDescriptor } from '@mcp-abap-adt/llm-agent';
|
|
2
2
|
import type { SmartAgent } from '../agent.js';
|
|
3
3
|
import { SessionRequestLogger } from '../logger/session-request-logger.js';
|
|
4
4
|
import { SessionGraph } from './session-graph.js';
|
|
@@ -29,13 +29,27 @@ export interface SessionAgentParts {
|
|
|
29
29
|
readonly logger: SessionRequestLogger;
|
|
30
30
|
}
|
|
31
31
|
export interface SessionGraphFactoryOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Servers for THIS caller: the factory starts each one before `buildAgent`,
|
|
34
|
+
* hands the clients over, and stops them last on dispose. Takes the identity,
|
|
35
|
+
* which is what per-caller credentials need and what `mcpClientFactory` never
|
|
36
|
+
* had.
|
|
37
|
+
*
|
|
38
|
+
* When set it takes precedence over `mcpClientFactory` and
|
|
39
|
+
* `mcpClientFactoryWithDescriptors`.
|
|
40
|
+
*/
|
|
41
|
+
readonly mcpServerFactory?: (identity: SessionGraphIdentity) => IMcpServer[];
|
|
32
42
|
/**
|
|
33
43
|
* Resolve this session's MCP client(s). Per-session-CAPABLE: the default
|
|
34
44
|
* factory returns the shared GLOBAL client(s) by reference (no re-connect);
|
|
35
45
|
* a creds-aware build (out of scope) returns a fresh per-session client.
|
|
36
46
|
* Either way the tools-catalog RAG is never re-vectorized.
|
|
47
|
+
*
|
|
48
|
+
* @deprecated Use `mcpServerFactory`, which also owns lifetime and receives
|
|
49
|
+
* the identity. Optional since this release: supply exactly one of
|
|
50
|
+
* `mcpServerFactory`, `mcpClientFactoryWithDescriptors` or this.
|
|
37
51
|
*/
|
|
38
|
-
readonly mcpClientFactory
|
|
52
|
+
readonly mcpClientFactory?: (identity: SessionGraphIdentity) => IMcpClient[];
|
|
39
53
|
/**
|
|
40
54
|
* ADDITIVE descriptor-aware seam (#244): when set, takes precedence over
|
|
41
55
|
* `mcpClientFactory` and pairs the resolved clients with the STABLE
|
|
@@ -44,6 +58,10 @@ export interface SessionGraphFactoryOptions {
|
|
|
44
58
|
* active slots `[0,2]` collapse to array indices `[0,1]`). `mcpClientFactory`
|
|
45
59
|
* stays required for back-compat; this field is optional and, when absent,
|
|
46
60
|
* `build()` falls back to `mcpClientFactory` (descriptors stay `undefined`).
|
|
61
|
+
*
|
|
62
|
+
* @deprecated Use `mcpServerFactory`, which also owns lifetime and receives
|
|
63
|
+
* the identity. Optional since this release: supply exactly one of
|
|
64
|
+
* `mcpServerFactory`, this or `mcpClientFactory`.
|
|
47
65
|
*/
|
|
48
66
|
readonly mcpClientFactoryWithDescriptors?: (identity: SessionGraphIdentity) => {
|
|
49
67
|
clients: IMcpClient[];
|
|
@@ -52,8 +70,22 @@ export interface SessionGraphFactoryOptions {
|
|
|
52
70
|
};
|
|
53
71
|
/** GLOBAL vectorized tools-catalog RAG — injected by reference, never re-vectorized. */
|
|
54
72
|
readonly toolsRag: IRag | undefined;
|
|
55
|
-
/**
|
|
56
|
-
|
|
73
|
+
/**
|
|
74
|
+
* One RAG registry shared by every session, when `ragRegistryFactory` is
|
|
75
|
+
* absent. Its collections are addressed by name, so every session sees
|
|
76
|
+
* every collection it holds — the per-call filter is the only isolation.
|
|
77
|
+
* Supply exactly one of this or `ragRegistryFactory`.
|
|
78
|
+
*/
|
|
79
|
+
readonly ragRegistry?: IRagRegistry;
|
|
80
|
+
/**
|
|
81
|
+
* Builds the registry THIS session owns (§6.4): handed to `buildAgent`, and
|
|
82
|
+
* the one `dispose()` closes — the shared `ragRegistry` is then neither used
|
|
83
|
+
* nor closed. Receives the full identity, which a build callback cannot
|
|
84
|
+
* (`SessionAgentParts` has no userId), and is awaited, because hydration is
|
|
85
|
+
* asynchronous (describeCollections, openCollection). Called before any MCP
|
|
86
|
+
* server starts, so a rejection leaves nothing to stop.
|
|
87
|
+
*/
|
|
88
|
+
readonly ragRegistryFactory?: (identity: SessionGraphIdentity) => Promise<IRagRegistry>;
|
|
57
89
|
/**
|
|
58
90
|
* Builds the per-session SmartAgent + FRESH per-session workers from `parts`.
|
|
59
91
|
* Production wiring runs a `SmartAgentBuilder.build()` with the injected globals
|
|
@@ -67,8 +99,10 @@ export interface SessionGraphFactoryOptions {
|
|
|
67
99
|
* (`ragRegistry.closeSession` returning `{ ok: false }`). Without a logger
|
|
68
100
|
* the failure falls back to `console.warn` so it is never silent. The
|
|
69
101
|
* dispose hook never throws — a failed close must not crash session teardown.
|
|
102
|
+
* An ordinary text logger (`ITextLogger`) is also accepted; it is normalised
|
|
103
|
+
* to the event `ILogger` once, at the constructor.
|
|
70
104
|
*/
|
|
71
|
-
readonly logger?:
|
|
105
|
+
readonly logger?: AnyLogger;
|
|
72
106
|
/**
|
|
73
107
|
* Optional per-session teardown hook run during `SessionGraph.dispose()`,
|
|
74
108
|
* AFTER the session-RAG `closeSession`. The host uses this to free per-session
|
|
@@ -78,21 +112,20 @@ export interface SessionGraphFactoryOptions {
|
|
|
78
112
|
* crashes the registry.
|
|
79
113
|
*/
|
|
80
114
|
readonly onDispose?: (sessionId: string) => Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Per-session teardown that must run BEFORE the session's RAG collections are
|
|
117
|
+
* deleted — closing a pipeline still in flight, which must not write into a
|
|
118
|
+
* collection being removed.
|
|
119
|
+
*
|
|
120
|
+
* `onDispose` keeps its documented place after `closeSession`; this hook is
|
|
121
|
+
* the one that runs first.
|
|
122
|
+
*/
|
|
123
|
+
readonly closePipeline?: (sessionId: string) => Promise<void>;
|
|
81
124
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Central per-session composition path (spec A.2). Assembles a SessionGraph by
|
|
84
|
-
* injecting the GLOBAL heavy resources (vectorized toolsRag, RAG registry,
|
|
85
|
-
* cached per-worker LLM/embedder) by reference — never re-vectorizing tools or
|
|
86
|
-
* rebuilding LLM clients — resolving this session's MCP client(s) via
|
|
87
|
-
* `mcpClientFactory(identity)` (default: shared global by reference), and
|
|
88
|
-
* allocating the cheap per-session instances (logger + sessionId-keyed
|
|
89
|
-
* registries + the per-session agent/pipeline/interpreter/coordinator/WORKERS).
|
|
90
|
-
* The per-session worker set is FRESH per session (re-wired via buildAgent
|
|
91
|
-
* with the session logger), never the server's global worker map.
|
|
92
|
-
*/
|
|
93
125
|
export declare class SessionGraphFactory {
|
|
94
126
|
private readonly opts;
|
|
95
127
|
constructor(opts: SessionGraphFactoryOptions);
|
|
128
|
+
private resolveRagRegistry;
|
|
96
129
|
build(identity: SessionGraphIdentity): Promise<SessionGraph>;
|
|
97
130
|
}
|
|
98
131
|
//# sourceMappingURL=session-graph-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-graph-factory.d.ts","sourceRoot":"","sources":["../../src/session/session-graph-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"session-graph-factory.d.ts","sourceRoot":"","sources":["../../src/session/session-graph-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,UAAU,EACV,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/D,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,UAAU,EAAE,CAAC;IAC7E;;;;;;;;;OASG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,UAAU,EAAE,CAAC;IAC7E;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CACzC,QAAQ,EAAE,oBAAoB,KAC3B;QACH,OAAO,EAAE,UAAU,EAAE,CAAC;QACtB,iBAAiB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;QACnD,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,QAAQ,EAAE,oBAAoB,KAC3B,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,KAAK,EAAE,iBAAiB,KACrB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAyBD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;gBAEhD,IAAI,EAAE,0BAA0B;YAM9B,kBAAkB;IAY1B,KAAK,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;CA0KnE"}
|
|
@@ -1,96 +1,174 @@
|
|
|
1
|
+
import { collectServerDescriptors, normaliseLogger, } from '@mcp-abap-adt/llm-agent';
|
|
1
2
|
import { SessionRequestLogger } from '../logger/session-request-logger.js';
|
|
2
3
|
import { PendingToolResultsRegistry } from '../policy/pending-tool-results-registry.js';
|
|
3
4
|
import { ToolAvailabilityRegistry } from '../policy/tool-availability-registry.js';
|
|
5
|
+
import { stopAll } from '../util/stop-all.js';
|
|
4
6
|
import { SessionGraph } from './session-graph.js';
|
|
5
|
-
/**
|
|
6
|
-
* Central per-session composition path (spec A.2). Assembles a SessionGraph by
|
|
7
|
-
* injecting the GLOBAL heavy resources (vectorized toolsRag, RAG registry,
|
|
8
|
-
* cached per-worker LLM/embedder) by reference — never re-vectorizing tools or
|
|
9
|
-
* rebuilding LLM clients — resolving this session's MCP client(s) via
|
|
10
|
-
* `mcpClientFactory(identity)` (default: shared global by reference), and
|
|
11
|
-
* allocating the cheap per-session instances (logger + sessionId-keyed
|
|
12
|
-
* registries + the per-session agent/pipeline/interpreter/coordinator/WORKERS).
|
|
13
|
-
* The per-session worker set is FRESH per session (re-wired via buildAgent
|
|
14
|
-
* with the session logger), never the server's global worker map.
|
|
15
|
-
*/
|
|
16
7
|
export class SessionGraphFactory {
|
|
17
8
|
opts;
|
|
18
9
|
constructor(opts) {
|
|
19
|
-
this.opts = opts
|
|
10
|
+
this.opts = opts.logger
|
|
11
|
+
? { ...opts, logger: normaliseLogger(opts.logger) }
|
|
12
|
+
: opts;
|
|
13
|
+
}
|
|
14
|
+
async resolveRagRegistry(identity) {
|
|
15
|
+
if (this.opts.ragRegistryFactory) {
|
|
16
|
+
return this.opts.ragRegistryFactory(identity);
|
|
17
|
+
}
|
|
18
|
+
if (this.opts.ragRegistry)
|
|
19
|
+
return this.opts.ragRegistry;
|
|
20
|
+
throw new Error('SessionGraphFactory needs one of ragRegistryFactory or ragRegistry');
|
|
20
21
|
}
|
|
21
22
|
async build(identity) {
|
|
23
|
+
if (!this.opts.mcpServerFactory &&
|
|
24
|
+
!this.opts.mcpClientFactoryWithDescriptors &&
|
|
25
|
+
!this.opts.mcpClientFactory)
|
|
26
|
+
throw new Error('SessionGraphFactory needs one of mcpServerFactory, mcpClientFactoryWithDescriptors or mcpClientFactory');
|
|
27
|
+
// Before any MCP server starts: a factory that rejects leaves nothing to stop.
|
|
28
|
+
const ragRegistry = await this.resolveRagRegistry(identity);
|
|
22
29
|
const logger = new SessionRequestLogger();
|
|
23
30
|
const toolAvailability = new ToolAvailabilityRegistry();
|
|
24
31
|
const pendingToolResults = new PendingToolResultsRegistry();
|
|
25
32
|
let mcpClients;
|
|
26
33
|
let mcpClientDescriptors;
|
|
27
34
|
let configuredSlotCount;
|
|
28
|
-
|
|
35
|
+
const startedServers = [];
|
|
36
|
+
if (this.opts.mcpServerFactory) {
|
|
37
|
+
const servers = this.opts.mcpServerFactory(identity);
|
|
38
|
+
// All or none — see the builder's identical check and why it throws.
|
|
39
|
+
const descriptors = collectServerDescriptors(servers, 'mcpServerFactory');
|
|
40
|
+
const clients = [];
|
|
41
|
+
try {
|
|
42
|
+
for (const server of servers) {
|
|
43
|
+
clients.push(await server.start());
|
|
44
|
+
startedServers.push(server);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
await stopAll(startedServers.splice(0).map((server) => () => server.stop()));
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
mcpClients = clients;
|
|
52
|
+
mcpClientDescriptors = descriptors;
|
|
53
|
+
// Nothing was filtered out of a configured set, so there is no original
|
|
54
|
+
// count to preserve; array position is the pairing.
|
|
55
|
+
configuredSlotCount = undefined;
|
|
56
|
+
}
|
|
57
|
+
else if (this.opts.mcpClientFactoryWithDescriptors) {
|
|
29
58
|
const built = this.opts.mcpClientFactoryWithDescriptors(identity);
|
|
30
59
|
mcpClients = built.clients;
|
|
31
60
|
mcpClientDescriptors = built.clientDescriptors;
|
|
32
61
|
configuredSlotCount = built.configuredSlotCount;
|
|
33
62
|
}
|
|
34
63
|
else {
|
|
35
|
-
|
|
64
|
+
// The guard at the top of build() has already ruled out "none set".
|
|
65
|
+
mcpClients = this.opts.mcpClientFactory?.(identity) ?? [];
|
|
36
66
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
// Host-supplied per-session teardown (e.g. pipeline IPipelineInstance.close).
|
|
73
|
-
// Best-effort: a failure here must not crash session disposal.
|
|
74
|
-
if (this.opts.onDispose) {
|
|
75
|
-
try {
|
|
76
|
-
await this.opts.onDispose(sessionId);
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
67
|
+
// `buildAgent` runs a full `SmartAgentBuilder.build()` — model validation,
|
|
68
|
+
// network work — and can throw. When it does, no `SessionGraph` is
|
|
69
|
+
// constructed, so `dispose()` never runs and `startedServers` becomes
|
|
70
|
+
// unreachable: stop them here, on the ORIGINAL failure, before rethrowing.
|
|
71
|
+
let agent;
|
|
72
|
+
let graph;
|
|
73
|
+
try {
|
|
74
|
+
agent = await this.opts.buildAgent({
|
|
75
|
+
sessionId: identity.sessionId,
|
|
76
|
+
mcpClients,
|
|
77
|
+
mcpClientDescriptors,
|
|
78
|
+
configuredSlotCount,
|
|
79
|
+
toolsRag: this.opts.toolsRag,
|
|
80
|
+
ragRegistry,
|
|
81
|
+
logger,
|
|
82
|
+
});
|
|
83
|
+
graph = new SessionGraph({
|
|
84
|
+
sessionId: identity.sessionId,
|
|
85
|
+
toolAvailability,
|
|
86
|
+
pendingToolResults,
|
|
87
|
+
logger,
|
|
88
|
+
agent,
|
|
89
|
+
// Closes this session's collections in the registry it was built with
|
|
90
|
+
// — its own when `ragRegistryFactory` supplied one, the shared one
|
|
91
|
+
// otherwise; global and user collections survive. The Result<void,
|
|
92
|
+
// RagError> is INSPECTED here — a failed close is surfaced via the
|
|
93
|
+
// optional logger (or console.warn fallback), never silently dropped
|
|
94
|
+
// (review MEDIUM #2).
|
|
95
|
+
dispose: async (sessionId) => {
|
|
96
|
+
// Single sink for every best-effort teardown failure below: routes to
|
|
97
|
+
// the configured logger, or console.warn when there is none. Each call
|
|
98
|
+
// site's two message strings are unchanged from before this helper
|
|
99
|
+
// existed — the teardown tests assert on them.
|
|
100
|
+
const warn = (logMessage, consoleMessage) => {
|
|
80
101
|
if (this.opts.logger) {
|
|
81
102
|
this.opts.logger.log({
|
|
82
103
|
type: 'warning',
|
|
83
104
|
traceId: `session:${sessionId}`,
|
|
84
|
-
message:
|
|
105
|
+
message: logMessage,
|
|
85
106
|
});
|
|
86
107
|
}
|
|
87
108
|
else {
|
|
88
|
-
console.warn(
|
|
109
|
+
console.warn(consoleMessage);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
// Runs first: a pipeline still in flight must not write into a session
|
|
113
|
+
// collection that `closeSession` is about to delete. Best-effort, like
|
|
114
|
+
// every other step here.
|
|
115
|
+
if (this.opts.closePipeline) {
|
|
116
|
+
try {
|
|
117
|
+
await this.opts.closePipeline(sessionId);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
121
|
+
warn(`session_close_pipeline_failed: ${message}`, `[session] closePipeline(${sessionId}) failed: ${message}`);
|
|
89
122
|
}
|
|
90
123
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
124
|
+
// Best-effort like every other step here: a REJECTING closeSession
|
|
125
|
+
// must not skip onDispose/stop below it, exactly like a resolved
|
|
126
|
+
// `{ ok: false }` result must not (handled right underneath). Both
|
|
127
|
+
// cases route through the same two message strings — unchanged —
|
|
128
|
+
// since the pre-existing teardown tests assert on them.
|
|
129
|
+
try {
|
|
130
|
+
const res = await ragRegistry.closeSession(sessionId);
|
|
131
|
+
if (!res.ok) {
|
|
132
|
+
const message = res.error?.message ?? String(res.error);
|
|
133
|
+
warn(`session_close_failed: ${message}`, `[session] closeSession(${sessionId}) failed: ${message}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
138
|
+
warn(`session_close_failed: ${message}`, `[session] closeSession(${sessionId}) failed: ${message}`);
|
|
139
|
+
}
|
|
140
|
+
// Host-supplied per-session teardown (e.g. pipeline IPipelineInstance.close).
|
|
141
|
+
// Best-effort: a failure here must not crash session disposal.
|
|
142
|
+
if (this.opts.onDispose) {
|
|
143
|
+
try {
|
|
144
|
+
await this.opts.onDispose(sessionId);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
148
|
+
warn(`session_dispose_hook_failed: ${message}`, `[session] onDispose(${sessionId}) failed: ${message}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Last: the clients outlive the pipeline that was still calling them.
|
|
152
|
+
for (const server of startedServers) {
|
|
153
|
+
try {
|
|
154
|
+
await server.stop();
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
158
|
+
warn(`session_mcp_stop_failed: ${message}`, `[session] mcp stop(${sessionId}) failed: ${message}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
// `buildAgent` (or, in principle, the `SessionGraph` construction above)
|
|
166
|
+
// threw before a `SessionGraph` exists to own teardown — nothing else
|
|
167
|
+
// will ever stop these servers. Stop them here, on the ORIGINAL error.
|
|
168
|
+
await stopAll(startedServers.map((server) => () => server.stop()));
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
return graph;
|
|
94
172
|
}
|
|
95
173
|
}
|
|
96
174
|
//# sourceMappingURL=session-graph-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-graph-factory.js","sourceRoot":"","sources":["../../src/session/session-graph-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-graph-factory.js","sourceRoot":"","sources":["../../src/session/session-graph-factory.ts"],"names":[],"mappings":"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"}
|