usertrust 0.2.4 → 0.2.6

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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI: usertrust completions <shell> — Output shell completion scripts
3
+ *
4
+ * Outputs completion scripts for bash, zsh, or fish to stdout.
5
+ * Follow the standard pattern used by kubectl, docker, gh, etc.
6
+ *
7
+ * Usage:
8
+ * usertrust completions bash
9
+ * usertrust completions zsh
10
+ * usertrust completions fish
11
+ */
12
+ import type { CliOptions } from "./init.js";
13
+ export declare function run(shell?: string, opts?: CliOptions): Promise<void>;
14
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/cli/completions.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAkL5C,wBAAsB,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC1E"}
@@ -0,0 +1,201 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright 2026 Usertools, Inc.
3
+ const SHELLS = ["bash", "zsh", "fish"];
4
+ function bashScript() {
5
+ return `# bash completion for usertrust
6
+ # Install: usertrust completions bash >> ~/.bashrc
7
+ # Or: usertrust completions bash > /etc/bash_completion.d/usertrust
8
+
9
+ _usertrust() {
10
+ local cur prev commands global_flags
11
+ COMPREPLY=()
12
+ cur="\${COMP_WORDS[COMP_CWORD]}"
13
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
14
+
15
+ commands="init inspect health verify snapshot tb completions"
16
+ global_flags="--json --help"
17
+
18
+ case "\${prev}" in
19
+ snapshot)
20
+ COMPREPLY=( $(compgen -W "create restore list" -- "\${cur}") )
21
+ return 0
22
+ ;;
23
+ tb)
24
+ COMPREPLY=( $(compgen -W "start stop status" -- "\${cur}") )
25
+ return 0
26
+ ;;
27
+ completions)
28
+ COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
29
+ return 0
30
+ ;;
31
+ usertrust)
32
+ COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
33
+ return 0
34
+ ;;
35
+ esac
36
+
37
+ if [[ "\${cur}" == -* ]]; then
38
+ COMPREPLY=( $(compgen -W "\${global_flags}" -- "\${cur}") )
39
+ return 0
40
+ fi
41
+
42
+ COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
43
+ return 0
44
+ }
45
+
46
+ complete -F _usertrust usertrust
47
+ `;
48
+ }
49
+ function zshScript() {
50
+ return `#compdef usertrust
51
+ # zsh completion for usertrust
52
+ # Install: usertrust completions zsh > ~/.zsh/completions/_usertrust
53
+ # Then add to .zshrc: fpath=(~/.zsh/completions $fpath); autoload -Uz compinit; compinit
54
+
55
+ _usertrust() {
56
+ local -a commands
57
+ commands=(
58
+ 'init:Initialize trust vault'
59
+ 'inspect:Show trust bank statement'
60
+ 'health:Show entropy diagnostics'
61
+ 'verify:Verify audit chain integrity'
62
+ 'snapshot:Create/restore vault snapshots'
63
+ 'tb:Manage TigerBeetle process'
64
+ 'completions:Output shell completion scripts'
65
+ )
66
+
67
+ local -a global_flags
68
+ global_flags=(
69
+ '--json[Output machine-readable JSON]'
70
+ '--help[Show help]'
71
+ )
72
+
73
+ _arguments -C \\
74
+ '1:command:->command' \\
75
+ '*::arg:->args'
76
+
77
+ case "\$state" in
78
+ command)
79
+ _describe 'usertrust command' commands
80
+ _values 'flags' \${global_flags}
81
+ ;;
82
+ args)
83
+ case "\${words[1]}" in
84
+ snapshot)
85
+ local -a snapshot_cmds
86
+ snapshot_cmds=('create:Create a snapshot' 'restore:Restore a snapshot' 'list:List snapshots')
87
+ _describe 'snapshot subcommand' snapshot_cmds
88
+ ;;
89
+ tb)
90
+ local -a tb_cmds
91
+ tb_cmds=('start:Start TigerBeetle' 'stop:Stop TigerBeetle' 'status:Show TigerBeetle status')
92
+ _describe 'tb subcommand' tb_cmds
93
+ ;;
94
+ completions)
95
+ local -a shells
96
+ shells=('bash:Bash completion' 'zsh:Zsh completion' 'fish:Fish completion')
97
+ _describe 'shell' shells
98
+ ;;
99
+ esac
100
+ ;;
101
+ esac
102
+ }
103
+
104
+ compdef _usertrust usertrust
105
+ `;
106
+ }
107
+ function fishScript() {
108
+ return `# fish completion for usertrust
109
+ # Install: usertrust completions fish > ~/.config/fish/completions/usertrust.fish
110
+
111
+ # Disable file completions
112
+ complete -c usertrust -f
113
+
114
+ # Commands
115
+ complete -c usertrust -n '__fish_use_subcommand' -a init -d 'Initialize trust vault'
116
+ complete -c usertrust -n '__fish_use_subcommand' -a inspect -d 'Show trust bank statement'
117
+ complete -c usertrust -n '__fish_use_subcommand' -a health -d 'Show entropy diagnostics'
118
+ complete -c usertrust -n '__fish_use_subcommand' -a verify -d 'Verify audit chain integrity'
119
+ complete -c usertrust -n '__fish_use_subcommand' -a snapshot -d 'Create/restore vault snapshots'
120
+ complete -c usertrust -n '__fish_use_subcommand' -a tb -d 'Manage TigerBeetle process'
121
+ complete -c usertrust -n '__fish_use_subcommand' -a completions -d 'Output shell completion scripts'
122
+
123
+ # Global flags
124
+ complete -c usertrust -l json -d 'Output machine-readable JSON'
125
+ complete -c usertrust -l help -d 'Show help'
126
+
127
+ # snapshot subcommands
128
+ complete -c usertrust -n '__fish_seen_subcommand_from snapshot' -a create -d 'Create a snapshot'
129
+ complete -c usertrust -n '__fish_seen_subcommand_from snapshot' -a restore -d 'Restore a snapshot'
130
+ complete -c usertrust -n '__fish_seen_subcommand_from snapshot' -a list -d 'List snapshots'
131
+
132
+ # tb subcommands
133
+ complete -c usertrust -n '__fish_seen_subcommand_from tb' -a start -d 'Start TigerBeetle'
134
+ complete -c usertrust -n '__fish_seen_subcommand_from tb' -a stop -d 'Stop TigerBeetle'
135
+ complete -c usertrust -n '__fish_seen_subcommand_from tb' -a status -d 'Show TigerBeetle status'
136
+
137
+ # completions subcommands
138
+ complete -c usertrust -n '__fish_seen_subcommand_from completions' -a bash -d 'Bash completion'
139
+ complete -c usertrust -n '__fish_seen_subcommand_from completions' -a zsh -d 'Zsh completion'
140
+ complete -c usertrust -n '__fish_seen_subcommand_from completions' -a fish -d 'Fish completion'
141
+ `;
142
+ }
143
+ function isShell(value) {
144
+ return SHELLS.includes(value);
145
+ }
146
+ function getScript(shell) {
147
+ switch (shell) {
148
+ case "bash":
149
+ return bashScript();
150
+ case "zsh":
151
+ return zshScript();
152
+ case "fish":
153
+ return fishScript();
154
+ }
155
+ }
156
+ function printUsage() {
157
+ console.log(`Usage: usertrust completions <shell>
158
+
159
+ Generate shell completion scripts.
160
+
161
+ Shells:
162
+ bash Bash completion script
163
+ zsh Zsh completion script
164
+ fish Fish completion script
165
+
166
+ Examples:
167
+ usertrust completions bash >> ~/.bashrc
168
+ usertrust completions zsh > ~/.zsh/completions/_usertrust
169
+ usertrust completions fish > ~/.config/fish/completions/usertrust.fish`);
170
+ }
171
+ export async function run(shell, opts) {
172
+ const json = opts?.json === true;
173
+ if (!shell || !isShell(shell)) {
174
+ if (json) {
175
+ console.log(JSON.stringify({
176
+ command: "completions",
177
+ success: false,
178
+ data: {
179
+ message: shell ? `Unknown shell: ${shell}` : "No shell specified",
180
+ shells: [...SHELLS],
181
+ },
182
+ }));
183
+ }
184
+ else {
185
+ printUsage();
186
+ }
187
+ return;
188
+ }
189
+ const script = getScript(shell);
190
+ if (json) {
191
+ console.log(JSON.stringify({
192
+ command: "completions",
193
+ success: true,
194
+ data: { shell, script },
195
+ }));
196
+ }
197
+ else {
198
+ process.stdout.write(script);
199
+ }
200
+ }
201
+ //# sourceMappingURL=completions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/cli/completions.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAgBjC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAGhD,SAAS,UAAU;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CP,CAAC;AACF,CAAC;AAED,SAAS,SAAS;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDP,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCP,CAAC;AACF,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC9B,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,MAAM;YACV,OAAO,UAAU,EAAE,CAAC;QACrB,KAAK,KAAK;YACT,OAAO,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM;YACV,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IAClB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;yEAY4D,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,KAAc,EAAE,IAAiB;IAC1D,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEjC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;gBACd,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACL,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAC,oBAAoB;oBACjE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;iBACnB;aACD,CAAC,CACF,CAAC;QACH,CAAC;aAAM,CAAC;YACP,UAAU,EAAE,CAAC;QACd,CAAC;QACD,OAAO;IACR,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;YACd,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACvB,CAAC,CACF,CAAC;IACH,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;AACF,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function run(rootDir?: string): Promise<void>;
1
+ import type { CliOptions } from "./init.js";
2
+ export declare function run(rootDir?: string, opts?: CliOptions): Promise<void>;
2
3
  //# sourceMappingURL=health.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAqEA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEzD"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAoE5C,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G5E"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import pc from "picocolors";
