@mcp-abap-adt/pg-vector-rag 26.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.
Files changed (52) hide show
  1. package/README.md +27 -5
  2. package/dist/__tests__/catalog.test.d.ts +2 -0
  3. package/dist/__tests__/catalog.test.d.ts.map +1 -0
  4. package/dist/__tests__/catalog.test.js +250 -0
  5. package/dist/__tests__/catalog.test.js.map +1 -0
  6. package/dist/__tests__/connection.test.js +39 -11
  7. package/dist/__tests__/connection.test.js.map +1 -1
  8. package/dist/__tests__/credential.test.d.ts +2 -0
  9. package/dist/__tests__/credential.test.d.ts.map +1 -0
  10. package/dist/__tests__/credential.test.js +72 -0
  11. package/dist/__tests__/credential.test.js.map +1 -0
  12. package/dist/__tests__/fake-pg.d.ts +21 -0
  13. package/dist/__tests__/fake-pg.d.ts.map +1 -0
  14. package/dist/__tests__/fake-pg.js +100 -0
  15. package/dist/__tests__/fake-pg.js.map +1 -0
  16. package/dist/__tests__/pg-vector-rag-provider.test.js +10 -11
  17. package/dist/__tests__/pg-vector-rag-provider.test.js.map +1 -1
  18. package/dist/__tests__/pg-vector-rag.test.js +63 -0
  19. package/dist/__tests__/pg-vector-rag.test.js.map +1 -1
  20. package/dist/__tests__/rag-filter-conformance.test.d.ts +2 -0
  21. package/dist/__tests__/rag-filter-conformance.test.d.ts.map +1 -0
  22. package/dist/__tests__/rag-filter-conformance.test.js +17 -0
  23. package/dist/__tests__/rag-filter-conformance.test.js.map +1 -0
  24. package/dist/__tests__/storing-pg.d.ts +18 -0
  25. package/dist/__tests__/storing-pg.d.ts.map +1 -0
  26. package/dist/__tests__/storing-pg.js +77 -0
  27. package/dist/__tests__/storing-pg.js.map +1 -0
  28. package/dist/catalog.d.ts +19 -0
  29. package/dist/catalog.d.ts.map +1 -0
  30. package/dist/catalog.js +42 -0
  31. package/dist/catalog.js.map +1 -0
  32. package/dist/connection.d.ts +27 -5
  33. package/dist/connection.d.ts.map +1 -1
  34. package/dist/connection.js +28 -4
  35. package/dist/connection.js.map +1 -1
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/pg-vector-rag-provider.d.ts +45 -14
  41. package/dist/pg-vector-rag-provider.d.ts.map +1 -1
  42. package/dist/pg-vector-rag-provider.js +205 -23
  43. package/dist/pg-vector-rag-provider.js.map +1 -1
  44. package/dist/pg-vector-rag.d.ts +2 -1
  45. package/dist/pg-vector-rag.d.ts.map +1 -1
  46. package/dist/pg-vector-rag.js +57 -18
  47. package/dist/pg-vector-rag.js.map +1 -1
  48. package/dist/schema.d.ts +3 -1
  49. package/dist/schema.d.ts.map +1 -1
  50. package/dist/schema.js +3 -2
  51. package/dist/schema.js.map +1 -1
  52. package/package.json +5 -3
@@ -1,12 +1,22 @@
1
- import type { IEmbedder, IIdStrategy, IRag, IRagEditor, RagCollectionScope, Result } from '@mcp-abap-adt/llm-agent';
1
+ import type { IEmbedder, IIdStrategy, IRag, IRagEditor, RagCatalogDescription, RagCollectionRecord, RagCollectionScope, RagProviderCreateCollectionOptions, Result } from '@mcp-abap-adt/llm-agent';
2
2
  import { AbstractRagProvider, RagError } from '@mcp-abap-adt/llm-agent';
3
3
  import type { PgVectorRagConfig } from './connection.js';
4
4
  import { type PgClient } from './pg-vector-rag.js';
