usertrust 1.3.0 → 1.5.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/README.md +9 -9
- package/dist/anomaly/detector.d.ts.map +1 -1
- package/dist/anomaly/detector.js +36 -11
- package/dist/anomaly/detector.js.map +1 -1
- package/dist/anomaly/signals/spend-velocity.d.ts +39 -12
- package/dist/anomaly/signals/spend-velocity.d.ts.map +1 -1
- package/dist/anomaly/signals/spend-velocity.js +66 -43
- package/dist/anomaly/signals/spend-velocity.js.map +1 -1
- package/dist/anomaly/signals/token-rate.d.ts +33 -13
- package/dist/anomaly/signals/token-rate.d.ts.map +1 -1
- package/dist/anomaly/signals/token-rate.js +124 -38
- package/dist/anomaly/signals/token-rate.js.map +1 -1
- package/dist/anomaly/types.d.ts +28 -6
- package/dist/anomaly/types.d.ts.map +1 -1
- package/dist/audit/chain.d.ts +9 -0
- package/dist/audit/chain.d.ts.map +1 -1
- package/dist/audit/chain.js +65 -9
- package/dist/audit/chain.js.map +1 -1
- package/dist/audit/verify.d.ts +19 -0
- package/dist/audit/verify.d.ts.map +1 -1
- package/dist/audit/verify.js +216 -14
- package/dist/audit/verify.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +107 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/cli/skill.d.ts.map +1 -1
- package/dist/cli/skill.js +35 -5
- package/dist/cli/skill.js.map +1 -1
- package/dist/cli/snapshot.d.ts.map +1 -1
- package/dist/cli/snapshot.js +20 -2
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +20 -11
- package/dist/cli/verify.js.map +1 -1
- package/dist/detect.d.ts +34 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +124 -0
- package/dist/detect.js.map +1 -1
- package/dist/govern.d.ts +13 -2
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +475 -127
- package/dist/govern.js.map +1 -1
- package/dist/headless.d.ts +41 -2
- package/dist/headless.d.ts.map +1 -1
- package/dist/headless.js +203 -35
- package/dist/headless.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ledger/client.d.ts +14 -0
- package/dist/ledger/client.d.ts.map +1 -1
- package/dist/ledger/client.js +56 -0
- package/dist/ledger/client.js.map +1 -1
- package/dist/ledger/pricing.d.ts +54 -0
- package/dist/ledger/pricing.d.ts.map +1 -1
- package/dist/ledger/pricing.js +134 -8
- package/dist/ledger/pricing.js.map +1 -1
- package/dist/policy/default-rules.d.ts +18 -3
- package/dist/policy/default-rules.d.ts.map +1 -1
- package/dist/policy/default-rules.js +33 -15
- package/dist/policy/default-rules.js.map +1 -1
- package/dist/policy/gate.d.ts.map +1 -1
- package/dist/policy/gate.js +114 -16
- package/dist/policy/gate.js.map +1 -1
- package/dist/policy/injection.d.ts.map +1 -1
- package/dist/policy/injection.js +25 -16
- package/dist/policy/injection.js.map +1 -1
- package/dist/policy/pii.d.ts +20 -0
- package/dist/policy/pii.d.ts.map +1 -1
- package/dist/policy/pii.js +45 -2
- package/dist/policy/pii.js.map +1 -1
- package/dist/shared/types.d.ts +191 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +67 -6
- package/dist/shared/types.js.map +1 -1
- package/dist/snapshot/checkpoint.d.ts +18 -2
- package/dist/snapshot/checkpoint.d.ts.map +1 -1
- package/dist/snapshot/checkpoint.js +101 -17
- package/dist/snapshot/checkpoint.js.map +1 -1
- package/dist/streaming.d.ts +8 -3
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +75 -31
- package/dist/streaming.js.map +1 -1
- package/dist/supply-chain/permissions.d.ts +16 -3
- package/dist/supply-chain/permissions.d.ts.map +1 -1
- package/dist/supply-chain/permissions.js +59 -9
- package/dist/supply-chain/permissions.js.map +1 -1
- package/dist/supply-chain/sign.d.ts +5 -2
- package/dist/supply-chain/sign.d.ts.map +1 -1
- package/dist/supply-chain/sign.js +10 -2
- package/dist/supply-chain/sign.js.map +1 -1
- package/package.json +2 -4
package/dist/shared/types.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/** Settlement scope of an endpoint: local (self-hosted) or cloud (metered provider). */
|
|
3
|
+
export type EndpointClass = "local" | "cloud";
|
|
4
|
+
/** Best-effort runtime label for a local endpoint (receipt/UX metadata only). */
|
|
5
|
+
export type LocalRuntime = "ollama" | "vllm" | "lmstudio" | "openai-compat" | "unknown";
|
|
6
|
+
/** Result of endpoint classification — selects the settlement regime for a call. */
|
|
7
|
+
export interface EndpointInfo {
|
|
8
|
+
class: EndpointClass;
|
|
9
|
+
runtime: LocalRuntime;
|
|
10
|
+
baseURL?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Denomination of a settled cost: real-dollar proxy or nominal bookkeeping units. */
|
|
13
|
+
export type CostBasis = "usd-proxy" | "nominal";
|
|
14
|
+
/** Where the applied rates came from during resolution. */
|
|
15
|
+
export type RateSource = "table" | "custom" | "local-model" | "local-default" | "fallback";
|
|
2
16
|
export interface TrustReceipt {
|
|
3
17
|
transferId: string;
|
|
4
18
|
cost: number;
|
|
@@ -18,6 +32,17 @@ export interface TrustReceipt {
|
|
|
18
32
|
chunksDelivered?: number;
|
|
19
33
|
/** Action kind for governed non-LLM actions. Absent for LLM calls (backward compat). */
|
|
20
34
|
actionKind?: ActionKind;
|
|
35
|
+
/** Endpoint classification for this call. Absent on pre-M2 receipts. */
|
|
36
|
+
endpoint?: {
|
|
37
|
+
class: EndpointClass;
|
|
38
|
+
runtime: LocalRuntime;
|
|
39
|
+
};
|
|
40
|
+
/** Metering provenance: denomination and rate origin of the settled cost. */
|
|
41
|
+
meter?: {
|
|
42
|
+
costBasis: CostBasis;
|
|
43
|
+
rateSource: RateSource;
|
|
44
|
+
computeMs?: number;
|
|
45
|
+
};
|
|
21
46
|
}
|
|
22
47
|
export interface TrustedResponse<T> {
|
|
23
48
|
response: T;
|
|
@@ -64,12 +89,15 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
64
89
|
audit: z.ZodDefault<z.ZodObject<{
|
|
65
90
|
rotation: z.ZodDefault<z.ZodEnum<["daily", "weekly", "none"]>>;
|
|
66
91
|
indexLimit: z.ZodDefault<z.ZodNumber>;
|
|
92
|
+
failClosed: z.ZodDefault<z.ZodBoolean>;
|
|
67
93
|
}, "strip", z.ZodTypeAny, {
|
|
68
94
|
rotation: "daily" | "weekly" | "none";
|
|
69
95
|
indexLimit: number;
|
|
96
|
+
failClosed: boolean;
|
|
70
97
|
}, {
|
|
71
98
|
rotation?: "daily" | "weekly" | "none" | undefined;
|
|
72
99
|
indexLimit?: number | undefined;
|
|
100
|
+
failClosed?: boolean | undefined;
|
|
73
101
|
}>>;
|
|
74
102
|
tigerbeetle: z.ZodDefault<z.ZodObject<{
|
|
75
103
|
addresses: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -102,19 +130,110 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
102
130
|
inputPer1k: number;
|
|
103
131
|
outputPer1k: number;
|
|
104
132
|
}>>>;
|
|
133
|
+
/**
|
|
134
|
+
* Endpoint matchers consumed by classifyEndpoint(). First match wins.
|
|
135
|
+
* match forms: scheme URL ("http://gpu-box:8000", matched by origin),
|
|
136
|
+
* leading-star hostname suffix ("*.gpu.internal"), or bare hostname ("gpu-box").
|
|
137
|
+
*/
|
|
138
|
+
endpoints: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
139
|
+
match: z.ZodString;
|
|
140
|
+
class: z.ZodDefault<z.ZodEnum<["local", "cloud"]>>;
|
|
141
|
+
runtime: z.ZodDefault<z.ZodEnum<["ollama", "vllm", "lmstudio", "openai-compat", "unknown"]>>;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
match: string;
|
|
144
|
+
class: "local" | "cloud";
|
|
145
|
+
runtime: "ollama" | "vllm" | "lmstudio" | "openai-compat" | "unknown";
|
|
146
|
+
}, {
|
|
147
|
+
match: string;
|
|
148
|
+
class?: "local" | "cloud" | undefined;
|
|
149
|
+
runtime?: "ollama" | "vllm" | "lmstudio" | "openai-compat" | "unknown" | undefined;
|
|
150
|
+
}>, "many">>;
|
|
151
|
+
/** Local (zero-marginal-cost) settlement scope. */
|
|
152
|
+
local: z.ZodDefault<z.ZodObject<{
|
|
153
|
+
/** Loopback hosts (localhost/127.0.0.1/[::1]) classify as local without config. */
|
|
154
|
+
autoDetectLoopback: z.ZodDefault<z.ZodBoolean>;
|
|
155
|
+
/**
|
|
156
|
+
* Rate applied to any local-scope model with no local.models match. Default {0,0}:
|
|
157
|
+
* with the >=1 floor, every local call settles at exactly 1 nominal usertoken.
|
|
158
|
+
*/
|
|
159
|
+
defaultRate: z.ZodDefault<z.ZodObject<{
|
|
160
|
+
inputPer1k: z.ZodNumber;
|
|
161
|
+
outputPer1k: z.ZodNumber;
|
|
162
|
+
}, "strip", z.ZodTypeAny, {
|
|
163
|
+
inputPer1k: number;
|
|
164
|
+
outputPer1k: number;
|
|
165
|
+
}, {
|
|
166
|
+
inputPer1k: number;
|
|
167
|
+
outputPer1k: number;
|
|
168
|
+
}>>;
|
|
169
|
+
/**
|
|
170
|
+
* Denomination of local rates: "nominal" (bookkeeping units) or "amortized-usd"
|
|
171
|
+
* (operator's GPU-chargeback rate; 1 usertoken = $0.0001 as usual).
|
|
172
|
+
*/
|
|
173
|
+
rateClass: z.ZodDefault<z.ZodEnum<["nominal", "amortized-usd"]>>;
|
|
174
|
+
/**
|
|
175
|
+
* Per-model local rates. Keys: exact model strings or trailing-* globs
|
|
176
|
+
* ("llama3.3*", "*"). Exact match beats glob; longest glob wins.
|
|
177
|
+
*/
|
|
178
|
+
models: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
179
|
+
inputPer1k: z.ZodNumber;
|
|
180
|
+
outputPer1k: z.ZodNumber;
|
|
181
|
+
}, "strip", z.ZodTypeAny, {
|
|
182
|
+
inputPer1k: number;
|
|
183
|
+
outputPer1k: number;
|
|
184
|
+
}, {
|
|
185
|
+
inputPer1k: number;
|
|
186
|
+
outputPer1k: number;
|
|
187
|
+
}>>>;
|
|
188
|
+
/** Inject stream_options:{include_usage:true} into local openai-kind streams. */
|
|
189
|
+
injectUsageOptions: z.ZodDefault<z.ZodBoolean>;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
models: Record<string, {
|
|
192
|
+
inputPer1k: number;
|
|
193
|
+
outputPer1k: number;
|
|
194
|
+
}>;
|
|
195
|
+
autoDetectLoopback: boolean;
|
|
196
|
+
defaultRate: {
|
|
197
|
+
inputPer1k: number;
|
|
198
|
+
outputPer1k: number;
|
|
199
|
+
};
|
|
200
|
+
rateClass: "nominal" | "amortized-usd";
|
|
201
|
+
injectUsageOptions: boolean;
|
|
202
|
+
}, {
|
|
203
|
+
models?: Record<string, {
|
|
204
|
+
inputPer1k: number;
|
|
205
|
+
outputPer1k: number;
|
|
206
|
+
}> | undefined;
|
|
207
|
+
autoDetectLoopback?: boolean | undefined;
|
|
208
|
+
defaultRate?: {
|
|
209
|
+
inputPer1k: number;
|
|
210
|
+
outputPer1k: number;
|
|
211
|
+
} | undefined;
|
|
212
|
+
rateClass?: "nominal" | "amortized-usd" | undefined;
|
|
213
|
+
injectUsageOptions?: boolean | undefined;
|
|
214
|
+
}>>;
|
|
215
|
+
/**
|
|
216
|
+
* Cloud-scope policy when a model misses customRates, PRICING_TABLE, and prefix match.
|
|
217
|
+
* "fallback" = silent sonnet-class rate (legacy) · "warn" = same rate + one-time warn +
|
|
218
|
+
* receipt.meter.rateSource "fallback" · "deny" = PolicyDeniedError before the PENDING hold.
|
|
219
|
+
*/
|
|
220
|
+
unknownModelPolicy: z.ZodDefault<z.ZodEnum<["fallback", "warn", "deny"]>>;
|
|
105
221
|
supplyChain: z.ZodDefault<z.ZodObject<{
|
|
106
222
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
107
223
|
trustedPublishers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
224
|
+
publisherKeys: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
|
|
108
225
|
allowedPermissions: z.ZodDefault<z.ZodArray<z.ZodEnum<["llm_call", "tool_use", "file_read", "file_write", "shell_command", "network_access", "credential_access"]>, "many">>;
|
|
109
226
|
requireSignature: z.ZodDefault<z.ZodBoolean>;
|
|
110
227
|
}, "strip", z.ZodTypeAny, {
|
|
111
228
|
enabled: boolean;
|
|
112
229
|
trustedPublishers: string[];
|
|
230
|
+
publisherKeys: Record<string, string[]>;
|
|
113
231
|
allowedPermissions: ("llm_call" | "tool_use" | "shell_command" | "file_read" | "file_write" | "network_access" | "credential_access")[];
|
|
114
232
|
requireSignature: boolean;
|
|
115
233
|
}, {
|
|
116
234
|
enabled?: boolean | undefined;
|
|
117
235
|
trustedPublishers?: string[] | undefined;
|
|
236
|
+
publisherKeys?: Record<string, string[]> | undefined;
|
|
118
237
|
allowedPermissions?: ("llm_call" | "tool_use" | "shell_command" | "file_read" | "file_write" | "network_access" | "credential_access")[] | undefined;
|
|
119
238
|
requireSignature?: boolean | undefined;
|
|
120
239
|
}>>;
|
|
@@ -158,26 +277,38 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
158
277
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
159
278
|
tokenRate: z.ZodDefault<z.ZodObject<{
|
|
160
279
|
thresholdTokPerSec: z.ZodDefault<z.ZodNumber>;
|
|
280
|
+
/** Local-scope threshold (fast local GPU inference legitimately exceeds 500). */
|
|
281
|
+
localThresholdTokPerSec: z.ZodDefault<z.ZodNumber>;
|
|
282
|
+
/** Per-model threshold overrides. Keys: exact model or trailing-* glob. */
|
|
283
|
+
perModel: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
161
284
|
windowMs: z.ZodDefault<z.ZodNumber>;
|
|
162
285
|
consecutiveWindows: z.ZodDefault<z.ZodNumber>;
|
|
163
286
|
}, "strip", z.ZodTypeAny, {
|
|
164
287
|
thresholdTokPerSec: number;
|
|
288
|
+
localThresholdTokPerSec: number;
|
|
289
|
+
perModel: Record<string, number>;
|
|
165
290
|
windowMs: number;
|
|
166
291
|
consecutiveWindows: number;
|
|
167
292
|
}, {
|
|
168
293
|
thresholdTokPerSec?: number | undefined;
|
|
294
|
+
localThresholdTokPerSec?: number | undefined;
|
|
295
|
+
perModel?: Record<string, number> | undefined;
|
|
169
296
|
windowMs?: number | undefined;
|
|
170
297
|
consecutiveWindows?: number | undefined;
|
|
171
298
|
}>>;
|
|
172
299
|
spendVelocity: z.ZodDefault<z.ZodObject<{
|
|
173
300
|
thresholdDollarsPerMin: z.ZodDefault<z.ZodNumber>;
|
|
301
|
+
/** Local-scope velocity threshold in nominal usertokens per minute. */
|
|
302
|
+
localThresholdUsertokensPerMin: z.ZodDefault<z.ZodNumber>;
|
|
174
303
|
windowMs: z.ZodDefault<z.ZodNumber>;
|
|
175
304
|
}, "strip", z.ZodTypeAny, {
|
|
176
305
|
windowMs: number;
|
|
177
306
|
thresholdDollarsPerMin: number;
|
|
307
|
+
localThresholdUsertokensPerMin: number;
|
|
178
308
|
}, {
|
|
179
309
|
windowMs?: number | undefined;
|
|
180
310
|
thresholdDollarsPerMin?: number | undefined;
|
|
311
|
+
localThresholdUsertokensPerMin?: number | undefined;
|
|
181
312
|
}>>;
|
|
182
313
|
injectionCascade: z.ZodDefault<z.ZodObject<{
|
|
183
314
|
eventCount: z.ZodDefault<z.ZodNumber>;
|
|
@@ -194,12 +325,15 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
194
325
|
enabled: boolean;
|
|
195
326
|
tokenRate: {
|
|
196
327
|
thresholdTokPerSec: number;
|
|
328
|
+
localThresholdTokPerSec: number;
|
|
329
|
+
perModel: Record<string, number>;
|
|
197
330
|
windowMs: number;
|
|
198
331
|
consecutiveWindows: number;
|
|
199
332
|
};
|
|
200
333
|
spendVelocity: {
|
|
201
334
|
windowMs: number;
|
|
202
335
|
thresholdDollarsPerMin: number;
|
|
336
|
+
localThresholdUsertokensPerMin: number;
|
|
203
337
|
};
|
|
204
338
|
injectionCascade: {
|
|
205
339
|
windowMs: number;
|
|
@@ -210,12 +344,15 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
210
344
|
enabled?: boolean | undefined;
|
|
211
345
|
tokenRate?: {
|
|
212
346
|
thresholdTokPerSec?: number | undefined;
|
|
347
|
+
localThresholdTokPerSec?: number | undefined;
|
|
348
|
+
perModel?: Record<string, number> | undefined;
|
|
213
349
|
windowMs?: number | undefined;
|
|
214
350
|
consecutiveWindows?: number | undefined;
|
|
215
351
|
} | undefined;
|
|
216
352
|
spendVelocity?: {
|
|
217
353
|
windowMs?: number | undefined;
|
|
218
354
|
thresholdDollarsPerMin?: number | undefined;
|
|
355
|
+
localThresholdUsertokensPerMin?: number | undefined;
|
|
219
356
|
} | undefined;
|
|
220
357
|
injectionCascade?: {
|
|
221
358
|
windowMs?: number | undefined;
|
|
@@ -227,6 +364,20 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
227
364
|
audit: {
|
|
228
365
|
rotation: "daily" | "weekly" | "none";
|
|
229
366
|
indexLimit: number;
|
|
367
|
+
failClosed: boolean;
|
|
368
|
+
};
|
|
369
|
+
local: {
|
|
370
|
+
models: Record<string, {
|
|
371
|
+
inputPer1k: number;
|
|
372
|
+
outputPer1k: number;
|
|
373
|
+
}>;
|
|
374
|
+
autoDetectLoopback: boolean;
|
|
375
|
+
defaultRate: {
|
|
376
|
+
inputPer1k: number;
|
|
377
|
+
outputPer1k: number;
|
|
378
|
+
};
|
|
379
|
+
rateClass: "nominal" | "amortized-usd";
|
|
380
|
+
injectUsageOptions: boolean;
|
|
230
381
|
};
|
|
231
382
|
budget: number;
|
|
232
383
|
tier: "free" | "mini" | "pro" | "mega" | "ultra";
|
|
@@ -254,9 +405,16 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
254
405
|
models: string[];
|
|
255
406
|
}[];
|
|
256
407
|
pricing: "custom" | "recommended";
|
|
408
|
+
endpoints: {
|
|
409
|
+
match: string;
|
|
410
|
+
class: "local" | "cloud";
|
|
411
|
+
runtime: "ollama" | "vllm" | "lmstudio" | "openai-compat" | "unknown";
|
|
412
|
+
}[];
|
|
413
|
+
unknownModelPolicy: "fallback" | "warn" | "deny";
|
|
257
414
|
supplyChain: {
|
|
258
415
|
enabled: boolean;
|
|
259
416
|
trustedPublishers: string[];
|
|
417
|
+
publisherKeys: Record<string, string[]>;
|
|
260
418
|
allowedPermissions: ("llm_call" | "tool_use" | "shell_command" | "file_read" | "file_write" | "network_access" | "credential_access")[];
|
|
261
419
|
requireSignature: boolean;
|
|
262
420
|
};
|
|
@@ -274,12 +432,15 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
274
432
|
enabled: boolean;
|
|
275
433
|
tokenRate: {
|
|
276
434
|
thresholdTokPerSec: number;
|
|
435
|
+
localThresholdTokPerSec: number;
|
|
436
|
+
perModel: Record<string, number>;
|
|
277
437
|
windowMs: number;
|
|
278
438
|
consecutiveWindows: number;
|
|
279
439
|
};
|
|
280
440
|
spendVelocity: {
|
|
281
441
|
windowMs: number;
|
|
282
442
|
thresholdDollarsPerMin: number;
|
|
443
|
+
localThresholdUsertokensPerMin: number;
|
|
283
444
|
};
|
|
284
445
|
injectionCascade: {
|
|
285
446
|
windowMs: number;
|
|
@@ -298,6 +459,20 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
298
459
|
audit?: {
|
|
299
460
|
rotation?: "daily" | "weekly" | "none" | undefined;
|
|
300
461
|
indexLimit?: number | undefined;
|
|
462
|
+
failClosed?: boolean | undefined;
|
|
463
|
+
} | undefined;
|
|
464
|
+
local?: {
|
|
465
|
+
models?: Record<string, {
|
|
466
|
+
inputPer1k: number;
|
|
467
|
+
outputPer1k: number;
|
|
468
|
+
}> | undefined;
|
|
469
|
+
autoDetectLoopback?: boolean | undefined;
|
|
470
|
+
defaultRate?: {
|
|
471
|
+
inputPer1k: number;
|
|
472
|
+
outputPer1k: number;
|
|
473
|
+
} | undefined;
|
|
474
|
+
rateClass?: "nominal" | "amortized-usd" | undefined;
|
|
475
|
+
injectUsageOptions?: boolean | undefined;
|
|
301
476
|
} | undefined;
|
|
302
477
|
tier?: "free" | "mini" | "pro" | "mega" | "ultra" | undefined;
|
|
303
478
|
proxy?: string | undefined;
|
|
@@ -330,9 +505,16 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
330
505
|
inputPer1k: number;
|
|
331
506
|
outputPer1k: number;
|
|
332
507
|
}> | undefined;
|
|
508
|
+
endpoints?: {
|
|
509
|
+
match: string;
|
|
510
|
+
class?: "local" | "cloud" | undefined;
|
|
511
|
+
runtime?: "ollama" | "vllm" | "lmstudio" | "openai-compat" | "unknown" | undefined;
|
|
512
|
+
}[] | undefined;
|
|
513
|
+
unknownModelPolicy?: "fallback" | "warn" | "deny" | undefined;
|
|
333
514
|
supplyChain?: {
|
|
334
515
|
enabled?: boolean | undefined;
|
|
335
516
|
trustedPublishers?: string[] | undefined;
|
|
517
|
+
publisherKeys?: Record<string, string[]> | undefined;
|
|
336
518
|
allowedPermissions?: ("llm_call" | "tool_use" | "shell_command" | "file_read" | "file_write" | "network_access" | "credential_access")[] | undefined;
|
|
337
519
|
requireSignature?: boolean | undefined;
|
|
338
520
|
} | undefined;
|
|
@@ -350,12 +532,15 @@ export declare const TrustConfigSchema: z.ZodObject<{
|
|
|
350
532
|
enabled?: boolean | undefined;
|
|
351
533
|
tokenRate?: {
|
|
352
534
|
thresholdTokPerSec?: number | undefined;
|
|
535
|
+
localThresholdTokPerSec?: number | undefined;
|
|
536
|
+
perModel?: Record<string, number> | undefined;
|
|
353
537
|
windowMs?: number | undefined;
|
|
354
538
|
consecutiveWindows?: number | undefined;
|
|
355
539
|
} | undefined;
|
|
356
540
|
spendVelocity?: {
|
|
357
541
|
windowMs?: number | undefined;
|
|
358
542
|
thresholdDollarsPerMin?: number | undefined;
|
|
543
|
+
localThresholdUsertokensPerMin?: number | undefined;
|
|
359
544
|
} | undefined;
|
|
360
545
|
injectionCascade?: {
|
|
361
546
|
windowMs?: number | undefined;
|
|
@@ -465,6 +650,12 @@ export interface SkillVerification {
|
|
|
465
650
|
deniedPermissions: SkillPermission[];
|
|
466
651
|
/** SHA-256 hash of the manifest for audit inclusion. */
|
|
467
652
|
manifestHash: string;
|
|
653
|
+
/**
|
|
654
|
+
* Whether the loaded skill source bytes were re-hashed and matched the signed
|
|
655
|
+
* `entryHash` (SC-2). False when no source was supplied — an executor MUST treat
|
|
656
|
+
* `false` as "integrity unverified, do not execute".
|
|
657
|
+
*/
|
|
658
|
+
integrityVerified: boolean;
|
|
468
659
|
/** Error message if verification failed. */
|
|
469
660
|
error?: string;
|
|
470
661
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.js
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
// Copyright 2026 Usertools, Inc.
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
// ── Config schema ──
|
|
5
|
+
/** Per-1k-token rate pair (usertokens). Shared by customRates and local.* rates. */
|
|
6
|
+
const RateSchema = z.object({
|
|
7
|
+
inputPer1k: z.number().finite().nonnegative(),
|
|
8
|
+
outputPer1k: z.number().finite().nonnegative(),
|
|
9
|
+
});
|
|
5
10
|
export const TrustConfigSchema = z.object({
|
|
6
11
|
budget: z.number().int().positive(),
|
|
7
12
|
tier: z.enum(["free", "mini", "pro", "mega", "ultra"]).default("mini"),
|
|
@@ -32,6 +37,10 @@ export const TrustConfigSchema = z.object({
|
|
|
32
37
|
.object({
|
|
33
38
|
rotation: z.enum(["daily", "weekly", "none"]).default("daily"),
|
|
34
39
|
indexLimit: z.number().int().default(10_000),
|
|
40
|
+
// P3-AUDIT-FAILCLOSED: when true, a failed CRITICAL audit write aborts the
|
|
41
|
+
// call (deny) instead of settling an unaudited spend. Default false keeps the
|
|
42
|
+
// legacy fail-open behavior (degraded receipt, money still moves).
|
|
43
|
+
failClosed: z.boolean().default(false),
|
|
35
44
|
})
|
|
36
45
|
.default({}),
|
|
37
46
|
tigerbeetle: z
|
|
@@ -47,16 +56,62 @@ export const TrustConfigSchema = z.object({
|
|
|
47
56
|
}))
|
|
48
57
|
.default([]),
|
|
49
58
|
pricing: z.enum(["recommended", "custom"]).default("recommended"),
|
|
50
|
-
customRates: z
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
customRates: z.record(z.string(), RateSchema).optional(),
|
|
60
|
+
/**
|
|
61
|
+
* Endpoint matchers consumed by classifyEndpoint(). First match wins.
|
|
62
|
+
* match forms: scheme URL ("http://gpu-box:8000", matched by origin),
|
|
63
|
+
* leading-star hostname suffix ("*.gpu.internal"), or bare hostname ("gpu-box").
|
|
64
|
+
*/
|
|
65
|
+
endpoints: z
|
|
66
|
+
.array(z.object({
|
|
67
|
+
match: z.string().min(1),
|
|
68
|
+
class: z.enum(["local", "cloud"]).default("local"),
|
|
69
|
+
runtime: z
|
|
70
|
+
.enum(["ollama", "vllm", "lmstudio", "openai-compat", "unknown"])
|
|
71
|
+
.default("unknown"),
|
|
54
72
|
}))
|
|
55
|
-
.
|
|
73
|
+
.default([]),
|
|
74
|
+
/** Local (zero-marginal-cost) settlement scope. */
|
|
75
|
+
local: z
|
|
76
|
+
.object({
|
|
77
|
+
/** Loopback hosts (localhost/127.0.0.1/[::1]) classify as local without config. */
|
|
78
|
+
autoDetectLoopback: z.boolean().default(true),
|
|
79
|
+
/**
|
|
80
|
+
* Rate applied to any local-scope model with no local.models match. Default {0,0}:
|
|
81
|
+
* with the >=1 floor, every local call settles at exactly 1 nominal usertoken.
|
|
82
|
+
*/
|
|
83
|
+
defaultRate: RateSchema.default({ inputPer1k: 0, outputPer1k: 0 }),
|
|
84
|
+
/**
|
|
85
|
+
* Denomination of local rates: "nominal" (bookkeeping units) or "amortized-usd"
|
|
86
|
+
* (operator's GPU-chargeback rate; 1 usertoken = $0.0001 as usual).
|
|
87
|
+
*/
|
|
88
|
+
rateClass: z.enum(["nominal", "amortized-usd"]).default("nominal"),
|
|
89
|
+
/**
|
|
90
|
+
* Per-model local rates. Keys: exact model strings or trailing-* globs
|
|
91
|
+
* ("llama3.3*", "*"). Exact match beats glob; longest glob wins.
|
|
92
|
+
*/
|
|
93
|
+
models: z.record(z.string(), RateSchema).default({}),
|
|
94
|
+
/** Inject stream_options:{include_usage:true} into local openai-kind streams. */
|
|
95
|
+
injectUsageOptions: z.boolean().default(true),
|
|
96
|
+
})
|
|
97
|
+
.default({}),
|
|
98
|
+
/**
|
|
99
|
+
* Cloud-scope policy when a model misses customRates, PRICING_TABLE, and prefix match.
|
|
100
|
+
* "fallback" = silent sonnet-class rate (legacy) · "warn" = same rate + one-time warn +
|
|
101
|
+
* receipt.meter.rateSource "fallback" · "deny" = PolicyDeniedError before the PENDING hold.
|
|
102
|
+
*/
|
|
103
|
+
unknownModelPolicy: z.enum(["fallback", "warn", "deny"]).default("warn"),
|
|
56
104
|
supplyChain: z
|
|
57
105
|
.object({
|
|
58
|
-
|
|
106
|
+
// SC-3: fail-closed by default. A skill with no registered signing key
|
|
107
|
+
// or a bad signature is rejected out of the box; operators opt out
|
|
108
|
+
// explicitly by setting enabled:false.
|
|
109
|
+
enabled: z.boolean().default(true),
|
|
59
110
|
trustedPublishers: z.array(z.string()).default([]),
|
|
111
|
+
// SC-1 trust anchor: publisher -> hex-encoded 32-byte Ed25519 public keys
|
|
112
|
+
// the operator vouches for (array = rotation-friendly). Identity is anchored
|
|
113
|
+
// by these keys, NOT by the key embedded in an attacker-controlled manifest.
|
|
114
|
+
publisherKeys: z.record(z.string(), z.array(z.string().regex(/^[a-f0-9]{64}$/))).default({}),
|
|
60
115
|
allowedPermissions: z
|
|
61
116
|
.array(z.enum([
|
|
62
117
|
"llm_call",
|
|
@@ -93,6 +148,10 @@ export const TrustConfigSchema = z.object({
|
|
|
93
148
|
tokenRate: z
|
|
94
149
|
.object({
|
|
95
150
|
thresholdTokPerSec: z.number().positive().default(500),
|
|
151
|
+
/** Local-scope threshold (fast local GPU inference legitimately exceeds 500). */
|
|
152
|
+
localThresholdTokPerSec: z.number().positive().default(5000),
|
|
153
|
+
/** Per-model threshold overrides. Keys: exact model or trailing-* glob. */
|
|
154
|
+
perModel: z.record(z.string(), z.number().positive()).default({}),
|
|
96
155
|
windowMs: z.number().int().positive().default(2_000),
|
|
97
156
|
consecutiveWindows: z.number().int().positive().default(3),
|
|
98
157
|
})
|
|
@@ -100,6 +159,8 @@ export const TrustConfigSchema = z.object({
|
|
|
100
159
|
spendVelocity: z
|
|
101
160
|
.object({
|
|
102
161
|
thresholdDollarsPerMin: z.number().positive().default(1.0),
|
|
162
|
+
/** Local-scope velocity threshold in nominal usertokens per minute. */
|
|
163
|
+
localThresholdUsertokensPerMin: z.number().positive().default(10_000),
|
|
103
164
|
windowMs: z.number().int().positive().default(10_000),
|
|
104
165
|
})
|
|
105
166
|
.default({}),
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,17 @@ export interface SnapshotMeta {
|
|
|
3
3
|
timestamp: string;
|
|
4
4
|
files: string[];
|
|
5
5
|
size: number;
|
|
6
|
+
/** Audit chain head at snapshot time (from events.jsonl.meta). */
|
|
7
|
+
auditHead?: {
|
|
8
|
+
lastHash: string;
|
|
9
|
+
sequence: number;
|
|
10
|
+
};
|
|
11
|
+
/** Money mirror value at snapshot time (from spend-ledger.json). */
|
|
12
|
+
budgetSpent?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RestoreOptions {
|
|
15
|
+
/** Acknowledge that a live TigerBeetle ledger will NOT be rolled back. */
|
|
16
|
+
forceLedgerDesync?: boolean;
|
|
6
17
|
}
|
|
7
18
|
/**
|
|
8
19
|
* Create a snapshot of the vault state.
|
|
@@ -12,9 +23,14 @@ export interface SnapshotMeta {
|
|
|
12
23
|
export declare function createSnapshot(vaultPath: string, name: string): Promise<SnapshotMeta>;
|
|
13
24
|
/**
|
|
14
25
|
* Restore the vault state from a named snapshot.
|
|
15
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* Atomic (stage-then-commit), audit-writer-lock-aware, and refuses any restore
|
|
28
|
+
* that would sever money<->audit correspondence:
|
|
29
|
+
* - a snapshot that rolls back the audit chain MUST carry spend-ledger.json;
|
|
30
|
+
* - a live TigerBeetle store (which cannot be file-rolled-back) blocks an audit
|
|
31
|
+
* rollback unless the operator passes `forceLedgerDesync`.
|
|
16
32
|
*/
|
|
17
|
-
export declare function restoreSnapshot(vaultPath: string, name: string): Promise<void>;
|
|
33
|
+
export declare function restoreSnapshot(vaultPath: string, name: string, opts?: RestoreOptions): Promise<void>;
|
|
18
34
|
/**
|
|
19
35
|
* List all snapshots in the vault, sorted by timestamp (oldest first).
|
|
20
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/snapshot/checkpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/snapshot/checkpoint.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAwHD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoD3F;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAsEf;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2B9E"}
|