@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +19 -0
- package/dist/ai/index.d.ts +8 -0
- package/dist/ai/index.js +25 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/registry.d.ts +23 -0
- package/dist/ai/registry.js +78 -0
- package/dist/ai/registry.js.map +1 -0
- package/dist/app.d.ts +2 -1
- package/dist/app.js +41 -20
- package/dist/app.js.map +1 -1
- package/dist/gateway.d.ts +3 -2
- package/dist/gateway.js +6 -2
- package/dist/gateway.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/optimizations/CompiledHookManager.d.ts +1 -0
- package/dist/optimizations/CompiledHookManager.js +7 -1
- package/dist/optimizations/CompiledHookManager.js.map +1 -1
- package/dist/plugin.d.ts +3 -2
- package/dist/plugin.js +77 -33
- package/dist/plugin.js.map +1 -1
- package/dist/protocol.d.ts +11 -0
- package/dist/protocol.js +12 -0
- package/dist/protocol.js.map +1 -1
- package/dist/query/filter-translator.d.ts +1 -4
- package/dist/query/filter-translator.js.map +1 -1
- package/dist/query/query-analyzer.d.ts +1 -3
- package/dist/query/query-analyzer.js.map +1 -1
- package/dist/query/query-builder.d.ts +1 -9
- package/dist/query/query-builder.js +8 -0
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/query-service.d.ts +2 -3
- package/dist/query/query-service.js +5 -1
- package/dist/query/query-service.js.map +1 -1
- package/dist/repository.d.ts +0 -28
- package/dist/repository.js +18 -173
- package/dist/repository.js.map +1 -1
- package/package.json +16 -9
- package/src/ai/index.ts +9 -0
- package/src/ai/registry.ts +81 -0
- package/src/app.ts +47 -20
- package/src/gateway.ts +7 -3
- package/src/index.ts +24 -7
- package/src/optimizations/CompiledHookManager.ts +9 -1
- package/src/plugin.ts +90 -36
- package/src/protocol.ts +13 -0
- package/src/query/filter-translator.ts +3 -3
- package/src/query/query-analyzer.ts +1 -2
- package/src/query/query-builder.ts +8 -8
- package/src/query/query-service.ts +7 -3
- package/src/repository.ts +20 -223
- package/test/ai-registry.test.ts +42 -0
- package/test/app.test.ts +6 -6
- package/test/optimizations.test.ts +1 -1
- package/test/plugin-integration.test.ts +3 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/jest.config.js +0 -29
package/dist/repository.js
CHANGED
|
@@ -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
|
-
//
|
|
226
|
-
const
|
|
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
|
-
//
|
|
230
|
-
|
|
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
|
-
//
|
|
250
|
-
|
|
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
|
-
//
|
|
290
|
-
|
|
291
|
-
const
|
|
292
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
package/dist/repository.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
22
|
-
"@objectstack/objectql": "^1.
|
|
23
|
-
"@objectstack/runtime": "^1.
|
|
24
|
-
"@objectstack/spec": "^1.
|
|
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
|
-
"
|
|
27
|
-
"@objectql/plugin-
|
|
28
|
-
"@objectql/
|
|
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": "
|
|
43
|
+
"test": "vitest run"
|
|
37
44
|
}
|
|
38
45
|
}
|
package/src/ai/index.ts
ADDED
|
@@ -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/
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
542
|
+
this.logger.debug(`Initialized record for ${objectName}`);
|
|
516
543
|
} catch (e: any) {
|
|
517
544
|
// Ignore duplicate key errors silently-ish
|
|
518
|
-
|
|
545
|
+
this.logger.warn(`Failed to insert initial data for ${objectName}: ${e.message}`);
|
|
519
546
|
}
|
|
520
547
|
}
|
|
521
548
|
}
|