11
12
  import { computeEntropyScore, } from "../audit/entropy.js";
12
13
  import { verifyChain } from "../audit/verify.js";
13
14
  import { VAULT_DIR } from "../shared/constants.js";
@@ -51,6 +52,16 @@ function levelLabel(level) {
51
52
  return "critical";
52
53
  }
53
54
  }
55
+ function coloredLevel(level) {
56
+ switch (level) {
57
+ case "low":
58
+ return pc.green("healthy");
59
+ case "elevated":
60
+ return pc.yellow("elevated");
61
+ case "critical":
62
+ return pc.red("critical");
63
+ }
64
+ }
54
65
  function statusTag(value, hits) {
55
66
  if (hits === 0)
56
67
  return "[ok]";
@@ -60,11 +71,30 @@ function statusTag(value, hits) {
60
71
  return "[elevated]";
61
72
  return "[critical]";
62
73
  }
63
- export async function run(rootDir) {
74
+ function coloredTag(value, hits) {
75
+ if (hits === 0)
76
+ return pc.green("[ok]");
77
+ if (value < 0.3)
78
+ return pc.green("[low]");
79
+ if (value < 0.6)
80
+ return pc.yellow("[elevated]");
81
+ return pc.red("[critical]");
82
+ }
83
+ export async function run(rootDir, opts) {
64
84
  const root = rootDir ?? process.cwd();
65
85
  const vaultPath = join(root, VAULT_DIR);
86
+ const json = opts?.json === true;
66
87
  if (!existsSync(vaultPath)) {
67
- console.log("No trust vault found. Run `usertrust init` first.");
88
+ if (json) {
89
+ console.log(JSON.stringify({
90
+ command: "health",
91
+ success: false,
92
+ data: { message: "No trust vault found. Run `usertrust init` first." },
93
+ }));
94
+ }
95
+ else {
96
+ console.log(`${pc.red("No trust vault found.")} Run \`usertrust init\` first.`);
97
+ }
68
98
  return;
69
99
  }
70
100
  const events = loadEvents(vaultPath);
@@ -91,31 +121,54 @@ export async function run(rootDir) {
91
121
  }
92
122
  }
93
123
  const budgetPct = config.budget > 0 ? ((spent / config.budget) * 100).toFixed(1) : "0.0";
94
- console.log(`Entropy score: ${report.score}/100 (${levelLabel(report.level)})`);
95
- // Signal 1: Policy violations
124
+ // Signal values
96
125
  const policySignal = report.signals.find((s) => s.condition === "policy_violations");
97
126
  const policyHits = policySignal?.hits ?? 0;
98
- const policyStatus = statusTag(policySignal?.value ?? 0, policyHits);
127
+ const piiSignal = report.signals.find((s) => s.condition === "pii_detections");
128
+ const piiHits = piiSignal?.hits ?? 0;
129
+ const cbSignal = report.signals.find((s) => s.condition === "circuit_breaker_trips");
130
+ const cbHits = cbSignal?.hits ?? 0;
131
+ const pmSignal = report.signals.find((s) => s.condition === "pattern_memory_hits");
132
+ const pmHits = pmSignal?.hits ?? 0;
133
+ if (json) {
134
+ console.log(JSON.stringify({
135
+ command: "health",
136
+ success: true,
137
+ data: {
138
+ score: report.score,
139
+ level: levelLabel(report.level),
140
+ signals: {
141
+ policyViolations: policyHits,
142
+ budgetUtilization: Number.parseFloat(budgetPct),
143
+ chainIntegrity: verification.valid,
144
+ piiDetections: piiHits,
145
+ circuitBreakerTrips: cbHits,
146
+ patternMemoryHits: pmHits,
147
+ },
148
+ },
149
+ }));
150
+ return;
151
+ }
152
+ console.log(`Entropy score: ${report.score}/100 (${coloredLevel(report.level)})`);
153
+ // Signal 1: Policy violations
154
+ const policyStatus = coloredTag(policySignal?.value ?? 0, policyHits);
99
155
  console.log(` Policy violations (30d): ${policyHits} ${policyStatus}`);
100
156
  // Signal 2: Budget utilization
101
- const budgetStatus = Number.parseFloat(budgetPct) > 80 ? "[elevated]" : "[ok]";
157
+ const budgetStatus = Number.parseFloat(budgetPct) > 80 ? pc.yellow("[elevated]") : pc.green("[ok]");
102
158
  console.log(` Budget utilization: ${budgetPct}% ${budgetStatus}`);
103
159
  // Signal 3: Chain integrity
104
- console.log(` Chain integrity: ${chainLabel} ${chainStatus}`);
160
+ const chainColored = verification.valid
161
+ ? pc.green(`${chainLabel} ${chainStatus}`)
162
+ : pc.red(`${chainLabel} ${chainStatus}`);
163
+ console.log(` Chain integrity: ${chainColored}`);
105
164
  // Signal 4: PII detections
106
- const piiSignal = report.signals.find((s) => s.condition === "pii_detections");
107
- const piiHits = piiSignal?.hits ?? 0;
108
- const piiStatus = statusTag(piiSignal?.value ?? 0, piiHits);
165
+ const piiStatus = coloredTag(piiSignal?.value ?? 0, piiHits);
109
166
  console.log(` PII detections (30d): ${piiHits} ${piiStatus}`);
110
167
  // Signal 5: Circuit breaker trips
111
- const cbSignal = report.signals.find((s) => s.condition === "circuit_breaker_trips");
112
- const cbHits = cbSignal?.hits ?? 0;
113
- const cbStatus = statusTag(cbSignal?.value ?? 0, cbHits);
168
+ const cbStatus = coloredTag(cbSignal?.value ?? 0, cbHits);
114
169
  console.log(` Circuit breaker trips: ${cbHits} ${cbStatus}`);
115
170
  // Signal 6: Pattern memory hits
116
- const pmSignal = report.signals.find((s) => s.condition === "pattern_memory_hits");
117
- const pmHits = pmSignal?.hits ?? 0;
118
- const pmStatus = statusTag(pmSignal?.value ?? 0, pmHits);
171
+ const pmStatus = coloredTag(pmSignal?.value ?? 0, pmHits);
119
172
  console.log(` Pattern memory hits: ${pmHits} ${pmStatus}`);
120
173
  }
121
174
  //# sourceMappingURL=health.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
- export declare function run(rootDir?: string): Promise<void>;
1
+ export interface CliOptions {
2
+ json?: boolean;
3
+ }
4
+ export declare function run(rootDir?: string, opts?: CliOptions): Promise<void>;
2
5
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAkDA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCzD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAsCD,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D5E"}
package/dist/cli/init.js CHANGED
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { chmodSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import pc from "picocolors";
11
12
  import { VAULT_DIR } from "../shared/constants.js";
12
13
  const DEFAULT_CONFIG = {
13
14
  budget: 50000,
@@ -41,11 +42,21 @@ const GITIGNORE = `tigerbeetle/
41
42
  dlq/
42
43
  `;
43
44
  const SUBDIRS = ["audit", "policies", "patterns", "snapshots", "board", "dlq"];
44
- export async function run(rootDir) {
45
+ export async function run(rootDir, opts) {
45
46
  const root = rootDir ?? process.cwd();
46
47
  const vaultPath = join(root, VAULT_DIR);
48
+ const json = opts?.json === true;
47
49
  if (existsSync(vaultPath)) {
48
- console.log(`Vault already exists at ${vaultPath}`);
50
+ if (json) {
51
+ console.log(JSON.stringify({
52
+ command: "init",
53
+ success: false,
54
+ data: { message: "Vault already exists", path: vaultPath },
55
+ }));
56
+ }
57
+ else {
58
+ console.log(pc.yellow(`Vault already exists at ${vaultPath}`));
59
+ }
49
60
  return;
50
61
  }
51
62
  // Create directory structure
@@ -61,9 +72,23 @@ export async function run(rootDir) {
61
72
  writeFileSync(join(vaultPath, ".gitignore"), GITIGNORE, "utf-8");
62
73
  // Set vault permissions to 700 (owner only)
63
74
  chmodSync(vaultPath, 0o700);
64
- console.log(`Initialized trust vault at ${vaultPath}`);
65
- console.log(" Created: audit/, policies/, patterns/, snapshots/, board/, dlq/");
66
- console.log(" Config: usertrust.config.json");
67
- console.log(" Policy: policies/default.yml");
75
+ if (json) {
76
+ console.log(JSON.stringify({
77
+ command: "init",
78
+ success: true,
79
+ data: {
80
+ path: vaultPath,
81
+ directories: [...SUBDIRS],
82
+ config: "usertrust.config.json",
83
+ policy: "policies/default.yml",
84
+ },
85
+ }));
86
+ }
87
+ else {
88
+ console.log(pc.green(`Initialized trust vault at ${vaultPath}`));
89
+ console.log(pc.dim(" Created: audit/, policies/, patterns/, snapshots/, board/, dlq/"));
90
+ console.log(pc.dim(" Config: usertrust.config.json"));
91
+ console.log(pc.dim(" Policy: policies/default.yml"));
92
+ }
68
93
  }
69
94
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,cAAc,GAAG;IACtB,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,wBAAwB;IAClC,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE;IAChD,cAAc,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE;IAC5D,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7C,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;CAC/C,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgBtB,CAAC;AAEF,MAAM,SAAS,GAAG;;;CAGjB,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAgB;IACzC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACpD,OAAO;IACR,CAAC;IAED,6BAA6B;IAC7B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,uBAAuB;IACvB,aAAa,CACZ,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,EAC1C,OAAO,CACP,CAAC;IAEF,uBAAuB;IACvB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAEnF,mBAAmB;IACnB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjE,4CAA4C;IAC5C,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export declare function run(rootDir?: string): Promise<void>;
1
+ import type { CliOptions } from "./init.js";
2
+ export declare function run(rootDir?: string, opts?: CliOptions): Promise<void>;
2
3
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/cli/inspect.ts"],"names":[],"mappings":"AA6EA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DzD"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/cli/inspect.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA8D5C,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8G5E"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { existsSync, readFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import pc from "picocolors";
11
12
  import { buildMerkleTree } from "../audit/merkle.js";
12
13
  import { verifyChain } from "../audit/verify.js";
13
14
  import { VAULT_DIR } from "../shared/constants.js";
@@ -69,11 +70,21 @@ function padRight(s, len) {
69
70
  function padLeft(s, len) {
70
71
  return s.length >= len ? s.slice(0, len) : " ".repeat(len - s.length) + s;
71
72
  }
72
- export async function run(rootDir) {
73
+ export async function run(rootDir, opts) {
73
74
  const root = rootDir ?? process.cwd();
74
75
  const vaultPath = join(root, VAULT_DIR);
76
+ const json = opts?.json === true;
75
77
  if (!existsSync(vaultPath)) {
76
- console.log("No trust vault found. Run `usertrust init` first.");
78
+ if (json) {
79
+ console.log(JSON.stringify({
80
+ command: "inspect",
81
+ success: false,
82
+ data: { message: "No trust vault found. Run `usertrust init` first." },
83
+ }));
84
+ }
85
+ else {
86
+ console.log(`${pc.red("No trust vault found.")} Run \`usertrust init\` first.`);
87
+ }
77
88
  return;
78
89
  }
79
90
  const config = loadConfig(vaultPath);
@@ -87,12 +98,40 @@ export async function run(rootDir) {
87
98
  // Build Merkle tree from event hashes
88
99
  const eventHashes = events.map((e) => e.hash);
89
100
  const { root: merkleRoot } = buildMerkleTree(eventHashes);
90
- const integrityLabel = verification.valid ? "SHA-256 verified" : "INTEGRITY FAILURE";
101
+ if (json) {
102
+ const transactions = events
103
+ .slice(-10)
104
+ .reverse()
105
+ .map((e) => ({
106
+ time: e.timestamp,
107
+ model: typeof e.data.model === "string" ? e.data.model : "unknown",
108
+ cost: typeof e.data.cost === "number" ? e.data.cost : null,
109
+ receipt: typeof e.data.transferId === "string" ? e.data.transferId : e.id,
110
+ }));
111
+ console.log(JSON.stringify({
112
+ command: "inspect",
113
+ success: true,
114
+ data: {
115
+ budget: config.budget,
116
+ spent,
117
+ remaining,
118
+ percentRemaining: Number.parseFloat(pct),
119
+ chain: {
120
+ events: verification.eventsVerified,
121
+ valid: verification.valid,
122
+ latestHash: verification.latestHash,
123
+ },
124
+ merkleRoot: merkleRoot ?? null,
125
+ transactions,
126
+ },
127
+ }));
128
+ return;
129
+ }
91
130
  // Header
92
131
  console.log("+--------------------------------------------------------------+");
93
- console.log(`| * usertrust vault${" ".repeat(43)}|`);
132
+ console.log(`| ${pc.bold("* usertrust vault")}${" ".repeat(43)}|`);
94
133
  console.log(`${`| Budget: ${remaining.toLocaleString()} / ${config.budget.toLocaleString()} UT remaining (${pct}%)`.padEnd(63)}|`);
95
- console.log(`${`| Chain: ${verification.eventsVerified} events | Integrity: ${integrityLabel}`.padEnd(63)}|`);
134
+ console.log(`${`| Chain: ${verification.eventsVerified} events | Integrity: ${verification.valid ? "SHA-256 verified" : "INTEGRITY FAILURE"}`.padEnd(63)}|`);
96
135
  if (merkleRoot) {
97
136
  console.log(`${`| Merkle root: ${merkleRoot.slice(0, 16)}...`.padEnd(63)}|`);
98
137
  }
@@ -112,5 +151,9 @@ export async function run(rootDir) {
112
151
  console.log(`| ${padRight("No transactions recorded", 58)} |`);
113
152
  }
114
153
  console.log("+----------+--------------+--------+---------------------------+");
154
+ // Show integrity status with color below the table
155
+ if (!verification.valid) {
156
+ console.log(pc.red("WARNING: Chain integrity check failed!"));
157
+ }
115
158
  }
116
159
  //# sourceMappingURL=inspect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/cli/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/cli/inspect.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ declare const COMMANDS: readonly ["init", "inspect", "health", "verify", "snapshot", "tb", "completions"];
3
+ /** Simple Levenshtein distance — two-row DP, no dependency needed. */
4
+ declare function levenshtein(a: string, b: string): number;
5
+ declare function suggestCommand(input: string): string | undefined;
6
+ export { levenshtein, suggestCommand, COMMANDS };
3
7
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAIA,QAAA,MAAM,QAAQ,mFAAoF,CAAC;AAOnG,sEAAsE;AACtE,iBAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAczD;AAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC"}
package/dist/cli/main.js CHANGED
@@ -1,37 +1,89 @@
1
1
  #!/usr/bin/env node
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // Copyright 2026 Usertools, Inc.
4
- const command = process.argv[2];
4
+ const COMMANDS = ["init", "inspect", "health", "verify", "snapshot", "tb", "completions"];
5
+ const argv = process.argv.slice(2);
6
+ const jsonFlag = argv.includes("--json");
7
+ const positional = argv.filter((a) => a !== "--json");
8
+ const command = positional[0];
9
+ /** Simple Levenshtein distance — two-row DP, no dependency needed. */
10
+ function levenshtein(a, b) {
11
+ const m = a.length;
12
+ const n = b.length;
13
+ // Two-row approach avoids indexed-access non-null assertions
14
+ let prev = new Uint32Array(n + 1);
15
+ let curr = new Uint32Array(n + 1);
16
+ for (let j = 0; j <= n; j++)
17
+ prev[j] = j;
18
+ for (let i = 1; i <= m; i++) {
19
+ curr[0] = i;
20
+ for (let j = 1; j <= n; j++) {
21
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
22
+ curr[j] = Math.min((prev[j] ?? 0) + 1, (curr[j - 1] ?? 0) + 1, (prev[j - 1] ?? 0) + cost);
23
+ }
24
+ [prev, curr] = [curr, prev];
25
+ }
26
+ return prev[n] ?? 0;
27
+ }
28
+ function suggestCommand(input) {
29
+ let best;
30
+ let bestDist = Number.POSITIVE_INFINITY;
31
+ for (const cmd of COMMANDS) {
32
+ const dist = levenshtein(input, cmd);
33
+ if (dist < bestDist) {
34
+ bestDist = dist;
35
+ best = cmd;
36
+ }
37
+ }
38
+ // Only suggest if the distance is reasonable (max 3 edits)
39
+ return bestDist <= 3 ? best : undefined;
40
+ }
41
+ export { levenshtein, suggestCommand, COMMANDS };
5
42
  switch (command) {
6
43
  case "init":
7
- await import("./init.js").then((m) => m.run());
44
+ await import("./init.js").then((m) => m.run(undefined, { json: jsonFlag }));
8
45
  break;
9
46
  case "inspect":
10
- await import("./inspect.js").then((m) => m.run());
47
+ await import("./inspect.js").then((m) => m.run(undefined, { json: jsonFlag }));
11
48
  break;
12
49
  case "health":
13
- await import("./health.js").then((m) => m.run());
50
+ await import("./health.js").then((m) => m.run(undefined, { json: jsonFlag }));
14
51
  break;
15
52
  case "verify":
16
- await import("./verify.js").then((m) => m.run());
53
+ await import("./verify.js").then((m) => m.run(undefined, { json: jsonFlag }));
17
54
  break;
18
55
  case "snapshot":
19
- await import("./snapshot.js").then((m) => m.run());
56
+ await import("./snapshot.js").then((m) => m.run(undefined, { json: jsonFlag }));
20
57
  break;
21
58
  case "tb":
22
- await import("./tb.js").then((m) => m.run());
59
+ await import("./tb.js").then((m) => m.run({ json: jsonFlag }));
23
60
  break;
24
- default:
61
+ case "completions":
62
+ await import("./completions.js").then((m) => m.run(positional[1], { json: jsonFlag }));
63
+ break;
64
+ default: {
65
+ if (command && !command.startsWith("-")) {
66
+ const suggestion = suggestCommand(command);
67
+ if (suggestion) {
68
+ console.log(`Unknown command: "${command}"`);
69
+ console.log(`Did you mean "${suggestion}"?`);
70
+ break;
71
+ }
72
+ }
25
73
  console.log(`Usage: usertrust <command>
26
74
 
27
75
  Commands:
28
- init Initialize trust vault
29
- inspect Show trust bank statement
30
- health Show entropy diagnostics
31
- verify Verify audit chain integrity
32
- snapshot Create/restore vault snapshots
33
- tb Manage TigerBeetle process`);
76
+ init Initialize trust vault
77
+ inspect Show trust bank statement
78
+ health Show entropy diagnostics
79
+ verify Verify audit chain integrity
80
+ snapshot Create/restore vault snapshots
81
+ tb Manage TigerBeetle process
82
+ completions Output shell completion scripts
83
+
84
+ Options:
85
+ --json Output machine-readable JSON`);
34
86
  break;
87
+ }
35
88
  }
36
- export {};
37
89
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,iCAAiC;AAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IACjB,KAAK,MAAM;QACV,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,MAAM;IACP,KAAK,SAAS;QACb,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM;IACP,KAAK,QAAQ;QACZ,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM;IACP,KAAK,QAAQ;QACZ,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM;IACP,KAAK,UAAU;QACd,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,MAAM;IACP,KAAK,IAAI;QACR,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM;IACP;QACC,OAAO,CAAC,GAAG,CAAC;;;;;;;;wCAQ0B,CAAC,CAAC;QACxC,MAAM;AACR,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export declare function run(rootDir?: string): Promise<void>;
1
+ import type { CliOptions } from "./init.js";
2
+ export declare function run(rootDir?: string, opts?: CliOptions): Promise<void>;
2
3
  //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/cli/snapshot.ts"],"names":[],"mappings":"AAiBA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDzD"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/cli/snapshot.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0I5E"}
@@ -10,53 +10,131 @@
10
10
  */
11
11
  import { existsSync } from "node:fs";
12
12
  import { join } from "node:path";
13
+ import pc from "picocolors";
13
14
  import { VAULT_DIR } from "../shared/constants.js";
14
15
  import { createSnapshot, listSnapshots, restoreSnapshot } from "../snapshot/checkpoint.js";
15
- export async function run(rootDir) {
16
+ export async function run(rootDir, opts) {
16
17
  const root = rootDir ?? process.cwd();
17
18
  const vaultPath = join(root, VAULT_DIR);
19
+ const json = opts?.json === true;
18
20
  if (!existsSync(vaultPath)) {
19
- console.log("No trust vault found. Run `usertrust init` first.");
21
+ if (json) {
22
+ console.log(JSON.stringify({
23
+ command: "snapshot",
24
+ success: false,
25
+ data: { message: "No trust vault found. Run `usertrust init` first." },
26
+ }));
27
+ }
28
+ else {
29
+ console.log(`${pc.red("No trust vault found.")} Run \`usertrust init\` first.`);
30
+ }
20
31
  return;
21
32
  }
22
- const subcommand = rootDir !== undefined ? process.argv[3] : process.argv[3];
33
+ const subcommand = process.argv[3];
23
34
  const name = process.argv[4];
24
35
  switch (subcommand) {
25
36
  case "create": {
26
37
  if (!name) {
27
- console.log("Usage: usertrust snapshot create <name>");
38
+ if (json) {
39
+ console.log(JSON.stringify({
40
+ command: "snapshot",
41
+ success: false,
42
+ data: { message: "Missing snapshot name" },
43
+ }));
44
+ }
45
+ else {
46
+ console.log("Usage: usertrust snapshot create <name>");
47
+ }
28
48
  return;
29
49
  }
30
50
  const meta = await createSnapshot(vaultPath, name);
31
- console.log(`Snapshot created: ${meta.name}`);
32
- console.log(` Files: ${meta.files.length}`);
33
- console.log(` Size: ${meta.size} bytes`);
34
- console.log(` Timestamp: ${meta.timestamp}`);
51
+ if (json) {
52
+ console.log(JSON.stringify({
53
+ command: "snapshot",
54
+ success: true,
55
+ data: {
56
+ action: "create",
57
+ name: meta.name,
58
+ files: meta.files.length,
59
+ size: meta.size,
60
+ timestamp: meta.timestamp,
61
+ },
62
+ }));
63
+ }
64
+ else {
65
+ console.log(pc.green(`Snapshot created: ${meta.name}`));
66
+ console.log(pc.dim(` Files: ${meta.files.length}`));
67
+ console.log(pc.dim(` Size: ${meta.size} bytes`));
68
+ console.log(pc.dim(` Timestamp: ${meta.timestamp}`));
69
+ }
35
70
  break;
36
71
  }
37
72
  case "restore": {
38
73
  if (!name) {
39
- console.log("Usage: usertrust snapshot restore <name>");
74
+ if (json) {
75
+ console.log(JSON.stringify({
76
+ command: "snapshot",
77
+ success: false,
78
+ data: { message: "Missing snapshot name" },
79
+ }));
80
+ }
81
+ else {
82
+ console.log("Usage: usertrust snapshot restore <name>");
83
+ }
40
84
  return;
41
85
  }
42
86
  await restoreSnapshot(vaultPath, name);
43
- console.log(`Snapshot restored: ${name}`);
87
+ if (json) {
88
+ console.log(JSON.stringify({
89
+ command: "snapshot",
90
+ success: true,
91
+ data: { action: "restore", name },
92
+ }));
93
+ }
94
+ else {
95
+ console.log(pc.green(`Snapshot restored: ${name}`));
96
+ }
44
97
  break;
45
98
  }
46
99
  case "list": {
47
100
  const snapshots = await listSnapshots(vaultPath);
48
- if (snapshots.length === 0) {
49
- console.log("No snapshots found.");
50
- return;
101
+ if (json) {
102
+ console.log(JSON.stringify({
103
+ command: "snapshot",
104
+ success: true,
105
+ data: {
106
+ action: "list",
107
+ snapshots: snapshots.map((s) => ({
108
+ name: s.name,
109
+ files: s.files.length,
110
+ size: s.size,
111
+ timestamp: s.timestamp,
112
+ })),
113
+ },
114
+ }));
115
+ }
116
+ else if (snapshots.length === 0) {
117
+ console.log(pc.dim("No snapshots found."));
51
118
  }
52
- console.log("Snapshots:");
53
- for (const s of snapshots) {
54
- console.log(` ${s.name} (${s.files.length} files, ${s.size} bytes, ${s.timestamp})`);
119
+ else {
120
+ console.log("Snapshots:");
121
+ for (const s of snapshots) {
122
+ console.log(` ${pc.bold(s.name)} ${pc.dim(`(${s.files.length} files, ${s.size} bytes, ${s.timestamp})`)}`);
123
+ }
55
124
  }
56
125
  break;
57
126
  }
58
127
  default:
59
- console.log("Usage: usertrust snapshot <create|restore|list> [name]");
128
+ if (json) {
129
+ console.log(JSON.stringify({
130
+ command: "snapshot",
131
+ success: false,
132
+ data: { message: "Unknown subcommand. Use: create, restore, list" },
133
+ }));
134
+ }
135
+ else {
136
+ console.log("Usage: usertrust snapshot <create|restore|list> [name]");
137
+ }
60
138
  break;
61
139
  }
62
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/cli/snapshot.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAgB;IACzC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACR,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,OAAO;YACR,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9C,MAAM;QACP,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBACxD,OAAO;YACR,CAAC;YACD,MAAM,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC1C,MAAM;QACP,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO;YACR,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YACxF,CAAC;YACD,MAAM;QACP,CAAC;QAED;YACC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,MAAM;IACR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/cli/snapshot.ts"],"names":[],"mappings":"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"}
package/dist/cli/tb.d.ts CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * CLI: usertrust tb — TigerBeetle process management (stubs)
3
- *
4
- * v1 stubs: prints helpful setup messages. Future versions will
5
- * manage the embedded TigerBeetle process lifecycle.
6
- */
7
- export declare function run(): Promise<void>;
1
+ import type { CliOptions } from "./init.js";
2
+ export declare function run(opts?: CliOptions): Promise<void>;
8
3
  //# sourceMappingURL=tb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tb.d.ts","sourceRoot":"","sources":["../../src/cli/tb.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCzC"}
1
+ {"version":3,"file":"tb.d.ts","sourceRoot":"","sources":["../../src/cli/tb.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,wBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E1D"}
package/dist/cli/tb.js CHANGED
@@ -6,18 +6,38 @@
6
6
  * v1 stubs: prints helpful setup messages. Future versions will
7
7
  * manage the embedded TigerBeetle process lifecycle.
8
8
  */
9
- export async function run() {
9
+ import pc from "picocolors";
10
+ export async function run(opts) {
10
11
  const subcommand = process.argv[3];
12
+ const json = opts?.json === true;
11
13
  switch (subcommand) {
12
14
  case "start":
13
- console.log("TigerBeetle start — not yet implemented.");
14
- console.log("To run TigerBeetle manually:");
15
- console.log(" tigerbeetle start --addresses=3000 --cache-grid=256MiB ./data/0_0.tigerbeetle");
15
+ if (json) {
16
+ console.log(JSON.stringify({
17
+ command: "tb",
18
+ success: false,
19
+ data: { action: "start", message: "Not yet implemented" },
20
+ }));
21
+ }
22
+ else {
23
+ console.log(pc.yellow("TigerBeetle start — not yet implemented."));
24
+ console.log("To run TigerBeetle manually:");
25
+ console.log(pc.dim(" tigerbeetle start --addresses=3000 --cache-grid=256MiB ./data/0_0.tigerbeetle"));
26
+ }
16
27
  break;
17
28
  case "stop":
18
- console.log("TigerBeetle stop — not yet implemented.");
19
- console.log("To stop TigerBeetle manually:");
20
- console.log(" kill $(pgrep tigerbeetle)");
29
+ if (json) {
30
+ console.log(JSON.stringify({
31
+ command: "tb",
32
+ success: false,
33
+ data: { action: "stop", message: "Not yet implemented" },
34
+ }));
35
+ }
36
+ else {
37
+ console.log(pc.yellow("TigerBeetle stop — not yet implemented."));
38
+ console.log("To stop TigerBeetle manually:");
39
+ console.log(pc.dim(" kill $(pgrep tigerbeetle)"));
40
+ }
21
41
  break;
22
42
  case "status": {
23
43
  let isRunning = false;
@@ -29,16 +49,32 @@ export async function run() {
29
49
  catch {
30
50
  isRunning = false;
31
51
  }
32
- if (isRunning) {
33
- console.log("TigerBeetle: running");
52
+ if (json) {
53
+ console.log(JSON.stringify({
54
+ command: "tb",
55
+ success: true,
56
+ data: { action: "status", running: isRunning },
57
+ }));
58
+ }
59
+ else if (isRunning) {
60
+ console.log(`TigerBeetle: ${pc.green("running")}`);
34
61
  }
35
62
  else {
36
- console.log("TigerBeetle: not running");
63
+ console.log(`TigerBeetle: ${pc.dim("not running")}`);
37
64
  }
38
65
  break;
39
66
  }
40
67
  default:
41
- console.log("Usage: usertrust tb <start|stop|status>");
68
+ if (json) {
69
+ console.log(JSON.stringify({
70
+ command: "tb",
71
+ success: false,
72
+ data: { message: "Unknown subcommand. Use: start, stop, status" },
73
+ }));
74
+ }
75
+ else {
76
+ console.log("Usage: usertrust tb <start|stop|status>");
77
+ }
42
78
  break;
43
79
  }
44
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tb.js","sourceRoot":"","sources":["../../src/cli/tb.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;GAKG;AAEH,MAAM,CAAC,KAAK,UAAU,GAAG;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnC,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,OAAO;YACX,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CACV,iFAAiF,CACjF,CAAC;YACF,MAAM;QAEP,KAAK,MAAM;YACV,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,MAAM;QAEP,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3E,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS,GAAG,KAAK,CAAC;YACnB,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACzC,CAAC;YACD,MAAM;QACP,CAAC;QAED;YACC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,MAAM;IACR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"tb.js","sourceRoot":"","sources":["../../src/cli/tb.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAiB;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEjC,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,OAAO;YACX,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE;iBACzD,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CACV,EAAE,CAAC,GAAG,CAAC,iFAAiF,CAAC,CACzF,CAAC;YACH,CAAC;YACD,MAAM;QAEP,KAAK,MAAM;YACV,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;iBACxD,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM;QAEP,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3E,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS,GAAG,KAAK,CAAC;YACnB,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;iBAC9C,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM;QACP,CAAC;QAED;YACC,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE;iBACjE,CAAC,CACF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM;IACR,CAAC;AACF,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function run(rootDir?: string): Promise<void>;
1
+ import type { CliOptions } from "./init.js";
2
+ export declare function run(rootDir?: string, opts?: CliOptions): Promise<void>;
2
3
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAcA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzD"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD5E"}
@@ -7,28 +7,53 @@
7
7
  */
8
8
  import { existsSync } from "node:fs";
9
9
  import { join } from "node:path";
10
+ import pc from "picocolors";
10
11
  import { verifyChain } from "../audit/verify.js";
11
12
  import { VAULT_DIR } from "../shared/constants.js";
12
- export async function run(rootDir) {
13
+ export async function run(rootDir, opts) {
13
14
  const root = rootDir ?? process.cwd();
14
15
  const vaultPath = join(root, VAULT_DIR);
16
+ const json = opts?.json === true;
15
17
  if (!existsSync(vaultPath)) {
16
- console.log("No trust vault found. Run `usertrust init` first.");
18
+ if (json) {
19
+ console.log(JSON.stringify({
20
+ command: "verify",
21
+ success: false,
22
+ data: { message: "No trust vault found. Run `usertrust init` first." },
23
+ }));
24
+ }
25
+ else {
26
+ console.log(`${pc.red("No trust vault found.")} Run \`usertrust init\` first.`);
27
+ }
17
28
  return;
18
29
  }
19
30
  const logPath = join(vaultPath, "audit", "events.jsonl");
20
31
  const result = verifyChain(logPath);
32
+ if (json) {
33
+ console.log(JSON.stringify({
34
+ command: "verify",
35
+ success: result.valid,
36
+ data: {
37
+ valid: result.valid,
38
+ eventsVerified: result.eventsVerified,
39
+ errors: result.errors,
40
+ latestHash: result.latestHash,
41
+ verifiedAt: result.verifiedAt,
42
+ },
43
+ }));
44
+ return;
45
+ }
21
46
  if (result.valid) {
22
- console.log(`Chain verified: ${result.eventsVerified} events, all hashes valid.`);
23
- console.log(`Latest hash: ${result.latestHash}`);
47
+ console.log(pc.green(`Chain verified: ${result.eventsVerified} events, all hashes valid.`));
48
+ console.log(`Latest hash: ${pc.dim(result.latestHash)}`);
24
49
  }
25
50
  else {
26
- console.log(`Chain verification FAILED: ${result.errors.length} error(s) found.`);
51
+ console.log(pc.red(`Chain verification FAILED: ${result.errors.length} error(s) found.`));
27
52
  console.log(`Events checked: ${result.eventsVerified}`);
28
53
  for (const err of result.errors) {
29
- console.log(` - ${err}`);
54
+ console.log(pc.red(` - ${err}`));
30
55
  }
31
56
  }
32
- console.log(`Verified at: ${result.verifiedAt}`);
57
+ console.log(pc.dim(`Verified at: ${result.verifiedAt}`));
33
58
  }
34
59
  //# sourceMappingURL=verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAgB;IACzC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,4BAA4B,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAgB,EAAE,IAAiB;IAC5D,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEjC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;gBACd,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE;aACtE,CAAC,CACF,CAAC;QACH,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;YACd,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,IAAI,EAAE;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC7B;SACD,CAAC,CACF,CAAC;QACF,OAAO;IACR,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,cAAc,4BAA4B,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "usertrust",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Financial governance for AI agents. Every LLM call becomes an immutable, auditable transaction.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Usertools, Inc. <hello@usertools.ai> (https://usertrust.ai)",
@@ -38,18 +38,17 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "tigerbeetle-node": "^0.16.0",
42
41
  "minimatch": "^10.0.0",
43
- "zod": "^3.23.0",
44
- "yaml": "^2.7.0"
42
+ "picocolors": "^1.1.1",
43
+ "tigerbeetle-node": "^0.16.0",
44
+ "yaml": "^2.7.0",
45
+ "zod": "^3.23.0"
45
46
  },
46
47
  "scripts": {
47
48
  "build": "tsc",
48
49
  "prepublishOnly": "tsc"
49
50
  },
50
- "files": [
51
- "dist"
52
- ],
51
+ "files": ["dist"],
53
52
  "peerDependencies": {
54
53
  "@anthropic-ai/sdk": ">=0.30.0",
55
54
  "openai": ">=4.70.0"