@mcp-abap-adt/llm-agent-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.
Files changed (89) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/rag/knowledge-rag.d.ts +28 -8
  6. package/dist/rag/knowledge-rag.d.ts.map +1 -1
  7. package/dist/rag/knowledge-rag.js +42 -8
  8. package/dist/rag/knowledge-rag.js.map +1 -1
  9. package/dist/skills/plugin-host/chunker.d.ts +17 -0
  10. package/dist/skills/plugin-host/chunker.d.ts.map +1 -0
  11. package/dist/skills/plugin-host/chunker.js +72 -0
  12. package/dist/skills/plugin-host/chunker.js.map +1 -0
  13. package/dist/skills/plugin-host/chunker.test.d.ts +2 -0
  14. package/dist/skills/plugin-host/chunker.test.d.ts.map +1 -0
  15. package/dist/skills/plugin-host/chunker.test.js +31 -0
  16. package/dist/skills/plugin-host/chunker.test.js.map +1 -0
  17. package/dist/skills/plugin-host/compatible-skills-rag.d.ts +14 -0
  18. package/dist/skills/plugin-host/compatible-skills-rag.d.ts.map +1 -0
  19. package/dist/skills/plugin-host/compatible-skills-rag.js +83 -0
  20. package/dist/skills/plugin-host/compatible-skills-rag.js.map +1 -0
  21. package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts +2 -0
  22. package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts.map +1 -0
  23. package/dist/skills/plugin-host/compatible-skills-rag.test.js +174 -0
  24. package/dist/skills/plugin-host/compatible-skills-rag.test.js.map +1 -0
  25. package/dist/skills/plugin-host/http-marketplace-source.d.ts +46 -0
  26. package/dist/skills/plugin-host/http-marketplace-source.d.ts.map +1 -0
  27. package/dist/skills/plugin-host/http-marketplace-source.js +67 -0
  28. package/dist/skills/plugin-host/http-marketplace-source.js.map +1 -0
  29. package/dist/skills/plugin-host/http-marketplace-source.test.d.ts +2 -0
  30. package/dist/skills/plugin-host/http-marketplace-source.test.d.ts.map +1 -0
  31. package/dist/skills/plugin-host/http-marketplace-source.test.js +71 -0
  32. package/dist/skills/plugin-host/http-marketplace-source.test.js.map +1 -0
  33. package/dist/skills/plugin-host/in-memory-store.d.ts +15 -0
  34. package/dist/skills/plugin-host/in-memory-store.d.ts.map +1 -0
  35. package/dist/skills/plugin-host/in-memory-store.js +151 -0
  36. package/dist/skills/plugin-host/in-memory-store.js.map +1 -0
  37. package/dist/skills/plugin-host/in-memory-store.test.d.ts +2 -0
  38. package/dist/skills/plugin-host/in-memory-store.test.d.ts.map +1 -0
  39. package/dist/skills/plugin-host/in-memory-store.test.js +100 -0
  40. package/dist/skills/plugin-host/in-memory-store.test.js.map +1 -0
  41. package/dist/skills/plugin-host/index.d.ts +10 -0
  42. package/dist/skills/plugin-host/index.d.ts.map +1 -0
  43. package/dist/skills/plugin-host/index.js +12 -0
  44. package/dist/skills/plugin-host/index.js.map +1 -0
  45. package/dist/skills/plugin-host/marketplace-adapter.d.ts +23 -0
  46. package/dist/skills/plugin-host/marketplace-adapter.d.ts.map +1 -0
  47. package/dist/skills/plugin-host/marketplace-adapter.js +32 -0
  48. package/dist/skills/plugin-host/marketplace-adapter.js.map +1 -0
  49. package/dist/skills/plugin-host/marketplace-adapter.test.d.ts +2 -0
  50. package/dist/skills/plugin-host/marketplace-adapter.test.d.ts.map +1 -0
  51. package/dist/skills/plugin-host/marketplace-adapter.test.js +46 -0
  52. package/dist/skills/plugin-host/marketplace-adapter.test.js.map +1 -0
  53. package/dist/skills/plugin-host/qdrant-store.d.ts +85 -0
  54. package/dist/skills/plugin-host/qdrant-store.d.ts.map +1 -0
  55. package/dist/skills/plugin-host/qdrant-store.js +542 -0
  56. package/dist/skills/plugin-host/qdrant-store.js.map +1 -0
  57. package/dist/skills/plugin-host/qdrant-store.test.d.ts +2 -0
  58. package/dist/skills/plugin-host/qdrant-store.test.d.ts.map +1 -0
  59. package/dist/skills/plugin-host/qdrant-store.test.js +396 -0
  60. package/dist/skills/plugin-host/qdrant-store.test.js.map +1 -0
  61. package/dist/skills/plugin-host/skill-plugin-host.d.ts +41 -0
  62. package/dist/skills/plugin-host/skill-plugin-host.d.ts.map +1 -0
  63. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts +2 -0
  64. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts.map +1 -0
  65. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js +520 -0
  66. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js.map +1 -0
  67. package/dist/skills/plugin-host/skill-plugin-host.js +367 -0
  68. package/dist/skills/plugin-host/skill-plugin-host.js.map +1 -0
  69. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts +2 -0
  70. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts.map +1 -0
  71. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js +328 -0
  72. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js.map +1 -0
  73. package/dist/skills/plugin-host/skills-rag-source.d.ts +17 -0
  74. package/dist/skills/plugin-host/skills-rag-source.d.ts.map +1 -0
  75. package/dist/skills/plugin-host/skills-rag-source.js +52 -0
  76. package/dist/skills/plugin-host/skills-rag-source.js.map +1 -0
  77. package/dist/skills/plugin-host/skills-rag-source.test.d.ts +2 -0
  78. package/dist/skills/plugin-host/skills-rag-source.test.d.ts.map +1 -0
  79. package/dist/skills/plugin-host/skills-rag-source.test.js +69 -0
  80. package/dist/skills/plugin-host/skills-rag-source.test.js.map +1 -0
  81. package/dist/skills/plugin-host/source-strategies.d.ts +20 -0
  82. package/dist/skills/plugin-host/source-strategies.d.ts.map +1 -0
  83. package/dist/skills/plugin-host/source-strategies.js +37 -0
  84. package/dist/skills/plugin-host/source-strategies.js.map +1 -0
  85. package/dist/skills/plugin-host/source-strategies.test.d.ts +2 -0
  86. package/dist/skills/plugin-host/source-strategies.test.d.ts.map +1 -0
  87. package/dist/skills/plugin-host/source-strategies.test.js +52 -0
  88. package/dist/skills/plugin-host/source-strategies.test.js.map +1 -0
  89. package/package.json +14 -14
