@mcp-abap-adt/llm-agent-libs 26.0.0 → 28.0.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 (95) hide show
  1. package/README.md +11 -14
  2. package/dist/agent.d.ts +2 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +6 -5
  5. package/dist/agent.js.map +1 -1
  6. package/dist/builder.d.ts +36 -14
  7. package/dist/builder.d.ts.map +1 -1
  8. package/dist/builder.js +472 -348
  9. package/dist/builder.js.map +1 -1
  10. package/dist/config/config-watcher.d.ts.map +1 -1
  11. package/dist/config/config-watcher.js +9 -5
  12. package/dist/config/config-watcher.js.map +1 -1
  13. package/dist/index.d.ts +1 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -5
  16. package/dist/index.js.map +1 -1
  17. package/dist/mcp/vectorize-mcp-tools.d.ts.map +1 -1
  18. package/dist/mcp/vectorize-mcp-tools.js +21 -2
  19. package/dist/mcp/vectorize-mcp-tools.js.map +1 -1
  20. package/dist/pipeline/handlers/history-upsert.d.ts.map +1 -1
  21. package/dist/pipeline/handlers/history-upsert.js +8 -1
  22. package/dist/pipeline/handlers/history-upsert.js.map +1 -1
  23. package/dist/pipeline/handlers/rag-query.d.ts +1 -1
  24. package/dist/pipeline/handlers/rag-query.d.ts.map +1 -1
  25. package/dist/pipeline/handlers/rag-query.js +10 -2
  26. package/dist/pipeline/handlers/rag-query.js.map +1 -1
  27. package/dist/plugins/index.d.ts +1 -1
  28. package/dist/plugins/index.d.ts.map +1 -1
  29. package/dist/plugins/index.js +1 -1
  30. package/dist/plugins/index.js.map +1 -1
  31. package/dist/plugins/types.d.ts +7 -0
  32. package/dist/plugins/types.d.ts.map +1 -1
  33. package/dist/plugins/types.js +85 -14
  34. package/dist/plugins/types.js.map +1 -1
  35. package/dist/session/session-graph-factory.d.ts +49 -16
  36. package/dist/session/session-graph-factory.d.ts.map +1 -1
  37. package/dist/session/session-graph-factory.js +140 -62
  38. package/dist/session/session-graph-factory.js.map +1 -1
  39. package/dist/skills/plugin-host/qdrant-store.d.ts +6 -1
  40. package/dist/skills/plugin-host/qdrant-store.d.ts.map +1 -1
  41. package/dist/skills/plugin-host/qdrant-store.js +7 -7
  42. package/dist/skills/plugin-host/qdrant-store.js.map +1 -1
  43. package/dist/util/stop-all.d.ts +19 -0
  44. package/dist/util/stop-all.d.ts.map +1 -0
  45. package/dist/util/stop-all.js +30 -0
  46. package/dist/util/stop-all.js.map +1 -0
  47. package/package.json +10 -38
  48. package/dist/coordinator/dag/reviewer-error-strategy.d.ts +0 -15
  49. package/dist/coordinator/dag/reviewer-error-strategy.d.ts.map +0 -1
  50. package/dist/coordinator/dag/reviewer-error-strategy.js +0 -38
  51. package/dist/coordinator/dag/reviewer-error-strategy.js.map +0 -1
  52. package/dist/providers.d.ts +0 -58
  53. package/dist/providers.d.ts.map +0 -1
  54. package/dist/providers.js +0 -225
  55. package/dist/providers.js.map +0 -1
  56. package/dist/skills/plugin-host/chunker.test.d.ts +0 -2
  57. package/dist/skills/plugin-host/chunker.test.d.ts.map +0 -1
  58. package/dist/skills/plugin-host/chunker.test.js +0 -31
  59. package/dist/skills/plugin-host/chunker.test.js.map +0 -1
  60. package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts +0 -2
  61. package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts.map +0 -1
  62. package/dist/skills/plugin-host/compatible-skills-rag.test.js +0 -174
  63. package/dist/skills/plugin-host/compatible-skills-rag.test.js.map +0 -1
  64. package/dist/skills/plugin-host/http-marketplace-source.test.d.ts +0 -2
  65. package/dist/skills/plugin-host/http-marketplace-source.test.d.ts.map +0 -1
  66. package/dist/skills/plugin-host/http-marketplace-source.test.js +0 -71
  67. package/dist/skills/plugin-host/http-marketplace-source.test.js.map +0 -1
  68. package/dist/skills/plugin-host/in-memory-store.test.d.ts +0 -2
  69. package/dist/skills/plugin-host/in-memory-store.test.d.ts.map +0 -1
  70. package/dist/skills/plugin-host/in-memory-store.test.js +0 -100
  71. package/dist/skills/plugin-host/in-memory-store.test.js.map +0 -1
  72. package/dist/skills/plugin-host/marketplace-adapter.test.d.ts +0 -2
  73. package/dist/skills/plugin-host/marketplace-adapter.test.d.ts.map +0 -1
  74. package/dist/skills/plugin-host/marketplace-adapter.test.js +0 -46
  75. package/dist/skills/plugin-host/marketplace-adapter.test.js.map +0 -1
  76. package/dist/skills/plugin-host/qdrant-store.test.d.ts +0 -2
  77. package/dist/skills/plugin-host/qdrant-store.test.d.ts.map +0 -1
  78. package/dist/skills/plugin-host/qdrant-store.test.js +0 -396
  79. package/dist/skills/plugin-host/qdrant-store.test.js.map +0 -1
  80. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts +0 -2
  81. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts.map +0 -1
  82. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js +0 -520
  83. package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js.map +0 -1
  84. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts +0 -2
  85. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts.map +0 -1
  86. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js +0 -328
  87. package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js.map +0 -1
  88. package/dist/skills/plugin-host/skills-rag-source.test.d.ts +0 -2
  89. package/dist/skills/plugin-host/skills-rag-source.test.d.ts.map +0 -1
  90. package/dist/skills/plugin-host/skills-rag-source.test.js +0 -69
  91. package/dist/skills/plugin-host/skills-rag-source.test.js.map +0 -1
  92. package/dist/skills/plugin-host/source-strategies.test.d.ts +0 -2
  93. package/dist/skills/plugin-host/source-strategies.test.d.ts.map +0 -1
  94. package/dist/skills/plugin-host/source-strategies.test.js +0 -52
  95. package/dist/skills/plugin-host/source-strategies.test.js.map +0 -1
