@atbash/cli 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +501 -0
  3. package/dist/bin/atbash.d.ts +2 -0
  4. package/dist/bin/atbash.js +38 -0
  5. package/dist/bin/atbash.js.map +1 -0
  6. package/dist/client.d.ts +111 -0
  7. package/dist/client.js +173 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/commands/config-cmd.d.ts +2 -0
  10. package/dist/commands/config-cmd.js +149 -0
  11. package/dist/commands/config-cmd.js.map +1 -0
  12. package/dist/commands/held.d.ts +2 -0
  13. package/dist/commands/held.js +158 -0
  14. package/dist/commands/held.js.map +1 -0
  15. package/dist/commands/history.d.ts +2 -0
  16. package/dist/commands/history.js +72 -0
  17. package/dist/commands/history.js.map +1 -0
  18. package/dist/commands/jail.d.ts +6 -0
  19. package/dist/commands/jail.js +44 -0
  20. package/dist/commands/jail.js.map +1 -0
  21. package/dist/commands/judge.d.ts +2 -0
  22. package/dist/commands/judge.js +218 -0
  23. package/dist/commands/judge.js.map +1 -0
  24. package/dist/commands/keygen.d.ts +2 -0
  25. package/dist/commands/keygen.js +90 -0
  26. package/dist/commands/keygen.js.map +1 -0
  27. package/dist/commands/org.d.ts +2 -0
  28. package/dist/commands/org.js +72 -0
  29. package/dist/commands/org.js.map +1 -0
  30. package/dist/commands/policy.d.ts +2 -0
  31. package/dist/commands/policy.js +115 -0
  32. package/dist/commands/policy.js.map +1 -0
  33. package/dist/commands/stats.d.ts +2 -0
  34. package/dist/commands/stats.js +62 -0
  35. package/dist/commands/stats.js.map +1 -0
  36. package/dist/commands/status.d.ts +2 -0
  37. package/dist/commands/status.js +70 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/tier.d.ts +2 -0
  40. package/dist/commands/tier.js +62 -0
  41. package/dist/commands/tier.js.map +1 -0
  42. package/dist/commands/tools.d.ts +2 -0
  43. package/dist/commands/tools.js +175 -0
  44. package/dist/commands/tools.js.map +1 -0
  45. package/dist/commands/whoami.d.ts +2 -0
  46. package/dist/commands/whoami.js +88 -0
  47. package/dist/commands/whoami.js.map +1 -0
  48. package/dist/config.d.ts +23 -0
  49. package/dist/config.js +88 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/presets.d.ts +14 -0
  52. package/dist/presets.js +73 -0
  53. package/dist/presets.js.map +1 -0
  54. package/package.json +32 -0