@@ -0,0 +1,367 @@
1
+ import { CatalogCasError } from '@mcp-abap-adt/llm-agent'; // value (class), not a type
2
+ import { makeCompatibleSkillsRag } from './compatible-skills-rag.js';
3
+ function isRecallDeps(deps) {
4
+ return 'backendProvider' in deps;
5
+ }
6
+ function setEq(a, b) {
7
+ if (a.size !== b.size)
8
+ return false;
9
+ for (const x of a)
10
+ if (!b.has(x))
11
+ return false;
12
+ return true;
13
+ }
14
+ export function makeSkillPluginHost(deps) {
15
+ if (isRecallDeps(deps))
16
+ return makeRecallOnlyHost(deps);
17
+ return makeIngestHost(deps);
18
+ }
19
+ /** RECALL-ONLY host: reads the persisted catalog for `groups()`, validates serveCollections,
20
+ * eager compat-checks each served collection, and serves via the SAME compat wrapper over
21
+ * the read-only backend. It opens no generation and writes nothing. */
22
+ function makeRecallOnlyHost(deps) {
23
+ const resolvedDimension = deps.dimension;
24
+ let _snapshot = [];
25
+ // Memoise the per-group compat wrapper so repeated rag(g) calls return the SAME
26
+ // handle — preserving its lazy dimension probe AND per-revision compatibility
27
+ // verdict cache. Safe across catalog rotations: the wrapper reads activeSnapshot()
28
+ // fresh per query, its verdict cache is keyed by revision, and the dimension is
29
+ // embedder-stable.
30
+ const ragCache = new Map();
31
+ function rag(group) {
32
+ let resolved = group;
33
+ if (resolved === undefined) {
34
+ if (_snapshot.length === 1) {
35
+ resolved = _snapshot[0].group;
36
+ }
37
+ else {
38
+ throw new Error('rag(): must name the group (no unique default)');
39
+ }
40
+ }
41
+ // A group with no active generation simply serves nothing (the compat wrapper returns
42
+ // [] on a null activeSnapshot) — no throw for an unknown/inactive group.
43
+ if (!ragCache.has(resolved)) {
44
+ ragCache.set(resolved, makeCompatibleSkillsRag({
45
+ backend: deps.backendProvider.forGroup(resolved),
46
+ embedder: deps.embedder,
47
+ embeddingSpaceId: deps.embeddingSpaceId,
48
+ retrievalSchemaVersion: deps.retrievalSchemaVersion,
49
+ dimension: resolvedDimension,
50
+ recallTimeoutMs: deps.recallTimeoutMs,
51
+ }));
52
+ }
53
+ // biome-ignore lint/style/noNonNullAssertion: set immediately above when absent
54
+ return ragCache.get(resolved);
55
+ }
56
+ return {
57
+ async load(options) {
58
+ const cat = await deps.backendProvider.readCatalog(options);
59
+ // The FULL available set — every non-tombstoned collection in the catalog.
60
+ const allGroups = cat.entries.filter((e) => !e.tombstone);
61
+ // Validate every EXPLICITLY-named served collection exists in the persisted
62
+ // catalog (config error). When omitted, the served set is derived from the
63
+ // catalog and trivially exists.
64
+ if (deps.serveCollections) {
65
+ for (const g of deps.serveCollections) {
66
+ if (!cat.entries.some((e) => e.collection.group === g)) {
67
+ throw new Error(`serveCollections names a collection absent from the catalog: ${g}`);
68
+ }
69
+ }
70
+ }
71
+ // The SERVED set (assembler subset) — explicit serveCollections or, when
72
+ // omitted, the whole catalog.
73
+ const served = deps.serveCollections ?? allGroups.map((e) => e.collection.group);
74
+ // groups() exposes the FULL catalog (NOT just the served subset): the
75
+ // controller recall channel (controllerSkillGroup) and the assembler channel
76
+ // (serveCollections) are independent and each validate against the full set.
77
+ // host.rag(anyCatalogGroup) already resolves from the catalog via
78
+ // backendProvider.forGroup, so serving any available group is correct; the
79
+ // assembler still narrows to serveCollections downstream.
80
+ _snapshot = allGroups.map((e) => e.collection);
81
+ // EAGER fail-fast: probe + compat-check the SERVED set's active generations
82
+ // (don't force-probe the whole catalog when a subset is served — a controller
83
+ // group outside the served set is probed lazily at first recall).
84
+ // SkillsIncompatibleError propagates (recall-only load aborts on incompatibility).
85
+ for (const g of served) {
86
+ await rag(g).activeManifest(options);
87
+ }
88
+ return {
89
+ committed: [...served],
90
+ omitted: [],
91
+ tombstoned: [],
92
+ ok: true,
93
+ };
94
+ },
95
+ groups() {
96
+ return _snapshot;
97
+ },
98
+ rag,
99
+ };
100
+ }
101
+ function makeIngestHost(deps) {
102
+ const maxAttempts = deps.catalogCasMaxAttempts ?? 3;
103
+ const servingMode = deps.servingMode ?? true;
104
+ const now = deps.now ?? Date.now;
105
+ // Internal host state (closure vars, not deps).
106
+ let _snapshot = [];
107
+ let _registeredSet;
108
+ let _pendingReclaim = { generations: [], tombstonedGroups: [] };
109
+ // Memoise the per-group compat wrapper so repeated rag(g) calls return the SAME
110
+ // handle — preserving its lazy dimension probe AND per-revision compatibility
111
+ // verdict cache. Safe across catalog rotations: the wrapper reads activeSnapshot()
112
+ // fresh per query, its verdict cache is keyed by revision, and the dimension is
113
+ // embedder-stable (the wrapper self-probes once if dimension is still unresolved).
114
+ const ragCache = new Map();
115
+ // Resolved once before the first build so every manifest is complete.
116
+ let resolvedDimension = deps.dimension;
117
+ async function ensureDimension(options) {
118
+ if (resolvedDimension === undefined) {
119
+ const probe = await deps.embedder.embed('dimension probe', options);
120
+ resolvedDimension = probe.vector.length;
121
+ }
122
+ return resolvedDimension;
123
+ }
124
+ /** Merge one collection descriptor into the desired map; conflicting descriptions throw. */
125
+ function mergeCollection(desired, c, sourceId) {
126
+ const existing = desired.get(c.group);
127
+ if (existing) {
128
+ if (existing.info.description !== c.description) {
129
+ throw new Error(`conflicting descriptions for collection '${c.group}': ` +
130
+ `'${existing.info.description}' (from ${[...existing.sources].join(',')}) ` +
131
+ `vs '${c.description}' (from ${sourceId})`);
132
+ }
133
+ existing.sources.add(sourceId);
134
+ }
135
+ else {
136
+ desired.set(c.group, {
137
+ info: c,
138
+ sources: new Set([sourceId]),
139
+ records: [],
140
+ });
141
+ }
142
+ }
143
+ async function attempt(manifest, options) {
144
+ const prior = await deps.storeProvider.readCatalog(options);
145
+ const results = await Promise.allSettled(deps.sources.map((s) => s.source.acquire(options)));
146
+ const desired = new Map();
147
+ const failedSourceIds = [];
148
+ for (let i = 0; i < deps.sources.length; i++) {
149
+ const { id } = deps.sources[i];
150
+ const r = results[i];
151
+ if (r.status === 'rejected') {
152
+ failedSourceIds.push(id);
153
+ continue;
154
+ }
155
+ const value = r.value;
156
+ const declaredGroups = new Set(value.collections.map((c) => c.group));
157
+ for (const c of value.collections)
158
+ mergeCollection(desired, c, id);
159
+ for (const record of value.records) {
160
+ if (!declaredGroups.has(record.group)) {
161
+ throw new Error(`source '${id}' record '${record.id}' targets undeclared group '${record.group}'`);
162
+ }
163
+ const dc = desired.get(record.group);
164
+ // mergeCollection guarantees the entry exists (group is declared).
165
+ dc.records.push(record);
166
+ dc.sources.add(id);
167
+ }
168
+ }
169
+ // strict:true → any source failure aborts before any commit.
170
+ if (deps.strict && failedSourceIds.length) {
171
+ throw new Error(`strict ingest: source(s) failed: ${failedSourceIds.join(', ')}`);
172
+ }
173
+ // Carry-forward (strict:false): for each prior entry partly owned by a failed source,
174
+ // re-add its collection to desired and mark the failed sourceIds for carryForward.
175
+ const failedSet = new Set(failedSourceIds);
176
+ // group -> sourceIds (owned by a failed source) to carry forward
177
+ const carryForwardByGroup = new Map();
178
+ for (const e of prior.entries) {
179
+ if (e.tombstone)
180
+ continue;
181
+ const failedOwners = e.sources.filter((s) => failedSet.has(s));
182
+ if (!failedOwners.length)
183
+ continue;
184
+ const group = e.collection.group;
185
+ carryForwardByGroup.set(group, [
186
+ ...(carryForwardByGroup.get(group) ?? []),
187
+ ...failedOwners,
188
+ ]);
189
+ if (!desired.has(group)) {
190
+ desired.set(group, {
191
+ info: e.collection,
192
+ sources: new Set(e.sources),
193
+ records: [],
194
+ });
195
+ }
196
+ else {
197
+ // keep ownership of the carried (failed) sources on the entry
198
+ const dc = desired.get(group);
199
+ for (const s of e.sources)
200
+ dc.sources.add(s);
201
+ }
202
+ }
203
+ const desiredSet = new Set(desired.keys());
204
+ // SERVING-HOST guard (re-checked on each attempt) — only on a reload.
205
+ if (servingMode && _registeredSet) {
206
+ const activePriorSet = new Set(prior.entries
207
+ .filter((e) => !e.tombstone)
208
+ .map((e) => e.collection.group));
209
+ if (!setEq(activePriorSet, _registeredSet) ||
210
+ !setEq(desiredSet, _registeredSet)) {
211
+ throw new Error('served collection set changed since first load (reload guard)');
212
+ }
213
+ }
214
+ const built = [];
215
+ const omitted = [];
216
+ let committed = false;
217
+ let committedGenerations = new Set();
218
+ try {
219
+ const entries = [];
220
+ for (const group of desiredSet) {
221
+ const dc = desired.get(group);
222
+ const store = deps.storeProvider.forGroup(group);
223
+ try {
224
+ const { generation } = await store.beginGeneration();
225
+ built.push({ group, generation });
226
+ await store.upsert(generation, dc.records, options);
227
+ const cf = carryForwardByGroup.get(group);
228
+ if (cf?.length)
229
+ await store.carryForward(generation, cf);
230
+ entries.push({
231
+ collection: dc.info,
232
+ sources: [...dc.sources],
233
+ generation,
234
+ manifest,
235
+ });
236
+ }
237
+ catch (buildErr) {
238
+ const priorGen = prior.entries.find((e) => e.collection.group === group && !e.tombstone);
239
+ if (priorGen) {
240
+ entries.push({ ...priorGen }); // keep the prior pointer
241
+ }
242
+ else {
243
+ omitted.push({ group, reason: String(buildErr) }); // OMIT, no prior
244
+ }
245
+ }
246
+ }
247
+ // Tombstone prior active collections not in desiredSet.
248
+ for (const e of prior.entries) {
249
+ if (e.tombstone)
250
+ continue;
251
+ if (!desiredSet.has(e.collection.group)) {
252
+ entries.push({ ...e, tombstone: true });
253
+ }
254
+ }
255
+ const snap = await deps.storeProvider.publishCatalog(prior.catalogRevision, entries, options); // CAS commit — the ONLY activation
256
+ committed = true;
257
+ committedGenerations = new Set(entries.filter((e) => !e.tombstone).map((e) => e.generation));
258
+ // Cache the fixed groups() snapshot; register the set on the first load.
259
+ _snapshot = snap.entries
260
+ .filter((e) => !e.tombstone)
261
+ .map((e) => e.collection);
262
+ _registeredSet ??= new Set(_snapshot.map((c) => c.group));
263
+ // SCHEDULE (not now — deferred reclaim) the superseded prior generations
264
+ // + tombstoned groups for reclaim at the NEXT load.
265
+ _pendingReclaim = {
266
+ generations: prior.entries
267
+ .filter((e) => !committedGenerations.has(e.generation))
268
+ .map((e) => ({
269
+ group: e.collection.group,
270
+ generation: e.generation,
271
+ })),
272
+ tombstonedGroups: entries
273
+ .filter((e) => e.tombstone)
274
+ .map((e) => e.collection.group),
275
+ };
276
+ return {
277
+ committed: entries
278
+ .filter((e) => !e.tombstone)
279
+ .map((e) => e.collection.group),
280
+ omitted,
281
+ tombstoned: entries
282
+ .filter((e) => e.tombstone)
283
+ .map((e) => e.collection.group),
284
+ ok: omitted.length === 0,
285
+ };
286
+ }
287
+ finally {
288
+ // ORPHAN CLEANUP — keyed on the COMMITTED catalog, not on !committed.
289
+ // Discard every generation this attempt built that the committed catalog does
290
+ // NOT name: covers a lost CAS / error / strict abort (committed===false → all
291
+ // built discarded) AND a successful partial commit where a collection fell back
292
+ // to a prior pointer or was omitted. discardGeneration is a no-op for a named gen.
293
+ for (const b of built) {
294
+ if (!committed || !committedGenerations.has(b.generation)) {
295
+ await deps.storeProvider
296
+ .forGroup(b.group)
297
+ .discardGeneration(b.generation);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ return {
303
+ async load(options) {
304
+ // RECLAIM at the START of every load. Two disciplines by backend.
305
+ if (deps.storeProvider.sweep) {
306
+ await deps.storeProvider.sweep(now(), options);
307
+ }
308
+ else {
309
+ for (const g of _pendingReclaim.generations) {
310
+ await deps.storeProvider
311
+ .forGroup(g.group)
312
+ .discardGeneration(g.generation);
313
+ }
314
+ for (const grp of _pendingReclaim.tombstonedGroups) {
315
+ await deps.storeProvider.dropCollection(grp, options);
316
+ }
317
+ _pendingReclaim = { generations: [], tombstonedGroups: [] };
318
+ }
319
+ const manifest = {
320
+ embeddingSpaceId: deps.embeddingSpaceId,
321
+ dimension: await ensureDimension(options),
322
+ retrievalSchemaVersion: deps.retrievalSchemaVersion,
323
+ };
324
+ for (let attemptNo = 1; attemptNo <= maxAttempts; attemptNo++) {
325
+ try {
326
+ return await attempt(manifest, options);
327
+ }
328
+ catch (e) {
329
+ if (e instanceof CatalogCasError)
330
+ continue; // built gens already discarded by finally
331
+ throw e;
332
+ }
333
+ }
334
+ throw new CatalogCasError('catalog CAS retries exhausted');
335
+ },
336
+ groups() {
337
+ return _snapshot;
338
+ },
339
+ rag(group) {
340
+ let resolved = group;
341
+ if (resolved === undefined) {
342
+ if (_snapshot.length === 1) {
343
+ resolved = _snapshot[0].group;
344
+ }
345
+ else {
346
+ throw new Error('rag(): must name the group (no unique default)');
347
+ }
348
+ }
349
+ // A named group always yields a handle over its backend. A group that is not in
350
+ // the active snapshot (omitted / tombstoned / never built) simply has no active
351
+ // generation, so the compat wrapper serves nothing — no need to throw here.
352
+ if (!ragCache.has(resolved)) {
353
+ ragCache.set(resolved, makeCompatibleSkillsRag({
354
+ backend: deps.storeProvider.forGroup(resolved),
355
+ embedder: deps.embedder,
356
+ embeddingSpaceId: deps.embeddingSpaceId,
357
+ retrievalSchemaVersion: deps.retrievalSchemaVersion,
358
+ dimension: resolvedDimension,
359
+ recallTimeoutMs: deps.recallTimeoutMs,
360
+ }));
361
+ }
362
+ // biome-ignore lint/style/noNonNullAssertion: set immediately above when absent
363
+ return ragCache.get(resolved);
364
+ },
365
+ };
366
+ }
367
+ //# sourceMappingURL=skill-plugin-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-plugin-host.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/skill-plugin-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skill-plugin-host.recall-and-reload.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-plugin-host.recall-and-reload.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/skill-plugin-host.recall-and-reload.test.ts"],"names":[],"mappings":""}