usertrust 1.4.0 → 2.0.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 +17 -1
- 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/index.d.ts +2 -2
- package/dist/anomaly/index.d.ts.map +1 -1
- package/dist/anomaly/index.js +1 -1
- package/dist/anomaly/index.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/anchor-doctor.d.ts +42 -0
- package/dist/audit/anchor-doctor.d.ts.map +1 -0
- package/dist/audit/anchor-doctor.js +285 -0
- package/dist/audit/anchor-doctor.js.map +1 -0
- package/dist/audit/anchor-verify.d.ts +229 -0
- package/dist/audit/anchor-verify.d.ts.map +1 -0
- package/dist/audit/anchor-verify.js +809 -0
- package/dist/audit/anchor-verify.js.map +1 -0
- package/dist/audit/anchor.d.ts +177 -0
- package/dist/audit/anchor.d.ts.map +1 -0
- package/dist/audit/anchor.js +922 -0
- package/dist/audit/anchor.js.map +1 -0
- package/dist/audit/canonical.js +1 -1
- package/dist/audit/canonical.js.map +1 -1
- package/dist/audit/chain.d.ts.map +1 -1
- package/dist/audit/chain.js +21 -7
- package/dist/audit/chain.js.map +1 -1
- package/dist/audit/read.d.ts +19 -0
- package/dist/audit/read.d.ts.map +1 -0
- package/dist/audit/read.js +94 -0
- package/dist/audit/read.js.map +1 -0
- package/dist/audit/rekor-verify.d.ts +116 -0
- package/dist/audit/rekor-verify.d.ts.map +1 -0
- package/dist/audit/rekor-verify.js +533 -0
- package/dist/audit/rekor-verify.js.map +1 -0
- package/dist/audit/rekor.d.ts +71 -0
- package/dist/audit/rekor.d.ts.map +1 -0
- package/dist/audit/rekor.js +556 -0
- package/dist/audit/rekor.js.map +1 -0
- package/dist/audit/rotation.js +1 -1
- package/dist/audit/rotation.js.map +1 -1
- package/dist/audit/sigv4.d.ts +44 -0
- package/dist/audit/sigv4.d.ts.map +1 -0
- package/dist/audit/sigv4.js +134 -0
- package/dist/audit/sigv4.js.map +1 -0
- package/dist/audit/verify.d.ts +78 -0
- package/dist/audit/verify.d.ts.map +1 -1
- package/dist/audit/verify.js +195 -1
- package/dist/audit/verify.js.map +1 -1
- package/dist/cli/anchor.d.ts +3 -0
- package/dist/cli/anchor.d.ts.map +1 -0
- package/dist/cli/anchor.js +626 -0
- package/dist/cli/anchor.js.map +1 -0
- package/dist/cli/completions.js +1 -1
- package/dist/cli/export.d.ts +3 -0
- package/dist/cli/export.d.ts.map +1 -0
- package/dist/cli/export.js +58 -0
- package/dist/cli/export.js.map +1 -0
- package/dist/cli/health.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +99 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +4 -34
- package/dist/cli/inspect.js.map +1 -1
- package/dist/cli/main.d.ts +2 -2
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +20 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/pricing.js +1 -1
- package/dist/cli/pricing.js.map +1 -1
- package/dist/cli/ui.d.ts +3 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +35 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +342 -3
- package/dist/cli/verify.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/detect.d.ts +71 -16
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +141 -6
- package/dist/detect.js.map +1 -1
- package/dist/export/markdown.d.ts +12 -0
- package/dist/export/markdown.d.ts.map +1 -0
- package/dist/export/markdown.js +142 -0
- package/dist/export/markdown.js.map +1 -0
- package/dist/govern.d.ts +67 -3
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +1011 -219
- 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 +58 -7
- package/dist/headless.js.map +1 -1
- package/dist/index.d.ts +33 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -23
- package/dist/index.js.map +1 -1
- package/dist/ledger/client.d.ts.map +1 -1
- package/dist/ledger/client.js +57 -46
- package/dist/ledger/client.js.map +1 -1
- package/dist/ledger/engine.d.ts.map +1 -1
- package/dist/ledger/engine.js +22 -13
- package/dist/ledger/engine.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 +128 -8
- package/dist/ledger/pricing.js.map +1 -1
- package/dist/shared/types.d.ts +154 -340
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +67 -17
- package/dist/shared/types.js.map +1 -1
- package/dist/snapshot/checkpoint.d.ts.map +1 -1
- package/dist/snapshot/checkpoint.js +20 -2
- package/dist/snapshot/checkpoint.js.map +1 -1
- package/dist/streaming.d.ts +13 -3
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +88 -30
- package/dist/streaming.js.map +1 -1
- package/dist/supply-chain/sign.d.ts.map +1 -1
- package/dist/supply-chain/sign.js +3 -0
- package/dist/supply-chain/sign.js.map +1 -1
- package/package.json +6 -4
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"),
|
|
@@ -15,19 +20,19 @@ export const TrustConfigSchema = z.object({
|
|
|
15
20
|
enabled: z.boolean().default(false),
|
|
16
21
|
vetoThreshold: z.enum(["low", "medium", "high", "critical"]).default("high"),
|
|
17
22
|
})
|
|
18
|
-
.
|
|
23
|
+
.prefault({}),
|
|
19
24
|
circuitBreaker: z
|
|
20
25
|
.object({
|
|
21
26
|
failureThreshold: z.number().int().default(5),
|
|
22
27
|
resetTimeout: z.number().int().default(60_000),
|
|
23
28
|
})
|
|
24
|
-
.
|
|
29
|
+
.prefault({}),
|
|
25
30
|
patterns: z
|
|
26
31
|
.object({
|
|
27
32
|
enabled: z.boolean().default(true),
|
|
28
33
|
feedProxy: z.boolean().default(false),
|
|
29
34
|
})
|
|
30
|
-
.
|
|
35
|
+
.prefault({}),
|
|
31
36
|
audit: z
|
|
32
37
|
.object({
|
|
33
38
|
rotation: z.enum(["daily", "weekly", "none"]).default("daily"),
|
|
@@ -37,13 +42,13 @@ export const TrustConfigSchema = z.object({
|
|
|
37
42
|
// legacy fail-open behavior (degraded receipt, money still moves).
|
|
38
43
|
failClosed: z.boolean().default(false),
|
|
39
44
|
})
|
|
40
|
-
.
|
|
45
|
+
.prefault({}),
|
|
41
46
|
tigerbeetle: z
|
|
42
47
|
.object({
|
|
43
48
|
addresses: z.array(z.string()).default(["127.0.0.1:3001"]),
|
|
44
49
|
clusterId: z.number().int().nonnegative().default(0),
|
|
45
50
|
})
|
|
46
|
-
.
|
|
51
|
+
.prefault({}),
|
|
47
52
|
providers: z
|
|
48
53
|
.array(z.object({
|
|
49
54
|
name: z.string(),
|
|
@@ -51,12 +56,51 @@ export const TrustConfigSchema = z.object({
|
|
|
51
56
|
}))
|
|
52
57
|
.default([]),
|
|
53
58
|
pricing: z.enum(["recommended", "custom"]).default("recommended"),
|
|
54
|
-
customRates: z
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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"),
|
|
58
72
|
}))
|
|
59
|
-
.
|
|
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
|
+
.prefault({}),
|
|
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"),
|
|
60
104
|
supplyChain: z
|
|
61
105
|
.object({
|
|
62
106
|
// SC-3: fail-closed by default. A skill with no registered signing key
|
|
@@ -81,7 +125,7 @@ export const TrustConfigSchema = z.object({
|
|
|
81
125
|
.default(["llm_call", "tool_use", "file_read"]),
|
|
82
126
|
requireSignature: z.boolean().default(true),
|
|
83
127
|
})
|
|
84
|
-
.
|
|
128
|
+
.prefault({}),
|
|
85
129
|
vault: z
|
|
86
130
|
.object({
|
|
87
131
|
enabled: z.boolean().default(false),
|
|
@@ -95,34 +139,40 @@ export const TrustConfigSchema = z.object({
|
|
|
95
139
|
.default([]),
|
|
96
140
|
expiresAt: z.string().datetime().nullable().default(null),
|
|
97
141
|
})
|
|
98
|
-
.
|
|
142
|
+
.prefault({}),
|
|
99
143
|
})
|
|
100
|
-
.
|
|
144
|
+
.prefault({}),
|
|
101
145
|
anomaly: z
|
|
102
146
|
.object({
|
|
103
147
|
enabled: z.boolean().default(false),
|
|
104
148
|
tokenRate: z
|
|
105
149
|
.object({
|
|
106
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({}),
|
|
107
155
|
windowMs: z.number().int().positive().default(2_000),
|
|
108
156
|
consecutiveWindows: z.number().int().positive().default(3),
|
|
109
157
|
})
|
|
110
|
-
.
|
|
158
|
+
.prefault({}),
|
|
111
159
|
spendVelocity: z
|
|
112
160
|
.object({
|
|
113
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),
|
|
114
164
|
windowMs: z.number().int().positive().default(10_000),
|
|
115
165
|
})
|
|
116
|
-
.
|
|
166
|
+
.prefault({}),
|
|
117
167
|
injectionCascade: z
|
|
118
168
|
.object({
|
|
119
169
|
eventCount: z.number().int().positive().default(3),
|
|
120
170
|
windowMs: z.number().int().positive().default(60_000),
|
|
121
171
|
})
|
|
122
|
-
.
|
|
172
|
+
.prefault({}),
|
|
123
173
|
cooldownMs: z.number().int().nonnegative().default(30_000),
|
|
124
174
|
})
|
|
125
|
-
.
|
|
175
|
+
.prefault({}),
|
|
126
176
|
});
|
|
127
177
|
export const SkillManifestSchema = z.object({
|
|
128
178
|
version: z.literal(1),
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAoID;;;;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,CA2Ef;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2B9E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright 2026 Usertools, Inc.
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
|
-
import { mkdir,
|
|
4
|
+
import { mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
5
5
|
import { dirname, join, relative, resolve } from "node:path";
|
|
6
6
|
import { withAuditWriterLock } from "../audit/chain.js";
|
|
7
7
|
// ── Constants ──
|
|
@@ -21,6 +21,15 @@ const INCLUDED_PATHS = new Set([
|
|
|
21
21
|
]);
|
|
22
22
|
/** Never captured: advisory lock file living inside audit/. */
|
|
23
23
|
const NEVER_CAPTURE = new Set([".audit-writer.lock"]);
|
|
24
|
+
/**
|
|
25
|
+
* Never captured NOR restored: external-anchoring state (mirror of the
|
|
26
|
+
* append-only anchor store, identity.json with the durable anchorSeq
|
|
27
|
+
* high-water, outbox). This bookkeeping is MONOTONIC by contract — rolling it
|
|
28
|
+
* back with a snapshot would make the emitter re-mint anchorSeqs the store
|
|
29
|
+
* already holds, publishing divergent records at occupied positions:
|
|
30
|
+
* permanent, undeletable fork evidence that condemns an honest vault.
|
|
31
|
+
*/
|
|
32
|
+
const ANCHORS_REL_DIR = "audit/anchors";
|
|
24
33
|
const LOCK_FILE_NAME = ".audit-writer.lock";
|
|
25
34
|
// ── Internals ──
|
|
26
35
|
/**
|
|
@@ -39,6 +48,9 @@ async function collectFiles(basePath, currentPath) {
|
|
|
39
48
|
const fullPath = join(currentPath, entry.name);
|
|
40
49
|
const relPath = relative(basePath, fullPath);
|
|
41
50
|
if (entry.isDirectory()) {
|
|
51
|
+
// Anchoring state is monotonic — never snapshot it (see ANCHORS_REL_DIR).
|
|
52
|
+
if (relPath === ANCHORS_REL_DIR)
|
|
53
|
+
continue;
|
|
42
54
|
const nested = await collectFiles(basePath, fullPath);
|
|
43
55
|
results.push(...nested);
|
|
44
56
|
}
|
|
@@ -167,7 +179,7 @@ export async function restoreSnapshot(vaultPath, name, opts) {
|
|
|
167
179
|
const payload = JSON.parse(raw);
|
|
168
180
|
const entries = Object.entries(payload.entries);
|
|
169
181
|
const rollsBackAudit = entries.some(([p]) => p.startsWith("audit/"));
|
|
170
|
-
const hasLedger = Object.
|
|
182
|
+
const hasLedger = Object.hasOwn(payload.entries, "spend-ledger.json");
|
|
171
183
|
// Desync guard 1: a snapshot that rolls the audit chain back MUST carry the money
|
|
172
184
|
// mirror, or restoring audit alone deletes spend events whose money still exists.
|
|
173
185
|
if (rollsBackAudit && !hasLedger) {
|
|
@@ -195,6 +207,12 @@ export async function restoreSnapshot(vaultPath, name, opts) {
|
|
|
195
207
|
// Never restore an advisory lock captured by an older snapshot.
|
|
196
208
|
if (relPath.split("/").pop() === LOCK_FILE_NAME)
|
|
197
209
|
continue;
|
|
210
|
+
// Never restore anchoring state, even from snapshots captured
|
|
211
|
+
// before this exclusion existed — rolling back the anchorSeq
|
|
212
|
+
// high-water re-mints occupied store positions (permanent fork
|
|
213
|
+
// evidence). The live anchors/ dir stays as-is.
|
|
214
|
+
if (relPath === ANCHORS_REL_DIR || relPath.startsWith(`${ANCHORS_REL_DIR}/`))
|
|
215
|
+
continue;
|
|
198
216
|
const fullPath = join(vaultPath, relPath);
|
|
199
217
|
const resolvedPath = resolve(fullPath);
|
|
200
218
|
if (!resolvedPath.startsWith(`${resolvedVault}/`)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/snapshot/checkpoint.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/snapshot/checkpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/streaming.d.ts
CHANGED
|
@@ -6,9 +6,19 @@
|
|
|
6
6
|
* the yielded data.
|
|
7
7
|
*
|
|
8
8
|
* Provider-specific extraction:
|
|
9
|
-
* - Anthropic: message_start (input_tokens), message_delta (output_tokens)
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
9
|
+
* - Anthropic: message_start (input_tokens), message_delta (output_tokens) —
|
|
10
|
+
* incremental fields on distinct chunk types, accumulated as before.
|
|
11
|
+
* - OpenAI chat.completions: usage field (prompt_tokens, completion_tokens) —
|
|
12
|
+
* REPLACE-WITH-LATEST: every usage-bearing chunk is an absolute snapshot.
|
|
13
|
+
* vLLM's continuous_usage_stats stamps RUNNING totals on every chunk, so
|
|
14
|
+
* summing would multiply-count (M2 design decision 5.2 / plan Task 2).
|
|
15
|
+
* - OpenAI Responses (Task 3, A6/A7): usage arrives ONLY on the terminal
|
|
16
|
+
* `response.completed` event, nested at `event.response.usage.{input_tokens,
|
|
17
|
+
* output_tokens}` — a SEPARATE field map from chat.completions, keyed on the
|
|
18
|
+
* structurally disjoint Responses event shape (no top-level `usage`, no
|
|
19
|
+
* `include_usage` opt-in). A terminal event lacking usage settles at ESTIMATE.
|
|
20
|
+
* - Google: usageMetadata field (promptTokenCount, candidatesTokenCount) —
|
|
21
|
+
* same replace-with-latest snapshot semantics.
|
|
12
22
|
*
|
|
13
23
|
* Usage:
|
|
14
24
|
* ```ts
|
package/dist/streaming.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIrE,MAAM,WAAW,WAAW;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC1D,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B;AA+FD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC3B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,EAClD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,EAC5D,OAAO,CAAC,EAAE,SAAS,GACjB,aAAa,CAAC,CAAC,CAAC,CAElB;AAkFD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,IAAI,EAAE,aAAa,EACnB,cAAc,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,YAAY,CAAC,EACvE,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,EAClE,OAAO,CAAC,EAAE,SAAS,GACjB,cAAc,CAAC,CAAC,CAAC,CA+BnB"}
|
package/dist/streaming.js
CHANGED
|
@@ -1,46 +1,86 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright 2026 Usertools, Inc.
|
|
3
3
|
// ── Token extraction ──
|
|
4
|
-
|
|
4
|
+
/** Anthropic chunks carry incremental fields on distinct chunk types. */
|
|
5
|
+
function extractAnthropicTokens(chunk) {
|
|
5
6
|
if (chunk == null || typeof chunk !== "object") {
|
|
6
7
|
return { inputTokens: 0, outputTokens: 0 };
|
|
7
8
|
}
|
|
8
9
|
const c = chunk;
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return { inputTokens: usage.input_tokens ?? 0, outputTokens: 0 };
|
|
15
|
-
}
|
|
10
|
+
if (c.type === "message_start" && c.message != null && typeof c.message === "object") {
|
|
11
|
+
const msg = c.message;
|
|
12
|
+
if (msg.usage != null && typeof msg.usage === "object") {
|
|
13
|
+
const usage = msg.usage;
|
|
14
|
+
return { inputTokens: usage.input_tokens ?? 0, outputTokens: 0 };
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
16
|
+
}
|
|
17
|
+
if (c.type === "message_delta") {
|
|
18
|
+
if (c.usage != null && typeof c.usage === "object") {
|
|
19
|
+
const usage = c.usage;
|
|
20
|
+
return { inputTokens: 0, outputTokens: usage.output_tokens ?? 0 };
|
|
22
21
|
}
|
|
23
|
-
return { inputTokens: 0, outputTokens: 0 };
|
|
24
22
|
}
|
|
23
|
+
return { inputTokens: 0, outputTokens: 0 };
|
|
24
|
+
}
|
|
25
|
+
/** A7 sanitation: non-finite or negative provider counts are clamped to 0. */
|
|
26
|
+
function sanitizeCount(value) {
|
|
27
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract an ABSOLUTE usage snapshot from an OpenAI/Google chunk, or null when
|
|
31
|
+
* the chunk carries no usage object at all. A present-but-empty usage object IS
|
|
32
|
+
* a snapshot (explicit zeros count as reported usage — A11).
|
|
33
|
+
*/
|
|
34
|
+
function extractUsageSnapshot(chunk, kind) {
|
|
35
|
+
if (chunk == null || typeof chunk !== "object")
|
|
36
|
+
return null;
|
|
37
|
+
const c = chunk;
|
|
25
38
|
if (kind === "openai") {
|
|
39
|
+
// Task 3 (A6/A7): OpenAI Responses API. Usage rides on the TERMINAL event,
|
|
40
|
+
// nested as `event.response.usage.{input_tokens,output_tokens}`. All three
|
|
41
|
+
// terminal types carry it: `response.completed`, and — equally terminal —
|
|
42
|
+
// `response.incomplete` (max_output_tokens / content filter) and
|
|
43
|
+
// `response.failed`. This shape is structurally disjoint from a chat.completions
|
|
44
|
+
// chunk (which carries a TOP-LEVEL `usage` with prompt_tokens/completion_tokens
|
|
45
|
+
// and never a `response.*` type), so the two field maps stay separate and never
|
|
46
|
+
// collide. A terminal event WITHOUT usage (an early failure, or a local runtime
|
|
47
|
+
// that omits it) yields null → settles at ESTIMATE (A7), never a false zero-cost
|
|
48
|
+
// snapshot.
|
|
49
|
+
if (c.type === "response.completed" ||
|
|
50
|
+
c.type === "response.incomplete" ||
|
|
51
|
+
c.type === "response.failed") {
|
|
52
|
+
const resp = c.response;
|
|
53
|
+
if (resp != null && typeof resp === "object") {
|
|
54
|
+
const usage = resp.usage;
|
|
55
|
+
if (usage != null && typeof usage === "object") {
|
|
56
|
+
const u = usage;
|
|
57
|
+
return {
|
|
58
|
+
inputTokens: sanitizeCount(u.input_tokens),
|
|
59
|
+
outputTokens: sanitizeCount(u.output_tokens),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
// chat.completions absolute snapshot (prompt_tokens/completion_tokens).
|
|
26
66
|
if (c.usage != null && typeof c.usage === "object") {
|
|
27
67
|
const usage = c.usage;
|
|
28
68
|
return {
|
|
29
|
-
inputTokens: usage.prompt_tokens
|
|
30
|
-
outputTokens: usage.completion_tokens
|
|
69
|
+
inputTokens: sanitizeCount(usage.prompt_tokens),
|
|
70
|
+
outputTokens: sanitizeCount(usage.completion_tokens),
|
|
31
71
|
};
|
|
32
72
|
}
|
|
33
|
-
return
|
|
73
|
+
return null;
|
|
34
74
|
}
|
|
35
75
|
// google
|
|
36
76
|
if (c.usageMetadata != null && typeof c.usageMetadata === "object") {
|
|
37
77
|
const meta = c.usageMetadata;
|
|
38
78
|
return {
|
|
39
|
-
inputTokens: meta.promptTokenCount
|
|
40
|
-
outputTokens: meta.candidatesTokenCount
|
|
79
|
+
inputTokens: sanitizeCount(meta.promptTokenCount),
|
|
80
|
+
outputTokens: sanitizeCount(meta.candidatesTokenCount),
|
|
41
81
|
};
|
|
42
82
|
}
|
|
43
|
-
return
|
|
83
|
+
return null;
|
|
44
84
|
}
|
|
45
85
|
/**
|
|
46
86
|
* Wraps a provider stream with token counting.
|
|
@@ -64,19 +104,37 @@ async function* wrapStreamImpl(stream, kind, onComplete, onError, onChunk) {
|
|
|
64
104
|
let errored = false;
|
|
65
105
|
try {
|
|
66
106
|
for await (const chunk of stream) {
|
|
67
|
-
const tokens = extractTokensFromChunk(chunk, kind);
|
|
68
107
|
let deltaInput = 0;
|
|
69
108
|
let deltaOutput = 0;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
109
|
+
if (kind === "openai" || kind === "google") {
|
|
110
|
+
// M2 REPLACE-WITH-LATEST (design decision 5.2 / plan Task 2): each
|
|
111
|
+
// usage-bearing chunk is an absolute snapshot, assigned wholesale.
|
|
112
|
+
// Fixes double-counting under vLLM continuous_usage_stats (running
|
|
113
|
+
// totals on every chunk); a decreasing final total takes the last
|
|
114
|
+
// chunk's values (A7); explicit zeros count as reported usage (A11).
|
|
115
|
+
const snapshot = extractUsageSnapshot(chunk, kind);
|
|
116
|
+
if (snapshot != null) {
|
|
117
|
+
deltaInput = Math.max(0, snapshot.inputTokens - inputTokens);
|
|
118
|
+
deltaOutput = Math.max(0, snapshot.outputTokens - outputTokens);
|
|
119
|
+
inputTokens = snapshot.inputTokens;
|
|
120
|
+
outputTokens = snapshot.outputTokens;
|
|
121
|
+
usageReported = true;
|
|
122
|
+
}
|
|
75
123
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
124
|
+
else {
|
|
125
|
+
// Anthropic: message_start carries input, message_delta carries output —
|
|
126
|
+
// genuinely incremental chunk types; keep the latest non-zero value.
|
|
127
|
+
const tokens = extractAnthropicTokens(chunk);
|
|
128
|
+
if (tokens.inputTokens > 0) {
|
|
129
|
+
deltaInput = Math.max(0, tokens.inputTokens - inputTokens);
|
|
130
|
+
inputTokens = tokens.inputTokens;
|
|
131
|
+
usageReported = true;
|
|
132
|
+
}
|
|
133
|
+
if (tokens.outputTokens > 0) {
|
|
134
|
+
deltaOutput = Math.max(0, tokens.outputTokens - outputTokens);
|
|
135
|
+
outputTokens = tokens.outputTokens;
|
|
136
|
+
usageReported = true;
|
|
137
|
+
}
|
|
80
138
|
}
|
|
81
139
|
// Run hook BEFORE yielding so a throw aborts before the consumer sees it.
|
|
82
140
|
if (onChunk != null) {
|
package/dist/streaming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAoDjC,yBAAyB;AAEzB,yEAAyE;AACzE,SAAS,sBAAsB,CAAC,KAAc;IAC7C,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtF,MAAM,GAAG,GAAG,CAAC,CAAC,OAAkC,CAAC;QACjD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,GAAG,CAAC,KAA+B,CAAC;YAClD,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAClE,CAAC;IACF,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,CAAC,CAAC,KAA+B,CAAC;YAChD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC;IACF,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,SAAS,aAAa,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAc,EAAE,IAAyB;IACtE,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAE3C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvB,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,iEAAiE;QACjE,iFAAiF;QACjF,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,iFAAiF;QACjF,YAAY;QACZ,IACC,CAAC,CAAC,IAAI,KAAK,oBAAoB;YAC/B,CAAC,CAAC,IAAI,KAAK,qBAAqB;YAChC,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAC3B,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC;YACxB,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAI,IAAgC,CAAC,KAAK,CAAC;gBACtD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChD,MAAM,CAAC,GAAG,KAAgC,CAAC;oBAC3C,OAAO;wBACN,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;wBAC1C,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;qBAC5C,CAAC;gBACH,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,wEAAwE;QACxE,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAgC,CAAC;YACjD,OAAO;gBACN,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC/C,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACpD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS;IACT,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,CAAC,CAAC,aAAwC,CAAC;QACxD,OAAO;YACN,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACjD,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC;SACtD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAsBD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACzB,MAAwB,EACxB,IAAmB,EACnB,UAAkD,EAClD,OAA4D,EAC5D,OAAmB;IAEnB,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,cAAc,CAC7B,MAAwB,EACxB,IAAmB,EACnB,UAAkD,EAClD,OAA4D,EAC5D,OAAmB;IAEnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,6EAA6E;IAC7E,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC;QACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAClC,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5C,mEAAmE;gBACnE,mEAAmE;gBACnE,mEAAmE;gBACnE,kEAAkE;gBAClE,qEAAqE;gBACrE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACtB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;oBAC7D,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC;oBAChE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;oBACnC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACrC,aAAa,GAAG,IAAI,CAAC;gBACtB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,yEAAyE;gBACzE,qEAAqE;gBACrE,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;oBAC5B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;oBAC3D,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;oBACjC,aAAa,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;oBAC7B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC;oBAC9D,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;oBACnC,aAAa,GAAG,IAAI,CAAC;gBACtB,CAAC;YACF,CAAC;YAED,0EAA0E;YAC1E,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC;oBACP,KAAK;oBACL,WAAW,EAAE,UAAU,GAAG,WAAW;oBACrC,qBAAqB,EAAE,WAAW;oBAClC,sBAAsB,EAAE,YAAY;iBACpC,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC;YACZ,eAAe,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,MAAM,GAAG,CAAC;IACX,CAAC;YAAS,CAAC;QACV,sEAAsE;QACtE,8EAA8E;QAC9E,8EAA8E;QAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;QACtF,CAAC;IACF,CAAC;AACF,CAAC;AAED,+BAA+B;AAE/B;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CACnC,MAAwB,EACxB,IAAmB,EACnB,cAAuE,EACvE,aAAkE,EAClE,OAAmB;IAEnB,IAAI,cAAgD,CAAC;IACrD,IAAI,aAAwC,CAAC;IAE7C,MAAM,cAAc,GAAG,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpE,cAAc,GAAG,OAAO,CAAC;QACzB,aAAa,GAAG,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,UAAU,CACzB,MAAM,EACN,IAAI,EACJ,CAAC,UAAU,EAAE,EAAE;QACd,cAAc,CAAC,UAAU,CAAC;aACxB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,cAAc,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACvB,aAAa,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,aAAa,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EACD,OAAO,CACP,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC7B,OAAO,EAAE,cAAc;KACvB,CAAsB,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/supply-chain/sign.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,wBAAgB,eAAe,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAU3E;AAuBD;;GAEG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,EACrE,aAAa,EAAE,MAAM,GACnB,aAAa,
|
|
1
|
+
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../src/supply-chain/sign.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,wBAAgB,eAAe,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAU3E;AAuBD;;GAEG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,EACrE,aAAa,EAAE,MAAM,GACnB,aAAa,CAkCf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAqCvF"}
|
|
@@ -48,6 +48,9 @@ export function signManifest(manifest, privateKeyHex) {
|
|
|
48
48
|
format: "der",
|
|
49
49
|
type: "pkcs8",
|
|
50
50
|
});
|
|
51
|
+
// Node derives the public key from a private KeyObject at runtime (documented
|
|
52
|
+
// behavior of createPublicKey). @types/node 26 dropped KeyObject from the input
|
|
53
|
+
// union, so this is a types-only assertion — the runtime call is unchanged.
|
|
51
54
|
const pubKeyObj = createPublicKey(privKeyObj);
|
|
52
55
|
const pubKeyDerActual = pubKeyObj.export({ type: "spki", format: "der" });
|
|
53
56
|
const publicKeyHex = pubKeyDerActual.subarray(12).toString("hex");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/supply-chain/sign.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,UAAU,eAAe;IAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,SAAS,EAAE;QAChE,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAClD,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;KACpD,CAAC,CAAC;IACH,iEAAiE;IACjE,MAAM,SAAS,GAAI,SAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,uDAAuD;IACvD,MAAM,UAAU,GAAI,UAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC7B,QAAqE,EACrE,QAAgB,EAChB,SAAiB;IAEjB,MAAM,QAAQ,GAAG;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,QAAQ;QACR,SAAS;KACT,CAAC;IACF,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC3B,QAAqE,EACrE,aAAqB;IAErB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG;QAClB,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,KAAc;QACtB,IAAI,EAAE,OAAgB;KACtB,CAAC;IAEF,yCAAyC;IACzC,MAAM,UAAU,GAAG,gBAAgB,CAAC;QACnC,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;KACb,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../src/supply-chain/sign.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "usertrust",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Financial governance for AI agents. Every LLM call becomes an immutable, auditable transaction.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Usertools, Inc. <hello@usertools.ai> (https://usertrust.ai)",
|
|
@@ -49,15 +49,17 @@
|
|
|
49
49
|
"@clack/prompts": "^1.1.0",
|
|
50
50
|
"minimatch": "^10.2.4",
|
|
51
51
|
"picocolors": "^1.1.1",
|
|
52
|
-
"tigerbeetle-node": "^0.
|
|
52
|
+
"tigerbeetle-node": "^0.17.9",
|
|
53
53
|
"yaml": "^2.8.3",
|
|
54
|
-
"zod": "^
|
|
54
|
+
"zod": "^4.4.3"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "tsc",
|
|
58
58
|
"prepublishOnly": "tsc"
|
|
59
59
|
},
|
|
60
|
-
"files": [
|
|
60
|
+
"files": [
|
|
61
|
+
"dist"
|
|
62
|
+
],
|
|
61
63
|
"peerDependencies": {
|
|
62
64
|
"@anthropic-ai/sdk": ">=0.30.0",
|
|
63
65
|
"openai": ">=4.70.0"
|