@dooor-ai/cortexdb 0.2.0 → 0.3.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.
@@ -0,0 +1,425 @@
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
+ function printUsage() {
13
+ const scriptName = node_path_1.default.basename(node_process_1.default.argv[1] || "dooor");
14
+ console.log(`\nCortexDB Schema CLI\n\n` +
15
+ `Usage:\n` +
16
+ ` ${scriptName} schema diff [--dir path]\n` +
17
+ ` ${scriptName} schema apply [--dir path]\n` +
18
+ ` ${scriptName} schema generate-types --out src/generated/cortex-schema.ts [--dir path]\n` +
19
+ `\nEnvironment variables:\n` +
20
+ ` CORTEXDB_CONNECTION Full connection string (cortexdb://key@host:port)\n` +
21
+ ` CORTEXDB_BASE_URL Base URL (default http://localhost:8000)\n` +
22
+ ` CORTEXDB_API_KEY API key (required if no connection string)\n` +
23
+ ` CORTEXDB_SCHEMA_DIR Default directory with YAML files (default ./dooor/schemas)\n`);
24
+ }
25
+ function parseArgs(argv) {
26
+ const opts = {};
27
+ for (let i = 0; i < argv.length; i += 1) {
28
+ const arg = argv[i];
29
+ if (arg.startsWith("--")) {
30
+ const key = arg.slice(2);
31
+ const next = argv[i + 1];
32
+ if (!next || next.startsWith("--")) {
33
+ opts[key] = true;
34
+ i -= 1;
35
+ }
36
+ else {
37
+ opts[key] = next;
38
+ i += 1;
39
+ }
40
+ }
41
+ }
42
+ return opts;
43
+ }
44
+ function resolveSchemaDir(optionDir) {
45
+ if (typeof optionDir === "string" && optionDir.trim()) {
46
+ return node_path_1.default.resolve(node_process_1.default.cwd(), optionDir);
47
+ }
48
+ const envDir = node_process_1.default.env.CORTEXDB_SCHEMA_DIR;
49
+ if (envDir) {
50
+ return node_path_1.default.resolve(node_process_1.default.cwd(), envDir);
51
+ }
52
+ const candidateDirs = [
53
+ node_path_1.default.resolve(node_process_1.default.cwd(), "dooor/schemas"),
54
+ node_path_1.default.resolve(node_process_1.default.cwd(), "schemas"),
55
+ ];
56
+ for (const candidate of candidateDirs) {
57
+ if (node_fs_1.default.existsSync(candidate)) {
58
+ return candidate;
59
+ }
60
+ }
61
+ return candidateDirs[0];
62
+ }
63
+ function loadYamlFiles(schemaDir) {
64
+ if (!node_fs_1.default.existsSync(schemaDir)) {
65
+ throw new Error(`Schema directory not found: ${schemaDir}`);
66
+ }
67
+ const files = node_fs_1.default.readdirSync(schemaDir).filter((file) => file.endsWith(".yml") || file.endsWith(".yaml"));
68
+ if (files.length === 0) {
69
+ throw new Error(`No YAML schema files found in ${schemaDir}`);
70
+ }
71
+ const collections = [];
72
+ for (const file of files) {
73
+ const fullPath = node_path_1.default.join(schemaDir, file);
74
+ const content = node_fs_1.default.readFileSync(fullPath, "utf-8");
75
+ const parsed = (0, yaml_1.parse)(content);
76
+ if (!parsed || typeof parsed !== "object") {
77
+ throw new Error(`Invalid YAML structure in ${file}`);
78
+ }
79
+ if (!parsed.collections || !Array.isArray(parsed.collections)) {
80
+ throw new Error(`YAML file ${file} must contain a 'collections' array`);
81
+ }
82
+ parsed.collections.forEach((collection) => {
83
+ if (!collection || typeof collection !== "object") {
84
+ throw new Error(`Invalid collection entry in ${file}`);
85
+ }
86
+ collections.push(collection);
87
+ });
88
+ }
89
+ return {
90
+ version: 1,
91
+ collections,
92
+ };
93
+ }
94
+ function validateCollection(collection) {
95
+ if (!collection.name || typeof collection.name !== "string") {
96
+ throw new Error(`Collection is missing a valid name`);
97
+ }
98
+ if (!collection.fields || !Array.isArray(collection.fields) || collection.fields.length === 0) {
99
+ throw new Error(`Collection '${collection.name}' must declare at least one field`);
100
+ }
101
+ collection.fields.forEach((field) => {
102
+ if (!field.name) {
103
+ throw new Error(`Collection '${collection.name}': field missing name`);
104
+ }
105
+ if (!field.type) {
106
+ throw new Error(`Collection '${collection.name}': field '${field.name}' missing type`);
107
+ }
108
+ const allowedTypes = Object.values(__1.FieldType);
109
+ if (!allowedTypes.includes(field.type)) {
110
+ throw new Error(`Collection '${collection.name}': field '${field.name}' has invalid type '${field.type}'. Allowed: ${allowedTypes.join(", ")}`);
111
+ }
112
+ if (field.vectorize && !(collection.config && collection.config.embedding_provider_id)) {
113
+ throw new Error(`Collection '${collection.name}': field '${field.name}' requires embedding_provider_id in config`);
114
+ }
115
+ if (field.type === "enum" && (!field.values || field.values.length === 0)) {
116
+ throw new Error(`Collection '${collection.name}': enum field '${field.name}' must declare 'values'`);
117
+ }
118
+ if (field.type === "array" && (!field.schema || field.schema.length === 0)) {
119
+ throw new Error(`Collection '${collection.name}': array field '${field.name}' must declare nested schema`);
120
+ }
121
+ });
122
+ }
123
+ function normalizeStoreIn(values) {
124
+ if (!values) {
125
+ return undefined;
126
+ }
127
+ const allowedLocations = Object.values(__1.StoreLocation);
128
+ return values
129
+ .map((value) => value.toLowerCase())
130
+ .map((value) => {
131
+ if (!allowedLocations.includes(value)) {
132
+ throw new Error(`Invalid store_in value '${value}'. Allowed: ${allowedLocations.join(", ")}`);
133
+ }
134
+ return value;
135
+ })
136
+ .sort();
137
+ }
138
+ function toFieldDefinition(field) {
139
+ const base = {
140
+ name: field.name,
141
+ type: field.type,
142
+ description: field.description,
143
+ required: field.required ?? false,
144
+ indexed: field.indexed ?? false,
145
+ unique: field.unique ?? false,
146
+ filterable: field.filterable ?? false,
147
+ vectorize: field.vectorize ?? false,
148
+ default: field.default,
149
+ values: field.values,
150
+ store_in: normalizeStoreIn(field.store_in),
151
+ extract_config: field.extract_config,
152
+ };
153
+ if (field.schema && field.schema.length > 0) {
154
+ base.schema = field.schema.map(toFieldDefinition);
155
+ }
156
+ return base;
157
+ }
158
+ function sortFields(fields) {
159
+ return [...fields].sort((a, b) => a.name.localeCompare(b.name));
160
+ }
161
+ function normalizeField(field) {
162
+ return {
163
+ name: field.name,
164
+ type: field.type,
165
+ description: field.description ?? null,
166
+ required: field.required ?? false,
167
+ indexed: field.indexed ?? false,
168
+ unique: field.unique ?? false,
169
+ filterable: field.filterable ?? false,
170
+ vectorize: field.vectorize ?? false,
171
+ default: field.default ?? null,
172
+ values: field.values ? [...field.values].sort() : null,
173
+ store_in: field.store_in ? [...field.store_in].sort() : [__1.StoreLocation.POSTGRES],
174
+ extract_config: field.extract_config ?? null,
175
+ schema: field.schema ? sortFields(field.schema).map(normalizeField) : null,
176
+ };
177
+ }
178
+ function normalizeConfig(config) {
179
+ if (!config) {
180
+ return {};
181
+ }
182
+ return {
183
+ embedding_provider_id: config.embedding_provider_id ?? null,
184
+ chunk_size: config.chunk_size ?? null,
185
+ chunk_overlap: config.chunk_overlap ?? null,
186
+ };
187
+ }
188
+ function diffCollections(desired, current) {
189
+ const currentMap = new Map();
190
+ current.forEach((collection) => {
191
+ currentMap.set(collection.name, collection);
192
+ });
193
+ const create = [];
194
+ const update = [];
195
+ desired.forEach((collection) => {
196
+ validateCollection(collection);
197
+ const existing = currentMap.get(collection.name);
198
+ if (!existing) {
199
+ create.push(collection);
200
+ return;
201
+ }
202
+ const desiredFields = sortFields(collection.fields.map(toFieldDefinition)).map(normalizeField);
203
+ const existingFields = sortFields(existing.fields ?? []).map(normalizeField);
204
+ const desiredConfig = normalizeConfig(collection.config);
205
+ const existingConfig = normalizeConfig(existing.config);
206
+ const diffs = [];
207
+ if (JSON.stringify(desiredFields) !== JSON.stringify(existingFields)) {
208
+ diffs.push("fields differ");
209
+ }
210
+ if (JSON.stringify(desiredConfig) !== JSON.stringify(existingConfig)) {
211
+ diffs.push("config differ");
212
+ }
213
+ if (diffs.length > 0) {
214
+ update.push({ desired: collection, existing, differences: diffs });
215
+ }
216
+ currentMap.delete(collection.name);
217
+ });
218
+ const missing = Array.from(currentMap.keys());
219
+ return { create, update, missing };
220
+ }
221
+ function getClient() {
222
+ const connection = node_process_1.default.env.CORTEXDB_CONNECTION;
223
+ if (connection) {
224
+ return new __1.CortexClient(connection);
225
+ }
226
+ const baseUrl = node_process_1.default.env.CORTEXDB_BASE_URL ?? "http://localhost:8000";
227
+ const apiKey = node_process_1.default.env.CORTEXDB_API_KEY;
228
+ if (!apiKey) {
229
+ throw new Error("CORTEXDB_API_KEY (or CORTEXDB_CONNECTION) is required to run this command.");
230
+ }
231
+ return new __1.CortexClient({ baseUrl, apiKey });
232
+ }
233
+ async function commandDiff(schemaDir) {
234
+ const desiredSchema = loadYamlFiles(schemaDir);
235
+ const client = getClient();
236
+ const currentCollections = await client.collections.list();
237
+ const diff = diffCollections(desiredSchema.collections, currentCollections);
238
+ if (diff.create.length === 0 && diff.update.length === 0 && diff.missing.length === 0) {
239
+ console.log("✔ Schema is up to date.");
240
+ return 0;
241
+ }
242
+ if (diff.create.length > 0) {
243
+ console.log("Collections to create:");
244
+ diff.create.forEach((collection) => {
245
+ console.log(` + ${collection.name}`);
246
+ });
247
+ }
248
+ if (diff.update.length > 0) {
249
+ console.log("Collections with differences (manual review required):");
250
+ diff.update.forEach((entry) => {
251
+ console.log(` ~ ${entry.desired.name} -> ${entry.differences.join(", ")}`);
252
+ });
253
+ }
254
+ if (diff.missing.length > 0) {
255
+ console.log("Collections present in CortexDB but not in YAML (will be kept):");
256
+ diff.missing.forEach((name) => {
257
+ console.log(` ? ${name}`);
258
+ });
259
+ }
260
+ return diff.update.length > 0 ? 1 : 0;
261
+ }
262
+ async function commandApply(schemaDir) {
263
+ const desiredSchema = loadYamlFiles(schemaDir);
264
+ const client = getClient();
265
+ const currentCollections = await client.collections.list();
266
+ const diff = diffCollections(desiredSchema.collections, currentCollections);
267
+ if (diff.create.length === 0 && diff.update.length === 0) {
268
+ console.log("✔ Nothing to apply.");
269
+ return 0;
270
+ }
271
+ for (const collection of diff.create) {
272
+ console.log(`Creating collection ${collection.name}...`);
273
+ const fields = collection.fields.map(toFieldDefinition);
274
+ await client.collections.create(collection.name, fields, collection.config);
275
+ }
276
+ for (const entry of diff.update) {
277
+ console.log(`Updating collection ${entry.desired.name}...`);
278
+ const fields = entry.desired.fields.map(toFieldDefinition);
279
+ await client.collections.update(entry.desired.name, fields, entry.desired.config);
280
+ }
281
+ if (diff.missing.length > 0) {
282
+ console.log("⚠ Collections present no CortexDB mas ausentes no YAML (não serão removidas):");
283
+ diff.missing.forEach((name) => console.log(` ? ${name}`));
284
+ }
285
+ console.log("✔ Apply completed.");
286
+ return 0;
287
+ }
288
+ function mapFieldTypeToTs(field) {
289
+ switch (field.type) {
290
+ case __1.FieldType.STRING:
291
+ case __1.FieldType.TEXT:
292
+ case __1.FieldType.FILE:
293
+ case __1.FieldType.DATE:
294
+ case __1.FieldType.DATETIME:
295
+ return "string";
296
+ case __1.FieldType.INT:
297
+ case __1.FieldType.FLOAT:
298
+ return "number";
299
+ case __1.FieldType.BOOLEAN:
300
+ return "boolean";
301
+ case __1.FieldType.JSON:
302
+ return "any";
303
+ case __1.FieldType.ENUM:
304
+ return field.values && field.values.length > 0
305
+ ? field.values.map((value) => JSON.stringify(value)).join(" | ")
306
+ : "string";
307
+ case __1.FieldType.ARRAY:
308
+ return "any[]";
309
+ default:
310
+ return "any";
311
+ }
312
+ }
313
+ function toPascalCase(value) {
314
+ return value
315
+ .split(/[_-]/g)
316
+ .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
317
+ .join("");
318
+ }
319
+ function buildTypesContent(schemaDir, schema) {
320
+ const timestamp = new Date().toISOString();
321
+ const collectionNames = schema.collections.map((collection) => collection.name);
322
+ const lines = [];
323
+ lines.push("/* eslint-disable */");
324
+ lines.push("// This file was auto-generated by cortexdb schema CLI");
325
+ lines.push(`// Generated at ${timestamp}`);
326
+ lines.push("\nimport { FieldType, StoreLocation } from '@dooor-ai/cortexdb';\n");
327
+ lines.push("export const collections = {");
328
+ schema.collections.forEach((collection) => {
329
+ lines.push(` '${collection.name}': {`);
330
+ lines.push(" fields: [");
331
+ collection.fields.forEach((field) => {
332
+ const storeIn = field.store_in ? `[${field.store_in.map((value) => `'${value}'`).join(", ")}]` : "undefined";
333
+ lines.push(` { name: '${field.name}', type: FieldType.${field.type.toUpperCase()}, required: ${field.required ? "true" : "false"}, storeIn: ${storeIn} },`);
334
+ });
335
+ lines.push(" ]");
336
+ lines.push(" },");
337
+ });
338
+ lines.push("} as const;\n");
339
+ lines.push("export type CollectionName = keyof typeof collections;\n");
340
+ schema.collections.forEach((collection) => {
341
+ const interfaceName = `${toPascalCase(collection.name)}Record`;
342
+ lines.push(`export interface ${interfaceName} {`);
343
+ collection.fields.forEach((field) => {
344
+ const optional = field.required ? "" : "?";
345
+ lines.push(` ${field.name}${optional}: ${mapFieldTypeToTs(field)};`);
346
+ });
347
+ lines.push("}\n");
348
+ });
349
+ lines.push("export interface CortexRecordMap {");
350
+ schema.collections.forEach((collection) => {
351
+ const interfaceName = `${toPascalCase(collection.name)}Record`;
352
+ lines.push(` '${collection.name}': ${interfaceName};`);
353
+ });
354
+ lines.push("}\n");
355
+ lines.push("export type CortexRecord<C extends CollectionName> = CortexRecordMap[C];\n");
356
+ lines.push(`export const SCHEMA_DIR = '${schemaDir.replace(/\\\\/g, "\\")}';\n`);
357
+ return lines.join("\n");
358
+ }
359
+ async function commandGenerateTypes(schemaDir, outPath) {
360
+ if (!outPath || typeof outPath !== "string") {
361
+ throw new Error("--out <path> is required for generate-types command");
362
+ }
363
+ const desiredSchema = loadYamlFiles(schemaDir);
364
+ desiredSchema.collections.forEach(validateCollection);
365
+ const absoluteOut = node_path_1.default.resolve(node_process_1.default.cwd(), outPath);
366
+ const content = buildTypesContent(schemaDir, desiredSchema);
367
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(absoluteOut), { recursive: true });
368
+ node_fs_1.default.writeFileSync(absoluteOut, content, "utf-8");
369
+ console.log(`✔ Types generated at ${absoluteOut}`);
370
+ return 0;
371
+ }
372
+ async function main() {
373
+ const argv = node_process_1.default.argv.slice(2);
374
+ if (argv.length === 0) {
375
+ printUsage();
376
+ node_process_1.default.exit(1);
377
+ }
378
+ const [topic, command, ...rest] = argv;
379
+ if (!topic || topic === "help" || topic === "--help" || topic === "-h") {
380
+ printUsage();
381
+ node_process_1.default.exit(0);
382
+ }
383
+ if (topic !== "schema") {
384
+ console.error(`Unknown topic '${topic}'. Expected 'schema'.\n`);
385
+ printUsage();
386
+ node_process_1.default.exit(1);
387
+ }
388
+ if (!command) {
389
+ printUsage();
390
+ node_process_1.default.exit(1);
391
+ }
392
+ const options = parseArgs(rest);
393
+ const schemaDir = resolveSchemaDir(options.dir);
394
+ try {
395
+ let exitCode = 0;
396
+ if (command === "diff") {
397
+ exitCode = await commandDiff(schemaDir);
398
+ }
399
+ else if (command === "apply") {
400
+ exitCode = await commandApply(schemaDir);
401
+ }
402
+ else if (command === "generate-types") {
403
+ exitCode = await commandGenerateTypes(schemaDir, options.out);
404
+ }
405
+ else if (command === "help" || command === "--help" || command === "-h") {
406
+ printUsage();
407
+ node_process_1.default.exit(0);
408
+ }
409
+ else {
410
+ console.error(`Unknown command '${command}'\n`);
411
+ printUsage();
412
+ node_process_1.default.exit(1);
413
+ }
414
+ node_process_1.default.exit(exitCode);
415
+ }
416
+ catch (error) {
417
+ console.error(`✖ ${error.message}`);
418
+ node_process_1.default.exit(1);
419
+ }
420
+ }
421
+ main().catch((error) => {
422
+ console.error(error);
423
+ node_process_1.default.exit(1);
424
+ });
425
+ //# 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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"}
@@ -1,113 +1,152 @@
1
1
  /** Core types for CortexDB TypeScript SDK */
