@objectql/core 4.0.6 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +19 -0
  3. package/dist/ai/index.d.ts +8 -0
  4. package/dist/ai/index.js +25 -0
  5. package/dist/ai/index.js.map +1 -0
  6. package/dist/ai/registry.d.ts +23 -0
  7. package/dist/ai/registry.js +78 -0
  8. package/dist/ai/registry.js.map +1 -0
  9. package/dist/app.d.ts +2 -1
  10. package/dist/app.js +41 -20
  11. package/dist/app.js.map +1 -1
  12. package/dist/gateway.d.ts +3 -2
  13. package/dist/gateway.js +6 -2
  14. package/dist/gateway.js.map +1 -1
  15. package/dist/index.d.ts +11 -4
  16. package/dist/index.js +11 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/optimizations/CompiledHookManager.d.ts +1 -0
  19. package/dist/optimizations/CompiledHookManager.js +7 -1
  20. package/dist/optimizations/CompiledHookManager.js.map +1 -1
  21. package/dist/plugin.d.ts +3 -2
  22. package/dist/plugin.js +77 -33
  23. package/dist/plugin.js.map +1 -1
  24. package/dist/protocol.d.ts +11 -0
  25. package/dist/protocol.js +12 -0
  26. package/dist/protocol.js.map +1 -1
  27. package/dist/query/filter-translator.d.ts +1 -4
  28. package/dist/query/filter-translator.js.map +1 -1
  29. package/dist/query/query-analyzer.d.ts +1 -3
  30. package/dist/query/query-analyzer.js.map +1 -1
  31. package/dist/query/query-builder.d.ts +1 -9
  32. package/dist/query/query-builder.js +8 -0
  33. package/dist/query/query-builder.js.map +1 -1
  34. package/dist/query/query-service.d.ts +2 -3
  35. package/dist/query/query-service.js +5 -1
  36. package/dist/query/query-service.js.map +1 -1
  37. package/dist/repository.d.ts +0 -28
  38. package/dist/repository.js +18 -173
  39. package/dist/repository.js.map +1 -1
  40. package/package.json +16 -9
  41. package/src/ai/index.ts +9 -0
  42. package/src/ai/registry.ts +81 -0
  43. package/src/app.ts +47 -20
  44. package/src/gateway.ts +7 -3
  45. package/src/index.ts +24 -7
  46. package/src/optimizations/CompiledHookManager.ts +9 -1
  47. package/src/plugin.ts +90 -36
  48. package/src/protocol.ts +13 -0
  49. package/src/query/filter-translator.ts +3 -3
  50. package/src/query/query-analyzer.ts +1 -2
  51. package/src/query/query-builder.ts +8 -8
  52. package/src/query/query-service.ts +7 -3
  53. package/src/repository.ts +20 -223
  54. package/test/ai-registry.test.ts +42 -0
  55. package/test/app.test.ts +6 -6
  56. package/test/optimizations.test.ts +1 -1
  57. package/test/plugin-integration.test.ts +3 -2
  58. package/tsconfig.tsbuildinfo +1 -1
  59. package/jest.config.js +0 -29
