@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 CHANGED
@@ -28,7 +28,7 @@ New capabilities and platform can easily be added by creating a new driver for t
28
28
 
29
29
  ## Requirements
30
30
 
31
- * node v18+, or bun 1.0+
31
+ * node v22+, or bun 1.0+
32
32
 
33
33
  ## Installation
34
34
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llumiverse/core",
3
- "version": "0.22.1",
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.74.0",
72
- "rimraf": "^6.0.1",
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.2",
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.17.1",
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
- this.logger?.error({ err: error, data: result.result }, `[${this.provider}] [${options.model}] ${error.code ? '[' + error.code + '] ' : ''}Result validation error: ${error.message}`);
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,