@@ -0,0 +1,111 @@
1
+ export declare const DEFAULT_ENDPOINT = "https://atbash.ai";
2
+ export declare function isValidPrivateKey(hex: string): boolean;
3
+ export declare function derivePublicKey(privKeyHex: string): string;
4
+ export declare function generateKeyPair(): {
5
+ privKey: string;
6
+ pubKey: string;
7
+ };
8
+ export interface AgentAuth {
9
+ pubkey: string;
10
+ privkey: string;
11
+ }
12
+ export declare function toPubkeyHex(val: unknown): string;
13
+ export interface ClientOpts {
14
+ endpoint?: string;
15
+ timeout?: number;
16
+ }
17
+ export interface JudgeResult {
18
+ verdict: string;
19
+ action_type: string;
20
+ reason: string;
21
+ confidence: number;
22
+ provider: string;
23
+ latency_ms: number;
24
+ tool_call_id: string;
25
+ on_chain: boolean;
26
+ }
27
+ export interface TierInfo {
28
+ org_name: string;
29
+ tier: string;
30
+ verdict_enabled: boolean;
31
+ enforcement_enabled: boolean;
32
+ }
33
+ export interface ToolCallRecord {
34
+ tool_call_id: string;
35
+ agent_pubkey: unknown;
36
+ tool_name: string;
37
+ command_text: string;
38
+ tool_args_json: string;
39
+ context_text: string;
40
+ org_name: string;
41
+ rowid: number;
42
+ }
43
+ export interface ToolCallFull {
44
+ tool_call_id: string;
45
+ agent_pubkey: unknown;
46
+ tool_name: string;
47
+ command_text: string;
48
+ context_text: string;
49
+ tool_args_json?: string;
50
+ org_name: string;
51
+ created_at?: number;
52
+ action_type?: string;
53
+ result_status?: string;
54
+ verdict_color?: string;
55
+ verdict_reason?: string;
56
+ verdict_source?: string;
57
+ verdict_response_time_ms?: number;
58
+ }
59
+ export interface HeldAction {
60
+ judgment_id: string;
61
+ agent_pubkey: unknown;
62
+ action_text: string;
63
+ action_context: string;
64
+ verdict: string;
65
+ reason: string;
66
+ created_at: number;
67
+ }
68
+ export interface HeldActionReview {
69
+ judgment_id: string;
70
+ action_text: string;
71
+ status: string;
72
+ review_note: string;
73
+ reviewed_by: unknown;
74
+ reviewed_at: number;
75
+ created_at: number;
76
+ }
77
+ export interface JudgmentStatus {
78
+ status: "pending" | "answered" | "error";
79
+ verdict: string;
80
+ reason: string;
81
+ judgmentId: string;
82
+ onChain?: boolean;
83
+ cached?: boolean;
84
+ responseTimeMs?: number;
85
+ }
86
+ export interface JudgeOptions extends ClientOpts {
87
+ provider?: string;
88
+ apiKey?: string;
89
+ providerEndpoint?: string;
90
+ model?: string;
91
+ toolName?: string;
92
+ toolArgsJson?: string;
93
+ }
94
+ export declare function judgeAction(action: string, context: string, auth: AgentAuth, opts?: JudgeOptions): Promise<JudgeResult>;
95
+ export declare function getJudgmentStatus(judgmentId: string, opts?: ClientOpts): Promise<JudgmentStatus>;
96
+ export declare function getToolCalls(maxCount: number, opts?: ClientOpts): Promise<ToolCallRecord[]>;
97
+ export declare function getOrgToolCalls(orgName: string, maxCount: number, opts?: ClientOpts): Promise<ToolCallRecord[]>;
98
+ export declare function getAgentToolCalls(agentPubkey: string, maxCount: number, opts?: ClientOpts): Promise<ToolCallRecord[]>;
99
+ export declare function getToolCallCount(opts?: ClientOpts): Promise<number>;
100
+ export declare function getToolCallFull(toolCallId: string, opts?: ClientOpts): Promise<ToolCallFull | null>;
101
+ export declare function getOrgTierInfo(orgName: string, opts?: ClientOpts): Promise<TierInfo | null>;
102
+ export declare function getPendingHeldActions(orgName: string, maxCount: number, opts?: ClientOpts): Promise<HeldAction[]>;
103
+ export declare function getHeldActionReviews(orgName: string, maxCount: number, opts?: ClientOpts): Promise<HeldActionReview[]>;
104
+ export declare function getAgentDetail(agentPubkey: string, opts?: ClientOpts): Promise<Record<string, unknown>>;
105
+ export declare function getAgentPolicy(agentPubkey: string, opts?: ClientOpts): Promise<{
106
+ policy: string;
107
+ is_jailed: boolean;
108
+ is_custom: boolean;
109
+ default_policy: string;
110
+ }>;
111
+ export declare function getSafetyStats(opts?: ClientOpts): Promise<Record<string, unknown>>;
package/dist/client.js ADDED
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ENDPOINT = void 0;
4
+ exports.isValidPrivateKey = isValidPrivateKey;
5
+ exports.derivePublicKey = derivePublicKey;
6
+ exports.generateKeyPair = generateKeyPair;
7
+ exports.toPubkeyHex = toPubkeyHex;
8
+ exports.judgeAction = judgeAction;
9
+ exports.getJudgmentStatus = getJudgmentStatus;
10
+ exports.getToolCalls = getToolCalls;
11
+ exports.getOrgToolCalls = getOrgToolCalls;
12
+ exports.getAgentToolCalls = getAgentToolCalls;
13
+ exports.getToolCallCount = getToolCallCount;
14
+ exports.getToolCallFull = getToolCallFull;
15
+ exports.getOrgTierInfo = getOrgTierInfo;
16
+ exports.getPendingHeldActions = getPendingHeldActions;
17
+ exports.getHeldActionReviews = getHeldActionReviews;
18
+ exports.getAgentDetail = getAgentDetail;
19
+ exports.getAgentPolicy = getAgentPolicy;
20
+ exports.getSafetyStats = getSafetyStats;
21
+ const crypto_1 = require("crypto");
22
+ exports.DEFAULT_ENDPOINT = "https://atbash.ai";
23
+ function isValidPrivateKey(hex) {
24
+ return /^[0-9a-fA-F]{64}$/.test(hex);
25
+ }
26
+ function derivePublicKey(privKeyHex) {
27
+ const ecdh = (0, crypto_1.createECDH)("secp256k1");
28
+ ecdh.setPrivateKey(Buffer.from(privKeyHex, "hex"));
29
+ return ecdh.getPublicKey("hex", "compressed");
30
+ }
31
+ function generateKeyPair() {
32
+ const ecdh = (0, crypto_1.createECDH)("secp256k1");
33
+ ecdh.generateKeys();
34
+ return {
35
+ privKey: ecdh.getPrivateKey("hex"),
36
+ pubKey: ecdh.getPublicKey("hex", "compressed"),
37
+ };
38
+ }
39
+ function toPubkeyHex(val) {
40
+ if (!val)
41
+ return "";
42
+ if (typeof val === "string")
43
+ return val;
44
+ if (Buffer.isBuffer(val))
45
+ return val.toString("hex");
46
+ if (typeof val === "object" && val !== null && "data" in val) {
47
+ return Buffer.from(val.data).toString("hex");
48
+ }
49
+ return "";
50
+ }
51
+ function baseUrl(opts) {
52
+ return opts?.endpoint || exports.DEFAULT_ENDPOINT;
53
+ }
54
+ async function postJson(url, body, opts) {
55
+ const resp = await fetch(url, {
56
+ method: "POST",
57
+ headers: { "Content-Type": "application/json" },
58
+ body: JSON.stringify(body),
59
+ signal: opts?.timeout ? AbortSignal.timeout(opts.timeout) : undefined,
60
+ });
61
+ if (!resp.ok) {
62
+ const text = await resp.text().catch(() => "");
63
+ throw new Error(`API error ${resp.status}: ${text || resp.statusText}`);
64
+ }
65
+ const ct = resp.headers.get("content-type") || "";
66
+ return ct.includes("application/json")
67
+ ? resp.json()
68
+ : {};
69
+ }
70
+ async function getJson(url, opts) {
71
+ const resp = await fetch(url, {
72
+ method: "GET",
73
+ signal: opts?.timeout ? AbortSignal.timeout(opts.timeout) : undefined,
74
+ });
75
+ if (!resp.ok) {
76
+ const text = await resp.text().catch(() => "");
77
+ throw new Error(`API error ${resp.status}: ${text || resp.statusText}`);
78
+ }
79
+ return resp.json();
80
+ }
81
+ async function judgeAction(action, context, auth, opts) {
82
+ const url = `${baseUrl(opts)}/api/v1/judge`;
83
+ const data = await postJson(url, {
84
+ provider: opts?.provider || "",
85
+ action,
86
+ context: context || "",
87
+ agent_pubkey: auth.pubkey,
88
+ agent_privkey: auth.privkey,
89
+ tool_name: opts?.toolName || "",
90
+ tool_args_json: opts?.toolArgsJson || "",
91
+ api_key: opts?.apiKey || "",
92
+ endpoint_url: opts?.providerEndpoint || "",
93
+ model: opts?.model || "",
94
+ }, opts);
95
+ return {
96
+ verdict: String(data.verdict || "").toUpperCase(),
97
+ action_type: String(data.action_type || ""),
98
+ reason: String(data.reason || ""),
99
+ confidence: Number(data.confidence ?? 0),
100
+ provider: String(data.provider || ""),
101
+ latency_ms: Number(data.latency_ms ?? 0),
102
+ tool_call_id: String(data.tool_call_id || ""),
103
+ on_chain: Boolean(data.on_chain),
104
+ };
105
+ }
106
+ async function getJudgmentStatus(judgmentId, opts) {
107
+ const url = `${baseUrl(opts)}/api/judge?id=${encodeURIComponent(judgmentId)}`;
108
+ const data = await getJson(url, opts);
109
+ return {
110
+ status: data.status || "error",
111
+ verdict: String(data.verdict || ""),
112
+ reason: String(data.reason || ""),
113
+ judgmentId: String(data.judgmentId || judgmentId),
114
+ onChain: Boolean(data.onChain),
115
+ cached: Boolean(data.cached),
116
+ responseTimeMs: Number(data.responseTimeMs ?? 0),
117
+ };
118
+ }
119
+ function riskEngineUrl(action, params, opts) {
120
+ const url = new URL(`${baseUrl(opts)}/api/risk-engine`);
121
+ url.searchParams.set("action", action);
122
+ for (const [k, v] of Object.entries(params)) {
123
+ if (v)
124
+ url.searchParams.set(k, v);
125
+ }
126
+ return url.toString();
127
+ }
128
+ async function getToolCalls(maxCount, opts) {
129
+ return getJson(riskEngineUrl("tool-calls", { limit: String(maxCount) }, opts), opts);
130
+ }
131
+ async function getOrgToolCalls(orgName, maxCount, opts) {
132
+ return getJson(riskEngineUrl("org-tool-calls", { org: orgName, limit: String(maxCount) }, opts), opts);
133
+ }
134
+ async function getAgentToolCalls(agentPubkey, maxCount, opts) {
135
+ return getJson(riskEngineUrl("agent-tool-calls", { agent: agentPubkey, limit: String(maxCount) }, opts), opts);
136
+ }
137
+ async function getToolCallCount(opts) {
138
+ const result = await getJson(riskEngineUrl("tool-call-count", {}, opts), opts);
139
+ return typeof result === "number" ? result : Number(result ?? 0);
140
+ }
141
+ async function getToolCallFull(toolCallId, opts) {
142
+ return getJson(riskEngineUrl("tool-call-full", { tool_call_id: toolCallId }, opts), opts);
143
+ }
144
+ async function getOrgTierInfo(orgName, opts) {
145
+ return getJson(riskEngineUrl("org-tier-info", { org: orgName }, opts), opts);
146
+ }
147
+ async function getPendingHeldActions(orgName, maxCount, opts) {
148
+ return getJson(riskEngineUrl("pending-held-actions", { org: orgName, limit: String(maxCount) }, opts), opts);
149
+ }
150
+ async function getHeldActionReviews(orgName, maxCount, opts) {
151
+ return getJson(riskEngineUrl("held-action-reviews", { org: orgName, limit: String(maxCount) }, opts), opts);
152
+ }
153
+ function riskEnginePostUrl(opts) {
154
+ return `${baseUrl(opts)}/api/risk-engine`;
155
+ }
156
+ async function getAgentDetail(agentPubkey, opts) {
157
+ return postJson(riskEnginePostUrl(opts), {
158
+ action: "agent-detail-batch",
159
+ agent: agentPubkey,
160
+ }, opts);
161
+ }
162
+ async function getAgentPolicy(agentPubkey, opts) {
163
+ return postJson(riskEnginePostUrl(opts), {
164
+ action: "agent-policy-batch",
165
+ agent: agentPubkey,
166
+ }, opts);
167
+ }
168
+ async function getSafetyStats(opts) {
169
+ const url = `${baseUrl(opts)}/api/insurance?action=safety-stats`;
170
+ const result = await getJson(url, opts);
171
+ return (result?.data || result);
172
+ }
173
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerConfigCommand(program: Command): void;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerConfigCommand = registerConfigCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const client_1 = require("../client");
10
+ function maskKey(key) {
11
+ return key.slice(0, 8) + "..." + key.slice(-6);
12
+ }
13
+ function registerConfigCommand(program) {
14
+ program
15
+ .command("set")
16
+ .description("Save a configuration value")
17
+ .argument("<key-type>", "What to set: agent-key, admin-key, org-name, or endpoint")
18
+ .argument("<value>", "The value to save")
19
+ .action((keyType, value) => {
20
+ const config = (0, config_1.loadConfig)();
21
+ switch (keyType) {
22
+ case "agent-key": {
23
+ const clean = value.replace(/^0x/, "").trim().toLowerCase();
24
+ if (!(0, client_1.isValidPrivateKey)(clean)) {
25
+ console.error(chalk_1.default.red("Invalid private key — must be exactly 64 hex characters."));
26
+ process.exit(1);
27
+ }
28
+ config.agentKey = clean;
29
+ (0, config_1.saveConfig)(config);
30
+ const pubKey = (0, client_1.derivePublicKey)(clean);
31
+ console.log(chalk_1.default.green("Agent key saved."));
32
+ console.log(chalk_1.default.dim(`Public key: ${pubKey}`));
33
+ break;
34
+ }
35
+ case "admin-key": {
36
+ const clean = value.replace(/^0x/, "").trim().toLowerCase();
37
+ if (!(0, client_1.isValidPrivateKey)(clean)) {
38
+ console.error(chalk_1.default.red("Invalid admin key — must be exactly 64 hex characters."));
39
+ process.exit(1);
40
+ }
41
+ config.adminKey = clean;
42
+ (0, config_1.saveConfig)(config);
43
+ console.log(chalk_1.default.green("Admin key saved."));
44
+ break;
45
+ }
46
+ case "org-name": {
47
+ config.orgName = value.trim();
48
+ (0, config_1.saveConfig)(config);
49
+ console.log(chalk_1.default.green(`Org name saved: ${config.orgName}`));
50
+ break;
51
+ }
52
+ case "endpoint": {
53
+ config.judgeEndpoint = value.trim();
54
+ (0, config_1.saveConfig)(config);
55
+ console.log(chalk_1.default.green(`Endpoint saved: ${config.judgeEndpoint}`));
56
+ break;
57
+ }
58
+ case "provider": {
59
+ const valid = ["atbash", "openai", "google", "microsoft", "custom"];
60
+ if (!valid.includes(value.toLowerCase())) {
61
+ console.error(chalk_1.default.red(`Invalid provider. Choose: ${valid.join(", ")}`));
62
+ process.exit(1);
63
+ }
64
+ config.provider = value.toLowerCase();
65
+ (0, config_1.saveConfig)(config);
66
+ console.log(chalk_1.default.green(`Provider saved: ${config.provider}`));
67
+ break;
68
+ }
69
+ case "api-key": {
70
+ config.providerApiKey = value.trim();
71
+ (0, config_1.saveConfig)(config);
72
+ console.log(chalk_1.default.green("Provider API key saved."));
73
+ break;
74
+ }
75
+ case "provider-endpoint": {
76
+ config.providerEndpoint = value.trim();
77
+ (0, config_1.saveConfig)(config);
78
+ console.log(chalk_1.default.green(`Provider endpoint saved: ${config.providerEndpoint}`));
79
+ break;
80
+ }
81
+ case "model": {
82
+ config.providerModel = value.trim();
83
+ (0, config_1.saveConfig)(config);
84
+ console.log(chalk_1.default.green(`Model saved: ${config.providerModel}`));
85
+ break;
86
+ }
87
+ default:
88
+ console.error(chalk_1.default.red(`Unknown key type: ${keyType}`));
89
+ console.error(chalk_1.default.dim("Valid: agent-key, admin-key, org-name, endpoint, provider, api-key, provider-endpoint, model"));
90
+ process.exit(1);
91
+ }
92
+ });
93
+ program
94
+ .command("wipe")
95
+ .description("Clear all saved configuration")
96
+ .action(() => {
97
+ (0, config_1.saveConfig)({});
98
+ console.log(chalk_1.default.green("All configuration cleared."));
99
+ });
100
+ // atbash config
101
+ program
102
+ .command("config")
103
+ .description("Show current configuration")
104
+ .action(() => {
105
+ const config = (0, config_1.loadConfig)();
106
+ console.log(chalk_1.default.bold("Atbash Configuration"));
107
+ console.log(chalk_1.default.dim(`File: ${config_1.CONFIG_FILE}`));
108
+ console.log();
109
+ if (config.agentKey) {
110
+ const pub = (0, client_1.derivePublicKey)(config.agentKey);
111
+ console.log(` Agent key: ${chalk_1.default.dim(maskKey(config.agentKey))} ${chalk_1.default.green("(set)")}`);
112
+ console.log(` Public key: ${chalk_1.default.cyan(pub)}`);
113
+ }
114
+ else {
115
+ console.log(` Agent key: ${chalk_1.default.yellow("not set")} ${chalk_1.default.dim("— run atbash set agent-key <key> or atbash keygen")}`);
116
+ }
117
+ if (config.adminKey) {
118
+ console.log(` Admin key: ${chalk_1.default.dim(maskKey(config.adminKey))} ${chalk_1.default.green("(set)")}`);
119
+ }
120
+ else {
121
+ console.log(` Admin key: ${chalk_1.default.dim("not set")}`);
122
+ }
123
+ if (config.orgName) {
124
+ console.log(` Org name: ${chalk_1.default.white(config.orgName)}`);
125
+ }
126
+ else {
127
+ console.log(` Org name: ${chalk_1.default.dim("not set")}`);
128
+ }
129
+ if (config.judgeEndpoint) {
130
+ console.log(` Endpoint: ${chalk_1.default.white(config.judgeEndpoint)}`);
131
+ }
132
+ else {
133
+ console.log(` Endpoint: ${chalk_1.default.dim(`default (${client_1.DEFAULT_ENDPOINT})`)}`);
134
+ }
135
+ console.log();
136
+ console.log(chalk_1.default.bold(" Provider"));
137
+ console.log(` Provider: ${chalk_1.default.white(config.provider || "atbash")}`);
138
+ if (config.providerApiKey) {
139
+ console.log(` API key: ${chalk_1.default.dim(maskKey(config.providerApiKey))} ${chalk_1.default.green("(set)")}`);
140
+ }
141
+ if (config.providerEndpoint) {
142
+ console.log(` Provider URL: ${chalk_1.default.white(config.providerEndpoint)}`);
143
+ }
144
+ if (config.providerModel) {
145
+ console.log(` Model: ${chalk_1.default.white(config.providerModel)}`);
146
+ }
147
+ });
148
+ }
149
+ //# sourceMappingURL=config-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerHeldCommand(program: Command): void;
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerHeldCommand = registerHeldCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const client_1 = require("../client");
10
+ const config_1 = require("../config");
11
+ function requireOrgName(opts) {
12
+ const orgName = opts.org || (0, config_1.resolveOrgName)();
13
+ if (!orgName) {
14
+ console.error(chalk_1.default.red("Error: Org name required.\n") +
15
+ "Provide via --org, ATBASH_ORG_NAME env var, or run " +
16
+ chalk_1.default.cyan("atbash set org-name <name>"));
17
+ process.exit(1);
18
+ }
19
+ return orgName;
20
+ }
21
+ function formatHeldAction(ha, index) {
22
+ const ts = ha.created_at ? new Date(ha.created_at).toISOString() : "—";
23
+ const pk = (0, client_1.toPubkeyHex)(ha.agent_pubkey);
24
+ const agent = pk ? pk.slice(0, 8) + "..." + pk.slice(-6) : "—";
25
+ const lines = [
26
+ chalk_1.default.dim(` ${index + 1}. `) +
27
+ chalk_1.default.yellow.bold("HELD") +
28
+ " " +
29
+ chalk_1.default.white(ha.action_text || "—"),
30
+ ` ID: ${chalk_1.default.cyan(ha.judgment_id)} Agent: ${chalk_1.default.dim(agent)}`,
31
+ ];
32
+ if (ha.action_context) {
33
+ lines.push(` Context: ${chalk_1.default.dim(ha.action_context)}`);
34
+ }
35
+ lines.push(` Reason: ${chalk_1.default.dim(ha.reason || "—")}`);
36
+ lines.push(` ${chalk_1.default.dim(ts)}`);
37
+ return lines.join("\n");
38
+ }
39
+ function registerHeldCommand(program) {
40
+ const held = program
41
+ .command("held")
42
+ .description("View held actions (Enforcement tier)");
43
+ held
44
+ .option("--org <name>", "Org name")
45
+ .option("-n, --count <count>", "Max items to fetch", "10")
46
+ .option("--endpoint <url>", "API endpoint URL")
47
+ .option("--json", "Output result as JSON")
48
+ .action(async (opts) => {
49
+ const orgName = requireOrgName(opts);
50
+ const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(opts.endpoint) };
51
+ const maxCount = Math.min(parseInt(opts.count, 10) || 10, 50);
52
+ const spinner = opts.json
53
+ ? null
54
+ : (0, ora_1.default)("Fetching pending held actions...").start();
55
+ try {
56
+ const results = await (0, client_1.getPendingHeldActions)(orgName, maxCount, clientOpts);
57
+ spinner?.stop();
58
+ if (opts.json) {
59
+ console.log(JSON.stringify(results, null, 2));
60
+ return;
61
+ }
62
+ if (!results.length) {
63
+ console.log(chalk_1.default.dim("No pending held actions."));
64
+ return;
65
+ }
66
+ console.log(chalk_1.default.bold(`Pending Held Actions (${results.length})`));
67
+ console.log();
68
+ results.forEach((ha, i) => {
69
+ console.log(formatHeldAction(ha, i));
70
+ if (i < results.length - 1)
71
+ console.log();
72
+ });
73
+ console.log();
74
+ console.log(chalk_1.default.dim(" Inspect: ") +
75
+ chalk_1.default.cyan("atbash tools inspect <id>"));
76
+ console.log(chalk_1.default.dim(" Review history: ") +
77
+ chalk_1.default.cyan("atbash held reviews --org <name>"));
78
+ }
79
+ catch (err) {
80
+ spinner?.fail("Failed to fetch held actions");
81
+ console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
82
+ process.exit(1);
83
+ }
84
+ });
85
+ held
86
+ .command("reviews")
87
+ .description("Show held action review history")
88
+ .option("--org <name>", "Org name")
89
+ .option("-n, --count <count>", "Max items to fetch", "10")
90
+ .option("--endpoint <url>", "API endpoint URL")
91
+ .option("--json", "Output result as JSON")
92
+ .action(async (opts, cmd) => {
93
+ const merged = { ...cmd.parent?.opts(), ...opts };
94
+ const orgName = requireOrgName(merged);
95
+ const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(merged.endpoint) };
96
+ const maxCount = Math.min(parseInt(merged.count, 10) || 10, 50);
97
+ const spinner = merged.json
98
+ ? null
99
+ : (0, ora_1.default)("Fetching review history...").start();
100
+ try {
101
+ const results = await (0, client_1.getHeldActionReviews)(orgName, maxCount, clientOpts);
102
+ spinner?.stop();
103
+ if (merged.json) {
104
+ console.log(JSON.stringify(results, null, 2));
105
+ return;
106
+ }
107
+ if (!results.length) {
108
+ console.log(chalk_1.default.dim("No reviews found."));
109
+ return;
110
+ }
111
+ console.log(chalk_1.default.bold(`Held Action Reviews (${results.length})`));
112
+ console.log();
113
+ results.forEach((r, i) => {
114
+ const status = r.status || "pending";
115
+ const isApproved = status === "approved";
116
+ const isPending = status === "pending";
117
+ const statusColor = isPending
118
+ ? chalk_1.default.yellow
119
+ : isApproved
120
+ ? chalk_1.default.green
121
+ : chalk_1.default.red;
122
+ const statusText = isPending
123
+ ? "PENDING"
124
+ : isApproved
125
+ ? "APPROVED"
126
+ : "REJECTED";
127
+ const createdAt = r.created_at
128
+ ? new Date(r.created_at).toISOString()
129
+ : "—";
130
+ const reviewedAt = r.reviewed_at
131
+ ? new Date(r.reviewed_at).toISOString()
132
+ : null;
133
+ const reviewedBy = (0, client_1.toPubkeyHex)(r.reviewed_by);
134
+ console.log(chalk_1.default.dim(` ${i + 1}. `) +
135
+ statusColor.bold(statusText) +
136
+ ` ${chalk_1.default.cyan(r.judgment_id)}`);
137
+ if (r.action_text) {
138
+ const truncated = r.action_text.length > 80 ? r.action_text.slice(0, 77) + "..." : r.action_text;
139
+ console.log(` Action: ${chalk_1.default.white(truncated)}`);
140
+ }
141
+ if (r.review_note)
142
+ console.log(` Note: ${chalk_1.default.dim(r.review_note)}`);
143
+ console.log(` Submitted: ${chalk_1.default.dim(createdAt)}`);
144
+ if (reviewedAt) {
145
+ console.log(` Reviewed by: ${chalk_1.default.dim(reviewedBy || "—")} ${chalk_1.default.dim(reviewedAt)}`);
146
+ }
147
+ if (i < results.length - 1)
148
+ console.log();
149
+ });
150
+ }
151
+ catch (err) {
152
+ spinner?.fail("Failed to fetch reviews");
153
+ console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
154
+ process.exit(1);
155
+ }
156
+ });
157
+ }
158
+ //# sourceMappingURL=held.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"held.js","sourceRoot":"","sources":["../../src/commands/held.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerHistoryCommand(program: Command): void;