@llumiverse/core 0.22.1 → 0.23.0-dev-20251118
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 +1 -1
- package/package.json +5 -5
- package/src/Driver.ts +26 -9
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llumiverse/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0-dev-20251118",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Provide an universal API to LLMs. Support for existing LLMs can be added by writing a driver.",
|
|
6
6
|
"files": [
|
|
@@ -68,15 +68,15 @@
|
|
|
68
68
|
"url": "git+ssh://git@github.com/vertesia/llumiverse.git"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@vertesia/api-fetch-client": "^0.
|
|
72
|
-
"rimraf": "^6.0
|
|
71
|
+
"@vertesia/api-fetch-client": "^0.79.0",
|
|
72
|
+
"rimraf": "^6.1.0",
|
|
73
73
|
"ts-dual-module": "^0.6.3",
|
|
74
|
-
"typescript": "^5.9.
|
|
74
|
+
"typescript": "^5.9.3",
|
|
75
75
|
"vitest": "^3.2.4"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@llumiverse/common": "workspace:*",
|
|
79
|
-
"@types/node": "^22.
|
|
79
|
+
"@types/node": "^22.19.0",
|
|
80
80
|
"ajv": "^8.17.1",
|
|
81
81
|
"ajv-formats": "^3.0.1",
|
|
82
82
|
"jsonrepair": "^3.13.1"
|
package/src/Driver.ts
CHANGED
|
@@ -28,19 +28,35 @@ import {
|
|
|
28
28
|
} from "@llumiverse/common";
|
|
29
29
|
import { validateResult } from "./validation.js";
|
|
30
30
|
|
|
31
|
+
// Helper to create logger methods that support both message-only and object-first signatures
|
|
32
|
+
function createConsoleLoggerMethod(consoleMethod: (...args: unknown[]) => void): Logger['info'] {
|
|
33
|
+
return ((objOrMsg: any, msgOrNever?: any, ...args: (string | number | boolean)[]) => {
|
|
34
|
+
if (typeof objOrMsg === 'string') {
|
|
35
|
+
// Message-only: logger.info("message", ...args)
|
|
36
|
+
consoleMethod(objOrMsg, msgOrNever, ...args);
|
|
37
|
+
} else if (msgOrNever !== undefined) {
|
|
38
|
+
// Object-first: logger.info({ obj }, "message", ...args)
|
|
39
|
+
consoleMethod(msgOrNever, objOrMsg, ...args);
|
|
40
|
+
} else {
|
|
41
|
+
// Object-only: logger.info({ obj })
|
|
42
|
+
consoleMethod(objOrMsg, ...args);
|
|
43
|
+
}
|
|
44
|
+
}) as Logger['info'];
|
|
45
|
+
}
|
|
46
|
+
|
|
31
47
|
const ConsoleLogger: Logger = {
|
|
32
|
-
debug: console.debug,
|
|
33
|
-
info: console.info,
|
|
34
|
-
warn: console.warn,
|
|
35
|
-
error: console.error,
|
|
48
|
+
debug: createConsoleLoggerMethod(console.debug.bind(console)),
|
|
49
|
+
info: createConsoleLoggerMethod(console.info.bind(console)),
|
|
50
|
+
warn: createConsoleLoggerMethod(console.warn.bind(console)),
|
|
51
|
+
error: createConsoleLoggerMethod(console.error.bind(console)),
|
|
36
52
|
}
|
|
37
53
|
|
|
38
54
|
const noop = () => void 0;
|
|
39
55
|
const NoopLogger: Logger = {
|
|
40
|
-
debug: noop,
|
|
41
|
-
info: noop,
|
|
42
|
-
warn: noop,
|
|
43
|
-
error: noop,
|
|
56
|
+
debug: noop as Logger['debug'],
|
|
57
|
+
info: noop as Logger['info'],
|
|
58
|
+
warn: noop as Logger['warn'],
|
|
59
|
+
error: noop as Logger['error'],
|
|
44
60
|
}
|
|
45
61
|
|
|
46
62
|
export function createLogger(logger: Logger | "console" | undefined) {
|
|
@@ -130,7 +146,8 @@ export abstract class AbstractDriver<OptionsT extends DriverOptions = DriverOpti
|
|
|
130
146
|
try {
|
|
131
147
|
result.result = validateResult(result.result, options.result_schema);
|
|
132
148
|
} catch (error: any) {
|
|
133
|
-
|
|
149
|
+
const errorMessage = `[${this.provider}] [${options.model}] ${error.code ? '[' + error.code + '] ' : ''}Result validation error: ${error.message}`;
|
|
150
|
+
this.logger.error({ err: error, data: result.result }, errorMessage);
|
|
134
151
|
result.error = {
|
|
135
152
|
code: error.code || error.name,
|
|
136
153
|
message: error.message,
|