@plurnk/plurnk-providers 1.3.12 → 1.4.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/.env.defaults +39 -22
- package/README.md +65 -4
- package/SPEC.md +222 -56
- package/dist/AiSdkProvider.d.ts +18 -5
- package/dist/AiSdkProvider.d.ts.map +1 -1
- package/dist/AiSdkProvider.js +240 -153
- package/dist/AiSdkProvider.js.map +1 -1
- package/dist/Mock.d.ts +14 -15
- package/dist/Mock.d.ts.map +1 -1
- package/dist/Mock.js +26 -10
- package/dist/Mock.js.map +1 -1
- package/dist/Pool.d.ts +8 -2
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +41 -8
- package/dist/Pool.js.map +1 -1
- package/dist/ProviderRegistry.d.ts +4 -1
- package/dist/ProviderRegistry.d.ts.map +1 -1
- package/dist/ProviderRegistry.js +7 -3
- package/dist/ProviderRegistry.js.map +1 -1
- package/dist/aiSdkTransport.d.ts +4 -2
- package/dist/aiSdkTransport.d.ts.map +1 -1
- package/dist/aiSdkTransport.js +18 -3
- package/dist/aiSdkTransport.js.map +1 -1
- package/dist/catalogProvider.d.ts +3 -1
- package/dist/catalogProvider.d.ts.map +1 -1
- package/dist/catalogProvider.js +20 -7
- package/dist/catalogProvider.js.map +1 -1
- package/dist/compatibleProvider.d.ts.map +1 -1
- package/dist/compatibleProvider.js +11 -4
- package/dist/compatibleProvider.js.map +1 -1
- package/dist/cost.d.ts +11 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +64 -0
- package/dist/cost.js.map +1 -0
- package/dist/discover.d.ts +2 -0
- package/dist/discover.d.ts.map +1 -1
- package/dist/discover.js +15 -9
- package/dist/discover.js.map +1 -1
- package/dist/env.d.ts +4 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +29 -9
- package/dist/env.js.map +1 -1
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +150 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/notices.d.ts +10 -0
- package/dist/notices.d.ts.map +1 -0
- package/dist/notices.js +11 -0
- package/dist/notices.js.map +1 -0
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +3 -3
- package/dist/ollama.js.map +1 -1
- package/dist/openai.d.ts +1 -1
- package/dist/openai.d.ts.map +1 -1
- package/dist/promptTokens.d.ts +4 -0
- package/dist/promptTokens.d.ts.map +1 -0
- package/dist/promptTokens.js +32 -0
- package/dist/promptTokens.js.map +1 -0
- package/dist/sdkModels.d.ts.map +1 -1
- package/dist/sdkModels.js +4 -3
- package/dist/sdkModels.js.map +1 -1
- package/dist/types.d.ts +43 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/usage.d.ts +3 -0
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +26 -14
- package/dist/usage.js.map +1 -1
- package/dist/warnings.js +0 -0
- package/dist/warnings.js.map +1 -1
- package/package.json +13 -9
- package/src/AiSdkProvider.test.ts +480 -159
- package/src/AiSdkProvider.ts +320 -196
- package/src/Mock.test.ts +29 -14
- package/src/Mock.ts +33 -15
- package/src/Pool.test.ts +43 -6
- package/src/Pool.ts +56 -10
- package/src/ProviderRegistry.test.ts +158 -9
- package/src/ProviderRegistry.ts +19 -6
- package/src/aiSdkTransport.ts +25 -6
- package/src/boundaries.test.ts +8 -3
- package/src/catalogProvider.test.ts +17 -0
- package/src/catalogProvider.ts +25 -10
- package/src/compatibleProvider.test.ts +96 -0
- package/src/compatibleProvider.ts +15 -6
- package/src/cost.test.ts +63 -0
- package/src/cost.ts +83 -0
- package/src/defaults.test.ts +1 -0
- package/src/discover.test.ts +48 -7
- package/src/discover.ts +31 -21
- package/src/env.test.ts +38 -23
- package/src/env.ts +45 -18
- package/src/errors.test.ts +148 -0
- package/src/errors.ts +207 -0
- package/src/index.ts +29 -7
- package/src/lexicon-guard.test.ts +6 -6
- package/src/notices.ts +22 -0
- package/src/ollama.test.ts +64 -0
- package/src/ollama.ts +6 -3
- package/src/openai.ts +3 -0
- package/src/promptTokens.ts +41 -0
- package/src/sdkModels.test.ts +7 -0
- package/src/sdkModels.ts +4 -8
- package/src/types.ts +106 -64
- package/src/usage.test.ts +15 -4
- package/src/usage.ts +32 -14
- package/src/warnings.test.ts +10 -10
- package/src/warnings.ts +0 -0
- package/dist/OpenAICompat.d.ts +0 -76
- package/dist/OpenAICompat.d.ts.map +0 -1
- package/dist/OpenAICompat.js +0 -555
- package/dist/OpenAICompat.js.map +0 -1
- package/dist/openaiStream.d.ts +0 -47
- package/dist/openaiStream.d.ts.map +0 -1
- package/dist/openaiStream.js +0 -280
- package/dist/openaiStream.js.map +0 -1
- package/dist/standardProviders.d.ts +0 -31
- package/dist/standardProviders.d.ts.map +0 -1
- package/dist/standardProviders.js +0 -518
- package/dist/standardProviders.js.map +0 -1
- package/dist/telemetry.d.ts +0 -24
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js +0 -85
- package/dist/telemetry.js.map +0 -1
- package/src/telemetry.test.ts +0 -69
- package/src/telemetry.ts +0 -116
package/dist/types.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProviderNotice } from "./notices.ts";
|
|
2
2
|
import type { LanguageModel } from "ai";
|
|
3
|
+
import type { PluginAttribution, PluginAttributionContext, PluginAttributionSource } from "@plurnk/plurnk-meta";
|
|
4
|
+
import type { ProviderCost } from "@plurnk/plurnk-contracts";
|
|
3
5
|
export interface ChatMessage {
|
|
4
6
|
role: "system" | "user" | "assistant";
|
|
5
7
|
content: string;
|
|
6
8
|
}
|
|
9
|
+
export type PromptTokenMeasurement = {
|
|
10
|
+
readonly kind: "exact" | "upper_bound";
|
|
11
|
+
readonly tokens: number;
|
|
12
|
+
readonly source: string;
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "estimate";
|
|
15
|
+
readonly tokens: number;
|
|
16
|
+
readonly source: string;
|
|
17
|
+
readonly detail: string;
|
|
18
|
+
};
|
|
7
19
|
export interface ProviderUsage {
|
|
8
20
|
readonly prompt: number;
|
|
9
21
|
readonly completion: number;
|
|
@@ -11,7 +23,11 @@ export interface ProviderUsage {
|
|
|
11
23
|
readonly cached: number;
|
|
12
24
|
readonly total: number;
|
|
13
25
|
}
|
|
26
|
+
export type AuthoritativeCharge = Extract<ProviderCost, {
|
|
27
|
+
kind: "authoritative";
|
|
28
|
+
}>;
|
|
14
29
|
export type FinishReason = "stop" | "length" | "tool_calls" | "content_filter" | null;
|
|
30
|
+
export type ProviderAttemptFinishReason = FinishReason | "resource_interrupted";
|
|
15
31
|
export interface TokenAlternative {
|
|
16
32
|
readonly token: string;
|
|
17
33
|
readonly logprob: number;
|
|
@@ -21,31 +37,41 @@ export interface TokenLogprob {
|
|
|
21
37
|
readonly logprob: number;
|
|
22
38
|
readonly top?: readonly TokenAlternative[];
|
|
23
39
|
}
|
|
24
|
-
export interface
|
|
40
|
+
export interface ProviderEncryptedReasoningItem {
|
|
41
|
+
readonly id: string | null;
|
|
42
|
+
readonly subtype: string;
|
|
43
|
+
readonly encrypted: ReadonlyArray<{
|
|
44
|
+
data: string;
|
|
45
|
+
format: string | null;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export interface ProviderAssistant<TFinish extends ProviderAttemptFinishReason = FinishReason> {
|
|
25
49
|
readonly content: string;
|
|
26
50
|
readonly reasoning: string | null;
|
|
27
|
-
readonly reasoningEncrypted?: ReadonlyArray<
|
|
28
|
-
id: string | null;
|
|
29
|
-
subtype: string;
|
|
30
|
-
encrypted: ReadonlyArray<{
|
|
31
|
-
data: string;
|
|
32
|
-
format: string | null;
|
|
33
|
-
}>;
|
|
34
|
-
}>;
|
|
51
|
+
readonly reasoningEncrypted?: ReadonlyArray<ProviderEncryptedReasoningItem>;
|
|
35
52
|
readonly usage: ProviderUsage;
|
|
36
|
-
readonly finishReason:
|
|
53
|
+
readonly finishReason: TFinish;
|
|
37
54
|
readonly model: string;
|
|
38
55
|
readonly logprobs?: readonly TokenLogprob[];
|
|
39
56
|
readonly meanLogprob?: number;
|
|
40
57
|
}
|
|
41
|
-
export interface
|
|
42
|
-
readonly
|
|
58
|
+
export interface GrammarEvidence {
|
|
59
|
+
readonly input: string;
|
|
60
|
+
readonly contentStart: number;
|
|
61
|
+
readonly transported: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface ProviderResponse<TFinish extends ProviderAttemptFinishReason = FinishReason> {
|
|
64
|
+
readonly assistant: ProviderAssistant<TFinish>;
|
|
43
65
|
readonly assistantRaw: unknown;
|
|
66
|
+
readonly charge?: AuthoritativeCharge;
|
|
67
|
+
readonly grammarEvidence?: GrammarEvidence;
|
|
44
68
|
readonly meta?: Record<string, unknown>;
|
|
45
69
|
readonly rawBody?: unknown;
|
|
46
|
-
readonly
|
|
70
|
+
readonly notices?: readonly ProviderNotice[];
|
|
47
71
|
}
|
|
72
|
+
export type ProviderAttempt = ProviderResponse<ProviderAttemptFinishReason>;
|
|
48
73
|
export interface Provider {
|
|
74
|
+
attributions?(context: PluginAttributionContext): PluginAttribution;
|
|
49
75
|
generate(args: {
|
|
50
76
|
messages: ChatMessage[];
|
|
51
77
|
workerId: string;
|
|
@@ -68,14 +94,15 @@ export interface Provider {
|
|
|
68
94
|
readonly requiresMaxTokens?: boolean;
|
|
69
95
|
readonly reasoningReserve?: number | null;
|
|
70
96
|
readonly completionReserve?: number | null;
|
|
71
|
-
|
|
97
|
+
countPromptTokens(messages: readonly ChatMessage[], signal?: AbortSignal): Promise<PromptTokenMeasurement>;
|
|
72
98
|
tokenize?(text: string): Promise<number[]>;
|
|
73
99
|
calculateCost(usage: ProviderUsage): number;
|
|
100
|
+
calculateCharge?(usage: ProviderUsage): Exclude<ProviderCost, AuthoritativeCharge>;
|
|
74
101
|
}
|
|
75
102
|
export interface ProviderOptions {
|
|
76
103
|
readonly baseUrl?: string;
|
|
77
104
|
}
|
|
78
|
-
export interface AiSdkProviderPlugin {
|
|
105
|
+
export interface AiSdkProviderPlugin extends PluginAttributionSource {
|
|
79
106
|
languageModel(model: string): LanguageModel;
|
|
80
107
|
}
|
|
81
108
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Provider transport contract. Providers return raw wire-level output —
|
|
2
|
-
// content unparsed (consumer parses via @plurnk/plurnk-
|
|
2
|
+
// content unparsed (consumer parses via @plurnk/plurnk-contracts), reasoning
|
|
3
3
|
// is the wire-reported CoT only.
|
|
4
4
|
export {};
|
|
5
5
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,iCAAiC"}
|
package/dist/usage.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export type RawUsage = {
|
|
|
4
4
|
completion_tokens?: number;
|
|
5
5
|
total_tokens?: number;
|
|
6
6
|
cached_tokens?: number;
|
|
7
|
+
prompt_cache_hit_tokens?: number;
|
|
8
|
+
prompt_cache_miss_tokens?: number;
|
|
7
9
|
prompt_tokens_details?: {
|
|
8
10
|
cached_tokens?: number;
|
|
9
11
|
};
|
|
@@ -11,6 +13,7 @@ export type RawUsage = {
|
|
|
11
13
|
reasoning_tokens?: number;
|
|
12
14
|
};
|
|
13
15
|
};
|
|
16
|
+
export declare const attributeUnitemizedReasoning: (usage: ProviderUsage, reasoningText: string, contentText: string) => ProviderUsage;
|
|
14
17
|
export declare const normalizeUsage: (raw: RawUsage | null | undefined, reasoningText?: string, contentText?: string) => ProviderUsage;
|
|
15
18
|
export type TokenRates = {
|
|
16
19
|
input: number;
|
package/dist/usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,yBAAyB,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,QAAS,QAAQ,GAAG,IAAI,GAAG,SAAS,mDAAyC,
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,yBAAyB,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAAC;AAIF,eAAO,MAAM,4BAA4B,UAC9B,aAAa,iBACL,MAAM,eACR,MAAM,KACpB,aAUF,CAAC;AAEF,eAAO,MAAM,cAAc,QAAS,QAAQ,GAAG,IAAI,GAAG,SAAS,mDAAyC,aAyCvG,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAK3E,eAAO,MAAM,gBAAgB,UAAW,aAAa,SAAS,UAAU,KAAG,MAQ1E,CAAC"}
|
package/dist/usage.js
CHANGED
|
@@ -11,12 +11,29 @@
|
|
|
11
11
|
// normalizeUsage collapses all three into one invariant (see ProviderUsage):
|
|
12
12
|
// total = prompt + completion + reasoning; cached ⊆ prompt;
|
|
13
13
|
// completion EXCLUDES reasoning; billable output = completion + reasoning.
|
|
14
|
+
// Some providers return distinct reasoning text while reporting one combined
|
|
15
|
+
// output count. Attribute that count without disturbing an upstream split.
|
|
16
|
+
export const attributeUnitemizedReasoning = (usage, reasoningText, contentText) => {
|
|
17
|
+
if (usage.reasoning !== 0 || usage.completion === 0 || reasoningText.length === 0)
|
|
18
|
+
return usage;
|
|
19
|
+
const reasoning = contentText.length === 0
|
|
20
|
+
? usage.completion
|
|
21
|
+
: Math.round(usage.completion * reasoningText.length / (reasoningText.length + contentText.length));
|
|
22
|
+
return {
|
|
23
|
+
...usage,
|
|
24
|
+
completion: usage.completion - reasoning,
|
|
25
|
+
reasoning,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
14
28
|
export const normalizeUsage = (raw, reasoningText = "", contentText = "") => {
|
|
15
29
|
const prompt = raw?.prompt_tokens ?? 0;
|
|
16
30
|
const completionRaw = raw?.completion_tokens ?? 0;
|
|
17
31
|
const reportedTotal = raw?.total_tokens ?? 0;
|
|
18
32
|
// OpenAI nests cached under prompt_tokens_details; others put it top-level.
|
|
19
|
-
const cached = raw?.prompt_tokens_details?.cached_tokens
|
|
33
|
+
const cached = raw?.prompt_tokens_details?.cached_tokens
|
|
34
|
+
?? raw?.prompt_cache_hit_tokens
|
|
35
|
+
?? raw?.cached_tokens
|
|
36
|
+
?? 0;
|
|
20
37
|
const reasoningDetail = raw?.completion_tokens_details?.reasoning_tokens;
|
|
21
38
|
let completion;
|
|
22
39
|
let reasoning;
|
|
@@ -26,7 +43,7 @@ export const normalizeUsage = (raw, reasoningText = "", contentText = "") => {
|
|
|
26
43
|
// o-series folds it INTO completion_tokens (subset: total = prompt + completion,
|
|
27
44
|
// so completion must have reasoning subtracted out). xAI/Grok reports it
|
|
28
45
|
// ADDITIVE to a visible-only completion_tokens (total = prompt + completion +
|
|
29
|
-
// reasoning), where subtracting wrongly zeroes the visible output
|
|
46
|
+
// reasoning), where subtracting wrongly zeroes the visible output. Tell
|
|
30
47
|
// them apart by the total identity; with no total reported, fall back on the
|
|
31
48
|
// impossible-subset signal — reasoning can't exceed the completion it's a
|
|
32
49
|
// subset of.
|
|
@@ -40,20 +57,15 @@ export const normalizeUsage = (raw, reasoningText = "", contentText = "") => {
|
|
|
40
57
|
// reasoning. Only trust the gap when a total was actually reported.
|
|
41
58
|
reasoning = reportedTotal > 0 ? Math.max(0, reportedTotal - prompt - completionRaw) : 0;
|
|
42
59
|
completion = completionRaw;
|
|
43
|
-
// Fireworks folds reasoning INTO completion_tokens and itemizes no
|
|
44
|
-
// reasoning_tokens, so a turn that shipped only reasoning reads reasoning=0
|
|
45
|
-
// though 300k chars of it arrived (#425). When reasoning TEXT came back but
|
|
46
|
-
// the reported totals leave no gap, re-split the reported completion by the
|
|
47
|
-
// emitted text proportions. Sum-preserving: billable output
|
|
48
|
-
// (completion+reasoning) and cost are byte-identical; only the
|
|
49
|
-
// visible/reasoning gauge is corrected (pure-reasoning turn -> completion 0).
|
|
50
|
-
if (reasoning === 0 && reasoningText.length > 0 && reportedTotal > 0 && completionRaw > 0) {
|
|
51
|
-
reasoning = Math.round(completionRaw * reasoningText.length / (reasoningText.length + contentText.length));
|
|
52
|
-
completion = completionRaw - reasoning;
|
|
53
|
-
}
|
|
54
60
|
}
|
|
55
61
|
const total = reportedTotal > 0 ? reportedTotal : prompt + completion + reasoning;
|
|
56
|
-
|
|
62
|
+
const usage = { prompt, completion, reasoning, cached, total };
|
|
63
|
+
// Fireworks folds reasoning INTO completion_tokens and itemizes no
|
|
64
|
+
// reasoning_tokens. A reported total establishes that completion is an
|
|
65
|
+
// upstream quantity rather than a locally synthesized fallback.
|
|
66
|
+
return reasoningDetail === undefined && reportedTotal > 0
|
|
67
|
+
? attributeUnitemizedReasoning(usage, reasoningText, contentText)
|
|
68
|
+
: usage;
|
|
57
69
|
};
|
|
58
70
|
// The one cost formula every provider uses: non-cached prompt at the input
|
|
59
71
|
// rate, cached prompt at the cache rate, and billable output (completion +
|
package/dist/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yDAAyD;AACzD,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,iFAAiF;AACjF,mFAAmF;AACnF,+EAA+E;AAC/E,6EAA6E;AAC7E,+DAA+D;AAC/D,8EAA8E;
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yDAAyD;AACzD,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,iFAAiF;AACjF,mFAAmF;AACnF,+EAA+E;AAC/E,6EAA6E;AAC7E,+DAA+D;AAC/D,8EAA8E;AAgB9E,6EAA6E;AAC7E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,KAAoB,EACpB,aAAqB,EACrB,WAAmB,EACN,EAAE;IACf,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;QACtC,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACxG,OAAO;QACH,GAAG,KAAK;QACR,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS;QACxC,SAAS;KACZ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAgC,EAAE,aAAa,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAiB,EAAE;IACpH,MAAM,MAAM,GAAG,GAAG,EAAE,aAAa,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,GAAG,EAAE,iBAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,EAAE,YAAY,IAAI,CAAC,CAAC;IAC7C,4EAA4E;IAC5E,MAAM,MAAM,GAAG,GAAG,EAAE,qBAAqB,EAAE,aAAa;WACjD,GAAG,EAAE,uBAAuB;WAC5B,GAAG,EAAE,aAAa;WAClB,CAAC,CAAC;IACT,MAAM,eAAe,GAAG,GAAG,EAAE,yBAAyB,EAAE,gBAAgB,CAAC;IAEzE,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,GAAG,eAAe,CAAC;QAC5B,2EAA2E;QAC3E,iFAAiF;QACjF,yEAAyE;QACzE,8EAA8E;QAC9E,wEAAwE;QACxE,6EAA6E;QAC7E,0EAA0E;QAC1E,aAAa;QACb,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC;YAC9B,CAAC,CAAC,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,eAAe;YAC5D,CAAC,CAAC,aAAa,GAAG,eAAe,CAAC;QACtC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACJ,sEAAsE;QACtE,oEAAoE;QACpE,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,UAAU,GAAG,aAAa,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAClF,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/D,mEAAmE;IACnE,uEAAuE;IACvE,gEAAgE;IAChE,OAAO,eAAe,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC;QACrD,CAAC,CAAC,4BAA4B,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC;QACjE,CAAC,CAAC,KAAK,CAAC;AAChB,CAAC,CAAC;AAKF,2EAA2E;AAC3E,2EAA2E;AAC3E,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAE,KAAiB,EAAU,EAAE;IAChF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;IAClD,OAAO,CACH,eAAe,GAAG,KAAK,CAAC,KAAK;UAC3B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;UAC3B,MAAM,GAAG,KAAK,CAAC,MAAM,CAC1B,GAAG,SAAS,CAAC;AAClB,CAAC,CAAC"}
|
package/dist/warnings.js
CHANGED
|
Binary file
|
package/dist/warnings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../src/warnings.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yFAAyF;AACzF,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,IAAY,EAAQ,EAAE;IACnE,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,cAAc,GAAI,UAEtB,CAAC,OAAO,CAAC;IACX,IAAI,cAAc,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5C,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;AACL,CAAC,CAAC;AAEF,mFAAmF;AACnF,uCAAuC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAS,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-providers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "PLURNK's stable model-provider contract and AI SDK adapter.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -8,13 +8,14 @@
|
|
|
8
8
|
"provider",
|
|
9
9
|
"tokenizer"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://github.com/plurnk/plurnk-providers#readme",
|
|
11
|
+
"homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-providers#readme",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://
|
|
13
|
+
"url": "https://repo.possumtech.com/plurnk/plurnk-service/issues"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/plurnk/plurnk-
|
|
17
|
+
"url": "git+https://github.com/plurnk/plurnk-service.git",
|
|
18
|
+
"directory": "plurnk-providers"
|
|
18
19
|
},
|
|
19
20
|
"engines": {
|
|
20
21
|
"node": ">=26"
|
|
@@ -48,10 +49,12 @@
|
|
|
48
49
|
"scripts": {
|
|
49
50
|
"test:lint": "tsc --noEmit",
|
|
50
51
|
"test:unit": "node --conditions=plurnk-dev --test src/**/*.test.ts",
|
|
52
|
+
"test:llama": "node --conditions=plurnk-dev --test test/llama/*.test.ts",
|
|
51
53
|
"test": "npm run test:lint && npm run test:unit",
|
|
52
54
|
"prepublishOnly": "npm audit --audit-level=moderate && npm test",
|
|
55
|
+
"build:clean": "rm -rf dist",
|
|
53
56
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
54
|
-
"build": "npm run build:dist",
|
|
57
|
+
"build": "npm run build:clean && npm run build:dist",
|
|
55
58
|
"prepack": "npm run build"
|
|
56
59
|
},
|
|
57
60
|
"dependencies": {
|
|
@@ -66,10 +69,11 @@
|
|
|
66
69
|
"@ai-sdk/togetherai": "^3.0.0",
|
|
67
70
|
"@ai-sdk/xai": "^4.0.0",
|
|
68
71
|
"@openrouter/ai-sdk-provider": "^3.0.0",
|
|
69
|
-
"@plurnk/gbnf": "1.
|
|
70
|
-
"@plurnk/plurnk-aliases": "1.
|
|
71
|
-
"@plurnk/plurnk-
|
|
72
|
-
"@plurnk/plurnk-
|
|
72
|
+
"@plurnk/gbnf": "1.4.0",
|
|
73
|
+
"@plurnk/plurnk-aliases": "1.4.0",
|
|
74
|
+
"@plurnk/plurnk-contracts": "1.4.0",
|
|
75
|
+
"@plurnk/plurnk-meta": "1.4.0",
|
|
76
|
+
"@plurnk/plurnk-models": "1.4.0",
|
|
73
77
|
"ai": "^7.0.37",
|
|
74
78
|
"zod": "^3.25.76"
|
|
75
79
|
}
|