@mcp-abap-adt/llm-agent 25.0.0 → 27.0.1
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 +2 -0
- package/dist/credentials/static.d.ts +9 -0
- package/dist/credentials/static.d.ts.map +1 -0
- package/dist/credentials/static.js +12 -0
- package/dist/credentials/static.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/builder.d.ts +11 -1
- package/dist/interfaces/builder.d.ts.map +1 -1
- package/dist/interfaces/collect-server-descriptors.d.ts +12 -0
- package/dist/interfaces/collect-server-descriptors.d.ts.map +1 -0
- package/dist/interfaces/collect-server-descriptors.js +19 -0
- package/dist/interfaces/collect-server-descriptors.js.map +1 -0
- package/dist/interfaces/index.d.ts +3 -2
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/mcp-connection-strategy.d.ts +29 -2
- package/dist/interfaces/mcp-connection-strategy.d.ts.map +1 -1
- package/dist/interfaces/mcp-server-from-factory.d.ts +15 -0
- package/dist/interfaces/mcp-server-from-factory.d.ts.map +1 -0
- package/dist/interfaces/mcp-server-from-factory.js +37 -0
- package/dist/interfaces/mcp-server-from-factory.js.map +1 -0
- package/dist/interfaces/mcp-server.d.ts +24 -0
- package/dist/interfaces/mcp-server.d.ts.map +1 -0
- package/dist/interfaces/mcp-server.js +2 -0
- package/dist/interfaces/mcp-server.js.map +1 -0
- package/dist/interfaces/pipeline-plugin.d.ts +16 -6
- package/dist/interfaces/pipeline-plugin.d.ts.map +1 -1
- package/dist/interfaces/plugin.d.ts +11 -3
- package/dist/interfaces/plugin.d.ts.map +1 -1
- package/dist/interfaces/rag.d.ts +133 -23
- package/dist/interfaces/rag.d.ts.map +1 -1
- package/dist/interfaces/rag.js.map +1 -1
- package/dist/interfaces/tool-catalog.d.ts +4 -2
- package/dist/interfaces/tool-catalog.d.ts.map +1 -1
- package/dist/interfaces/tool-catalog.js.map +1 -1
- package/dist/interfaces/types.d.ts +2 -1
- package/dist/interfaces/types.d.ts.map +1 -1
- package/dist/interfaces/types.js.map +1 -1
- package/dist/llm/base-llm-provider.d.ts +29 -4
- package/dist/llm/base-llm-provider.d.ts.map +1 -1
- package/dist/llm/base-llm-provider.js +45 -9
- package/dist/llm/base-llm-provider.js.map +1 -1
- package/dist/logger/normalise-logger.d.ts +28 -0
- package/dist/logger/normalise-logger.d.ts.map +1 -0
- package/dist/logger/normalise-logger.js +50 -0
- package/dist/logger/normalise-logger.js.map +1 -0
- package/dist/logger/text-logger.d.ts +14 -0
- package/dist/logger/text-logger.d.ts.map +1 -0
- package/dist/logger/text-logger.js +2 -0
- package/dist/logger/text-logger.js.map +1 -0
- package/dist/policy/fallback-llm-call-strategy.d.ts +3 -3
- package/dist/policy/fallback-llm-call-strategy.d.ts.map +1 -1
- package/dist/policy/fallback-llm-call-strategy.js +3 -2
- package/dist/policy/fallback-llm-call-strategy.js.map +1 -1
- package/dist/rag/catalog/index.d.ts +2 -0
- package/dist/rag/catalog/index.d.ts.map +1 -0
- package/dist/rag/catalog/index.js +2 -0
- package/dist/rag/catalog/index.js.map +1 -0
- package/dist/rag/catalog/validation.d.ts +56 -0
- package/dist/rag/catalog/validation.d.ts.map +1 -0
- package/dist/rag/catalog/validation.js +168 -0
- package/dist/rag/catalog/validation.js.map +1 -0
- package/dist/rag/corrections/errors.d.ts +69 -0
- package/dist/rag/corrections/errors.d.ts.map +1 -1
- package/dist/rag/corrections/errors.js +98 -0
- package/dist/rag/corrections/errors.js.map +1 -1
- package/dist/rag/identity-filter.d.ts +19 -0
- package/dist/rag/identity-filter.d.ts.map +1 -0
- package/dist/rag/identity-filter.js +31 -0
- package/dist/rag/identity-filter.js.map +1 -0
- package/dist/rag/in-memory-rag.d.ts +3 -1
- package/dist/rag/in-memory-rag.d.ts.map +1 -1
- package/dist/rag/in-memory-rag.js +20 -15
- package/dist/rag/in-memory-rag.js.map +1 -1
- package/dist/rag/index.d.ts +3 -0
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +2 -0
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/mcp-tools/index.d.ts +1 -1
- package/dist/rag/mcp-tools/index.d.ts.map +1 -1
- package/dist/rag/mcp-tools/index.js.map +1 -1
- package/dist/rag/mcp-tools/rag-collection-tools.d.ts +36 -5
- package/dist/rag/mcp-tools/rag-collection-tools.d.ts.map +1 -1
- package/dist/rag/mcp-tools/rag-collection-tools.js +128 -54
- package/dist/rag/mcp-tools/rag-collection-tools.js.map +1 -1
- package/dist/rag/providers/base-provider.d.ts +8 -6
- package/dist/rag/providers/base-provider.d.ts.map +1 -1
- package/dist/rag/providers/base-provider.js +18 -0
- package/dist/rag/providers/base-provider.js.map +1 -1
- package/dist/rag/providers/in-memory-rag-provider.d.ts +11 -8
- package/dist/rag/providers/in-memory-rag-provider.d.ts.map +1 -1
- package/dist/rag/providers/in-memory-rag-provider.js +13 -5
- package/dist/rag/providers/in-memory-rag-provider.js.map +1 -1
- package/dist/rag/providers/vector-rag-provider.d.ts +11 -8
- package/dist/rag/providers/vector-rag-provider.d.ts.map +1 -1
- package/dist/rag/providers/vector-rag-provider.js +13 -5
- package/dist/rag/providers/vector-rag-provider.js.map +1 -1
- package/dist/rag/registry/index.d.ts +1 -0
- package/dist/rag/registry/index.d.ts.map +1 -1
- package/dist/rag/registry/index.js +1 -0
- package/dist/rag/registry/index.js.map +1 -1
- package/dist/rag/registry/simple-rag-registry.d.ts +90 -15
- package/dist/rag/registry/simple-rag-registry.d.ts.map +1 -1
- package/dist/rag/registry/simple-rag-registry.js +331 -57
- package/dist/rag/registry/simple-rag-registry.js.map +1 -1
- package/dist/rag/registry/store-key.d.ts +15 -0
- package/dist/rag/registry/store-key.d.ts.map +1 -0
- package/dist/rag/registry/store-key.js +25 -0
- package/dist/rag/registry/store-key.js.map +1 -0
- package/dist/rag/search-strategy.d.ts +9 -0
- package/dist/rag/search-strategy.d.ts.map +1 -1
- package/dist/rag/search-strategy.js +49 -22
- package/dist/rag/search-strategy.js.map +1 -1
- package/dist/rag/tokenizer.d.ts +17 -0
- package/dist/rag/tokenizer.d.ts.map +1 -0
- package/dist/rag/tokenizer.js +38 -0
- package/dist/rag/tokenizer.js.map +1 -0
- package/dist/rag/vector-rag.d.ts +2 -2
- package/dist/rag/vector-rag.d.ts.map +1 -1
- package/dist/rag/vector-rag.js +29 -21
- package/dist/rag/vector-rag.js.map +1 -1
- package/dist/resilience/embedder-resilience.d.ts +2 -2
- package/dist/resilience/embedder-resilience.d.ts.map +1 -1
- package/dist/resilience/embedder-resilience.js +3 -1
- package/dist/resilience/embedder-resilience.js.map +1 -1
- package/dist/testing/rag-filter-conformance.d.ts +60 -0
- package/dist/testing/rag-filter-conformance.d.ts.map +1 -0
- package/dist/testing/rag-filter-conformance.js +379 -0
- package/dist/testing/rag-filter-conformance.js.map +1 -0
- package/dist/types.d.ts +11 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -1
- package/dist/interfaces/failure-strategy.d.ts +0 -95
- package/dist/interfaces/failure-strategy.d.ts.map +0 -1
- package/dist/interfaces/failure-strategy.js +0 -96
- package/dist/interfaces/failure-strategy.js.map +0 -1
- package/dist/llm/rate-limit.d.ts +0 -165
- package/dist/llm/rate-limit.d.ts.map +0 -1
- package/dist/llm/rate-limit.js +0 -394
- package/dist/llm/rate-limit.js.map +0 -1
- package/dist/resilience/status.d.ts +0 -29
- package/dist/resilience/status.d.ts.map +0 -1
- package/dist/resilience/status.js +0 -51
- package/dist/resilience/status.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/base-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/base-provider.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,OAAgB,mBAAmB;IAM7B,iBAAiB,CAIT;IAOR,UAAU,CAAC,KAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACO,kBAAkB,CAC1B,IAAwC;QAExC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAES,cAAc,CAAC,IAIxB;QACC,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAES,WAAW,CAAC,GAAS,EAAE,UAAuB;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,IAAI,4DAA4D,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import type { IIdStrategy, IRag, IRagEditor, RagCollectionScope } from '../../interfaces/rag.js';
|
|
2
|
-
import type {
|
|
1
|
+
import type { IIdStrategy, IRag, IRagEditor, RagCollectionScope, RagProviderCreateCollectionOptions } from '../../interfaces/rag.js';
|
|
2
|
+
import type { Result } from '../../interfaces/types.js';
|
|
3
|
+
import { RagError } from '../../interfaces/types.js';
|
|
3
4
|
import { type InMemoryRagConfig } from '../in-memory-rag.js';
|
|
4
5
|
import { AbstractRagProvider } from './base-provider.js';
|
|
5
6
|
export interface InMemoryRagProviderConfig {
|
|
6
7
|
name: string;
|
|
7
8
|
editable?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Scopes this provider accepts. Default `['session']`: its stores live in
|
|
11
|
+
* this process and are gone after a restart, so whether a longer-lived scope
|
|
12
|
+
* fits is the host's call.
|
|
13
|
+
*/
|
|
14
|
+
supportedScopes?: readonly RagCollectionScope[];
|
|
8
15
|
inMemoryRagConfig?: InMemoryRagConfig;
|
|
9
16
|
idStrategyFactory?: (opts: {
|
|
10
17
|
scope: RagCollectionScope;
|
|
@@ -16,14 +23,10 @@ export declare class InMemoryRagProvider extends AbstractRagProvider {
|
|
|
16
23
|
readonly name: string;
|
|
17
24
|
readonly kind = "vector";
|
|
18
25
|
readonly editable: boolean;
|
|
19
|
-
readonly supportedScopes: readonly [
|
|
26
|
+
readonly supportedScopes: readonly RagCollectionScope[];
|
|
20
27
|
private readonly inMemoryCfg?;
|
|
21
28
|
constructor(cfg: InMemoryRagProviderConfig);
|
|
22
|
-
createCollection(_name: string, opts: {
|
|
23
|
-
scope: RagCollectionScope;
|
|
24
|
-
sessionId?: string;
|
|
25
|
-
userId?: string;
|
|
26
|
-
}): Promise<Result<{
|
|
29
|
+
createCollection(_name: string, opts: RagProviderCreateCollectionOptions): Promise<Result<{
|
|
27
30
|
rag: IRag;
|
|
28
31
|
editor: IRagEditor;
|
|
29
32
|
}, RagError>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-rag-provider.d.ts","sourceRoot":"","sources":["../../../src/rag/providers/in-memory-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,UAAU,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"in-memory-rag-provider.d.ts","sourceRoot":"","sources":["../../../src/rag/providers/in-memory-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,kCAAkC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,kBAAkB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,WAAW,CAAC;CACnB;AAED,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAoB;gBAErC,GAAG,EAAE,yBAAyB;IASpC,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,QAAQ,CAAC,CAAC;CAgBhE"}
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
+
import { RagError } from '../../interfaces/types.js';
|
|
1
2
|
import { InMemoryRag } from '../in-memory-rag.js';
|
|
2
3
|
import { AbstractRagProvider } from './base-provider.js';
|
|
3
4
|
export class InMemoryRagProvider extends AbstractRagProvider {
|
|
4
5
|
name;
|
|
5
6
|
kind = 'vector';
|
|
6
7
|
editable;
|
|
7
|
-
supportedScopes
|
|
8
|
+
supportedScopes;
|
|
8
9
|
inMemoryCfg;
|
|
9
10
|
constructor(cfg) {
|
|
10
11
|
super();
|
|
11
12
|
this.name = cfg.name;
|
|
12
13
|
this.editable = cfg.editable ?? true;
|
|
14
|
+
this.supportedScopes = cfg.supportedScopes ?? ['session'];
|
|
13
15
|
this.inMemoryCfg = cfg.inMemoryRagConfig;
|
|
14
16
|
if (cfg.idStrategyFactory)
|
|
15
17
|
this.idStrategyFactory = cfg.idStrategyFactory;
|
|
16
18
|
}
|
|
17
19
|
async createCollection(_name, opts) {
|
|
18
|
-
const
|
|
19
|
-
if (!
|
|
20
|
-
return
|
|
20
|
+
const checked = this.checkCreateOptions(opts);
|
|
21
|
+
if (!checked.ok)
|
|
22
|
+
return checked;
|
|
23
|
+
if (opts.adoptExisting === true) {
|
|
24
|
+
return {
|
|
25
|
+
ok: false,
|
|
26
|
+
error: new RagError(`Provider '${this.name}' keeps no store outside this process, so there is nothing to adopt`, 'RAG_CREATE_ERROR'),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
21
29
|
const rag = new InMemoryRag(this.inMemoryCfg);
|
|
22
|
-
const editor = this.buildEditor(rag, this.pickIdStrategy(
|
|
30
|
+
const editor = this.buildEditor(rag, this.pickIdStrategy(checked.value));
|
|
23
31
|
return { ok: true, value: { rag, editor } };
|
|
24
32
|
}
|
|
25
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-rag-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/in-memory-rag-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"in-memory-rag-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/in-memory-rag-provider.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,WAAW,EAA0B,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAmBzD,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IACjD,IAAI,CAAS;IACb,IAAI,GAAG,QAAQ,CAAC;IAChB,QAAQ,CAAU;IAClB,eAAe,CAAgC;IAEvC,WAAW,CAAqB;IAEjD,YAAY,GAA8B;QACxC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,iBAAiB,CAAC;QACzC,IAAI,GAAG,CAAC,iBAAiB;YAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,IAAwC;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,QAAQ,CACjB,aAAa,IAAI,CAAC,IAAI,qEAAqE,EAC3F,kBAAkB,CACnB;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import type { IEmbedder, IIdStrategy, IRag, IRagEditor, RagCollectionScope } from '../../interfaces/rag.js';
|
|
2
|
-
import type {
|
|
1
|
+
import type { IEmbedder, IIdStrategy, IRag, IRagEditor, RagCollectionScope, RagProviderCreateCollectionOptions } from '../../interfaces/rag.js';
|
|
2
|
+
import type { Result } from '../../interfaces/types.js';
|
|
3
|
+
import { RagError } from '../../interfaces/types.js';
|
|
3
4
|
import { type VectorRagConfig } from '../vector-rag.js';
|
|
4
5
|
import { AbstractRagProvider } from './base-provider.js';
|
|
5
6
|
export interface VectorRagProviderConfig {
|
|
6
7
|
name: string;
|
|
7
8
|
embedder: IEmbedder;
|
|
8
9
|
editable?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Scopes this provider accepts. Default `['session']`: its stores live in
|
|
12
|
+
* this process and are gone after a restart, so whether a longer-lived scope
|
|
13
|
+
* fits is the host's call.
|
|
14
|
+
*/
|
|
15
|
+
supportedScopes?: readonly RagCollectionScope[];
|
|
9
16
|
vectorRagConfig?: VectorRagConfig;
|
|
10
17
|
idStrategyFactory?: (opts: {
|
|
11
18
|
scope: RagCollectionScope;
|
|
@@ -17,15 +24,11 @@ export declare class VectorRagProvider extends AbstractRagProvider {
|
|
|
17
24
|
readonly name: string;
|
|
18
25
|
readonly kind = "vector";
|
|
19
26
|
readonly editable: boolean;
|
|
20
|
-
readonly supportedScopes: readonly [
|
|
27
|
+
readonly supportedScopes: readonly RagCollectionScope[];
|
|
21
28
|
private readonly embedder;
|
|
22
29
|
private readonly vectorRagConfig?;
|
|
23
30
|
constructor(cfg: VectorRagProviderConfig);
|
|
24
|
-
createCollection(_name: string, opts: {
|
|
25
|
-
scope: RagCollectionScope;
|
|
26
|
-
sessionId?: string;
|
|
27
|
-
userId?: string;
|
|
28
|
-
}): Promise<Result<{
|
|
31
|
+
createCollection(_name: string, opts: RagProviderCreateCollectionOptions): Promise<Result<{
|
|
29
32
|
rag: IRag;
|
|
30
33
|
editor: IRagEditor;
|
|
31
34
|
}, RagError>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-rag-provider.d.ts","sourceRoot":"","sources":["../../../src/rag/providers/vector-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,IAAI,EACJ,UAAU,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"vector-rag-provider.d.ts","sourceRoot":"","sources":["../../../src/rag/providers/vector-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,kCAAkC,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,kBAAkB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,WAAW,CAAC;CACnB;AAED,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;gBAEvC,GAAG,EAAE,uBAAuB;IAUlC,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,QAAQ,CAAC,CAAC;CAgBhE"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { RagError } from '../../interfaces/types.js';
|
|
1
2
|
import { VectorRag } from '../vector-rag.js';
|
|
2
3
|
import { AbstractRagProvider } from './base-provider.js';
|
|
3
4
|
export class VectorRagProvider extends AbstractRagProvider {
|
|
4
5
|
name;
|
|
5
6
|
kind = 'vector';
|
|
6
7
|
editable;
|
|
7
|
-
supportedScopes
|
|
8
|
+
supportedScopes;
|
|
8
9
|
embedder;
|
|
9
10
|
vectorRagConfig;
|
|
10
11
|
constructor(cfg) {
|
|
@@ -12,16 +13,23 @@ export class VectorRagProvider extends AbstractRagProvider {
|
|
|
12
13
|
this.name = cfg.name;
|
|
13
14
|
this.embedder = cfg.embedder;
|
|
14
15
|
this.editable = cfg.editable ?? true;
|
|
16
|
+
this.supportedScopes = cfg.supportedScopes ?? ['session'];
|
|
15
17
|
this.vectorRagConfig = cfg.vectorRagConfig;
|
|
16
18
|
if (cfg.idStrategyFactory)
|
|
17
19
|
this.idStrategyFactory = cfg.idStrategyFactory;
|
|
18
20
|
}
|
|
19
21
|
async createCollection(_name, opts) {
|
|
20
|
-
const
|
|
21
|
-
if (!
|
|
22
|
-
return
|
|
22
|
+
const checked = this.checkCreateOptions(opts);
|
|
23
|
+
if (!checked.ok)
|
|
24
|
+
return checked;
|
|
25
|
+
if (opts.adoptExisting === true) {
|
|
26
|
+
return {
|
|
27
|
+
ok: false,
|
|
28
|
+
error: new RagError(`Provider '${this.name}' keeps no store outside this process, so there is nothing to adopt`, 'RAG_CREATE_ERROR'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
23
31
|
const rag = new VectorRag(this.embedder, this.vectorRagConfig ?? {});
|
|
24
|
-
const editor = this.buildEditor(rag, this.pickIdStrategy(
|
|
32
|
+
const editor = this.buildEditor(rag, this.pickIdStrategy(checked.value));
|
|
25
33
|
return { ok: true, value: { rag, editor } };
|
|
26
34
|
}
|
|
27
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-rag-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/vector-rag-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector-rag-provider.js","sourceRoot":"","sources":["../../../src/rag/providers/vector-rag-provider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAoBzD,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IAC/C,IAAI,CAAS;IACb,IAAI,GAAG,QAAQ,CAAC;IAChB,QAAQ,CAAU;IAClB,eAAe,CAAgC;IAEvC,QAAQ,CAAY;IACpB,eAAe,CAAmB;IAEnD,YAAY,GAA4B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,GAAG,CAAC,iBAAiB;YAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,IAAwC;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,QAAQ,CACjB,aAAa,IAAI,CAAC,IAAI,qEAAqE,EAC3F,kBAAkB,CACnB;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rag/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rag/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rag/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rag/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,33 +1,108 @@
|
|
|
1
|
-
import type { IRag, IRagEditor, IRagProviderRegistry, IRagRegistry, RagCollectionMeta, RagCollectionScope } from '../../interfaces/rag.js';
|
|
1
|
+
import type { IRag, IRagEditor, IRagProviderRegistry, IRagRegistry, RagCollectionMeta, RagCollectionRecord, RagCollectionScope, RagRegistryCreateCollectionParams } from '../../interfaces/rag.js';
|
|
2
2
|
import { RagError, type Result } from '../../interfaces/types.js';
|
|
3
|
+
import { AmbiguousCollectionError } from '../corrections/errors.js';
|
|
3
4
|
interface Entry {
|
|
4
5
|
rag: IRag;
|
|
5
6
|
editor?: IRagEditor;
|
|
6
7
|
meta: RagCollectionMeta;
|
|
8
|
+
/** The name its provider knows the store by; see createCollection. */
|
|
9
|
+
storeName: string;
|
|
7
10
|
}
|
|
11
|
+
type Found = {
|
|
12
|
+
ok: true;
|
|
13
|
+
found?: {
|
|
14
|
+
key: string;
|
|
15
|
+
entry: Entry;
|
|
16
|
+
};
|
|
17
|
+
} | {
|
|
18
|
+
ok: false;
|
|
19
|
+
error: AmbiguousCollectionError;
|
|
20
|
+
};
|
|
8
21
|
export declare class SimpleRagRegistry implements IRagRegistry {
|
|
22
|
+
/** Keyed by keyOf(scope, name). */
|
|
9
23
|
protected readonly entries: Map<string, Entry>;
|
|
24
|
+
/**
|
|
25
|
+
* Keys (scope, name) whose deletion is running. Absent to get, getEditor and
|
|
26
|
+
* list, so nothing reaches the collection; taken for createCollection,
|
|
27
|
+
* register and adopt, which refuse it — a taken name is refused, not queued
|
|
28
|
+
* (§6.3). The reservation is what lets a failed record deletion restore the
|
|
29
|
+
* entry: without it a creation could take the key in between.
|
|
30
|
+
*/
|
|
31
|
+
protected readonly deleting: Set<string>;
|
|
32
|
+
/** Keys (scope, name) being created, held until inserted or refused. */
|
|
33
|
+
protected readonly creating: Set<string>;
|
|
10
34
|
protected providerRegistry?: IRagProviderRegistry;
|
|
11
35
|
protected mutationListener?: () => void;
|
|
12
36
|
setProviderRegistry(providerRegistry: IRagProviderRegistry): void;
|
|
13
37
|
setMutationListener(listener: () => void): void;
|
|
14
38
|
private fireMutation;
|
|
39
|
+
/**
|
|
40
|
+
* The entry `name` addresses: with a scope, that scope's; without one, the
|
|
41
|
+
* entry of the one scope holding it — or AmbiguousCollectionError naming
|
|
42
|
+
* every scope that does. Never a silent precedence between scopes.
|
|
43
|
+
*/
|
|
44
|
+
protected find(name: string, scope?: RagCollectionScope): Found;
|
|
45
|
+
private findOrThrow;
|
|
46
|
+
/** A key is taken while an entry holds it, or a creation or deletion runs. */
|
|
47
|
+
protected isTaken(key: string): boolean;
|
|
48
|
+
private insert;
|
|
15
49
|
register(name: string, rag: IRag, editor?: IRagEditor, meta?: Omit<RagCollectionMeta, 'name' | 'editable'>): void;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Register a collection whose store EXISTS, from its catalog record (§6.3):
|
|
52
|
+
* under its logical name, with the store name the record gives. Creates
|
|
53
|
+
* nothing and asks no provider for anything. See IRagRegistry.adopt.
|
|
54
|
+
*/
|
|
55
|
+
adopt(record: RagCollectionRecord, rag: IRag, editor?: IRagEditor, providerName?: string): void;
|
|
56
|
+
unregister(name: string, scope?: RagCollectionScope): boolean;
|
|
57
|
+
get(name: string, scope?: RagCollectionScope): IRag | undefined;
|
|
58
|
+
getEditor(name: string, scope?: RagCollectionScope): IRagEditor | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Swap the store handle of an existing entry, keeping everything else — its
|
|
61
|
+
* editor, its provider, its store name and its meta — and tell the mutation
|
|
62
|
+
* listener. For a decorator such as the builder's circuit-breaker
|
|
63
|
+
* FallbackRag: re-registering would set the store name to the logical name
|
|
64
|
+
* and drop the provider, so a hydrated collection's delete would miss its
|
|
65
|
+
* store and its catalog record would come back (§6.3). The scope is
|
|
66
|
+
* required, so the lookup is never ambiguous. False when the entry is
|
|
67
|
+
* absent — including one currently reserved by an in-flight deletion (it is
|
|
68
|
+
* gone from `entries` already); never re-inserts.
|
|
69
|
+
*/
|
|
70
|
+
replaceRag(name: string, scope: RagCollectionScope, rag: IRag): boolean;
|
|
19
71
|
list(): readonly RagCollectionMeta[];
|
|
20
|
-
createCollection(params:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
72
|
+
createCollection(params: RagRegistryCreateCollectionParams): Promise<Result<RagCollectionMeta, RagError>>;
|
|
73
|
+
private createUnder;
|
|
74
|
+
/**
|
|
75
|
+
* Delete a collection.
|
|
76
|
+
*
|
|
77
|
+
* It is unregistered first and its key reserved, so nothing reaches it and
|
|
78
|
+
* nothing takes its name while it is being deleted. Then its data goes: a
|
|
79
|
+
* collection a provider created is deleted by that provider's
|
|
80
|
+
* `deleteCollection` (which cannot throw — see deleteData) — which removes
|
|
81
|
+
* its catalog record before its data — or, where the provider has none,
|
|
82
|
+
* emptied through its store's `writer().clearAll()`. A collection
|
|
83
|
+
* registered without a provider is only unregistered. Nothing is retried.
|
|
84
|
+
*
|
|
85
|
+
* On CatalogRecordDeleteError nothing was deleted: record and data are both
|
|
86
|
+
* intact, so the same entry is registered again before the reservation ends,
|
|
87
|
+
* and the same call can be retried in place. Any other failure comes back as
|
|
88
|
+
* the error with the collection unregistered; its data may remain under a
|
|
89
|
+
* store name no other session or user is given (see storeNameFor).
|
|
90
|
+
*
|
|
91
|
+
* The reservation is released — and the entry restored first, if this was a
|
|
92
|
+
* CatalogRecordDeleteError — on every path, including a throwing
|
|
93
|
+
* `mutationListener`: that listener is consumer-injected and its own
|
|
94
|
+
* exception must never pin the key in `deleting` forever, nor skip the
|
|
95
|
+
* restore. Once state is settled, a listener exception is rethrown (so the
|
|
96
|
+
* caller sees it — never silently dropped); the delete's own Result is
|
|
97
|
+
* returned only when notifying succeeded.
|
|
98
|
+
*/
|
|
99
|
+
deleteCollection(name: string, scope?: RagCollectionScope): Promise<Result<void, RagError>>;
|
|
100
|
+
private deleteData;
|
|
101
|
+
/**
|
|
102
|
+
* Delete every session-scoped collection of this session. Goes through all of
|
|
103
|
+
* them even when one fails — each is unregistered regardless (see
|
|
104
|
+
* deleteCollection) — and returns the failures together.
|
|
105
|
+
*/
|
|
31
106
|
closeSession(sessionId: string): Promise<Result<void, RagError>>;
|
|
32
107
|
}
|
|
33
108
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-rag-registry.d.ts","sourceRoot":"","sources":["../../../src/rag/registry/simple-rag-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"simple-rag-registry.d.ts","sourceRoot":"","sources":["../../../src/rag/registry/simple-rag-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EAEV,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAEjB,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAMlE,OAAO,EACL,wBAAwB,EAOzB,MAAM,0BAA0B,CAAC;AAqClC,UAAU,KAAK;IACb,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,iBAAiB,CAAC;IACxB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,KAAK,KAAK,GACN;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;CAAE,GACnD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAEnD,qBAAa,iBAAkB,YAAW,YAAY;IACpD,mCAAmC;IACnC,SAAS,CAAC,QAAQ,CAAC,OAAO,qBAA4B;IACtD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,cAAqB;IAChD,wEAAwE;IACxE,SAAS,CAAC,QAAQ,CAAC,QAAQ,cAAqB;IAChD,SAAS,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IAClD,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAExC,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI;IAIjE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,KAAK;IAgB/D,OAAO,CAAC,WAAW;IASnB,8EAA8E;IAC9E,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMvC,OAAO,CAAC,MAAM;IAKd,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,IAAI,EACT,MAAM,CAAC,EAAE,UAAU,EACnB,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,GAClD,IAAI;IA+BP;;;;OAIG;IACH,KAAK,CACH,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,IAAI,EACT,MAAM,CAAC,EAAE,UAAU,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI;IA+BP,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,OAAO;IAQ7D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS;IAI/D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,UAAU,GAAG,SAAS;IAI3E;;;;;;;;;;OAUG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO;IAQvE,IAAI,IAAI,SAAS,iBAAiB,EAAE;IAI9B,gBAAgB,CACpB,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAoDjC,WAAW;IAgDzB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAmDpB,UAAU;IA6CxB;;;;OAIG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAmBvE"}
|