5
+ type Handles = {
6
+ rag: IRag;
7
+ editor: IRagEditor;
8
+ };
5
9
  export interface PgVectorRagProviderConfig {
6
10
  name: string;
7
11
  embedder: IEmbedder;
8
12
  connection: PgVectorRagConfig | string;
9
13
  defaultDimension?: number;
14
+ /**
15
+ * `true` (default): the provider creates its catalog table on first use and
16
+ * each collection's table in `createCollection`. `false`: it issues no DDL at
17
+ * all — the operator creates the catalog (`createCatalogTableSql`) and the
18
+ * tables, and `createCollection` requires the table and records it.
19
+ */
10
20
  autoCreateSchema?: boolean;
11
21
  editable?: boolean;
12
22
  supportedScopes?: readonly RagCollectionScope[];
@@ -16,12 +26,14 @@ export interface PgVectorRagProviderConfig {
16
26
  userId?: string;
17
27
  }) => IIdStrategy;
18
28
  /**
19
- * Optional factory for driver clients used by deleteCollection / listCollections
20
- * and (in tests) by createCollection. When omitted, deleteCollection and
21
- * listCollections throw because schema-level operations require a shared client
22
- * outside the per-collection PgVectorRag lifecycle.
29
+ * Optional factory for the driver client the provider uses for catalog and
30
+ * schema statements and hands each collection handle. Omitted, the provider
31
+ * opens one pool of its own from `connection` for its statements, and each
32
+ * handle opens its own.
23
33
  */
24
34
  clientFactory?: () => PgClient;
35
+ /** The table holding one record per collection. Default `rag_collection_catalog`. */
36
+ catalogTable?: string;
25
37
  }
