usertrust 0.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.
Files changed (149) hide show
  1. package/dist/audit/canonical.d.ts +7 -0
  2. package/dist/audit/canonical.d.ts.map +1 -0
  3. package/dist/audit/canonical.js +24 -0
  4. package/dist/audit/canonical.js.map +1 -0
  5. package/dist/audit/chain.d.ts +33 -0
  6. package/dist/audit/chain.d.ts.map +1 -0
  7. package/dist/audit/chain.js +285 -0
  8. package/dist/audit/chain.js.map +1 -0
  9. package/dist/audit/entropy.d.ts +95 -0
  10. package/dist/audit/entropy.d.ts.map +1 -0
  11. package/dist/audit/entropy.js +229 -0
  12. package/dist/audit/entropy.js.map +1 -0
  13. package/dist/audit/merkle.d.ts +87 -0
  14. package/dist/audit/merkle.d.ts.map +1 -0
  15. package/dist/audit/merkle.js +315 -0
  16. package/dist/audit/merkle.js.map +1 -0
  17. package/dist/audit/rotation.d.ts +61 -0
  18. package/dist/audit/rotation.d.ts.map +1 -0
  19. package/dist/audit/rotation.js +160 -0
  20. package/dist/audit/rotation.js.map +1 -0
  21. package/dist/audit/verify.d.ts +20 -0
  22. package/dist/audit/verify.d.ts.map +1 -0
  23. package/dist/audit/verify.js +73 -0
  24. package/dist/audit/verify.js.map +1 -0
  25. package/dist/board/board.d.ts +67 -0
  26. package/dist/board/board.d.ts.map +1 -0
  27. package/dist/board/board.js +191 -0
  28. package/dist/board/board.js.map +1 -0
  29. package/dist/board/concerns.d.ts +59 -0
  30. package/dist/board/concerns.d.ts.map +1 -0
  31. package/dist/board/concerns.js +149 -0
  32. package/dist/board/concerns.js.map +1 -0
  33. package/dist/board/director.d.ts +49 -0
  34. package/dist/board/director.d.ts.map +1 -0
  35. package/dist/board/director.js +127 -0
  36. package/dist/board/director.js.map +1 -0
  37. package/dist/cli/health.d.ts +8 -0
  38. package/dist/cli/health.d.ts.map +1 -0
  39. package/dist/cli/health.js +119 -0
  40. package/dist/cli/health.js.map +1 -0
  41. package/dist/cli/init.d.ts +8 -0
  42. package/dist/cli/init.d.ts.map +1 -0
  43. package/dist/cli/init.js +67 -0
  44. package/dist/cli/init.js.map +1 -0
  45. package/dist/cli/inspect.d.ts +8 -0
  46. package/dist/cli/inspect.d.ts.map +1 -0
  47. package/dist/cli/inspect.js +114 -0
  48. package/dist/cli/inspect.js.map +1 -0
  49. package/dist/cli/main.d.ts +3 -0
  50. package/dist/cli/main.d.ts.map +1 -0
  51. package/dist/cli/main.js +35 -0
  52. package/dist/cli/main.js.map +1 -0
  53. package/dist/cli/snapshot.d.ts +10 -0
  54. package/dist/cli/snapshot.d.ts.map +1 -0
  55. package/dist/cli/snapshot.js +61 -0
  56. package/dist/cli/snapshot.js.map +1 -0
  57. package/dist/cli/tb.d.ts +8 -0
  58. package/dist/cli/tb.d.ts.map +1 -0
  59. package/dist/cli/tb.js +43 -0
  60. package/dist/cli/tb.js.map +1 -0
  61. package/dist/cli/verify.d.ts +7 -0
  62. package/dist/cli/verify.d.ts.map +1 -0
  63. package/dist/cli/verify.js +32 -0
  64. package/dist/cli/verify.js.map +1 -0
  65. package/dist/config.d.ts +12 -0
  66. package/dist/config.d.ts.map +1 -0
  67. package/dist/config.js +34 -0
  68. package/dist/config.js.map +1 -0
  69. package/dist/detect.d.ts +18 -0
  70. package/dist/detect.d.ts.map +1 -0
  71. package/dist/detect.js +49 -0
  72. package/dist/detect.js.map +1 -0
  73. package/dist/govern.d.ts +75 -0
  74. package/dist/govern.d.ts.map +1 -0
  75. package/dist/govern.js +581 -0
  76. package/dist/govern.js.map +1 -0
  77. package/dist/index.d.ts +6 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +8 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/ledger/client.d.ts +89 -0
  82. package/dist/ledger/client.d.ts.map +1 -0
  83. package/dist/ledger/client.js +417 -0
  84. package/dist/ledger/client.js.map +1 -0
  85. package/dist/ledger/engine.d.ts +68 -0
  86. package/dist/ledger/engine.d.ts.map +1 -0
  87. package/dist/ledger/engine.js +142 -0
  88. package/dist/ledger/engine.js.map +1 -0
  89. package/dist/ledger/pricing.d.ts +35 -0
  90. package/dist/ledger/pricing.d.ts.map +1 -0
  91. package/dist/ledger/pricing.js +142 -0
  92. package/dist/ledger/pricing.js.map +1 -0
  93. package/dist/memory/patterns.d.ts +35 -0
  94. package/dist/memory/patterns.d.ts.map +1 -0
  95. package/dist/memory/patterns.js +152 -0
  96. package/dist/memory/patterns.js.map +1 -0
  97. package/dist/policy/decay.d.ts +95 -0
  98. package/dist/policy/decay.d.ts.map +1 -0
  99. package/dist/policy/decay.js +133 -0
  100. package/dist/policy/decay.js.map +1 -0
  101. package/dist/policy/default-rules.d.ts +21 -0
  102. package/dist/policy/default-rules.d.ts.map +1 -0
  103. package/dist/policy/default-rules.js +60 -0
  104. package/dist/policy/default-rules.js.map +1 -0
  105. package/dist/policy/gate.d.ts +116 -0
  106. package/dist/policy/gate.d.ts.map +1 -0
  107. package/dist/policy/gate.js +227 -0
  108. package/dist/policy/gate.js.map +1 -0
  109. package/dist/policy/pii.d.ts +28 -0
  110. package/dist/policy/pii.d.ts.map +1 -0
  111. package/dist/policy/pii.js +124 -0
  112. package/dist/policy/pii.js.map +1 -0
  113. package/dist/proxy.d.ts +33 -0
  114. package/dist/proxy.d.ts.map +1 -0
  115. package/dist/proxy.js +36 -0
  116. package/dist/proxy.js.map +1 -0
  117. package/dist/resilience/circuit.d.ts +87 -0
  118. package/dist/resilience/circuit.d.ts.map +1 -0
  119. package/dist/resilience/circuit.js +167 -0
  120. package/dist/resilience/circuit.js.map +1 -0
  121. package/dist/resilience/scope.d.ts +97 -0
  122. package/dist/resilience/scope.d.ts.map +1 -0
  123. package/dist/resilience/scope.js +244 -0
  124. package/dist/resilience/scope.js.map +1 -0
  125. package/dist/shared/constants.d.ts +7 -0
  126. package/dist/shared/constants.d.ts.map +1 -0
  127. package/dist/shared/constants.js +7 -0
  128. package/dist/shared/constants.js.map +1 -0
  129. package/dist/shared/errors.d.ts +31 -0
  130. package/dist/shared/errors.d.ts.map +1 -0
  131. package/dist/shared/errors.js +61 -0
  132. package/dist/shared/errors.js.map +1 -0
  133. package/dist/shared/ids.d.ts +7 -0
  134. package/dist/shared/ids.d.ts.map +1 -0
  135. package/dist/shared/ids.js +31 -0
  136. package/dist/shared/ids.js.map +1 -0
  137. package/dist/shared/types.d.ts +162 -0
  138. package/dist/shared/types.d.ts.map +1 -0
  139. package/dist/shared/types.js +41 -0
  140. package/dist/shared/types.js.map +1 -0
  141. package/dist/snapshot/checkpoint.d.ts +22 -0
  142. package/dist/snapshot/checkpoint.d.ts.map +1 -0
  143. package/dist/snapshot/checkpoint.js +172 -0
  144. package/dist/snapshot/checkpoint.js.map +1 -0
  145. package/dist/streaming.d.ts +44 -0
  146. package/dist/streaming.d.ts.map +1 -0
  147. package/dist/streaming.js +123 -0
  148. package/dist/streaming.js.map +1 -0
  149. package/package.json +54 -0
