usertrust-verify 1.2.5 → 1.4.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 CHANGED
@@ -1,264 +1,62 @@
1
- # usertrust
1
+ # usertrust-verify
2
2
 
3
- Financial governance for AI agents. Every LLM call becomes an immutable, auditable transaction.
4
-
5
- ```typescript
6
- import { trust } from "usertrust";
7
- import Anthropic from "@anthropic-ai/sdk";
8
-
9
- // dryRun: true — skips TigerBeetle so you can try instantly.
10
- // Audit chain and policy engine still run.
11
- const client = await trust(new Anthropic(), { dryRun: true, budget: 50_000 });
12
-
13
- const { response, governance } = await client.messages.create({
14
- model: "claude-sonnet-4.6",
15
- max_tokens: 1024,
16
- messages: [{ role: "user", content: "Analyze this contract" }],
17
- });
18
-
19
- console.log(governance);
20
-
21
- // REQUIRED — process hangs without this
22
- await client.destroy();
23
- ```
24
-
25
- That's it. One function wraps any supported LLM client. Every call is metered, audited, and policy-checked.
26
-
27
- ### Expected Output
28
-
29
- The `governance` receipt returned from every call:
30
-
31
- ```
32
- {
33
- cost: 42,
34
- budgetRemaining: 49958,
35
- transferId: "tx_m4k7p2_a1b2c3",
36
- auditHash: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
37
- settled: true,
38
- model: "claude-sonnet-4.6",
39
- provider: "anthropic",
40
- inputTokens: 12,
41
- outputTokens: 28
42
- }
43
- ```
44
-
45
- ## Install
3
+ Standalone, **zero-dependency** verifier for a [`usertrust`](https://usertrust.ai) audit vault. It recomputes the SHA-256 hash chain and checks it against the vault's tamper-evident head anchor — without trusting (or importing) the usertrust SDK. Anyone can audit a vault with it.
46
4
 
47
5
  ```bash
48
- npx usertrust init
6
+ npx usertrust-verify .usertrust
49
7
  ```
50
8
 
51
- This creates a `.usertrust/` vault in your project root with default config, policies, and an empty audit chain.
52
-
53
- ## Integration
54
-
55
- Works with Anthropic, OpenAI, and Google AI SDKs:
56
-
57
- ```typescript
58
- import { trust } from "usertrust";
59
- import Anthropic from "@anthropic-ai/sdk";
60
- import OpenAI from "openai";
61
-
62
- // Anthropic
63
- const anthropic = await trust(new Anthropic());
64
- const { response, governance } = await anthropic.messages.create({ ... });
65
-
66
- // OpenAI
67
- const openai = await trust(new OpenAI());
68
- const { response, governance } = await openai.chat.completions.create({ ... });
69
-
70
- // With options (full mode — requires TigerBeetle)
71
- const client = await trust(new Anthropic(), {
72
- budget: 100_000,
73
- });
74
9
  ```
75
-
76
- Every call returns `{ response, governance }` where `governance` is a receipt:
77
-
78
- ```typescript
79
- {
80
- transferId: "tx_m4k7r2_a1b2c3",
81
- cost: 142,
82
- budgetRemaining: 49_858,
83
- auditHash: "a3f8...",
84
- settled: true,
85
- model: "claude-sonnet-4.6",
86
- provider: "anthropic",
87
- timestamp: "2026-03-16T12:00:00.000Z"
88
- }
10
+ Vault integrity: VERIFIED
11
+ Chain length: 847 events
12
+ Merkle root: a3f8c1...d92b
13
+ Hash algorithm: SHA-256
14
+ First event: 2026-03-01T08:12:44.000Z
15
+ Last event: 2026-03-16T14:33:21.000Z
16
+ All hashes: valid (847/847)
89
17
  ```
90
18
 
91
- ## Inspect
92
-
93
- ```bash
94
- npx usertrust inspect
95
- ```
19
+ ## What it checks
96
20
 
97
- ```
98
- === Vault Report ===
99
- Chain: 847 events · 12 segments
100
- Budget: 38,420 / 50,000 UT remaining
101
- Models: claude-sonnet-4-6 (412) · gpt-4o (289) · gemini-2.0-flash (146)
102
- Policy: 3 rules active · 0 violations
103
- PII: 2 warnings · 0 blocks
104
- Merkle: a3f8c1...d92b (root)
105
- ```
21
+ - **Hash chain** — every event links to the previous event's SHA-256 hash; any mutated, reordered, or inserted event breaks verification.
22
+ - **Head anchor** — the fsync'd `events.jsonl.meta` sidecar records the last hash and the total event count. The verifier fails if the log has been **truncated or deleted** (a shorter-but-internally-consistent chain no longer passes).
23
+ - **Segment continuity** a rotated vault (multiple `*.jsonl` segments) is verified as one continuous chain by sequence number; a missing whole segment is detected as a sequence gap.
24
+ - **Merkle root** recomputes the RFC 6962 root over the event hashes.
106
25
 
107
- ## CLI
26
+ ## Exit codes (CI-safe)
108
27
 
109
- All commands support `--json` for machine-readable output.
28
+ The CLI sets a **non-zero exit code** on any failed verification, so it works as a gate:
110
29
 
111
30
  ```bash
112
- usertrust init # Create .usertrust/ vault
113
- usertrust inspect # Vault bank statement
114
- usertrust health # Entropy diagnostics (6 signals, 0-100 score)
115
- usertrust verify # Verify audit chain integrity
116
- usertrust snapshot # Checkpoint/restore vault state
117
- usertrust tb # TigerBeetle process management
118
- usertrust completions # Shell completions (bash, zsh, fish)
31
+ usertrust-verify .usertrust || echo "TAMPERED — do not deploy"
119
32
  ```
120
33
 
121
- ### JSON output
122
-
123
- Every command supports `--json` for scripting and CI:
124
-
125
- ```bash
126
- usertrust inspect --json | jq '.data.remaining'
127
- ```
34
+ | Code | Meaning |
35
+ |------|---------|
36
+ | `0` | Vault verified |
37
+ | `1` | Verification failed (tamper, truncation, or corrupt anchor) |
38
+ | `2` | Transaction not found (`--tx` mode) |
128
39
 
129
- ### Shell completions
40
+ ## Verify a single transaction
130
41
 
131
42
  ```bash
132
- # Bash
133
- usertrust completions bash > ~/.local/share/bash-completion/completions/usertrust
134
-
135
- # Zsh
136
- usertrust completions zsh > "${fpath[1]}/_usertrust"
137
-
138
- # Fish
139
- usertrust completions fish > ~/.config/fish/completions/usertrust.fish
43
+ usertrust-verify .usertrust --tx tx_m4k7p2_a1b2c3
140
44
  ```
141
45
 
142
- ### Error messages
143
-
144
- All errors include fix suggestions and documentation links:
145
-
146
- ```
147
- Ledger unavailable: connection refused
148
-
149
- Hint: Start TigerBeetle with "npx usertrust tb start" or use { dryRun: true } to skip the ledger.
150
- Docs: https://usertrust.ai/docs/errors/ledger-unavailable
151
- ```
152
-
153
- ## Config
154
-
155
- Create `.usertrust/usertrust.config.json`:
156
-
157
- ```json
158
- {
159
- "budget": 50000,
160
- "tier": "pro",
161
- "pii": "block",
162
- "circuitBreaker": { "failureThreshold": 5, "resetTimeout": 60000 },
163
- "patterns": { "enabled": true },
164
- "audit": { "rotation": "daily", "indexLimit": 10000 }
165
- }
166
- ```
167
-
168
- `defineConfig` is available as a TypeScript type-checking helper for validating config objects in your code. The actual config file must be `usertrust.config.json` (JSON format):
46
+ ## Programmatic API
169
47
 
170
48
  ```typescript
171
- import { defineConfig } from "usertrust";
172
-
173
- // Type-check your config object — useful for programmatic overrides
174
- const config = defineConfig({
175
- budget: 50_000,
176
- tier: "pro",
177
- pii: "block",
178
- circuitBreaker: { failureThreshold: 5, resetTimeout: 60_000 },
179
- patterns: { enabled: true },
180
- audit: { rotation: "daily", indexLimit: 10_000 },
181
- });
182
- ```
183
-
184
- ## Features
185
-
186
- **Double-entry ledger** — TigerBeetle-backed financial transactions with two-phase lifecycle (PENDING, POST, VOID). Not a counter.
187
-
188
- **SHA-256 hash-chained audit** — Every event links to the previous event's hash. Tamper-evident by construction. Append-only JSONL.
189
-
190
- **Merkle proofs (RFC 6962)** — Inclusion and consistency proofs for public verifiability. Any third party can verify a specific event existed in the chain.
191
-
192
- **Policy engine** — 12 field operators (`eq`, `gt`, `in`, `regex`, etc.) with soft/hard enforcement. Block specific models, cap costs, require approvals.
193
-
194
- **PII detection** — Luhn-validated credit card numbers, SSN patterns, email addresses, phone numbers, IPv4 addresses. Block or warn before data leaves your network.
195
-
196
- **Circuit breakers** — Per-provider failure isolation. When a provider starts failing, the breaker opens and requests fail fast instead of cascading.
197
-
198
- **Pattern memory** — Learns optimal model routing from historical prompt-cost-success data. Feeds routing decisions when connected to proxy.
199
-
200
- ## Why this exists
201
-
202
- AI agents operate with financial authority. Every LLM call costs money. Without governance:
203
-
204
- - There is no audit trail when an agent spends $500 on a hallucinated loop
205
- - There is no budget enforcement across multiple concurrent agents
206
- - There is no way to prove what happened after the fact
207
- - A race condition between two agents can double-spend the same budget
208
-
209
- A counter in a database is not a financial ledger. `usertrust` uses the same double-entry, two-phase commit pattern that banks use. PENDING holds reserve the budget atomically. POST settles. VOID releases. The audit chain is hash-linked and Merkle-provable.
210
-
211
- ## Comparison
212
-
213
- | Feature | usertrust | LiteLLM | Portkey | Langfuse |
214
- |---------|-----------|---------|---------|----------|
215
- | Financial ledger | TigerBeetle | Counter | Counter | Observation |
216
- | Two-phase spend | PENDING/POST/VOID | No | No | No |
217
- | Hash-chained audit | SHA-256 | No | No | No |
218
- | Merkle proofs | RFC 6962 | No | No | No |
219
- | Policy engine | 12 operators | Basic rules | Basic rules | No |
220
- | PII detection | Luhn + regex | No | No | No |
221
- | Circuit breakers | Per-provider | Global | Per-provider | No |
222
- | Offline-first | Local vault | Proxy required | Proxy required | Proxy required |
223
- | Open source | Apache 2.0 | Apache 2.0 | Proprietary | Apache 2.0 |
49
+ import { verifyVault, exitCodeFor } from "usertrust-verify";
224
50
 
225
- ## Upgrade path
226
-
227
- When you outgrow local mode, point at the proxy. One line:
228
-
229
- ```typescript
230
- const client = await trust(new Anthropic(), {
231
- proxy: "https://proxy.usertools.ai",
232
- key: process.env.USERTOOLS_KEY,
233
- });
234
- ```
235
-
236
- Same API. Same receipts. Now with cross-agent budget enforcement, centralized audit, and real-time dashboards.
237
-
238
- ## Verify
239
-
240
- Standalone verification with zero dependencies:
241
-
242
- ```bash
243
- npx usertrust-verify .usertrust
244
- ```
245
-
246
- ```
247
- Vault integrity: VERIFIED
248
- Chain length: 847 events
249
- Merkle root: a3f8c1...d92b
250
- Hash algorithm: SHA-256
251
- First event: 2026-03-01T08:12:44.000Z
252
- Last event: 2026-03-16T14:33:21.000Z
253
- All hashes: valid (847/847)
51
+ const result = verifyVault(".usertrust");
52
+ if (!result.valid) {
53
+ console.error(result.errors);
54
+ process.exit(exitCodeFor(result)); // 1
55
+ }
254
56
  ```
255
57
 
256
- The verify package has zero runtime dependencies. It reads JSONL, recomputes SHA-256 hashes, and checks the chain. Anyone can verify a vault without trusting the usertrust SDK.
58
+ `verifyVault` re-implements canonicalization and hashing independently of `usertrust` and must stay byte-for-byte identical to the writer a differential test in the repo pins that invariant.
257
59
 
258
60
  ## License
259
61
 
260
- Apache 2.0
261
-
262
- ---
263
-
264
- UserTrust™ is a trademark of Usertools, Inc.
62
+ Apache 2.0 · UserTrust™ is a trademark of Usertools, Inc.
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // Copyright 2026 Usertools, Inc.
4
- import { verifyTransaction, verifyVault } from "./index.js";
4
+ import { exitCodeFor, verifyTransaction, verifyVault } from "./index.js";
5
5
  const args = process.argv.slice(2);
6
6
  // Parse --tx flag
7
7
  let vaultPath;
@@ -50,4 +50,6 @@ if (result.lastEvent)
50
50
  if (result.chainLength > 0) {
51
51
  console.log(`All hashes: valid (${result.validHashes}/${result.chainLength})`);
52
52
  }
53
+ // Exit nonzero on a FAILED verdict so CI gates fail on a tampered vault.
54
+ process.exit(exitCodeFor(result));
53
55
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,kBAAkB;AAClB,IAAI,SAA6B,CAAC;AAClC,IAAI,IAAwB,CAAC;AAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;IAC9B,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;QAC7B,CAAC,EAAE,CAAC,CAAC,gBAAgB;IACtB,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,SAAS,GAAG,GAAG,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,CAAC,SAAS,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,gCAAgC;AAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,wDAAwD;IACxD,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,gCAAgC;AAChC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAEtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC1C,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;AACF,CAAC;AACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,SAAS,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,UAAU;IAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,IAAI,MAAM,CAAC,SAAS;IAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACrE,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,kBAAkB;AAClB,IAAI,SAA6B,CAAC;AAClC,IAAI,IAAwB,CAAC;AAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;IAC9B,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;QAC7B,CAAC,EAAE,CAAC,CAAC,gBAAgB;IACtB,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,SAAS,GAAG,GAAG,CAAC;IACjB,CAAC;AACF,CAAC;AAED,IAAI,CAAC,SAAS,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,gCAAgC;AAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,wDAAwD;IACxD,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,gCAAgC;AAChC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAEtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC1C,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;AACF,CAAC;AACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,SAAS,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,UAAU;IAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,IAAI,MAAM,CAAC,SAAS;IAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACrE,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,yEAAyE;AACzE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,13 +12,24 @@ export interface VaultVerificationResult {
12
12
  lastEvent: string | null;
13
13
  }
14
14
  /**
15
- * Verify an entire `.usertrust` vault directory.
15
+ * Verify an entire `.usertrust` vault directory, anchored to the `.meta` head.
16
16
  *
17
- * Finds all `events.jsonl` files under `<vaultPath>/audit/`, verifies each
18
- * chain, computes a Merkle root over all event hashes, and returns a
19
- * consolidated report.
17
+ * BYTE-IDENTICAL to the core implementation (packages/core/src/audit/verify.ts):
18
+ * gathers `events.jsonl` plus every rotated `*.jsonl` segment, orders all events
19
+ * by the persisted global `sequence`, walks a single continuous chain (GENESIS
20
+ * required only at the global head), enforces sequence continuity (so whole-
21
+ * segment deletion surfaces as a sequence gap, not an indistinguishable
22
+ * "previousHash mismatch"), and checks the `.meta` tail anchor. The differential
23
+ * test pins the two implementations together.
20
24
  */
21
25
  export declare function verifyVault(vaultPath: string): VaultVerificationResult;
26
+ /**
27
+ * Pure vault-mode verdict → process exit-code mapping (0 = VERIFIED, 1 = FAILED).
28
+ * Extracted so the CLI's exit behavior is unit-testable without spawning a build.
29
+ */
30
+ export declare function exitCodeFor(result: {
31
+ valid: boolean;
32
+ }): number;
22
33
  export interface TransactionVerificationResult {
23
34
  readonly found: boolean;
24
35
  readonly valid: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,aAAa,EACb,cAAc,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC3B,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAqGtE;AAID,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,6BAA6B,CA0FhG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,aAAa,EACb,cAAc,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC3B,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAuKtE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE9D;AAID,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,6BAA6B,CA0FhG"}
package/dist/index.js CHANGED
@@ -1,42 +1,42 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright 2026 Usertools, Inc.
3
3
  // usertrust-verify — Standalone Audit Verification (zero dependencies)
4
+ import { createHash } from "node:crypto";
4
5
  import { existsSync, readFileSync, readdirSync } from "node:fs";
5
- import { join } from "node:path";
6
+ import { basename, join } from "node:path";
7
+ import { canonicalize } from "./canonical.js";
8
+ import { GENESIS_HASH } from "./constants.js";
6
9
  import { renderNotFound, renderReceipt, } from "./receipt.js";
7
- import { buildMerkleTree, generateInclusionProof, verifyChain, verifyInclusionProof, } from "./verify.js";
10
+ import { buildMerkleTree, generateInclusionProof, readAnchor, verifyChain, verifyInclusionProof, } from "./verify.js";
8
11
  export { canonicalize } from "./canonical.js";
9
12
  export { GENESIS_HASH } from "./constants.js";
10
13
  export { renderReceipt, renderNotFound, } from "./receipt.js";
11
14
  export { verifyChain, buildMerkleTree, hashLeaf, hashInternal, generateInclusionProof, verifyInclusionProof, generateConsistencyProof, verifyConsistencyProof, } from "./verify.js";
12
15
  /**
13
- * Verify an entire `.usertrust` vault directory.
16
+ * Verify an entire `.usertrust` vault directory, anchored to the `.meta` head.
14
17
  *
15
- * Finds all `events.jsonl` files under `<vaultPath>/audit/`, verifies each
16
- * chain, computes a Merkle root over all event hashes, and returns a
17
- * consolidated report.
18
+ * BYTE-IDENTICAL to the core implementation (packages/core/src/audit/verify.ts):
19
+ * gathers `events.jsonl` plus every rotated `*.jsonl` segment, orders all events
20
+ * by the persisted global `sequence`, walks a single continuous chain (GENESIS
21
+ * required only at the global head), enforces sequence continuity (so whole-
22
+ * segment deletion surfaces as a sequence gap, not an indistinguishable
23
+ * "previousHash mismatch"), and checks the `.meta` tail anchor. The differential
24
+ * test pins the two implementations together.
18
25
  */
19
26
  export function verifyVault(vaultPath) {
20
27
  const auditDir = join(vaultPath, "audit");
21
28
  const errors = [];
22
- let totalEvents = 0;
23
- let totalValid = 0;
24
- let firstEvent = null;
25
- let lastEvent = null;
26
- const allHashes = [];
27
- // Find all events.jsonl files
28
- const logPaths = [];
29
+ // 1-2. Gather segment files: events.jsonl first, then every other *.jsonl.
30
+ const segmentFiles = [];
29
31
  const mainLog = join(auditDir, "events.jsonl");
30
32
  if (existsSync(mainLog)) {
31
- logPaths.push(mainLog);
33
+ segmentFiles.push(mainLog);
32
34
  }
33
- // Also check for rotated segment files
34
35
  if (existsSync(auditDir)) {
35
36
  try {
36
- const entries = readdirSync(auditDir);
37
- for (const entry of entries) {
37
+ for (const entry of readdirSync(auditDir).sort()) {
38
38
  if (entry.endsWith(".jsonl") && entry !== "events.jsonl") {
39
- logPaths.push(join(auditDir, entry));
39
+ segmentFiles.push(join(auditDir, entry));
40
40
  }
41
41
  }
42
42
  }
@@ -44,10 +44,25 @@ export function verifyVault(vaultPath) {
44
44
  // Directory read failure — non-fatal
45
45
  }
46
46
  }
47
- if (logPaths.length === 0) {
47
+ // 3. Read the head anchor, fail-closed.
48
+ const anchorRaw = readAnchor(`${mainLog}.meta`);
49
+ let anchor = null;
50
+ if (anchorRaw !== null) {
51
+ if ("corrupt" in anchorRaw) {
52
+ errors.push("Audit anchor (.meta) present but corrupt");
53
+ }
54
+ else {
55
+ anchor = anchorRaw;
56
+ }
57
+ }
58
+ // 4. No segment files.
59
+ if (segmentFiles.length === 0) {
48
60
  if (!existsSync(auditDir)) {
49
61
  errors.push(`Audit directory not found: ${auditDir}`);
50
62
  }
63
+ if (anchor && anchor.sequence > 0) {
64
+ errors.push(`Audit log missing but anchor records ${anchor.sequence} event(s) (deletion detected)`);
65
+ }
51
66
  return {
52
67
  valid: errors.length === 0,
53
68
  errors,
@@ -58,56 +73,114 @@ export function verifyVault(vaultPath) {
58
73
  lastEvent: null,
59
74
  };
60
75
  }
61
- for (const logPath of logPaths) {
62
- const result = verifyChain(logPath);
63
- totalEvents += result.eventsVerified;
64
- if (result.errors.length > 0) {
65
- for (const err of result.errors) {
66
- errors.push(err);
76
+ // 5. Parse every line of every segment.
77
+ const events = [];
78
+ for (const segmentFile of segmentFiles) {
79
+ let content;
80
+ try {
81
+ content = readFileSync(segmentFile, "utf-8").trim();
82
+ }
83
+ catch {
84
+ // Unreadable segment (e.g. broken symlink) — skip.
85
+ continue;
86
+ }
87
+ if (content === "")
88
+ continue;
89
+ const lines = content.split("\n").filter((l) => l.trim());
90
+ for (let i = 0; i < lines.length; i++) {
91
+ const raw = lines[i];
92
+ try {
93
+ const parsed = JSON.parse(raw);
94
+ events.push({
95
+ id: typeof parsed.id === "string" ? parsed.id : "",
96
+ hash: typeof parsed.hash === "string" ? parsed.hash : "",
97
+ previousHash: typeof parsed.previousHash === "string" ? parsed.previousHash : "",
98
+ sequence: typeof parsed.sequence === "number" ? parsed.sequence : undefined,
99
+ timestamp: typeof parsed.timestamp === "string" ? parsed.timestamp : undefined,
100
+ parsed,
101
+ sourceFile: segmentFile,
102
+ line: i + 1,
103
+ });
104
+ }
105
+ catch {
106
+ errors.push(`malformed JSON (${basename(segmentFile)}:${i + 1})`);
67
107
  }
68
108
  }
69
- else {
70
- totalValid += result.eventsVerified;
71
- }
72
- // Extract event hashes and timestamps for the report
73
- if (existsSync(logPath)) {
74
- const content = readFileSync(logPath, "utf-8").trim();
75
- if (content) {
76
- const lines = content.split("\n").filter((l) => l.trim());
77
- for (const line of lines) {
78
- try {
79
- const event = JSON.parse(line);
80
- allHashes.push(event.hash);
81
- if (event.timestamp) {
82
- if (firstEvent === null) {
83
- firstEvent = event.timestamp;
84
- }
85
- lastEvent = event.timestamp;
86
- }
87
- }
88
- catch {
89
- // Already reported by verifyChain
90
- }
91
- }
109
+ }
110
+ // 6. Order by the persisted global sequence when available (legacy fallback:
111
+ // file order, for hand-built sequence-less single-segment fixtures).
112
+ const allHaveSeq = events.every((e) => typeof e.sequence === "number");
113
+ const ordered = allHaveSeq
114
+ ? [...events].sort((a, b) => a.sequence - b.sequence)
115
+ : events;
116
+ // 7. One continuous continuity walk.
117
+ let expectedPrev = GENESIS_HASH;
118
+ let validHashes = 0;
119
+ let firstEvent = null;
120
+ let lastEvent = null;
121
+ for (let i = 0; i < ordered.length; i++) {
122
+ const e = ordered[i];
123
+ if (e.previousHash !== expectedPrev) {
124
+ errors.push(`Event ${i + 1} (${e.id}): previousHash mismatch. Expected ${expectedPrev}, got ${e.previousHash}`);
125
+ }
126
+ if (allHaveSeq && i === 0 && e.sequence !== 1) {
127
+ errors.push(`Sequence starts at ${e.sequence}, expected 1 (leading events deleted)`);
128
+ }
129
+ if (allHaveSeq && i > 0) {
130
+ const prevSeq = ordered[i - 1].sequence;
131
+ if (e.sequence !== prevSeq + 1) {
132
+ errors.push(`Sequence gap: event ${e.sequence} follows ${prevSeq} (segment/event deletion)`);
92
133
  }
93
134
  }
135
+ const { hash: _storedHash, ...rest } = e.parsed;
136
+ const computed = createHash("sha256").update(canonicalize(rest)).digest("hex");
137
+ if (e.hash !== computed) {
138
+ errors.push(`Event ${i + 1} (${e.id}): hash mismatch. Expected ${computed}, got ${e.hash}`);
139
+ }
140
+ else {
141
+ validHashes++;
142
+ }
143
+ if (e.timestamp) {
144
+ if (firstEvent === null)
145
+ firstEvent = e.timestamp;
146
+ lastEvent = e.timestamp;
147
+ }
148
+ expectedPrev = e.hash;
94
149
  }
95
- // Compute Merkle root over all event hashes
150
+ // 8. Tail anchor (only when the anchor is present and well-formed).
151
+ if (anchor) {
152
+ const last = ordered.at(-1);
153
+ if (last && last.hash !== anchor.lastHash) {
154
+ errors.push(`anchor mismatch: expected last hash ${anchor.lastHash}, got ${last.hash} (tail truncation)`);
155
+ }
156
+ if (ordered.length !== anchor.sequence) {
157
+ errors.push(`anchor mismatch: expected ${anchor.sequence} event(s), found ${ordered.length} (truncation/deletion)`);
158
+ }
159
+ }
160
+ // 9. Merkle root over the ordered event hashes (informational).
96
161
  let merkleRoot = null;
97
- if (allHashes.length > 0) {
98
- const tree = buildMerkleTree(allHashes);
162
+ if (ordered.length > 0) {
163
+ const tree = buildMerkleTree(ordered.map((e) => e.hash));
99
164
  merkleRoot = tree.root ?? null;
100
165
  }
166
+ // 10.
101
167
  return {
102
168
  valid: errors.length === 0,
103
169
  errors,
104
- chainLength: totalEvents,
105
- validHashes: totalValid,
170
+ chainLength: events.length,
171
+ validHashes,
106
172
  merkleRoot,
107
173
  firstEvent,
108
174
  lastEvent,
109
175
  };
110
176
  }
177
+ /**
178
+ * Pure vault-mode verdict → process exit-code mapping (0 = VERIFIED, 1 = FAILED).
179
+ * Extracted so the CLI's exit behavior is unit-testable without spawning a build.
180
+ */
181
+ export function exitCodeFor(result) {
182
+ return result.valid ? 0 : 1;
183
+ }
111
184
  /**
112
185
  * Verify a single transaction and return a formatted receipt.
113
186
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/verify.d.ts CHANGED
@@ -6,6 +6,18 @@ export interface ChainVerificationResult {
6
6
  latestHash: string;
7
7
  verifiedAt: string;
8
8
  }
9
+ interface Anchor {
10
+ lastHash: string;
11
+ sequence: number;
12
+ }
13
+ /**
14
+ * Read the `.meta` head anchor sidecar. Fail-closed:
15
+ * - absent → `null` (unanchored / legacy vault; allowed)
16
+ * - present but unparseable or missing `lastHash`/`sequence` → `{ corrupt: true }`
17
+ */
18
+ export declare function readAnchor(metaPath: string): Anchor | {
19
+ corrupt: true;
20
+ } | null;
9
21
  export declare function verifyChain(logPath: string): ChainVerificationResult;
10
22
  export interface MerkleSibling {
11
23
  readonly hash: string;
@@ -37,4 +49,5 @@ export declare function generateInclusionProof(leafIndex: number, leaves: string
37
49
  export declare function verifyInclusionProof(proof: MerkleInclusionProof, publishedRoot: string, publishedTreeSize: number): boolean;
38
50
  export declare function generateConsistencyProof(firstSize: number, secondSize: number, leaves: string[]): MerkleConsistencyProof;
39
51
  export declare function verifyConsistencyProof(proof: MerkleConsistencyProof): boolean;
52
+ export {};
40
53
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAiFpE;AAOD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;IAClD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;CACnB,CAwBA;AAED,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,GACf,oBAAoB,CAiDtB;AAED,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GACvB,OAAO,CAoBT;AAiDD,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EAAE,GACd,sBAAsB,CAgCxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAqB7E"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AASD,UAAU,MAAM;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAW9E;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAgGpE;AAOD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;IAClD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;CACnB,CAwBA;AAED,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,GACf,oBAAoB,CAiDtB;AAED,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GACvB,OAAO,CAoBT;AAiDD,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EAAE,GACd,sBAAsB,CAgCxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAqB7E"}
package/dist/verify.js CHANGED
@@ -14,24 +14,46 @@ import { createHash } from "node:crypto";
14
14
  import { existsSync, readFileSync } from "node:fs";
15
15
  import { canonicalize } from "./canonical.js";
16
16
  import { GENESIS_HASH } from "./constants.js";
17
+ /**
18
+ * Read the `.meta` head anchor sidecar. Fail-closed:
19
+ * - absent → `null` (unanchored / legacy vault; allowed)
20
+ * - present but unparseable or missing `lastHash`/`sequence` → `{ corrupt: true }`
21
+ */
22
+ export function readAnchor(metaPath) {
23
+ if (!existsSync(metaPath))
24
+ return null;
25
+ try {
26
+ const parsed = JSON.parse(readFileSync(metaPath, "utf-8"));
27
+ if (typeof parsed.lastHash === "string" && typeof parsed.sequence === "number") {
28
+ return { lastHash: parsed.lastHash, sequence: parsed.sequence };
29
+ }
30
+ return { corrupt: true };
31
+ }
32
+ catch {
33
+ return { corrupt: true };
34
+ }
35
+ }
17
36
  export function verifyChain(logPath) {
18
37
  const errors = [];
19
- if (!existsSync(logPath)) {
20
- return {
21
- valid: true,
22
- eventsVerified: 0,
23
- errors: [],
24
- skipped: 0,
25
- latestHash: GENESIS_HASH,
26
- verifiedAt: new Date().toISOString(),
27
- };
38
+ const anchorRaw = readAnchor(`${logPath}.meta`);
39
+ let anchor = null;
40
+ if (anchorRaw !== null) {
41
+ if ("corrupt" in anchorRaw) {
42
+ errors.push("Audit anchor (.meta) present but corrupt");
43
+ }
44
+ else {
45
+ anchor = anchorRaw;
46
+ }
28
47
  }
29
- const content = readFileSync(logPath, "utf-8").trim();
30
- if (!content) {
48
+ const content = existsSync(logPath) ? readFileSync(logPath, "utf-8").trim() : "";
49
+ if (content === "") {
50
+ if (anchor && anchor.sequence > 0) {
51
+ errors.push(`Audit log missing/empty but anchor records ${anchor.sequence} event(s)`);
52
+ }
31
53
  return {
32
- valid: true,
54
+ valid: errors.length === 0,
33
55
  eventsVerified: 0,
34
- errors: [],
56
+ errors,
35
57
  skipped: 0,
36
58
  latestHash: GENESIS_HASH,
37
59
  verifiedAt: new Date().toISOString(),
@@ -72,6 +94,14 @@ export function verifyChain(logPath) {
72
94
  expectedPreviousHash = storedHash;
73
95
  latestHash = storedHash;
74
96
  }
97
+ if (anchor) {
98
+ if (latestHash !== anchor.lastHash) {
99
+ errors.push(`anchor mismatch: expected last hash ${anchor.lastHash}, got ${latestHash} (tail truncation)`);
100
+ }
101
+ if (lines.length !== anchor.sequence) {
102
+ errors.push(`anchor mismatch: expected ${anchor.sequence} event(s), found ${lines.length} (truncation/deletion)`);
103
+ }
104
+ }
75
105
  return {
76
106
  valid: errors.length === 0,
77
107
  eventsVerified: lines.length,
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAoB9C,MAAM,UAAU,WAAW,CAAC,OAAe;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO;YACN,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO;YACN,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,oBAAoB,GAAG,YAAY,CAAC;IACxC,IAAI,UAAU,GAAG,YAAY,CAAC;IAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAEhC,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YACJ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;QACxC,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CACV,IAAI,CAAC,SAAS,CAAC;gBACd,IAAI,EAAE,CAAC,GAAG,CAAC;gBACX,KAAK,EAAE,gBAAgB;gBACvB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;aAC3B,CAAC,CACF,CAAC;YACF,4DAA4D;YAC5D,iEAAiE;YACjE,OAAO,EAAE,CAAC;YACV,SAAS;QACV,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,oBAAoB,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,4BAA4B;gBACtD,YAAY,oBAAoB,SAAS,KAAK,CAAC,YAAY,EAAE,CAC9D,CAAC;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,KAAK,CAAC;QACxD,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1E,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,oBAAoB;gBAC9C,YAAY,YAAY,SAAS,UAAU,EAAE,CAC9C,CAAC;QACH,CAAC;QAED,oBAAoB,GAAG,UAAU,CAAC;QAClC,UAAU,GAAG,UAAU,CAAC;IACzB,CAAC;IAED,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,cAAc,EAAE,KAAK,CAAC,MAAM;QAC5B,MAAM;QACN,OAAO;QACP,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACH,CAAC;AAED,oBAAoB;AAEpB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAyB5C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,QAAQ,CAAC;SACzB,MAAM,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAgB;IAI/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,YAAY,GAAa,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAe,CAAC,YAAY,CAAC,CAAC;IAE1C,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAW,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC5C,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;QACD,YAAY,GAAG,SAAS,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,SAAiB,EACjB,MAAgB,EAChB,SAAiB;IAEjB,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,aAAa,SAAS,sBAAsB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,YAAY,GAAG,SAAS,CAAC;IAE7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAa,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAE/B,IAAI,YAAY,KAAK,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAC5C,SAAS;QACV,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,CAAW;gBACvC,QAAQ,EAAE,OAAO;aACjB,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,CAAW;gBACvC,QAAQ,EAAE,MAAM;aAChB,CAAC,CAAC;QACJ,CAAC;QAED,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAW,CAAC;IAE7C,OAAO;QACN,OAAO,EAAE,CAAC;QACV,QAAQ;QACR,SAAS;QACT,QAAQ,EAAE,MAAM,CAAC,MAAM;QACvB,IAAI;QACJ,SAAS;QACT,QAAQ;KACR,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,KAA2B,EAC3B,aAAqB,EACrB,iBAAyB;IAEzB,IAAI,KAAK,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE3C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACjC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,OAAO,WAAW,KAAK,KAAK,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,CAAS;IACzC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,CAAC,IAAI,CAAC,CAAC;IACR,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,QAAQ,CAChB,CAAS,EACT,CAAS,EACT,MAAgB,EAChB,KAAe,EACf,YAAqB;IAErB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;QACD,OAAO;IACR,CAAC;IAED,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACZ,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;SAAM,CAAC;QACP,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,SAAiB,EACjB,UAAkB,EAClB,MAAgB;IAEhB,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,4BAA4B,SAAS,gBAAgB,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,UAAU,CAAC,cAAc,UAAU,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAEhE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO;YACN,SAAS;YACT,UAAU;YACV,SAAS,EAAE,SAAS,CAAC,IAAc;YACnC,UAAU,EAAE,UAAU,CAAC,IAAc;YACrC,KAAK,EAAE,EAAE;SACT,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAE3D,OAAO;QACN,SAAS;QACT,UAAU;QACV,SAAS,EAAE,SAAS,CAAC,IAAc;QACnC,UAAU,EAAE,UAAU,CAAC,IAAc;QACrC,KAAK;KACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA6B;IACnE,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,CAAC;IACzE,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc,CAC/C,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,SAAS,CACf,CAAC;IAEF,OAAO,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC;AACzE,CAAC;AAED,SAAS,cAAc,CACtB,SAAiB,EACjB,UAAkB,EAClB,UAA6B,EAC7B,gBAAwB;IAExB,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,SAAS,OAAO;QACf,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IAGD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,KAAc;QACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;gBACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC;YACD,OAAO;QACR,CAAC;QAED,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;YACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAEjE,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,QAAgB,CAAC;IAErB,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,EAAE,GAAG,gBAAgB,CAAC;QACtB,EAAE,GAAG,gBAAgB,CAAC;QACtB,QAAQ,GAAG,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACP,EAAE,GAAI,KAAK,CAAC,CAAC,CAAgB,CAAC,IAAI,CAAC;QACnC,EAAE,GAAI,KAAK,CAAC,CAAC,CAAgB,CAAC,IAAI,CAAC;QACnC,QAAQ,GAAG,CAAC,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAe,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,EAAE,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "usertrust-verify",
3
- "version": "1.2.5",
3
+ "version": "1.4.0",
4
4
  "description": "Zero-dependency verifier for usertrust governance receipts. Validates hash chains, Merkle proofs, and audit trails.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Usertools, Inc. <hello@usertools.ai> (https://usertrust.ai)",
@@ -11,14 +11,7 @@
11
11
  "directory": "packages/verify"
12
12
  },
13
13
  "bugs": "https://github.com/usertools-ai/usertrust/issues",
14
- "keywords": [
15
- "ai",
16
- "governance",
17
- "audit",
18
- "verify",
19
- "hash-chain",
20
- "merkle"
21
- ],
14
+ "keywords": ["ai", "governance", "audit", "verify", "hash-chain", "merkle"],
22
15
  "type": "module",
23
16
  "main": "dist/index.js",
24
17
  "types": "dist/index.d.ts",
@@ -35,8 +28,6 @@
35
28
  "build": "tsc",
36
29
  "prepublishOnly": "tsc"
37
30
  },
38
- "files": [
39
- "dist"
40
- ],
31
+ "files": ["dist"],
41
32
  "dependencies": {}
42
33
  }