@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.
- package/LICENSE +28 -0
- package/README.md +501 -0
- package/dist/bin/atbash.d.ts +2 -0
- package/dist/bin/atbash.js +38 -0
- package/dist/bin/atbash.js.map +1 -0
- package/dist/client.d.ts +111 -0
- package/dist/client.js +173 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/config-cmd.d.ts +2 -0
- package/dist/commands/config-cmd.js +149 -0
- package/dist/commands/config-cmd.js.map +1 -0
- package/dist/commands/held.d.ts +2 -0
- package/dist/commands/held.js +158 -0
- package/dist/commands/held.js.map +1 -0
- package/dist/commands/history.d.ts +2 -0
- package/dist/commands/history.js +72 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/jail.d.ts +6 -0
- package/dist/commands/jail.js +44 -0
- package/dist/commands/jail.js.map +1 -0
- package/dist/commands/judge.d.ts +2 -0
- package/dist/commands/judge.js +218 -0
- package/dist/commands/judge.js.map +1 -0
- package/dist/commands/keygen.d.ts +2 -0
- package/dist/commands/keygen.js +90 -0
- package/dist/commands/keygen.js.map +1 -0
- package/dist/commands/org.d.ts +2 -0
- package/dist/commands/org.js +72 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/policy.d.ts +2 -0
- package/dist/commands/policy.js +115 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/stats.d.ts +2 -0
- package/dist/commands/stats.js +62 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.js +70 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tier.d.ts +2 -0
- package/dist/commands/tier.js +62 -0
- package/dist/commands/tier.js.map +1 -0
- package/dist/commands/tools.d.ts +2 -0
- package/dist/commands/tools.js +175 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.js +88 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.js +88 -0
- package/dist/config.js.map +1 -0
- package/dist/presets.d.ts +14 -0
- package/dist/presets.js +73 -0
- package/dist/presets.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,115 @@
|
|
|
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.registerPolicyCommand = registerPolicyCommand;
|
|
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
|
+
const presets_1 = require("../presets");
|
|
12
|
+
function registerPolicyCommand(program) {
|
|
13
|
+
const policyCmd = program
|
|
14
|
+
.command("policy")
|
|
15
|
+
.description("View your agent's safety policy");
|
|
16
|
+
// atbash policy show
|
|
17
|
+
policyCmd
|
|
18
|
+
.command("show")
|
|
19
|
+
.description("Show your agent's current policy")
|
|
20
|
+
.option("-k, --agent-key <key>", "Agent private key (64 hex chars)")
|
|
21
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
22
|
+
.option("--json", "Output as JSON")
|
|
23
|
+
.action(async (opts) => {
|
|
24
|
+
const agentKey = (0, config_1.resolveAgentKey)(opts.agentKey);
|
|
25
|
+
if (!agentKey) {
|
|
26
|
+
console.error(chalk_1.default.red("Error: Agent key required."));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const cleanKey = agentKey.replace(/^0x/, "").trim().toLowerCase();
|
|
30
|
+
if (!(0, client_1.isValidPrivateKey)(cleanKey)) {
|
|
31
|
+
console.error(chalk_1.default.red("Error: Invalid private key."));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const agentPub = (0, client_1.derivePublicKey)(cleanKey);
|
|
35
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching policy...").start();
|
|
36
|
+
try {
|
|
37
|
+
const result = await (0, client_1.getAgentPolicy)(agentPub, {
|
|
38
|
+
endpoint: (0, config_1.resolveEndpoint)(opts.endpoint),
|
|
39
|
+
});
|
|
40
|
+
spinner?.stop();
|
|
41
|
+
if (opts.json) {
|
|
42
|
+
console.log(JSON.stringify({ agentPubkey: agentPub, ...result }, null, 2));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
console.log(chalk_1.default.bold("Agent Policy"));
|
|
46
|
+
console.log(chalk_1.default.dim(`Agent: ${agentPub.slice(0, 8)}...${agentPub.slice(-6)}`));
|
|
47
|
+
console.log();
|
|
48
|
+
if (result.is_custom && result.policy) {
|
|
49
|
+
console.log(chalk_1.default.green(" Custom policy active") +
|
|
50
|
+
chalk_1.default.dim(` (${result.policy.length} chars)`));
|
|
51
|
+
console.log();
|
|
52
|
+
for (const line of result.policy.split("\n")) {
|
|
53
|
+
console.log(` ${line}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (result.default_policy) {
|
|
57
|
+
console.log(chalk_1.default.yellow(" No custom policy — using default policy."));
|
|
58
|
+
console.log();
|
|
59
|
+
for (const line of result.default_policy.split("\n").slice(0, 10)) {
|
|
60
|
+
console.log(chalk_1.default.dim(` ${line}`));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log(chalk_1.default.yellow(" No policy configured."));
|
|
65
|
+
}
|
|
66
|
+
if (result.is_jailed) {
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(chalk_1.default.red.bold(" Agent is JAILED"));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
spinner?.stop();
|
|
73
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
74
|
+
if (msg.includes("503") ||
|
|
75
|
+
msg.includes("Query failed") ||
|
|
76
|
+
msg.includes("Resource not found") ||
|
|
77
|
+
msg.includes("not found")) {
|
|
78
|
+
console.log(chalk_1.default.yellow("Agent not registered on chain yet."));
|
|
79
|
+
console.log(chalk_1.default.dim('Run a judge command first to register your agent: atbash judge "test action"'));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.error(chalk_1.default.red(`\nError: ${msg}`));
|
|
83
|
+
}
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// atbash policy presets (local only)
|
|
88
|
+
policyCmd
|
|
89
|
+
.command("presets")
|
|
90
|
+
.description("List available policy presets")
|
|
91
|
+
.option("--json", "Output as JSON")
|
|
92
|
+
.action((opts) => {
|
|
93
|
+
if (opts.json) {
|
|
94
|
+
console.log(JSON.stringify(Object.entries(presets_1.PRESETS).map(([key, p]) => ({
|
|
95
|
+
key,
|
|
96
|
+
name: p.name,
|
|
97
|
+
description: p.description,
|
|
98
|
+
ruleCount: (p.policy.match(/<!--/g) || []).length,
|
|
99
|
+
chars: p.policy.length,
|
|
100
|
+
})), null, 2));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
console.log(chalk_1.default.bold("Reference Policy Shapes"));
|
|
104
|
+
console.log();
|
|
105
|
+
for (const [key, preset] of Object.entries(presets_1.PRESETS)) {
|
|
106
|
+
const ruleCount = (preset.policy.match(/<!--/g) || []).length;
|
|
107
|
+
console.log(` ${chalk_1.default.cyan(key.padEnd(12))} ${preset.name} — ${preset.description}`);
|
|
108
|
+
console.log(` ${" ".repeat(12)} ${chalk_1.default.dim(`${ruleCount} rules, ${preset.policy.length} chars`)}`);
|
|
109
|
+
console.log();
|
|
110
|
+
}
|
|
111
|
+
console.log(chalk_1.default.dim(" Reference only. Production policies are authored, versioned, and"));
|
|
112
|
+
console.log(chalk_1.default.dim(" signed in the dashboard — the CLI cannot author or assign packs."));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/commands/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
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.registerStatsCommand = registerStatsCommand;
|
|
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 registerStatsCommand(program) {
|
|
12
|
+
program
|
|
13
|
+
.command("stats")
|
|
14
|
+
.description("Show chain-wide verdict statistics")
|
|
15
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
16
|
+
.option("--json", "Output result as JSON")
|
|
17
|
+
.action(async (opts) => {
|
|
18
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching stats...").start();
|
|
19
|
+
try {
|
|
20
|
+
const r = await (0, client_1.getSafetyStats)({
|
|
21
|
+
endpoint: (0, config_1.resolveEndpoint)(opts.endpoint),
|
|
22
|
+
});
|
|
23
|
+
spinner?.stop();
|
|
24
|
+
const total = Number(r.total_judgments ?? 0);
|
|
25
|
+
const green = Number(r.green_count ?? 0);
|
|
26
|
+
const yellow = Number(r.yellow_count ?? 0);
|
|
27
|
+
const red = Number(r.red_count ?? 0);
|
|
28
|
+
const cacheHits = Number(r.cache_hits ?? 0);
|
|
29
|
+
const cacheMisses = Number(r.cache_misses ?? 0);
|
|
30
|
+
const cacheEntries = Number(r.cache_entries ?? 0);
|
|
31
|
+
const hitRate = total > 0 ? (cacheHits / (cacheHits + cacheMisses)) * 100 : 0;
|
|
32
|
+
if (opts.json) {
|
|
33
|
+
console.log(JSON.stringify({
|
|
34
|
+
totalJudgments: total,
|
|
35
|
+
green,
|
|
36
|
+
yellow,
|
|
37
|
+
red,
|
|
38
|
+
cacheHits,
|
|
39
|
+
cacheMisses,
|
|
40
|
+
cacheEntries,
|
|
41
|
+
cacheHitRate: Math.round(hitRate * 100) / 100,
|
|
42
|
+
}, null, 2));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
console.log(chalk_1.default.bold("Safety Stats"));
|
|
46
|
+
console.log();
|
|
47
|
+
console.log(` Total judgments: ${chalk_1.default.white(total.toLocaleString())}`);
|
|
48
|
+
console.log(` ${chalk_1.default.green("PASS")}: ${chalk_1.default.green(green.toLocaleString())}`);
|
|
49
|
+
console.log(` ${chalk_1.default.yellow("HOLD")}: ${chalk_1.default.yellow(yellow.toLocaleString())}`);
|
|
50
|
+
console.log(` ${chalk_1.default.red("BLOCK")}: ${chalk_1.default.red(red.toLocaleString())}`);
|
|
51
|
+
console.log();
|
|
52
|
+
console.log(` Cache entries: ${chalk_1.default.white(cacheEntries.toLocaleString())}`);
|
|
53
|
+
console.log(` Cache hit rate: ${chalk_1.default.cyan(hitRate.toFixed(1) + "%")}`);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
spinner?.fail("Failed to fetch stats");
|
|
57
|
+
console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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.registerStatusCommand = registerStatusCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const client_1 = require("../client");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
function registerStatusCommand(program) {
|
|
11
|
+
program
|
|
12
|
+
.command("status")
|
|
13
|
+
.description("Check the status of a judgment by ID")
|
|
14
|
+
.argument("<judgment-id>", "The judgment ID to check")
|
|
15
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
16
|
+
.option("--json", "Output result as JSON")
|
|
17
|
+
.action(async (judgmentId, opts) => {
|
|
18
|
+
try {
|
|
19
|
+
const result = await (0, client_1.getJudgmentStatus)(judgmentId, {
|
|
20
|
+
endpoint: (0, config_1.resolveEndpoint)(opts.endpoint),
|
|
21
|
+
});
|
|
22
|
+
if (opts.json) {
|
|
23
|
+
console.log(JSON.stringify(result, null, 2));
|
|
24
|
+
process.exit(0);
|
|
25
|
+
}
|
|
26
|
+
if (result.status === "error") {
|
|
27
|
+
console.log(chalk_1.default.yellow(`Judgment ${judgmentId}: ${result.reason || "error"}`));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
if (result.status === "pending") {
|
|
31
|
+
console.log(chalk_1.default.yellow(`Judgment ${judgmentId} is still pending...`));
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
const verdictUpper = result.verdict.toUpperCase();
|
|
35
|
+
const verdictColor = verdictUpper === "GREEN"
|
|
36
|
+
? chalk_1.default.green
|
|
37
|
+
: verdictUpper === "YELLOW"
|
|
38
|
+
? chalk_1.default.yellow
|
|
39
|
+
: verdictUpper === "RED"
|
|
40
|
+
? chalk_1.default.red
|
|
41
|
+
: chalk_1.default.gray;
|
|
42
|
+
const label = verdictUpper === "GREEN"
|
|
43
|
+
? "PASS"
|
|
44
|
+
: verdictUpper === "YELLOW"
|
|
45
|
+
? "HOLD"
|
|
46
|
+
: verdictUpper === "RED"
|
|
47
|
+
? "BLOCK"
|
|
48
|
+
: "PENDING";
|
|
49
|
+
console.log(verdictColor.bold(` ${label} ${verdictUpper}`));
|
|
50
|
+
if (result.reason) {
|
|
51
|
+
console.log(chalk_1.default.white(" Reason: ") + result.reason);
|
|
52
|
+
}
|
|
53
|
+
if (result.cached) {
|
|
54
|
+
console.log(chalk_1.default.dim(" Source: cached verdict"));
|
|
55
|
+
}
|
|
56
|
+
if (result.responseTimeMs) {
|
|
57
|
+
console.log(chalk_1.default.dim(` Inference time: ${result.responseTimeMs}ms`));
|
|
58
|
+
}
|
|
59
|
+
if (result.onChain) {
|
|
60
|
+
console.log(chalk_1.default.dim(" On-chain: yes"));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
65
|
+
console.error(chalk_1.default.red(`Error: ${msg}`));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
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.registerTierCommand = registerTierCommand;
|
|
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
|
+
const TIER_LABELS = {
|
|
12
|
+
audit: "Audit",
|
|
13
|
+
audit_plus: "Audit+",
|
|
14
|
+
enforcement: "Enforcement",
|
|
15
|
+
};
|
|
16
|
+
function registerTierCommand(program) {
|
|
17
|
+
program
|
|
18
|
+
.command("tier")
|
|
19
|
+
.description("Show tier info for your org")
|
|
20
|
+
.option("--org <name>", "Org name (required)")
|
|
21
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
22
|
+
.option("--json", "Output result as JSON")
|
|
23
|
+
.action(async (opts) => {
|
|
24
|
+
const orgName = opts.org || (0, config_1.resolveOrgName)();
|
|
25
|
+
if (!orgName) {
|
|
26
|
+
console.error(chalk_1.default.red("Error: Org name required.\n") +
|
|
27
|
+
"Provide via --org, ATBASH_ORG_NAME env var, or run " +
|
|
28
|
+
chalk_1.default.cyan("atbash set org-name <name>"));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching tier info...").start();
|
|
32
|
+
try {
|
|
33
|
+
const info = await (0, client_1.getOrgTierInfo)(orgName, {
|
|
34
|
+
endpoint: (0, config_1.resolveEndpoint)(opts.endpoint),
|
|
35
|
+
});
|
|
36
|
+
spinner?.stop();
|
|
37
|
+
if (!info) {
|
|
38
|
+
console.log(opts.json
|
|
39
|
+
? JSON.stringify({ error: "Org not found", orgName })
|
|
40
|
+
: chalk_1.default.yellow(`Org "${orgName}" not found.`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
console.log(JSON.stringify(info, null, 2));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const label = TIER_LABELS[info.tier] || info.tier;
|
|
48
|
+
console.log(chalk_1.default.bold("Org Tier Info"));
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(` Org: ${chalk_1.default.white(info.org_name)}`);
|
|
51
|
+
console.log(` Tier: ${chalk_1.default.cyan.bold(label)}`);
|
|
52
|
+
console.log(` Verdicts: ${info.verdict_enabled ? chalk_1.default.green("enabled") : chalk_1.default.dim("disabled")}`);
|
|
53
|
+
console.log(` Enforcement: ${info.enforcement_enabled ? chalk_1.default.green("enabled") : chalk_1.default.dim("disabled")}`);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
spinner?.fail("Failed to fetch tier info");
|
|
57
|
+
console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/commands/tier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
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.registerToolsCommand = registerToolsCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const client_1 = require("../client");
|
|
10
|
+
function getVerdictFromRecord(tc) {
|
|
11
|
+
const raw = tc;
|
|
12
|
+
const details = raw.verdict_details || {};
|
|
13
|
+
return (details.verdict || raw.verdict || "").toUpperCase() || undefined;
|
|
14
|
+
}
|
|
15
|
+
const config_1 = require("../config");
|
|
16
|
+
function formatToolCall(tc, index, verdictColor) {
|
|
17
|
+
const pk = (0, client_1.toPubkeyHex)(tc.agent_pubkey);
|
|
18
|
+
const tool = tc.tool_name || "unknown";
|
|
19
|
+
const action = tc.command_text || tc.tool_call_id;
|
|
20
|
+
const truncated = action.length > 80 ? action.slice(0, 77) + "..." : action;
|
|
21
|
+
const verdictLabel = verdictColor === "GREEN"
|
|
22
|
+
? chalk_1.default.green("PASS")
|
|
23
|
+
: verdictColor === "YELLOW"
|
|
24
|
+
? chalk_1.default.yellow("HOLD")
|
|
25
|
+
: verdictColor === "RED"
|
|
26
|
+
? chalk_1.default.red("BLOCK")
|
|
27
|
+
: chalk_1.default.dim("—");
|
|
28
|
+
return [
|
|
29
|
+
chalk_1.default.dim(` ${String(index + 1).padStart(2)}.`) + ` ${verdictLabel} ${chalk_1.default.white(truncated)}`,
|
|
30
|
+
` ${chalk_1.default.dim("Tool:")} ${chalk_1.default.yellow(tool)}`,
|
|
31
|
+
` ${chalk_1.default.dim("Agent:")} ${chalk_1.default.cyan(pk || "—")}`,
|
|
32
|
+
` ${chalk_1.default.dim("ID:")} ${chalk_1.default.dim(tc.tool_call_id)}`,
|
|
33
|
+
].join("\n");
|
|
34
|
+
}
|
|
35
|
+
function registerToolsCommand(program) {
|
|
36
|
+
const tools = program.command("tools").description("Query tool call logs");
|
|
37
|
+
tools
|
|
38
|
+
.option("-n, --count <count>", "Number of tool calls to fetch", "10")
|
|
39
|
+
.option("--org <name>", "Filter by org name")
|
|
40
|
+
.option("--agent <pubkey>", "Filter by agent public key")
|
|
41
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
42
|
+
.option("--json", "Output result as JSON")
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(opts.endpoint) };
|
|
45
|
+
const maxCount = Math.min(parseInt(opts.count, 10) || 10, 50);
|
|
46
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching tool calls...").start();
|
|
47
|
+
try {
|
|
48
|
+
let results;
|
|
49
|
+
if (opts.agent) {
|
|
50
|
+
results = await (0, client_1.getAgentToolCalls)(opts.agent, maxCount, clientOpts);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const orgName = opts.org || (0, config_1.resolveOrgName)();
|
|
54
|
+
results = orgName
|
|
55
|
+
? await (0, client_1.getOrgToolCalls)(orgName, maxCount, clientOpts)
|
|
56
|
+
: await (0, client_1.getToolCalls)(maxCount, clientOpts);
|
|
57
|
+
}
|
|
58
|
+
spinner?.stop();
|
|
59
|
+
if (opts.json) {
|
|
60
|
+
console.log(JSON.stringify(results, null, 2));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (!results.length) {
|
|
64
|
+
console.log(chalk_1.default.dim("No tool calls found."));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
console.log(chalk_1.default.bold(`Tool Calls (${results.length})`));
|
|
68
|
+
console.log();
|
|
69
|
+
results.forEach((tc, i) => {
|
|
70
|
+
console.log(formatToolCall(tc, i, getVerdictFromRecord(tc)));
|
|
71
|
+
if (i < results.length - 1)
|
|
72
|
+
console.log();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
spinner?.fail("Failed to fetch tool calls");
|
|
77
|
+
console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
tools
|
|
82
|
+
.command("inspect")
|
|
83
|
+
.description("Show full details for a tool call")
|
|
84
|
+
.argument("<tool-call-id>", "The tool call ID to inspect")
|
|
85
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
86
|
+
.option("--json", "Output result as JSON")
|
|
87
|
+
.action(async (toolCallId, opts) => {
|
|
88
|
+
const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(opts.endpoint) };
|
|
89
|
+
const spinner = opts.json
|
|
90
|
+
? null
|
|
91
|
+
: (0, ora_1.default)("Fetching tool call details...").start();
|
|
92
|
+
try {
|
|
93
|
+
const result = await (0, client_1.getToolCallFull)(toolCallId, clientOpts);
|
|
94
|
+
spinner?.stop();
|
|
95
|
+
if (!result || !result.tool_call_id) {
|
|
96
|
+
console.log(opts.json
|
|
97
|
+
? JSON.stringify({ error: "Not found", toolCallId })
|
|
98
|
+
: chalk_1.default.yellow(`Tool call ${toolCallId} not found.`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
if (opts.json) {
|
|
102
|
+
console.log(JSON.stringify(result, null, 2));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
console.log(chalk_1.default.bold("Tool Call Details"));
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(` ID: ${chalk_1.default.cyan(result.tool_call_id)}`);
|
|
108
|
+
console.log(` Action: ${chalk_1.default.white(result.command_text || "—")}`);
|
|
109
|
+
console.log(` Tool: ${chalk_1.default.white(result.tool_name || "—")}`);
|
|
110
|
+
console.log(` Agent: ${chalk_1.default.dim((0, client_1.toPubkeyHex)(result.agent_pubkey) || "—")}`);
|
|
111
|
+
if (result.org_name)
|
|
112
|
+
console.log(` Org: ${chalk_1.default.dim(result.org_name)}`);
|
|
113
|
+
if (result.context_text)
|
|
114
|
+
console.log(` Context: ${chalk_1.default.dim(result.context_text)}`);
|
|
115
|
+
if (result.tool_args_json)
|
|
116
|
+
console.log(` Args: ${chalk_1.default.dim(result.tool_args_json)}`);
|
|
117
|
+
if (result.verdict_color) {
|
|
118
|
+
const color = result.verdict_color === "GREEN"
|
|
119
|
+
? chalk_1.default.green
|
|
120
|
+
: result.verdict_color === "YELLOW"
|
|
121
|
+
? chalk_1.default.yellow
|
|
122
|
+
: result.verdict_color === "RED"
|
|
123
|
+
? chalk_1.default.red
|
|
124
|
+
: chalk_1.default.gray;
|
|
125
|
+
const label = result.verdict_color === "GREEN"
|
|
126
|
+
? "PASS"
|
|
127
|
+
: result.verdict_color === "YELLOW"
|
|
128
|
+
? "HOLD"
|
|
129
|
+
: result.verdict_color === "RED"
|
|
130
|
+
? "BLOCK"
|
|
131
|
+
: result.verdict_color;
|
|
132
|
+
console.log();
|
|
133
|
+
console.log(` Verdict: ${color.bold(label)} ${chalk_1.default.dim("(" + result.verdict_color + ")")} Source: ${chalk_1.default.white(result.verdict_source || "—")}`);
|
|
134
|
+
if (result.verdict_reason)
|
|
135
|
+
console.log(` Reason: ${chalk_1.default.white(result.verdict_reason)}`);
|
|
136
|
+
if (typeof result.verdict_response_time_ms === "number")
|
|
137
|
+
console.log(` Latency: ${chalk_1.default.dim(result.verdict_response_time_ms + "ms")}`);
|
|
138
|
+
}
|
|
139
|
+
if (result.action_type || result.result_status) {
|
|
140
|
+
console.log();
|
|
141
|
+
if (result.action_type)
|
|
142
|
+
console.log(` Action type: ${chalk_1.default.dim(result.action_type)}`);
|
|
143
|
+
if (result.result_status)
|
|
144
|
+
console.log(` Outcome: ${chalk_1.default.dim(result.result_status)}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
spinner?.fail("Failed to fetch tool call details");
|
|
149
|
+
console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
tools
|
|
154
|
+
.command("count")
|
|
155
|
+
.description("Show total tool call count")
|
|
156
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
157
|
+
.option("--json", "Output result as JSON")
|
|
158
|
+
.action(async (opts) => {
|
|
159
|
+
const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(opts.endpoint) };
|
|
160
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching count...").start();
|
|
161
|
+
try {
|
|
162
|
+
const count = await (0, client_1.getToolCallCount)(clientOpts);
|
|
163
|
+
spinner?.stop();
|
|
164
|
+
console.log(opts.json
|
|
165
|
+
? JSON.stringify({ totalToolCalls: count }, null, 2)
|
|
166
|
+
: `Total tool calls: ${chalk_1.default.white(count.toLocaleString())}`);
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
spinner?.fail("Failed to fetch count");
|
|
170
|
+
console.error(chalk_1.default.red(`\nError: ${err instanceof Error ? err.message : String(err)}`));
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.registerWhoamiCommand = registerWhoamiCommand;
|
|
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 registerWhoamiCommand(program) {
|
|
12
|
+
program
|
|
13
|
+
.command("whoami")
|
|
14
|
+
.description("Show your agent's on-chain info")
|
|
15
|
+
.option("-k, --agent-key <key>", "Agent private key (64 hex chars)")
|
|
16
|
+
.option("--endpoint <url>", "API endpoint URL")
|
|
17
|
+
.option("--json", "Output result as JSON")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
const agentKey = (0, config_1.resolveAgentKey)(opts.agentKey);
|
|
20
|
+
if (!agentKey) {
|
|
21
|
+
console.error(chalk_1.default.red("Error: Agent key required."));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const cleanKey = agentKey.replace(/^0x/, "").trim().toLowerCase();
|
|
25
|
+
if (!(0, client_1.isValidPrivateKey)(cleanKey)) {
|
|
26
|
+
console.error(chalk_1.default.red("Error: Invalid private key."));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const agentPub = (0, client_1.derivePublicKey)(cleanKey);
|
|
30
|
+
const clientOpts = { endpoint: (0, config_1.resolveEndpoint)(opts.endpoint) };
|
|
31
|
+
const spinner = opts.json ? null : (0, ora_1.default)("Fetching agent info...").start();
|
|
32
|
+
const toolCallsP = (0, client_1.getAgentToolCalls)(agentPub, 50, clientOpts).catch((err) => ({ __error: err }));
|
|
33
|
+
const policyP = (0, client_1.getAgentPolicy)(agentPub, clientOpts).catch((err) => ({ __error: err }));
|
|
34
|
+
const [toolCallsRes, policyRes] = await Promise.all([
|
|
35
|
+
toolCallsP,
|
|
36
|
+
policyP,
|
|
37
|
+
]);
|
|
38
|
+
spinner?.stop();
|
|
39
|
+
const toolCalls = Array.isArray(toolCallsRes) ? toolCallsRes : null;
|
|
40
|
+
const policy = policyRes && !("__error" in policyRes) ? policyRes : null;
|
|
41
|
+
const bothFailed = !toolCalls && !policy;
|
|
42
|
+
if (bothFailed) {
|
|
43
|
+
const err = "__error" in toolCallsRes ? toolCallsRes.__error : null;
|
|
44
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
45
|
+
if (msg.includes("503") ||
|
|
46
|
+
msg.includes("Query failed") ||
|
|
47
|
+
msg.includes("Resource not found") ||
|
|
48
|
+
msg.includes("not found")) {
|
|
49
|
+
console.log(chalk_1.default.yellow("Agent not registered on chain yet."));
|
|
50
|
+
console.log(chalk_1.default.dim('Run a judge command first to register your agent: atbash judge "test action"'));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.error(chalk_1.default.red(`\nError: ${msg}`));
|
|
54
|
+
}
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
const jailed = policy?.is_jailed === true;
|
|
58
|
+
if (opts.json) {
|
|
59
|
+
console.log(JSON.stringify({
|
|
60
|
+
pubkey: agentPub,
|
|
61
|
+
is_jailed: policy ? jailed : null,
|
|
62
|
+
toolCalls: toolCalls ? toolCalls.length : null,
|
|
63
|
+
hasPolicy: policy
|
|
64
|
+
? (policy.is_custom && !!policy.policy) ||
|
|
65
|
+
!!policy.default_policy
|
|
66
|
+
: null,
|
|
67
|
+
}, null, 2));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const statusColor = jailed ? chalk_1.default.red : chalk_1.default.green;
|
|
71
|
+
const statusText = policy ? (jailed ? "JAILED" : "ACTIVE") : "UNKNOWN";
|
|
72
|
+
console.log(chalk_1.default.bold("Agent Info"));
|
|
73
|
+
console.log();
|
|
74
|
+
console.log(` Pubkey: ${chalk_1.default.cyan(agentPub)}`);
|
|
75
|
+
console.log(` Status: ${statusColor.bold(statusText)}`);
|
|
76
|
+
if (toolCalls) {
|
|
77
|
+
console.log(` Tool calls: ${chalk_1.default.white(String(toolCalls.length))}`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(` Tool calls: ${chalk_1.default.dim("unavailable")}`);
|
|
81
|
+
}
|
|
82
|
+
if (!policy) {
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(chalk_1.default.dim(" Note: jail/policy status unavailable — agent may have no policy assigned yet."));
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=whoami.js.map
|