@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 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 automaticamente extrair texto com OCR fallback
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**: APIs de bancos (`client.databases`) e provedores de embedding (`client.embeddingProviders`)
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[], embedding_provider?: string): Promise<Collection>;
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,EAAoB,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,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,UAAU,CAAC;IAQtB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAI1E;;;;;;;;;OASG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C"}
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"}
@@ -63,10 +63,13 @@ class CollectionsAPI {
63
63
  * ], 'embedding-provider-id');
64
64
  * ```
65
65
  */
66
- async create(name, fields, embedding_provider) {
66
+ async create(name, fields, config) {
67
67
  const payload = { name, fields };
68
- if (embedding_provider) {
69
- payload.config = { embedding_provider_id: embedding_provider };
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
- return this.http.put(`/collections/${name}`, { fields });
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,kBAA2B;QAE3B,MAAM,OAAO,GAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtC,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,cAAc,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,MAAyB;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,gBAAgB,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,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;AAlGD,wCAkGC"}
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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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":"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"}
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@dooor-ai/cortexdb",
3
- "version": "0.3.0",
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
  }