@@ -1,328 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { SkillsIncompatibleError } from '@mcp-abap-adt/llm-agent';
4
- import { makeInMemoryStoreProvider } from './in-memory-store.js';
5
- import { makeSkillPluginHost } from './skill-plugin-host.js';
6
- // Deterministic 3-dim vector from text — lets the in-memory store embed with no real embedder.
7
- function hash3(text) {
8
- const v = [0, 0, 0];
9
- for (let i = 0; i < text.length; i++) {
10
- v[i % 3] += text.charCodeAt(i);
11
- }
12
- return v;
13
- }
14
- // In-memory store provider embed: text → vector (number[]).
15
- const embed = async (text) => hash3(text);
16
- // Host serving embedder: text → IEmbedResult.
17
- const embedder = {
18
- async embed(text) {
19
- return { vector: hash3(text) };
20
- },
21
- };
22
- function rec(id, sourceId, group, content) {
23
- return {
24
- id,
25
- sourceId,
26
- group,
27
- name: id,
28
- retrievalText: content,
29
- content,
30
- provenance: id,
31
- };
32
- }
33
- function info(group, description = `desc-${group}`) {
34
- return { group, description, collection: group };
35
- }
36
- function makeStubSource(result) {
37
- return {
38
- async acquire(_options) {
39
- if (typeof result === 'function')
40
- return result();
41
- return result;
42
- },
43
- };
44
- }
45
- const SERVE_BASE = {
46
- embedder: embedder,
47
- embeddingSpaceId: 'sp',
48
- retrievalSchemaVersion: 1,
49
- dimension: 3,
50
- };
51
- /** Seed an in-memory provider with one committed generation for `group`. */
52
- async function seedProvider(group, records, manifest = {
53
- embeddingSpaceId: 'sp',
54
- dimension: 3,
55
- retrievalSchemaVersion: 1,
56
- }) {
57
- const provider = makeInMemoryStoreProvider({ embed });
58
- const generation = `${group}#g0`;
59
- await provider._seed(generation, records.map((r) => ({ record: r, vector: hash3(r.retrievalText) })));
60
- await provider.publishCatalog('c0', [
61
- {
62
- collection: info(group),
63
- sources: ['seed'],
64
- generation,
65
- manifest,
66
- },
67
- ]);
68
- return provider;
69
- }
70
- // 1 -------------------------------------------------------------------------
71
- test('recall-only: load() validates serveCollections + eager compat; groups()/rag() from catalog', async () => {
72
- const provider = await seedProvider('g1', [
73
- rec('g1:a', 'seed', 'g1', 'alpha record'),
74
- ]);
75
- const host = makeSkillPluginHost({
76
- ...SERVE_BASE,
77
- backendProvider: provider.asBackendProvider(),
78
- serveCollections: ['g1'],
79
- });
80
- const res = await host.load();
81
- assert.equal(res.ok, true);
82
- assert.deepEqual(res.committed, ['g1']);
83
- assert.deepEqual(res.omitted, []);
84
- assert.deepEqual(res.tombstoned, []);
85
- assert.deepEqual(host.groups().map((g) => g.group), ['g1']);
86
- const hits = await host
87
- .rag('g1')
88
- .query('alpha record', { k: 5, threshold: 0 });
89
- assert.ok(hits.some((h) => h.record.id === 'g1:a'));
90
- });
91
- // 2 -------------------------------------------------------------------------
92
- test('recall-only: serveCollections naming an absent collection → load() throws (config error)', async () => {
93
- const provider = await seedProvider('g1', [
94
- rec('g1:a', 'seed', 'g1', 'alpha'),
95
- ]);
96
- const host = makeSkillPluginHost({
97
- ...SERVE_BASE,
98
- backendProvider: provider.asBackendProvider(),
99
- serveCollections: ['missing'],
100
- });
101
- await assert.rejects(() => host.load(), /serveCollections/);
102
- });
103
- // 3 -------------------------------------------------------------------------
104
- test('recall-only: incompatible serving embeddingSpaceId → load() throws (eager)', async () => {
105
- // Seed manifest with embeddingSpaceId 'sp'; serve with a different one → incompatible.
106
- const provider = await seedProvider('g1', [
107
- rec('g1:a', 'seed', 'g1', 'alpha'),
108
- ]);
109
- const host = makeSkillPluginHost({
110
- ...SERVE_BASE,
111
- embeddingSpaceId: 'OTHER-SPACE',
112
- backendProvider: provider.asBackendProvider(),
113
- serveCollections: ['g1'],
114
- });
115
- await assert.rejects(() => host.load(), (e) => e instanceof SkillsIncompatibleError);
116
- });
117
- // 4 -------------------------------------------------------------------------
118
- test('serving reload SAME set, new generations → succeeds and rotates', async () => {
119
- const provider = makeInMemoryStoreProvider({ embed });
120
- const mkHost = (body) => makeSkillPluginHost({
121
- ...SERVE_BASE,
122
- storeProvider: provider,
123
- sources: [
124
- {
125
- id: 's1',
126
- source: makeStubSource({
127
- collections: [info('c1')],
128
- records: [rec('c1:a', 's1', 'c1', body)],
129
- }),
130
- },
131
- ],
132
- });
133
- // First load registers the served set {c1}.
134
- const host = mkHost('v1 body');
135
- await host.load();
136
- const gen1 = (await provider.readCatalog()).entries.find((e) => e.collection.group === 'c1')?.generation;
137
- // Reload on the SAME host, SAME set → new generation, no throw.
138
- const res = await host.load();
139
- assert.equal(res.ok, true);
140
- assert.deepEqual(res.committed, ['c1']);
141
- const gen2 = (await provider.readCatalog()).entries.find((e) => e.collection.group === 'c1')?.generation;
142
- assert.notEqual(gen1, gen2); // rotated
143
- });
144
- // 5 -------------------------------------------------------------------------
145
- test('serving reload LOCAL change (sources resolve a new collection) → throws, no build/publish', async () => {
146
- // A host whose source set changes between loads via a toggling stub: first load resolves
147
- // {c1} (registers the served set), the second resolves {c1,c2} (a LOCAL change).
148
- let loadNo = 0;
149
- const togglingSource = {
150
- async acquire() {
151
- loadNo++;
152
- if (loadNo === 1) {
153
- return {
154
- collections: [info('c1')],
155
- records: [rec('c1:a', 'sX', 'c1', 'alpha')],
156
- };
157
- }
158
- return {
159
- collections: [info('c1'), info('c2')],
160
- records: [
161
- rec('c1:a', 'sX', 'c1', 'alpha'),
162
- rec('c2:a', 'sX', 'c2', 'beta'),
163
- ],
164
- };
165
- },
166
- };
167
- const provider2 = makeInMemoryStoreProvider({ embed });
168
- let begin2 = 0;
169
- let publish2 = 0;
170
- const fg2 = provider2.forGroup.bind(provider2);
171
- provider2.forGroup = (group) => {
172
- const store = fg2(group);
173
- return {
174
- ...store,
175
- async beginGeneration() {
176
- begin2++;
177
- return store.beginGeneration();
178
- },
179
- };
180
- };
181
- const pub2 = provider2.publishCatalog.bind(provider2);
182
- provider2.publishCatalog = async (rev, entries, options) => {
183
- publish2++;
184
- return pub2(rev, entries, options);
185
- };
186
- const reloadHost = makeSkillPluginHost({
187
- ...SERVE_BASE,
188
- storeProvider: provider2,
189
- sources: [{ id: 'sX', source: togglingSource }],
190
- });
191
- await reloadHost.load(); // registers {c1}
192
- const beginAfterFirst = begin2;
193
- const publishAfterFirst = publish2;
194
- const catBeforeReload = await provider2.readCatalog();
195
- // Second load resolves {c1,c2} → LOCAL change → guard throws BEFORE any build/publish.
196
- await assert.rejects(() => reloadHost.load(), /served collection set changed/i);
197
- assert.equal(begin2, beginAfterFirst); // NO new generation built
198
- assert.equal(publish2, publishAfterFirst); // NO publish
199
- // Catalog unchanged.
200
- assert.deepEqual((await provider2.readCatalog()).catalogRevision, catBeforeReload.catalogRevision);
201
- });
202
- // 6 -------------------------------------------------------------------------
203
- test('serving reload OUT-OF-BAND change (active catalog grew) → throws; external collection NOT tombstoned', async () => {
204
- const provider = makeInMemoryStoreProvider({ embed });
205
- let publishCalls = 0;
206
- const origPublish = provider.publishCatalog.bind(provider);
207
- provider.publishCatalog = async (rev, entries, options) => {
208
- publishCalls++;
209
- return origPublish(rev, entries, options);
210
- };
211
- // Serving host registers {c1}.
212
- const host = makeSkillPluginHost({
213
- ...SERVE_BASE,
214
- storeProvider: provider,
215
- sources: [
216
- {
217
- id: 's1',
218
- source: makeStubSource({
219
- collections: [info('c1')],
220
- records: [rec('c1:a', 's1', 'c1', 'alpha')],
221
- }),
222
- },
223
- ],
224
- });
225
- await host.load(); // registers {c1}
226
- const publishAfterFirst = publishCalls;
227
- // OUT-OF-BAND: a separate ingest adds c2 to the active catalog.
228
- const ingest = makeSkillPluginHost({
229
- ...SERVE_BASE,
230
- storeProvider: provider,
231
- servingMode: false,
232
- sources: [
233
- {
234
- id: 's1',
235
- source: makeStubSource({
236
- collections: [info('c1')],
237
- records: [rec('c1:a', 's1', 'c1', 'alpha')],
238
- }),
239
- },
240
- {
241
- id: 's2',
242
- source: makeStubSource({
243
- collections: [info('c2')],
244
- records: [rec('c2:a', 's2', 'c2', 'beta')],
245
- }),
246
- },
247
- ],
248
- });
249
- await ingest.load();
250
- const catWithBoth = await provider.readCatalog();
251
- assert.deepEqual(catWithBoth.entries.map((e) => e.collection.group).sort(), [
252
- 'c1',
253
- 'c2',
254
- ]);
255
- const publishAfterIngest = publishCalls;
256
- // Serving host reloads: its desired stays {c1} but active catalog is now {c1,c2} →
257
- // OUT-OF-BAND mismatch → guard throws BEFORE any publish.
258
- await assert.rejects(() => host.load(), /served collection set changed/i);
259
- assert.equal(publishCalls, publishAfterIngest); // serving host published NOTHING
260
- assert.ok(publishAfterFirst <= publishAfterIngest); // sanity
261
- // c2 is NOT tombstoned — it still serves (the externally-added collection survives).
262
- const cat = await provider.readCatalog();
263
- const c2 = cat.entries.find((e) => e.collection.group === 'c2');
264
- assert.ok(c2 && !c2.tombstone);
265
- const c2hits = await ingest.rag('c2').query('beta', { k: 5, threshold: 0 });
266
- assert.ok(c2hits.some((h) => h.record.id === 'c2:a'));
267
- });
268
- // 7 -------------------------------------------------------------------------
269
- test('groups()/rag(): one group → rag() defaults; several → rag() throws; inactive group serves []', async () => {
270
- // One group: rag() with no arg resolves it.
271
- {
272
- const provider = await seedProvider('g1', [
273
- rec('g1:a', 'seed', 'g1', 'alpha'),
274
- ]);
275
- const host = makeSkillPluginHost({
276
- ...SERVE_BASE,
277
- backendProvider: provider.asBackendProvider(),
278
- serveCollections: ['g1'],
279
- });
280
- await host.load();
281
- const hits = await host.rag().query('alpha', { k: 5, threshold: 0 });
282
- assert.ok(hits.some((h) => h.record.id === 'g1:a'));
283
- // An inactive/unknown group serves [] (does NOT throw).
284
- const none = await host.rag('nonexistent').query('alpha', {
285
- k: 5,
286
- threshold: 0,
287
- });
288
- assert.equal(none.length, 0);
289
- }
290
- // Several groups: rag() with no arg throws.
291
- {
292
- const provider = makeInMemoryStoreProvider({ embed });
293
- // seed two collections.
294
- await provider._seed('g1#g0', [
295
- { record: rec('g1:a', 'seed', 'g1', 'alpha'), vector: hash3('alpha') },
296
- ]);
297
- await provider._seed('g2#g0', [
298
- { record: rec('g2:a', 'seed', 'g2', 'beta'), vector: hash3('beta') },
299
- ]);
300
- const manifest = {
301
- embeddingSpaceId: 'sp',
302
- dimension: 3,
303
- retrievalSchemaVersion: 1,
304
- };
305
- await provider.publishCatalog('c0', [
306
- {
307
- collection: info('g1'),
308
- sources: ['seed'],
309
- generation: 'g1#g0',
310
- manifest,
311
- },
312
- {
313
- collection: info('g2'),
314
- sources: ['seed'],
315
- generation: 'g2#g0',
316
- manifest,
317
- },
318
- ]);
319
- const host = makeSkillPluginHost({
320
- ...SERVE_BASE,
321
- backendProvider: provider.asBackendProvider(),
322
- serveCollections: ['g1', 'g2'],
323
- });
324
- await host.load();
325
- assert.throws(() => host.rag(), /name the group/);
326
- }
327
- });
328
- //# sourceMappingURL=skill-plugin-host.recall-and-reload.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-plugin-host.recall-and-reload.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/skill-plugin-host.recall-and-reload.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=skills-rag-source.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-rag-source.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/skills-rag-source.test.ts"],"names":[],"mappings":""}
@@ -1,69 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { skillsRagSource } from './skills-rag-source.js';
4
- test('query uses IQueryEmbedding.text (NOT toVector) and maps SkillHit→RagResult', async () => {
5
- let usedToVector = false;
6
- const handle = {
7
- async query(text) {
8
- assert.equal(text, 'goal-text');
9
- return [
10
- {
11
- record: {
12
- id: 'i',
13
- name: 'n',
14
- content: 'BODY',
15
- provenance: 'pv',
16
- group: 'g',
17
- },
18
- score: 0.91,
19
- },
20
- ];
21
- },
22
- async activeManifest() {
23
- return {
24
- revision: 'g0',
25
- manifest: {
26
- embeddingSpaceId: 'sp',
27
- dimension: 3,
28
- retrievalSchemaVersion: 1,
29
- },
30
- };
31
- },
32
- };
33
- const src = skillsRagSource(handle, {
34
- group: 'g',
35
- k: 4,
36
- threshold: 0.3,
37
- });
38
- const embedding = {
39
- text: 'goal-text',
40
- async toVector() {
41
- usedToVector = true;
42
- return [0, 0, 0];
43
- },
44
- };
45
- const res = await src.query(embedding, 4);
46
- assert.equal(res.ok, true);
47
- const value = res.value;
48
- assert.equal(value[0].text, 'BODY');
49
- assert.equal(value[0].score, 0.91);
50
- assert.equal(value[0].metadata.id, 'i');
51
- assert.equal(usedToVector, false); // re-embeds via the skills handle, not the assembler vector
52
- });
53
- test('healthCheck ok when activeManifest resolves; writer undefined; getById ok(null)', async () => {
54
- const handle = {
55
- async query() {
56
- return [];
57
- },
58
- async activeManifest() {
59
- return { revision: 'g', manifest: {} };
60
- },
61
- };
62
- const src = skillsRagSource(handle, { group: 'g', k: 4 });
63
- assert.equal((await src.healthCheck()).ok, true);
64
- assert.equal(src.writer?.(), undefined);
65
- const byId = await src.getById('x');
66
- assert.equal(byId.ok, true);
67
- assert.equal(byId.value, null);
68
- });
69
- //# sourceMappingURL=skills-rag-source.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-rag-source.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/skills-rag-source.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=source-strategies.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-strategies.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/source-strategies.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { resolveSkillSourceStrategy, } from './source-strategies.js';
4
- const SKILL_MD = `---\nname: s\ndescription: d\n---\n## H\nbody`;
5
- const transport = {
6
- async listPlugins() {
7
- return [
8
- { plugin: 'a', version: '1', skills: ['s'] },
9
- { plugin: 'b', version: '1', skills: ['s'] },
10
- ];
11
- },
12
- async fetchSkillMd() {
13
- return SKILL_MD;
14
- },
15
- };
16
- const cfg = {
17
- source: 'v',
18
- enabled: ['*'],
19
- transport,
20
- chunk: { maxChars: 1000 },
21
- };
22
- test('one-group-per-plugin groups per plugin (≥2 plugins → ≥2 collections)', async () => {
23
- const src = resolveSkillSourceStrategy('one-group-per-plugin')(cfg);
24
- const res = await src.acquire();
25
- assert.ok(res.collections.length >= 2);
26
- assert.deepEqual(res.collections.map((c) => c.group).sort(), ['a', 'b']);
27
- });
28
- test('single-collection bundles all plugins into one named collection', async () => {
29
- const src = resolveSkillSourceStrategy('single-collection')({
30
- ...cfg,
31
- strategyConfig: { collection: 'bundle' },
32
- });
33
- const res = await src.acquire();
34
- assert.equal(res.collections.length, 1);
35
- assert.equal(res.collections[0].group, 'bundle');
36
- });
37
- test('single-collection defaults to "skills" when unconfigured', async () => {
38
- const src = resolveSkillSourceStrategy('single-collection')(cfg);
39
- const res = await src.acquire();
40
- assert.equal(res.collections.length, 1);
41
- assert.equal(res.collections[0].group, 'skills');
42
- });
43
- test('resolveSkillSourceStrategy throws on unknown, listing registered names', () => {
44
- assert.throws(() => resolveSkillSourceStrategy('nope'), (e) => {
45
- const msg = String(e);
46
- assert.match(msg, /nope/);
47
- assert.match(msg, /one-group-per-plugin/);
48
- assert.match(msg, /single-collection/);
49
- return true;
50
- });
51
- });
52
- //# sourceMappingURL=source-strategies.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-strategies.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/source-strategies.test.ts"],"names":[],"mappings":"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"}