2
- export type FieldType = "string" | "number" | "boolean" | "file" | "array";
2
+ export declare enum FieldType {
3
+ STRING = "string",
4
+ TEXT = "text",
5
+ INT = "int",
6
+ FLOAT = "float",
7
+ BOOLEAN = "boolean",
8
+ DATE = "date",
9
+ DATETIME = "datetime",
10
+ ENUM = "enum",
11
+ ARRAY = "array",
12
+ FILE = "file",
13
+ JSON = "json"
14
+ }
3
15
  /**
4
16
  * Storage location options for fields
5
17
  */
6
18
  export declare enum StoreLocation {
7
19
  POSTGRES = "postgres",
20
+ QDRANT = "qdrant",
8
21
  QDRANT_PAYLOAD = "qdrant_payload",
9
22
  MINIO = "minio"
10
23
  }
24
+ export interface ExtractConfig {
25
+ extract_text?: boolean;
26
+ ocr_if_needed?: boolean;
27
+ chunk_size?: number;
28
+ chunk_overlap?: number;
29
+ }
11
30
  export interface FieldDefinition {
12
31
  name: string;
13
32
  type: FieldType;
14
- vectorize?: boolean;
33
+ description?: string;
15
34
  required?: boolean;
35
+ indexed?: boolean;
36
+ unique?: boolean;
37
+ filterable?: boolean;
38
+ vectorize?: boolean;
39
+ default?: any;
40
+ values?: any[];
16
41
  store_in?: StoreLocation[];
42
+ schema?: FieldDefinition[];
43
+ extract_config?: ExtractConfig;
17
44
  }
