usertrust 0.2.6 → 1.1.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/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +231 -37
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +18 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/pricing.d.ts +5 -0
- package/dist/cli/pricing.d.ts.map +1 -0
- package/dist/cli/pricing.js +61 -0
- package/dist/cli/pricing.js.map +1 -0
- package/dist/cli/validate-key.d.ts +17 -0
- package/dist/cli/validate-key.d.ts.map +1 -0
- package/dist/cli/validate-key.js +58 -0
- package/dist/cli/validate-key.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/govern.d.ts +3 -1
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +495 -39
- package/dist/govern.js.map +1 -1
- package/dist/headless.d.ts +77 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +566 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/ledger/pricing.d.ts +6 -2
- package/dist/ledger/pricing.d.ts.map +1 -1
- package/dist/ledger/pricing.js +31 -3
- package/dist/ledger/pricing.js.map +1 -1
- package/dist/policy/canary.d.ts +17 -0
- package/dist/policy/canary.d.ts.map +1 -0
- package/dist/policy/canary.js +44 -0
- package/dist/policy/canary.js.map +1 -0
- package/dist/policy/injection.d.ts +24 -0
- package/dist/policy/injection.d.ts.map +1 -0
- package/dist/policy/injection.js +178 -0
- package/dist/policy/injection.js.map +1 -0
- package/dist/policy/pii.d.ts +13 -1
- package/dist/policy/pii.d.ts.map +1 -1
- package/dist/policy/pii.js +88 -0
- package/dist/policy/pii.js.map +1 -1
- package/dist/shared/errors.d.ts +20 -0
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +46 -0
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/types.d.ts +268 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +67 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/streaming.d.ts +7 -2
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +15 -8
- package/dist/streaming.js.map +1 -1
- package/dist/supply-chain/manifest.d.ts +22 -0
- package/dist/supply-chain/manifest.d.ts.map +1 -0
- package/dist/supply-chain/manifest.js +46 -0
- package/dist/supply-chain/manifest.js.map +1 -0
- package/dist/supply-chain/permissions.d.ts +12 -0
- package/dist/supply-chain/permissions.d.ts.map +1 -0
- package/dist/supply-chain/permissions.js +89 -0
- package/dist/supply-chain/permissions.js.map +1 -0
- package/dist/supply-chain/sign.d.ts +17 -0
- package/dist/supply-chain/sign.d.ts.map +1 -0
- package/dist/supply-chain/sign.js +95 -0
- package/dist/supply-chain/sign.js.map +1 -0
- package/dist/vault/derive.d.ts +13 -0
- package/dist/vault/derive.d.ts.map +1 -0
- package/dist/vault/derive.js +32 -0
- package/dist/vault/derive.js.map +1 -0
- package/dist/vault/scope.d.ts +20 -0
- package/dist/vault/scope.d.ts.map +1 -0
- package/dist/vault/scope.js +35 -0
- package/dist/vault/scope.js.map +1 -0
- package/dist/vault/store.d.ts +31 -0
- package/dist/vault/store.d.ts.map +1 -0
- package/dist/vault/store.js +204 -0
- package/dist/vault/store.js.map +1 -0
- package/package.json +15 -4
package/dist/headless.js
ADDED
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2026 Usertools, Inc.
|
|
3
|
+
/**
|
|
4
|
+
* headless.ts — Headless Governance API
|
|
5
|
+
*
|
|
6
|
+
* A two-phase lifecycle API (authorize → settle/abort) for governing
|
|
7
|
+
* LLM calls WITHOUT requiring a provider SDK client instance.
|
|
8
|
+
*
|
|
9
|
+
* This is the integration surface for non-SDK environments like OpenClaw
|
|
10
|
+
* (which uses pi-ai streaming) or any system that makes raw LLM calls.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { createGovernor } from "usertrust/headless";
|
|
15
|
+
*
|
|
16
|
+
* const governor = await createGovernor({ dryRun: true, budget: 100_000 });
|
|
17
|
+
*
|
|
18
|
+
* const auth = await governor.authorize({
|
|
19
|
+
* model: "claude-sonnet-4-6",
|
|
20
|
+
* estimatedInputTokens: 500,
|
|
21
|
+
* maxOutputTokens: 4096,
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* try {
|
|
25
|
+
* // ... make the LLM call, accumulate usage ...
|
|
26
|
+
* const receipt = await governor.settle(auth, {
|
|
27
|
+
* inputTokens: actualInput,
|
|
28
|
+
* outputTokens: actualOutput,
|
|
29
|
+
* });
|
|
30
|
+
* } catch (err) {
|
|
31
|
+
* await governor.abort(auth, err);
|
|
32
|
+
* throw err;
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* await governor.destroy();
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import { createHash } from "node:crypto";
|
|
39
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
40
|
+
import { readFile, rename, writeFile } from "node:fs/promises";
|
|
41
|
+
import { join } from "node:path";
|
|
42
|
+
import { createAuditWriter } from "./audit/chain.js";
|
|
43
|
+
import { writeReceipt } from "./audit/rotation.js";
|
|
44
|
+
import { TrustTBClient, XFER_SPEND } from "./ledger/client.js";
|
|
45
|
+
import { estimateCost, estimateInputTokens } from "./ledger/pricing.js";
|
|
46
|
+
import { recordPattern } from "./memory/patterns.js";
|
|
47
|
+
import { evaluatePolicy, loadPolicies } from "./policy/gate.js";
|
|
48
|
+
import { detectPII } from "./policy/pii.js";
|
|
49
|
+
import { connectProxy } from "./proxy.js";
|
|
50
|
+
import { CircuitBreakerRegistry } from "./resilience/circuit.js";
|
|
51
|
+
import { DEFAULT_BUDGET, VAULT_DIR } from "./shared/constants.js";
|
|
52
|
+
import { LedgerUnavailableError, PolicyDeniedError } from "./shared/errors.js";
|
|
53
|
+
import { trustId } from "./shared/ids.js";
|
|
54
|
+
import { TrustConfigSchema } from "./shared/types.js";
|
|
55
|
+
// ── Verify URL base ──
|
|
56
|
+
const VERIFY_URL_BASE = "https://verify.usertrust.dev";
|
|
57
|
+
// ── Async mutex (same as govern.ts AUD-453) ──
|
|
58
|
+
class AsyncMutex {
|
|
59
|
+
queue = Promise.resolve();
|
|
60
|
+
async acquire() {
|
|
61
|
+
let release;
|
|
62
|
+
const next = new Promise((resolve) => {
|
|
63
|
+
release = resolve;
|
|
64
|
+
});
|
|
65
|
+
const prev = this.queue;
|
|
66
|
+
this.queue = next;
|
|
67
|
+
await prev;
|
|
68
|
+
return release;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function loadSpendLedger(vaultBase) {
|
|
72
|
+
const ledgerPath = join(vaultBase, VAULT_DIR, "spend-ledger.json");
|
|
73
|
+
try {
|
|
74
|
+
const raw = await readFile(ledgerPath, "utf-8");
|
|
75
|
+
const parsed = JSON.parse(raw);
|
|
76
|
+
if (parsed != null &&
|
|
77
|
+
typeof parsed === "object" &&
|
|
78
|
+
"budgetSpent" in parsed &&
|
|
79
|
+
typeof parsed.budgetSpent === "number") {
|
|
80
|
+
const value = parsed.budgetSpent;
|
|
81
|
+
if (Number.isFinite(value) && value >= 0) {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// No ledger file or corrupt — start from zero
|
|
88
|
+
}
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
async function persistSpendLedger(vaultBase, budgetSpent) {
|
|
92
|
+
const dir = join(vaultBase, VAULT_DIR);
|
|
93
|
+
const ledgerPath = join(dir, "spend-ledger.json");
|
|
94
|
+
const tmpPath = join(dir, "spend-ledger.json.tmp");
|
|
95
|
+
const data = {
|
|
96
|
+
budgetSpent,
|
|
97
|
+
updatedAt: new Date().toISOString(),
|
|
98
|
+
};
|
|
99
|
+
try {
|
|
100
|
+
if (!existsSync(dir)) {
|
|
101
|
+
mkdirSync(dir, { recursive: true });
|
|
102
|
+
}
|
|
103
|
+
await writeFile(tmpPath, JSON.stringify(data), "utf-8");
|
|
104
|
+
await rename(tmpPath, ledgerPath);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Best-effort — do not fail the LLM call over ledger persistence
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ── TigerBeetle engine factory (same as govern.ts) ──
|
|
111
|
+
async function createTBEngine(config) {
|
|
112
|
+
const tbAddresses = config.tigerbeetle.addresses;
|
|
113
|
+
const tbClusterId = BigInt(config.tigerbeetle.clusterId);
|
|
114
|
+
const tbClient = new TrustTBClient({
|
|
115
|
+
addresses: tbAddresses,
|
|
116
|
+
clusterId: tbClusterId,
|
|
117
|
+
});
|
|
118
|
+
await tbClient.createTreasury();
|
|
119
|
+
await tbClient.ensureEscrowAccount("trust:escrow");
|
|
120
|
+
const pendingMap = new Map();
|
|
121
|
+
return {
|
|
122
|
+
async spendPending(params) {
|
|
123
|
+
const treasury = tbClient.getTreasuryId();
|
|
124
|
+
const escrowId = TrustTBClient.deriveAccountId("trust:escrow");
|
|
125
|
+
const tbTransferId = await tbClient.createPendingTransfer({
|
|
126
|
+
debitAccountId: escrowId,
|
|
127
|
+
creditAccountId: treasury,
|
|
128
|
+
amount: params.amount,
|
|
129
|
+
code: XFER_SPEND,
|
|
130
|
+
});
|
|
131
|
+
pendingMap.set(params.transferId, tbTransferId);
|
|
132
|
+
return { transferId: params.transferId };
|
|
133
|
+
},
|
|
134
|
+
async postPendingSpend(transferId) {
|
|
135
|
+
const tbId = pendingMap.get(transferId);
|
|
136
|
+
if (tbId === undefined) {
|
|
137
|
+
throw new Error(`No pending transfer found for ${transferId}`);
|
|
138
|
+
}
|
|
139
|
+
await tbClient.postTransfer(tbId);
|
|
140
|
+
pendingMap.delete(transferId);
|
|
141
|
+
},
|
|
142
|
+
async voidPendingSpend(transferId) {
|
|
143
|
+
const tbId = pendingMap.get(transferId);
|
|
144
|
+
if (tbId === undefined) {
|
|
145
|
+
throw new Error(`No pending transfer found for ${transferId}`);
|
|
146
|
+
}
|
|
147
|
+
await tbClient.voidTransfer(tbId);
|
|
148
|
+
pendingMap.delete(transferId);
|
|
149
|
+
},
|
|
150
|
+
async voidAllPending() {
|
|
151
|
+
const entries = [...pendingMap.entries()];
|
|
152
|
+
for (const [trustIdKey, tbTransferId] of entries) {
|
|
153
|
+
try {
|
|
154
|
+
await tbClient.voidTransfer(tbTransferId);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Best-effort
|
|
158
|
+
}
|
|
159
|
+
pendingMap.delete(trustIdKey);
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
destroy() {
|
|
163
|
+
tbClient.destroy();
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// ── createGovernor() ──
|
|
168
|
+
/**
|
|
169
|
+
* Create a headless governance engine for non-SDK integrations.
|
|
170
|
+
*
|
|
171
|
+
* Unlike `trust()` which wraps a provider SDK client, `createGovernor()`
|
|
172
|
+
* returns a standalone engine with an explicit authorize/settle/abort
|
|
173
|
+
* lifecycle. This is designed for systems like OpenClaw that make raw
|
|
174
|
+
* LLM calls via streaming libraries (pi-ai) rather than SDK clients.
|
|
175
|
+
*/
|
|
176
|
+
export async function createGovernor(opts) {
|
|
177
|
+
// 1. Load config
|
|
178
|
+
const vaultBase = opts?.vaultBase ?? process.cwd();
|
|
179
|
+
const configPath = opts?.configPath ?? join(vaultBase, VAULT_DIR, "usertrust.config.json");
|
|
180
|
+
let config;
|
|
181
|
+
if (existsSync(configPath)) {
|
|
182
|
+
const raw = JSON.parse(await readFile(configPath, "utf-8"));
|
|
183
|
+
config = TrustConfigSchema.parse({
|
|
184
|
+
...raw,
|
|
185
|
+
...(opts?.budget !== undefined ? { budget: opts.budget } : {}),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
config = TrustConfigSchema.parse({
|
|
190
|
+
budget: opts?.budget ?? DEFAULT_BUDGET,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const customRates = config.pricing === "custom" ? config.customRates : undefined;
|
|
194
|
+
const isDryRun = opts?.dryRun ?? process.env.USERTRUST_DRY_RUN === "true";
|
|
195
|
+
const isTestEnv = process.env.USERTRUST_TEST === "1" || process.env.NODE_ENV === "test";
|
|
196
|
+
// 2. Initialize subsystems
|
|
197
|
+
const vaultPath = vaultBase;
|
|
198
|
+
const audit = (isTestEnv ? opts?._audit : undefined) ?? createAuditWriter(vaultPath);
|
|
199
|
+
const policiesPath = join(vaultPath, VAULT_DIR, config.policies);
|
|
200
|
+
const policyRules = existsSync(policiesPath) ? loadPolicies(policiesPath) : [];
|
|
201
|
+
const breaker = new CircuitBreakerRegistry({
|
|
202
|
+
failureThreshold: config.circuitBreaker.failureThreshold,
|
|
203
|
+
resetTimeoutMs: config.circuitBreaker.resetTimeout,
|
|
204
|
+
});
|
|
205
|
+
// 3. Proxy connection
|
|
206
|
+
let proxyConn = null;
|
|
207
|
+
if (opts?.proxy) {
|
|
208
|
+
proxyConn = connectProxy(opts.proxy, opts.key);
|
|
209
|
+
}
|
|
210
|
+
// 4. Engine
|
|
211
|
+
let engine;
|
|
212
|
+
if (isTestEnv && opts?._engine !== undefined) {
|
|
213
|
+
engine = opts._engine;
|
|
214
|
+
}
|
|
215
|
+
else if (!isDryRun && proxyConn == null) {
|
|
216
|
+
try {
|
|
217
|
+
engine = await createTBEngine(config);
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
throw new LedgerUnavailableError(err instanceof Error ? err.message : String(err));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
engine = null;
|
|
225
|
+
}
|
|
226
|
+
// 5. State
|
|
227
|
+
let destroyed = false;
|
|
228
|
+
let budgetSpent = await loadSpendLedger(vaultBase);
|
|
229
|
+
const budgetMutex = new AsyncMutex();
|
|
230
|
+
let inFlightHoldTotal = 0;
|
|
231
|
+
const activeAuths = new Map();
|
|
232
|
+
// 6. Governor implementation
|
|
233
|
+
const governor = {
|
|
234
|
+
config,
|
|
235
|
+
async authorize(params) {
|
|
236
|
+
if (destroyed) {
|
|
237
|
+
throw new Error("Governor has been destroyed");
|
|
238
|
+
}
|
|
239
|
+
const model = params.model;
|
|
240
|
+
const actor = params.actor ?? "local";
|
|
241
|
+
const messages = params.messages ?? [];
|
|
242
|
+
// Circuit breaker — key on "headless" since we don't have a client kind
|
|
243
|
+
const cb = breaker.get("headless");
|
|
244
|
+
cb.allowRequest();
|
|
245
|
+
// Estimate cost
|
|
246
|
+
const transferId = trustId("tx");
|
|
247
|
+
const estInputTokens = params.estimatedInputTokens ?? estimateInputTokens(messages);
|
|
248
|
+
const maxOutputTokens = params.maxOutputTokens ?? 4096;
|
|
249
|
+
const estCost = estimateCost(model, estInputTokens, maxOutputTokens, customRates);
|
|
250
|
+
// Acquire mutex for budget atomicity (AUD-453)
|
|
251
|
+
const releaseBudgetLock = await budgetMutex.acquire();
|
|
252
|
+
let proxyTransferId;
|
|
253
|
+
try {
|
|
254
|
+
// Policy gate — caller params spread FIRST so governance
|
|
255
|
+
// fields cannot be shadowed (prevents budget_remaining injection).
|
|
256
|
+
const policyResult = evaluatePolicy(policyRules, {
|
|
257
|
+
...(params.params ?? {}),
|
|
258
|
+
model,
|
|
259
|
+
tier: config.tier,
|
|
260
|
+
estimated_cost: estCost,
|
|
261
|
+
budget_remaining: config.budget - budgetSpent - inFlightHoldTotal,
|
|
262
|
+
});
|
|
263
|
+
if (policyResult.decision === "deny") {
|
|
264
|
+
const reason = policyResult.reasons.length > 0 ? policyResult.reasons.join("; ") : "Policy denied";
|
|
265
|
+
throw new PolicyDeniedError(reason);
|
|
266
|
+
}
|
|
267
|
+
// PII check
|
|
268
|
+
if (config.pii !== "off" && messages.length > 0) {
|
|
269
|
+
const piiResult = detectPII(messages);
|
|
270
|
+
if (piiResult.found && config.pii === "block") {
|
|
271
|
+
throw new PolicyDeniedError(`PII detected: ${piiResult.types.join(", ")}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// PENDING hold
|
|
275
|
+
if (proxyConn != null && !isDryRun) {
|
|
276
|
+
try {
|
|
277
|
+
const proxyResult = await proxyConn.spend({
|
|
278
|
+
model,
|
|
279
|
+
estimatedCost: estCost,
|
|
280
|
+
actor,
|
|
281
|
+
});
|
|
282
|
+
proxyTransferId = proxyResult.transferId;
|
|
283
|
+
}
|
|
284
|
+
catch (holdErr) {
|
|
285
|
+
throw new LedgerUnavailableError(holdErr instanceof Error ? holdErr.message : String(holdErr));
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (engine != null && !isDryRun) {
|
|
289
|
+
try {
|
|
290
|
+
await engine.spendPending({ transferId, amount: estCost });
|
|
291
|
+
}
|
|
292
|
+
catch (holdErr) {
|
|
293
|
+
throw new LedgerUnavailableError(holdErr instanceof Error ? holdErr.message : String(holdErr));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
inFlightHoldTotal += estCost;
|
|
297
|
+
}
|
|
298
|
+
finally {
|
|
299
|
+
releaseBudgetLock();
|
|
300
|
+
}
|
|
301
|
+
const auth = {
|
|
302
|
+
transferId,
|
|
303
|
+
estimatedCost: estCost,
|
|
304
|
+
model,
|
|
305
|
+
proxyTransferId,
|
|
306
|
+
createdAt: Date.now(),
|
|
307
|
+
};
|
|
308
|
+
activeAuths.set(transferId, auth);
|
|
309
|
+
return auth;
|
|
310
|
+
},
|
|
311
|
+
async settle(auth, params) {
|
|
312
|
+
if (!activeAuths.has(auth.transferId)) {
|
|
313
|
+
throw new Error(`Authorization ${auth.transferId} is not active (already settled or aborted)`);
|
|
314
|
+
}
|
|
315
|
+
activeAuths.delete(auth.transferId);
|
|
316
|
+
const model = auth.model;
|
|
317
|
+
let callAuditDegraded = false;
|
|
318
|
+
// Determine actual cost
|
|
319
|
+
let actualCost;
|
|
320
|
+
let usageSource;
|
|
321
|
+
if (params?.inputTokens != null || params?.outputTokens != null) {
|
|
322
|
+
actualCost = estimateCost(model, params.inputTokens ?? 0, params.outputTokens ?? 0, customRates);
|
|
323
|
+
usageSource = params.usageSource ?? "provider";
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
actualCost = auth.estimatedCost;
|
|
327
|
+
usageSource = "estimated";
|
|
328
|
+
}
|
|
329
|
+
// AUD-453: Acquire mutex for budget atomicity — prevents concurrent
|
|
330
|
+
// settle() calls from corrupting inFlightHoldTotal or budgetSpent.
|
|
331
|
+
const releaseLock = await budgetMutex.acquire();
|
|
332
|
+
try {
|
|
333
|
+
inFlightHoldTotal -= auth.estimatedCost;
|
|
334
|
+
budgetSpent += actualCost;
|
|
335
|
+
}
|
|
336
|
+
finally {
|
|
337
|
+
releaseLock();
|
|
338
|
+
}
|
|
339
|
+
await persistSpendLedger(vaultBase, budgetSpent);
|
|
340
|
+
// Circuit breaker: success
|
|
341
|
+
const cb = breaker.get("headless");
|
|
342
|
+
cb.recordSuccess();
|
|
343
|
+
// POST settlement
|
|
344
|
+
let settled = true;
|
|
345
|
+
if (proxyConn != null && !isDryRun) {
|
|
346
|
+
try {
|
|
347
|
+
await proxyConn.settle(auth.proxyTransferId ?? auth.transferId, actualCost);
|
|
348
|
+
}
|
|
349
|
+
catch (postErr) {
|
|
350
|
+
settled = false;
|
|
351
|
+
await audit
|
|
352
|
+
.appendEvent({
|
|
353
|
+
kind: "settlement_ambiguous",
|
|
354
|
+
actor: "local",
|
|
355
|
+
data: {
|
|
356
|
+
model,
|
|
357
|
+
cost: actualCost,
|
|
358
|
+
transferId: auth.transferId,
|
|
359
|
+
error: postErr instanceof Error
|
|
360
|
+
? postErr.message.slice(0, 200)
|
|
361
|
+
: String(postErr).slice(0, 200),
|
|
362
|
+
},
|
|
363
|
+
})
|
|
364
|
+
.catch(() => {
|
|
365
|
+
callAuditDegraded = true;
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
else if (engine != null && !isDryRun) {
|
|
370
|
+
try {
|
|
371
|
+
await engine.postPendingSpend(auth.transferId);
|
|
372
|
+
}
|
|
373
|
+
catch (postErr) {
|
|
374
|
+
settled = false;
|
|
375
|
+
await audit
|
|
376
|
+
.appendEvent({
|
|
377
|
+
kind: "settlement_ambiguous",
|
|
378
|
+
actor: "local",
|
|
379
|
+
data: {
|
|
380
|
+
model,
|
|
381
|
+
cost: actualCost,
|
|
382
|
+
transferId: auth.transferId,
|
|
383
|
+
error: postErr instanceof Error
|
|
384
|
+
? postErr.message.slice(0, 200)
|
|
385
|
+
: String(postErr).slice(0, 200),
|
|
386
|
+
},
|
|
387
|
+
})
|
|
388
|
+
.catch(() => {
|
|
389
|
+
callAuditDegraded = true;
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
// Audit event
|
|
394
|
+
const syntheticHash = createHash("sha256").update(auth.transferId).digest("hex");
|
|
395
|
+
let auditHash = syntheticHash;
|
|
396
|
+
try {
|
|
397
|
+
const auditEvent = await audit.appendEvent({
|
|
398
|
+
kind: "llm_call",
|
|
399
|
+
actor: "local",
|
|
400
|
+
data: {
|
|
401
|
+
model,
|
|
402
|
+
cost: actualCost,
|
|
403
|
+
settled,
|
|
404
|
+
transferId: auth.transferId,
|
|
405
|
+
usageSource,
|
|
406
|
+
...(params?.chunksDelivered != null ? { chunksDelivered: params.chunksDelivered } : {}),
|
|
407
|
+
source: "headless",
|
|
408
|
+
},
|
|
409
|
+
});
|
|
410
|
+
auditHash = auditEvent.hash;
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
callAuditDegraded = true;
|
|
414
|
+
}
|
|
415
|
+
// Daily-rotated receipt
|
|
416
|
+
if (config.audit.rotation !== "none") {
|
|
417
|
+
writeReceipt(vaultPath, {
|
|
418
|
+
kind: "llm_call",
|
|
419
|
+
subsystem: "headless",
|
|
420
|
+
actor: "local",
|
|
421
|
+
data: {
|
|
422
|
+
model,
|
|
423
|
+
cost: actualCost,
|
|
424
|
+
settled,
|
|
425
|
+
transferId: auth.transferId,
|
|
426
|
+
},
|
|
427
|
+
}, config.audit.indexLimit);
|
|
428
|
+
}
|
|
429
|
+
// Pattern memory
|
|
430
|
+
if (config.patterns.enabled) {
|
|
431
|
+
const promptHash = createHash("sha256").update(auth.transferId).digest("hex");
|
|
432
|
+
await recordPattern({
|
|
433
|
+
promptHash,
|
|
434
|
+
model,
|
|
435
|
+
cost: actualCost,
|
|
436
|
+
success: true,
|
|
437
|
+
}).catch(() => { });
|
|
438
|
+
}
|
|
439
|
+
const receipt = {
|
|
440
|
+
transferId: auth.transferId,
|
|
441
|
+
cost: actualCost,
|
|
442
|
+
budgetRemaining: config.budget - budgetSpent - inFlightHoldTotal,
|
|
443
|
+
auditHash,
|
|
444
|
+
chainPath: join(VAULT_DIR, "audit"),
|
|
445
|
+
receiptUrl: opts?.proxy != null ? `${VERIFY_URL_BASE}/${auth.transferId}` : null,
|
|
446
|
+
settled,
|
|
447
|
+
model,
|
|
448
|
+
provider: "headless",
|
|
449
|
+
timestamp: new Date().toISOString(),
|
|
450
|
+
usageSource,
|
|
451
|
+
...(params?.chunksDelivered != null ? { chunksDelivered: params.chunksDelivered } : {}),
|
|
452
|
+
...(callAuditDegraded ? { auditDegraded: true } : {}),
|
|
453
|
+
...(proxyConn != null ? { proxyStub: true } : {}),
|
|
454
|
+
};
|
|
455
|
+
return receipt;
|
|
456
|
+
},
|
|
457
|
+
async abort(auth, error) {
|
|
458
|
+
if (!activeAuths.has(auth.transferId)) {
|
|
459
|
+
// Already settled or aborted — idempotent
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
activeAuths.delete(auth.transferId);
|
|
463
|
+
// AUD-453: Acquire mutex for budget atomicity
|
|
464
|
+
const releaseLock = await budgetMutex.acquire();
|
|
465
|
+
try {
|
|
466
|
+
inFlightHoldTotal -= auth.estimatedCost;
|
|
467
|
+
}
|
|
468
|
+
finally {
|
|
469
|
+
releaseLock();
|
|
470
|
+
}
|
|
471
|
+
// Circuit breaker: failure
|
|
472
|
+
const cb = breaker.get("headless");
|
|
473
|
+
cb.recordFailure();
|
|
474
|
+
// VOID the pending hold
|
|
475
|
+
if (proxyConn != null && !isDryRun) {
|
|
476
|
+
try {
|
|
477
|
+
await proxyConn.void(auth.proxyTransferId ?? auth.transferId);
|
|
478
|
+
}
|
|
479
|
+
catch {
|
|
480
|
+
// Best-effort void
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
else if (engine != null && !isDryRun) {
|
|
484
|
+
try {
|
|
485
|
+
await engine.voidPendingSpend(auth.transferId);
|
|
486
|
+
}
|
|
487
|
+
catch {
|
|
488
|
+
// Best-effort void
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
// Audit the failure
|
|
492
|
+
await audit
|
|
493
|
+
.appendEvent({
|
|
494
|
+
kind: "llm_call_failed",
|
|
495
|
+
actor: "local",
|
|
496
|
+
data: {
|
|
497
|
+
model: auth.model,
|
|
498
|
+
transferId: auth.transferId,
|
|
499
|
+
error: error instanceof Error
|
|
500
|
+
? error.message.slice(0, 200)
|
|
501
|
+
: error != null
|
|
502
|
+
? String(error).slice(0, 200)
|
|
503
|
+
: "aborted",
|
|
504
|
+
source: "headless",
|
|
505
|
+
},
|
|
506
|
+
})
|
|
507
|
+
.catch(() => { });
|
|
508
|
+
},
|
|
509
|
+
async destroy() {
|
|
510
|
+
if (destroyed)
|
|
511
|
+
return;
|
|
512
|
+
destroyed = true;
|
|
513
|
+
// Void all active authorizations (engine + proxy paths)
|
|
514
|
+
for (const [txId, auth] of activeAuths) {
|
|
515
|
+
if (proxyConn != null && !isDryRun) {
|
|
516
|
+
try {
|
|
517
|
+
await proxyConn.void(auth.proxyTransferId ?? txId);
|
|
518
|
+
}
|
|
519
|
+
catch {
|
|
520
|
+
// Best-effort void
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
else if (engine != null && !isDryRun) {
|
|
524
|
+
try {
|
|
525
|
+
await engine.voidPendingSpend(txId);
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
// Best-effort void
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
activeAuths.clear();
|
|
533
|
+
// Flush audit
|
|
534
|
+
await audit.flush();
|
|
535
|
+
audit.release();
|
|
536
|
+
// Destroy engine
|
|
537
|
+
if (engine != null && typeof engine.destroy === "function") {
|
|
538
|
+
engine.destroy();
|
|
539
|
+
}
|
|
540
|
+
// Destroy proxy
|
|
541
|
+
if (proxyConn != null) {
|
|
542
|
+
proxyConn.destroy();
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
estimateCost(model, inputTokens, outputTokens) {
|
|
546
|
+
return estimateCost(model, inputTokens, outputTokens, customRates);
|
|
547
|
+
},
|
|
548
|
+
estimateInputTokens(messages) {
|
|
549
|
+
return estimateInputTokens(messages);
|
|
550
|
+
},
|
|
551
|
+
budgetRemaining() {
|
|
552
|
+
return config.budget - budgetSpent - inFlightHoldTotal;
|
|
553
|
+
},
|
|
554
|
+
};
|
|
555
|
+
// Safety net: clean up on process exit (use once to avoid listener accumulation)
|
|
556
|
+
const cleanupHandler = () => {
|
|
557
|
+
if (!destroyed) {
|
|
558
|
+
governor.destroy().catch(() => { });
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
process.once("beforeExit", cleanupHandler);
|
|
562
|
+
process.once("SIGTERM", cleanupHandler);
|
|
563
|
+
process.once("SIGINT", cleanupHandler);
|
|
564
|
+
return governor;
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=headless.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.js","sourceRoot":"","sources":["../src/headless.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
export { trust } from "./govern.js";
|
|
2
2
|
export type { TrustOpts, TrustedClient } from "./govern.js";
|
|
3
|
+
export { createGovernor } from "./headless.js";
|
|
4
|
+
export type { Governor, Authorization, AuthorizeParams, SettleParams } from "./headless.js";
|
|
3
5
|
export { loadConfig, defineConfig } from "./config.js";
|
|
4
|
-
export type { TrustedResponse, TrustReceipt, TrustConfig, PolicyRule, FieldCondition, BoardDecision, AuditEvent, LLMClientKind, } from "./shared/types.js";
|
|
5
|
-
export {
|
|
6
|
+
export type { TrustedResponse, TrustReceipt, TrustConfig, PolicyRule, FieldCondition, BoardDecision, AuditEvent, LLMClientKind, ActionKind, ActionDescriptor, GovernedActionResult, InjectionDetection, CanaryToken, SkillPermission, SkillManifest, SkillVerification, CredentialScope, CredentialEntry, CredentialAccessResult, } from "./shared/types.js";
|
|
7
|
+
export { detectInjection } from "./policy/injection.js";
|
|
8
|
+
export { generateCanary, injectCanary, detectCanaryLeak } from "./policy/canary.js";
|
|
9
|
+
export { validateManifest, createUnsignedManifest, hashManifest } from "./supply-chain/manifest.js";
|
|
10
|
+
export { generateKeyPair, signManifest, verifySignature } from "./supply-chain/sign.js";
|
|
11
|
+
export { checkPermissions, enforceSkillLoad } from "./supply-chain/permissions.js";
|
|
12
|
+
export { createVaultStore } from "./vault/store.js";
|
|
13
|
+
export type { VaultStore } from "./vault/store.js";
|
|
14
|
+
export { checkScope } from "./vault/scope.js";
|
|
15
|
+
export { InsufficientBalanceError, PolicyDeniedError, LedgerUnavailableError, AuditDegradedError, VaultNotInitializedError, SkillVerificationError, VaultKeyMissingError, CredentialAccessDeniedError, } from "./shared/errors.js";
|
|
6
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvD,YAAY,EACX,eAAe,EACf,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvD,YAAY,EACX,eAAe,EACf,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EACN,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,20 @@
|
|
|
3
3
|
// usertrust — AI Financial Governance SDK
|
|
4
4
|
// Core
|
|
5
5
|
export { trust } from "./govern.js";
|
|
6
|
+
// Headless governance (non-SDK integrations)
|
|
7
|
+
export { createGovernor } from "./headless.js";
|
|
6
8
|
// Config
|
|
7
9
|
export { loadConfig, defineConfig } from "./config.js";
|
|
10
|
+
// Injection detection
|
|
11
|
+
export { detectInjection } from "./policy/injection.js";
|
|
12
|
+
export { generateCanary, injectCanary, detectCanaryLeak } from "./policy/canary.js";
|
|
13
|
+
// Supply Chain
|
|
14
|
+
export { validateManifest, createUnsignedManifest, hashManifest } from "./supply-chain/manifest.js";
|
|
15
|
+
export { generateKeyPair, signManifest, verifySignature } from "./supply-chain/sign.js";
|
|
16
|
+
export { checkPermissions, enforceSkillLoad } from "./supply-chain/permissions.js";
|
|
17
|
+
// Credential Vault
|
|
18
|
+
export { createVaultStore } from "./vault/store.js";
|
|
19
|
+
export { checkScope } from "./vault/scope.js";
|
|
8
20
|
// Errors
|
|
9
|
-
export { InsufficientBalanceError, PolicyDeniedError, LedgerUnavailableError, AuditDegradedError, VaultNotInitializedError, } from "./shared/errors.js";
|
|
21
|
+
export { InsufficientBalanceError, PolicyDeniedError, LedgerUnavailableError, AuditDegradedError, VaultNotInitializedError, SkillVerificationError, VaultKeyMissingError, CredentialAccessDeniedError, } from "./shared/errors.js";
|
|
10
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,0CAA0C;AAE1C,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,0CAA0C;AAE1C,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyBvD,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEnF,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,SAAS;AACT,OAAO,EACN,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,oBAAoB,CAAC"}
|