26
38
  export declare class PgVectorRagProvider extends AbstractRagProvider {
27
39
  readonly name: string;
@@ -33,17 +45,36 @@ export declare class PgVectorRagProvider extends AbstractRagProvider {
33
45
  private readonly defaultDimension;
34
46
  private readonly autoCreateSchema;
35
47
  private readonly clientFactory?;
48
+ private readonly catalogTable;
49
+ private ownClient?;
50
+ private catalogReady?;
36
51
  constructor(cfg: PgVectorRagProviderConfig);
37
- createCollection(name: string, opts: {
38
- scope: RagCollectionScope;
39
- sessionId?: string;
40
- userId?: string;
41
- }): Promise<Result<{
42
- rag: IRag;
43
- editor: IRagEditor;
44
- }, RagError>>;
52
+ /**
53
+ * Creates the store with a statement that fails if it exists, then commits
54
+ * the creation by writing the record last, create-if-absent (§6.3).
55
+ */
56
+ createCollection(name: string, opts: RagProviderCreateCollectionOptions): Promise<Result<Handles, RagError>>;
57
+ /** The catalog, read back through the shared row check. Creates nothing. */
58
+ describeCollections(): Promise<Result<RagCatalogDescription, RagError>>;
59
+ /**
60
+ * Handles for a store that exists. Issues no statement, and the handles run
61
+ * with lazy schema creation off, so a store that is gone fails rather than
62
+ * coming back without a record.
63
+ */
64
+ openCollection(record: RagCollectionRecord): Promise<Result<Handles, RagError>>;
65
+ /** The record first, then the data (§6.3). */
45
66
  deleteCollection(name: string): Promise<Result<void, RagError>>;
46
67
  listCollections(): Promise<Result<string[], RagError>>;
47
- private requireClient;
68
+ private createStore;
69
+ private writeRecord;
70
+ private handles;
71
+ private duplicate;
72
+ private refuseCatalogName;
73
+ private dimension;
74
+ private adminClient;
75
+ private ensureCatalog;
76
+ private tableExists;
77
+ private recordExists;
48
78
  }
79
+ export {};
49
80
  //# sourceMappingURL=pg-vector-rag-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pg-vector-rag-provider.d.ts","sourceRoot":"","sources":["../src/pg-vector-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAGhE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,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;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,QAAQ,CAAC;CAChC;AAQD,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,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAiB;gBAEpC,GAAG,EAAE,yBAAyB;IAapC,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,MAAM,CAAC;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,QAAQ,CAAC,CAAC;IAyBzD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAa/D,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IAc5D,OAAO,CAAC,aAAa;CAQtB"}
1
+ {"version":3,"file":"pg-vector-rag-provider.d.ts","sourceRoot":"","sources":["../src/pg-vector-rag-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,IAAI,EACJ,UAAU,EACV,qBAAqB,EAErB,mBAAmB,EACnB,kBAAkB,EAClB,kCAAkC,EAClC,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EAMnB,QAAQ,EAGT,MAAM,yBAAyB,CAAC;AAWjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAkB,KAAK,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAShF,KAAK,OAAO,GAAG;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAGjD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,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;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,QAAQ,CAAC;IAC/B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD,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,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,SAAS,CAAC,CAAoB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAgB;gBAEzB,GAAG,EAAE,yBAAyB;IAe1C;;;OAGG;IACG,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kCAAkC,GACvC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAuCrC,4EAA4E;IACtE,mBAAmB,IAAI,OAAO,CAClC,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CACxC;IAaD;;;;OAIG;IACG,cAAc,CAClB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAUrC,8CAA8C;IACxC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IA2B/D,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;YAmB9C,WAAW;YAyBX,WAAW;IAoCzB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,SAAS;YAIH,WAAW;IASzB,OAAO,CAAC,aAAa;YAgBP,WAAW;YAKX,YAAY;CAS3B"}
@@ -1,6 +1,7 @@
1
- import { AbstractRagProvider, RagError } from '@mcp-abap-adt/llm-agent';
2
- import { PgVectorRag } from './pg-vector-rag.js';
3
- import { dropTableSql } from './schema.js';
1
+ import { AbstractRagProvider, CatalogRecordDeleteError, DuplicateCollectionError, describeRagCatalogRows, encodeRagAttributes, OrphanStoreError, RagError, ragOwnerKeys, validateRagOwner, } from '@mcp-abap-adt/llm-agent';
2
+ import { createCatalogTableSql, DEFAULT_CATALOG_TABLE, deleteRecordSql, insertRecordSql, probeTableSql, recordExistsSql, selectRecordsSql, tableExistsSql, } from './catalog.js';
3
+ import { createPgClient, PgVectorRag } from './pg-vector-rag.js';
4
+ import { assertCollectionName, createExtensionSql, createTableSql, dropTableSql, quoteIdent, } from './schema.js';
4
5
  function normalizeConnection(c) {
5
6
  return typeof c === 'string'
6
7
  ? { connectionString: c, collectionName: '__unused' }
@@ -16,6 +17,9 @@ export class PgVectorRagProvider extends AbstractRagProvider {
16
17
  defaultDimension;
17
18
  autoCreateSchema;
18
19
  clientFactory;
20
+ catalogTable;
21
+ ownClient;
22
+ catalogReady;
19
23
  constructor(cfg) {
20
24
  super();
21
25
  this.name = cfg.name;
@@ -26,25 +30,48 @@ export class PgVectorRagProvider extends AbstractRagProvider {
26
30
  this.editable = cfg.editable ?? true;
27
31
  this.supportedScopes = cfg.supportedScopes ?? ['session', 'user', 'global'];
28
32
  this.clientFactory = cfg.clientFactory;
33
+ this.catalogTable = cfg.catalogTable ?? DEFAULT_CATALOG_TABLE;
34
+ assertCollectionName(this.catalogTable);
29
35
  if (cfg.idStrategyFactory)
30
36
  this.idStrategyFactory = cfg.idStrategyFactory;
31
37
  }
38
+ /**
39
+ * Creates the store with a statement that fails if it exists, then commits
40
+ * the creation by writing the record last, create-if-absent (§6.3).
41
+ */
32
42
  async createCollection(name, opts) {
33
- const scopeCheck = this.checkScope(opts.scope);
34
- if (!scopeCheck.ok)
35
- return scopeCheck;
43
+ const checked = this.checkCreateOptions(opts);
44
+ if (!checked.ok)
45
+ return checked;
46
+ const refused = this.refuseCatalogName(name);
47
+ if (refused)
48
+ return refused;
36
49
  try {
37
- const rag = new PgVectorRag({
38
- ...this.connection,
39
- collectionName: name,
40
- dimension: this.connection.dimension ?? this.defaultDimension,
41
- autoCreateSchema: this.autoCreateSchema,
42
- embedder: this.embedder,
43
- }, this.clientFactory?.());
50
+ assertCollectionName(name);
51
+ const client = await this.adminClient();
44
52
  if (this.autoCreateSchema)
45
- await rag.ensureSchema();
46
- const editor = this.buildEditor(rag, this.pickIdStrategy(opts));
47
- return { ok: true, value: { rag, editor } };
53
+ await this.ensureCatalog(client);
54
+ if (await this.recordExists(client, name))
55
+ return this.duplicate(name, opts);
56
+ if (opts.adoptExisting === true || !this.autoCreateSchema) {
57
+ // Adoption takes over a store that is there and creates nothing: the
58
+ // probe fails with the backend's own error when it is not.
59
+ await client.query(probeTableSql(name));
60
+ }
61
+ else {
62
+ const created = await this.createStore(client, name, opts);
63
+ if (!created.ok)
64
+ return created;
65
+ }
66
+ const recorded = await this.writeRecord(client, {
67
+ ...checked.value,
68
+ storeName: name,
69
+ name: opts.collectionName ?? name,
70
+ attributes: opts.attributes,
71
+ }, opts);
72
+ if (!recorded.ok)
73
+ return recorded;
74
+ return { ok: true, value: this.handles(name, checked.value) };
48
75
  }
49
76
  catch (err) {
50
77
  return {
@@ -53,9 +80,56 @@ export class PgVectorRagProvider extends AbstractRagProvider {
53
80
  };
54
81
  }
55
82
  }
83
+ /** The catalog, read back through the shared row check. Creates nothing. */
84
+ async describeCollections() {
85
+ try {
86
+ const client = await this.adminClient();
87
+ if (!(await this.tableExists(client, this.catalogTable))) {
88
+ return { ok: true, value: { records: [], rejected: [] } };
89
+ }
90
+ const { rows } = await client.query(selectRecordsSql(this.catalogTable));
91
+ return { ok: true, value: describeRagCatalogRows(rows) };
92
+ }
93
+ catch (err) {
94
+ return { ok: false, error: new RagError(String(err), 'RAG_LIST_ERROR') };
95
+ }
96
+ }
97
+ /**
98
+ * Handles for a store that exists. Issues no statement, and the handles run
99
+ * with lazy schema creation off, so a store that is gone fails rather than
100
+ * coming back without a record.
101
+ */
102
+ async openCollection(record) {
103
+ const owner = validateRagOwner(record);
104
+ if (!owner.ok)
105
+ return owner;
106
+ try {
107
+ return { ok: true, value: this.handles(record.storeName, owner.value) };
108
+ }
109
+ catch (err) {
110
+ return { ok: false, error: new RagError(String(err), 'RAG_OPEN_ERROR') };
111
+ }
112
+ }
113
+ /** The record first, then the data (§6.3). */
56
114
  async deleteCollection(name) {
115
+ const refused = this.refuseCatalogName(name);
116
+ if (refused)
117
+ return refused;
118
+ let client;
119
+ try {
120
+ client = await this.adminClient();
121
+ if (await this.tableExists(client, this.catalogTable)) {
122
+ await client.query(deleteRecordSql(this.catalogTable), [name]);
123
+ }
124
+ }
125
+ catch (err) {
126
+ // Stop: record and data both survive, so nothing was deleted — retry it.
127
+ return {
128
+ ok: false,
129
+ error: new CatalogRecordDeleteError(name, String(err)),
130
+ };
131
+ }
57
132
  try {
58
- const client = this.requireClient();
59
133
  await client.query(dropTableSql(name));
60
134
  return { ok: true, value: undefined };
61
135
  }
@@ -68,20 +142,128 @@ export class PgVectorRagProvider extends AbstractRagProvider {
68
142
  }
69
143
  async listCollections() {
70
144
  try {
71
- const client = this.requireClient();
145
+ const client = await this.adminClient();
72
146
  const schema = this.connection.schema ?? 'public';
73
147
  const { rows } = await client.query('SELECT table_name FROM information_schema.tables WHERE table_schema = $1', [schema]);
74
- return { ok: true, value: rows.map((r) => String(r.table_name)) };
148
+ return {
149
+ ok: true,
150
+ value: rows
151
+ .map((r) => String(r.table_name))
152
+ .filter((t) => t !== this.catalogTable),
153
+ };
75
154
  }
76
155
  catch (err) {
77
156
  return { ok: false, error: new RagError(String(err), 'RAG_LIST_ERROR') };
78
157
  }
79
158
  }
80
- requireClient() {
81
- if (!this.clientFactory) {
82
- throw new Error('PgVectorRagProvider deleteCollection/listCollections require clientFactory; provide one to enable schema-level operations');
159
+ async createStore(client, name, opts) {
160
+ try {
161
+ await client.query(createExtensionSql());
162
+ await client.query(createTableSql(name, this.dimension(), { ifNotExists: false }));
163
+ return { ok: true, value: undefined };
164
+ }
165
+ catch (err) {
166
+ if (!(await this.tableExists(client, name)))
167
+ throw err;
168
+ if (await this.recordExists(client, name))
169
+ return this.duplicate(name, opts);
170
+ return {
171
+ ok: false,
172
+ error: new OrphanStoreError(name, 'it exists without a record; another session may be creating or deleting this collection, so retry later, or take it over with adoptExisting, or remove it'),
173
+ };
174
+ }
175
+ }
176
+ async writeRecord(client, record, opts) {
177
+ const { userId, sessionId } = ragOwnerKeys(record);
178
+ try {
179
+ await client.query(insertRecordSql(this.catalogTable), [
180
+ record.storeName,
181
+ record.name,
182
+ record.scope,
183
+ userId ?? null,
184
+ sessionId ?? null,
185
+ encodeRagAttributes(record.attributes),
186
+ ]);
187
+ return { ok: true, value: undefined };
188
+ }
189
+ catch (err) {
190
+ // Lost to another registry's write: its record points at this store, which stays.
191
+ if (await this.recordExists(client, record.storeName).catch(() => false)) {
192
+ return this.duplicate(record.storeName, opts);
193
+ }
194
+ // Never removed: between this failure and a removal another registry may
195
+ // adopt the store and record it, and a removal would leave that record
196
+ // without data (§6.3).
197
+ return {
198
+ ok: false,
199
+ error: new OrphanStoreError(record.storeName, `its record could not be written (${String(err)}); the store is left in place until it is adopted with adoptExisting or removed`),
200
+ };
83
201
  }
84
- return this.clientFactory();
202
+ }
203
+ handles(storeName, owner) {
204
+ const rag = new PgVectorRag({
205
+ ...this.connection,
206
+ collectionName: storeName,
207
+ dimension: this.dimension(),
208
+ // No handle creates its store: createCollection does, and only it.
209
+ autoCreateSchema: false,
210
+ embedder: this.embedder,
211
+ }, this.clientFactory?.());
212
+ return { rag, editor: this.buildEditor(rag, this.pickIdStrategy(owner)) };
213
+ }
214
+ duplicate(storeName, opts) {
215
+ return {
216
+ ok: false,
217
+ error: new DuplicateCollectionError(opts.collectionName ?? storeName, `store '${storeName}' already has a record`),
218
+ };
219
+ }
220
+ refuseCatalogName(name) {
221
+ if (name !== this.catalogTable)
222
+ return undefined;
223
+ return {
224
+ ok: false,
225
+ error: new RagError(`'${name}' is this provider's catalog table, not a collection`, 'INVALID_COLLECTION_NAME'),
226
+ };
227
+ }
228
+ dimension() {
229
+ return this.connection.dimension ?? this.defaultDimension;
230
+ }
231
+ async adminClient() {
232
+ if (this.clientFactory)
233
+ return this.clientFactory();
234
+ this.ownClient ??= createPgClient(this.connection).catch((err) => {
235
+ this.ownClient = undefined;
236
+ throw err;
237
+ });
238
+ return this.ownClient;
239
+ }
240
+ ensureCatalog(client) {
241
+ this.catalogReady ??= (async () => {
242
+ if (await this.tableExists(client, this.catalogTable))
243
+ return;
244
+ try {
245
+ await client.query(createCatalogTableSql(this.catalogTable));
246
+ }
247
+ catch (err) {
248
+ // Another process may have created it between the check and here.
249
+ if (!(await this.tableExists(client, this.catalogTable)))
250
+ throw err;
251
+ }
252
+ })().catch((err) => {
253
+ this.catalogReady = undefined;
254
+ throw err;
255
+ });
256
+ return this.catalogReady;
257
+ }
258
+ async tableExists(client, table) {
259
+ const { rows } = await client.query(tableExistsSql(), [quoteIdent(table)]);
260
+ return rows[0]?.present === true;
261
+ }
262
+ async recordExists(client, storeName) {
263
+ const { rows } = await client.query(recordExistsSql(this.catalogTable), [
264
+ storeName,
265
+ ]);
266
+ return rows.length > 0;
85
267
  }
86
268
  }
87
269
  //# sourceMappingURL=pg-vector-rag-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pg-vector-rag-provider.js","sourceRoot":"","sources":["../src/pg-vector-rag-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg-vector-rag-provider.js","sourceRoot":"","sources":["../src/pg-vector-rag-provider.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export interface PgClient {
9
9
  }>;
10
10
  end(): Promise<void>;
11
11
  }
12
+ /** Opens the pool a handle, or a provider's catalog work, talks through. */
13
+ export declare function createPgClient(cfg: PgVectorRagConfig): Promise<PgClient>;
12
14
  export declare class PgVectorRag implements IRag {
13
15
  private readonly collectionName;
14
16
  private readonly dimension;
@@ -20,7 +22,6 @@ export declare class PgVectorRag implements IRag {
20
22
  constructor(config: PgVectorRagConfig & {
21
23
  embedder: IEmbedder;
22
24
  }, injectedClient?: PgClient);
23
- private createDriverClient;
24
25
  ensureSchema(): Promise<void>;
25
26
  private maybeEnsureSchema;
26
27
  query(embedding: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
@@ -1 +1 @@
1
- {"version":3,"file":"pg-vector-rag.d.ts","sourceRoot":"","sources":["../src/pg-vector-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA0B,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASzD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,KAAK,CACH,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAMD,qBAAa,WAAY,YAAW,IAAI;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,MAAM,EAAE,iBAAiB,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,EACnD,cAAc,CAAC,EAAE,QAAQ;YAgBb,kBAAkB;IAqB1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAWrB,iBAAiB;IAIzB,KAAK,CACT,SAAS,EAAE,eAAe,EAC1B,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAuBnC,OAAO,CACX,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;IAyBxC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAa9C,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAW5B,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAIpB,WAAW;IAmBzB,MAAM,IAAI,iBAAiB;CAoC5B"}
1
+ {"version":3,"file":"pg-vector-rag.d.ts","sourceRoot":"","sources":["../src/pg-vector-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,QAAQ,EAET,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASzD,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,KAAK,CACH,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAMD,4EAA4E;AAC5E,wBAAsB,cAAc,CAClC,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,QAAQ,CAAC,CAmBnB;AAED,qBAAa,WAAY,YAAW,IAAI;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,MAAM,EAAE,iBAAiB,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,EACnD,cAAc,CAAC,EAAE,QAAQ;IAgBrB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAWrB,iBAAiB;IAIzB,KAAK,CACT,SAAS,EAAE,eAAe,EAC1B,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAuDnC,OAAO,CACX,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;IAyBxC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAa9C,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAW5B,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAIpB,WAAW;IAmBzB,MAAM,IAAI,iBAAiB;CAoC5B"}
@@ -1,9 +1,22 @@
1
- import { FallbackQueryEmbedding, RagError } from '@mcp-abap-adt/llm-agent';
1
+ import { FallbackQueryEmbedding, RagError, ragIdentityFilter, } from '@mcp-abap-adt/llm-agent';
2
2
  import { resolvePgConnectArgs } from './connection.js';
3
3
  import { assertCollectionName, createExtensionSql, createTableSql, quoteIdent, } from './schema.js';
4
4
  function vectorLiteral(vec) {
5
5
  return `'[${vec.join(',')}]'::vector`;
6
6
  }
7
+ /** Opens the pool a handle, or a provider's catalog work, talks through. */
8
+ export async function createPgClient(cfg) {
9
+ const args = await resolvePgConnectArgs(cfg);
10
+ const mod = (await import('pg'));
11
+ const PoolCtor = mod.Pool ?? mod.default?.Pool;
12
+ if (!PoolCtor)
13
+ throw new Error('pg module did not expose Pool');
14
+ const pool = new PoolCtor(args);
15
+ return {
16
+ query: (sql, params = []) => pool.query(sql, params),
17
+ end: () => pool.end(),
18
+ };
19
+ }
7
20
  export class PgVectorRag {
8
21
  collectionName;
9
22
  dimension;
@@ -22,22 +35,10 @@ export class PgVectorRag {
22
35
  // The rejection is re-thrown when clientPromise is actually awaited.
23
36
  const driverPromise = injectedClient
24
37
  ? Promise.resolve(injectedClient)
25
- : this.createDriverClient(config);
38
+ : createPgClient(config);
26
39
  driverPromise.catch(() => { });
27
40
  this.clientPromise = driverPromise;
28
41
  }
29
- async createDriverClient(cfg) {
30
- const args = resolvePgConnectArgs(cfg);
31
- const mod = (await import('pg'));
32
- const PoolCtor = mod.Pool ?? mod.default?.Pool;
33
- if (!PoolCtor)
34
- throw new Error('pg module did not expose Pool');
35
- const pool = new PoolCtor(args);
36
- return {
37
- query: (sql, params = []) => pool.query(sql, params),
38
- end: () => pool.end(),
39
- };
40
- }
41
42
  async ensureSchema() {
42
43
  if (this.schemaReady)
43
44
  return;
@@ -63,11 +64,41 @@ export class PgVectorRag {
63
64
  const client = await this.clientPromise;
64
65
  const table = quoteIdent(this.collectionName);
65
66
  const lit = vectorLiteral(vector);
66
- const sql = `SELECT id, text, metadata, vector <=> ${lit} AS score FROM ${table} ORDER BY vector <=> ${lit} LIMIT ${Math.max(1, k)}`;
67
- const { rows } = await client.query(sql);
67
+ // The filters, as parameterised conditions on the jsonb metadata (never
68
+ // interpolated) — the same contract VectorRag / QdrantRag apply:
69
+ // - session/user scope: `->>` yields NULL for a missing key, and
70
+ // NULL = $n is not true, so an unowned row is excluded;
71
+ // - `ragFilter.namespace`: the same, on `metadata.namespace`;
72
+ // - expiry: a numeric `metadata.ttl` (epoch seconds) in the past drops
73
+ // the row; a missing or non-numeric ttl never expires. The CASE keeps
74
+ // the float8 cast away from a non-numeric value, which would fail the
75
+ // whole query.
76
+ // The WHERE runs before ORDER BY … LIMIT: the table has no ANN index, so
77
+ // the scan is exact and LIMIT counts only matching rows.
78
+ const identity = ragIdentityFilter(options);
79
+ const targetNamespace = options?.ragFilter?.namespace;
80
+ const conditions = [];
81
+ const params = [];
82
+ if (identity?.sessionId !== undefined) {
83
+ params.push(identity.sessionId);
84
+ conditions.push(`metadata->>'sessionId' = $${params.length}`);
85
+ }
86
+ if (identity?.userId !== undefined) {
87
+ params.push(identity.userId);
88
+ conditions.push(`metadata->>'userId' = $${params.length}`);
89
+ }
90
+ if (typeof targetNamespace === 'string') {
91
+ params.push(targetNamespace);
92
+ conditions.push(`metadata->>'namespace' = $${params.length}`);
93
+ }
94
+ params.push(Date.now() / 1000);
95
+ conditions.push(`COALESCE(CASE WHEN jsonb_typeof(metadata->'ttl') = 'number' THEN (metadata->>'ttl')::float8 END, 'infinity'::float8) >= $${params.length}`);
96
+ const where = ` WHERE ${conditions.join(' AND ')}`;
97
+ const sql = `SELECT id, text, metadata, vector <=> ${lit} AS score FROM ${table}${where} ORDER BY vector <=> ${lit} LIMIT ${Math.max(1, k)}`;
98
+ const { rows } = await client.query(sql, params);
68
99
  const results = rows.map((row) => ({
69
100
  text: String(row.text ?? ''),
70
- metadata: row.metadata ?? {},
101
+ metadata: withId(row),
71
102
  score: 1 - Number(row.score ?? 0),
72
103
  }));
73
104
  return { ok: true, value: results };
@@ -90,7 +121,7 @@ export class PgVectorRag {
90
121
  ok: true,
91
122
  value: {
92
123
  text: String(row.text ?? ''),
93
- metadata: row.metadata ?? {},
124
+ metadata: withId(row),
94
125
  score: 1,
95
126
  },
96
127
  };
@@ -176,4 +207,12 @@ export class PgVectorRag {
176
207
  };
177
208
  }
178
209
  }
210
+ /**
211
+ * upsert keeps the id in its own column and out of the jsonb, so a read puts
212
+ * it back: readers find a record's id in its metadata, as every other store
213
+ * returns it (tool selection's toolNameFromRecord keys on it).
214
+ */
215
+ function withId(row) {
216
+ return { ...(row.metadata ?? {}), id: String(row.id) };
217
+ }
179
218
  //# sourceMappingURL=pg-vector-rag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pg-vector-rag.js","sourceRoot":"","sources":["../src/pg-vector-rag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg-vector-rag.js","sourceRoot":"","sources":["../src/pg-vector-rag.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export declare function assertCollectionName(name: string): void;
2
2
  export declare function quoteIdent(ident: string): string;
3
3
  export declare function createExtensionSql(): string;
4
- export declare function createTableSql(collection: string, dimension: number): string;
4
+ export declare function createTableSql(collection: string, dimension: number, opts?: {
5
+ ifNotExists?: boolean;
6
+ }): string;
5
7
  export declare function dropTableSql(collection: string): string;
6
8
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,MAAM,CAUR;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD"}
package/dist/schema.js CHANGED
@@ -12,9 +12,10 @@ export function quoteIdent(ident) {
12
12
  export function createExtensionSql() {
13
13
  return 'CREATE EXTENSION IF NOT EXISTS vector';
14
14
  }
15
- export function createTableSql(collection, dimension) {
15
+ export function createTableSql(collection, dimension, opts = {}) {
16
16
  const table = quoteIdent(collection);
17
- return `CREATE TABLE IF NOT EXISTS ${table} (
17
+ const clause = opts.ifNotExists === false ? '' : 'IF NOT EXISTS ';
18
+ return `CREATE TABLE ${clause}${table} (
18
19
  id VARCHAR(255) PRIMARY KEY,
19
20
  text TEXT,
20
21
  vector vector(${dimension}),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAChB,4BAA4B,IAAI,EAAE,EAClC,yBAAyB,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,GAAG,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,uCAAuC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,SAAiB;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,8BAA8B,KAAK;;;oBAGxB,SAAS;;;IAGzB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,wBAAwB,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAChB,4BAA4B,IAAI,EAAE,EAClC,yBAAyB,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,GAAG,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,uCAAuC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,SAAiB,EACjB,OAAkC,EAAE;IAEpC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAClE,OAAO,gBAAgB,MAAM,GAAG,KAAK;;;oBAGnB,SAAS;;;IAGzB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,wBAAwB,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1D,CAAC"}