usertrust 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +231 -37
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +18 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/pricing.d.ts +5 -0
- package/dist/cli/pricing.d.ts.map +1 -0
- package/dist/cli/pricing.js +61 -0
- package/dist/cli/pricing.js.map +1 -0
- package/dist/cli/validate-key.d.ts +17 -0
- package/dist/cli/validate-key.d.ts.map +1 -0
- package/dist/cli/validate-key.js +58 -0
- package/dist/cli/validate-key.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/govern.d.ts +3 -1
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +415 -47
- package/dist/govern.js.map +1 -1
- package/dist/headless.d.ts +77 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +566 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/ledger/pricing.d.ts +6 -2
- package/dist/ledger/pricing.d.ts.map +1 -1
- package/dist/ledger/pricing.js +31 -3
- package/dist/ledger/pricing.js.map +1 -1
- package/dist/policy/canary.d.ts +17 -0
- package/dist/policy/canary.d.ts.map +1 -0
- package/dist/policy/canary.js +44 -0
- package/dist/policy/canary.js.map +1 -0
- package/dist/policy/injection.d.ts +24 -0
- package/dist/policy/injection.d.ts.map +1 -0
- package/dist/policy/injection.js +178 -0
- package/dist/policy/injection.js.map +1 -0
- package/dist/policy/pii.d.ts +13 -1
- package/dist/policy/pii.d.ts.map +1 -1
- package/dist/policy/pii.js +88 -0
- package/dist/policy/pii.js.map +1 -1
- package/dist/shared/errors.d.ts +20 -0
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +46 -0
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/types.d.ts +264 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +67 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/supply-chain/manifest.d.ts +22 -0
- package/dist/supply-chain/manifest.d.ts.map +1 -0
- package/dist/supply-chain/manifest.js +46 -0
- package/dist/supply-chain/manifest.js.map +1 -0
- package/dist/supply-chain/permissions.d.ts +12 -0
- package/dist/supply-chain/permissions.d.ts.map +1 -0
- package/dist/supply-chain/permissions.js +89 -0
- package/dist/supply-chain/permissions.js.map +1 -0
- package/dist/supply-chain/sign.d.ts +17 -0
- package/dist/supply-chain/sign.d.ts.map +1 -0
- package/dist/supply-chain/sign.js +95 -0
- package/dist/supply-chain/sign.js.map +1 -0
- package/dist/vault/derive.d.ts +13 -0
- package/dist/vault/derive.d.ts.map +1 -0
- package/dist/vault/derive.js +32 -0
- package/dist/vault/derive.js.map +1 -0
- package/dist/vault/scope.d.ts +20 -0
- package/dist/vault/scope.d.ts.map +1 -0
- package/dist/vault/scope.js +35 -0
- package/dist/vault/scope.js.map +1 -0
- package/dist/vault/store.d.ts +31 -0
- package/dist/vault/store.d.ts.map +1 -0
- package/dist/vault/store.js +204 -0
- package/dist/vault/store.js.map +1 -0
- package/package.json +13 -2
package/dist/cli/init.d.ts
CHANGED
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAgCD,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyO5E"}
|
package/dist/cli/init.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright 2026 Usertools, Inc.
|
|
3
3
|
/**
|
|
4
|
-
* CLI: usertrust init —
|
|
4
|
+
* CLI: usertrust init — Interactive onboarding wizard
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Walks the user through API key setup, budget configuration,
|
|
7
|
+
* and pricing selection. Creates the .usertrust/ vault with
|
|
8
|
+
* config, .env, policy, and .gitignore.
|
|
8
9
|
*/
|
|
9
10
|
import { chmodSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
10
11
|
import { join } from "node:path";
|
|
11
|
-
import
|
|
12
|
+
import * as clack from "@clack/prompts";
|
|
13
|
+
import { PRICING_TABLE, PRICING_TABLE_VERSION, modelsForProvider } from "../ledger/pricing.js";
|
|
12
14
|
import { VAULT_DIR } from "../shared/constants.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
board: { enabled: false, vetoThreshold: "high" },
|
|
19
|
-
circuitBreaker: { failureThreshold: 5, resetTimeout: 60000 },
|
|
20
|
-
patterns: { enabled: true, feedProxy: false },
|
|
21
|
-
audit: { rotation: "daily", indexLimit: 10000 },
|
|
15
|
+
import { detectProvider, maskKey, validateKey } from "./validate-key.js";
|
|
16
|
+
const ENV_VAR_MAP = {
|
|
17
|
+
anthropic: "ANTHROPIC_API_KEY",
|
|
18
|
+
openai: "OPENAI_API_KEY",
|
|
19
|
+
google: "GOOGLE_API_KEY",
|
|
22
20
|
};
|
|
23
21
|
const DEFAULT_POLICY = `rules:
|
|
24
22
|
- name: block-zero-budget
|
|
@@ -37,16 +35,16 @@ const DEFAULT_POLICY = `rules:
|
|
|
37
35
|
operator: gt
|
|
38
36
|
value: 1000
|
|
39
37
|
`;
|
|
40
|
-
const GITIGNORE = `tigerbeetle/
|
|
41
|
-
*.tigerbeetle
|
|
42
|
-
dlq/
|
|
43
|
-
`;
|
|
44
38
|
const SUBDIRS = ["audit", "policies", "patterns", "snapshots", "board", "dlq"];
|
|
39
|
+
function envVarName(provider) {
|
|
40
|
+
return ENV_VAR_MAP[provider] ?? `${provider.toUpperCase()}_API_KEY`;
|
|
41
|
+
}
|
|
45
42
|
export async function run(rootDir, opts) {
|
|
46
43
|
const root = rootDir ?? process.cwd();
|
|
47
44
|
const vaultPath = join(root, VAULT_DIR);
|
|
48
45
|
const json = opts?.json === true;
|
|
49
|
-
|
|
46
|
+
// ── Check existing vault ──
|
|
47
|
+
if (existsSync(vaultPath) && !opts?.reconfigure) {
|
|
50
48
|
if (json) {
|
|
51
49
|
console.log(JSON.stringify({
|
|
52
50
|
command: "init",
|
|
@@ -55,24 +53,18 @@ export async function run(rootDir, opts) {
|
|
|
55
53
|
}));
|
|
56
54
|
}
|
|
57
55
|
else {
|
|
58
|
-
|
|
56
|
+
clack.log.warn(`Vault already exists at ${vaultPath}`);
|
|
59
57
|
}
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
62
|
-
//
|
|
63
|
-
mkdirSync(vaultPath, { recursive: true });
|
|
64
|
-
for (const sub of SUBDIRS) {
|
|
65
|
-
mkdirSync(join(vaultPath, sub), { recursive: true });
|
|
66
|
-
}
|
|
67
|
-
// Write default config
|
|
68
|
-
writeFileSync(join(vaultPath, "usertrust.config.json"), JSON.stringify(DEFAULT_CONFIG, null, "\t"), "utf-8");
|
|
69
|
-
// Write default policy
|
|
70
|
-
writeFileSync(join(vaultPath, "policies", "default.yml"), DEFAULT_POLICY, "utf-8");
|
|
71
|
-
// Write .gitignore
|
|
72
|
-
writeFileSync(join(vaultPath, ".gitignore"), GITIGNORE, "utf-8");
|
|
73
|
-
// Set vault permissions to 700 (owner only)
|
|
74
|
-
chmodSync(vaultPath, 0o700);
|
|
60
|
+
// ── Non-interactive (--json) mode ──
|
|
75
61
|
if (json) {
|
|
62
|
+
createVault(vaultPath, {
|
|
63
|
+
budget: 50_000,
|
|
64
|
+
providers: [],
|
|
65
|
+
pricing: "recommended",
|
|
66
|
+
keys: {},
|
|
67
|
+
});
|
|
76
68
|
console.log(JSON.stringify({
|
|
77
69
|
command: "init",
|
|
78
70
|
success: true,
|
|
@@ -83,12 +75,214 @@ export async function run(rootDir, opts) {
|
|
|
83
75
|
policy: "policies/default.yml",
|
|
84
76
|
},
|
|
85
77
|
}));
|
|
78
|
+
return;
|
|
86
79
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
80
|
+
// ── Interactive wizard ──
|
|
81
|
+
clack.intro("usertrust init");
|
|
82
|
+
// Step 1: API key loop
|
|
83
|
+
const keys = {};
|
|
84
|
+
const providers = [];
|
|
85
|
+
// biome-ignore lint/correctness/noConstantCondition: intentional loop
|
|
86
|
+
while (true) {
|
|
87
|
+
const keyResult = await clack.text({
|
|
88
|
+
message: Object.keys(keys).length === 0
|
|
89
|
+
? "Paste your API key:"
|
|
90
|
+
: "Paste another API key (empty = done):",
|
|
91
|
+
placeholder: "sk-...",
|
|
92
|
+
});
|
|
93
|
+
if (clack.isCancel(keyResult)) {
|
|
94
|
+
clack.log.warn("Setup cancelled.");
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const key = keyResult.trim();
|
|
98
|
+
if (key === "")
|
|
99
|
+
break;
|
|
100
|
+
let provider = detectProvider(key);
|
|
101
|
+
if (provider === null) {
|
|
102
|
+
const providerResult = await clack.text({
|
|
103
|
+
message: "Could not detect provider. Enter provider name:",
|
|
104
|
+
placeholder: "e.g. mistral, deepseek",
|
|
105
|
+
});
|
|
106
|
+
if (clack.isCancel(providerResult)) {
|
|
107
|
+
clack.log.warn("Setup cancelled.");
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
provider = providerResult.trim().toLowerCase();
|
|
111
|
+
if (!/^[a-z][a-z0-9-]{0,31}$/.test(provider)) {
|
|
112
|
+
clack.log.warn("Provider name must be lowercase alphanumeric (max 32 chars).");
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Validate key unless --skip-verify
|
|
117
|
+
if (!opts?.skipVerify) {
|
|
118
|
+
const s = clack.spinner();
|
|
119
|
+
s.start(`Validating ${provider} key...`);
|
|
120
|
+
const result = await validateKey(key, provider);
|
|
121
|
+
if (result.valid) {
|
|
122
|
+
s.stop(`${provider} key valid (${maskKey(key)})`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
s.stop(`${provider} key validation failed: ${result.error}`);
|
|
126
|
+
clack.log.warn("Key added anyway — you can fix it later in .usertrust/.env");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
clack.log.info(`Added ${provider} key (${maskKey(key)})`);
|
|
131
|
+
}
|
|
132
|
+
keys[provider] = key;
|
|
133
|
+
const models = modelsForProvider(provider);
|
|
134
|
+
providers.push({ name: provider, models });
|
|
135
|
+
}
|
|
136
|
+
// Step 2: Budget
|
|
137
|
+
const budgetResult = await clack.text({
|
|
138
|
+
message: "Monthly budget: $",
|
|
139
|
+
placeholder: "50",
|
|
140
|
+
validate: (value) => {
|
|
141
|
+
if (!value)
|
|
142
|
+
return "Enter a positive number";
|
|
143
|
+
const cleaned = value.replace(/[$,]/g, "");
|
|
144
|
+
if (Number.isNaN(Number(cleaned)) || Number(cleaned) <= 0) {
|
|
145
|
+
return "Enter a positive number";
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
if (clack.isCancel(budgetResult)) {
|
|
150
|
+
clack.log.warn("Setup cancelled.");
|
|
151
|
+
return;
|
|
92
152
|
}
|
|
153
|
+
const dollars = Number(budgetResult.replace(/[$,]/g, ""));
|
|
154
|
+
const budgetUsertokens = Math.round(dollars * 10_000);
|
|
155
|
+
// Step 3: Rates
|
|
156
|
+
let pricing = "recommended";
|
|
157
|
+
let customRates;
|
|
158
|
+
const useRecommended = await clack.confirm({
|
|
159
|
+
message: `Use recommended rates? (verified ${PRICING_TABLE_VERSION})`,
|
|
160
|
+
initialValue: true,
|
|
161
|
+
});
|
|
162
|
+
if (clack.isCancel(useRecommended)) {
|
|
163
|
+
clack.log.warn("Setup cancelled.");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!useRecommended) {
|
|
167
|
+
pricing = "custom";
|
|
168
|
+
customRates = {};
|
|
169
|
+
// Show rate card for configured providers
|
|
170
|
+
for (const p of providers) {
|
|
171
|
+
const models = modelsForProvider(p.name);
|
|
172
|
+
if (models.length === 0)
|
|
173
|
+
continue;
|
|
174
|
+
clack.log.info(`\n${p.name} models:`);
|
|
175
|
+
for (const model of models) {
|
|
176
|
+
const rates = PRICING_TABLE[model];
|
|
177
|
+
if (!rates)
|
|
178
|
+
continue;
|
|
179
|
+
clack.log.step(` ${model}: input=${rates.inputPer1k}/1k, output=${rates.outputPer1k}/1k`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// Allow editing individual models
|
|
183
|
+
// biome-ignore lint/correctness/noConstantCondition: intentional loop
|
|
184
|
+
while (true) {
|
|
185
|
+
const modelResult = await clack.text({
|
|
186
|
+
message: "Model to edit (empty = accept all):",
|
|
187
|
+
placeholder: "e.g. claude-sonnet-4-6",
|
|
188
|
+
});
|
|
189
|
+
if (clack.isCancel(modelResult)) {
|
|
190
|
+
clack.log.warn("Setup cancelled.");
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const model = modelResult.trim();
|
|
194
|
+
if (model === "")
|
|
195
|
+
break;
|
|
196
|
+
if (!/^[a-z0-9][a-z0-9._-]{0,127}$/i.test(model)) {
|
|
197
|
+
clack.log.warn("Invalid model name.");
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const inputResult = await clack.text({
|
|
201
|
+
message: `${model} input rate ($/1M tokens):`,
|
|
202
|
+
});
|
|
203
|
+
if (clack.isCancel(inputResult)) {
|
|
204
|
+
clack.log.warn("Setup cancelled.");
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const outputResult = await clack.text({
|
|
208
|
+
message: `${model} output rate ($/1M tokens):`,
|
|
209
|
+
});
|
|
210
|
+
if (clack.isCancel(outputResult)) {
|
|
211
|
+
clack.log.warn("Setup cancelled.");
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const inputPerM = Number(inputResult);
|
|
215
|
+
const outputPerM = Number(outputResult);
|
|
216
|
+
if (!Number.isFinite(inputPerM) ||
|
|
217
|
+
inputPerM < 0 ||
|
|
218
|
+
!Number.isFinite(outputPerM) ||
|
|
219
|
+
outputPerM < 0) {
|
|
220
|
+
clack.log.warn("Rates must be non-negative numbers. Skipping.");
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Convert $/1M to usertokens/1K: $X per 1M = X*10 usertokens per 1K
|
|
224
|
+
customRates[model] = {
|
|
225
|
+
inputPer1k: inputPerM * 10,
|
|
226
|
+
outputPer1k: outputPerM * 10,
|
|
227
|
+
};
|
|
228
|
+
clack.log.success(`Updated ${model}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Step 4: Create vault
|
|
232
|
+
createVault(vaultPath, {
|
|
233
|
+
budget: budgetUsertokens,
|
|
234
|
+
providers,
|
|
235
|
+
pricing,
|
|
236
|
+
...(customRates !== undefined ? { customRates } : {}),
|
|
237
|
+
keys,
|
|
238
|
+
});
|
|
239
|
+
clack.outro(`Vault created at ${vaultPath}`);
|
|
240
|
+
}
|
|
241
|
+
function createVault(vaultPath, data) {
|
|
242
|
+
// Create directory structure
|
|
243
|
+
mkdirSync(vaultPath, { recursive: true });
|
|
244
|
+
for (const sub of SUBDIRS) {
|
|
245
|
+
mkdirSync(join(vaultPath, sub), { recursive: true });
|
|
246
|
+
}
|
|
247
|
+
// Build config
|
|
248
|
+
const config = {
|
|
249
|
+
budget: data.budget,
|
|
250
|
+
tier: "mini",
|
|
251
|
+
policies: "./policies/default.yml",
|
|
252
|
+
pii: "warn",
|
|
253
|
+
board: { enabled: false, vetoThreshold: "high" },
|
|
254
|
+
circuitBreaker: { failureThreshold: 5, resetTimeout: 60000 },
|
|
255
|
+
patterns: { enabled: true, feedProxy: false },
|
|
256
|
+
audit: { rotation: "daily", indexLimit: 10000 },
|
|
257
|
+
providers: data.providers,
|
|
258
|
+
pricing: data.pricing,
|
|
259
|
+
};
|
|
260
|
+
if (data.customRates && Object.keys(data.customRates).length > 0) {
|
|
261
|
+
config.customRates = data.customRates;
|
|
262
|
+
}
|
|
263
|
+
// Write config
|
|
264
|
+
writeFileSync(join(vaultPath, "usertrust.config.json"), JSON.stringify(config, null, "\t"), "utf-8");
|
|
265
|
+
// Write default policy
|
|
266
|
+
writeFileSync(join(vaultPath, "policies", "default.yml"), DEFAULT_POLICY, "utf-8");
|
|
267
|
+
// Write .env with API keys
|
|
268
|
+
if (data.keys && Object.keys(data.keys).length > 0) {
|
|
269
|
+
const envLines = Object.entries(data.keys).map(([provider, key]) => {
|
|
270
|
+
const escaped = key.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
271
|
+
return `${envVarName(provider)}="${escaped}"`;
|
|
272
|
+
});
|
|
273
|
+
writeFileSync(join(vaultPath, ".env"), `${envLines.join("\n")}\n`, {
|
|
274
|
+
encoding: "utf-8",
|
|
275
|
+
mode: 0o600,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
// Write .gitignore
|
|
279
|
+
const gitignoreContent = `tigerbeetle/
|
|
280
|
+
*.tigerbeetle
|
|
281
|
+
dlq/
|
|
282
|
+
.env
|
|
283
|
+
`;
|
|
284
|
+
writeFileSync(join(vaultPath, ".gitignore"), gitignoreContent, "utf-8");
|
|
285
|
+
// Set vault permissions to 700 (owner only)
|
|
286
|
+
chmodSync(vaultPath, 0o700);
|
|
93
287
|
}
|
|
94
288
|
//# sourceMappingURL=init.js.map
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
declare const COMMANDS: readonly ["init", "inspect", "health", "verify", "snapshot", "tb", "completions"];
|
|
2
|
+
declare const COMMANDS: readonly ["init", "inspect", "health", "verify", "snapshot", "tb", "pricing", "completions"];
|
|
3
3
|
/** Simple Levenshtein distance — two-row DP, no dependency needed. */
|
|
4
4
|
declare function levenshtein(a: string, b: string): number;
|
|
5
5
|
declare function suggestCommand(input: string): string | undefined;
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAIA,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAIA,QAAA,MAAM,QAAQ,8FASJ,CAAC;AAWX,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,10 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
// Copyright 2026 Usertools, Inc.
|
|
4
|
-
const COMMANDS = [
|
|
4
|
+
const COMMANDS = [
|
|
5
|
+
"init",
|
|
6
|
+
"inspect",
|
|
7
|
+
"health",
|
|
8
|
+
"verify",
|
|
9
|
+
"snapshot",
|
|
10
|
+
"tb",
|
|
11
|
+
"pricing",
|
|
12
|
+
"completions",
|
|
13
|
+
];
|
|
5
14
|
const argv = process.argv.slice(2);
|
|
6
15
|
const jsonFlag = argv.includes("--json");
|
|
7
|
-
const
|
|
16
|
+
const skipVerify = argv.includes("--skip-verify");
|
|
17
|
+
const reconfigure = argv.includes("--reconfigure");
|
|
18
|
+
const positional = argv.filter((a) => a !== "--json" && a !== "--skip-verify" && a !== "--reconfigure");
|
|
8
19
|
const command = positional[0];
|
|
9
20
|
/** Simple Levenshtein distance — two-row DP, no dependency needed. */
|
|
10
21
|
function levenshtein(a, b) {
|
|
@@ -41,7 +52,7 @@ function suggestCommand(input) {
|
|
|
41
52
|
export { levenshtein, suggestCommand, COMMANDS };
|
|
42
53
|
switch (command) {
|
|
43
54
|
case "init":
|
|
44
|
-
await import("./init.js").then((m) => m.run(undefined, { json: jsonFlag }));
|
|
55
|
+
await import("./init.js").then((m) => m.run(undefined, { json: jsonFlag, skipVerify, reconfigure }));
|
|
45
56
|
break;
|
|
46
57
|
case "inspect":
|
|
47
58
|
await import("./inspect.js").then((m) => m.run(undefined, { json: jsonFlag }));
|
|
@@ -58,6 +69,9 @@ switch (command) {
|
|
|
58
69
|
case "tb":
|
|
59
70
|
await import("./tb.js").then((m) => m.run({ json: jsonFlag }));
|
|
60
71
|
break;
|
|
72
|
+
case "pricing":
|
|
73
|
+
await import("./pricing.js").then((m) => m.run(undefined, { json: jsonFlag }));
|
|
74
|
+
break;
|
|
61
75
|
case "completions":
|
|
62
76
|
await import("./completions.js").then((m) => m.run(positional[1], { json: jsonFlag }));
|
|
63
77
|
break;
|
|
@@ -79,6 +93,7 @@ Commands:
|
|
|
79
93
|
verify Verify audit chain integrity
|
|
80
94
|
snapshot Create/restore vault snapshots
|
|
81
95
|
tb Manage TigerBeetle process
|
|
96
|
+
pricing Show current rate configuration
|
|
82
97
|
completions Output shell completion scripts
|
|
83
98
|
|
|
84
99
|
Options:
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,sCAAsC;AACtC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/cli/pricing.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D7E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2026 Usertools, Inc.
|
|
3
|
+
/**
|
|
4
|
+
* CLI: usertrust pricing — Display current rate configuration
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import pc from "picocolors";
|
|
10
|
+
import { PRICING_TABLE, PRICING_TABLE_VERSION, modelsForProvider } from "../ledger/pricing.js";
|
|
11
|
+
import { VAULT_DIR } from "../shared/constants.js";
|
|
12
|
+
import { TrustConfigSchema } from "../shared/types.js";
|
|
13
|
+
export async function run(rootDir, opts) {
|
|
14
|
+
const root = rootDir ?? process.cwd();
|
|
15
|
+
const configPath = join(root, VAULT_DIR, "usertrust.config.json");
|
|
16
|
+
const json = opts?.json === true;
|
|
17
|
+
let config = null;
|
|
18
|
+
if (existsSync(configPath)) {
|
|
19
|
+
const raw = JSON.parse(await readFile(configPath, "utf-8"));
|
|
20
|
+
config = TrustConfigSchema.parse(raw);
|
|
21
|
+
}
|
|
22
|
+
const pricing = config?.pricing ?? "recommended";
|
|
23
|
+
const customRates = config?.customRates;
|
|
24
|
+
const providers = config?.providers ?? [];
|
|
25
|
+
// Determine which models to show
|
|
26
|
+
const modelKeys = providers.length > 0
|
|
27
|
+
? providers.flatMap((p) => modelsForProvider(p.name))
|
|
28
|
+
: Object.keys(PRICING_TABLE);
|
|
29
|
+
if (json) {
|
|
30
|
+
const rates = {};
|
|
31
|
+
for (const model of modelKeys) {
|
|
32
|
+
const custom = customRates?.[model];
|
|
33
|
+
const base = PRICING_TABLE[model];
|
|
34
|
+
const source = custom ? "custom" : "recommended";
|
|
35
|
+
const r = custom ?? base;
|
|
36
|
+
if (r) {
|
|
37
|
+
rates[model] = {
|
|
38
|
+
inputPerM: r.inputPer1k / 10,
|
|
39
|
+
outputPerM: r.outputPer1k / 10,
|
|
40
|
+
source,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
console.log(JSON.stringify({ command: "pricing", pricing, version: PRICING_TABLE_VERSION, rates }));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(pc.bold(`\n Rates (${pricing}, verified ${PRICING_TABLE_VERSION})\n`));
|
|
48
|
+
for (const model of modelKeys) {
|
|
49
|
+
const custom = customRates?.[model];
|
|
50
|
+
const base = PRICING_TABLE[model];
|
|
51
|
+
const r = custom ?? base;
|
|
52
|
+
if (!r)
|
|
53
|
+
continue;
|
|
54
|
+
const inputPerM = (r.inputPer1k / 10).toFixed(2);
|
|
55
|
+
const outputPerM = (r.outputPer1k / 10).toFixed(2);
|
|
56
|
+
const tag = custom ? pc.yellow(" (custom)") : "";
|
|
57
|
+
console.log(` ${pc.cyan(model.padEnd(24))} $${inputPerM} / $${outputPerM} per 1M tokens${tag}`);
|
|
58
|
+
}
|
|
59
|
+
console.log(pc.dim(`\n Mode: ${pricing} | Run \`usertrust init --reconfigure\` to change\n`));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/cli/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI: API key duck-typing and validation.
|
|
3
|
+
*
|
|
4
|
+
* Detects provider from key prefix, validates by hitting
|
|
5
|
+
* a lightweight provider endpoint (3s timeout).
|
|
6
|
+
*/
|
|
7
|
+
export interface KeyValidationResult {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
error?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Detect provider from API key prefix. Returns null if unrecognized. */
|
|
12
|
+
export declare function detectProvider(key: string): string | null;
|
|
13
|
+
/** Validate an API key against the provider's models endpoint. */
|
|
14
|
+
export declare function validateKey(key: string, provider: string): Promise<KeyValidationResult>;
|
|
15
|
+
/** Mask an API key for display: show prefix + dots. */
|
|
16
|
+
export declare function maskKey(key: string): string;
|
|
17
|
+
//# sourceMappingURL=validate-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-key.d.ts","sourceRoot":"","sources":["../../src/cli/validate-key.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAuBD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKzD;AAED,kEAAkE;AAClE,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkB7F;AAED,uDAAuD;AACvD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright 2026 Usertools, Inc.
|
|
3
|
+
const PROVIDER_ENDPOINTS = {
|
|
4
|
+
anthropic: {
|
|
5
|
+
url: "https://api.anthropic.com/v1/models",
|
|
6
|
+
headers: (key) => ({
|
|
7
|
+
"x-api-key": key,
|
|
8
|
+
"anthropic-version": "2023-06-01",
|
|
9
|
+
}),
|
|
10
|
+
},
|
|
11
|
+
openai: {
|
|
12
|
+
url: "https://api.openai.com/v1/models",
|
|
13
|
+
headers: (key) => ({ Authorization: `Bearer ${key}` }),
|
|
14
|
+
},
|
|
15
|
+
google: {
|
|
16
|
+
url: "https://generativelanguage.googleapis.com/v1/models",
|
|
17
|
+
headers: (key) => ({ "x-goog-api-key": key }),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
/** Detect provider from API key prefix. Returns null if unrecognized. */
|
|
21
|
+
export function detectProvider(key) {
|
|
22
|
+
if (key.startsWith("sk-ant-"))
|
|
23
|
+
return "anthropic";
|
|
24
|
+
if (key.startsWith("sk-"))
|
|
25
|
+
return "openai";
|
|
26
|
+
if (key.startsWith("AIza"))
|
|
27
|
+
return "google";
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/** Validate an API key against the provider's models endpoint. */
|
|
31
|
+
export async function validateKey(key, provider) {
|
|
32
|
+
const endpoint = PROVIDER_ENDPOINTS[provider];
|
|
33
|
+
if (!endpoint)
|
|
34
|
+
return { valid: true };
|
|
35
|
+
try {
|
|
36
|
+
const resp = await fetch(endpoint.url, {
|
|
37
|
+
method: "GET",
|
|
38
|
+
headers: endpoint.headers(key),
|
|
39
|
+
signal: AbortSignal.timeout(3000),
|
|
40
|
+
});
|
|
41
|
+
if (resp.ok)
|
|
42
|
+
return { valid: true };
|
|
43
|
+
return { valid: false, error: `HTTP ${resp.status}` };
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
return {
|
|
47
|
+
valid: false,
|
|
48
|
+
error: err instanceof Error ? err.message : String(err),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Mask an API key for display: show prefix + dots. */
|
|
53
|
+
export function maskKey(key) {
|
|
54
|
+
if (key.length <= 8)
|
|
55
|
+
return "••••••••";
|
|
56
|
+
return `${key.slice(0, 8)}••••••••`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=validate-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-key.js","sourceRoot":"","sources":["../../src/cli/validate-key.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAcjC,MAAM,kBAAkB,GAGpB;IACH,SAAS,EAAE;QACV,GAAG,EAAE,qCAAqC;QAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClB,WAAW,EAAE,GAAG;YAChB,mBAAmB,EAAE,YAAY;SACjC,CAAC;KACF;IACD,MAAM,EAAE;QACP,GAAG,EAAE,kCAAkC;QACvC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;KACtD;IACD,MAAM,EAAE;QACP,GAAG,EAAE,qDAAqD;QAC1D,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;KAC7C;CACD,CAAC;AAEF,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,GAAW;IACzC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,WAAW,CAAC;IAClD,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAEtC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YACtC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAC9B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO;YACN,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACvD,CAAC;IACH,CAAC;AACF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,OAAO,CAAC,GAAW;IAClC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;AACrC,CAAC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA4BrD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAwBtB;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D"}
|