@nola-lang/providers 0.1.3 → 0.1.5
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/dist/anthropic.d.ts +2 -2
- package/dist/anthropic.d.ts.map +1 -1
- package/dist/anthropic.js +6 -5
- package/dist/anthropic.js.map +1 -1
- package/dist/combinators.d.ts +4 -4
- package/dist/combinators.d.ts.map +1 -1
- package/dist/combinators.js +21 -6
- package/dist/combinators.js.map +1 -1
- package/dist/google.d.ts +2 -2
- package/dist/google.d.ts.map +1 -1
- package/dist/google.js +6 -5
- package/dist/google.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mock.d.ts +4 -2
- package/dist/mock.d.ts.map +1 -1
- package/dist/mock.js.map +1 -1
- package/dist/openai.d.ts +2 -2
- package/dist/openai.d.ts.map +1 -1
- package/dist/openai.js +6 -5
- package/dist/openai.js.map +1 -1
- package/dist/record-replay.d.ts +21 -4
- package/dist/record-replay.d.ts.map +1 -1
- package/dist/record-replay.js +45 -14
- package/dist/record-replay.js.map +1 -1
- package/dist/wire.d.ts +0 -2
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +0 -10
- package/dist/wire.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ import { defineConfig } from "@nola-lang/runtime";
|
|
|
8
8
|
import { anthropic, google, openai, mockProvider, withRetry, exponential, fallback, record, replay } from "@nola-lang/providers";
|
|
9
9
|
|
|
10
10
|
export default defineConfig({
|
|
11
|
-
|
|
11
|
+
provider: {
|
|
12
12
|
default: withRetry(anthropic("claude-sonnet-5"), exponential({ maxRetries: 3 })),
|
|
13
13
|
fast: fallback([google("gemini-2.5-flash"), openai("gpt-5-mini")]),
|
|
14
14
|
test: replay("./nola.replay.jsonl"), // record(...) once, replay offline forever
|
package/dist/anthropic.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModel } from "@nola-lang/core";
|
|
2
2
|
export interface AnthropicOptions {
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
/** Env var name holding the key. Default: "ANTHROPIC_API_KEY". Value is read lazily at the first request. */
|
|
@@ -11,5 +11,5 @@ export interface AnthropicOptions {
|
|
|
11
11
|
maxOutputTokens?: number;
|
|
12
12
|
}
|
|
13
13
|
/** A bare model string is shorthand for `{ model }` — every other option defaulted. */
|
|
14
|
-
export declare function anthropic(optionsOrModel: AnthropicOptions | string):
|
|
14
|
+
export declare function anthropic(optionsOrModel: AnthropicOptions | string): LanguageModel;
|
|
15
15
|
//# sourceMappingURL=anthropic.d.ts.map
|
package/dist/anthropic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../src/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../src/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6GAA6G;IAC7G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,cAAc,EAAE,gBAAgB,GAAG,MAAM,GAAG,aAAa,CAkElF"}
|
package/dist/anthropic.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NolaProviderError } from "@nola-lang/core";
|
|
2
|
-
import { ENVELOPE_NOTE, envelope,
|
|
1
|
+
import { NolaProviderError, parseRetryAfter } from "@nola-lang/core";
|
|
2
|
+
import { ENVELOPE_NOTE, envelope, resolveRootRef } from "./wire.js";
|
|
3
3
|
const DEFAULT_MAX_OUTPUT_TOKENS = 4096;
|
|
4
4
|
/** A bare model string is shorthand for `{ model }` — every other option defaulted. */
|
|
5
5
|
export function anthropic(optionsOrModel) {
|
|
@@ -17,16 +17,17 @@ export function anthropic(optionsOrModel) {
|
|
|
17
17
|
if (!apiKey) {
|
|
18
18
|
throw new NolaProviderError(`Anthropic API key not found: environment variable ${envName} is not set (checked process.env, including the project .env applied by the Nola loader) and no \`apiKey\` was passed to anthropic(). Fix: set ${envName}, or pass anthropic({ apiKeyEnv: "MY_VAR" }) or anthropic({ apiKey }) in nola.config.ts.`, { definitive: true });
|
|
19
19
|
}
|
|
20
|
-
const
|
|
20
|
+
const { system: baseSystem, messages, output } = req.payload;
|
|
21
|
+
const reqSchema = output.syntax === "json" ? output.schema : undefined;
|
|
21
22
|
const rootShape = reqSchema === undefined ? undefined : resolveRootRef(reqSchema);
|
|
22
23
|
const enveloped = rootShape !== undefined && !("$ref" in rootShape) && rootShape.type !== "object";
|
|
23
24
|
const transport = reqSchema === undefined ? undefined : enveloped ? envelope(reqSchema) : reqSchema;
|
|
24
|
-
const system = enveloped ?
|
|
25
|
+
const system = enveloped ? baseSystem + ENVELOPE_NOTE : baseSystem;
|
|
25
26
|
const body = {
|
|
26
27
|
model,
|
|
27
28
|
max_tokens: maxTokens,
|
|
28
29
|
system,
|
|
29
|
-
messages
|
|
30
|
+
messages,
|
|
30
31
|
};
|
|
31
32
|
if (transport) {
|
|
32
33
|
body.output_config = { format: { type: "json_schema", schema: transport } };
|
package/dist/anthropic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../src/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../src/anthropic.ts"],"names":[],"mappings":"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"}
|
package/dist/combinators.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModel } from "@nola-lang/core";
|
|
2
2
|
export interface RetryPolicy {
|
|
3
3
|
maxRetries: number;
|
|
4
4
|
delayMs: number;
|
|
@@ -26,7 +26,7 @@ export declare function isDefinitiveProviderError(error: unknown): boolean;
|
|
|
26
26
|
* `.withRetry(n)`, which flat-retries the entire ask (composition, provider
|
|
27
27
|
* call, parse, validation) with no backoff and no definitive-error check.
|
|
28
28
|
*/
|
|
29
|
-
export declare function withRetry(provider:
|
|
30
|
-
export declare function fallback(providers:
|
|
31
|
-
export declare function roundRobin(providers:
|
|
29
|
+
export declare function withRetry(provider: LanguageModel, policy: RetryPolicy): LanguageModel;
|
|
30
|
+
export declare function fallback(providers: LanguageModel[]): LanguageModel;
|
|
31
|
+
export declare function roundRobin(providers: LanguageModel[]): LanguageModel;
|
|
32
32
|
//# sourceMappingURL=combinators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAGpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,WAAW,CAOd;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKjE;AAgCD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,aAAa,CAqBrF;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,CAkBlE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,CAqBpE"}
|
package/dist/combinators.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Codes } from "@nola-lang/ast";
|
|
2
|
-
import { NolaConfigError, NolaProviderError } from "@nola-lang/core";
|
|
2
|
+
import { isPlatformModel, NolaConfigError, NolaProviderError } from "@nola-lang/core";
|
|
3
3
|
export function constant(opts) {
|
|
4
4
|
const delayMs = opts.delayMs ?? 0;
|
|
5
5
|
return { maxRetries: opts.maxRetries, delayMs, multiplier: 1, maxDelayMs: delayMs };
|
|
@@ -24,9 +24,21 @@ export function isDefinitiveProviderError(error) {
|
|
|
24
24
|
function sleep(ms) {
|
|
25
25
|
return ms <= 0 ? Promise.resolve() : new Promise((resolve) => setTimeout(resolve, ms));
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
if (
|
|
29
|
-
throw new NolaConfigError(`${combinator}([]) needs at least one
|
|
27
|
+
function requireModels(models, combinator) {
|
|
28
|
+
if (models.length === 0) {
|
|
29
|
+
throw new NolaConfigError(`${combinator}([]) needs at least one model.`, Codes.ConfigInvalid);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The platform model can only be the config root (platform-config design
|
|
34
|
+
* 2026-09-03) — it manages its own resilience: built-in transport retry via
|
|
35
|
+
* nola.infer({ retry }); routing and failover live on the server side.
|
|
36
|
+
* record()/replay() remain available around it.
|
|
37
|
+
*/
|
|
38
|
+
function rejectPlatformModel(models, combinator) {
|
|
39
|
+
const rejected = models.filter((m) => isPlatformModel(m));
|
|
40
|
+
if (rejected.length > 0) {
|
|
41
|
+
throw new NolaConfigError(`${combinator}() cannot wrap ${rejected.map((m) => m.name).join(", ")} — the platform model can only be the root: it manages its own resilience (nola.infer({ retry }) for transport retry; routing and failover live on the server). record()/replay() remain available.`, Codes.ConfigInvalid);
|
|
30
42
|
}
|
|
31
43
|
}
|
|
32
44
|
function describeError(error) {
|
|
@@ -42,6 +54,7 @@ function describeError(error) {
|
|
|
42
54
|
* call, parse, validation) with no backoff and no definitive-error check.
|
|
43
55
|
*/
|
|
44
56
|
export function withRetry(provider, policy) {
|
|
57
|
+
rejectPlatformModel([provider], "withRetry");
|
|
45
58
|
return {
|
|
46
59
|
name: `retry(${provider.name})`,
|
|
47
60
|
async complete(req) {
|
|
@@ -65,7 +78,8 @@ export function withRetry(provider, policy) {
|
|
|
65
78
|
};
|
|
66
79
|
}
|
|
67
80
|
export function fallback(providers) {
|
|
68
|
-
|
|
81
|
+
requireModels(providers, "fallback");
|
|
82
|
+
rejectPlatformModel(providers, "fallback");
|
|
69
83
|
const name = `fallback(${providers.map((p) => p.name).join(", ")})`;
|
|
70
84
|
return {
|
|
71
85
|
name,
|
|
@@ -84,7 +98,8 @@ export function fallback(providers) {
|
|
|
84
98
|
};
|
|
85
99
|
}
|
|
86
100
|
export function roundRobin(providers) {
|
|
87
|
-
|
|
101
|
+
requireModels(providers, "roundRobin");
|
|
102
|
+
rejectPlatformModel(providers, "roundRobin");
|
|
88
103
|
const name = `roundRobin(${providers.map((p) => p.name).join(", ")})`;
|
|
89
104
|
let nextStart = 0;
|
|
90
105
|
return {
|
package/dist/combinators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
package/dist/google.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModel } from "@nola-lang/core";
|
|
2
2
|
export interface GoogleOptions {
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
/** Env var name holding the key. Default: "GEMINI_API_KEY". Value is read lazily at the first request. */
|
|
@@ -9,5 +9,5 @@ export interface GoogleOptions {
|
|
|
9
9
|
fetch?: typeof globalThis.fetch;
|
|
10
10
|
}
|
|
11
11
|
/** A bare model string is shorthand for `{ model }` — every other option defaulted. */
|
|
12
|
-
export declare function google(optionsOrModel: GoogleOptions | string):
|
|
12
|
+
export declare function google(optionsOrModel: GoogleOptions | string): LanguageModel;
|
|
13
13
|
//# sourceMappingURL=google.d.ts.map
|
package/dist/google.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../src/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../src/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,uFAAuF;AACvF,wBAAgB,MAAM,CAAC,cAAc,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,CAoE5E"}
|
package/dist/google.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NolaProviderError } from "@nola-lang/core";
|
|
2
|
-
import { ENVELOPE_NOTE, envelope,
|
|
1
|
+
import { NolaProviderError, parseRetryAfter } from "@nola-lang/core";
|
|
2
|
+
import { ENVELOPE_NOTE, envelope, resolveRootRef } from "./wire.js";
|
|
3
3
|
/** A bare model string is shorthand for `{ model }` — every other option defaulted. */
|
|
4
4
|
export function google(optionsOrModel) {
|
|
5
5
|
const options = typeof optionsOrModel === "string" ? { model: optionsOrModel } : optionsOrModel;
|
|
@@ -15,14 +15,15 @@ export function google(optionsOrModel) {
|
|
|
15
15
|
if (!apiKey) {
|
|
16
16
|
throw new NolaProviderError(`Google API key not found: environment variable ${envName} is not set (checked process.env, including the project .env applied by the Nola loader) and no \`apiKey\` was passed to google(). Fix: set ${envName}, or pass google({ apiKeyEnv: "MY_VAR" }) or google({ apiKey }) in nola.config.ts.`, { definitive: true });
|
|
17
17
|
}
|
|
18
|
-
const
|
|
18
|
+
const { system: baseSystem, messages, output } = req.payload;
|
|
19
|
+
const reqSchema = output.syntax === "json" ? output.schema : undefined;
|
|
19
20
|
const rootShape = reqSchema === undefined ? undefined : resolveRootRef(reqSchema);
|
|
20
21
|
const enveloped = rootShape !== undefined && !("$ref" in rootShape) && rootShape.type !== "object";
|
|
21
22
|
const transport = reqSchema === undefined ? undefined : enveloped ? envelope(reqSchema) : reqSchema;
|
|
22
|
-
const system = enveloped ?
|
|
23
|
+
const system = enveloped ? baseSystem + ENVELOPE_NOTE : baseSystem;
|
|
23
24
|
const body = {
|
|
24
25
|
system_instruction: { parts: [{ text: system }] },
|
|
25
|
-
contents:
|
|
26
|
+
contents: messages.map((m) => ({
|
|
26
27
|
role: m.role === "assistant" ? "model" : "user",
|
|
27
28
|
parts: [{ text: m.content }],
|
|
28
29
|
})),
|
package/dist/google.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../src/google.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../src/google.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,14 @@ import { openai } from "./openai.js";
|
|
|
5
5
|
export { type AnthropicOptions, anthropic } from "./anthropic.js";
|
|
6
6
|
export { constant, exponential, fallback, isDefinitiveProviderError, type RetryPolicy, roundRobin, withRetry, } from "./combinators.js";
|
|
7
7
|
export { type GoogleOptions, google } from "./google.js";
|
|
8
|
-
export { mockProvider } from "./mock.js";
|
|
8
|
+
export { type MockRequest, mockProvider } from "./mock.js";
|
|
9
9
|
export { type OpenAiOptions, openai } from "./openai.js";
|
|
10
10
|
export { record, replay } from "./record-replay.js";
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Every bring-your-own provider factory, keyed by the name its provider
|
|
13
|
+
* reports. The platform model is not here: `nola.infer()` lives in
|
|
14
|
+
* `@nola-lang/runtime`, the built-in that ships with the runtime.
|
|
15
|
+
*/
|
|
12
16
|
export declare const providers: {
|
|
13
17
|
readonly anthropic: typeof anthropic;
|
|
14
18
|
readonly google: typeof google;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,yBAAyB,EACzB,KAAK,WAAW,EAChB,UAAU,EACV,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,yBAAyB,EACzB,KAAK,WAAW,EAChB,UAAU,EACV,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,11 @@ export { google } from "./google.js";
|
|
|
8
8
|
export { mockProvider } from "./mock.js";
|
|
9
9
|
export { openai } from "./openai.js";
|
|
10
10
|
export { record, replay } from "./record-replay.js";
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Every bring-your-own provider factory, keyed by the name its provider
|
|
13
|
+
* reports. The platform model is not here: `nola.infer()` lives in
|
|
14
|
+
* `@nola-lang/runtime`, the built-in that ships with the runtime.
|
|
15
|
+
*/
|
|
12
16
|
export const providers = {
|
|
13
17
|
anthropic,
|
|
14
18
|
google,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAyB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,yBAAyB,EAEzB,UAAU,EACV,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsB,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAyB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,yBAAyB,EAEzB,UAAU,EACV,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAsB,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAoB,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAsB,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS;IACT,MAAM;IACN,MAAM;IACN,IAAI,EAAE,YAAY;CACV,CAAC"}
|
package/dist/mock.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { LanguageModel, ProviderRequest } from "@nola-lang/core";
|
|
2
|
+
/** What a mock callback sees: the classic request — `payload` IS the rendering (reshape 2026-09-01). */
|
|
3
|
+
export type MockRequest = ProviderRequest;
|
|
4
|
+
export declare function mockProvider(source: unknown[] | ((req: MockRequest) => unknown)): LanguageModel;
|
|
3
5
|
//# sourceMappingURL=mock.d.ts.map
|
package/dist/mock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEtE,wGAAwG;AACxG,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,aAAa,CAe/F"}
|
package/dist/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,MAAmD;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,QAAQ,CAAC,GAAG;YAChB,IAAI,KAAc,CAAC;YACnB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBACxE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAI,MAAwC,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/openai.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModel } from "@nola-lang/core";
|
|
2
2
|
export interface OpenAiOptions {
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
/** Env var name holding the key. Default: "OPENAI_API_KEY". Value is read lazily at the first request. */
|
|
@@ -9,5 +9,5 @@ export interface OpenAiOptions {
|
|
|
9
9
|
fetch?: typeof globalThis.fetch;
|
|
10
10
|
}
|
|
11
11
|
/** A bare model string is shorthand for `{ model }` — every other option defaulted. */
|
|
12
|
-
export declare function openai(optionsOrModel: OpenAiOptions | string):
|
|
12
|
+
export declare function openai(optionsOrModel: OpenAiOptions | string): LanguageModel;
|
|
13
13
|
//# sourceMappingURL=openai.d.ts.map
|
package/dist/openai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAsFD,uFAAuF;AACvF,wBAAgB,MAAM,CAAC,cAAc,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,CAqE5E"}
|
package/dist/openai.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NolaProviderError } from "@nola-lang/core";
|
|
2
|
-
import { ENVELOPE_NOTE, envelope,
|
|
1
|
+
import { NolaProviderError, parseRetryAfter } from "@nola-lang/core";
|
|
2
|
+
import { ENVELOPE_NOTE, envelope, resolveRootRef } from "./wire.js";
|
|
3
3
|
/** Strict mode requires every property required; optionals become anyOf [T, null]. */
|
|
4
4
|
function toStrict(schema) {
|
|
5
5
|
const out = toStrictNode(schema);
|
|
@@ -99,14 +99,15 @@ export function openai(optionsOrModel) {
|
|
|
99
99
|
if (!apiKey) {
|
|
100
100
|
throw new NolaProviderError(`OpenAI API key not found: environment variable ${envName} is not set (checked process.env, including the project .env applied by the Nola loader) and no \`apiKey\` was passed to openai(). Fix: set ${envName}, or pass openai({ apiKeyEnv: "MY_VAR" }) or openai({ apiKey }) in nola.config.ts.`, { definitive: true });
|
|
101
101
|
}
|
|
102
|
-
const
|
|
102
|
+
const { system: baseSystem, messages, output } = req.payload;
|
|
103
|
+
const reqSchema = output.syntax === "json" ? output.schema : undefined;
|
|
103
104
|
const rootShape = reqSchema === undefined ? undefined : resolveRootRef(reqSchema);
|
|
104
105
|
const enveloped = rootShape !== undefined && !("$ref" in rootShape) && rootShape.type !== "object";
|
|
105
106
|
const transport = reqSchema === undefined ? undefined : enveloped ? envelope(reqSchema) : reqSchema;
|
|
106
|
-
const system = enveloped ?
|
|
107
|
+
const system = enveloped ? baseSystem + ENVELOPE_NOTE : baseSystem;
|
|
107
108
|
const body = {
|
|
108
109
|
model,
|
|
109
|
-
messages: [{ role: "system", content: system }, ...
|
|
110
|
+
messages: [{ role: "system", content: system }, ...messages],
|
|
110
111
|
};
|
|
111
112
|
if (transport) {
|
|
112
113
|
body.response_format = {
|
package/dist/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/record-replay.d.ts
CHANGED
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModel, PlatformModel } from "@nola-lang/core";
|
|
2
2
|
/**
|
|
3
3
|
* Pass-through provider that appends `{ fingerprint, request, response }` JSONL
|
|
4
4
|
* entries. The fingerprint is computed from the RAW request (so replay-time
|
|
5
|
-
* lookups match) and is never redacted; persisted content strings are.
|
|
5
|
+
* lookups match) and is never redacted; persisted content strings are. The
|
|
6
|
+
* payload is stored as sent — the classic rendering for a chat provider, the
|
|
7
|
+
* model for the platform model — and `record` MIRRORS the inner kind
|
|
8
|
+
* (platform-config design 2026-09-03): a platform inner yields a branded
|
|
9
|
+
* platform model exposing infer; record(openai()) exposes complete.
|
|
6
10
|
*/
|
|
7
|
-
export declare function record(inner:
|
|
11
|
+
export declare function record(inner: PlatformModel, ledgerPath: string): PlatformModel;
|
|
12
|
+
export declare function record(inner: LanguageModel, ledgerPath: string): LanguageModel;
|
|
8
13
|
/**
|
|
9
14
|
* Offline provider serving recorded responses by request fingerprint. Strict:
|
|
10
15
|
* an unrecorded request is a definitive error, never a silent live call.
|
|
16
|
+
*
|
|
17
|
+
* A fingerprint is computed over the classic rendering as first composed —
|
|
18
|
+
* whichever payload shape arrives (see `fingerprintRequest`) — so a ledger
|
|
19
|
+
* recorded through any provider replays for any other, and one ask's first
|
|
20
|
+
* attempt and its correction retry hash identically — a recorded correction pair appends TWO
|
|
21
|
+
* ledger lines under the SAME key. Entries are served FIFO per fingerprint:
|
|
22
|
+
* each `complete()` shifts the next recorded response off that key's queue,
|
|
23
|
+
* so a replayed session reproduces the correction turn instead of jumping
|
|
24
|
+
* straight to the corrected answer. Once only one entry remains for a key it
|
|
25
|
+
* keeps serving that last one — a single-entry key (the common case) behaves
|
|
26
|
+
* exactly as a plain map lookup, and repeat asks beyond what was recorded
|
|
27
|
+
* still get an answer instead of failing.
|
|
11
28
|
*/
|
|
12
|
-
export declare function replay(ledgerPath: string):
|
|
29
|
+
export declare function replay(ledgerPath: string): LanguageModel;
|
|
13
30
|
//# sourceMappingURL=record-replay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-replay.d.ts","sourceRoot":"","sources":["../src/record-replay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"record-replay.d.ts","sourceRoot":"","sources":["../src/record-replay.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWlF;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;AAChF,wBAAgB,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;AAwChF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAgDxD"}
|
package/dist/record-replay.js
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
import { appendFileSync, readFileSync } from "node:fs";
|
|
2
2
|
import { Codes } from "@nola-lang/ast";
|
|
3
|
-
import { fingerprintRequest, NolaConfigError, NolaProviderError, redactSecrets } from "@nola-lang/core";
|
|
4
|
-
/**
|
|
5
|
-
* Pass-through provider that appends `{ fingerprint, request, response }` JSONL
|
|
6
|
-
* entries. The fingerprint is computed from the RAW request (so replay-time
|
|
7
|
-
* lookups match) and is never redacted; persisted content strings are.
|
|
8
|
-
*/
|
|
3
|
+
import { fingerprintRequest, isPlatformModel, NolaConfigError, NolaProviderError, PLATFORM_MODEL, redactDeep, redactSecrets, } from "@nola-lang/core";
|
|
9
4
|
export function record(inner, ledgerPath) {
|
|
5
|
+
if (isPlatformModel(inner)) {
|
|
6
|
+
return {
|
|
7
|
+
[PLATFORM_MODEL]: true,
|
|
8
|
+
name: `record(${inner.name})`,
|
|
9
|
+
async infer(req) {
|
|
10
|
+
const res = await inner.infer(req);
|
|
11
|
+
const entry = {
|
|
12
|
+
fingerprint: fingerprintRequest({
|
|
13
|
+
payload: req.model,
|
|
14
|
+
...(req.params ? { params: req.params } : {}),
|
|
15
|
+
...(req.profile !== undefined ? { profile: req.profile } : {}),
|
|
16
|
+
}),
|
|
17
|
+
request: { payload: redactDeep(req.model), ...(req.params ? { params: req.params } : {}) },
|
|
18
|
+
response: { text: redactSecrets(res.text) },
|
|
19
|
+
};
|
|
20
|
+
appendFileSync(ledgerPath, `${JSON.stringify(entry)}\n`, "utf8");
|
|
21
|
+
return res;
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
10
25
|
return {
|
|
11
26
|
name: `record(${inner.name})`,
|
|
12
27
|
async complete(req) {
|
|
13
28
|
const res = await inner.complete(req);
|
|
14
29
|
const entry = {
|
|
15
30
|
fingerprint: fingerprintRequest(req),
|
|
16
|
-
request: {
|
|
17
|
-
system: redactSecrets(req.system),
|
|
18
|
-
messages: req.messages.map((m) => ({ role: m.role, content: redactSecrets(m.content) })),
|
|
19
|
-
output: req.output,
|
|
20
|
-
},
|
|
31
|
+
request: { payload: redactDeep(req.payload), ...(req.params ? { params: req.params } : {}) },
|
|
21
32
|
response: { text: redactSecrets(res.text) },
|
|
22
33
|
};
|
|
23
34
|
appendFileSync(ledgerPath, `${JSON.stringify(entry)}\n`, "utf8");
|
|
@@ -28,6 +39,18 @@ export function record(inner, ledgerPath) {
|
|
|
28
39
|
/**
|
|
29
40
|
* Offline provider serving recorded responses by request fingerprint. Strict:
|
|
30
41
|
* an unrecorded request is a definitive error, never a silent live call.
|
|
42
|
+
*
|
|
43
|
+
* A fingerprint is computed over the classic rendering as first composed —
|
|
44
|
+
* whichever payload shape arrives (see `fingerprintRequest`) — so a ledger
|
|
45
|
+
* recorded through any provider replays for any other, and one ask's first
|
|
46
|
+
* attempt and its correction retry hash identically — a recorded correction pair appends TWO
|
|
47
|
+
* ledger lines under the SAME key. Entries are served FIFO per fingerprint:
|
|
48
|
+
* each `complete()` shifts the next recorded response off that key's queue,
|
|
49
|
+
* so a replayed session reproduces the correction turn instead of jumping
|
|
50
|
+
* straight to the corrected answer. Once only one entry remains for a key it
|
|
51
|
+
* keeps serving that last one — a single-entry key (the common case) behaves
|
|
52
|
+
* exactly as a plain map lookup, and repeat asks beyond what was recorded
|
|
53
|
+
* still get an answer instead of failing.
|
|
31
54
|
*/
|
|
32
55
|
export function replay(ledgerPath) {
|
|
33
56
|
let raw;
|
|
@@ -52,16 +75,24 @@ export function replay(ledgerPath) {
|
|
|
52
75
|
if (typeof e.fingerprint !== "string" || typeof e.response?.text !== "string") {
|
|
53
76
|
throw new NolaConfigError(`replay ledger ${ledgerPath}:${i + 1} is missing fingerprint or response.text.`, Codes.ReplayLedgerInvalid);
|
|
54
77
|
}
|
|
55
|
-
entries.
|
|
78
|
+
const queue = entries.get(e.fingerprint);
|
|
79
|
+
const hit = { text: e.response.text };
|
|
80
|
+
if (queue)
|
|
81
|
+
queue.push(hit);
|
|
82
|
+
else
|
|
83
|
+
entries.set(e.fingerprint, [hit]);
|
|
56
84
|
});
|
|
57
85
|
return {
|
|
58
86
|
name: "replay",
|
|
59
87
|
async complete(req) {
|
|
60
88
|
const fingerprint = fingerprintRequest(req);
|
|
61
|
-
const
|
|
62
|
-
if (!
|
|
89
|
+
const queue = entries.get(fingerprint);
|
|
90
|
+
if (!queue || queue.length === 0) {
|
|
63
91
|
throw new NolaProviderError(`[${Codes.ReplayFingerprintMismatch}] replay ledger ${ledgerPath} has no entry for fingerprint ${fingerprint} — the prompt, schema, or context changed since the ledger was recorded. Re-record it.`, { definitive: true });
|
|
64
92
|
}
|
|
93
|
+
// Shift through recorded entries in ledger order; once the last one is
|
|
94
|
+
// reached, keep serving it (repeat asks past what was recorded still resolve).
|
|
95
|
+
const hit = queue.length > 1 ? queue.shift() : queue[0];
|
|
65
96
|
return { text: hit.text };
|
|
66
97
|
},
|
|
67
98
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-replay.js","sourceRoot":"","sources":["../src/record-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"record-replay.js","sourceRoot":"","sources":["../src/record-replay.ts"],"names":[],"mappings":"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"}
|
package/dist/wire.d.ts
CHANGED
|
@@ -4,6 +4,4 @@ export declare const ENVELOPE_NOTE = " Because the response schema is wrapped, r
|
|
|
4
4
|
export declare function resolveRootRef(schema: JsonSchema): JsonSchema;
|
|
5
5
|
/** Wrap a non-object schema in the {value} envelope, hoisting $defs to the new root. */
|
|
6
6
|
export declare function envelope(schema: JsonSchema): JsonSchema;
|
|
7
|
-
/** Retry-After is either delta-seconds or an HTTP-date; both become a ms delta. */
|
|
8
|
-
export declare function parseRetryAfter(header: string | null): number | undefined;
|
|
9
7
|
//# sourceMappingURL=wire.d.ts.map
|
package/dist/wire.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlD,eAAO,MAAM,aAAa,uJAC0H,CAAC;AAErJ,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAU7D;AAED,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CASvD
|
|
1
|
+
{"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlD,eAAO,MAAM,aAAa,uJAC0H,CAAC;AAErJ,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAU7D;AAED,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CASvD"}
|
package/dist/wire.js
CHANGED
|
@@ -27,14 +27,4 @@ export function envelope(schema) {
|
|
|
27
27
|
...($defs ? { $defs } : {}),
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
/** Retry-After is either delta-seconds or an HTTP-date; both become a ms delta. */
|
|
31
|
-
export function parseRetryAfter(header) {
|
|
32
|
-
if (header === null || header.trim() === "")
|
|
33
|
-
return undefined;
|
|
34
|
-
const seconds = Number(header);
|
|
35
|
-
if (Number.isFinite(seconds))
|
|
36
|
-
return Math.max(0, seconds * 1000);
|
|
37
|
-
const date = Date.parse(header);
|
|
38
|
-
return Number.isNaN(date) ? undefined : Math.max(0, date - Date.now());
|
|
39
|
-
}
|
|
40
30
|
//# sourceMappingURL=wire.js.map
|
package/dist/wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GACxB,kJAAkJ,CAAC;AAErJ,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAA6D,CAAC;IACzF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,IAAkB,EAAE;QACzC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,oBAAoB,EAAE,KAAK;QAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GACxB,kJAAkJ,CAAC;AAErJ,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,MAAM;QACjB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAA6D,CAAC;IACzF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,IAAkB,EAAE;QACzC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,oBAAoB,EAAE,KAAK;QAC3B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nola-lang/providers",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Nola LLM providers: openai, mock, resilience combinators, record/replay",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"description": "Nola bring-your-own LLM providers: openai, anthropic, google, mock, resilience combinators, record/replay",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nola",
|
|
7
7
|
"llm",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"!dist/.tsbuildinfo"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@nola-lang/ast": "0.1.
|
|
39
|
-
"@nola-lang/core": "0.1.
|
|
38
|
+
"@nola-lang/ast": "0.1.5",
|
|
39
|
+
"@nola-lang/core": "0.1.5"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
42
|
"node": ">=22"
|