@agenticprimitives/model-gateway 0.0.0-alpha.0 → 0.0.0-stage
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 +2 -28
- package/package.json +4 -30
- package/LICENSE +0 -21
- package/dist/adapters/anthropic.d.ts +0 -13
- package/dist/adapters/anthropic.d.ts.map +0 -1
- package/dist/adapters/anthropic.js +0 -59
- package/dist/adapters/anthropic.js.map +0 -1
- package/dist/adapters/openai-compat.d.ts +0 -17
- package/dist/adapters/openai-compat.d.ts.map +0 -1
- package/dist/adapters/openai-compat.js +0 -66
- package/dist/adapters/openai-compat.js.map +0 -1
- package/dist/budget.d.ts +0 -86
- package/dist/budget.d.ts.map +0 -1
- package/dist/budget.js +0 -98
- package/dist/budget.js.map +0 -1
- package/dist/contract.d.ts +0 -268
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -128
- package/dist/contract.js.map +0 -1
- package/dist/handler.d.ts +0 -24
- package/dist/handler.d.ts.map +0 -1
- package/dist/handler.js +0 -124
- package/dist/handler.js.map +0 -1
- package/dist/index.d.ts +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
- package/dist/openai-compat/translate.d.ts +0 -122
- package/dist/openai-compat/translate.d.ts.map +0 -1
- package/dist/openai-compat/translate.js +0 -72
- package/dist/openai-compat/translate.js.map +0 -1
- package/dist/ops.d.ts +0 -6
- package/dist/ops.d.ts.map +0 -1
- package/dist/ops.js +0 -38
- package/dist/ops.js.map +0 -1
- package/dist/policy.d.ts +0 -26
- package/dist/policy.d.ts.map +0 -1
- package/dist/policy.js +0 -83
- package/dist/policy.js.map +0 -1
- package/dist/ports.d.ts +0 -95
- package/dist/ports.d.ts.map +0 -1
- package/dist/ports.js +0 -43
- package/dist/ports.js.map +0 -1
- package/dist/usage.d.ts +0 -23
- package/dist/usage.d.ts.map +0 -1
- package/dist/usage.js +0 -16
- package/dist/usage.js.map +0 -1
- package/spec.md +0 -7
package/dist/contract.d.ts
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import type { Address } from '@agenticprimitives/types';
|
|
2
|
-
import type { ModelUsageV1 } from '@agenticprimitives/orchestration';
|
|
3
|
-
export declare const PACKAGE_NAME: "@agenticprimitives/model-gateway";
|
|
4
|
-
export declare const PACKAGE_STATUS: "w1-contract";
|
|
5
|
-
export declare const SPEC_REF: "ap-town/specs/434-ap-model-gateway-and-the-town-pulse.md";
|
|
6
|
-
export type { ModelUsageV1 };
|
|
7
|
-
export type MessageRoleV1 = 'system' | 'user' | 'assistant' | 'tool';
|
|
8
|
-
export interface MessageV1 {
|
|
9
|
-
role: MessageRoleV1;
|
|
10
|
-
content: string;
|
|
11
|
-
/** `tool` messages: which call this answers. */
|
|
12
|
-
toolCallId?: string;
|
|
13
|
-
/** `assistant` messages that carried tool calls (a prior turn), replayed for context. */
|
|
14
|
-
toolCalls?: ToolCallV1[];
|
|
15
|
-
}
|
|
16
|
-
export interface ToolDefinitionV1 {
|
|
17
|
-
name: string;
|
|
18
|
-
description?: string;
|
|
19
|
-
inputSchema: Record<string, unknown>;
|
|
20
|
-
}
|
|
21
|
-
export interface ToolCallV1 {
|
|
22
|
-
id?: string;
|
|
23
|
-
name: string;
|
|
24
|
-
args: Record<string, unknown>;
|
|
25
|
-
}
|
|
26
|
-
export type ToolChoiceV1 = 'auto' | 'none' | 'required' | {
|
|
27
|
-
name: string;
|
|
28
|
-
};
|
|
29
|
-
export interface GenerateContextV1 {
|
|
30
|
-
/** The caller's word for why (`plan`, `compose`, `answer-stream`, `judge`, `selection`, `author`, `evals`, …). */
|
|
31
|
-
purpose: string;
|
|
32
|
-
runRef?: string;
|
|
33
|
-
stepRef?: string;
|
|
34
|
-
/** ASSERTED by the caller. Recorded on the receipt as `assertedAgent`; never used for authority or budget. */
|
|
35
|
-
agent?: Address;
|
|
36
|
-
}
|
|
37
|
-
export interface GenerateRequestV1 {
|
|
38
|
-
profile: string;
|
|
39
|
-
messages: MessageV1[];
|
|
40
|
-
tools?: ToolDefinitionV1[];
|
|
41
|
-
toolChoice?: ToolChoiceV1;
|
|
42
|
-
/** Clamped to the profile's ceiling by policy. */
|
|
43
|
-
maxOutputTokens?: number;
|
|
44
|
-
temperature?: number;
|
|
45
|
-
stream?: boolean;
|
|
46
|
-
context: GenerateContextV1;
|
|
47
|
-
}
|
|
48
|
-
export type StopReasonV1 = 'end' | 'tool' | 'length' | 'filtered';
|
|
49
|
-
export type FailureClassV1 = 'rate-limited' | 'unavailable' | 'timeout' | 'content' | 'policy' | 'malformed' | 'auth';
|
|
50
|
-
/** The classes a profile MAY name as fallback triggers (G5). Content, policy, malformed and auth never are. */
|
|
51
|
-
export declare const FALLBACK_CLASSES: readonly FailureClassV1[];
|
|
52
|
-
export interface ReceiptSummaryV1 {
|
|
53
|
-
id: string;
|
|
54
|
-
profile: string;
|
|
55
|
-
profileVersion: string;
|
|
56
|
-
provider: string;
|
|
57
|
-
model: string;
|
|
58
|
-
attempt: number;
|
|
59
|
-
fallbackOf?: string;
|
|
60
|
-
policyDecision: PolicyDecisionV1;
|
|
61
|
-
costMicroUsd: number;
|
|
62
|
-
latencyMs: number;
|
|
63
|
-
reconciliation: 'settled' | 'pending';
|
|
64
|
-
}
|
|
65
|
-
export interface GenerateResponseV1 {
|
|
66
|
-
content: string;
|
|
67
|
-
toolCalls: ToolCallV1[];
|
|
68
|
-
stopReason: StopReasonV1;
|
|
69
|
-
usage: ModelUsageV1;
|
|
70
|
-
receipt: ReceiptSummaryV1;
|
|
71
|
-
}
|
|
72
|
-
/** A stream of a generation: deltas, then exactly one `done` (with the same response the blocking call returns) or `error`. */
|
|
73
|
-
export type StreamEventV1 = {
|
|
74
|
-
type: 'delta';
|
|
75
|
-
text: string;
|
|
76
|
-
} | {
|
|
77
|
-
type: 'tool_call';
|
|
78
|
-
call: ToolCallV1;
|
|
79
|
-
} | {
|
|
80
|
-
type: 'done';
|
|
81
|
-
response: GenerateResponseV1;
|
|
82
|
-
} | {
|
|
83
|
-
type: 'error';
|
|
84
|
-
message: string;
|
|
85
|
-
failureClass?: FailureClassV1;
|
|
86
|
-
receiptId?: string;
|
|
87
|
-
};
|
|
88
|
-
/** The handler's refusal: the request did not reach a provider, and the reason is the whole answer (ADR-0013). */
|
|
89
|
-
export interface GatewayRefusalV1 {
|
|
90
|
-
refused: true;
|
|
91
|
-
reason: 'unknown_caller' | 'not_entitled' | 'unknown_profile' | 'profile_unavailable' | 'over_budget' | 'invalid_request' | 'all_attempts_failed';
|
|
92
|
-
detail: string;
|
|
93
|
-
policyDecision?: PolicyDecisionV1;
|
|
94
|
-
/** Receipts of the attempts that were made before refusing (every attempt is receipted, G5). */
|
|
95
|
-
receiptIds?: string[];
|
|
96
|
-
/** The last provider failure's class, when attempts were made. */
|
|
97
|
-
failureClass?: FailureClassV1;
|
|
98
|
-
}
|
|
99
|
-
export declare const isRefusal: (x: unknown) => x is GatewayRefusalV1;
|
|
100
|
-
export type ProviderKindV1 = 'anthropic' | 'openai-compat';
|
|
101
|
-
export type ModelCapabilityV1 = 'tools' | 'json' | 'stream' | 'logprobs' | 'vision';
|
|
102
|
-
export type PrivacyV1 = 'standard' | 'no-retention';
|
|
103
|
-
export interface ProfileCandidateV1 {
|
|
104
|
-
provider: ProviderKindV1;
|
|
105
|
-
model: string;
|
|
106
|
-
endpoint?: string;
|
|
107
|
-
}
|
|
108
|
-
export interface ModelProfileV1 {
|
|
109
|
-
id: string;
|
|
110
|
-
/** The words a caller uses (`plan`, `compose`, …) — never a model name. */
|
|
111
|
-
servesCapability: string[];
|
|
112
|
-
/** ORDERED candidates: attempt 1 is `models[0]`; a declared fallback moves to the next. */
|
|
113
|
-
models: ProfileCandidateV1[];
|
|
114
|
-
requiredCapabilities: ModelCapabilityV1[];
|
|
115
|
-
maxOutputTokens: number;
|
|
116
|
-
privacy: PrivacyV1;
|
|
117
|
-
fallbackOn: FailureClassV1[];
|
|
118
|
-
timeoutMs: number;
|
|
119
|
-
description?: string;
|
|
120
|
-
}
|
|
121
|
-
export interface ModelPricingV1 {
|
|
122
|
-
inputMicroUsdPerMtok: number;
|
|
123
|
-
outputMicroUsdPerMtok: number;
|
|
124
|
-
cachedInputMicroUsdPerMtok?: number;
|
|
125
|
-
}
|
|
126
|
-
export interface ModelCatalogEntryV1 {
|
|
127
|
-
provider: ProviderKindV1;
|
|
128
|
-
model: string;
|
|
129
|
-
/** THE ONE SWITCH (G4): off removes the model from every profile's candidates at once. */
|
|
130
|
-
enabled: boolean;
|
|
131
|
-
capabilities: ModelCapabilityV1[];
|
|
132
|
-
pricing: ModelPricingV1;
|
|
133
|
-
contextWindow: number;
|
|
134
|
-
privacy: PrivacyV1;
|
|
135
|
-
endpoint?: string;
|
|
136
|
-
notes?: string;
|
|
137
|
-
}
|
|
138
|
-
export declare const catalogKey: (provider: string, model: string) => string;
|
|
139
|
-
export type ClientKindV1 = 'estate-app' | 'town-service' | 'application';
|
|
140
|
-
export interface BudgetLimitsV1 {
|
|
141
|
-
tokensPerDay?: number;
|
|
142
|
-
microUsdPerDay?: number;
|
|
143
|
-
requestsPerMinute?: number;
|
|
144
|
-
concurrency?: number;
|
|
145
|
-
maxAttempts?: number;
|
|
146
|
-
}
|
|
147
|
-
export interface ClientEntitlementV1 {
|
|
148
|
-
principal: Address;
|
|
149
|
-
/** Spec 436 C8 — which estate (and what kind of client) made the call, for attribution and the per-estate slice. */
|
|
150
|
-
estate?: string;
|
|
151
|
-
kind: ClientKindV1;
|
|
152
|
-
label?: string;
|
|
153
|
-
profiles: string[];
|
|
154
|
-
/** Per profile; `*` applies to every profile not named. */
|
|
155
|
-
limits: Record<string, BudgetLimitsV1>;
|
|
156
|
-
privacyFloor?: PrivacyV1;
|
|
157
|
-
validUntil?: string;
|
|
158
|
-
}
|
|
159
|
-
export interface PolicyCandidateV1 {
|
|
160
|
-
provider: ProviderKindV1;
|
|
161
|
-
model: string;
|
|
162
|
-
endpoint?: string;
|
|
163
|
-
pricing: ModelPricingV1;
|
|
164
|
-
privacy: PrivacyV1;
|
|
165
|
-
}
|
|
166
|
-
export type PolicyDecisionV1 = {
|
|
167
|
-
allowed: true;
|
|
168
|
-
profile: string;
|
|
169
|
-
profileVersion: string;
|
|
170
|
-
candidates: PolicyCandidateV1[];
|
|
171
|
-
skipped: Array<{
|
|
172
|
-
provider: string;
|
|
173
|
-
model: string;
|
|
174
|
-
why: string;
|
|
175
|
-
}>;
|
|
176
|
-
maxOutputTokens: number;
|
|
177
|
-
fallbackOn: FailureClassV1[];
|
|
178
|
-
timeoutMs: number;
|
|
179
|
-
maxAttempts: number;
|
|
180
|
-
} | {
|
|
181
|
-
allowed: false;
|
|
182
|
-
profile: string;
|
|
183
|
-
profileVersion?: string;
|
|
184
|
-
reason: 'unknown_profile' | 'not_entitled' | 'profile_unavailable' | 'entitlement_expired';
|
|
185
|
-
detail: string;
|
|
186
|
-
skipped?: Array<{
|
|
187
|
-
provider: string;
|
|
188
|
-
model: string;
|
|
189
|
-
why: string;
|
|
190
|
-
}>;
|
|
191
|
-
};
|
|
192
|
-
export interface InferenceReceiptV1 {
|
|
193
|
-
id: string;
|
|
194
|
-
at: string;
|
|
195
|
-
principal: Address;
|
|
196
|
-
principalClass: 'app' | 'wire';
|
|
197
|
-
estate?: string;
|
|
198
|
-
clientKind?: ClientKindV1;
|
|
199
|
-
assertedAgent?: Address;
|
|
200
|
-
runRef?: string;
|
|
201
|
-
stepRef?: string;
|
|
202
|
-
purpose: string;
|
|
203
|
-
profile: string;
|
|
204
|
-
profileVersion: string;
|
|
205
|
-
provider: string;
|
|
206
|
-
model: string;
|
|
207
|
-
attempt: number;
|
|
208
|
-
fallbackOf?: string;
|
|
209
|
-
policyDecision: PolicyDecisionV1;
|
|
210
|
-
usage: ModelUsageV1;
|
|
211
|
-
providerUsage?: unknown;
|
|
212
|
-
costMicroUsd: number;
|
|
213
|
-
latencyMs: number;
|
|
214
|
-
outcome: 'answered' | 'failed' | 'refused';
|
|
215
|
-
failureClass?: FailureClassV1;
|
|
216
|
-
failureDetail?: string;
|
|
217
|
-
reconciliation: 'settled' | 'pending' | 'expired';
|
|
218
|
-
reservationId?: string;
|
|
219
|
-
}
|
|
220
|
-
export interface PolicyChangeV1 {
|
|
221
|
-
id: string;
|
|
222
|
-
at: string;
|
|
223
|
-
actor: Address;
|
|
224
|
-
recordKey: string;
|
|
225
|
-
before?: string;
|
|
226
|
-
after: string;
|
|
227
|
-
reason: string;
|
|
228
|
-
}
|
|
229
|
-
export interface InferenceOpsSliceV1 {
|
|
230
|
-
key: string;
|
|
231
|
-
requests: number;
|
|
232
|
-
answered: number;
|
|
233
|
-
failed: number;
|
|
234
|
-
refused: number;
|
|
235
|
-
tokensIn: number;
|
|
236
|
-
tokensOut: number;
|
|
237
|
-
costMicroUsd: number;
|
|
238
|
-
fallbacks: number;
|
|
239
|
-
latencyP50Ms: number;
|
|
240
|
-
latencyP95Ms: number;
|
|
241
|
-
}
|
|
242
|
-
export interface InferenceOpsSummaryV1 {
|
|
243
|
-
window: {
|
|
244
|
-
from: string;
|
|
245
|
-
to: string;
|
|
246
|
-
};
|
|
247
|
-
totals: InferenceOpsSliceV1;
|
|
248
|
-
byClient: InferenceOpsSliceV1[];
|
|
249
|
-
byProfile: InferenceOpsSliceV1[];
|
|
250
|
-
byProvider: InferenceOpsSliceV1[];
|
|
251
|
-
byModel: InferenceOpsSliceV1[];
|
|
252
|
-
byEstate: InferenceOpsSliceV1[];
|
|
253
|
-
pendingReconciliation: number;
|
|
254
|
-
}
|
|
255
|
-
export interface ValidationV1 {
|
|
256
|
-
ok: boolean;
|
|
257
|
-
errors: string[];
|
|
258
|
-
}
|
|
259
|
-
export declare function validateProfile(p: unknown): ValidationV1;
|
|
260
|
-
export declare function validateCatalogEntry(c: unknown): ValidationV1;
|
|
261
|
-
export declare function validateEntitlement(c: unknown): ValidationV1;
|
|
262
|
-
export declare function validateGenerateRequest(r: unknown): ValidationV1;
|
|
263
|
-
/** Canonical JSON (sorted keys, no whitespace) — the one serialization every digest in this package hashes. */
|
|
264
|
-
export declare function canonicalJson(value: unknown): string;
|
|
265
|
-
/** sha256 over the canonical JSON, as `0x…` — the profile VERSION every receipt names (G7). Web Crypto, so it runs in a Worker and in Node. */
|
|
266
|
-
export declare function digestOf(value: unknown): Promise<string>;
|
|
267
|
-
export declare const profileVersion: (p: ModelProfileV1) => Promise<string>;
|
|
268
|
-
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
export const PACKAGE_NAME = '@agenticprimitives/model-gateway';
|
|
2
|
-
export const PACKAGE_STATUS = 'w1-contract';
|
|
3
|
-
export const SPEC_REF = 'ap-town/specs/434-ap-model-gateway-and-the-town-pulse.md';
|
|
4
|
-
/** The classes a profile MAY name as fallback triggers (G5). Content, policy, malformed and auth never are. */
|
|
5
|
-
export const FALLBACK_CLASSES = ['rate-limited', 'unavailable', 'timeout'];
|
|
6
|
-
export const isRefusal = (x) => !!x && typeof x === 'object' && x.refused === true;
|
|
7
|
-
export const catalogKey = (provider, model) => `${provider}/${model}`;
|
|
8
|
-
const isStr = (x) => typeof x === 'string' && x.length > 0;
|
|
9
|
-
const isNum = (x) => typeof x === 'number' && Number.isFinite(x);
|
|
10
|
-
const PROVIDERS = ['anthropic', 'openai-compat'];
|
|
11
|
-
const CAPS = ['tools', 'json', 'stream', 'logprobs', 'vision'];
|
|
12
|
-
const PRIVACY = ['standard', 'no-retention'];
|
|
13
|
-
export function validateProfile(p) {
|
|
14
|
-
const e = [];
|
|
15
|
-
const x = (p ?? {});
|
|
16
|
-
if (!isStr(x.id) || !/^[a-z][a-z0-9-]{1,63}$/.test(x.id))
|
|
17
|
-
e.push('id: a lowercase slug');
|
|
18
|
-
if (!Array.isArray(x.servesCapability) || !x.servesCapability.every(isStr))
|
|
19
|
-
e.push('servesCapability: a list of words');
|
|
20
|
-
if (!Array.isArray(x.models) || x.models.length === 0)
|
|
21
|
-
e.push('models: at least one ordered candidate');
|
|
22
|
-
else
|
|
23
|
-
x.models.forEach((m, i) => { if (!PROVIDERS.includes(m?.provider))
|
|
24
|
-
e.push(`models[${i}].provider: one of ${PROVIDERS.join(', ')}`); if (!isStr(m?.model))
|
|
25
|
-
e.push(`models[${i}].model: required`); });
|
|
26
|
-
if (!Array.isArray(x.requiredCapabilities) || !x.requiredCapabilities.every((c) => CAPS.includes(c)))
|
|
27
|
-
e.push('requiredCapabilities: a list of known capabilities');
|
|
28
|
-
if (!isNum(x.maxOutputTokens) || x.maxOutputTokens <= 0)
|
|
29
|
-
e.push('maxOutputTokens: a positive number');
|
|
30
|
-
if (!PRIVACY.includes(x.privacy))
|
|
31
|
-
e.push('privacy: standard | no-retention');
|
|
32
|
-
if (!Array.isArray(x.fallbackOn) || !x.fallbackOn.every((c) => FALLBACK_CLASSES.includes(c)))
|
|
33
|
-
e.push(`fallbackOn: only ${FALLBACK_CLASSES.join(', ')} — a content or policy error is never a fallback trigger`);
|
|
34
|
-
if (!isNum(x.timeoutMs) || x.timeoutMs <= 0)
|
|
35
|
-
e.push('timeoutMs: a positive number');
|
|
36
|
-
return { ok: e.length === 0, errors: e };
|
|
37
|
-
}
|
|
38
|
-
export function validateCatalogEntry(c) {
|
|
39
|
-
const e = [];
|
|
40
|
-
const x = (c ?? {});
|
|
41
|
-
if (!PROVIDERS.includes(x.provider))
|
|
42
|
-
e.push(`provider: one of ${PROVIDERS.join(', ')}`);
|
|
43
|
-
if (!isStr(x.model))
|
|
44
|
-
e.push('model: required');
|
|
45
|
-
if (typeof x.enabled !== 'boolean')
|
|
46
|
-
e.push('enabled: true | false');
|
|
47
|
-
if (!Array.isArray(x.capabilities) || !x.capabilities.every((k) => CAPS.includes(k)))
|
|
48
|
-
e.push('capabilities: a list of known capabilities');
|
|
49
|
-
const pr = x.pricing;
|
|
50
|
-
if (!pr || !isNum(pr.inputMicroUsdPerMtok) || !isNum(pr.outputMicroUsdPerMtok) || pr.inputMicroUsdPerMtok < 0 || pr.outputMicroUsdPerMtok < 0)
|
|
51
|
-
e.push('pricing: inputMicroUsdPerMtok and outputMicroUsdPerMtok ≥ 0');
|
|
52
|
-
if (!isNum(x.contextWindow) || x.contextWindow <= 0)
|
|
53
|
-
e.push('contextWindow: a positive number');
|
|
54
|
-
if (!PRIVACY.includes(x.privacy))
|
|
55
|
-
e.push('privacy: standard | no-retention');
|
|
56
|
-
return { ok: e.length === 0, errors: e };
|
|
57
|
-
}
|
|
58
|
-
export function validateEntitlement(c) {
|
|
59
|
-
const e = [];
|
|
60
|
-
const x = (c ?? {});
|
|
61
|
-
if (!isStr(x.principal) || !/^0x[0-9a-fA-F]{40}$/.test(x.principal))
|
|
62
|
-
e.push('principal: an address');
|
|
63
|
-
if (!['estate-app', 'town-service', 'application'].includes(x.kind))
|
|
64
|
-
e.push('kind: estate-app | town-service | application');
|
|
65
|
-
if (!Array.isArray(x.profiles) || !x.profiles.every(isStr))
|
|
66
|
-
e.push('profiles: a list of profile ids');
|
|
67
|
-
if (!x.limits || typeof x.limits !== 'object')
|
|
68
|
-
e.push('limits: a map of profile → limits');
|
|
69
|
-
else
|
|
70
|
-
for (const [k, v] of Object.entries(x.limits))
|
|
71
|
-
for (const [f, n] of Object.entries(v ?? {}))
|
|
72
|
-
if (!isNum(n) || n < 0)
|
|
73
|
-
e.push(`limits.${k}.${f}: a number ≥ 0`);
|
|
74
|
-
if (x.privacyFloor !== undefined && !PRIVACY.includes(x.privacyFloor))
|
|
75
|
-
e.push('privacyFloor: standard | no-retention');
|
|
76
|
-
return { ok: e.length === 0, errors: e };
|
|
77
|
-
}
|
|
78
|
-
export function validateGenerateRequest(r) {
|
|
79
|
-
const e = [];
|
|
80
|
-
const x = (r ?? {});
|
|
81
|
-
if (!isStr(x.profile))
|
|
82
|
-
e.push('profile: required (a profile id, never a model name)');
|
|
83
|
-
if (!Array.isArray(x.messages) || x.messages.length === 0)
|
|
84
|
-
e.push('messages: at least one');
|
|
85
|
-
else
|
|
86
|
-
x.messages.forEach((m, i) => {
|
|
87
|
-
if (!['system', 'user', 'assistant', 'tool'].includes(m?.role))
|
|
88
|
-
e.push(`messages[${i}].role: system | user | assistant | tool`);
|
|
89
|
-
if (typeof m?.content !== 'string')
|
|
90
|
-
e.push(`messages[${i}].content: a string`);
|
|
91
|
-
if (m?.role === 'tool' && !isStr(m.toolCallId))
|
|
92
|
-
e.push(`messages[${i}].toolCallId: required for a tool message`);
|
|
93
|
-
});
|
|
94
|
-
if (x.tools !== undefined) {
|
|
95
|
-
if (!Array.isArray(x.tools))
|
|
96
|
-
e.push('tools: a list');
|
|
97
|
-
else
|
|
98
|
-
x.tools.forEach((t, i) => { if (!isStr(t?.name))
|
|
99
|
-
e.push(`tools[${i}].name: required`); if (!t?.inputSchema || typeof t.inputSchema !== 'object')
|
|
100
|
-
e.push(`tools[${i}].inputSchema: an object`); });
|
|
101
|
-
}
|
|
102
|
-
if (x.maxOutputTokens !== undefined && (!isNum(x.maxOutputTokens) || x.maxOutputTokens <= 0))
|
|
103
|
-
e.push('maxOutputTokens: a positive number');
|
|
104
|
-
if (!x.context || !isStr(x.context.purpose))
|
|
105
|
-
e.push('context.purpose: required');
|
|
106
|
-
if (x.context?.agent !== undefined && !/^0x[0-9a-fA-F]{40}$/.test(String(x.context.agent)))
|
|
107
|
-
e.push('context.agent: an address');
|
|
108
|
-
return { ok: e.length === 0, errors: e };
|
|
109
|
-
}
|
|
110
|
-
/** Canonical JSON (sorted keys, no whitespace) — the one serialization every digest in this package hashes. */
|
|
111
|
-
export function canonicalJson(value) {
|
|
112
|
-
const sort = (v) => {
|
|
113
|
-
if (Array.isArray(v))
|
|
114
|
-
return v.map(sort);
|
|
115
|
-
if (v && typeof v === 'object')
|
|
116
|
-
return Object.fromEntries(Object.keys(v).sort().map((k) => [k, sort(v[k])]));
|
|
117
|
-
return v;
|
|
118
|
-
};
|
|
119
|
-
return JSON.stringify(sort(value));
|
|
120
|
-
}
|
|
121
|
-
/** sha256 over the canonical JSON, as `0x…` — the profile VERSION every receipt names (G7). Web Crypto, so it runs in a Worker and in Node. */
|
|
122
|
-
export async function digestOf(value) {
|
|
123
|
-
const bytes = new TextEncoder().encode(canonicalJson(value));
|
|
124
|
-
const hash = await crypto.subtle.digest('SHA-256', bytes);
|
|
125
|
-
return `0x${Array.from(new Uint8Array(hash)).map((b) => b.toString(16).padStart(2, '0')).join('')}`;
|
|
126
|
-
}
|
|
127
|
-
export const profileVersion = (p) => digestOf(p);
|
|
128
|
-
//# sourceMappingURL=contract.js.map
|
package/dist/contract.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/handler.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Address } from '@agenticprimitives/types';
|
|
2
|
-
import { type GenerateRequestV1, type GenerateResponseV1, type GatewayRefusalV1, type PolicyDecisionV1, type StreamEventV1 } from './contract.js';
|
|
3
|
-
import { type CallerCredentialV1, type MeterPort, type PolicyStorePort, type PrincipalResolverPort, type ProviderAdapter, type ReceiptLedgerPort, type ResolvedPrincipalV1 } from './ports.js';
|
|
4
|
-
export interface GatewayPorts {
|
|
5
|
-
resolver: PrincipalResolverPort;
|
|
6
|
-
policy: PolicyStorePort;
|
|
7
|
-
meter: MeterPort;
|
|
8
|
-
ledger: ReceiptLedgerPort;
|
|
9
|
-
adapters: Record<string, ProviderAdapter>;
|
|
10
|
-
now?: () => number;
|
|
11
|
-
newId?: () => string;
|
|
12
|
-
/** Receipts are written in the background by the Worker (`waitUntil`); absent ⇒ awaited inline. */
|
|
13
|
-
waitUntil?: (p: Promise<unknown>) => void;
|
|
14
|
-
log?: (line: string) => void;
|
|
15
|
-
}
|
|
16
|
-
export interface GatewayHandler {
|
|
17
|
-
generate(req: GenerateRequestV1, caller: CallerCredentialV1): Promise<GenerateResponseV1 | GatewayRefusalV1>;
|
|
18
|
-
stream(req: GenerateRequestV1, caller: CallerCredentialV1, onEvent: (e: StreamEventV1) => void): Promise<GenerateResponseV1 | GatewayRefusalV1>;
|
|
19
|
-
/** The principal for a caller, for the Worker's other routes (`/v1/models`, ops) — the same resolver, never a second one. */
|
|
20
|
-
whoIs(caller: CallerCredentialV1): Promise<ResolvedPrincipalV1 | null>;
|
|
21
|
-
}
|
|
22
|
-
export declare function createGatewayHandler(ports: GatewayPorts): GatewayHandler;
|
|
23
|
-
export type { PolicyDecisionV1, Address };
|
|
24
|
-
//# sourceMappingURL=handler.d.ts.map
|
package/dist/handler.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EACgB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAA8C,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAEnL,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAuC,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGpO,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,mGAAmG;IACnG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC;IAC7G,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC;IAChJ,6HAA6H;IAC7H,KAAK,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CACxE;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAmGxE;AAED,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/handler.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { validateGenerateRequest, } from './contract.js';
|
|
2
|
-
import { costMicroUsd, estimateCostMicroUsd, estimateTokens } from './budget.js';
|
|
3
|
-
import { decidePolicy, limitsFor } from './policy.js';
|
|
4
|
-
import { classifyError } from './ports.js';
|
|
5
|
-
import { UNKNOWN_USAGE } from './usage.js';
|
|
6
|
-
const defaultId = () => (typeof globalThis.crypto?.randomUUID === "function" ? crypto.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`);
|
|
7
|
-
const promptChars = (req) => req.messages.reduce((n, m) => n + m.content.length, 0) + (req.tools ? JSON.stringify(req.tools).length : 0);
|
|
8
|
-
export function createGatewayHandler(ports) {
|
|
9
|
-
const now = ports.now ?? (() => Date.now());
|
|
10
|
-
const newId = ports.newId ?? defaultId;
|
|
11
|
-
const write = (r) => {
|
|
12
|
-
const p = ports.ledger.write(r).catch((e) => ports.log?.(`[ledger] receipt ${r.id} not written: ${e instanceof Error ? e.message : String(e)}`));
|
|
13
|
-
if (ports.waitUntil)
|
|
14
|
-
ports.waitUntil(p);
|
|
15
|
-
};
|
|
16
|
-
async function run(req, caller, onDelta) {
|
|
17
|
-
const v = validateGenerateRequest(req);
|
|
18
|
-
if (!v.ok)
|
|
19
|
-
return { refused: true, reason: 'invalid_request', detail: v.errors.join('; ') };
|
|
20
|
-
const who = await ports.resolver.resolve(caller);
|
|
21
|
-
if (!who)
|
|
22
|
-
return { refused: true, reason: 'unknown_caller', detail: 'no principal could be established for this credential' };
|
|
23
|
-
const [entitlement, stored, catalog] = await Promise.all([ports.policy.entitlement(who.principal), ports.policy.profile(req.profile), ports.policy.catalog()]);
|
|
24
|
-
const decision = await decidePolicy({ profile: stored?.profile ?? null, catalog, entitlement, request: req, now: new Date(now()), ...(stored ? { profileVersion: stored.version } : {}) });
|
|
25
|
-
const base = { principal: who.principal, principalClass: who.principalClass, ...(who.estate ? { estate: who.estate } : {}), ...(who.clientKind ? { clientKind: who.clientKind } : {}), ...(req.context.agent ? { assertedAgent: req.context.agent } : {}), ...(req.context.runRef ? { runRef: req.context.runRef } : {}), ...(req.context.stepRef ? { stepRef: req.context.stepRef } : {}), purpose: req.context.purpose, profile: req.profile };
|
|
26
|
-
if (!decision.allowed) {
|
|
27
|
-
const id = newId();
|
|
28
|
-
write({ id, at: new Date(now()).toISOString(), ...base, profileVersion: decision.profileVersion ?? '', provider: '', model: '', attempt: 0, policyDecision: decision, usage: UNKNOWN_USAGE, costMicroUsd: 0, latencyMs: 0, outcome: 'refused', failureClass: 'policy', failureDetail: decision.detail, reconciliation: 'settled' });
|
|
29
|
-
const reason = decision.reason === 'unknown_profile' ? 'unknown_profile' : decision.reason === 'profile_unavailable' ? 'profile_unavailable' : 'not_entitled';
|
|
30
|
-
return { refused: true, reason, detail: decision.detail, policyDecision: decision, receiptIds: [id] };
|
|
31
|
-
}
|
|
32
|
-
// Reserve against the FIRST candidate's price at the profile's ceiling; settle corrects it.
|
|
33
|
-
const first = decision.candidates[0];
|
|
34
|
-
const estTokensIn = estimateTokens(promptChars(req));
|
|
35
|
-
const estimate = { estimateTokens: estTokensIn + decision.maxOutputTokens, estimateMicroUsd: estimateCostMicroUsd(estTokensIn, decision.maxOutputTokens, first.pricing) };
|
|
36
|
-
const reserved = await ports.meter.reserve({ principal: who.principal, profile: req.profile, ...estimate, limits: limitsFor(entitlement, req.profile) });
|
|
37
|
-
if (!reserved.ok) {
|
|
38
|
-
const id = newId();
|
|
39
|
-
write({ id, at: new Date(now()).toISOString(), ...base, profileVersion: decision.profileVersion, provider: first.provider, model: first.model, attempt: 0, policyDecision: decision, usage: UNKNOWN_USAGE, costMicroUsd: 0, latencyMs: 0, outcome: 'refused', failureClass: 'policy', failureDetail: `${reserved.reason}: ${reserved.detail}`, reconciliation: 'settled' });
|
|
40
|
-
return { refused: true, reason: 'over_budget', detail: `${reserved.reason}: ${reserved.detail}`, policyDecision: decision, receiptIds: [id] };
|
|
41
|
-
}
|
|
42
|
-
const receiptIds = [];
|
|
43
|
-
let fallbackOf;
|
|
44
|
-
let lastClass;
|
|
45
|
-
let lastDetail = '';
|
|
46
|
-
/** An attempt timed out: its usage is unknown, so the reservation stays held for the sweep whatever happens next. */
|
|
47
|
-
let heldPending = false;
|
|
48
|
-
for (let attempt = 1; attempt <= decision.maxAttempts; attempt++) {
|
|
49
|
-
const cand = decision.candidates[attempt - 1];
|
|
50
|
-
const adapter = ports.adapters[cand.provider];
|
|
51
|
-
const id = newId();
|
|
52
|
-
receiptIds.push(id);
|
|
53
|
-
const t0 = now();
|
|
54
|
-
const receiptBase = { id, at: new Date(t0).toISOString(), ...base, profileVersion: decision.profileVersion, provider: cand.provider, model: cand.model, attempt, ...(fallbackOf ? { fallbackOf } : {}), policyDecision: decision, reservationId: reserved.reservationId };
|
|
55
|
-
if (!adapter) {
|
|
56
|
-
lastClass = 'unavailable';
|
|
57
|
-
lastDetail = `no adapter is bound for provider "${cand.provider}"`;
|
|
58
|
-
write({ ...receiptBase, usage: UNKNOWN_USAGE, costMicroUsd: 0, latencyMs: 0, outcome: 'failed', failureClass: lastClass, failureDetail: lastDetail, reconciliation: 'settled' });
|
|
59
|
-
if (!decision.fallbackOn.includes('unavailable'))
|
|
60
|
-
break;
|
|
61
|
-
fallbackOf = id;
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
const adapterReq = { model: cand.model, ...(cand.endpoint ? { endpoint: cand.endpoint } : {}), messages: req.messages, ...(req.tools ? { tools: req.tools } : {}), ...(req.toolChoice ? { toolChoice: req.toolChoice } : {}), maxOutputTokens: decision.maxOutputTokens, ...(req.temperature !== undefined ? { temperature: req.temperature } : {}), timeoutMs: decision.timeoutMs };
|
|
65
|
-
let result;
|
|
66
|
-
try {
|
|
67
|
-
result = onDelta && adapter.stream ? await adapter.stream(adapterReq, onDelta) : await adapter.generate(adapterReq);
|
|
68
|
-
if (onDelta && !adapter.stream)
|
|
69
|
-
onDelta(result.content);
|
|
70
|
-
}
|
|
71
|
-
catch (e) {
|
|
72
|
-
lastClass = classifyError(e);
|
|
73
|
-
lastDetail = e instanceof Error ? e.message : String(e);
|
|
74
|
-
const latencyMs = now() - t0;
|
|
75
|
-
// A timeout may have cost tokens we cannot see: the reservation is HELD for the reconciler, never released as zero.
|
|
76
|
-
const pending = lastClass === 'timeout';
|
|
77
|
-
if (pending)
|
|
78
|
-
heldPending = true;
|
|
79
|
-
write({ ...receiptBase, usage: UNKNOWN_USAGE, costMicroUsd: 0, latencyMs, outcome: 'failed', failureClass: lastClass, failureDetail: lastDetail, reconciliation: pending ? 'pending' : 'settled' });
|
|
80
|
-
if (pending && ports.meter.hold)
|
|
81
|
-
await ports.meter.hold({ principal: who.principal, reservationId: reserved.reservationId });
|
|
82
|
-
ports.log?.(`[attempt ${attempt}] ${cand.provider}/${cand.model} failed ${lastClass}: ${lastDetail.slice(0, 160)}`);
|
|
83
|
-
if (!decision.fallbackOn.includes(lastClass) || attempt === decision.maxAttempts)
|
|
84
|
-
break;
|
|
85
|
-
fallbackOf = id;
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
const latencyMs = now() - t0;
|
|
89
|
-
const usage = result.usage ?? UNKNOWN_USAGE;
|
|
90
|
-
const cost = costMicroUsd(usage, cand.pricing);
|
|
91
|
-
const reconciliation = result.usage ? 'settled' : 'pending';
|
|
92
|
-
if (result.usage)
|
|
93
|
-
await ports.meter.settle({ principal: who.principal, reservationId: reserved.reservationId, usage, costMicroUsd: cost });
|
|
94
|
-
else if (ports.meter.hold)
|
|
95
|
-
await ports.meter.hold({ principal: who.principal, reservationId: reserved.reservationId });
|
|
96
|
-
write({ ...receiptBase, usage, ...(result.providerUsage !== undefined ? { providerUsage: result.providerUsage } : {}), costMicroUsd: cost, latencyMs, outcome: 'answered', reconciliation });
|
|
97
|
-
return {
|
|
98
|
-
content: result.content, toolCalls: result.toolCalls, stopReason: result.stopReason, usage,
|
|
99
|
-
receipt: { id, profile: req.profile, profileVersion: decision.profileVersion, provider: cand.provider, model: cand.model, attempt, ...(fallbackOf ? { fallbackOf } : {}), policyDecision: decision, costMicroUsd: cost, latencyMs, reconciliation },
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
// Every attempt failed (or the class was not a fallback trigger): the reservation is settled at zero actual usage ONLY
|
|
103
|
-
// when every failure says nothing was consumed; one timeout anywhere keeps it pending for the sweep.
|
|
104
|
-
if (!heldPending)
|
|
105
|
-
await ports.meter.settle({ principal: who.principal, reservationId: reserved.reservationId, usage: UNKNOWN_USAGE, costMicroUsd: 0 });
|
|
106
|
-
return { refused: true, reason: 'all_attempts_failed', detail: lastDetail || 'no attempt answered', policyDecision: decision, receiptIds, ...(lastClass ? { failureClass: lastClass } : {}) };
|
|
107
|
-
}
|
|
108
|
-
return {
|
|
109
|
-
generate: (req, caller) => run(req, caller),
|
|
110
|
-
async stream(req, caller, onEvent) {
|
|
111
|
-
const out = await run(req, caller, (text) => onEvent({ type: 'delta', text }));
|
|
112
|
-
if ('refused' in out)
|
|
113
|
-
onEvent({ type: 'error', message: out.detail, ...(out.failureClass ? { failureClass: out.failureClass } : {}), ...(out.receiptIds?.length ? { receiptId: out.receiptIds[out.receiptIds.length - 1] } : {}) });
|
|
114
|
-
else {
|
|
115
|
-
for (const call of out.toolCalls)
|
|
116
|
-
onEvent({ type: 'tool_call', call });
|
|
117
|
-
onEvent({ type: 'done', response: out });
|
|
118
|
-
}
|
|
119
|
-
return out;
|
|
120
|
-
},
|
|
121
|
-
whoIs: (caller) => ports.resolver.resolve(caller),
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=handler.js.map
|
package/dist/handler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export { PACKAGE_NAME, PACKAGE_STATUS, SPEC_REF, FALLBACK_CLASSES, isRefusal, catalogKey, canonicalJson, digestOf, profileVersion, validateProfile, validateCatalogEntry, validateEntitlement, validateGenerateRequest, } from './contract.js';
|
|
2
|
-
export type { MessageRoleV1, MessageV1, ToolDefinitionV1, ToolCallV1, ToolChoiceV1, GenerateContextV1, GenerateRequestV1, GenerateResponseV1, StreamEventV1, GatewayRefusalV1, StopReasonV1, FailureClassV1, ReceiptSummaryV1, ProviderKindV1, ModelCapabilityV1, PrivacyV1, ProfileCandidateV1, ModelProfileV1, ModelPricingV1, ModelCatalogEntryV1, ClientKindV1, BudgetLimitsV1, ClientEntitlementV1, PolicyCandidateV1, PolicyDecisionV1, InferenceReceiptV1, PolicyChangeV1, InferenceOpsSliceV1, InferenceOpsSummaryV1, ValidationV1, ModelUsageV1, } from './contract.js';
|
|
3
|
-
export { decidePolicy, limitsFor, profilesEmptiedBy, DEFAULT_MAX_ATTEMPTS } from './policy.js';
|
|
4
|
-
export type { PolicyInput } from './policy.js';
|
|
5
|
-
export { reserve, settle, expire, stale, rollDay, rebuildFromReceipts, utilisation, emptyBudget, estimateTokens, estimateCostMicroUsd, costMicroUsd, dayOf, minuteOf } from './budget.js';
|
|
6
|
-
export type { BudgetStateV1, ProfileCountersV1, ReservationV1, ReserveResult } from './budget.js';
|
|
7
|
-
export { normalizeAnthropicUsage, normalizeOpenAiUsage, UNKNOWN_USAGE } from './usage.js';
|
|
8
|
-
export type { AnthropicRawUsage, OpenAiRawUsage } from './usage.js';
|
|
9
|
-
export { ProviderFailure, classifyStatus, classifyError } from './ports.js';
|
|
10
|
-
export type { CallerCredentialV1, ResolvedPrincipalV1, PrincipalResolverPort, PolicyStorePort, MeterPort, ReceiptLedgerPort, AdapterRequestV1, AdapterResultV1, ProviderAdapter } from './ports.js';
|
|
11
|
-
export { createGatewayHandler } from './handler.js';
|
|
12
|
-
export type { GatewayPorts, GatewayHandler } from './handler.js';
|
|
13
|
-
export { anthropicAdapter, foldForAnthropic } from './adapters/anthropic.js';
|
|
14
|
-
export type { AnthropicAdapterOpts } from './adapters/anthropic.js';
|
|
15
|
-
export { openAiCompatAdapter, foldForOpenAi, parseToolCalls } from './adapters/openai-compat.js';
|
|
16
|
-
export type { OpenAiCompatAdapterOpts } from './adapters/openai-compat.js';
|
|
17
|
-
export { chatRequestToGenerate, generateToChatCompletion, refusalToChatError, streamEventToChatChunks } from './openai-compat/translate.js';
|
|
18
|
-
export type { ChatCompletionRequest, ChatCompletionResponse, TranslateResult } from './openai-compat/translate.js';
|
|
19
|
-
export { summarizeReceipts } from './ops.js';
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EACxH,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,GACpF,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAC/J,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EACrK,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,GACnM,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/F,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC1L,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1F,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACpM,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5I,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|