18
45
  export interface CollectionConfig {
46
+ embedding_model?: string;
47
+ chunk_size?: number;
48
+ chunk_overlap?: number;
19
49
  embedding_provider_id?: string;
20
50
  }
21
51
  export interface Collection {
52
+ id?: string;
22
53
  name: string;
54
+ database?: string;
23
55
  fields: FieldDefinition[];
24
56
  config?: CollectionConfig;
57
+ created_at?: string;
58
+ updated_at?: string;
59
+ }
60
+ export interface CollectionSchema extends Collection {
25
61
  }
26
62
  export interface CortexRecord {
27
63
  id: string;
28
- data: {
29
- [key: string]: any;
30
- };
64
+ record: Record<string, any>;
65
+ files?: Record<string, string>;
31
66
  created_at?: string;
32
67
  updated_at?: string;
33
68
  }
34
- export interface SearchResult {
35
- record: CortexRecord;
36
- score: number;
37
- highlights?: string[];
69
+ export interface CreateRecordResponse {
70
+ id: string;
71
+ vectors_created: number;
72
+ files: Record<string, string>;
38
73
  }
39
- export interface SearchResponse {
40
- results: SearchResult[];
41
- total: number;
42
- took_ms: number;
74
+ export interface RecordDetails {
75
+ id: string;
76
+ record: Record<string, any>;
77
+ files?: Record<string, string>;
43
78
  }
44
- export interface PaginationParams {
45
- page?: number;
46
- per_page?: number;
79
+ export interface UpdateRecordResponse {
80
+ id: string;
81
+ vectors_created: number;
82
+ updated_fields: string[];
47
83
  }
48
84
  export interface QueryParams {
49
- filters?: {
50
- [key: string]: any;
51
- };
85
+ filters?: Record<string, any>;
52
86
  limit?: number;
53
87
  offset?: number;
54
88
  }
89
+ export interface QueryRecordsResponse {
90
+ records: Array<Record<string, any>>;
91
+ total: number;
92
+ }
55
93
  export interface SearchRequest {
56
94
  query: string;
57
- filters?: {
58
- [key: string]: any;
59
- };
95
+ filters?: Record<string, any>;
60
96
  limit?: number;
61
97
  }
62
- export interface EmbeddingProvider {
98
+ export interface SearchHighlight {
99
+ field?: string;
100
+ text?: string;
101
+ chunk_index?: number;
102
+ score?: number;
103
+ }
104
+ export interface SearchResult {
63
105
  id: string;
64
- name: string;
65
- provider: string;
66
- enabled: boolean;
106
+ score: number;
107
+ record: Record<string, any>;
108
+ files?: Record<string, string>;
109
+ highlights?: SearchHighlight[];
67
110
  }
68
- export interface Database {
69
- name: string;
111
+ export interface SearchResponse {
112
+ results: SearchResult[];
113
+ total: number;
114
+ took_ms: number;
70
115
  }
71
116
  export interface CortexError {
72
- detail: string;
73
- }
74
- /**
75
- * Configuration for text extraction from files
76
- */
77
- export interface ExtractConfig {
78
- chunk_size?: number;
79
- chunk_overlap?: number;
80
- ocr_if_needed?: boolean;
117
+ detail?: string;
118
+ message?: string;
81
119
  }
82
- /**
83
- * Vector chunk representing a portion of text and its embedding
84
- */
85
- export interface VectorChunk {
120
+ export interface Database {
86
121
  id: string;
87
- text: string;
88
- metadata?: {
89
- [key: string]: any;
90
- };
122
+ name: string;
123
+ description?: string;
124
+ metadata?: Record<string, any>;
125
+ created_at?: string;
126
+ updated_at?: string;
91
127
  }
92
- /**
93
- * Request for querying records with filters
94
- */
95
- export interface QueryRequest {
96
- filters?: {
97
- [key: string]: any;
98
- };
99
- limit?: number;
100
- offset?: number;
128
+ export interface DatabaseCreateInput {
129
+ name: string;
130
+ description?: string;
131
+ metadata?: Record<string, any>;
101
132
  }
102
- /**
103
- * Complete collection schema
104
- */
105
- export interface CollectionSchema {
133
+ export type EmbeddingProviderType = "gemini";
134
+ export interface EmbeddingProvider {
135
+ id: string;
106
136
  name: string;
107
- database?: string;
108
- fields: FieldDefinition[];
109
- config?: CollectionConfig;
137
+ provider: EmbeddingProviderType;
138
+ embedding_model: string;
139
+ metadata?: Record<string, any>;
140
+ enabled: boolean;
141
+ has_api_key: boolean;
110
142
  created_at?: string;
111
143
  updated_at?: string;
112
144
  }
145
+ export interface CreateEmbeddingProviderInput {
146
+ name: string;
147
+ provider: EmbeddingProviderType;
148
+ embedding_model: string;
149
+ api_key: string;
150
+ metadata?: Record<string, any>;
151
+ }
113
152
  //# sourceMappingURL=index.d.ts.map