@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,174 +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 { makeCompatibleSkillsRag } from './compatible-skills-rag.js';
5
- const MANIFEST = {
6
- embeddingSpaceId: 'sp',
7
- dimension: 3,
8
- retrievalSchemaVersion: 1,
9
- };
10
- function stubBackend(opts) {
11
- let queryCalls = 0;
12
- const released = [];
13
- return {
14
- backend: {
15
- activeSnapshot: opts.snapshot,
16
- release(rev) {
17
- released.push(rev);
18
- },
19
- async queryRevision() {
20
- queryCalls++;
21
- return (opts.hits ?? []);
22
- },
23
- },
24
- queryCalls: () => queryCalls,
25
- released: () => released,
26
- };
27
- }
28
- test('lease: release(revision) is called in the finally on every non-null path', async () => {
29
- // compatible path
30
- const ok = stubBackend({
31
- snapshot: async () => ({ revision: 'g0', manifest: MANIFEST }),
32
- hits: [],
33
- });
34
- const ragOk = makeCompatibleSkillsRag({
35
- backend: ok.backend,
36
- embedder: { embed: async () => ({ vector: [1, 0, 0] }) },
37
- embeddingSpaceId: 'sp',
38
- retrievalSchemaVersion: 1,
39
- dimension: 3,
40
- });
41
- await ragOk.query('q', { k: 1 });
42
- assert.deepEqual(ok.released(), ['g0']);
43
- // incompatible path (no query, still releases)
44
- const bad = stubBackend({
45
- snapshot: async () => ({
46
- revision: 'g1',
47
- manifest: { ...MANIFEST, embeddingSpaceId: 'X' },
48
- }),
49
- });
50
- const ragBad = makeCompatibleSkillsRag({
51
- backend: bad.backend,
52
- embedder: { embed: async () => ({ vector: [1, 0, 0] }) },
53
- embeddingSpaceId: 'sp',
54
- retrievalSchemaVersion: 1,
55
- dimension: 3,
56
- });
57
- await ragBad.query('q', { k: 1 });
58
- assert.deepEqual(bad.released(), ['g1']);
59
- });
60
- test('recallTimeoutMs: a query that outlives the deadline aborts → empty (no crash)', async () => {
61
- const backend = {
62
- activeSnapshot: async () => ({ revision: 'g0', manifest: MANIFEST }),
63
- release() { },
64
- async queryRevision(_r, _v, _k, options) {
65
- // simulate a slow backend that respects the abort signal
66
- return await new Promise((resolve, reject) => {
67
- const t = setTimeout(() => resolve([]), 1000);
68
- options?.signal?.addEventListener('abort', () => {
69
- clearTimeout(t);
70
- reject(Object.assign(new Error('aborted'), { name: 'AbortError' }));
71
- });
72
- });
73
- },
74
- };
75
- const rag = makeCompatibleSkillsRag({
76
- backend: backend,
77
- embedder: { embed: async () => ({ vector: [1, 0, 0] }) },
78
- embeddingSpaceId: 'sp',
79
- retrievalSchemaVersion: 1,
80
- dimension: 3,
81
- recallTimeoutMs: 20,
82
- });
83
- const hits = await rag.query('q', { k: 1 }); // resolves to [] when the 20ms deadline fires
84
- assert.deepEqual(hits, []);
85
- });
86
- test('compatible revision: embeds once, calls queryRevision', async () => {
87
- let embeds = 0;
88
- const sb = stubBackend({
89
- snapshot: async () => ({ revision: 'g0', manifest: MANIFEST }),
90
- hits: [{ record: { content: 'x' }, score: 0.9 }],
91
- });
92
- const rag = makeCompatibleSkillsRag({
93
- backend: sb.backend,
94
- embedder: {
95
- embed: async () => {
96
- embeds++;
97
- return { vector: [1, 0, 0] };
98
- },
99
- },
100
- embeddingSpaceId: 'sp',
101
- retrievalSchemaVersion: 1,
102
- dimension: 3,
103
- });
104
- const hits = await rag.query('q', { k: 1, threshold: 0 });
105
- assert.equal(hits.length, 1);
106
- assert.equal(embeds, 1);
107
- assert.equal(sb.queryCalls(), 1);
108
- });
109
- test('incompatible revision: query() degrades to empty (ZERO embeds), but activeManifest() THROWS', async () => {
110
- let embeds = 0;
111
- const sb = stubBackend({
112
- snapshot: async () => ({
113
- revision: 'g0',
114
- manifest: { ...MANIFEST, embeddingSpaceId: 'OTHER' },
115
- }),
116
- });
117
- const rag = makeCompatibleSkillsRag({
118
- backend: sb.backend,
119
- embedder: {
120
- embed: async () => {
121
- embeds++;
122
- return { vector: [1, 0, 0] };
123
- },
124
- },
125
- embeddingSpaceId: 'sp',
126
- retrievalSchemaVersion: 1,
127
- dimension: 3,
128
- });
129
- // RUNTIME query() degrades to []
130
- const hits = await rag.query('q', { k: 1 });
131
- assert.equal(hits.length, 0);
132
- assert.equal(embeds, 0); // embed skipped on incompatible
133
- // EAGER activeManifest() THROWS (so recall-only load()/healthCheck can fail-fast)
134
- await assert.rejects(() => rag.activeManifest(), (e) => e instanceof SkillsIncompatibleError);
135
- });
136
- test('null snapshot: ZERO embeds, empty', async () => {
137
- let embeds = 0;
138
- const sb = stubBackend({ snapshot: async () => null });
139
- const rag = makeCompatibleSkillsRag({
140
- backend: sb.backend,
141
- embedder: {
142
- embed: async () => {
143
- embeds++;
144
- return { vector: [1, 0, 0] };
145
- },
146
- },
147
- embeddingSpaceId: 'sp',
148
- retrievalSchemaVersion: 1,
149
- dimension: 3,
150
- });
151
- assert.equal((await rag.query('q', { k: 1 })).length, 0);
152
- assert.equal(embeds, 0);
153
- });
154
- test('lazy dimension probe: no embed at construction; first activeManifest probes once', async () => {
155
- let embeds = 0;
156
- const sb = stubBackend({
157
- snapshot: async () => ({ revision: 'g0', manifest: MANIFEST }),
158
- });
159
- const rag = makeCompatibleSkillsRag({
160
- backend: sb.backend,
161
- embedder: {
162
- embed: async () => {
163
- embeds++;
164
- return { vector: [1, 0, 0] };
165
- },
166
- },
167
- embeddingSpaceId: 'sp',
168
- retrievalSchemaVersion: 1, // dimension undeclared
169
- });
170
- assert.equal(embeds, 0); // construction did not embed
171
- await rag.activeManifest();
172
- assert.equal(embeds, 1); // one probe
173
- });
174
- //# sourceMappingURL=compatible-skills-rag.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compatible-skills-rag.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=http-marketplace-source.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-marketplace-source.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/http-marketplace-source.test.ts"],"names":[],"mappings":""}
@@ -1,71 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { makeHttpMarketplaceSource } from './http-marketplace-source.js';
4
- const SKILL_MD = `---\nname: s\ndescription: d\n---\n## H\nbody`;
5
- test('fetches manifest + SKILL.md via injected transport, builds ingest result, zero FS', async () => {
6
- const src = makeHttpMarketplaceSource({
7
- source: 'vendor',
8
- enabled: ['p1'],
9
- transport: {
10
- async listPlugins() {
11
- return [{ plugin: 'p1', version: '1', skills: ['s'] }];
12
- },
13
- async fetchSkillMd(plugin, skill) {
14
- assert.equal(plugin, 'p1');
15
- assert.equal(skill, 's');
16
- return SKILL_MD;
17
- },
18
- },
19
- chunk: { maxChars: 1000 },
20
- });
21
- const res = await src.acquire();
22
- assert.deepEqual(res.collections.map((c) => c.group), ['p1']);
23
- assert.ok(res.records.length >= 1);
24
- });
25
- test('enabled "*" loads every offered plugin; empty enabled is a caller error', async () => {
26
- const transport = {
27
- async listPlugins() {
28
- return [
29
- { plugin: 'a', version: '1', skills: ['s'] },
30
- { plugin: 'b', version: '1', skills: ['s'] },
31
- ];
32
- },
33
- async fetchSkillMd() {
34
- return SKILL_MD;
35
- },
36
- };
37
- const all = makeHttpMarketplaceSource({
38
- source: 'v',
39
- enabled: ['*'],
40
- transport,
41
- chunk: { maxChars: 1000 },
42
- });
43
- assert.equal((await all.acquire()).collections.length, 2);
44
- assert.throws(() => makeHttpMarketplaceSource({
45
- source: 'v',
46
- enabled: [],
47
- transport,
48
- chunk: { maxChars: 1000 },
49
- }), /enabled/);
50
- });
51
- test('only the enabled subset of offered plugins is acquired', async () => {
52
- const src = makeHttpMarketplaceSource({
53
- source: 'v',
54
- enabled: ['b'],
55
- transport: {
56
- async listPlugins() {
57
- return [
58
- { plugin: 'a', version: '1', skills: ['s'] },
59
- { plugin: 'b', version: '1', skills: ['s'] },
60
- ];
61
- },
62
- async fetchSkillMd() {
63
- return SKILL_MD;
64
- },
65
- },
66
- chunk: { maxChars: 1000 },
67
- });
68
- const res = await src.acquire();
69
- assert.deepEqual(res.collections.map((c) => c.group), ['b']);
70
- });
71
- //# sourceMappingURL=http-marketplace-source.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-marketplace-source.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/http-marketplace-source.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=in-memory-store.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-memory-store.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/in-memory-store.test.ts"],"names":[],"mappings":""}
@@ -1,100 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { CatalogCasError } from '@mcp-abap-adt/llm-agent';
4
- import { makeInMemoryStoreProvider } from './in-memory-store.js';
5
- const MANIFEST = {
6
- embeddingSpaceId: 'sp',
7
- dimension: 3,
8
- retrievalSchemaVersion: 1,
9
- };
10
- const rec = (id, group, vec) => ({
11
- record: {
12
- id,
13
- sourceId: 's',
14
- group,
15
- name: id,
16
- retrievalText: id,
17
- content: `c-${id}`,
18
- provenance: id,
19
- },
20
- vector: vec,
21
- });
22
- test('build inactive → publishCatalog activates → query + activeSnapshot from catalog', async () => {
23
- const p = makeInMemoryStoreProvider();
24
- const store = p.forGroup('g1');
25
- const { generation } = await store.beginGeneration();
26
- // upsert is embedding-agnostic here: the in-memory store accepts pre-vectorised rows via a test seam
27
- await p._seed(generation, [
28
- rec('a', 'g1', [1, 0, 0]),
29
- rec('b', 'g1', [0, 1, 0]),
30
- ]);
31
- // nothing serves yet
32
- assert.equal(await store.activeSnapshot(), null);
33
- const before = await p.readCatalog();
34
- await p.publishCatalog(before.catalogRevision, [
35
- {
36
- collection: { group: 'g1', description: 'd', collection: 'g1' },
37
- sources: ['s'],
38
- generation,
39
- manifest: MANIFEST,
40
- },
41
- ]);
42
- const snap = await store.activeSnapshot();
43
- assert.equal(snap?.revision, generation);
44
- assert.deepEqual(snap?.manifest, MANIFEST);
45
- const hits = await store.queryRevision(generation, [1, 0, 0], 1);
46
- assert.equal(hits[0].record.id, 'a');
47
- });
48
- test('publishCatalog CAS rejects a stale expectedRevision with CatalogCasError', async () => {
49
- const p = makeInMemoryStoreProvider();
50
- const r0 = (await p.readCatalog()).catalogRevision;
51
- await p.publishCatalog(r0, []); // bumps to r1
52
- await assert.rejects(() => p.publishCatalog(r0, []), (e) => e instanceof CatalogCasError);
53
- });
54
- test('EXACT retention via lease: a generation pinned by activeSnapshot survives a concurrent reclaim until release', async () => {
55
- const p = makeInMemoryStoreProvider();
56
- const backend = p.forGroup('g1');
57
- const g = await backend.beginGeneration();
58
- await p._seed(g.generation, [rec('a', 'g1', [1, 0, 0])]);
59
- await p.publishCatalog((await p.readCatalog()).catalogRevision, [
60
- {
61
- collection: { group: 'g1', description: 'd', collection: 'g1' },
62
- sources: ['s'],
63
- generation: g.generation,
64
- manifest: MANIFEST,
65
- },
66
- ]);
67
- // a reader resolves (PINS) the generation...
68
- const snap = await backend.activeSnapshot();
69
- // ...then the catalog rotates it out AND a reclaim is attempted (simulating a concurrent load)
70
- await p.publishCatalog((await p.readCatalog()).catalogRevision, []); // retire g1
71
- await p.forGroup('g1').discardGeneration(snap.revision); // reclaim attempt — DEFERRED (leased)
72
- // the in-flight reader's query STILL succeeds (no read-under-delete):
73
- assert.equal((await backend.queryRevision(snap.revision, [1, 0, 0], 1)).length, 1);
74
- // release the lease → the deferred reclaim now runs
75
- backend.release(snap.revision);
76
- await assert.rejects(() => backend.queryRevision(snap.revision, [1, 0, 0], 1), /unknown generation/i);
77
- });
78
- test('an ACTIVE generation is retained; dropCollection only reclaims a NON-active one', async () => {
79
- const p = makeInMemoryStoreProvider();
80
- const g = await p.forGroup('g1').beginGeneration();
81
- await p._seed(g.generation, [rec('a', 'g1', [1, 0, 0])]);
82
- const r0 = (await p.readCatalog()).catalogRevision;
83
- await p.publishCatalog(r0, [
84
- {
85
- collection: { group: 'g1', description: 'd', collection: 'g1' },
86
- sources: ['s'],
87
- generation: g.generation,
88
- manifest: MANIFEST,
89
- },
90
- ]);
91
- // dropCollection on an ACTIVE collection must NOT delete its served generation
92
- await p.dropCollection('g1');
93
- assert.equal((await p.forGroup('g1').queryRevision(g.generation, [1, 0, 0], 1)).length, 1);
94
- // now retire g1 from the catalog (publish WITHOUT it) → the generation becomes non-active
95
- const r1 = (await p.readCatalog()).catalogRevision;
96
- await p.publishCatalog(r1, []);
97
- await p.dropCollection('g1'); // reclaims the now-non-active generation
98
- await assert.rejects(() => p.forGroup('g1').queryRevision(g.generation, [1, 0, 0], 1), /unknown generation|not found/i);
99
- });
100
- //# sourceMappingURL=in-memory-store.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-memory-store.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/in-memory-store.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=marketplace-adapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace-adapter.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/marketplace-adapter.test.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { test } from 'node:test';
3
- import { buildIngestResult } from './marketplace-adapter.js';
4
- const SKILL_MD = `---\nname: do-thing\ndescription: How to do the thing\n---\n# Do Thing\n## Step\nrun it`;
5
- test('manifest + SKILL.md → records placed one-group-per-plugin + catalog', () => {
6
- const res = buildIngestResult({
7
- source: 'vendor',
8
- plugins: [
9
- {
10
- plugin: 'p1',
11
- version: '1',
12
- skills: [{ skill: 'do-thing', skillMd: SKILL_MD }],
13
- },
14
- ],
15
- chunk: { maxChars: 1000 },
16
- placement: (plugin) => ({ group: plugin, description: `plugin ${plugin}` }),
17
- });
18
- assert.deepEqual(res.collections.map((c) => c.group), ['p1']);
19
- assert.equal(res.collections[0].description, 'plugin p1');
20
- assert.ok(res.records.length >= 1);
21
- assert.ok(res.records.every((r) => r.group === 'p1'));
22
- const groups = new Set(res.collections.map((c) => c.group));
23
- assert.ok(res.records.every((r) => groups.has(r.group)));
24
- });
25
- test('a strategy may bundle plugins into one group', () => {
26
- const res = buildIngestResult({
27
- source: 'vendor',
28
- plugins: [
29
- {
30
- plugin: 'a',
31
- version: '1',
32
- skills: [{ skill: 's', skillMd: SKILL_MD }],
33
- },
34
- {
35
- plugin: 'b',
36
- version: '1',
37
- skills: [{ skill: 's', skillMd: SKILL_MD }],
38
- },
39
- ],
40
- chunk: { maxChars: 1000 },
41
- placement: () => ({ group: 'bundle', description: 'bundle' }),
42
- });
43
- assert.deepEqual(res.collections.map((c) => c.group), ['bundle']);
44
- assert.ok(res.records.every((r) => r.group === 'bundle'));
45
- });
46
- //# sourceMappingURL=marketplace-adapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace-adapter.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/marketplace-adapter.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=qdrant-store.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qdrant-store.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/qdrant-store.test.ts"],"names":[],"mappings":""}