@llumiverse/core 1.3.0 → 1.4.0-dev.20260629.090753Z
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/lib/CompletionStream.d.ts +48 -0
- package/lib/CompletionStream.d.ts.map +1 -0
- package/lib/{esm/CompletionStream.js → CompletionStream.js} +142 -67
- package/lib/CompletionStream.js.map +1 -0
- package/lib/{types/Driver.d.ts → Driver.d.ts} +38 -5
- package/lib/Driver.d.ts.map +1 -0
- package/lib/{esm/Driver.js → Driver.js} +151 -106
- package/lib/Driver.js.map +1 -0
- package/lib/{types/async.d.ts → async.d.ts} +3 -3
- package/lib/async.d.ts.map +1 -0
- package/lib/{esm/async.js → async.js} +4 -4
- package/lib/async.js.map +1 -0
- package/lib/{types/conversation-utils.d.ts → conversation-utils.d.ts} +9 -0
- package/lib/conversation-utils.d.ts.map +1 -0
- package/lib/{esm/conversation-utils.js → conversation-utils.js} +78 -15
- package/lib/conversation-utils.js.map +1 -0
- package/lib/embeddings.d.ts +58 -0
- package/lib/embeddings.d.ts.map +1 -0
- package/lib/embeddings.js +131 -0
- package/lib/embeddings.js.map +1 -0
- package/lib/formatters/commons.d.ts +3 -0
- package/lib/formatters/commons.d.ts.map +1 -0
- package/lib/formatters/commons.js +4 -0
- package/lib/formatters/commons.js.map +1 -0
- package/lib/{types/formatters → formatters}/generic.d.ts +2 -2
- package/lib/formatters/generic.d.ts.map +1 -0
- package/lib/{esm/formatters → formatters}/generic.js +8 -8
- package/lib/formatters/generic.js.map +1 -0
- package/lib/formatters/index.d.ts +4 -0
- package/lib/formatters/index.d.ts.map +1 -0
- package/lib/formatters/index.js +4 -0
- package/lib/formatters/index.js.map +1 -0
- package/lib/{types/formatters → formatters}/nova.d.ts +4 -4
- package/lib/formatters/nova.d.ts.map +1 -0
- package/lib/{esm/formatters → formatters}/nova.js +19 -17
- package/lib/formatters/nova.js.map +1 -0
- package/lib/http-agent.d.ts +53 -0
- package/lib/http-agent.d.ts.map +1 -0
- package/lib/http-agent.js +141 -0
- package/lib/http-agent.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/{types/json.d.ts → json.d.ts} +1 -1
- package/lib/json.d.ts.map +1 -0
- package/lib/{esm/json.js → json.js} +4 -3
- package/lib/json.js.map +1 -0
- package/lib/logger.d.ts +3 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +42 -0
- package/lib/logger.js.map +1 -0
- package/lib/resolver.d.ts +2 -0
- package/lib/resolver.d.ts.map +1 -0
- package/lib/{esm/resolver.js → resolver.js} +7 -4
- package/lib/resolver.js.map +1 -0
- package/lib/stream.d.ts.map +1 -0
- package/lib/stream.js.map +1 -0
- package/lib/{types/validation.d.ts → validation.d.ts} +1 -1
- package/lib/validation.d.ts.map +1 -0
- package/lib/validation.js +100 -0
- package/lib/validation.js.map +1 -0
- package/package.json +28 -38
- package/src/CompletionStream.ts +208 -115
- package/src/Driver.error.test.ts +101 -72
- package/src/Driver.ts +208 -152
- package/src/async.ts +30 -30
- package/src/conversation-utils.ts +92 -16
- package/src/embeddings.ts +157 -0
- package/src/formatters/commons.ts +2 -2
- package/src/formatters/generic.ts +20 -17
- package/src/formatters/index.ts +3 -3
- package/src/formatters/nova.ts +53 -51
- package/src/http-agent.test.ts +281 -0
- package/src/http-agent.ts +177 -0
- package/src/index.ts +7 -5
- package/src/json.ts +6 -5
- package/src/logger.ts +42 -0
- package/src/resolver.ts +12 -9
- package/src/stream.ts +4 -5
- package/src/validation.ts +42 -29
- package/lib/cjs/CompletionStream.js +0 -293
- package/lib/cjs/CompletionStream.js.map +0 -1
- package/lib/cjs/Driver.js +0 -300
- package/lib/cjs/Driver.js.map +0 -1
- package/lib/cjs/async.js +0 -131
- package/lib/cjs/async.js.map +0 -1
- package/lib/cjs/conversation-utils.js +0 -579
- package/lib/cjs/conversation-utils.js.map +0 -1
- package/lib/cjs/formatters/commons.js +0 -7
- package/lib/cjs/formatters/commons.js.map +0 -1
- package/lib/cjs/formatters/generic.js +0 -59
- package/lib/cjs/formatters/generic.js.map +0 -1
- package/lib/cjs/formatters/index.js +0 -20
- package/lib/cjs/formatters/index.js.map +0 -1
- package/lib/cjs/formatters/nova.js +0 -99
- package/lib/cjs/formatters/nova.js.map +0 -1
- package/lib/cjs/index.js +0 -22
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/json.js +0 -29
- package/lib/cjs/json.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/resolver.js +0 -45
- package/lib/cjs/resolver.js.map +0 -1
- package/lib/cjs/stream.js +0 -30
- package/lib/cjs/stream.js.map +0 -1
- package/lib/cjs/validation.js +0 -96
- package/lib/cjs/validation.js.map +0 -1
- package/lib/esm/CompletionStream.js.map +0 -1
- package/lib/esm/Driver.js.map +0 -1
- package/lib/esm/async.js.map +0 -1
- package/lib/esm/conversation-utils.js.map +0 -1
- package/lib/esm/formatters/commons.js +0 -4
- package/lib/esm/formatters/commons.js.map +0 -1
- package/lib/esm/formatters/generic.js.map +0 -1
- package/lib/esm/formatters/index.js +0 -4
- package/lib/esm/formatters/index.js.map +0 -1
- package/lib/esm/formatters/nova.js.map +0 -1
- package/lib/esm/index.js +0 -6
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/json.js.map +0 -1
- package/lib/esm/resolver.js.map +0 -1
- package/lib/esm/stream.js.map +0 -1
- package/lib/esm/validation.js +0 -88
- package/lib/esm/validation.js.map +0 -1
- package/lib/types/CompletionStream.d.ts +0 -20
- package/lib/types/CompletionStream.d.ts.map +0 -1
- package/lib/types/Driver.d.ts.map +0 -1
- package/lib/types/async.d.ts.map +0 -1
- package/lib/types/conversation-utils.d.ts.map +0 -1
- package/lib/types/formatters/commons.d.ts +0 -3
- package/lib/types/formatters/commons.d.ts.map +0 -1
- package/lib/types/formatters/generic.d.ts.map +0 -1
- package/lib/types/formatters/index.d.ts +0 -4
- package/lib/types/formatters/index.d.ts.map +0 -1
- package/lib/types/formatters/nova.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -6
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/json.d.ts.map +0 -1
- package/lib/types/resolver.d.ts +0 -2
- package/lib/types/resolver.d.ts.map +0 -1
- package/lib/types/stream.d.ts.map +0 -1
- package/lib/types/validation.d.ts.map +0 -1
- /package/lib/{types/stream.d.ts → stream.d.ts} +0 -0
- /package/lib/{esm/stream.js → stream.js} +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { Agent } from 'undici';
|
|
3
|
+
/**
|
|
4
|
+
* Default HTTP timeouts used by {@link createDriverHttpAgent} when the
|
|
5
|
+
* caller does not override them. These are deliberately tighter than
|
|
6
|
+
* Node's undici default (5 minutes for headers and body) so a hung
|
|
7
|
+
* upstream LLM-provider call surfaces in seconds rather than blocking
|
|
8
|
+
* the whole request budget.
|
|
9
|
+
*
|
|
10
|
+
* Drivers with workloads that have legitimate long pauses (image
|
|
11
|
+
* generation, tool-using agent streams) should pass higher overrides
|
|
12
|
+
* via {@link HttpTimeoutOptions} rather than relying on the defaults.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_DRIVER_HTTP_TIMEOUTS = {
|
|
15
|
+
headersTimeout: 60_000,
|
|
16
|
+
bodyTimeout: 60_000,
|
|
17
|
+
connectTimeout: 10_000,
|
|
18
|
+
keepAliveTimeout: 30_000,
|
|
19
|
+
};
|
|
20
|
+
const scopedHttpAgent = new AsyncLocalStorage();
|
|
21
|
+
export function resolveDriverHttpTimeouts(opts) {
|
|
22
|
+
return {
|
|
23
|
+
headersTimeout: opts?.headersTimeout ?? DEFAULT_DRIVER_HTTP_TIMEOUTS.headersTimeout,
|
|
24
|
+
bodyTimeout: opts?.bodyTimeout ?? DEFAULT_DRIVER_HTTP_TIMEOUTS.bodyTimeout,
|
|
25
|
+
connectTimeout: opts?.connectTimeout ?? DEFAULT_DRIVER_HTTP_TIMEOUTS.connectTimeout,
|
|
26
|
+
keepAliveTimeout: opts?.keepAliveTimeout ?? DEFAULT_DRIVER_HTTP_TIMEOUTS.keepAliveTimeout,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function mergeDriverHttpTimeoutOptions(defaults, override) {
|
|
30
|
+
if (!override) {
|
|
31
|
+
return defaults;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
...(defaults ?? {}),
|
|
35
|
+
...stripUndefinedHttpTimeoutOptions(override),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build an undici `Agent` configured from {@link HttpTimeoutOptions},
|
|
40
|
+
* falling back to {@link DEFAULT_DRIVER_HTTP_TIMEOUTS} for unset fields.
|
|
41
|
+
*
|
|
42
|
+
* The Agent pools sockets — reuse it for the lifetime of the driver
|
|
43
|
+
* and close it on `destroy()`.
|
|
44
|
+
*
|
|
45
|
+
* Node-only. `@llumiverse/drivers` is itself Node-only in practice
|
|
46
|
+
* because vertexai/bedrock pull `@google-cloud/*` / `@aws-sdk/*`, so
|
|
47
|
+
* depending on undici from core is acceptable.
|
|
48
|
+
*/
|
|
49
|
+
export function createDriverHttpAgent(opts) {
|
|
50
|
+
const timeouts = resolveDriverHttpTimeouts(opts);
|
|
51
|
+
return new Agent({
|
|
52
|
+
headersTimeout: timeouts.headersTimeout,
|
|
53
|
+
bodyTimeout: timeouts.bodyTimeout,
|
|
54
|
+
connectTimeout: timeouts.connectTimeout,
|
|
55
|
+
keepAliveTimeout: timeouts.keepAliveTimeout,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Wrap the global `fetch` so every request routes through the given Agent.
|
|
60
|
+
* The returned function is type-compatible with global `fetch`, so it
|
|
61
|
+
* can be passed directly to SDKs that accept a `fetch` option (OpenAI,
|
|
62
|
+
* Anthropic, `@google/genai`, Bedrock via Smithy, …) or used as a
|
|
63
|
+
* drop-in replacement for global `fetch` in drivers that make raw HTTP
|
|
64
|
+
* calls.
|
|
65
|
+
*
|
|
66
|
+
* `@vertesia/api-fetch-client` builds requests with `globalThis.Request`,
|
|
67
|
+
* while the undici package uses its own `Request` class. Calling
|
|
68
|
+
* `undici.fetch` directly can parse a global Request as `"[object Request]"`.
|
|
69
|
+
* Use `globalThis.fetch` (undici-backed in Node/Bun) and pass the undici
|
|
70
|
+
* dispatcher extension through init so the Agent timeout behavior is still
|
|
71
|
+
* applied without crossing Request/Response implementations.
|
|
72
|
+
*/
|
|
73
|
+
export function createAgentBackedFetch(agent) {
|
|
74
|
+
return ((input, init) => {
|
|
75
|
+
const requestInput = typeof Request !== 'undefined' && input instanceof Request
|
|
76
|
+
? normalizeRequestInput(input, init)
|
|
77
|
+
: { input, init };
|
|
78
|
+
const dispatcher = scopedHttpAgent.getStore() ?? agent;
|
|
79
|
+
return globalThis.fetch(requestInput.input, {
|
|
80
|
+
...(requestInput.init ?? {}),
|
|
81
|
+
dispatcher,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
const NOOP_HTTP_AGENT_SCOPE = {
|
|
86
|
+
run: (callback) => callback(),
|
|
87
|
+
close: () => Promise.resolve(),
|
|
88
|
+
};
|
|
89
|
+
export function createDriverHttpAgentScope(defaults, override) {
|
|
90
|
+
if (!override) {
|
|
91
|
+
return NOOP_HTTP_AGENT_SCOPE;
|
|
92
|
+
}
|
|
93
|
+
const agent = createDriverHttpAgent(mergeDriverHttpTimeoutOptions(defaults, override));
|
|
94
|
+
return {
|
|
95
|
+
run: (callback) => scopedHttpAgent.run(agent, callback),
|
|
96
|
+
close: async () => {
|
|
97
|
+
await agent.close().catch(() => {
|
|
98
|
+
/* shutdown best-effort */
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function normalizeRequestInput(request, init) {
|
|
104
|
+
const overrides = stripUndefinedRequestInit(init);
|
|
105
|
+
const requestInit = {
|
|
106
|
+
method: request.method,
|
|
107
|
+
headers: request.headers,
|
|
108
|
+
body: request.body,
|
|
109
|
+
signal: request.signal,
|
|
110
|
+
cache: request.cache,
|
|
111
|
+
credentials: request.credentials,
|
|
112
|
+
integrity: request.integrity,
|
|
113
|
+
keepalive: request.keepalive,
|
|
114
|
+
mode: request.mode,
|
|
115
|
+
redirect: request.redirect,
|
|
116
|
+
referrer: request.referrer,
|
|
117
|
+
referrerPolicy: request.referrerPolicy,
|
|
118
|
+
};
|
|
119
|
+
if (request.body) {
|
|
120
|
+
requestInit.duplex = 'half';
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
input: request.url,
|
|
124
|
+
init: {
|
|
125
|
+
...requestInit,
|
|
126
|
+
...overrides,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function stripUndefinedRequestInit(init) {
|
|
131
|
+
if (!init) {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
const entries = Object.entries(init).filter(([, value]) => value !== undefined);
|
|
135
|
+
return Object.fromEntries(entries);
|
|
136
|
+
}
|
|
137
|
+
function stripUndefinedHttpTimeoutOptions(opts) {
|
|
138
|
+
const entries = Object.entries(opts).filter(([, value]) => value !== undefined);
|
|
139
|
+
return Object.fromEntries(entries);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=http-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-agent.js","sourceRoot":"","sources":["../src/http-agent.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from '@llumiverse/common';
|
|
2
|
+
export * from './conversation-utils.js';
|
|
3
|
+
export type { AbstractDriver, Driver } from './Driver.js';
|
|
4
|
+
export * from './embeddings.js';
|
|
5
|
+
export * from './json.js';
|
|
6
|
+
export * from './logger.js';
|
|
7
|
+
export * from './stream.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
package/lib/index.js
ADDED
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AAExC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JSONValue } from
|
|
1
|
+
import type { JSONValue } from '@llumiverse/common';
|
|
2
2
|
export declare function extractAndParseJSON(text: string): JSONValue;
|
|
3
3
|
export declare function parseJSON(text: string): JSONValue;
|
|
4
4
|
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AASpD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAajD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsonrepair } from 'jsonrepair';
|
|
2
2
|
function extractJsonFromText(text) {
|
|
3
|
-
const start = text.indexOf(
|
|
4
|
-
const end = text.lastIndexOf(
|
|
3
|
+
const start = text.indexOf('{');
|
|
4
|
+
const end = text.lastIndexOf('}');
|
|
5
5
|
return text.substring(start, end + 1);
|
|
6
6
|
}
|
|
7
7
|
export function extractAndParseJSON(text) {
|
|
@@ -17,7 +17,8 @@ export function parseJSON(text) {
|
|
|
17
17
|
try {
|
|
18
18
|
return JSON.parse(jsonrepair(text));
|
|
19
19
|
}
|
|
20
|
-
catch
|
|
20
|
+
catch {
|
|
21
|
+
// throw the original error
|
|
21
22
|
throw err;
|
|
22
23
|
}
|
|
23
24
|
}
|
package/lib/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,SAAS,mBAAmB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,uBAAuB;QACvB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACL,2BAA2B;YAC3B,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/lib/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAiCjD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,UAQlE"}
|
package/lib/logger.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Helper to create logger methods that support both message-only and object-first signatures.
|
|
2
|
+
function createConsoleLoggerMethod(consoleMethod) {
|
|
3
|
+
return ((objOrMsg, msgOrNever, ...args) => {
|
|
4
|
+
if (typeof objOrMsg === 'string') {
|
|
5
|
+
// Message-only: logger.info("message", ...args)
|
|
6
|
+
consoleMethod(objOrMsg, msgOrNever, ...args);
|
|
7
|
+
}
|
|
8
|
+
else if (msgOrNever !== undefined) {
|
|
9
|
+
// Object-first: logger.info({ obj }, "message", ...args)
|
|
10
|
+
consoleMethod(msgOrNever, objOrMsg, ...args);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// Object-only: logger.info({ obj })
|
|
14
|
+
consoleMethod(objOrMsg, ...args);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const ConsoleLogger = {
|
|
19
|
+
debug: createConsoleLoggerMethod(console.debug.bind(console)),
|
|
20
|
+
info: createConsoleLoggerMethod(console.info.bind(console)),
|
|
21
|
+
warn: createConsoleLoggerMethod(console.warn.bind(console)),
|
|
22
|
+
error: createConsoleLoggerMethod(console.error.bind(console)),
|
|
23
|
+
};
|
|
24
|
+
const noop = () => void 0;
|
|
25
|
+
const NoopLogger = {
|
|
26
|
+
debug: noop,
|
|
27
|
+
info: noop,
|
|
28
|
+
warn: noop,
|
|
29
|
+
error: noop,
|
|
30
|
+
};
|
|
31
|
+
export function createLogger(logger) {
|
|
32
|
+
if (logger === 'console') {
|
|
33
|
+
return ConsoleLogger;
|
|
34
|
+
}
|
|
35
|
+
else if (logger) {
|
|
36
|
+
return logger;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return NoopLogger;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,SAAS,yBAAyB,CAAC,aAA2C;IAC1E,OAAO,CAAC,CAAC,QAAiB,EAAE,UAAmB,EAAE,GAAG,IAAmC,EAAE,EAAE;QACvF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,gDAAgD;YAChD,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,yDAAyD;YACzD,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACJ,oCAAoC;YACpC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC,CAAmB,CAAC;AACzB,CAAC;AAED,MAAM,aAAa,GAAW;IAC1B,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAW;IACvB,KAAK,EAAE,IAAuB;IAC9B,IAAI,EAAE,IAAsB;IAC5B,IAAI,EAAE,IAAsB;IAC5B,KAAK,EAAE,IAAuB;CACjC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAsC;IAC/D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACJ,OAAO,UAAU,CAAC;IACtB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AA6BA,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAYrE"}
|
|
@@ -7,22 +7,25 @@
|
|
|
7
7
|
* @returns the property value
|
|
8
8
|
*/
|
|
9
9
|
function _prop(object, name) {
|
|
10
|
-
if (object === undefined) {
|
|
10
|
+
if (object === undefined || object === null) {
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
13
13
|
if (Array.isArray(object)) {
|
|
14
14
|
const index = +name;
|
|
15
|
-
if (isNaN(index)) {
|
|
15
|
+
if (Number.isNaN(index)) {
|
|
16
16
|
// map array to property
|
|
17
|
-
return object.map(item => item[name]);
|
|
17
|
+
return object.map((item) => item && typeof item === 'object' ? item[name] : undefined);
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
20
|
return object[index];
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
else {
|
|
23
|
+
else if (typeof object === 'object') {
|
|
24
24
|
return object[name];
|
|
25
25
|
}
|
|
26
|
+
else {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
export function resolveField(object, path) {
|
|
28
31
|
let p = object;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,MAAe,EAAE,IAAY;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,wBAAwB;YACxB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CACzF,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAQ,MAAkC,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,IAAc;IACxD,IAAI,CAAC,GAAY,MAAM,CAAC;IACxB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/E,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CompletionResult, ResultValidationError } from
|
|
1
|
+
import type { CompletionResult, ResultValidationError } from '@llumiverse/common';
|
|
2
2
|
export declare class ValidationError extends Error implements ResultValidationError {
|
|
3
3
|
code: 'validation_error' | 'json_error';
|
|
4
4
|
constructor(code: 'validation_error' | 'json_error', message: string);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAa,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AA8B7F,qBAAa,eAAgB,SAAQ,KAAM,YAAW,qBAAqB;IAE5D,IAAI,EAAE,kBAAkB,GAAG,YAAY;gBAAvC,IAAI,EAAE,kBAAkB,GAAG,YAAY,EAC9C,OAAO,EAAE,MAAM;CAKtB;AAoBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAoD3F"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Ajv } from 'ajv';
|
|
2
|
+
import addFormats from 'ajv-formats';
|
|
3
|
+
import { extractAndParseJSON } from './json.js';
|
|
4
|
+
import { resolveField } from './resolver.js';
|
|
5
|
+
const ajv = new Ajv({
|
|
6
|
+
coerceTypes: 'array',
|
|
7
|
+
allowDate: true,
|
|
8
|
+
strict: false,
|
|
9
|
+
useDefaults: true,
|
|
10
|
+
removeAdditional: 'failing',
|
|
11
|
+
});
|
|
12
|
+
// biome-ignore lint/suspicious/noTsIgnore: ajv-formats default export inconsistently callable under ESM/CJS interop
|
|
13
|
+
// @ts-ignore - ajv-formats default export is not callable under one of the TS configs in this monorepo
|
|
14
|
+
addFormats(ajv);
|
|
15
|
+
function errorMessage(error) {
|
|
16
|
+
return error instanceof Error ? error.message : String(error);
|
|
17
|
+
}
|
|
18
|
+
function getRequiredFields(schemaField) {
|
|
19
|
+
if (!schemaField || typeof schemaField !== 'object') {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
const required = schemaField.required;
|
|
23
|
+
return Array.isArray(required) ? required.filter((field) => typeof field === 'string') : [];
|
|
24
|
+
}
|
|
25
|
+
export class ValidationError extends Error {
|
|
26
|
+
code;
|
|
27
|
+
constructor(code, message) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.code = code;
|
|
30
|
+
this.name = 'ValidationError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function parseCompletionAsJson(data) {
|
|
34
|
+
let lastError;
|
|
35
|
+
for (const part of data) {
|
|
36
|
+
if (part.type === 'text') {
|
|
37
|
+
const text = part.value.trim();
|
|
38
|
+
try {
|
|
39
|
+
return extractAndParseJSON(text);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
lastError = new ValidationError('json_error', errorMessage(error));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!lastError) {
|
|
47
|
+
lastError = new ValidationError('json_error', 'No JSON compatible response found in completion result');
|
|
48
|
+
}
|
|
49
|
+
throw lastError;
|
|
50
|
+
}
|
|
51
|
+
export function validateResult(data, schema) {
|
|
52
|
+
let json;
|
|
53
|
+
if (Array.isArray(data)) {
|
|
54
|
+
const jsonResults = data.filter((r) => r.type === 'json');
|
|
55
|
+
if (jsonResults.length > 0) {
|
|
56
|
+
json = jsonResults[0].value;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
try {
|
|
60
|
+
json = parseCompletionAsJson(data);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw new ValidationError('json_error', errorMessage(error));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new Error('Data to validate must be an array');
|
|
69
|
+
}
|
|
70
|
+
const validate = ajv.compile(schema);
|
|
71
|
+
const valid = validate(json);
|
|
72
|
+
if (!valid && validate.errors) {
|
|
73
|
+
const errors = [];
|
|
74
|
+
for (const e of validate.errors) {
|
|
75
|
+
const path = e.instancePath.split('/').slice(1);
|
|
76
|
+
const value = resolveField(json, path);
|
|
77
|
+
const schemaPath = e.schemaPath.split('/').slice(1);
|
|
78
|
+
const schemaFieldFormat = resolveField(schema, schemaPath);
|
|
79
|
+
const schemaField = resolveField(schema, schemaPath.slice(0, -3));
|
|
80
|
+
//ignore date if empty or null
|
|
81
|
+
if (!value &&
|
|
82
|
+
typeof schemaFieldFormat === 'string' &&
|
|
83
|
+
['date', 'date-time'].includes(schemaFieldFormat) &&
|
|
84
|
+
!getRequiredFields(schemaField).includes(path[path.length - 1])) {
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
errors.push(e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//console.log("Errors", errors)
|
|
91
|
+
if (errors.length > 0) {
|
|
92
|
+
const errorsMessage = errors
|
|
93
|
+
.map((e) => `${e.instancePath}: ${e.message}\n${JSON.stringify(e.params)}`)
|
|
94
|
+
.join(',\n\n');
|
|
95
|
+
throw new ValidationError('validation_error', errorsMessage);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return [{ type: 'json', value: json }];
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llumiverse/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0-dev.20260629.090753Z",
|
|
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": [
|
|
@@ -27,32 +27,28 @@
|
|
|
27
27
|
"huggingface",
|
|
28
28
|
"togetherai"
|
|
29
29
|
],
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"*": {
|
|
33
|
-
"async": [
|
|
34
|
-
"./lib/types/async.d.ts"
|
|
35
|
-
],
|
|
36
|
-
"formatters": [
|
|
37
|
-
"./lib/types/formatters/index.d.ts"
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
},
|
|
30
|
+
"main": "./lib/index.js",
|
|
31
|
+
"types": "./lib/index.d.ts",
|
|
41
32
|
"exports": {
|
|
42
33
|
".": {
|
|
43
|
-
"types": "./lib/
|
|
44
|
-
"
|
|
45
|
-
"require": "./lib/cjs/index.js"
|
|
34
|
+
"types": "./lib/index.d.ts",
|
|
35
|
+
"default": "./lib/index.js"
|
|
46
36
|
},
|
|
47
37
|
"./async": {
|
|
48
|
-
"types": "./lib/
|
|
49
|
-
"
|
|
50
|
-
|
|
38
|
+
"types": "./lib/async.d.ts",
|
|
39
|
+
"default": "./lib/async.js"
|
|
40
|
+
},
|
|
41
|
+
"./driver": {
|
|
42
|
+
"types": "./lib/Driver.d.ts",
|
|
43
|
+
"default": "./lib/Driver.js"
|
|
51
44
|
},
|
|
52
45
|
"./formatters": {
|
|
53
|
-
"types": "./lib/
|
|
54
|
-
"
|
|
55
|
-
|
|
46
|
+
"types": "./lib/formatters/index.d.ts",
|
|
47
|
+
"default": "./lib/formatters/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./http-agent": {
|
|
50
|
+
"types": "./lib/http-agent.d.ts",
|
|
51
|
+
"default": "./lib/http-agent.js"
|
|
56
52
|
}
|
|
57
53
|
},
|
|
58
54
|
"author": "Llumiverse",
|
|
@@ -63,30 +59,24 @@
|
|
|
63
59
|
"url": "git+ssh://git@github.com/vertesia/llumiverse.git"
|
|
64
60
|
},
|
|
65
61
|
"devDependencies": {
|
|
66
|
-
"@vertesia/api-fetch-client": "^1.
|
|
67
|
-
"rimraf": "^6.1.
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"vitest": "^4.0.18"
|
|
62
|
+
"@vertesia/api-fetch-client": "^1.3.0",
|
|
63
|
+
"rimraf": "^6.1.3",
|
|
64
|
+
"typescript": "^6.0.3",
|
|
65
|
+
"vitest": "^4.1.8"
|
|
71
66
|
},
|
|
72
67
|
"dependencies": {
|
|
73
|
-
"@types/node": "^24.
|
|
74
|
-
"ajv": "^8.
|
|
68
|
+
"@types/node": "^24.13.2",
|
|
69
|
+
"ajv": "^8.20.0",
|
|
75
70
|
"ajv-formats": "^3.0.1",
|
|
76
|
-
"jsonrepair": "^3.
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
"ts_dual_module": {
|
|
80
|
-
"outDir": "lib",
|
|
81
|
-
"exports": {
|
|
82
|
-
"async": "async.js",
|
|
83
|
-
"formatters": "formatters/index.js"
|
|
84
|
-
}
|
|
71
|
+
"jsonrepair": "^3.14.0",
|
|
72
|
+
"undici": "^7.27.2",
|
|
73
|
+
"@llumiverse/common": "1.4.0-dev.20260629.090753Z"
|
|
85
74
|
},
|
|
86
75
|
"scripts": {
|
|
87
76
|
"lint": "biome lint src",
|
|
88
77
|
"test": "vitest run",
|
|
89
|
-
"
|
|
78
|
+
"typecheck:test": "tsc -p tsconfig.test.json --noEmit",
|
|
79
|
+
"build": "pnpm exec rimraf ./lib ./tsconfig.tsbuildinfo && tsc",
|
|
90
80
|
"clean": "rimraf ./lib tsconfig.tsbuildinfo"
|
|
91
81
|
}
|
|
92
82
|
}
|