@mcp-abap-adt/llm-agent-server-libs 19.1.2 → 19.2.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/factories/controller-factory.d.ts +18 -4
- package/dist/factories/controller-factory.d.ts.map +1 -1
- package/dist/factories/controller-factory.js +50 -10
- 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.map +1 -1
- package/dist/pipelines/controller.js +41 -0
- package/dist/pipelines/controller.js.map +1 -1
- package/dist/pipelines/dag.d.ts.map +1 -1
- package/dist/pipelines/dag.js +2 -1
- package/dist/pipelines/dag.js.map +1 -1
- package/dist/pipelines/flat.d.ts.map +1 -1
- package/dist/pipelines/flat.js +2 -1
- package/dist/pipelines/flat.js.map +1 -1
- package/dist/pipelines/linear.d.ts.map +1 -1
- package/dist/pipelines/linear.js +2 -1
- package/dist/pipelines/linear.js.map +1 -1
- package/dist/pipelines/register-skill-sources.d.ts +21 -0
- package/dist/pipelines/register-skill-sources.d.ts.map +1 -0
- package/dist/pipelines/register-skill-sources.js +57 -0
- package/dist/pipelines/register-skill-sources.js.map +1 -0
- package/dist/pipelines/server-context.d.ts +37 -1
- package/dist/pipelines/server-context.d.ts.map +1 -1
- package/dist/pipelines/server-context.js.map +1 -1
- package/dist/smart-agent/config.d.ts.map +1 -1
- package/dist/smart-agent/config.js +4 -0
- package/dist/smart-agent/config.js.map +1 -1
- package/dist/smart-agent/controller/artifacts.d.ts +116 -0
- package/dist/smart-agent/controller/artifacts.d.ts.map +1 -0
- package/dist/smart-agent/controller/artifacts.js +192 -0
- package/dist/smart-agent/controller/artifacts.js.map +1 -0
- package/dist/smart-agent/controller/board.d.ts +73 -0
- package/dist/smart-agent/controller/board.d.ts.map +1 -0
- package/dist/smart-agent/controller/board.js +233 -0
- package/dist/smart-agent/controller/board.js.map +1 -0
- package/dist/smart-agent/controller/controller-coordinator-handler.d.ts +67 -7
- package/dist/smart-agent/controller/controller-coordinator-handler.d.ts.map +1 -1
- package/dist/smart-agent/controller/controller-coordinator-handler.js +923 -61
- package/dist/smart-agent/controller/controller-coordinator-handler.js.map +1 -1
- package/dist/smart-agent/controller/finalizer.d.ts +48 -0
- package/dist/smart-agent/controller/finalizer.d.ts.map +1 -0
- package/dist/smart-agent/controller/finalizer.js +126 -0
- package/dist/smart-agent/controller/finalizer.js.map +1 -0
- package/dist/smart-agent/controller/memorizer.d.ts +2 -2
- package/dist/smart-agent/controller/memorizer.d.ts.map +1 -1
- package/dist/smart-agent/controller/memorizer.js +2 -2
- package/dist/smart-agent/controller/memorizer.js.map +1 -1
- package/dist/smart-agent/controller/outcome.d.ts +28 -0
- package/dist/smart-agent/controller/outcome.d.ts.map +1 -0
- package/dist/smart-agent/controller/outcome.js +30 -0
- package/dist/smart-agent/controller/outcome.js.map +1 -0
- package/dist/smart-agent/controller/planner.d.ts +28 -5
- package/dist/smart-agent/controller/planner.d.ts.map +1 -1
- package/dist/smart-agent/controller/planner.js +111 -29
- package/dist/smart-agent/controller/planner.js.map +1 -1
- package/dist/smart-agent/controller/reviewer.d.ts +48 -0
- package/dist/smart-agent/controller/reviewer.d.ts.map +1 -0
- package/dist/smart-agent/controller/reviewer.js +116 -0
- package/dist/smart-agent/controller/reviewer.js.map +1 -0
- package/dist/smart-agent/controller/run-scope.d.ts +50 -0
- package/dist/smart-agent/controller/run-scope.d.ts.map +1 -0
- package/dist/smart-agent/controller/run-scope.js +99 -0
- package/dist/smart-agent/controller/run-scope.js.map +1 -0
- package/dist/smart-agent/controller/session-bundle.d.ts +5 -0
- package/dist/smart-agent/controller/session-bundle.d.ts.map +1 -1
- package/dist/smart-agent/controller/session-bundle.js +27 -0
- package/dist/smart-agent/controller/session-bundle.js.map +1 -1
- package/dist/smart-agent/controller/types.d.ts +117 -7
- package/dist/smart-agent/controller/types.d.ts.map +1 -1
- package/dist/smart-agent/controller/types.js +30 -1
- package/dist/smart-agent/controller/types.js.map +1 -1
- package/dist/smart-agent/embedder-knowledge-index.d.ts +28 -0
- package/dist/smart-agent/embedder-knowledge-index.d.ts.map +1 -0
- package/dist/smart-agent/embedder-knowledge-index.js +71 -0
- package/dist/smart-agent/embedder-knowledge-index.js.map +1 -0
- package/dist/smart-agent/jsonl-knowledge-backend.d.ts +26 -10
- package/dist/smart-agent/jsonl-knowledge-backend.d.ts.map +1 -1
- package/dist/smart-agent/jsonl-knowledge-backend.js +81 -9
- package/dist/smart-agent/jsonl-knowledge-backend.js.map +1 -1
- package/dist/smart-agent/pg-pool.d.ts +58 -0
- package/dist/smart-agent/pg-pool.d.ts.map +1 -0
- package/dist/smart-agent/pg-pool.js +149 -0
- package/dist/smart-agent/pg-pool.js.map +1 -0
- package/dist/smart-agent/skill-plugins-config.d.ts +97 -0
- package/dist/smart-agent/skill-plugins-config.d.ts.map +1 -0
- package/dist/smart-agent/skill-plugins-config.js +318 -0
- package/dist/smart-agent/skill-plugins-config.js.map +1 -0
- package/dist/smart-agent/skill-plugins-config.test.d.ts +2 -0
- package/dist/smart-agent/skill-plugins-config.test.d.ts.map +1 -0
- package/dist/smart-agent/skill-plugins-config.test.js.map +1 -0
- package/dist/smart-agent/skill-plugins-host-factory.d.ts +98 -0
- package/dist/smart-agent/skill-plugins-host-factory.d.ts.map +1 -0
- package/dist/smart-agent/skill-plugins-host-factory.js +284 -0
- package/dist/smart-agent/skill-plugins-host-factory.js.map +1 -0
- package/dist/smart-agent/skill-plugins-host-factory.test.d.ts +2 -0
- package/dist/smart-agent/skill-plugins-host-factory.test.d.ts.map +1 -0
- package/dist/smart-agent/skill-plugins-host-factory.test.js.map +1 -0
- package/dist/smart-agent/smart-server.d.ts +25 -0
- package/dist/smart-agent/smart-server.d.ts.map +1 -1
- package/dist/smart-agent/smart-server.js +139 -6
- package/dist/smart-agent/smart-server.js.map +1 -1
- package/package.json +9 -7
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse + validate the top-level `skillPlugins:` server config key into a
|
|
3
|
+
* normalized {@link SkillPluginsConfig}.
|
|
4
|
+
*
|
|
5
|
+
* This is the skill PLUGIN-HOST config — a NEW key, DISTINCT from the existing
|
|
6
|
+
* `skills:` ({@link SmartServerSkillsConfig}, the FS skill-MANAGER consumed by
|
|
7
|
+
* `resolveSkillManager`). The two are unrelated features and must not collide.
|
|
8
|
+
*
|
|
9
|
+
* The host materialises consumer-supplied domain skills into a grouped
|
|
10
|
+
* skills-RAG and the pipelines recall from it. This module only normalizes +
|
|
11
|
+
* fail-loud validates the deployment config; assembly lives in the host factory.
|
|
12
|
+
*/
|
|
13
|
+
import { resolveSkillSourceStrategy } from '@mcp-abap-adt/llm-agent-libs';
|
|
14
|
+
function isObject(v) {
|
|
15
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
16
|
+
}
|
|
17
|
+
function fail(msg) {
|
|
18
|
+
throw new Error(`skillPlugins: ${msg}`);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Strict SQL-identifier regex for `catalog.table` — a bare identifier or one
|
|
22
|
+
* optional `schema.table` dot. The table name is interpolated directly into SQL
|
|
23
|
+
* downstream (DDL + queries), so reject anything that is not a plain identifier.
|
|
24
|
+
*/
|
|
25
|
+
const SQL_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/;
|
|
26
|
+
/**
|
|
27
|
+
* Parse a numeric knob as a positive INTEGER (finite, integer, `> 0`). A bad
|
|
28
|
+
* value fails loud naming the knob (NOT a silent NaN/default). The key being
|
|
29
|
+
* ABSENT is the caller's concern (defaults applied before this is called).
|
|
30
|
+
*/
|
|
31
|
+
function posInt(raw, name) {
|
|
32
|
+
const n = Number(raw);
|
|
33
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
34
|
+
fail(`${name} must be a positive integer (got ${JSON.stringify(raw)})`);
|
|
35
|
+
}
|
|
36
|
+
return n;
|
|
37
|
+
}
|
|
38
|
+
function parseStore(raw) {
|
|
39
|
+
if (raw === undefined)
|
|
40
|
+
return { type: 'in-memory' };
|
|
41
|
+
if (!isObject(raw))
|
|
42
|
+
fail('store must be an object');
|
|
43
|
+
const type = raw.type;
|
|
44
|
+
if (type === 'in-memory')
|
|
45
|
+
return { type: 'in-memory' };
|
|
46
|
+
if (type === 'qdrant') {
|
|
47
|
+
if (typeof raw.url !== 'string' || raw.url.length === 0) {
|
|
48
|
+
fail('store.url is required for store.type qdrant');
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
type: 'qdrant',
|
|
52
|
+
url: raw.url,
|
|
53
|
+
...(typeof raw.apiKey === 'string' ? { apiKey: raw.apiKey } : {}),
|
|
54
|
+
...(typeof raw.collection === 'string'
|
|
55
|
+
? { collection: raw.collection }
|
|
56
|
+
: {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return fail(`store.type "${String(type)}" is invalid (one of: in-memory, qdrant)`);
|
|
60
|
+
}
|
|
61
|
+
function parseCatalog(raw) {
|
|
62
|
+
if (raw === undefined)
|
|
63
|
+
return { type: 'in-process' };
|
|
64
|
+
if (!isObject(raw))
|
|
65
|
+
fail('catalog must be an object');
|
|
66
|
+
const type = raw.type;
|
|
67
|
+
if (type === 'in-process' || type === undefined)
|
|
68
|
+
return { type: 'in-process' };
|
|
69
|
+
if (type === 'postgres') {
|
|
70
|
+
if (typeof raw.connectionString !== 'string' ||
|
|
71
|
+
raw.connectionString.length === 0) {
|
|
72
|
+
fail('catalog.connectionString is required for catalog.type postgres');
|
|
73
|
+
}
|
|
74
|
+
if (raw.table !== undefined) {
|
|
75
|
+
if (typeof raw.table !== 'string' || !SQL_IDENTIFIER.test(raw.table)) {
|
|
76
|
+
fail(`catalog.table '${String(raw.table)}' is not a valid SQL identifier (must match ${SQL_IDENTIFIER.source})`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
type: 'postgres',
|
|
81
|
+
connectionString: raw.connectionString,
|
|
82
|
+
...(typeof raw.table === 'string' ? { table: raw.table } : {}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return fail(`catalog.type "${String(type)}" is invalid (one of: in-process, postgres)`);
|
|
86
|
+
}
|
|
87
|
+
function isFetchedSource(raw) {
|
|
88
|
+
// A `records` source carries `records`; anything else is a fetched source.
|
|
89
|
+
return !('records' in raw);
|
|
90
|
+
}
|
|
91
|
+
function parseSource(raw) {
|
|
92
|
+
if (!isObject(raw))
|
|
93
|
+
fail('each source must be an object');
|
|
94
|
+
const id = raw.id;
|
|
95
|
+
if (typeof id !== 'string' || id.length === 0) {
|
|
96
|
+
fail('each source requires a non-empty string id (the stable sourceId)');
|
|
97
|
+
}
|
|
98
|
+
if (!isFetchedSource(raw)) {
|
|
99
|
+
if (!Array.isArray(raw.records)) {
|
|
100
|
+
fail(`source '${id}': records must be an array`);
|
|
101
|
+
}
|
|
102
|
+
return { id, records: raw.records };
|
|
103
|
+
}
|
|
104
|
+
// Fetched source: enabled is REQUIRED and non-empty.
|
|
105
|
+
const enabled = raw.enabled;
|
|
106
|
+
if (!Array.isArray(enabled) ||
|
|
107
|
+
enabled.length === 0 ||
|
|
108
|
+
!enabled.every((e) => typeof e === 'string')) {
|
|
109
|
+
fail(`source '${id}': a fetched source requires a non-empty 'enabled' plugin list (use ["*"] for all)`);
|
|
110
|
+
}
|
|
111
|
+
const out = {
|
|
112
|
+
id,
|
|
113
|
+
enabled: enabled,
|
|
114
|
+
...(typeof raw.registry === 'string' ? { registry: raw.registry } : {}),
|
|
115
|
+
};
|
|
116
|
+
if (raw.strategy !== undefined) {
|
|
117
|
+
if (typeof raw.strategy !== 'string') {
|
|
118
|
+
fail(`source '${id}': strategy must be a string`);
|
|
119
|
+
}
|
|
120
|
+
// Validate against the strategy registry (throws on unknown name).
|
|
121
|
+
try {
|
|
122
|
+
resolveSkillSourceStrategy(raw.strategy);
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
fail(`source '${id}': ${e instanceof Error ? e.message : String(e)}`);
|
|
126
|
+
}
|
|
127
|
+
out.strategy = raw.strategy;
|
|
128
|
+
}
|
|
129
|
+
if (raw.strategyConfig !== undefined) {
|
|
130
|
+
if (!isObject(raw.strategyConfig)) {
|
|
131
|
+
fail(`source '${id}': strategyConfig must be an object`);
|
|
132
|
+
}
|
|
133
|
+
out.strategyConfig = raw.strategyConfig;
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Parse + validate the raw `skillPlugins:` YAML/object into a normalized
|
|
139
|
+
* {@link SkillPluginsConfig}. Throws a fail-loud `Error` on any invalid config.
|
|
140
|
+
*/
|
|
141
|
+
export function parseSkillPluginsConfig(raw) {
|
|
142
|
+
if (!isObject(raw))
|
|
143
|
+
fail('config must be an object');
|
|
144
|
+
// mode — only 'implicit' this phase.
|
|
145
|
+
const mode = raw.mode ?? 'implicit';
|
|
146
|
+
if (mode === 'explicit') {
|
|
147
|
+
fail('mode: explicit (planner group-selection) is not yet implemented');
|
|
148
|
+
}
|
|
149
|
+
if (mode !== 'implicit') {
|
|
150
|
+
fail(`mode "${String(mode)}" is invalid (only 'implicit' is supported)`);
|
|
151
|
+
}
|
|
152
|
+
const store = parseStore(raw.store);
|
|
153
|
+
const catalog = parseCatalog(raw.catalog);
|
|
154
|
+
const persistentStore = store.type === 'qdrant';
|
|
155
|
+
// A persistent store mandates embeddingSpaceId.
|
|
156
|
+
const embeddingSpaceId = typeof raw.embeddingSpaceId === 'string' ? raw.embeddingSpaceId : undefined;
|
|
157
|
+
if (persistentStore && !embeddingSpaceId) {
|
|
158
|
+
fail('embeddingSpaceId is required for a persistent store (it is published in the catalog so a recall-only instance can verify it)');
|
|
159
|
+
}
|
|
160
|
+
// A persistent store mandates a persistent (postgres) catalog.
|
|
161
|
+
if (persistentStore && catalog.type !== 'postgres') {
|
|
162
|
+
fail('a persistent store requires a persistent catalog (postgres); an in-process catalog would vanish on restart and is invisible to a separate recall-only process');
|
|
163
|
+
}
|
|
164
|
+
// Numeric knobs + defaults. A present-but-invalid value fails loud naming the
|
|
165
|
+
// knob (NEVER a silent NaN/default); an ABSENT key keeps today's default.
|
|
166
|
+
const k = raw.k !== undefined ? posInt(raw.k, 'k') : 4;
|
|
167
|
+
let threshold = 0.3;
|
|
168
|
+
if (raw.threshold !== undefined) {
|
|
169
|
+
const t = Number(raw.threshold);
|
|
170
|
+
if (!Number.isFinite(t) || t < 0 || t > 1) {
|
|
171
|
+
fail(`threshold must be a finite number in [0, 1] (got ${JSON.stringify(raw.threshold)})`);
|
|
172
|
+
}
|
|
173
|
+
threshold = t;
|
|
174
|
+
}
|
|
175
|
+
const maxInjectChars = raw.maxInjectChars !== undefined
|
|
176
|
+
? posInt(raw.maxInjectChars, 'maxInjectChars')
|
|
177
|
+
: 4000;
|
|
178
|
+
const catalogCasMaxAttempts = raw.catalogCasMaxAttempts !== undefined
|
|
179
|
+
? posInt(raw.catalogCasMaxAttempts, 'catalogCasMaxAttempts')
|
|
180
|
+
: 3;
|
|
181
|
+
const retiredGraceMs = raw.retiredGraceMs !== undefined
|
|
182
|
+
? posInt(raw.retiredGraceMs, 'retiredGraceMs')
|
|
183
|
+
: 30000;
|
|
184
|
+
const orphanGraceMs = raw.orphanGraceMs !== undefined
|
|
185
|
+
? posInt(raw.orphanGraceMs, 'orphanGraceMs')
|
|
186
|
+
: 3600000;
|
|
187
|
+
const chunkRaw = isObject(raw.chunk) ? raw.chunk : undefined;
|
|
188
|
+
const chunk = {
|
|
189
|
+
maxChars: chunkRaw && chunkRaw.maxChars !== undefined
|
|
190
|
+
? posInt(chunkRaw.maxChars, 'chunk.maxChars')
|
|
191
|
+
: 1500,
|
|
192
|
+
};
|
|
193
|
+
if (retiredGraceMs < 1000) {
|
|
194
|
+
fail('retiredGraceMs must be >= 1000 (too small to bound recall)');
|
|
195
|
+
}
|
|
196
|
+
// recallTimeoutMs: explicit must be a positive integer < retiredGraceMs;
|
|
197
|
+
// default = floor(grace*0.8) for a persistent store (always strictly <
|
|
198
|
+
// grace), unused for in-memory.
|
|
199
|
+
let recallTimeoutMs;
|
|
200
|
+
if (raw.recallTimeoutMs !== undefined) {
|
|
201
|
+
recallTimeoutMs = posInt(raw.recallTimeoutMs, 'recallTimeoutMs');
|
|
202
|
+
if (recallTimeoutMs >= retiredGraceMs) {
|
|
203
|
+
fail(`recallTimeoutMs (${recallTimeoutMs}) must be < retiredGraceMs (${retiredGraceMs})`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (persistentStore) {
|
|
207
|
+
recallTimeoutMs = Math.floor(retiredGraceMs * 0.8);
|
|
208
|
+
}
|
|
209
|
+
// loadOnStartup + sources/store mutual constraints.
|
|
210
|
+
//
|
|
211
|
+
// A PRESENT `sources` that is NOT an array (typo `sources: {...}` / `sources: 5`)
|
|
212
|
+
// must fail loud — otherwise it is mistaken for "no sources", which on a
|
|
213
|
+
// persistent store with the default loadOnStartup:true drives a DESTRUCTIVE
|
|
214
|
+
// empty ingest (tombstone every prior catalog entry + publish an empty catalog).
|
|
215
|
+
const rawSources = raw.sources;
|
|
216
|
+
if (rawSources !== undefined && !Array.isArray(rawSources)) {
|
|
217
|
+
fail(`sources must be an array when set (got ${JSON.stringify(rawSources)})`);
|
|
218
|
+
}
|
|
219
|
+
const hasSources = Array.isArray(rawSources) && rawSources.length > 0;
|
|
220
|
+
const loadOnStartupReq = raw.loadOnStartup !== undefined ? Boolean(raw.loadOnStartup) : undefined;
|
|
221
|
+
// Resolve loadOnStartup with the no-source safety rule. The contract
|
|
222
|
+
// (`sources` absent → recall-only) means the default true must NEVER turn a
|
|
223
|
+
// no-source config into an ingest: with nothing to ingest, ingest mode only
|
|
224
|
+
// wipes the live catalog. So no sources → recall-only; an EXPLICIT
|
|
225
|
+
// loadOnStartup:true with no sources is a mistake and fails loud.
|
|
226
|
+
let loadOnStartup;
|
|
227
|
+
if (hasSources) {
|
|
228
|
+
loadOnStartup = loadOnStartupReq ?? true;
|
|
229
|
+
if (loadOnStartup === false) {
|
|
230
|
+
fail('sources cannot be combined with loadOnStartup:false (recall-only has nothing to ingest)');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
if (loadOnStartupReq === true) {
|
|
235
|
+
fail('loadOnStartup:true requires sources to ingest — a no-source config is ' +
|
|
236
|
+
'recall-only. Add sources or set loadOnStartup:false. (Ingesting with ' +
|
|
237
|
+
'no sources would tombstone the active catalog and publish an empty one.)');
|
|
238
|
+
}
|
|
239
|
+
loadOnStartup = false;
|
|
240
|
+
}
|
|
241
|
+
if (!hasSources && !persistentStore) {
|
|
242
|
+
fail('recall-only (no sources) requires a persistent store (an in-memory store with nothing to ingest is always empty)');
|
|
243
|
+
}
|
|
244
|
+
// Parse sources + enforce globally-unique sourceIds.
|
|
245
|
+
let sources;
|
|
246
|
+
if (Array.isArray(rawSources)) {
|
|
247
|
+
sources = rawSources.map(parseSource);
|
|
248
|
+
const seen = new Set();
|
|
249
|
+
for (const s of sources) {
|
|
250
|
+
if (seen.has(s.id)) {
|
|
251
|
+
fail(`duplicate sourceId '${s.id}' across sources (ids must be unique)`);
|
|
252
|
+
}
|
|
253
|
+
seen.add(s.id);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const embedder = isObject(raw.embedder)
|
|
257
|
+
? {
|
|
258
|
+
provider: String(raw.embedder.provider),
|
|
259
|
+
...(raw.embedder.model !== undefined
|
|
260
|
+
? { model: String(raw.embedder.model) }
|
|
261
|
+
: {}),
|
|
262
|
+
}
|
|
263
|
+
: undefined;
|
|
264
|
+
// serveCollections: ABSENT → serve all served groups (downstream default).
|
|
265
|
+
// But a PRESENT key with the wrong shape must FAIL LOUD, not silently fall
|
|
266
|
+
// back to "serve all" — a typo (`serveCollections: abap` instead of
|
|
267
|
+
// `['abap']`) or a non-string entry would otherwise fail-OPEN and register
|
|
268
|
+
// every (possibly conflicting) group. See register-skill-sources.ts, where
|
|
269
|
+
// `undefined` means "all".
|
|
270
|
+
let serveCollections;
|
|
271
|
+
if (raw.serveCollections !== undefined) {
|
|
272
|
+
if (!Array.isArray(raw.serveCollections) ||
|
|
273
|
+
!raw.serveCollections.every((c) => typeof c === 'string' && c.trim().length > 0)) {
|
|
274
|
+
fail('serveCollections must be an array of non-empty strings when set ' +
|
|
275
|
+
`(got ${JSON.stringify(raw.serveCollections)})`);
|
|
276
|
+
}
|
|
277
|
+
serveCollections = raw.serveCollections;
|
|
278
|
+
}
|
|
279
|
+
// controllerSkillGroup: ABSENT → the controller planner recalls no dedicated
|
|
280
|
+
// skill group. A PRESENT key with the wrong type (a typo `123` / `['abap']`)
|
|
281
|
+
// must FAIL LOUD, not silently drop to undefined — otherwise controller skill
|
|
282
|
+
// recall is silently disabled and the typo never reaches validateServedGroups
|
|
283
|
+
// (skill-plugins-host-factory.ts, which treats an unknown group as a startup
|
|
284
|
+
// config error).
|
|
285
|
+
let controllerSkillGroup;
|
|
286
|
+
if (raw.controllerSkillGroup !== undefined) {
|
|
287
|
+
if (typeof raw.controllerSkillGroup !== 'string' ||
|
|
288
|
+
raw.controllerSkillGroup.trim().length === 0) {
|
|
289
|
+
fail('controllerSkillGroup must be a non-empty string when set ' +
|
|
290
|
+
`(got ${JSON.stringify(raw.controllerSkillGroup)})`);
|
|
291
|
+
}
|
|
292
|
+
controllerSkillGroup = raw.controllerSkillGroup;
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
mode: 'implicit',
|
|
296
|
+
store,
|
|
297
|
+
...(embeddingSpaceId ? { embeddingSpaceId } : {}),
|
|
298
|
+
...(embedder ? { embedder } : {}),
|
|
299
|
+
...(raw.dimension !== undefined
|
|
300
|
+
? { dimension: posInt(raw.dimension, 'dimension') }
|
|
301
|
+
: {}),
|
|
302
|
+
catalog,
|
|
303
|
+
k,
|
|
304
|
+
threshold,
|
|
305
|
+
maxInjectChars,
|
|
306
|
+
chunk,
|
|
307
|
+
strict: raw.strict !== undefined ? Boolean(raw.strict) : false,
|
|
308
|
+
catalogCasMaxAttempts,
|
|
309
|
+
retiredGraceMs,
|
|
310
|
+
orphanGraceMs,
|
|
311
|
+
...(recallTimeoutMs !== undefined ? { recallTimeoutMs } : {}),
|
|
312
|
+
...(controllerSkillGroup !== undefined ? { controllerSkillGroup } : {}),
|
|
313
|
+
...(serveCollections ? { serveCollections } : {}),
|
|
314
|
+
loadOnStartup,
|
|
315
|
+
...(sources ? { sources } : {}),
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=skill-plugins-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-plugins-config.js","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-plugins-config.test.d.ts","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-plugins-config.test.js","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-config.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble a live {@link ISkillPluginHost} from a normalized
|
|
3
|
+
* {@link SkillPluginsConfig}.
|
|
4
|
+
*
|
|
5
|
+
* This is the WIRING layer for the skill plugin-host: it resolves the serving
|
|
6
|
+
* embedder, maps each config `source` to an {@link ISkillSource}, selects the
|
|
7
|
+
* catalog + store providers by config type, and returns either an INGEST host
|
|
8
|
+
* (materialises sources at `load()`) or a RECALL-ONLY host (serves an
|
|
9
|
+
* already-materialised catalog through a read-only backend).
|
|
10
|
+
*
|
|
11
|
+
* Dependencies are INJECTED so the factory is unit-testable with stubs:
|
|
12
|
+
* - `resolveEmbedder` — the embedder resolver (the server passes its own
|
|
13
|
+
* `resolveEmbedder` from `@mcp-abap-adt/llm-agent-rag`; tests pass a stub).
|
|
14
|
+
* - `makePgPool` — OPTIONAL pg `Pool` provider. The repo avoids a hard `pg`
|
|
15
|
+
* dependency, so a `postgres` catalog requires the caller to inject one;
|
|
16
|
+
* absent → a `postgres` catalog throws at build time.
|
|
17
|
+
* - `makeStoreProvider` / `makeCatalogStore` — OPTIONAL test seams to inject a
|
|
18
|
+
* mock Qdrant store / pg catalog without real I/O (the live path builds them
|
|
19
|
+
* from config). When provided they fully replace the config-driven build.
|
|
20
|
+
*
|
|
21
|
+
* Startup lifecycle (`await host.load()` + ctx exposure) is owned by SmartServer.
|
|
22
|
+
*/
|
|
23
|
+
import type { IEmbedder, ISkillPluginHost, ISkillsStoreProvider } from '@mcp-abap-adt/llm-agent';
|
|
24
|
+
import { type ICatalogStore, type IPgPool } from '@mcp-abap-adt/llm-agent-libs';
|
|
25
|
+
import type { SkillPluginsConfig } from './skill-plugins-config.js';
|
|
26
|
+
/** Embedder-resolution input — the subset of config the resolver consumes. */
|
|
27
|
+
export interface SkillHostEmbedderConfig {
|
|
28
|
+
embedder?: string;
|
|
29
|
+
model?: string;
|
|
30
|
+
}
|
|
31
|
+
/** Injected dependencies (DI seams) for {@link buildSkillHostFromConfig}. */
|
|
32
|
+
export interface BuildSkillHostDeps {
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the serving embedder from the config's `embedder` selection. The
|
|
35
|
+
* server passes a resolver backed by `@mcp-abap-adt/llm-agent-rag`; tests pass
|
|
36
|
+
* a stub returning a deterministic-vector embedder.
|
|
37
|
+
*/
|
|
38
|
+
resolveEmbedder: (cfg: SkillHostEmbedderConfig) => IEmbedder;
|
|
39
|
+
/**
|
|
40
|
+
* OPTIONAL pg `Pool` provider for a `postgres` catalog. The repo keeps `pg`
|
|
41
|
+
* out of its hard dependency set, so this MUST be injected when a deployment
|
|
42
|
+
* configures `catalog.type: postgres`; absent → a config-time throw.
|
|
43
|
+
*/
|
|
44
|
+
makePgPool?: (connectionString: string) => IPgPool;
|
|
45
|
+
/**
|
|
46
|
+
* OPTIONAL READ-ONLY pg `Pool` provider for a `postgres` catalog on the
|
|
47
|
+
* RECALL-ONLY path. Unlike `makePgPool` (which lazily runs `CREATE TABLE`),
|
|
48
|
+
* this pool NEVER runs DDL, so a recall-only process with READ-ONLY pg
|
|
49
|
+
* credentials does not crash at startup. REQUIRED for the recall-only branch
|
|
50
|
+
* (absent → fail-loud); the server injects it from `pg-pool.makePgReadPool`.
|
|
51
|
+
*/
|
|
52
|
+
makePgReadPool?: (connectionString: string) => IPgPool;
|
|
53
|
+
/** OPTIONAL test seam — fully replaces the config-driven store provider build. */
|
|
54
|
+
makeStoreProvider?: (cfg: SkillPluginsConfig) => ISkillsStoreProvider;
|
|
55
|
+
/** OPTIONAL test seam — fully replaces the config-driven catalog store build. */
|
|
56
|
+
makeCatalogStore?: (cfg: SkillPluginsConfig) => ICatalogStore;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Assemble a live {@link ISkillPluginHost} from a normalized
|
|
60
|
+
* {@link SkillPluginsConfig}. INGEST when sources are present (default), else a
|
|
61
|
+
* RECALL-ONLY host over a read-only backend (requires a persistent store).
|
|
62
|
+
*
|
|
63
|
+
* The caller owns `host.load()` (SmartServer runs it once at startup).
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildSkillHostFromConfig(cfg: SkillPluginsConfig, deps: BuildSkillHostDeps): Promise<ISkillPluginHost>;
|
|
66
|
+
/**
|
|
67
|
+
* Fail-loud validation of the served-group subset AFTER `host.load()`, against
|
|
68
|
+
* the host's materialised `groups()`. A typo in `serveCollections` /
|
|
69
|
+
* `controllerSkillGroup` would otherwise SILENTLY disable skills (the filter in
|
|
70
|
+
* `registerSkillSources` drops unknown names) — the spec requires a STARTUP
|
|
71
|
+
* config error instead.
|
|
72
|
+
*
|
|
73
|
+
* Pure + side-effect-free so it is unit-testable without a full server: pass the
|
|
74
|
+
* loaded host and the normalized config.
|
|
75
|
+
*/
|
|
76
|
+
export declare function validateServedGroups(host: ISkillPluginHost, cfg: SkillPluginsConfig): void;
|
|
77
|
+
/** Minimal handle on a created pg pool — only `end()` is needed for cleanup. */
|
|
78
|
+
export interface IClosablePool {
|
|
79
|
+
end(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Build → `await host.load()` → {@link validateServedGroups} as ONE fail-fast
|
|
83
|
+
* unit, ending any pg pools the build captured into `pools` if ANY step throws.
|
|
84
|
+
*
|
|
85
|
+
* The server registers a `closeFns` cleanup that ends these pools, but that
|
|
86
|
+
* registration happens much LATER in `start()` — if `load()` or validation
|
|
87
|
+
* throws, `start()` never returns a handle, so `close()` is never callable and
|
|
88
|
+
* the captured pools would leak open sockets (blocking process exit). Running
|
|
89
|
+
* the cleanup HERE on failure closes that gap; the normal-path pools are still
|
|
90
|
+
* ended by the later `closeFns` registration.
|
|
91
|
+
*
|
|
92
|
+
* `buildHost` is a thunk so the pool-capturing side effect (the server pushes
|
|
93
|
+
* each created pool into `pools` from its `makePgPool`/`makePgReadPool`) has
|
|
94
|
+
* already happened by the time we catch — i.e. we end exactly what was created.
|
|
95
|
+
* Side-effect-free of the server instance → unit-testable with a fake host.
|
|
96
|
+
*/
|
|
97
|
+
export declare function initSkillHost(buildHost: () => Promise<ISkillPluginHost>, cfg: SkillPluginsConfig, pools: IClosablePool[]): Promise<ISkillPluginHost>;
|
|
98
|
+
//# sourceMappingURL=skill-plugins-host-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-plugins-host-factory.d.ts","sourceRoot":"","sources":["../../src/smart-agent/skill-plugins-host-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAEV,SAAS,EACT,gBAAgB,EAGhB,oBAAoB,EAIrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,OAAO,EAab,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,2BAA2B,CAAC;AASnC,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,eAAe,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC7D;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,oBAAoB,CAAC;IACtE,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,aAAa,CAAC;CAC/D;AA0GD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAsG3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,kBAAkB,GACtB,IAAI,CA4BN;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAC1C,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAuB3B"}
|