package/dist/govern.js ADDED
@@ -0,0 +1,581 @@
1
+ /**
2
+ * trust() — Two-Phase Lifecycle Wrapper
3
+ *
4
+ * The convergence point of the usertrust SDK. Wires together:
5
+ * - LLM client detection (duck typing)
6
+ * - TigerBeetle ledger (PENDING → POST/VOID)
7
+ * - SHA-256 hash-chained audit trail
8
+ * - Policy gate (12-operator rule engine)
9
+ * - PII detection
10
+ * - Circuit breaker (per-provider)
11
+ * - Pattern memory (prompt hashing)
12
+ * - Proxy mode (remote governance)
13
+ *
14
+ * Failure modes (Spec Section 15):
15
+ * 15.1 — LLM succeeds, POST fails → settled: false, settlement_ambiguous audit
16
+ * 15.2 — LLM fails (retryable) → void pending hold, propagate error
17
+ * 15.3 — Audit write fails after POST → auditDegraded flag, still return response
18
+ * 15.4 — TigerBeetle unreachable → LedgerUnavailableError, do NOT forward
19
+ *
20
+ * Usage:
21
+ * ```ts
22
+ * const client = await trust(new Anthropic(), { dryRun: true, budget: 50_000 });
23
+ * const { response, governance } = await client.messages.create({ ... });
24
+ * await client.destroy();
25
+ * ```
26
+ */
27
+ import { createHash } from "node:crypto";
28
+ import { existsSync } from "node:fs";
29
+ import { readFile } from "node:fs/promises";
30
+ import { join } from "node:path";
31
+ import { createAuditWriter } from "./audit/chain.js";
32
+ import { writeReceipt } from "./audit/rotation.js";
33
+ import { detectClientKind } from "./detect.js";
34
+ import { TrustTBClient, XFER_SPEND } from "./ledger/client.js";
35
+ import { estimateCost, estimateInputTokens } from "./ledger/pricing.js";
36
+ import { recordPattern } from "./memory/patterns.js";
37
+ import { DecayRateCalculator } from "./policy/decay.js";
38
+ import { evaluatePolicy, loadPolicies } from "./policy/gate.js";
39
+ import { detectPII } from "./policy/pii.js";
40
+ import { connectProxy } from "./proxy.js";
41
+ import { CircuitBreakerRegistry } from "./resilience/circuit.js";
42
+ import { DEFAULT_BUDGET, VAULT_DIR } from "./shared/constants.js";
43
+ import { LedgerUnavailableError, PolicyDeniedError } from "./shared/errors.js";
44
+ import { trustId } from "./shared/ids.js";
45
+ import { TrustConfigSchema } from "./shared/types.js";
46
+ import { createGovernedStream } from "./streaming.js";
47
+ // ── trust() ──
48
+ export async function trust(client, opts) {
49
+ // 1. Load config
50
+ const vaultBase = opts?.vaultBase ?? process.cwd();
51
+ const configPath = opts?.configPath ?? join(vaultBase, VAULT_DIR, "usertrust.config.json");
52
+ let config;
53
+ if (existsSync(configPath)) {
54
+ const raw = JSON.parse(await readFile(configPath, "utf-8"));
55
+ config = TrustConfigSchema.parse({
56
+ ...raw,
57
+ ...(opts?.budget !== undefined ? { budget: opts.budget } : {}),
58
+ });
59
+ }
60
+ else {
61
+ config = TrustConfigSchema.parse({
62
+ budget: opts?.budget ?? DEFAULT_BUDGET,
63
+ });
64
+ }
65
+ const isDryRun = opts?.dryRun ?? process.env.USERTRUST_DRY_RUN === "true";
66
+ // 2. Initialise subsystems
67
+ const vaultPath = vaultBase;
68
+ const audit = opts?._audit ?? createAuditWriter(vaultPath);
69
+ const policiesPath = join(vaultPath, VAULT_DIR, config.policies);
70
+ const policyRules = existsSync(policiesPath) ? loadPolicies(policiesPath) : [];
71
+ const breaker = new CircuitBreakerRegistry({
72
+ failureThreshold: config.circuitBreaker.failureThreshold,
73
+ resetTimeoutMs: config.circuitBreaker.resetTimeout,
74
+ });
75
+ // Decay-weighted budget calculator (1-hour half-life)
76
+ const decayCalc = new DecayRateCalculator({ halfLifeMs: 3_600_000 });
77
+ const spendHistory = [];
78
+ // 3. Proxy connection (if proxy mode)
79
+ let proxyConn = null;
80
+ if (opts?.proxy) {
81
+ proxyConn = connectProxy(opts.proxy, opts.key);
82
+ }
83
+ // 4. Engine (injected for tests, real TB client in production, null in dry-run/proxy)
84
+ let engine;
85
+ if (opts?._engine !== undefined) {
86
+ engine = opts._engine;
87
+ }
88
+ else if (!isDryRun && proxyConn == null) {
89
+ try {
90
+ engine = await createTBEngine(config);
91
+ }
92
+ catch (err) {
93
+ throw new LedgerUnavailableError(err instanceof Error ? err.message : String(err));
94
+ }
95
+ }
96
+ else {
97
+ engine = null;
98
+ }
99
+ // 5. Detect client kind
100
+ const kind = detectClientKind(client);
101
+ // 6. Track state
102
+ let destroyed = false;
103
+ let budgetSpent = 0;
104
+ // 7. Two-phase intercept
105
+ async function interceptCall(originalFn, thisArg, args) {
106
+ if (destroyed) {
107
+ throw new Error("GovernedClient has been destroyed");
108
+ }
109
+ const params = (args[0] ?? {});
110
+ const model = params.model ?? "unknown";
111
+ const messages = params.messages ?? [];
112
+ // Per-call audit degradation flag (not sticky across calls)
113
+ let callAuditDegraded = false;
114
+ // a. Circuit breaker check
115
+ const cb = breaker.get(kind);
116
+ cb.allowRequest();
117
+ // b. Estimate cost (before policy, so cost fields are available in context)
118
+ const transferId = trustId("tx");
119
+ const estimatedInputTokens = estimateInputTokens(messages);
120
+ const maxOutputTokens = params.max_tokens ?? 4096;
121
+ const estimatedCost = estimateCost(model, estimatedInputTokens, maxOutputTokens);
122
+ // c. Policy gate
123
+ const policyResult = evaluatePolicy(policyRules, {
124
+ model,
125
+ tier: config.tier,
126
+ estimated_cost: estimatedCost,
127
+ budget_remaining: config.budget - budgetSpent,
128
+ ...params,
129
+ });
130
+ if (policyResult.decision === "deny") {
131
+ const reason = policyResult.reasons.length > 0 ? policyResult.reasons.join("; ") : "Policy denied";
132
+ throw new PolicyDeniedError(reason);
133
+ }
134
+ // d. PII check
135
+ if (config.pii !== "off") {
136
+ const piiResult = detectPII(messages);
137
+ if (piiResult.found && config.pii === "block") {
138
+ throw new PolicyDeniedError(`PII detected: ${piiResult.types.join(", ")}`);
139
+ }
140
+ // "warn" and "redact" modes: continue (redact is not implemented at SDK level)
141
+ }
142
+ // d2. Failure mode 15.4: TigerBeetle / engine unreachable — PENDING hold
143
+ if (proxyConn != null && !isDryRun) {
144
+ try {
145
+ await proxyConn.spend({
146
+ model,
147
+ estimatedCost,
148
+ actor: "local",
149
+ });
150
+ }
151
+ catch (holdErr) {
152
+ throw new LedgerUnavailableError(holdErr instanceof Error ? holdErr.message : String(holdErr));
153
+ }
154
+ }
155
+ else if (engine != null && !isDryRun) {
156
+ try {
157
+ await engine.spendPending({
158
+ transferId,
159
+ amount: estimatedCost,
160
+ });
161
+ }
162
+ catch (holdErr) {
163
+ // Ledger unreachable — do NOT forward to provider
164
+ throw new LedgerUnavailableError(holdErr instanceof Error ? holdErr.message : String(holdErr));
165
+ }
166
+ }
167
+ // e. Forward to original SDK
168
+ let settled = true;
169
+ try {
170
+ const response = await originalFn.apply(thisArg, args);
171
+ // e2. Streaming detection: if response is an async iterable, wrap with
172
+ // token accumulation. Settlement and audit happen when the stream ends.
173
+ if (response != null &&
174
+ typeof response === "object" &&
175
+ Symbol.asyncIterator in response) {
176
+ const stream = response;
177
+ const governedStream = createGovernedStream(stream, kind, async (usage) => {
178
+ const streamCost = estimateCost(model, usage.inputTokens, usage.outputTokens);
179
+ budgetSpent += streamCost;
180
+ cb.recordSuccess();
181
+ if (proxyConn != null && !isDryRun) {
182
+ try {
183
+ await proxyConn.settle(transferId, streamCost);
184
+ }
185
+ catch {
186
+ settled = false;
187
+ }
188
+ }
189
+ else if (engine != null && !isDryRun) {
190
+ try {
191
+ await engine.postPendingSpend(transferId);
192
+ }
193
+ catch {
194
+ settled = false;
195
+ }
196
+ }
197
+ const syntheticHash = createHash("sha256").update(transferId).digest("hex");
198
+ let auditHash = syntheticHash;
199
+ try {
200
+ const auditEvent = await audit.appendEvent({
201
+ kind: "llm_call",
202
+ actor: "local",
203
+ data: { model, cost: streamCost, settled, transferId },
204
+ });
205
+ auditHash = auditEvent.hash;
206
+ }
207
+ catch {
208
+ callAuditDegraded = true;
209
+ }
210
+ return {
211
+ transferId,
212
+ cost: streamCost,
213
+ budgetRemaining: config.budget - budgetSpent,
214
+ auditHash,
215
+ chainPath: join(VAULT_DIR, "audit"),
216
+ receiptUrl: opts?.proxy != null ? `https://verify.usertools.dev/${transferId}` : null,
217
+ settled,
218
+ model,
219
+ provider: kind,
220
+ timestamp: new Date().toISOString(),
221
+ ...(callAuditDegraded ? { auditDegraded: true } : {}),
222
+ };
223
+ }, (error) => {
224
+ cb.recordFailure();
225
+ if (proxyConn != null && !isDryRun) {
226
+ proxyConn.void(transferId).catch(() => { });
227
+ }
228
+ else if (engine != null && !isDryRun) {
229
+ engine.voidPendingSpend(transferId).catch(() => { });
230
+ }
231
+ });
232
+ // For streaming responses, return the wrapped stream with an
233
+ // estimated governance receipt. The actual receipt (with real
234
+ // token counts) is available via governedStream.governance
235
+ // after the stream is fully consumed.
236
+ const auditHash = createHash("sha256").update(transferId).digest("hex");
237
+ const estimatedGovernance = {
238
+ transferId,
239
+ cost: estimatedCost,
240
+ budgetRemaining: config.budget - budgetSpent,
241
+ auditHash,
242
+ chainPath: join(VAULT_DIR, "audit"),
243
+ receiptUrl: opts?.proxy != null ? `https://verify.usertools.dev/${transferId}` : null,
244
+ settled,
245
+ model,
246
+ provider: kind,
247
+ timestamp: new Date().toISOString(),
248
+ ...(callAuditDegraded ? { auditDegraded: true } : {}),
249
+ };
250
+ return { response: governedStream, governance: estimatedGovernance };
251
+ }
252
+ // f. Compute actual cost from response usage
253
+ let actualCost = estimatedCost;
254
+ if (response != null && typeof response === "object" && "usage" in response) {
255
+ const usage = response.usage;
256
+ if (usage != null) {
257
+ const inputTokens = usage.input_tokens ??
258
+ usage.prompt_tokens ??
259
+ estimatedInputTokens;
260
+ const outputTokens = usage.output_tokens ??
261
+ usage.completion_tokens ??
262
+ 0;
263
+ actualCost = estimateCost(model, inputTokens, outputTokens);
264
+ }
265
+ }
266
+ // Track budget (cumulative and decay-weighted)
267
+ budgetSpent += actualCost;
268
+ spendHistory.push({ ts: Date.now(), value: actualCost });
269
+ // g. Circuit breaker: record success
270
+ cb.recordSuccess();
271
+ // g2. Failure mode 15.1: POST fails after LLM success
272
+ if (engine != null && !isDryRun) {
273
+ try {
274
+ await engine.postPendingSpend(transferId);
275
+ }
276
+ catch (postErr) {
277
+ // POST failed — LLM call succeeded but settlement is ambiguous
278
+ settled = false;
279
+ await audit
280
+ .appendEvent({
281
+ kind: "settlement_ambiguous",
282
+ actor: "local",
283
+ data: {
284
+ model,
285
+ cost: actualCost,
286
+ transferId,
287
+ error: postErr instanceof Error ? postErr.message : String(postErr),
288
+ },
289
+ })
290
+ .catch(() => {
291
+ // Audit also degraded — nothing more we can do
292
+ callAuditDegraded = true;
293
+ });
294
+ }
295
+ }
296
+ // g3. Proxy settlement
297
+ if (proxyConn != null && !isDryRun) {
298
+ try {
299
+ await proxyConn.settle(transferId, actualCost);
300
+ }
301
+ catch {
302
+ settled = false;
303
+ }
304
+ }
305
+ // h. Audit event — failure mode 15.3: audit write failure
306
+ const syntheticHash = createHash("sha256").update(transferId).digest("hex");
307
+ let auditHash = syntheticHash;
308
+ try {
309
+ const auditEvent = await audit.appendEvent({
310
+ kind: "llm_call",
311
+ actor: "local",
312
+ data: {
313
+ model,
314
+ cost: actualCost,
315
+ settled,
316
+ transferId,
317
+ },
318
+ });
319
+ auditHash = auditEvent.hash;
320
+ }
321
+ catch {
322
+ // Failure mode 15.3: Audit degraded — do not fail the response
323
+ callAuditDegraded = true;
324
+ process.stderr.write(`[usertrust] audit degraded: failed to write llm_call event for ${transferId}\n`);
325
+ }
326
+ // i. Daily-rotated audit receipt (non-blocking)
327
+ if (config.audit.rotation !== "none") {
328
+ writeReceipt(vaultPath, {
329
+ kind: "llm_call",
330
+ subsystem: "trust",
331
+ actor: "local",
332
+ data: { model, cost: actualCost, settled, transferId },
333
+ }, config.audit.indexLimit);
334
+ }
335
+ // i2. Pattern memory
336
+ if (config.patterns.enabled) {
337
+ const promptHash = createHash("sha256").update(JSON.stringify(messages)).digest("hex");
338
+ await recordPattern({
339
+ promptHash,
340
+ model,
341
+ cost: actualCost,
342
+ success: true,
343
+ }).catch(() => { });
344
+ }
345
+ const budgetRemaining = config.budget - budgetSpent;
346
+ const governance = {
347
+ transferId,
348
+ cost: actualCost,
349
+ budgetRemaining,
350
+ auditHash,
351
+ chainPath: join(VAULT_DIR, "audit"),
352
+ receiptUrl: opts?.proxy != null ? `https://verify.usertools.dev/${transferId}` : null,
353
+ settled,
354
+ model,
355
+ provider: kind,
356
+ timestamp: new Date().toISOString(),
357
+ ...(callAuditDegraded ? { auditDegraded: true } : {}),
358
+ };
359
+ return { response, governance };
360
+ }
361
+ catch (err) {
362
+ // j. Circuit breaker: record failure
363
+ cb.recordFailure();
364
+ // j2. Failure mode 15.2: LLM fails — VOID the pending hold
365
+ if (engine != null && !isDryRun) {
366
+ try {
367
+ await engine.voidPendingSpend(transferId);
368
+ }
369
+ catch {
370
+ // Best-effort void — log and continue
371
+ }
372
+ }
373
+ // j3. Proxy void
374
+ if (proxyConn != null && !isDryRun) {
375
+ try {
376
+ await proxyConn.void(transferId);
377
+ }
378
+ catch {
379
+ // Best-effort void
380
+ }
381
+ }
382
+ // k. Audit the failure
383
+ await audit
384
+ .appendEvent({
385
+ kind: "llm_call_failed",
386
+ actor: "local",
387
+ data: { model, error: String(err), transferId },
388
+ })
389
+ .catch(() => {
390
+ callAuditDegraded = true;
391
+ });
392
+ // l. Pattern memory: record failure
393
+ if (config.patterns.enabled) {
394
+ const promptHash = createHash("sha256").update(JSON.stringify(messages)).digest("hex");
395
+ await recordPattern({
396
+ promptHash,
397
+ model,
398
+ cost: 0,
399
+ success: false,
400
+ }).catch(() => { });
401
+ }
402
+ throw err;
403
+ }
404
+ }
405
+ // 8. Safety net: clean up on process exit if destroy() was never called
406
+ let beforeExitHandler = null;
407
+ // 9. Build Proxy based on client kind
408
+ function createClientProxy() {
409
+ const destroyFn = async () => {
410
+ if (destroyed)
411
+ return;
412
+ destroyed = true;
413
+ // Remove beforeExit safety net
414
+ if (beforeExitHandler != null) {
415
+ process.removeListener("beforeExit", beforeExitHandler);
416
+ beforeExitHandler = null;
417
+ }
418
+ // Flush audit writes
419
+ await audit.flush();
420
+ // Release audit lock
421
+ audit.release();
422
+ // Destroy engine if connected
423
+ if (engine != null && typeof engine.destroy === "function") {
424
+ engine.destroy();
425
+ }
426
+ // Destroy proxy connection if active
427
+ if (proxyConn != null) {
428
+ proxyConn.destroy();
429
+ }
430
+ };
431
+ if (kind === "anthropic") {
432
+ return buildAnthropicProxy(client, interceptCall, destroyFn);
433
+ }
434
+ if (kind === "openai") {
435
+ return buildOpenAIProxy(client, interceptCall, destroyFn);
436
+ }
437
+ // google
438
+ return buildGoogleProxy(client, interceptCall, destroyFn);
439
+ }
440
+ const governedClient = createClientProxy();
441
+ beforeExitHandler = () => {
442
+ if (!destroyed) {
443
+ governedClient.destroy().catch(() => { });
444
+ }
445
+ };
446
+ process.on("beforeExit", beforeExitHandler);
447
+ return governedClient;
448
+ }
449
+ // ── TigerBeetle engine factory ──
450
+ /**
451
+ * Create a TrustEngine backed by a real TigerBeetle client.
452
+ * Uses a simplified two-phase interface: pending transfers are created
453
+ * directly against the TB client using escrow-style debit/credit accounts.
454
+ */
455
+ async function createTBEngine(config) {
456
+ const tbAddresses = config.tigerbeetle.addresses;
457
+ const tbClusterId = BigInt(config.tigerbeetle.clusterId);
458
+ const tbClient = new TrustTBClient({
459
+ addresses: tbAddresses,
460
+ clusterId: tbClusterId,
461
+ });
462
+ // Initialize treasury and escrow accounts
463
+ await tbClient.createTreasury();
464
+ await tbClient.ensureEscrowAccount("trust:escrow");
465
+ // Pending transfer ID mapping (trustId string -> TB bigint)
466
+ const pendingMap = new Map();
467
+ return {
468
+ async spendPending(params) {
469
+ const treasury = tbClient.getTreasuryId();
470
+ // Use a deterministic escrow account for SDK-local holds
471
+ const escrowId = TrustTBClient.deriveAccountId("trust:escrow");
472
+ const tbTransferId = await tbClient.createPendingTransfer({
473
+ debitAccountId: escrowId,
474
+ creditAccountId: treasury,
475
+ amount: params.amount,
476
+ code: XFER_SPEND,
477
+ });
478
+ pendingMap.set(params.transferId, tbTransferId);
479
+ return { transferId: params.transferId };
480
+ },
481
+ async postPendingSpend(transferId) {
482
+ const tbId = pendingMap.get(transferId);
483
+ if (tbId === undefined) {
484
+ throw new Error(`No pending transfer found for ${transferId}`);
485
+ }
486
+ await tbClient.postTransfer(tbId);
487
+ pendingMap.delete(transferId);
488
+ },
489
+ async voidPendingSpend(transferId) {
490
+ const tbId = pendingMap.get(transferId);
491
+ if (tbId === undefined) {
492
+ throw new Error(`No pending transfer found for ${transferId}`);
493
+ }
494
+ await tbClient.voidTransfer(tbId);
495
+ pendingMap.delete(transferId);
496
+ },
497
+ destroy() {
498
+ tbClient.destroy();
499
+ },
500
+ };
501
+ }
502
+ function buildAnthropicProxy(client, intercept, destroy) {
503
+ const original = client;
504
+ const messages = original.messages;
505
+ const originalCreate = messages.create;
506
+ // Proxy on the messages object: intercept `create`
507
+ const messagesProxy = new Proxy(messages, {
508
+ get(target, prop, receiver) {
509
+ if (prop === "create") {
510
+ return (...args) => intercept(originalCreate, target, args);
511
+ }
512
+ return Reflect.get(target, prop, receiver);
513
+ },
514
+ });
515
+ // Proxy on the client: intercept `messages` to return our proxy, add `destroy`
516
+ const clientProxy = new Proxy(original, {
517
+ get(target, prop, receiver) {
518
+ if (prop === "messages")
519
+ return messagesProxy;
520
+ if (prop === "destroy")
521
+ return destroy;
522
+ return Reflect.get(target, prop, receiver);
523
+ },
524
+ });
525
+ return clientProxy;
526
+ }
527
+ function buildOpenAIProxy(client, intercept, destroy) {
528
+ const original = client;
529
+ const chat = original.chat;
530
+ const completions = chat.completions;
531
+ const originalCreate = completions.create;
532
+ const completionsProxy = new Proxy(completions, {
533
+ get(target, prop, receiver) {
534
+ if (prop === "create") {
535
+ return (...args) => intercept(originalCreate, target, args);
536
+ }
537
+ return Reflect.get(target, prop, receiver);
538
+ },
539
+ });
540
+ const chatProxy = new Proxy(chat, {
541
+ get(target, prop, receiver) {
542
+ if (prop === "completions")
543
+ return completionsProxy;
544
+ return Reflect.get(target, prop, receiver);
545
+ },
546
+ });
547
+ const clientProxy = new Proxy(original, {
548
+ get(target, prop, receiver) {
549
+ if (prop === "chat")
550
+ return chatProxy;
551
+ if (prop === "destroy")
552
+ return destroy;
553
+ return Reflect.get(target, prop, receiver);
554
+ },
555
+ });
556
+ return clientProxy;
557
+ }
558
+ function buildGoogleProxy(client, intercept, destroy) {
559
+ const original = client;
560
+ const models = original.models;
561
+ const originalGenerate = models.generateContent;
562
+ const modelsProxy = new Proxy(models, {
563
+ get(target, prop, receiver) {
564
+ if (prop === "generateContent") {
565
+ return (...args) => intercept(originalGenerate, target, args);
566
+ }
567
+ return Reflect.get(target, prop, receiver);
568
+ },
569
+ });
570
+ const clientProxy = new Proxy(original, {
571
+ get(target, prop, receiver) {
572
+ if (prop === "models")
573
+ return modelsProxy;
574
+ if (prop === "destroy")
575
+ return destroy;
576
+ return Reflect.get(target, prop, receiver);
577
+ },
578
+ });
579
+ return clientProxy;
580
+ }
581
+ //# sourceMappingURL=govern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"govern.js","sourceRoot":"","sources":["../src/govern.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { trust } from "./govern.js";
2
+ export type { TrustOpts, GovernedClient } from "./govern.js";
3
+ export { loadConfig, defineConfig } from "./config.js";
4
+ export type { GovernedResponse, GovernanceReceipt, TrustConfig, PolicyRule, FieldCondition, BoardDecision, AuditEvent, LLMClientKind, } from "./shared/types.js";
5
+ export { InsufficientBalanceError, PolicyDeniedError, LedgerUnavailableError, AuditDegradedError, VaultNotInitializedError, } from "./shared/errors.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvD,YAAY,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACN,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ // usertrust — AI Financial Governance SDK
2
+ // Core
3
+ export { trust } from "./govern.js";
4
+ // Config
5
+ export { loadConfig, defineConfig } from "./config.js";
6
+ // Errors
7
+ export { InsufficientBalanceError, PolicyDeniedError, LedgerUnavailableError, AuditDegradedError, VaultNotInitializedError, } from "./shared/errors.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAE1C,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAcvD,SAAS;AACT,OAAO,EACN,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC"}