@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.
- package/README.md +11 -14
- package/dist/agent.d.ts +2 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +6 -5
- package/dist/agent.js.map +1 -1
- package/dist/builder.d.ts +36 -14
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +472 -348
- package/dist/builder.js.map +1 -1
- package/dist/config/config-watcher.d.ts.map +1 -1
- package/dist/config/config-watcher.js +9 -5
- package/dist/config/config-watcher.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/vectorize-mcp-tools.d.ts.map +1 -1
- package/dist/mcp/vectorize-mcp-tools.js +21 -2
- package/dist/mcp/vectorize-mcp-tools.js.map +1 -1
- package/dist/pipeline/handlers/history-upsert.d.ts.map +1 -1
- package/dist/pipeline/handlers/history-upsert.js +8 -1
- package/dist/pipeline/handlers/history-upsert.js.map +1 -1
- package/dist/pipeline/handlers/rag-query.d.ts +1 -1
- package/dist/pipeline/handlers/rag-query.d.ts.map +1 -1
- package/dist/pipeline/handlers/rag-query.js +10 -2
- package/dist/pipeline/handlers/rag-query.js.map +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/types.d.ts +7 -0
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/plugins/types.js +85 -14
- package/dist/plugins/types.js.map +1 -1
- package/dist/session/session-graph-factory.d.ts +49 -16
- package/dist/session/session-graph-factory.d.ts.map +1 -1
- package/dist/session/session-graph-factory.js +140 -62
- package/dist/session/session-graph-factory.js.map +1 -1
- package/dist/skills/plugin-host/qdrant-store.d.ts +6 -1
- package/dist/skills/plugin-host/qdrant-store.d.ts.map +1 -1
- package/dist/skills/plugin-host/qdrant-store.js +7 -7
- package/dist/skills/plugin-host/qdrant-store.js.map +1 -1
- package/dist/util/stop-all.d.ts +19 -0
- package/dist/util/stop-all.d.ts.map +1 -0
- package/dist/util/stop-all.js +30 -0
- package/dist/util/stop-all.js.map +1 -0
- package/package.json +10 -38
- package/dist/coordinator/dag/reviewer-error-strategy.d.ts +0 -15
- package/dist/coordinator/dag/reviewer-error-strategy.d.ts.map +0 -1
- package/dist/coordinator/dag/reviewer-error-strategy.js +0 -38
- package/dist/coordinator/dag/reviewer-error-strategy.js.map +0 -1
- package/dist/providers.d.ts +0 -58
- package/dist/providers.d.ts.map +0 -1
- package/dist/providers.js +0 -225
- package/dist/providers.js.map +0 -1
- package/dist/skills/plugin-host/chunker.test.d.ts +0 -2
- package/dist/skills/plugin-host/chunker.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/chunker.test.js +0 -31
- package/dist/skills/plugin-host/chunker.test.js.map +0 -1
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts +0 -2
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/compatible-skills-rag.test.js +0 -174
- package/dist/skills/plugin-host/compatible-skills-rag.test.js.map +0 -1
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts +0 -2
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/http-marketplace-source.test.js +0 -71
- package/dist/skills/plugin-host/http-marketplace-source.test.js.map +0 -1
- package/dist/skills/plugin-host/in-memory-store.test.d.ts +0 -2
- package/dist/skills/plugin-host/in-memory-store.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/in-memory-store.test.js +0 -100
- package/dist/skills/plugin-host/in-memory-store.test.js.map +0 -1
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts +0 -2
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/marketplace-adapter.test.js +0 -46
- package/dist/skills/plugin-host/marketplace-adapter.test.js.map +0 -1
- package/dist/skills/plugin-host/qdrant-store.test.d.ts +0 -2
- package/dist/skills/plugin-host/qdrant-store.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/qdrant-store.test.js +0 -396
- package/dist/skills/plugin-host/qdrant-store.test.js.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts +0 -2
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js +0 -520
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts +0 -2
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js +0 -328
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js.map +0 -1
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts +0 -2
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/skills-rag-source.test.js +0 -69
- package/dist/skills/plugin-host/skills-rag-source.test.js.map +0 -1
- package/dist/skills/plugin-host/source-strategies.test.d.ts +0 -2
- package/dist/skills/plugin-host/source-strategies.test.d.ts.map +0 -1
- package/dist/skills/plugin-host/source-strategies.test.js +0 -52
- package/dist/skills/plugin-host/source-strategies.test.js.map +0 -1
|
@@ -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 +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 +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":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,QAAQ,GAAG;IACf,gBAAgB,EAAE,IAAI;IACtB,SAAS,EAAE,CAAC;IACZ,sBAAsB,EAAE,CAAC;CAC1B,CAAC;AACF,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,GAAa,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE;QACN,EAAE;QACF,QAAQ,EAAE,GAAG;QACb,KAAK;QACL,IAAI,EAAE,EAAE;QACR,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;KACf;IACD,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;IACjG,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;IACrD,qGAAqG;IACrG,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;QACxB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IACH,qBAAqB;IACrB,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE;QAC7C;YACE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;YAC/D,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU;YACV,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;IAC1F,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;IACtC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC;IACnD,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc;IAC9C,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,eAAe,CACpC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8GAA8G,EAAE,KAAK,IAAI,EAAE;IAC9H,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;IAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE;QAC9D;YACE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;YAC/D,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;IACH,6CAA6C;IAC7C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;IAC5C,+FAA+F;IAC/F,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY;IACjF,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,sCAAsC;IAChG,sEAAsE;IACtE,MAAM,CAAC,KAAK,CACV,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,IAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAClE,CAAC,CACF,CAAC;IACF,oDAAoD;IACpD,OAAO,CAAC,OAAQ,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACzD,qBAAqB,CACtB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;IACjG,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACnD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC;IACnD,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE;QACzB;YACE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;YAC/D,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;IACH,+EAA+E;IAC/E,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,CACV,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EACzE,CAAC,CACF,CAAC;IACF,0FAA0F;IAC1F,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC;IACnD,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;IACvE,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAChE,+BAA+B,CAChC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant-store.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/qdrant-store.test.ts"],"names":[],"mappings":""}
|