@dooor-ai/cortexdb 0.3.0 → 0.3.2
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 +39 -2
- package/dist/collections/api.d.ts +3 -3
- package/dist/collections/api.d.ts.map +1 -1
- package/dist/collections/api.js +12 -5
- package/dist/collections/api.js.map +1 -1
- package/dist/schema-cli/index.d.ts +3 -0
- package/dist/schema-cli/index.d.ts.map +1 -0
- package/dist/schema-cli/index.js +515 -0
- package/dist/schema-cli/index.js.map +1 -0
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ CortexDB handles the complex infrastructure of vector databases (Qdrant), object
|
|
|
16
16
|
|
|
17
17
|
## Features
|
|
18
18
|
|
|
19
|
-
- **Multi-modal document processing**: Upload PDFs, DOCX, XLSX files and
|
|
19
|
+
- **Multi-modal document processing**: Upload PDFs, DOCX, XLSX files and automatically extract text with OCR fallback
|
|
20
20
|
- **Semantic search**: Vector-based search using embeddings from OpenAI, Gemini, or custom providers
|
|
21
21
|
- **Automatic chunking**: Smart text splitting optimized for RAG applications
|
|
22
22
|
- **Flexible schema**: Define collections with typed fields (string, number, boolean, file, array)
|
|
@@ -24,7 +24,7 @@ CortexDB handles the complex infrastructure of vector databases (Qdrant), object
|
|
|
24
24
|
- **Storage control**: Choose where each field is stored (PostgreSQL, Qdrant, MinIO)
|
|
25
25
|
- **Type-safe**: Full TypeScript support with comprehensive type definitions
|
|
26
26
|
- **Modern API**: Async/await using native fetch (Node.js 18+)
|
|
27
|
-
- **Infra management**:
|
|
27
|
+
- **Infra management**: Database (`client.databases`) and embedding provider (`client.embeddingProviders`) APIs built-in
|
|
28
28
|
|
|
29
29
|
## Installation
|
|
30
30
|
|
|
@@ -228,6 +228,43 @@ const results = await client.records.list('articles', {
|
|
|
228
228
|
});
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
+
### Schema CLI (YAML)
|
|
232
|
+
|
|
233
|
+
Instale o CLI (recomendado em devDependencies):
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
npm install --save-dev dooor
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Utilize o CLI unificado `dooor` para sincronizar schemas declarativos:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Verificar diferenças entre YAML local e CortexDB
|
|
243
|
+
npx dooor schema diff --dir dooor/schemas
|
|
244
|
+
|
|
245
|
+
# Criar coleções que ainda não existem
|
|
246
|
+
npx dooor schema apply --dir dooor/schemas
|
|
247
|
+
|
|
248
|
+
# Gerar tipos TypeScript para uso nos serviços
|
|
249
|
+
npx dooor schema generate-types --dir dooor/schemas --out src/generated/cortex-schema.ts
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Defina `CORTEXDB_CONNECTION` (ex.: `cortexdb://key@host:8000`) ou as variáveis `CORTEXDB_BASE_URL` + `CORTEXDB_API_KEY` antes de rodar os comandos. Se nenhum diretório for informado, o CLI procura automaticamente em `dooor/schemas`.
|
|
253
|
+
|
|
254
|
+
Para evitar repetir flags, configure `dooor/config.yaml` na raiz do projeto:
|
|
255
|
+
|
|
256
|
+
```yaml
|
|
257
|
+
cortexdb:
|
|
258
|
+
connection: env(CORTEXDB_CONNECTION)
|
|
259
|
+
defaultEmbeddingProvider: default-provider
|
|
260
|
+
|
|
261
|
+
schema:
|
|
262
|
+
dir: dooor/schemas
|
|
263
|
+
typesOut: src/generated/cortex-schema.ts
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Você pode sobrescrever com `dooor/config.local.yaml` ou apontar outro caminho via `DOOOR_CONFIG`.
|
|
267
|
+
|
|
231
268
|
### Semantic Search
|
|
232
269
|
|
|
233
270
|
Semantic search finds records by meaning, not just exact keyword matches. It uses vector embeddings to understand context.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides methods to create, read, update, and delete collections.
|
|
5
5
|
* Collections define the schema and structure for records.
|
|
6
6
|
*/
|
|
7
|
-
import { Collection, FieldDefinition } from "../types";
|
|
7
|
+
import { Collection, FieldDefinition, CollectionConfig } from "../types";
|
|
8
8
|
import { HTTPClient } from "../http/client";
|
|
9
9
|
/**
|
|
10
10
|
* API for managing CortexDB collections
|
|
@@ -57,7 +57,7 @@ export declare class CollectionsAPI {
|
|
|
57
57
|
* ], 'embedding-provider-id');
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
create(name: string, fields: FieldDefinition[],
|
|
60
|
+
create(name: string, fields: FieldDefinition[], config?: string | CollectionConfig): Promise<Collection>;
|
|
61
61
|
/**
|
|
62
62
|
* Update an existing collection's schema
|
|
63
63
|
*
|
|
@@ -73,7 +73,7 @@ export declare class CollectionsAPI {
|
|
|
73
73
|
* ]);
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
update(name: string, fields: FieldDefinition[]): Promise<Collection>;
|
|
76
|
+
update(name: string, fields: FieldDefinition[], config?: CollectionConfig): Promise<Collection>;
|
|
77
77
|
/**
|
|
78
78
|
* Delete a collection and all its records
|
|
79
79
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/collections/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/collections/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,qBAAa,cAAc;IAMb,OAAO,CAAC,IAAI;IALxB;;;;OAIG;gBACiB,IAAI,EAAE,UAAU;IAEpC;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAInC;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI5C;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EAAE,EACzB,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,GACjC,OAAO,CAAC,UAAU,CAAC;IAUtB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EAAE,EACzB,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IAQtB;;;;;;;;;OASG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C"}
|
package/dist/collections/api.js
CHANGED
|
@@ -63,10 +63,13 @@ class CollectionsAPI {
|
|
|
63
63
|
* ], 'embedding-provider-id');
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
|
-
async create(name, fields,
|
|
66
|
+
async create(name, fields, config) {
|
|
67
67
|
const payload = { name, fields };
|
|
68
|
-
if (
|
|
69
|
-
payload.config = { embedding_provider_id:
|
|
68
|
+
if (typeof config === "string") {
|
|
69
|
+
payload.config = { embedding_provider_id: config };
|
|
70
|
+
}
|
|
71
|
+
else if (config) {
|
|
72
|
+
payload.config = config;
|
|
70
73
|
}
|
|
71
74
|
return this.http.post("/collections", payload);
|
|
72
75
|
}
|
|
@@ -85,8 +88,12 @@ class CollectionsAPI {
|
|
|
85
88
|
* ]);
|
|
86
89
|
* ```
|
|
87
90
|
*/
|
|
88
|
-
async update(name, fields) {
|
|
89
|
-
|
|
91
|
+
async update(name, fields, config) {
|
|
92
|
+
const payload = { fields };
|
|
93
|
+
if (config) {
|
|
94
|
+
payload.config = config;
|
|
95
|
+
}
|
|
96
|
+
return this.http.put(`/collections/${name}`, payload);
|
|
90
97
|
}
|
|
91
98
|
/**
|
|
92
99
|
* Delete a collection and all its records
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/collections/api.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH;;GAEG;AACH,MAAa,cAAc;IACzB;;;;OAIG;IACH,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,cAAc,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,MAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/collections/api.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH;;GAEG;AACH,MAAa,cAAc;IACzB;;;;OAIG;IACH,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,cAAc,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,MAAyB,EACzB,MAAkC;QAElC,MAAM,OAAO,GAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC;QACrD,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,cAAc,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,MAAyB,EACzB,MAAyB;QAEzB,MAAM,OAAO,GAAQ,EAAE,MAAM,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,gBAAgB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AA5GD,wCA4GC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
10
|
+
const yaml_1 = require("yaml");
|
|
11
|
+
const __1 = require("..");
|
|
12
|
+
let cachedConfig = null;
|
|
13
|
+
function resolveEnvExpression(value) {
|
|
14
|
+
const envPattern = /^env\(([^,\s)]+)(?:,\s*([^\s)]+))?\)$/i;
|
|
15
|
+
const match = value.match(envPattern);
|
|
16
|
+
if (!match) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
const envName = match[1];
|
|
20
|
+
const fallback = match[2];
|
|
21
|
+
const envValue = node_process_1.default.env[envName];
|
|
22
|
+
if (envValue === undefined || envValue === null || envValue === "") {
|
|
23
|
+
if (fallback !== undefined) {
|
|
24
|
+
return fallback;
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Environment variable '${envName}' is not defined`);
|
|
27
|
+
}
|
|
28
|
+
return envValue;
|
|
29
|
+
}
|
|
30
|
+
function resolveConfigValue(value) {
|
|
31
|
+
if (typeof value === "string") {
|
|
32
|
+
if (/^env\([^)]*\)$/i.test(value)) {
|
|
33
|
+
return resolveEnvExpression(value);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
return value.map(resolveConfigValue);
|
|
39
|
+
}
|
|
40
|
+
if (value && typeof value === "object") {
|
|
41
|
+
const result = {};
|
|
42
|
+
for (const [key, val] of Object.entries(value)) {
|
|
43
|
+
result[key] = resolveConfigValue(val);
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function loadConfig() {
|
|
50
|
+
if (cachedConfig) {
|
|
51
|
+
return cachedConfig;
|
|
52
|
+
}
|
|
53
|
+
const candidatePaths = [
|
|
54
|
+
node_process_1.default.env.DOOOR_CONFIG,
|
|
55
|
+
node_path_1.default.resolve(node_process_1.default.cwd(), "dooor/config.local.yaml"),
|
|
56
|
+
node_path_1.default.resolve(node_process_1.default.cwd(), "dooor/config.yaml"),
|
|
57
|
+
].filter(Boolean);
|
|
58
|
+
for (const candidate of candidatePaths) {
|
|
59
|
+
if (node_fs_1.default.existsSync(candidate)) {
|
|
60
|
+
const content = node_fs_1.default.readFileSync(candidate, "utf-8");
|
|
61
|
+
const parsed = (0, yaml_1.parse)(content);
|
|
62
|
+
if (!parsed || typeof parsed !== "object") {
|
|
63
|
+
throw new Error(`Invalid configuration structure in ${candidate}`);
|
|
64
|
+
}
|
|
65
|
+
cachedConfig = resolveConfigValue(parsed);
|
|
66
|
+
return cachedConfig;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
cachedConfig = {};
|
|
70
|
+
return cachedConfig;
|
|
71
|
+
}
|
|
72
|
+
function printUsage() {
|
|
73
|
+
const scriptName = node_path_1.default.basename(node_process_1.default.argv[1] || "dooor");
|
|
74
|
+
console.log(`\nCortexDB Schema CLI\n\n` +
|
|
75
|
+
`Usage:\n` +
|
|
76
|
+
` ${scriptName} schema diff [--dir path]\n` +
|
|
77
|
+
` ${scriptName} schema apply [--dir path]\n` +
|
|
78
|
+
` ${scriptName} schema generate-types --out src/generated/cortex-schema.ts [--dir path]\n` +
|
|
79
|
+
`\nEnvironment variables:\n` +
|
|
80
|
+
` DOOOR_CONFIG Caminho para o config YAML (default ./dooor/config.yaml)\n` +
|
|
81
|
+
` CORTEXDB_CONNECTION Full connection string (cortexdb://key@host:port)\n` +
|
|
82
|
+
` CORTEXDB_BASE_URL Base URL (default http://localhost:8000)\n` +
|
|
83
|
+
` CORTEXDB_API_KEY API key (required if no connection string)\n` +
|
|
84
|
+
` CORTEXDB_SCHEMA_DIR Override manual do diretório de schemas\n`);
|
|
85
|
+
}
|
|
86
|
+
function parseArgs(argv) {
|
|
87
|
+
const opts = {};
|
|
88
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
89
|
+
const arg = argv[i];
|
|
90
|
+
if (arg.startsWith("--")) {
|
|
91
|
+
const key = arg.slice(2);
|
|
92
|
+
const next = argv[i + 1];
|
|
93
|
+
if (!next || next.startsWith("--")) {
|
|
94
|
+
opts[key] = true;
|
|
95
|
+
i -= 1;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
opts[key] = next;
|
|
99
|
+
i += 1;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return opts;
|
|
104
|
+
}
|
|
105
|
+
function resolveSchemaDir(optionDir) {
|
|
106
|
+
if (typeof optionDir === "string" && optionDir.trim()) {
|
|
107
|
+
return node_path_1.default.resolve(node_process_1.default.cwd(), optionDir);
|
|
108
|
+
}
|
|
109
|
+
const config = loadConfig();
|
|
110
|
+
if (config.schema?.dir) {
|
|
111
|
+
return node_path_1.default.resolve(node_process_1.default.cwd(), config.schema.dir);
|
|
112
|
+
}
|
|
113
|
+
const envDir = node_process_1.default.env.CORTEXDB_SCHEMA_DIR;
|
|
114
|
+
if (envDir) {
|
|
115
|
+
return node_path_1.default.resolve(node_process_1.default.cwd(), envDir);
|
|
116
|
+
}
|
|
117
|
+
const candidateDirs = [
|
|
118
|
+
node_path_1.default.resolve(node_process_1.default.cwd(), "dooor/schemas"),
|
|
119
|
+
node_path_1.default.resolve(node_process_1.default.cwd(), "schemas"),
|
|
120
|
+
];
|
|
121
|
+
for (const candidate of candidateDirs) {
|
|
122
|
+
if (node_fs_1.default.existsSync(candidate)) {
|
|
123
|
+
return candidate;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return candidateDirs[0];
|
|
127
|
+
}
|
|
128
|
+
function loadYamlFiles(schemaDir) {
|
|
129
|
+
if (!node_fs_1.default.existsSync(schemaDir)) {
|
|
130
|
+
throw new Error(`Schema directory not found: ${schemaDir}`);
|
|
131
|
+
}
|
|
132
|
+
const files = node_fs_1.default.readdirSync(schemaDir).filter((file) => file.endsWith(".yml") || file.endsWith(".yaml"));
|
|
133
|
+
if (files.length === 0) {
|
|
134
|
+
throw new Error(`No YAML schema files found in ${schemaDir}`);
|
|
135
|
+
}
|
|
136
|
+
const collections = [];
|
|
137
|
+
for (const file of files) {
|
|
138
|
+
const fullPath = node_path_1.default.join(schemaDir, file);
|
|
139
|
+
const content = node_fs_1.default.readFileSync(fullPath, "utf-8");
|
|
140
|
+
const parsed = (0, yaml_1.parse)(content);
|
|
141
|
+
if (!parsed || typeof parsed !== "object") {
|
|
142
|
+
throw new Error(`Invalid YAML structure in ${file}`);
|
|
143
|
+
}
|
|
144
|
+
if (!parsed.collections || !Array.isArray(parsed.collections)) {
|
|
145
|
+
throw new Error(`YAML file ${file} must contain a 'collections' array`);
|
|
146
|
+
}
|
|
147
|
+
parsed.collections.forEach((collection) => {
|
|
148
|
+
if (!collection || typeof collection !== "object") {
|
|
149
|
+
throw new Error(`Invalid collection entry in ${file}`);
|
|
150
|
+
}
|
|
151
|
+
collections.push(collection);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
version: 1,
|
|
156
|
+
collections,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function validateCollection(collection) {
|
|
160
|
+
if (!collection.name || typeof collection.name !== "string") {
|
|
161
|
+
throw new Error(`Collection is missing a valid name`);
|
|
162
|
+
}
|
|
163
|
+
if (!collection.fields || !Array.isArray(collection.fields) || collection.fields.length === 0) {
|
|
164
|
+
throw new Error(`Collection '${collection.name}' must declare at least one field`);
|
|
165
|
+
}
|
|
166
|
+
collection.fields.forEach((field) => {
|
|
167
|
+
if (!field.name) {
|
|
168
|
+
throw new Error(`Collection '${collection.name}': field missing name`);
|
|
169
|
+
}
|
|
170
|
+
if (!field.type) {
|
|
171
|
+
throw new Error(`Collection '${collection.name}': field '${field.name}' missing type`);
|
|
172
|
+
}
|
|
173
|
+
const allowedTypes = Object.values(__1.FieldType);
|
|
174
|
+
if (!allowedTypes.includes(field.type)) {
|
|
175
|
+
throw new Error(`Collection '${collection.name}': field '${field.name}' has invalid type '${field.type}'. Allowed: ${allowedTypes.join(", ")}`);
|
|
176
|
+
}
|
|
177
|
+
const defaultProvider = loadConfig().cortexdb?.defaultEmbeddingProvider;
|
|
178
|
+
if (field.vectorize && !((collection.config && collection.config.embedding_provider_id) || defaultProvider)) {
|
|
179
|
+
throw new Error(`Collection '${collection.name}': field '${field.name}' requires embedding_provider_id in config or default provider in config.yaml`);
|
|
180
|
+
}
|
|
181
|
+
if (field.type === "enum" && (!field.values || field.values.length === 0)) {
|
|
182
|
+
throw new Error(`Collection '${collection.name}': enum field '${field.name}' must declare 'values'`);
|
|
183
|
+
}
|
|
184
|
+
if (field.type === "array" && (!field.schema || field.schema.length === 0)) {
|
|
185
|
+
throw new Error(`Collection '${collection.name}': array field '${field.name}' must declare nested schema`);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
function normalizeStoreIn(values) {
|
|
190
|
+
if (!values) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const allowedLocations = Object.values(__1.StoreLocation);
|
|
194
|
+
return values
|
|
195
|
+
.map((value) => value.toLowerCase())
|
|
196
|
+
.map((value) => {
|
|
197
|
+
if (!allowedLocations.includes(value)) {
|
|
198
|
+
throw new Error(`Invalid store_in value '${value}'. Allowed: ${allowedLocations.join(", ")}`);
|
|
199
|
+
}
|
|
200
|
+
return value;
|
|
201
|
+
})
|
|
202
|
+
.sort();
|
|
203
|
+
}
|
|
204
|
+
function toFieldDefinition(field) {
|
|
205
|
+
const base = {
|
|
206
|
+
name: field.name,
|
|
207
|
+
type: field.type,
|
|
208
|
+
description: field.description,
|
|
209
|
+
required: field.required ?? false,
|
|
210
|
+
indexed: field.indexed ?? false,
|
|
211
|
+
unique: field.unique ?? false,
|
|
212
|
+
filterable: field.filterable ?? false,
|
|
213
|
+
vectorize: field.vectorize ?? false,
|
|
214
|
+
default: field.default,
|
|
215
|
+
values: field.values,
|
|
216
|
+
store_in: normalizeStoreIn(field.store_in),
|
|
217
|
+
extract_config: field.extract_config,
|
|
218
|
+
};
|
|
219
|
+
if (field.schema && field.schema.length > 0) {
|
|
220
|
+
base.schema = field.schema.map(toFieldDefinition);
|
|
221
|
+
}
|
|
222
|
+
return base;
|
|
223
|
+
}
|
|
224
|
+
function sortFields(fields) {
|
|
225
|
+
return [...fields].sort((a, b) => a.name.localeCompare(b.name));
|
|
226
|
+
}
|
|
227
|
+
function withDefaults(collection) {
|
|
228
|
+
const config = loadConfig();
|
|
229
|
+
const defaultProvider = config.cortexdb?.defaultEmbeddingProvider;
|
|
230
|
+
const requiresProvider = collection.fields.some((field) => field.vectorize);
|
|
231
|
+
if (!requiresProvider) {
|
|
232
|
+
return collection;
|
|
233
|
+
}
|
|
234
|
+
const existingProvider = collection.config?.embedding_provider_id;
|
|
235
|
+
if (existingProvider || !defaultProvider) {
|
|
236
|
+
return collection;
|
|
237
|
+
}
|
|
238
|
+
const newConfig = { ...(collection.config ?? {}), embedding_provider_id: defaultProvider };
|
|
239
|
+
return { ...collection, config: newConfig };
|
|
240
|
+
}
|
|
241
|
+
function normalizeField(field) {
|
|
242
|
+
return {
|
|
243
|
+
name: field.name,
|
|
244
|
+
type: field.type,
|
|
245
|
+
description: field.description ?? null,
|
|
246
|
+
required: field.required ?? false,
|
|
247
|
+
indexed: field.indexed ?? false,
|
|
248
|
+
unique: field.unique ?? false,
|
|
249
|
+
filterable: field.filterable ?? false,
|
|
250
|
+
vectorize: field.vectorize ?? false,
|
|
251
|
+
default: field.default ?? null,
|
|
252
|
+
values: field.values ? [...field.values].sort() : null,
|
|
253
|
+
store_in: field.store_in ? [...field.store_in].sort() : [__1.StoreLocation.POSTGRES],
|
|
254
|
+
extract_config: field.extract_config ?? null,
|
|
255
|
+
schema: field.schema ? sortFields(field.schema).map(normalizeField) : null,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function normalizeConfig(config) {
|
|
259
|
+
if (!config) {
|
|
260
|
+
return {};
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
embedding_provider_id: config.embedding_provider_id ?? null,
|
|
264
|
+
chunk_size: config.chunk_size ?? null,
|
|
265
|
+
chunk_overlap: config.chunk_overlap ?? null,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function diffCollections(desired, current) {
|
|
269
|
+
const currentMap = new Map();
|
|
270
|
+
current.forEach((collection) => {
|
|
271
|
+
currentMap.set(collection.name, collection);
|
|
272
|
+
});
|
|
273
|
+
const create = [];
|
|
274
|
+
const update = [];
|
|
275
|
+
desired.forEach((collection) => {
|
|
276
|
+
const normalized = withDefaults(collection);
|
|
277
|
+
validateCollection(normalized);
|
|
278
|
+
const existing = currentMap.get(normalized.name);
|
|
279
|
+
if (!existing) {
|
|
280
|
+
create.push(normalized);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const desiredFields = sortFields(normalized.fields.map(toFieldDefinition)).map(normalizeField);
|
|
284
|
+
const existingFields = sortFields(existing.fields ?? []).map(normalizeField);
|
|
285
|
+
const desiredConfig = normalizeConfig(normalized.config);
|
|
286
|
+
const existingConfig = normalizeConfig(existing.config);
|
|
287
|
+
const diffs = [];
|
|
288
|
+
if (JSON.stringify(desiredFields) !== JSON.stringify(existingFields)) {
|
|
289
|
+
diffs.push("fields differ");
|
|
290
|
+
}
|
|
291
|
+
if (JSON.stringify(desiredConfig) !== JSON.stringify(existingConfig)) {
|
|
292
|
+
diffs.push("config differ");
|
|
293
|
+
}
|
|
294
|
+
if (diffs.length > 0) {
|
|
295
|
+
update.push({ desired: normalized, existing, differences: diffs });
|
|
296
|
+
}
|
|
297
|
+
currentMap.delete(normalized.name);
|
|
298
|
+
});
|
|
299
|
+
const missing = Array.from(currentMap.keys());
|
|
300
|
+
return { create, update, missing };
|
|
301
|
+
}
|
|
302
|
+
function getClient() {
|
|
303
|
+
const config = loadConfig();
|
|
304
|
+
const connection = config.cortexdb?.connection ?? node_process_1.default.env.CORTEXDB_CONNECTION;
|
|
305
|
+
if (connection) {
|
|
306
|
+
return new __1.CortexClient(connection);
|
|
307
|
+
}
|
|
308
|
+
const baseUrl = config.cortexdb?.baseUrl ?? node_process_1.default.env.CORTEXDB_BASE_URL ?? "http://localhost:8000";
|
|
309
|
+
const apiKey = config.cortexdb?.apiKey ?? node_process_1.default.env.CORTEXDB_API_KEY;
|
|
310
|
+
if (!apiKey) {
|
|
311
|
+
throw new Error("CORTEXDB_API_KEY (or cortexdb.connection) is required to run this command.");
|
|
312
|
+
}
|
|
313
|
+
return new __1.CortexClient({ baseUrl, apiKey });
|
|
314
|
+
}
|
|
315
|
+
async function commandDiff(schemaDir) {
|
|
316
|
+
const desiredSchema = loadYamlFiles(schemaDir);
|
|
317
|
+
const client = getClient();
|
|
318
|
+
const currentCollections = await client.collections.list();
|
|
319
|
+
const diff = diffCollections(desiredSchema.collections, currentCollections);
|
|
320
|
+
if (diff.create.length === 0 && diff.update.length === 0 && diff.missing.length === 0) {
|
|
321
|
+
console.log("✔ Schema is up to date.");
|
|
322
|
+
return 0;
|
|
323
|
+
}
|
|
324
|
+
if (diff.create.length > 0) {
|
|
325
|
+
console.log("Collections to create:");
|
|
326
|
+
diff.create.forEach((collection) => {
|
|
327
|
+
console.log(` + ${collection.name}`);
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
if (diff.update.length > 0) {
|
|
331
|
+
console.log("Collections with differences (manual review required):");
|
|
332
|
+
diff.update.forEach((entry) => {
|
|
333
|
+
console.log(` ~ ${entry.desired.name} -> ${entry.differences.join(", ")}`);
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
if (diff.missing.length > 0) {
|
|
337
|
+
console.log("Collections present in CortexDB but not in YAML (will be kept):");
|
|
338
|
+
diff.missing.forEach((name) => {
|
|
339
|
+
console.log(` ? ${name}`);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
return diff.update.length > 0 ? 1 : 0;
|
|
343
|
+
}
|
|
344
|
+
async function commandApply(schemaDir) {
|
|
345
|
+
const desiredSchema = loadYamlFiles(schemaDir);
|
|
346
|
+
const client = getClient();
|
|
347
|
+
const currentCollections = await client.collections.list();
|
|
348
|
+
const diff = diffCollections(desiredSchema.collections, currentCollections);
|
|
349
|
+
if (diff.create.length === 0 && diff.update.length === 0) {
|
|
350
|
+
console.log("✔ Nothing to apply.");
|
|
351
|
+
return 0;
|
|
352
|
+
}
|
|
353
|
+
for (const collection of diff.create) {
|
|
354
|
+
console.log(`Creating collection ${collection.name}...`);
|
|
355
|
+
const fields = collection.fields.map(toFieldDefinition);
|
|
356
|
+
await client.collections.create(collection.name, fields, collection.config);
|
|
357
|
+
}
|
|
358
|
+
for (const entry of diff.update) {
|
|
359
|
+
console.log(`Updating collection ${entry.desired.name}...`);
|
|
360
|
+
const fields = entry.desired.fields.map(toFieldDefinition);
|
|
361
|
+
await client.collections.update(entry.desired.name, fields, entry.desired.config);
|
|
362
|
+
}
|
|
363
|
+
if (diff.missing.length > 0) {
|
|
364
|
+
console.log("⚠ Collections present no CortexDB mas ausentes no YAML (não serão removidas):");
|
|
365
|
+
diff.missing.forEach((name) => console.log(` ? ${name}`));
|
|
366
|
+
}
|
|
367
|
+
console.log("✔ Apply completed.");
|
|
368
|
+
return 0;
|
|
369
|
+
}
|
|
370
|
+
function mapFieldTypeToTs(field) {
|
|
371
|
+
switch (field.type) {
|
|
372
|
+
case __1.FieldType.STRING:
|
|
373
|
+
case __1.FieldType.TEXT:
|
|
374
|
+
case __1.FieldType.FILE:
|
|
375
|
+
case __1.FieldType.DATE:
|
|
376
|
+
case __1.FieldType.DATETIME:
|
|
377
|
+
return "string";
|
|
378
|
+
case __1.FieldType.INT:
|
|
379
|
+
case __1.FieldType.FLOAT:
|
|
380
|
+
return "number";
|
|
381
|
+
case __1.FieldType.BOOLEAN:
|
|
382
|
+
return "boolean";
|
|
383
|
+
case __1.FieldType.JSON:
|
|
384
|
+
return "any";
|
|
385
|
+
case __1.FieldType.ENUM:
|
|
386
|
+
return field.values && field.values.length > 0
|
|
387
|
+
? field.values.map((value) => JSON.stringify(value)).join(" | ")
|
|
388
|
+
: "string";
|
|
389
|
+
case __1.FieldType.ARRAY:
|
|
390
|
+
return "any[]";
|
|
391
|
+
default:
|
|
392
|
+
return "any";
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
function toPascalCase(value) {
|
|
396
|
+
return value
|
|
397
|
+
.split(/[_-]/g)
|
|
398
|
+
.map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
|
|
399
|
+
.join("");
|
|
400
|
+
}
|
|
401
|
+
function buildTypesContent(schemaDir, schema) {
|
|
402
|
+
const timestamp = new Date().toISOString();
|
|
403
|
+
const collectionNames = schema.collections.map((collection) => collection.name);
|
|
404
|
+
const lines = [];
|
|
405
|
+
lines.push("/* eslint-disable */");
|
|
406
|
+
lines.push("// This file was auto-generated by cortexdb schema CLI");
|
|
407
|
+
lines.push(`// Generated at ${timestamp}`);
|
|
408
|
+
lines.push("\nimport { FieldType, StoreLocation } from '@dooor-ai/cortexdb';\n");
|
|
409
|
+
lines.push("export const collections = {");
|
|
410
|
+
schema.collections.forEach((collection) => {
|
|
411
|
+
lines.push(` '${collection.name}': {`);
|
|
412
|
+
lines.push(" fields: [");
|
|
413
|
+
collection.fields.forEach((field) => {
|
|
414
|
+
const storeIn = field.store_in ? `[${field.store_in.map((value) => `'${value}'`).join(", ")}]` : "undefined";
|
|
415
|
+
lines.push(` { name: '${field.name}', type: FieldType.${field.type.toUpperCase()}, required: ${field.required ? "true" : "false"}, storeIn: ${storeIn} },`);
|
|
416
|
+
});
|
|
417
|
+
lines.push(" ]");
|
|
418
|
+
lines.push(" },");
|
|
419
|
+
});
|
|
420
|
+
lines.push("} as const;\n");
|
|
421
|
+
lines.push("export type CollectionName = keyof typeof collections;\n");
|
|
422
|
+
schema.collections.forEach((collection) => {
|
|
423
|
+
const interfaceName = `${toPascalCase(collection.name)}Record`;
|
|
424
|
+
lines.push(`export interface ${interfaceName} {`);
|
|
425
|
+
collection.fields.forEach((field) => {
|
|
426
|
+
const optional = field.required ? "" : "?";
|
|
427
|
+
lines.push(` ${field.name}${optional}: ${mapFieldTypeToTs(field)};`);
|
|
428
|
+
});
|
|
429
|
+
lines.push("}\n");
|
|
430
|
+
});
|
|
431
|
+
lines.push("export interface CortexRecordMap {");
|
|
432
|
+
schema.collections.forEach((collection) => {
|
|
433
|
+
const interfaceName = `${toPascalCase(collection.name)}Record`;
|
|
434
|
+
lines.push(` '${collection.name}': ${interfaceName};`);
|
|
435
|
+
});
|
|
436
|
+
lines.push("}\n");
|
|
437
|
+
lines.push("export type CortexRecord<C extends CollectionName> = CortexRecordMap[C];\n");
|
|
438
|
+
lines.push(`export const SCHEMA_DIR = '${schemaDir.replace(/\\\\/g, "\\")}';\n`);
|
|
439
|
+
return lines.join("\n");
|
|
440
|
+
}
|
|
441
|
+
async function commandGenerateTypes(schemaDir, outPath) {
|
|
442
|
+
const config = loadConfig();
|
|
443
|
+
let resolvedOut;
|
|
444
|
+
if (typeof outPath === "string" && outPath.trim()) {
|
|
445
|
+
resolvedOut = outPath;
|
|
446
|
+
}
|
|
447
|
+
else if (config.schema?.typesOut) {
|
|
448
|
+
resolvedOut = config.schema.typesOut;
|
|
449
|
+
}
|
|
450
|
+
if (!resolvedOut) {
|
|
451
|
+
throw new Error("--out <path> is required for generate-types command when no schema.typesOut is configured");
|
|
452
|
+
}
|
|
453
|
+
const desiredSchema = loadYamlFiles(schemaDir);
|
|
454
|
+
desiredSchema.collections.forEach(validateCollection);
|
|
455
|
+
const absoluteOut = node_path_1.default.resolve(node_process_1.default.cwd(), resolvedOut);
|
|
456
|
+
const content = buildTypesContent(schemaDir, desiredSchema);
|
|
457
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(absoluteOut), { recursive: true });
|
|
458
|
+
node_fs_1.default.writeFileSync(absoluteOut, content, "utf-8");
|
|
459
|
+
console.log(`✔ Types generated at ${absoluteOut}`);
|
|
460
|
+
return 0;
|
|
461
|
+
}
|
|
462
|
+
async function main() {
|
|
463
|
+
const argv = node_process_1.default.argv.slice(2);
|
|
464
|
+
if (argv.length === 0) {
|
|
465
|
+
printUsage();
|
|
466
|
+
node_process_1.default.exit(1);
|
|
467
|
+
}
|
|
468
|
+
const [topic, command, ...rest] = argv;
|
|
469
|
+
if (!topic || topic === "help" || topic === "--help" || topic === "-h") {
|
|
470
|
+
printUsage();
|
|
471
|
+
node_process_1.default.exit(0);
|
|
472
|
+
}
|
|
473
|
+
if (topic !== "schema") {
|
|
474
|
+
console.error(`Unknown topic '${topic}'. Expected 'schema'.\n`);
|
|
475
|
+
printUsage();
|
|
476
|
+
node_process_1.default.exit(1);
|
|
477
|
+
}
|
|
478
|
+
if (!command) {
|
|
479
|
+
printUsage();
|
|
480
|
+
node_process_1.default.exit(1);
|
|
481
|
+
}
|
|
482
|
+
const options = parseArgs(rest);
|
|
483
|
+
const schemaDir = resolveSchemaDir(options.dir);
|
|
484
|
+
try {
|
|
485
|
+
let exitCode = 0;
|
|
486
|
+
if (command === "diff") {
|
|
487
|
+
exitCode = await commandDiff(schemaDir);
|
|
488
|
+
}
|
|
489
|
+
else if (command === "apply") {
|
|
490
|
+
exitCode = await commandApply(schemaDir);
|
|
491
|
+
}
|
|
492
|
+
else if (command === "generate-types") {
|
|
493
|
+
exitCode = await commandGenerateTypes(schemaDir, options.out);
|
|
494
|
+
}
|
|
495
|
+
else if (command === "help" || command === "--help" || command === "-h") {
|
|
496
|
+
printUsage();
|
|
497
|
+
node_process_1.default.exit(0);
|
|
498
|
+
}
|
|
499
|
+
else {
|
|
500
|
+
console.error(`Unknown command '${command}'\n`);
|
|
501
|
+
printUsage();
|
|
502
|
+
node_process_1.default.exit(1);
|
|
503
|
+
}
|
|
504
|
+
node_process_1.default.exit(exitCode);
|
|
505
|
+
}
|
|
506
|
+
catch (error) {
|
|
507
|
+
console.error(`✖ ${error.message}`);
|
|
508
|
+
node_process_1.default.exit(1);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
main().catch((error) => {
|
|
512
|
+
console.error(error);
|
|
513
|
+
node_process_1.default.exit(1);
|
|
514
|
+
});
|
|
515
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-cli/index.ts"],"names":[],"mappings":";;;;;;AAEA,sDAAyB;AACzB,0DAA6B;AAC7B,gEAAmC;AACnC,+BAA0C;AAE1C,0BAOY;AAmDZ,IAAI,YAAY,GAAuB,IAAI,CAAC;AAE5C,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,wCAAwC,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,sBAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,kBAAkB,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,sBAAO,CAAC,GAAG,CAAC,YAAY;QACxB,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC;QACtD,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC;KACjD,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAE9B,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACvC,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAA,YAAS,EAAC,OAAO,CAA4B,CAAC;YAC7D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAgB,CAAC;YACzD,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,YAAY,GAAG,EAAE,CAAC;IAClB,OAAO,YAAY,CAAC;AACtB,CAAC;AAQD,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,mBAAI,CAAC,QAAQ,CAAC,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,2BAA2B;QACrC,UAAU;QACV,KAAK,UAAU,6BAA6B;QAC5C,KAAK,UAAU,8BAA8B;QAC7C,KAAK,UAAU,4EAA4E;QAC3F,4BAA4B;QAC5B,0FAA0F;QAC1F,mFAAmF;QACnF,0EAA0E;QAC1E,4EAA4E;QAC5E,yEAAyE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,SAA4B;IACpD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACvB,OAAO,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,sBAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;QAC5C,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB;IACtC,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,iBAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,YAAS,EAAC,OAAO,CAAmC,CAAC;QACpE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,qCAAqC,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,UAA2B,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAyB;IACnD,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,mCAAmC,CAAC,CAAC;IACrF,CAAC;IAED,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,aAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAiB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,eAAe,UAAU,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,uBAAuB,KAAK,CAAC,IAAI,eAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/H,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC;QACxE,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,eAAe,CAAC,EAAE,CAAC;YAC5G,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,+EAA+E,CAAC,CAAC;QACxJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,kBAAkB,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,mBAAmB,KAAK,CAAC,IAAI,8BAA8B,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiB;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;IACtD,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAsB,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,eAAe,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,KAAsB,CAAC;IAChC,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,MAAM,IAAI,GAAoB;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAiB;QAC7B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,UAAyB;IAC7C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAClE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAClE,IAAI,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAqB,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,qBAAqB,EAAE,eAAe,EAAE,CAAC;IAC7G,OAAO,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB;IAC5C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;QAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QACtD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAa,CAAC,QAAQ,CAAC;QAChF,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC5C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,IAAI;QAC3D,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;QACrC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAwB,EAAE,OAAqB;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC7B,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAmF,EAAE,CAAC;IAElG,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC5C,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/F,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,sBAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,gBAAY,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,sBAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uBAAuB,CAAC;IACrG,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,sBAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,IAAI,gBAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE5E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE5E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;QAC7F,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAS,CAAC,MAAM,CAAC;QACtB,KAAK,aAAS,CAAC,IAAI,CAAC;QACpB,KAAK,aAAS,CAAC,IAAI,CAAC;QACpB,KAAK,aAAS,CAAC,IAAI,CAAC;QACpB,KAAK,aAAS,CAAC,QAAQ;YACrB,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAS,CAAC,GAAG,CAAC;QACnB,KAAK,aAAS,CAAC,KAAK;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,aAAS,CAAC,OAAO;YACpB,OAAO,SAAS,CAAC;QACnB,KAAK,aAAS,CAAC,IAAI;YACjB,OAAO,KAAK,CAAC;QACf,KAAK,aAAS,CAAC,IAAI;YACjB,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAC5C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChE,CAAC,CAAC,QAAQ,CAAC;QACf,KAAK,aAAS,CAAC,KAAK;YAClB,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,MAAiB;IAC7D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAEjF,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;YAC9G,KAAK,CAAC,IAAI,CACR,kBAAkB,KAAK,CAAC,IAAI,sBAAsB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,cAAc,OAAO,KAAK,CACrJ,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE5B,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAEvE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,oBAAoB,aAAa,IAAI,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,QAAQ,KAAK,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAEzF,KAAK,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,OAA0B;IAC/E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,WAA+B,CAAC;IACpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/C,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,mBAAI,CAAC,OAAO,CAAC,sBAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5D,iBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,iBAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,sBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,UAAU,EAAE,CAAC;QACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACvE,UAAU,EAAE,CAAC;QACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,yBAAyB,CAAC,CAAC;QAChE,UAAU,EAAE,CAAC;QACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,CAAC;QACH,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,QAAQ,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/B,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;YACxC,QAAQ,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1E,UAAU,EAAE,CAAC;YACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,KAAK,CAAC,CAAC;YAChD,UAAU,EAAE,CAAC;YACb,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,sBAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dooor-ai/cortexdb",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Official TypeScript/JavaScript SDK for CortexDB - Multi-modal RAG Platform with advanced document processing",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"cortexdb-schema": "dist/schema-cli/index.js"
|
|
9
|
+
},
|
|
7
10
|
"files": [
|
|
8
11
|
"dist",
|
|
9
12
|
"README.md",
|
|
@@ -57,5 +60,7 @@
|
|
|
57
60
|
"prettier": "^3.0.0",
|
|
58
61
|
"typescript": "^5.0.0"
|
|
59
62
|
},
|
|
60
|
-
"dependencies": {
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"yaml": "^2.5.1"
|
|
65
|
+
}
|
|
61
66
|
}
|