@@ -8,41 +8,11 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ObjectRepository = void 0;
11
- const types_1 = require("@objectql/types");
12
- const plugin_validator_1 = require("@objectql/plugin-validator");
13
- const plugin_formula_1 = require("@objectql/plugin-formula");
14
- const query_1 = require("./query");
15
- const QueryCompiler_1 = require("./optimizations/QueryCompiler");
16
11
  class ObjectRepository {
17
12
  constructor(objectName, context, app) {
18
13
  this.objectName = objectName;
19
14
  this.context = context;
20
15
  this.app = app;
21
- this.queryBuilder = new query_1.QueryBuilder();
22
- }
23
- /**
24
- * Get validator instance from kernel (via plugin)
25
- * Falls back to creating a new instance if not available
26
- */
27
- getValidator() {
28
- const kernel = this.getKernel();
29
- if (kernel.validator) {
30
- return kernel.validator;
31
- }
32
- // Fallback for backward compatibility
33
- return new plugin_validator_1.Validator();
34
- }
35
- /**
36
- * Get formula engine instance from kernel (via plugin)
37
- * Falls back to creating a new instance if not available
38
- */
39
- getFormulaEngine() {
40
- const kernel = this.getKernel();
41
- if (kernel.formulaEngine) {
42
- return kernel.formulaEngine;
43
- }
44
- // Fallback for backward compatibility
45
- return new plugin_formula_1.FormulaEngine();
46
16
  }
47
17
  getDriver() {
48
18
  const obj = this.getSchema();
@@ -58,16 +28,6 @@ class ObjectRepository {
58
28
  ...extra
59
29
  };
60
30
  }
61
- /**
62
- * Translates ObjectQL UnifiedQuery to ObjectStack QueryAST format
63
- * Uses query compiler for caching and optimization
64
- */
65
- buildQueryAST(query) {
66
- const ast = this.queryBuilder.build(this.objectName, query);
67
- // Use query compiler to cache and optimize the AST
68
- const compiled = ObjectRepository.queryCompiler.compile(this.objectName, ast);
69
- return compiled.ast;
70
- }
71
31
  getSchema() {
72
32
  const obj = this.app.getObject(this.objectName);
73
33
  if (!obj) {
@@ -97,120 +57,6 @@ class ObjectRepository {
97
57
  isSystem: this.context.isSystem
98
58
  };
99
59
  }
100
- /**
101
- * Validates a record against field-level and object-level validation rules.
102
- * For updates, only fields present in the update payload are validated at the field level,
103
- * while object-level rules use the merged record (previousRecord + updates).
104
- */
105
- async validateRecord(operation, record, previousRecord) {
106
- var _a;
107
- const schema = this.getSchema();
108
- const allResults = [];
109
- // 1. Validate field-level rules
110
- // For updates, only validate fields that are present in the update payload
111
- for (const [fieldName, fieldConfig] of Object.entries(schema.fields)) {
112
- // Skip field validation for updates if the field is not in the update payload
113
- if (operation === 'update' && !(fieldName in record)) {
114
- continue;
115
- }
116
- const value = record[fieldName];
117
- const fieldResults = await this.getValidator().validateField(fieldName, fieldConfig, value, {
118
- record,
119
- previousRecord,
120
- operation,
121
- user: this.getUserFromContext(),
122
- api: this.getHookAPI(),
123
- });
124
- allResults.push(...fieldResults);
125
- }
126
- // 2. Validate object-level validation rules
127
- if (((_a = schema.validation) === null || _a === void 0 ? void 0 : _a.rules) && schema.validation.rules.length > 0) {
128
- // For updates, merge the update data with previous record to get the complete final state
129
- const mergedRecord = operation === 'update' && previousRecord
130
- ? { ...previousRecord, ...record }
131
- : record;
132
- // Track which fields changed (using shallow comparison for performance)
133
- // IMPORTANT: Shallow comparison does not detect changes in nested objects/arrays.
134
- // If your validation rules rely on detecting changes in complex nested structures,
135
- // you may need to implement custom change tracking in hooks.
136
- const changedFields = previousRecord
137
- ? Object.keys(record).filter(key => record[key] !== previousRecord[key])
138
- : undefined;
139
- const validationContext = {
140
- record: mergedRecord,
141
- previousRecord,
142
- operation,
143
- user: this.getUserFromContext(),
144
- api: this.getHookAPI(),
145
- changedFields,
146
- };
147
- const result = await this.getValidator().validate(schema.validation.rules, validationContext);
148
- allResults.push(...result.results);
149
- }
150
- // 3. Collect errors and throw if any
151
- const errors = allResults.filter(r => !r.valid && r.severity === 'error');
152
- if (errors.length > 0) {
153
- const errorMessage = errors.map(e => e.message).join('; ');
154
- throw new types_1.ValidationError(errorMessage, errors);
155
- }
156
- }
157
- /**
158
- * Evaluate formula fields for a record
159
- * Adds computed formula field values to the record
160
- */
161
- evaluateFormulas(record) {
162
- var _a;
163
- const schema = this.getSchema();
164
- const now = new Date();
165
- // Build formula context
166
- const formulaContext = {
167
- record,
168
- system: {
169
- today: new Date(now.getFullYear(), now.getMonth(), now.getDate()),
170
- now: now,
171
- year: now.getFullYear(),
172
- month: now.getMonth() + 1,
173
- day: now.getDate(),
174
- hour: now.getHours(),
175
- minute: now.getMinutes(),
176
- second: now.getSeconds(),
177
- },
178
- current_user: {
179
- id: this.context.userId || '',
180
- // TODO: Retrieve actual user name from user object if available
181
- name: undefined,
182
- email: undefined,
183
- role: (_a = this.context.roles) === null || _a === void 0 ? void 0 : _a[0],
184
- },
185
- is_new: false,
186
- record_id: record._id || record.id,
187
- };
188
- // Evaluate each formula field
189
- for (const [fieldName, fieldConfig] of Object.entries(schema.fields)) {
190
- const formulaExpression = fieldConfig.expression;
191
- if (fieldConfig.type === 'formula' && formulaExpression) {
192
- const result = this.getFormulaEngine().evaluate(formulaExpression, formulaContext, fieldConfig.data_type || 'text', { strict: true });
193
- if (result.success) {
194
- record[fieldName] = result.value;
195
- }
196
- else {
197
- // In case of error, set to null and log for diagnostics
198
- record[fieldName] = null;
199
- // Formula evaluation should not throw here, but we need observability
200
- // This logging is intentionally minimal and side-effect free
201
- console.error('[ObjectQL][FormulaEngine] Formula evaluation failed', {
202
- objectName: this.objectName,
203
- fieldName,
204
- recordId: formulaContext.record_id,
205
- expression: formulaExpression,
206
- error: result.error,
207
- stack: result.stack,
208
- });
209
- }
210
- }
211
- }
212
- return record;
213
- }
214
60
  async find(query = {}) {
215
61
  const hookCtx = {
216
62
  ...this.context,
@@ -222,13 +68,11 @@ class ObjectRepository {
222
68
  query
223
69
  };
224
70
  await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
225
- // Build QueryAST and execute via kernel
226
- const ast = this.buildQueryAST(hookCtx.query || {});
227
- const kernelResult = await this.getKernel().find(this.objectName, ast);
71
+ // Execute via kernel (delegates to QueryService)
72
+ const kernelResult = await this.getKernel().find(this.objectName, hookCtx.query || {});
228
73
  const results = kernelResult.value;
229
- // Evaluate formulas for each result
230
- const resultsWithFormulas = results.map((record) => this.evaluateFormulas(record));
231
- hookCtx.result = resultsWithFormulas;
74
+ // Formula evaluation moved to FormulaPlugin hook
75
+ hookCtx.result = results;
232
76
  await this.app.triggerHook('afterFind', this.objectName, hookCtx);
233
77
  return hookCtx.result;
234
78
  }
@@ -246,9 +90,8 @@ class ObjectRepository {
246
90
  await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
247
91
  // Use kernel.get() for direct ID lookup
248
92
  const result = await this.getKernel().get(this.objectName, String(idOrQuery));
249
- // Evaluate formulas if result exists
250
- const resultWithFormulas = result ? this.evaluateFormulas(result) : result;
251
- hookCtx.result = resultWithFormulas;
93
+ // Formula evaluation moved to FormulaPlugin hook
94
+ hookCtx.result = result;
252
95
  await this.app.triggerHook('afterFind', this.objectName, hookCtx);
253
96
  return hookCtx.result;
254
97
  }
@@ -286,10 +129,16 @@ class ObjectRepository {
286
129
  query
287
130
  };
288
131
  await this.app.triggerHook('beforeCount', this.objectName, hookCtx);
289
- // Build QueryAST and execute via kernel to get count
290
- const ast = this.buildQueryAST(hookCtx.query || {});
291
- const kernelResult = await this.getKernel().find(this.objectName, ast);
292
- const result = kernelResult.count;
132
+ // Execute via kernel (delegates to QueryService)
133
+ let result;
134
+ const kernel = this.getKernel();
135
+ if (typeof kernel.count === 'function') {
136
+ result = await kernel.count(this.objectName, hookCtx.query || {});
137
+ }
138
+ else {
139
+ // Fallback to driver if kernel doesn't support count
140
+ result = await this.getDriver().count(this.objectName, hookCtx.query || {});
141
+ }
293
142
  hookCtx.result = result;
294
143
  await this.app.triggerHook('afterCount', this.objectName, hookCtx);
295
144
  return hookCtx.result;
@@ -310,8 +159,7 @@ class ObjectRepository {
310
159
  finalDoc.created_by = this.context.userId;
311
160
  if (this.context.spaceId)
312
161
  finalDoc.space_id = this.context.spaceId;
313
- // Validate the record before creating
314
- await this.validateRecord('create', finalDoc);
162
+ // Validation moved to ValidatorPlugin hook
315
163
  // Execute via kernel
316
164
  const result = await this.getKernel().create(this.objectName, finalDoc, this.getOptions());
317
165
  hookCtx.result = result;
@@ -333,8 +181,7 @@ class ObjectRepository {
333
181
  isModified: (field) => hookCtx.data ? Object.prototype.hasOwnProperty.call(hookCtx.data, field) : false
334
182
  };
335
183
  await this.app.triggerHook('beforeUpdate', this.objectName, hookCtx);
336
- // Validate the update
337
- await this.validateRecord('update', hookCtx.data, previousData);
184
+ // Validation moved to ValidatorPlugin hook
338
185
  // Execute via kernel
339
186
  const result = await this.getKernel().update(this.objectName, String(id), hookCtx.data, this.getOptions());
340
187
  hookCtx.result = result;
@@ -437,6 +284,4 @@ class ObjectRepository {
437
284
  }
438
285
  }
439
286
  exports.ObjectRepository = ObjectRepository;
440
- // Shared query compiler for caching compiled queries
441
- ObjectRepository.queryCompiler = new QueryCompiler_1.QueryCompiler(1000);
442
287
  //# sourceMappingURL=repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectql/core",
3
- "version": "4.0.6",
3
+ "version": "4.2.0",
4
4
  "description": "Universal runtime engine for ObjectQL - AI-native metadata-driven ORM with validation, repository pattern, and driver orchestration",
5
5
  "keywords": [
6
6
  "objectql",
@@ -17,15 +17,22 @@
17
17
  "license": "MIT",
18
18
  "main": "dist/index.js",
19
19
  "types": "dist/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ }
25
+ },
20
26
  "dependencies": {
21
- "@objectstack/core": "^1.0.0",
22
- "@objectstack/objectql": "^1.0.0",
23
- "@objectstack/runtime": "^1.0.0",
24
- "@objectstack/spec": "^1.0.0",
27
+ "@objectstack/core": "^1.1.0",
28
+ "@objectstack/objectql": "^1.1.0",
29
+ "@objectstack/runtime": "^1.1.0",
30
+ "@objectstack/spec": "^1.1.0",
25
31
  "js-yaml": "^4.1.0",
26
- "@objectql/plugin-formula": "4.0.6",
27
- "@objectql/plugin-validator": "4.0.6",
28
- "@objectql/types": "4.0.6"
32
+ "zod": "^3.23.8",
33
+ "@objectql/plugin-formula": "4.2.0",
34
+ "@objectql/plugin-validator": "4.2.0",
35
+ "@objectql/types": "4.2.0"
29
36
  },
30
37
  "devDependencies": {
31
38
  "@types/js-yaml": "^4.0.5",
@@ -33,6 +40,6 @@
33
40
  },
34
41
  "scripts": {
35
42
  "build": "tsc",
36
- "test": "jest"
43
+ "test": "vitest run"
37
44
  }
38
45
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * ObjectQL - AI Runtime
3
+ * Copyright (c) 2026-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ export * from './registry';
@@ -0,0 +1,81 @@
1
+ /**
2
+ * ObjectQL - AI Runtime Registry
3
+ * Copyright (c) 2026-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ import type {
10
+ AiRegistry,
11
+ AiModelDefinition,
12
+ ModelRegistry,
13
+ PromptRegistry,
14
+ PromptTemplate,
15
+ } from '@objectql/types';
16
+
17
+ const DEFAULT_PROMPT_VERSION = 'latest';
18
+
19
+ export class InMemoryModelRegistry implements ModelRegistry {
20
+ private readonly models = new Map<string, AiModelDefinition>();
21
+
22
+ register(model: AiModelDefinition): void {
23
+ this.models.set(model.id, model);
24
+ }
25
+
26
+ get(id: string): AiModelDefinition | undefined {
27
+ return this.models.get(id);
28
+ }
29
+
30
+ list(): readonly AiModelDefinition[] {
31
+ return Array.from(this.models.values());
32
+ }
33
+
34
+ remove(id: string): void {
35
+ this.models.delete(id);
36
+ }
37
+ }
38
+
39
+ export class InMemoryPromptRegistry implements PromptRegistry {
40
+ private readonly prompts = new Map<string, Map<string, PromptTemplate>>();
41
+
42
+ register(template: PromptTemplate): void {
43
+ const version = template.version ?? DEFAULT_PROMPT_VERSION;
44
+ const byId = this.prompts.get(template.id) ?? new Map<string, PromptTemplate>();
45
+ byId.set(version, { ...template, version });
46
+ this.prompts.set(template.id, byId);
47
+ }
48
+
49
+ get(id: string, version?: string): PromptTemplate | undefined {
50
+ const byId = this.prompts.get(id);
51
+ if (!byId) return undefined;
52
+ if (version) return byId.get(version);
53
+ if (byId.has(DEFAULT_PROMPT_VERSION)) return byId.get(DEFAULT_PROMPT_VERSION);
54
+ return byId.values().next().value;
55
+ }
56
+
57
+ list(id?: string): readonly PromptTemplate[] {
58
+ if (id) {
59
+ return Array.from(this.prompts.get(id)?.values() ?? []);
60
+ }
61
+ return Array.from(this.prompts.values()).flatMap(map => Array.from(map.values()));
62
+ }
63
+
64
+ remove(id: string, version?: string): void {
65
+ if (!version) {
66
+ this.prompts.delete(id);
67
+ return;
68
+ }
69
+ const byId = this.prompts.get(id);
70
+ if (!byId) return;
71
+ byId.delete(version);
72
+ if (byId.size === 0) {
73
+ this.prompts.delete(id);
74
+ }
75
+ }
76
+ }
77
+
78
+ export const createDefaultAiRegistry = (): AiRegistry => ({
79
+ models: new InMemoryModelRegistry(),
80
+ prompts: new InMemoryPromptRegistry(),
81
+ });
package/src/app.ts CHANGED
@@ -20,10 +20,14 @@ import {
20
20
  HookContext,
21
21
  ActionHandler,
22
22
  ActionContext,
23
- LoaderPlugin
23
+ LoaderPlugin,
24
+ Logger,
25
+ ConsoleLogger
24
26
  } from '@objectql/types';
25
- import { ObjectKernel, type Plugin } from '@objectstack/core';
27
+ import { ObjectKernel, type Plugin } from '@objectstack/runtime';
26
28
  import { ObjectQL as RuntimeObjectQL, SchemaRegistry } from '@objectstack/objectql';
29
+ import { ValidatorPlugin } from '@objectql/plugin-validator';
30
+ import { FormulaPlugin } from '@objectql/plugin-formula';
27
31
  import { ObjectRepository } from './repository';
28
32
  import { convertIntrospectedSchemaToObjects } from './util';
29
33
  import { CompiledHookManager } from './optimizations/CompiledHookManager';
@@ -52,12 +56,16 @@ export class ObjectQL implements IObjectQL {
52
56
  private hookManager = new CompiledHookManager();
53
57
  private localActions = new Map<string, any>();
54
58
 
59
+ // Structured logger
60
+ private logger: Logger;
61
+
55
62
  // Store config for lazy loading in init()
56
63
  private config: ObjectQLConfig;
57
64
 
58
65
  constructor(config: ObjectQLConfig) {
59
66
  this.config = config;
60
67
  this.datasources = config.datasources || {};
68
+ this.logger = config.logger ?? new ConsoleLogger({ name: '@objectql/core', level: 'info' });
61
69
 
62
70
  if (config.connection) {
63
71
  throw new Error("Connection strings are not supported in core directly. Use @objectql/platform-node's createDriverFromConnection or pass a driver instance to 'datasources'.");
@@ -81,10 +89,27 @@ export class ObjectQL implements IObjectQL {
81
89
  }
82
90
  }
83
91
 
92
+ // Ensure default plugins are present
93
+ if (!this.kernelPlugins.some(p => p.name === 'validator')) {
94
+ this.use(new ValidatorPlugin());
95
+ }
96
+ if (!this.kernelPlugins.some(p => p.name === 'formula')) {
97
+ this.use(new FormulaPlugin());
98
+ }
99
+
84
100
  // Create the kernel with registered plugins
85
- this.kernel = new (ObjectKernel as any)();
101
+ this.kernel = new (ObjectKernel as any)(this.kernelPlugins);
86
102
  for (const plugin of this.kernelPlugins) {
103
+ // Fallback for kernels that support .use() but maybe didn't take them in constructor or if we need to support both
104
+ // NOTE: Modern ObjectKernel takes plugins in constructor.
87
105
  if ((this.kernel as any).use) {
106
+ // Try to avoid double registration if the kernel is smart, but since we don't know the kernel logic perfectly:
107
+ // Ideally check if already added. But for now, we leave this for backward compat
108
+ // if ObjectKernel DOESN't take constructor args but HAS use().
109
+
110
+ // However, we just instantiated it.
111
+ // Let's assume constructor is the way if available.
112
+ // But we keep this check for .use() just in case the constructor signature is different (e.g. empty)
88
113
  (this.kernel as any).use(plugin);
89
114
  }
90
115
  }
@@ -126,20 +151,22 @@ export class ObjectQL implements IObjectQL {
126
151
  }
127
152
  },
128
153
  unregisterPackage: (packageName: string) => {
154
+ // Use the official @objectstack/objectql 1.1.0 API for object cleanup
155
+ if (typeof SchemaRegistry.unregisterObjectsByPackage === 'function') {
156
+ SchemaRegistry.unregisterObjectsByPackage(packageName);
157
+ }
158
+ // Also clean up non-object metadata items by package
129
159
  const metadata = (SchemaRegistry as any).metadata;
130
160
  if (metadata && metadata instanceof Map) {
131
161
  for (const [type, collection] of metadata.entries()) {
132
162
  if (collection instanceof Map) {
133
163
  for (const [key, item] of collection.entries()) {
134
- // console.log(`[App] Check ${type} ${key} pkg=${(item as any).package}`);
135
164
  if ((item as any).package === packageName) {
136
165
  collection.delete(key);
137
166
  }
138
167
  }
139
168
  }
140
169
  }
141
- } else {
142
- console.warn('Metadata is not a Map');
143
170
  }
144
171
  }
145
172
  };
@@ -366,13 +393,13 @@ export class ObjectQL implements IObjectQL {
366
393
  throw new Error(`Driver for datasource '${datasourceName}' does not support schema introspection`);
367
394
  }
368
395
 
369
- console.log(`Introspecting datasource '${datasourceName}'...`);
396
+ this.logger.info(`Introspecting datasource '${datasourceName}'...`);
370
397
  const introspectedSchema = await driver.introspectSchema();
371
398
 
372
399
  // Convert introspected schema to ObjectQL objects
373
400
  const objects = convertIntrospectedSchemaToObjects(introspectedSchema, options);
374
401
 
375
- console.log(`Discovered ${objects.length} table(s), registering as objects...`);
402
+ this.logger.info(`Discovered ${objects.length} table(s), registering as objects...`);
376
403
 
377
404
  // Register each discovered object
378
405
  for (const obj of objects) {
@@ -385,14 +412,14 @@ export class ObjectQL implements IObjectQL {
385
412
  async close() {
386
413
  for (const [name, driver] of Object.entries(this.datasources)) {
387
414
  if (driver.disconnect) {
388
- console.log(`Closing driver '${name}'...`);
415
+ this.logger.debug(`Closing driver '${name}'...`);
389
416
  await driver.disconnect();
390
417
  }
391
418
  }
392
419
  }
393
420
 
394
421
  async init() {
395
- console.log('[ObjectQL] Initializing with ObjectKernel...');
422
+ this.logger.info('Initializing with ObjectKernel...');
396
423
 
397
424
  // Start the kernel - this will install and start all plugins
398
425
  if ((this.kernel as any).start) {
@@ -400,19 +427,19 @@ export class ObjectQL implements IObjectQL {
400
427
  } else if ((this.kernel as any).bootstrap) {
401
428
  await (this.kernel as any).bootstrap();
402
429
  } else {
403
- console.warn('ObjectKernel does not have start() or bootstrap() method');
430
+ this.logger.warn('ObjectKernel does not have start() or bootstrap() method');
404
431
 
405
432
  // Manually initialize plugins if kernel doesn't support lifecycle
406
433
  for (const plugin of this.kernelPlugins) {
407
434
  try {
408
435
  if (typeof (plugin as any).init === 'function') {
409
- await (plugin as any).init();
436
+ await (plugin as any).init(this.kernel);
410
437
  }
411
438
  if (typeof (plugin as any).start === 'function') {
412
- await (plugin as any).start();
439
+ await (plugin as any).start(this.kernel);
413
440
  }
414
441
  } catch (error) {
415
- console.error(`Failed to initialize plugin ${(plugin as any).name || 'unknown'}:`, error);
442
+ this.logger.error(`Failed to initialize plugin ${(plugin as any).name || 'unknown'}`, error as Error);
416
443
  // Continue with other plugins even if one fails
417
444
  }
418
445
  }
@@ -456,7 +483,7 @@ export class ObjectQL implements IObjectQL {
456
483
  // Let's pass all objects to all configured drivers.
457
484
  for (const [name, driver] of Object.entries(this.datasources)) {
458
485
  if (driver.init) {
459
- console.log(`Initializing driver '${name}'...`);
486
+ this.logger.debug(`Initializing driver '${name}'...`);
460
487
  await driver.init(objects);
461
488
  }
462
489
  }
@@ -464,14 +491,14 @@ export class ObjectQL implements IObjectQL {
464
491
  // Process Initial Data
465
492
  await this.processInitialData();
466
493
 
467
- console.log('[ObjectQL] Initialization complete');
494
+ this.logger.info('Initialization complete');
468
495
  }
469
496
 
470
497
  private async processInitialData() {
471
498
  const dataEntries = (this.kernel as any).metadata.list('data');
472
499
  if (dataEntries.length === 0) return;
473
500
 
474
- console.log(`Processing ${dataEntries.length} initial data files...`);
501
+ this.logger.info(`Processing ${dataEntries.length} initial data files...`);
475
502
 
476
503
  // We need a system context to write data
477
504
  const ctx = this.createContext({ isSystem: true });
@@ -495,7 +522,7 @@ export class ObjectQL implements IObjectQL {
495
522
  }
496
523
 
497
524
  if (!objectName || !records || !Array.isArray(records)) {
498
- console.warn(`Skipping invalid data entry:`, entry);
525
+ this.logger.warn('Skipping invalid data entry', { entry: String(entry) });
499
526
  continue;
500
527
  }
501
528
 
@@ -512,10 +539,10 @@ export class ObjectQL implements IObjectQL {
512
539
  // But without unique keys defined in data, we can't reliably dedup.
513
540
  // Let's try to 'create' and catch errors.
514
541
  await repo.create(record);
515
- console.log(`Initialized record for ${objectName}`);
542
+ this.logger.debug(`Initialized record for ${objectName}`);
516
543
  } catch (e: any) {
517
544
  // Ignore duplicate key errors silently-ish
518
- console.warn(`Failed to insert initial data for ${objectName}: ${e.message}`);
545
+ this.logger.warn(`Failed to insert initial data for ${objectName}: ${e.message}`);
519
546
  }
520
547
  }
521
548
  }