@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.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/rag/knowledge-rag.d.ts +28 -8
- package/dist/rag/knowledge-rag.d.ts.map +1 -1
- package/dist/rag/knowledge-rag.js +42 -8
- package/dist/rag/knowledge-rag.js.map +1 -1
- package/dist/skills/plugin-host/chunker.d.ts +17 -0
- package/dist/skills/plugin-host/chunker.d.ts.map +1 -0
- package/dist/skills/plugin-host/chunker.js +72 -0
- package/dist/skills/plugin-host/chunker.js.map +1 -0
- package/dist/skills/plugin-host/chunker.test.d.ts +2 -0
- package/dist/skills/plugin-host/chunker.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/chunker.test.js +31 -0
- package/dist/skills/plugin-host/chunker.test.js.map +1 -0
- package/dist/skills/plugin-host/compatible-skills-rag.d.ts +14 -0
- package/dist/skills/plugin-host/compatible-skills-rag.d.ts.map +1 -0
- package/dist/skills/plugin-host/compatible-skills-rag.js +83 -0
- package/dist/skills/plugin-host/compatible-skills-rag.js.map +1 -0
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts +2 -0
- package/dist/skills/plugin-host/compatible-skills-rag.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/compatible-skills-rag.test.js +174 -0
- package/dist/skills/plugin-host/compatible-skills-rag.test.js.map +1 -0
- package/dist/skills/plugin-host/http-marketplace-source.d.ts +46 -0
- package/dist/skills/plugin-host/http-marketplace-source.d.ts.map +1 -0
- package/dist/skills/plugin-host/http-marketplace-source.js +67 -0
- package/dist/skills/plugin-host/http-marketplace-source.js.map +1 -0
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts +2 -0
- package/dist/skills/plugin-host/http-marketplace-source.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/http-marketplace-source.test.js +71 -0
- package/dist/skills/plugin-host/http-marketplace-source.test.js.map +1 -0
- package/dist/skills/plugin-host/in-memory-store.d.ts +15 -0
- package/dist/skills/plugin-host/in-memory-store.d.ts.map +1 -0
- package/dist/skills/plugin-host/in-memory-store.js +151 -0
- package/dist/skills/plugin-host/in-memory-store.js.map +1 -0
- package/dist/skills/plugin-host/in-memory-store.test.d.ts +2 -0
- package/dist/skills/plugin-host/in-memory-store.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/in-memory-store.test.js +100 -0
- package/dist/skills/plugin-host/in-memory-store.test.js.map +1 -0
- package/dist/skills/plugin-host/index.d.ts +10 -0
- package/dist/skills/plugin-host/index.d.ts.map +1 -0
- package/dist/skills/plugin-host/index.js +12 -0
- package/dist/skills/plugin-host/index.js.map +1 -0
- package/dist/skills/plugin-host/marketplace-adapter.d.ts +23 -0
- package/dist/skills/plugin-host/marketplace-adapter.d.ts.map +1 -0
- package/dist/skills/plugin-host/marketplace-adapter.js +32 -0
- package/dist/skills/plugin-host/marketplace-adapter.js.map +1 -0
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts +2 -0
- package/dist/skills/plugin-host/marketplace-adapter.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/marketplace-adapter.test.js +46 -0
- package/dist/skills/plugin-host/marketplace-adapter.test.js.map +1 -0
- package/dist/skills/plugin-host/qdrant-store.d.ts +85 -0
- package/dist/skills/plugin-host/qdrant-store.d.ts.map +1 -0
- package/dist/skills/plugin-host/qdrant-store.js +542 -0
- package/dist/skills/plugin-host/qdrant-store.js.map +1 -0
- package/dist/skills/plugin-host/qdrant-store.test.d.ts +2 -0
- package/dist/skills/plugin-host/qdrant-store.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/qdrant-store.test.js +396 -0
- package/dist/skills/plugin-host/qdrant-store.test.js.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.d.ts +41 -0
- package/dist/skills/plugin-host/skill-plugin-host.d.ts.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts +2 -0
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js +520 -0
- package/dist/skills/plugin-host/skill-plugin-host.ingest.test.js.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.js +367 -0
- package/dist/skills/plugin-host/skill-plugin-host.js.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts +2 -0
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js +328 -0
- package/dist/skills/plugin-host/skill-plugin-host.recall-and-reload.test.js.map +1 -0
- package/dist/skills/plugin-host/skills-rag-source.d.ts +17 -0
- package/dist/skills/plugin-host/skills-rag-source.d.ts.map +1 -0
- package/dist/skills/plugin-host/skills-rag-source.js +52 -0
- package/dist/skills/plugin-host/skills-rag-source.js.map +1 -0
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts +2 -0
- package/dist/skills/plugin-host/skills-rag-source.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/skills-rag-source.test.js +69 -0
- package/dist/skills/plugin-host/skills-rag-source.test.js.map +1 -0
- package/dist/skills/plugin-host/source-strategies.d.ts +20 -0
- package/dist/skills/plugin-host/source-strategies.d.ts.map +1 -0
- package/dist/skills/plugin-host/source-strategies.js +37 -0
- package/dist/skills/plugin-host/source-strategies.js.map +1 -0
- package/dist/skills/plugin-host/source-strategies.test.d.ts +2 -0
- package/dist/skills/plugin-host/source-strategies.test.d.ts.map +1 -0
- package/dist/skills/plugin-host/source-strategies.test.js +52 -0
- package/dist/skills/plugin-host/source-strategies.test.js.map +1 -0
- package/package.json +14 -14
package/dist/index.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export { DEFAULT_TOOL_SELECTION, ScoreThresholdToolSelection, TopKToolSelection,
|
|
|
29
29
|
export type { IPluginLoader, LoadedPlugins, PluginExports, } from './plugins/index.js';
|
|
30
30
|
export { emptyLoadedPlugins, FileSystemPluginLoader, type FileSystemPluginLoaderConfig, getDefaultPluginDirs, loadPlugins, mergePluginExports, } from './plugins/index.js';
|
|
31
31
|
export { DefaultModelResolver, type MakeLlmConfig, makeDefaultLlm, makeLlm, } from './providers.js';
|
|
32
|
-
export { InMemoryKnowledgeBackend, type KnowledgeBackend, KnowledgeRag, } from './rag/knowledge-rag.js';
|
|
32
|
+
export { InMemoryKnowledgeBackend, type KnowledgeBackend, KnowledgeRag, matches as matchesKnowledgeFilter, } from './rag/knowledge-rag.js';
|
|
33
33
|
export { LlmReranker } from './reranker/llm-reranker.js';
|
|
34
34
|
export { NoopReranker } from './reranker/noop-reranker.js';
|
|
35
35
|
export { RateLimiterLlm } from './resilience/rate-limiter-llm.js';
|
|
@@ -43,6 +43,7 @@ export { SessionManager } from './session/session-manager.js';
|
|
|
43
43
|
export type { SessionGraphSource, SessionRegistryOptions, } from './session/session-registry.js';
|
|
44
44
|
export { SessionRegistry } from './session/session-registry.js';
|
|
45
45
|
export { ClaudeSkillManager, CodexSkillManager, FileSystemSkillManager, } from './skills/index.js';
|
|
46
|
+
export * from './skills/plugin-host/index.js';
|
|
46
47
|
export { DefaultSubAgentContextBuilder, type DefaultSubAgentContextBuilderConfig, type SubAgentRetrievalSource, } from './subagent/default-context-builder.js';
|
|
47
48
|
export { DirectLlmSubAgent, type DirectLlmSubAgentOptions, } from './subagent/direct-llm-subagent.js';
|
|
48
49
|
export { SmartAgentSubAgent } from './subagent/smart-agent-subagent.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -63,7 +63,7 @@ export { emptyLoadedPlugins, FileSystemPluginLoader, getDefaultPluginDirs, loadP
|
|
|
63
63
|
// Providers (LLM)
|
|
64
64
|
// ---------------------------------------------------------------------------
|
|
65
65
|
export { DefaultModelResolver, makeDefaultLlm, makeLlm, } from './providers.js';
|
|
66
|
-
export { InMemoryKnowledgeBackend, KnowledgeRag, } from './rag/knowledge-rag.js';
|
|
66
|
+
export { InMemoryKnowledgeBackend, KnowledgeRag, matches as matchesKnowledgeFilter, } from './rag/knowledge-rag.js';
|
|
67
67
|
// ---------------------------------------------------------------------------
|
|
68
68
|
// Reranker
|
|
69
69
|
// ---------------------------------------------------------------------------
|
|
@@ -87,6 +87,7 @@ export { SessionRegistry } from './session/session-registry.js';
|
|
|
87
87
|
// Skills
|
|
88
88
|
// ---------------------------------------------------------------------------
|
|
89
89
|
export { ClaudeSkillManager, CodexSkillManager, FileSystemSkillManager, } from './skills/index.js';
|
|
90
|
+
export * from './skills/plugin-host/index.js';
|
|
90
91
|
export { DefaultSubAgentContextBuilder, } from './subagent/default-context-builder.js';
|
|
91
92
|
export { DirectLlmSubAgent, } from './subagent/direct-llm-subagent.js';
|
|
92
93
|
// ---------------------------------------------------------------------------
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAC9E,OAAO,EAGL,UAAU,GAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,UAAU,GAOX,MAAM,YAAY,CAAC;AACpB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,OAAO,EAGL,iBAAiB,GAGlB,MAAM,cAAc,CAAC;AACtB,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EACL,aAAa,GAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAC9E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAC9E,cAAc,gCAAgC,CAAC;AAC/C,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EACL,aAAa,GAEd,MAAM,4BAA4B,CAAC;AACpC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMpE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,cAAc,GACf,MAAM,oCAAoC,CAAC;AAC5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EAGL,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAC9E,OAAO,EAEL,2BAA2B,EAE3B,kBAAkB,EAElB,qBAAqB,EAErB,eAAe,EAEf,iBAAiB,EAGjB,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAM5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAC9E,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAEtB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,OAAO,EACL,oBAAoB,EAEpB,cAAc,EACd,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,wBAAwB,EAExB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IKnowledgeRagHandle, IToolsRagHandle, KnowledgeEntry, KnowledgeEntryMetadata, KnowledgeFilter, LlmTool } from '@mcp-abap-adt/llm-agent';
|
|
1
|
+
import type { CallOptions, IKnowledgeRagHandle, IToolsRagHandle, KnowledgeEntry, KnowledgeEntryMetadata, KnowledgeFilter, LlmTool } from '@mcp-abap-adt/llm-agent';
|
|
2
2
|
/**
|
|
3
3
|
* Persistence + retrieval port for the knowledge blackboard. The server
|
|
4
4
|
* wires a concrete backend (vector store for semantic query + a durable
|
|
@@ -7,10 +7,16 @@ import type { IKnowledgeRagHandle, IToolsRagHandle, KnowledgeEntry, KnowledgeEnt
|
|
|
7
7
|
*/
|
|
8
8
|
export interface KnowledgeBackend {
|
|
9
9
|
/** Durably store the full entry (content + metadata) AND index its
|
|
10
|
-
* content for semantic query. Keyed by sessionId for isolation.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
* content for semantic query. Keyed by sessionId for isolation.
|
|
11
|
+
* `options` is forwarded to the embedder so write-time upsert embeds are
|
|
12
|
+
* metered via `options.requestLogger`. */
|
|
13
|
+
put(sessionId: string, entry: KnowledgeEntry, options?: CallOptions): Promise<void>;
|
|
14
|
+
/** Semantic similarity search within a session, relevance-capped by k. When
|
|
15
|
+
* `filter` is given it MUST be applied to the candidate set BEFORE the K cap
|
|
16
|
+
* (so a runId filter is never starved by other runs' artifacts crowding the
|
|
17
|
+
* cap), preserving the backend's native ranking. `options` is forwarded to
|
|
18
|
+
* the embedder so recall-time embeds are metered via `options.requestLogger`. */
|
|
19
|
+
semanticQuery(sessionId: string, text: string, k?: number, filter?: KnowledgeFilter, options?: CallOptions): Promise<readonly KnowledgeEntry[]>;
|
|
14
20
|
/** Exhaustive durable scan of ALL entries for a session (no relevance
|
|
15
21
|
* cap). Used by list() and by rehydrate. */
|
|
16
22
|
scan(sessionId: string): Promise<readonly KnowledgeEntry[]>;
|
|
@@ -18,6 +24,9 @@ export interface KnowledgeBackend {
|
|
|
18
24
|
* rehydrate stale knowledge. Backs DELETE /v1/sessions/:id — without it a
|
|
19
25
|
* long-lived in-memory backend would retain entries after a session delete. */
|
|
20
26
|
deleteSession(sessionId: string): Promise<void>;
|
|
27
|
+
/** True iff the backend supports embedding-based semantic recall (an index is
|
|
28
|
+
* attached). The controller asserts this before wiring run-scoped recall. */
|
|
29
|
+
readonly semanticRecallCapable?: boolean;
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
32
|
* Per-session blackboard. write() → backend.put (durable + indexed).
|
|
@@ -38,10 +47,11 @@ export declare class KnowledgeRag implements IKnowledgeRagHandle {
|
|
|
38
47
|
write(entry: {
|
|
39
48
|
content: string;
|
|
40
49
|
metadata: KnowledgeEntryMetadata;
|
|
41
|
-
}): Promise<void>;
|
|
50
|
+
}, options?: CallOptions): Promise<void>;
|
|
42
51
|
query(text: string, opts?: {
|
|
43
52
|
k?: number;
|
|
44
53
|
filter?: KnowledgeFilter;
|
|
54
|
+
options?: CallOptions;
|
|
45
55
|
}): Promise<readonly KnowledgeEntry[]>;
|
|
46
56
|
list(filter: KnowledgeFilter): Promise<readonly KnowledgeEntry[]>;
|
|
47
57
|
fingerprint(): string;
|
|
@@ -61,17 +71,27 @@ export declare class KnowledgeRag implements IKnowledgeRagHandle {
|
|
|
61
71
|
* re-fetched/updated artefact supersedes an earlier one. Undefined if absent. */
|
|
62
72
|
getArtifact(identityKey: string): Promise<string | undefined>;
|
|
63
73
|
}
|
|
74
|
+
export declare function matches(m: KnowledgeEntryMetadata, f: KnowledgeFilter): boolean;
|
|
64
75
|
/** Default in-memory backend — no persistence across process restart, used
|
|
65
76
|
* for stateless deployments and tests. (The "RESUME" test reuses the same
|
|
66
77
|
* instance to simulate a durable backend; a true persistent backend ships
|
|
67
78
|
* in the server package, see Task 13 note.) */
|
|
68
79
|
export declare class InMemoryKnowledgeBackend implements KnowledgeBackend {
|
|
80
|
+
private readonly semantic?;
|
|
69
81
|
private readonly bySession;
|
|
82
|
+
/** Optional embedder-backed index; when present, semanticQuery delegates to it
|
|
83
|
+
* (real ranking) — else filter + insertion order (pure unit tests). */
|
|
84
|
+
constructor(semantic?: {
|
|
85
|
+
upsert(sid: string, e: KnowledgeEntry, options?: CallOptions): Promise<void>;
|
|
86
|
+
query(sid: string, text: string, k?: number, filter?: KnowledgeFilter, options?: CallOptions): Promise<readonly KnowledgeEntry[]>;
|
|
87
|
+
deleteSession(sid: string): void;
|
|
88
|
+
} | undefined);
|
|
70
89
|
private of;
|
|
71
|
-
put(sid: string, entry: KnowledgeEntry): Promise<void>;
|
|
72
|
-
semanticQuery(sid: string,
|
|
90
|
+
put(sid: string, entry: KnowledgeEntry, options?: CallOptions): Promise<void>;
|
|
91
|
+
semanticQuery(sid: string, text: string, k?: number, filter?: KnowledgeFilter, options?: CallOptions): Promise<readonly KnowledgeEntry[]>;
|
|
73
92
|
scan(sid: string): Promise<KnowledgeEntry[]>;
|
|
74
93
|
deleteSession(sid: string): Promise<void>;
|
|
94
|
+
get semanticRecallCapable(): boolean;
|
|
75
95
|
}
|
|
76
96
|
/**
|
|
77
97
|
* Thin wrapper around a tools store (query + lookup). Adapts the store's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-rag.d.ts","sourceRoot":"","sources":["../../src/rag/knowledge-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,OAAO,EACR,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;
|
|
1
|
+
{"version":3,"file":"knowledge-rag.d.ts","sourceRoot":"","sources":["../../src/rag/knowledge-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,16 +19,19 @@ export class KnowledgeRag {
|
|
|
19
19
|
async init() {
|
|
20
20
|
this.mirror = [...(await this.backend.scan(this.sessionId))];
|
|
21
21
|
}
|
|
22
|
-
async write(entry) {
|
|
22
|
+
async write(entry, options) {
|
|
23
23
|
const full = {
|
|
24
24
|
content: entry.content,
|
|
25
25
|
metadata: entry.metadata,
|
|
26
26
|
};
|
|
27
|
-
await this.backend.put(this.sessionId, full);
|
|
27
|
+
await this.backend.put(this.sessionId, full, options);
|
|
28
28
|
this.mirror.push(full);
|
|
29
29
|
}
|
|
30
30
|
async query(text, opts) {
|
|
31
|
-
|
|
31
|
+
// Pass the filter AND options INTO semanticQuery so the backend applies the
|
|
32
|
+
// filter PRE-cap (preserving its native ranking) and the embedder receives
|
|
33
|
+
// options (for requestLogger metering); a defensive post-filter is harmless.
|
|
34
|
+
const hits = await this.backend.semanticQuery(this.sessionId, text, opts?.k, opts?.filter, opts?.options);
|
|
32
35
|
const filter = opts?.filter;
|
|
33
36
|
if (!filter)
|
|
34
37
|
return hits;
|
|
@@ -96,7 +99,7 @@ export class KnowledgeRag {
|
|
|
96
99
|
return findLast(source);
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
|
-
function matches(m, f) {
|
|
102
|
+
export function matches(m, f) {
|
|
100
103
|
if (f.traceId && m.traceId !== f.traceId)
|
|
101
104
|
return false;
|
|
102
105
|
if (f.turnId && m.turnId !== f.turnId)
|
|
@@ -114,6 +117,22 @@ function matches(m, f) {
|
|
|
114
117
|
if (!set.includes(m.artifactType))
|
|
115
118
|
return false;
|
|
116
119
|
}
|
|
120
|
+
if (f.runId !== undefined && m.runId !== f.runId)
|
|
121
|
+
return false;
|
|
122
|
+
if (f.seq !== undefined && m.seq !== f.seq)
|
|
123
|
+
return false;
|
|
124
|
+
if (f.attempt !== undefined && m.attempt !== f.attempt)
|
|
125
|
+
return false;
|
|
126
|
+
if (f.status !== undefined && m.status !== f.status)
|
|
127
|
+
return false;
|
|
128
|
+
if (f.stepId !== undefined && m.stepId !== f.stepId)
|
|
129
|
+
return false;
|
|
130
|
+
if (f.decisionId !== undefined && m.decisionId !== f.decisionId)
|
|
131
|
+
return false;
|
|
132
|
+
if (f.slotId !== undefined && m.slotId !== f.slotId)
|
|
133
|
+
return false;
|
|
134
|
+
if (f.kind !== undefined && m.kind !== f.kind)
|
|
135
|
+
return false;
|
|
117
136
|
return true;
|
|
118
137
|
}
|
|
119
138
|
/** Default in-memory backend — no persistence across process restart, used
|
|
@@ -121,7 +140,13 @@ function matches(m, f) {
|
|
|
121
140
|
* instance to simulate a durable backend; a true persistent backend ships
|
|
122
141
|
* in the server package, see Task 13 note.) */
|
|
123
142
|
export class InMemoryKnowledgeBackend {
|
|
143
|
+
semantic;
|
|
124
144
|
bySession = new Map();
|
|
145
|
+
/** Optional embedder-backed index; when present, semanticQuery delegates to it
|
|
146
|
+
* (real ranking) — else filter + insertion order (pure unit tests). */
|
|
147
|
+
constructor(semantic) {
|
|
148
|
+
this.semantic = semantic;
|
|
149
|
+
}
|
|
125
150
|
of(sid) {
|
|
126
151
|
let a = this.bySession.get(sid);
|
|
127
152
|
if (!a) {
|
|
@@ -130,11 +155,16 @@ export class InMemoryKnowledgeBackend {
|
|
|
130
155
|
}
|
|
131
156
|
return a;
|
|
132
157
|
}
|
|
133
|
-
async put(sid, entry) {
|
|
158
|
+
async put(sid, entry, options) {
|
|
134
159
|
this.of(sid).push(entry);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
160
|
+
await this.semantic?.upsert(sid, entry, options);
|
|
161
|
+
}
|
|
162
|
+
async semanticQuery(sid, text, k, filter, options) {
|
|
163
|
+
if (this.semantic)
|
|
164
|
+
return this.semantic.query(sid, text, k, filter, options);
|
|
165
|
+
let a = this.of(sid);
|
|
166
|
+
if (filter)
|
|
167
|
+
a = a.filter((e) => matches(e.metadata, filter));
|
|
138
168
|
return k ? a.slice(0, k) : a.slice();
|
|
139
169
|
}
|
|
140
170
|
async scan(sid) {
|
|
@@ -142,6 +172,10 @@ export class InMemoryKnowledgeBackend {
|
|
|
142
172
|
}
|
|
143
173
|
async deleteSession(sid) {
|
|
144
174
|
this.bySession.delete(sid);
|
|
175
|
+
this.semantic?.deleteSession(sid);
|
|
176
|
+
}
|
|
177
|
+
get semanticRecallCapable() {
|
|
178
|
+
return this.semantic !== undefined;
|
|
145
179
|
}
|
|
146
180
|
}
|
|
147
181
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-rag.js","sourceRoot":"","sources":["../../src/rag/knowledge-rag.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"knowledge-rag.js","sourceRoot":"","sources":["../../src/rag/knowledge-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SkillRecord } from '@mcp-abap-adt/llm-agent';
|
|
2
|
+
export interface SkillIdentity {
|
|
3
|
+
source: string;
|
|
4
|
+
plugin: string;
|
|
5
|
+
version: string;
|
|
6
|
+
skill: string;
|
|
7
|
+
group: string;
|
|
8
|
+
description: string;
|
|
9
|
+
body: string;
|
|
10
|
+
}
|
|
11
|
+
/** Split a skill body into bounded chunks by top-level H2; over-long sections split on blank
|
|
12
|
+
* lines, bounded to maxChars. Each chunk → a SkillRecord with a deterministic id and a
|
|
13
|
+
* DISTINCT retrievalText (description + heading + chunk content). FS-free, pure. */
|
|
14
|
+
export declare function chunkSkill(s: SkillIdentity, opts: {
|
|
15
|
+
maxChars: number;
|
|
16
|
+
}): SkillRecord[];
|
|
17
|
+
//# sourceMappingURL=chunker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;qFAEqF;AACrF,wBAAgB,UAAU,CACxB,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzB,WAAW,EAAE,CAqBf"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Split a skill body into bounded chunks by top-level H2; over-long sections split on blank
|
|
2
|
+
* lines, bounded to maxChars. Each chunk → a SkillRecord with a deterministic id and a
|
|
3
|
+
* DISTINCT retrievalText (description + heading + chunk content). FS-free, pure. */
|
|
4
|
+
export function chunkSkill(s, opts) {
|
|
5
|
+
const sections = splitByH2(s.body);
|
|
6
|
+
const out = [];
|
|
7
|
+
let ix = 0;
|
|
8
|
+
for (const sec of sections) {
|
|
9
|
+
for (const piece of boundSection(sec.content, opts.maxChars)) {
|
|
10
|
+
out.push({
|
|
11
|
+
id: `${s.source}:${s.plugin}@${s.version}/${s.skill}#${ix}`,
|
|
12
|
+
sourceId: s.source,
|
|
13
|
+
group: s.group,
|
|
14
|
+
name: sec.heading
|
|
15
|
+
? `${s.plugin}/${s.skill}#${sec.heading}`
|
|
16
|
+
: `${s.plugin}/${s.skill}`,
|
|
17
|
+
retrievalText: `${s.description}\n## ${sec.heading ?? s.skill}\n${piece}`,
|
|
18
|
+
content: piece,
|
|
19
|
+
provenance: `${s.plugin}@${s.version}/${s.skill}#${sec.heading ?? ''}`,
|
|
20
|
+
});
|
|
21
|
+
ix++;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
function splitByH2(body) {
|
|
27
|
+
const lines = body.split('\n');
|
|
28
|
+
const out = [];
|
|
29
|
+
let cur = null;
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
const m = /^##\s+(.*)$/.exec(line);
|
|
32
|
+
if (m) {
|
|
33
|
+
if (cur)
|
|
34
|
+
out.push(cur);
|
|
35
|
+
cur = { heading: m[1].trim(), content: '' };
|
|
36
|
+
}
|
|
37
|
+
else if (line.startsWith('# ')) {
|
|
38
|
+
if (!cur)
|
|
39
|
+
cur = { content: '' }; // top-level title → preamble section
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (!cur)
|
|
43
|
+
cur = { content: '' };
|
|
44
|
+
cur.content += (cur.content ? '\n' : '') + line;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (cur)
|
|
48
|
+
out.push(cur);
|
|
49
|
+
return out.filter((sec) => sec.content.trim().length > 0 || sec.heading);
|
|
50
|
+
}
|
|
51
|
+
function boundSection(content, maxChars) {
|
|
52
|
+
if (content.length <= maxChars)
|
|
53
|
+
return [content];
|
|
54
|
+
const paras = content.split(/\n\s*\n/);
|
|
55
|
+
const out = [];
|
|
56
|
+
let buf = '';
|
|
57
|
+
for (const p of paras) {
|
|
58
|
+
if (`${buf}\n\n${p}`.length > maxChars && buf) {
|
|
59
|
+
out.push(buf);
|
|
60
|
+
buf = p;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
buf = buf ? `${buf}\n\n${p}` : p;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (buf)
|
|
67
|
+
out.push(buf);
|
|
68
|
+
return out.flatMap((sec) => sec.length <= maxChars
|
|
69
|
+
? [sec]
|
|
70
|
+
: (sec.match(new RegExp(`[\\s\\S]{1,${maxChars}}`, 'g')) ?? [sec]));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=chunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/chunker.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { test } from 'node:test';
|
|
3
|
+
import { chunkSkill } from './chunker.js';
|
|
4
|
+
const ID = { source: 's', plugin: 'p', version: '1', skill: 'sk', group: 'g' };
|
|
5
|
+
test('splits by H2 and produces DISTINCT retrievalText per chunk', () => {
|
|
6
|
+
const body = '## Alpha\naaa\n## Beta\nbbb'; // starts at first H2 (no preamble) → exactly two chunks
|
|
7
|
+
const recs = chunkSkill({ ...ID, description: 'D', body }, { maxChars: 1000 });
|
|
8
|
+
assert.equal(recs.length, 2);
|
|
9
|
+
assert.notEqual(recs[0].retrievalText, recs[1].retrievalText);
|
|
10
|
+
assert.match(recs[0].retrievalText, /D/); // description present
|
|
11
|
+
assert.match(recs[0].retrievalText, /Alpha/); // heading present
|
|
12
|
+
assert.equal(recs[0].id, 's:p@1/sk#0');
|
|
13
|
+
assert.equal(recs[1].id, 's:p@1/sk#1');
|
|
14
|
+
assert.equal(recs[0].group, 'g');
|
|
15
|
+
assert.equal(recs[0].sourceId, 's');
|
|
16
|
+
});
|
|
17
|
+
test('content BEFORE the first H2 (preamble) becomes its own leading chunk', () => {
|
|
18
|
+
const body = '# Title\nintro text\n## Alpha\naaa';
|
|
19
|
+
const recs = chunkSkill({ ...ID, description: 'D', body }, { maxChars: 1000 });
|
|
20
|
+
assert.equal(recs.length, 2); // [preamble "intro text", "Alpha"]
|
|
21
|
+
assert.match(recs[0].content, /intro text/);
|
|
22
|
+
assert.match(recs[1].retrievalText, /Alpha/);
|
|
23
|
+
});
|
|
24
|
+
test('over-long section splits further; ids stay deterministic', () => {
|
|
25
|
+
const body = `## Big\n${'x'.repeat(50)}\n\n${'y'.repeat(50)}`;
|
|
26
|
+
const recs = chunkSkill({ ...ID, description: 'D', body }, { maxChars: 60 });
|
|
27
|
+
assert.ok(recs.length >= 2);
|
|
28
|
+
const again = chunkSkill({ ...ID, description: 'D', body }, { maxChars: 60 });
|
|
29
|
+
assert.deepEqual(recs.map((r) => r.id), again.map((r) => r.id));
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=chunker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.test.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/chunker.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IEmbedder, ISkillsRagBackend, ISkillsRagHandle } from '@mcp-abap-adt/llm-agent';
|
|
2
|
+
export interface CompatibleSkillsRagDeps {
|
|
3
|
+
backend: ISkillsRagBackend;
|
|
4
|
+
embedder: IEmbedder;
|
|
5
|
+
embeddingSpaceId: string;
|
|
6
|
+
retrievalSchemaVersion: number;
|
|
7
|
+
dimension?: number;
|
|
8
|
+
/** Best-effort time-grace bound (P1.4): cap the vector read with a deadline AbortSignal so
|
|
9
|
+
* a query cannot outlive the backend's retention grace. Set `< retiredGraceMs` for a
|
|
10
|
+
* time-grace (Qdrant) backend; omit for the exact-lease (in-memory) backend. */
|
|
11
|
+
recallTimeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function makeCompatibleSkillsRag(deps: CompatibleSkillsRagDeps): ISkillsRagHandle;
|
|
14
|
+
//# sourceMappingURL=compatible-skills-rag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatible-skills-rag.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;qFAEiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,uBAAuB,GAC5B,gBAAgB,CA4FlB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { SkillsIncompatibleError } from '@mcp-abap-adt/llm-agent'; // value (class)
|
|
2
|
+
export function makeCompatibleSkillsRag(deps) {
|
|
3
|
+
let dimension = deps.dimension;
|
|
4
|
+
const verdictByRevision = new Map();
|
|
5
|
+
const descriptor = () => ({
|
|
6
|
+
embeddingSpaceId: deps.embeddingSpaceId,
|
|
7
|
+
dimension: dimension,
|
|
8
|
+
retrievalSchemaVersion: deps.retrievalSchemaVersion,
|
|
9
|
+
});
|
|
10
|
+
async function ensureDimension(options) {
|
|
11
|
+
if (dimension === undefined) {
|
|
12
|
+
const probe = await deps.embedder.embed('dimension probe', options);
|
|
13
|
+
dimension = probe.vector.length;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function compatible(snap) {
|
|
17
|
+
const cached = verdictByRevision.get(snap.revision);
|
|
18
|
+
if (cached !== undefined)
|
|
19
|
+
return cached;
|
|
20
|
+
const d = descriptor();
|
|
21
|
+
const ok = snap.manifest.embeddingSpaceId === d.embeddingSpaceId &&
|
|
22
|
+
snap.manifest.dimension === d.dimension &&
|
|
23
|
+
snap.manifest.retrievalSchemaVersion === d.retrievalSchemaVersion;
|
|
24
|
+
verdictByRevision.set(snap.revision, ok);
|
|
25
|
+
if (!ok) {
|
|
26
|
+
// loud signal; serving never blocks on this — recall just degrades to empty.
|
|
27
|
+
console.error(`[skills] incompatible generation ${snap.revision}: serving descriptor ${JSON.stringify(d)} != manifest ${JSON.stringify(snap.manifest)}`);
|
|
28
|
+
}
|
|
29
|
+
return ok;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
async activeManifest(options) {
|
|
33
|
+
// EAGER fail-fast (startup + healthCheck): THROW on incompatibility (P1.3) so a
|
|
34
|
+
// recall-only load() can actually abort and healthCheck() reports the fault. Only
|
|
35
|
+
// the RUNTIME query() degrades to [] on incompatibility.
|
|
36
|
+
await ensureDimension(options);
|
|
37
|
+
const snap = await deps.backend.activeSnapshot(); // pins if non-null
|
|
38
|
+
try {
|
|
39
|
+
if (snap && !compatible(snap)) {
|
|
40
|
+
throw new SkillsIncompatibleError(`serving descriptor != active manifest for generation ${snap.revision}`);
|
|
41
|
+
}
|
|
42
|
+
return snap; // null (no active generation) is OK — empty recall, no abort
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
if (snap)
|
|
46
|
+
deps.backend.release?.(snap.revision);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
async query(text, opts, options) {
|
|
50
|
+
await ensureDimension(options);
|
|
51
|
+
const snap = await deps.backend.activeSnapshot(); // ONCE — pins the generation (lease)
|
|
52
|
+
if (!snap)
|
|
53
|
+
return [];
|
|
54
|
+
try {
|
|
55
|
+
if (!compatible(snap))
|
|
56
|
+
return []; // no embed on incompatible
|
|
57
|
+
const { vector } = await deps.embedder.embed(text, options); // PAID step, last
|
|
58
|
+
// Bound the vector read with a DEADLINE so it cannot outlive a time-grace backend's
|
|
59
|
+
// retention window (P1.4). For the exact-lease backend recallTimeoutMs is omitted.
|
|
60
|
+
const sigs = [
|
|
61
|
+
options?.signal,
|
|
62
|
+
deps.recallTimeoutMs
|
|
63
|
+
? AbortSignal.timeout(deps.recallTimeoutMs)
|
|
64
|
+
: undefined,
|
|
65
|
+
].filter(Boolean);
|
|
66
|
+
const signal = sigs.length ? AbortSignal.any(sigs) : undefined;
|
|
67
|
+
const hits = await deps.backend.queryRevision(snap.revision, vector, opts.k, { ...options, signal });
|
|
68
|
+
const threshold = opts.threshold ?? 0.3;
|
|
69
|
+
return hits.filter((h) => h.score >= threshold);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
const n = e?.name;
|
|
73
|
+
if (n === 'AbortError' || n === 'TimeoutError')
|
|
74
|
+
return []; // deadline hit → empty, no crash
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
deps.backend.release?.(snap.revision); // EXACT retention: release the lease
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=compatible-skills-rag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatible-skills-rag.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatible-skills-rag.test.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.test.ts"],"names":[],"mappings":""}
|