akadmin 0.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/commands/audit.d.ts +7 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +35 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/auth.d.ts +8 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +156 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/discover.d.ts +6 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +94 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/domain.d.ts +7 -0
- package/dist/commands/domain.d.ts.map +1 -0
- package/dist/commands/domain.js +104 -0
- package/dist/commands/domain.js.map +1 -0
- package/dist/commands/raw.d.ts +7 -0
- package/dist/commands/raw.d.ts.map +1 -0
- package/dist/commands/raw.js +90 -0
- package/dist/commands/raw.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27104 -0
- package/dist/index.js.map +7 -0
- package/dist/keychain/index.d.ts +44 -0
- package/dist/keychain/index.d.ts.map +1 -0
- package/dist/keychain/index.js +173 -0
- package/dist/keychain/index.js.map +1 -0
- package/dist/storage/file-store.d.ts +19 -0
- package/dist/storage/file-store.d.ts.map +1 -0
- package/dist/storage/file-store.js +79 -0
- package/dist/storage/file-store.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI audit commands reading from persistent append-only audit log.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { CliKeychain } from "../keychain/index.js";
|
|
6
|
+
export declare function registerAuditCommands(program: Command, keychain: CliKeychain): void;
|
|
7
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CAiCnF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI audit commands reading from persistent append-only audit log.
|
|
3
|
+
*/
|
|
4
|
+
import { FileAuditStore } from "../storage/file-store.js";
|
|
5
|
+
export function registerAuditCommands(program, keychain) {
|
|
6
|
+
const auditStore = new FileAuditStore(keychain.getConfigDir());
|
|
7
|
+
program
|
|
8
|
+
.command("audit [tail]")
|
|
9
|
+
.description("View recent audit events and mutation records")
|
|
10
|
+
.option("--limit <number>", "Number of records to show", "20")
|
|
11
|
+
.option("--json", "Output JSON format")
|
|
12
|
+
.action(async (_tail, options) => {
|
|
13
|
+
const limit = Number(options.limit) || 20;
|
|
14
|
+
const records = await auditStore.list(limit);
|
|
15
|
+
if (options.json) {
|
|
16
|
+
console.log(JSON.stringify(records, null, 2));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (records.length === 0) {
|
|
20
|
+
console.log("\nš No audit entries recorded yet. (Audit entries are created when operations are executed or previewed).\n");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
console.log(`\nš Recent Audit Events (${records.length} records):\n`);
|
|
24
|
+
for (const r of records) {
|
|
25
|
+
const flag = r.isDestructive ? "ā ļø DESTRUCTIVE" : "";
|
|
26
|
+
const statusBadge = r.phase === "executed" ? `ā
${r.statusCode ?? 200}` : r.phase === "preview" ? "š PREVIEW" : `ā ${r.error ?? "REJECTED"}`;
|
|
27
|
+
console.log(` [${r.timestamp}] ${statusBadge.padEnd(16)} ${r.method.padEnd(6)} ${r.path.padEnd(36)} ${r.operationId} ${flag}`);
|
|
28
|
+
if (r.idempotencyKey) {
|
|
29
|
+
console.log(` Idempotency: ${r.idempotencyKey} | AuditID: ${r.id}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
console.log("");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,QAAqB;IAC3E,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/D,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,EAAE,IAAI,CAAC;SAC7D,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,8GAA8G,CAAC,CAAC;YAC5H,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;YAC9I,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC;YAChI,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,cAAc,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI auth & profile management commands with encrypted credential storage,
|
|
3
|
+
* hidden interactive input support, and remote Worker vault enrollment.
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import { CliKeychain } from "../keychain/index.js";
|
|
7
|
+
export declare function registerAuthCommands(program: Command, keychain: CliKeychain): void;
|
|
8
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA2CnD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CA2HlF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI auth & profile management commands with encrypted credential storage,
|
|
3
|
+
* hidden interactive input support, and remote Worker vault enrollment.
|
|
4
|
+
*/
|
|
5
|
+
import readline from "node:readline";
|
|
6
|
+
async function promptHidden(questionText) {
|
|
7
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
8
|
+
const rl = readline.createInterface({
|
|
9
|
+
input: process.stdin,
|
|
10
|
+
output: process.stdout,
|
|
11
|
+
});
|
|
12
|
+
process.stdout.write(questionText);
|
|
13
|
+
const stdin = process.stdin;
|
|
14
|
+
const isTTY = stdin.isTTY;
|
|
15
|
+
if (isTTY) {
|
|
16
|
+
stdin.setRawMode(true);
|
|
17
|
+
let input = "";
|
|
18
|
+
stdin.on("data", function onData(char) {
|
|
19
|
+
const str = char.toString("utf-8");
|
|
20
|
+
if (str === "\n" || str === "\r" || str === "\u0004") {
|
|
21
|
+
stdin.setRawMode(false);
|
|
22
|
+
stdin.removeListener("data", onData);
|
|
23
|
+
process.stdout.write("\n");
|
|
24
|
+
rl.close();
|
|
25
|
+
resolve(input.trim());
|
|
26
|
+
}
|
|
27
|
+
else if (str === "\u0003") {
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
else if (str === "\u007f" || str === "\b") {
|
|
31
|
+
input = input.slice(0, -1);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
input += str;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
rl.question("", (answer) => {
|
|
40
|
+
rl.close();
|
|
41
|
+
resolve(answer.trim());
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return promise;
|
|
45
|
+
}
|
|
46
|
+
export function registerAuthCommands(program, keychain) {
|
|
47
|
+
const auth = program.command("auth").description("Manage credentials and target environments");
|
|
48
|
+
auth
|
|
49
|
+
.command("login")
|
|
50
|
+
.description("Securely store an admin API key into local encrypted vault")
|
|
51
|
+
.option("-k, --key <apiKey>", "Admin API key (warning: passing in argv may be stored in shell history)")
|
|
52
|
+
.option("-p, --profile <profile>", "Target profile (default: active profile)")
|
|
53
|
+
.action(async (options) => {
|
|
54
|
+
let key = options.key;
|
|
55
|
+
if (!key) {
|
|
56
|
+
key = await promptHidden("Enter Admin API Key (hidden): ");
|
|
57
|
+
}
|
|
58
|
+
if (!key || key.length === 0) {
|
|
59
|
+
console.error("Error: Admin API key cannot be empty.");
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const target = options.profile || keychain.getActiveProfile();
|
|
64
|
+
await keychain.setApiKey(key, options.profile);
|
|
65
|
+
console.log(`ā
Securely stored and encrypted API key for profile '${target}'.`);
|
|
66
|
+
});
|
|
67
|
+
auth
|
|
68
|
+
.command("session")
|
|
69
|
+
.description("Securely store a session cookie for session-only operations (Payouts, Grants)")
|
|
70
|
+
.option("-c, --cookie <cookie>", "Session cookie value")
|
|
71
|
+
.option("-p, --profile <profile>", "Target profile (default: active profile)")
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
let cookie = options.cookie;
|
|
74
|
+
if (!cookie) {
|
|
75
|
+
cookie = await promptHidden("Enter Session Cookie (hidden): ");
|
|
76
|
+
}
|
|
77
|
+
if (!cookie || cookie.length === 0) {
|
|
78
|
+
console.error("Error: Session cookie cannot be empty.");
|
|
79
|
+
process.exitCode = 1;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const target = options.profile || keychain.getActiveProfile();
|
|
83
|
+
await keychain.setSessionCookie(cookie, options.profile);
|
|
84
|
+
console.log(`ā
Securely stored and encrypted session cookie for profile '${target}'.`);
|
|
85
|
+
});
|
|
86
|
+
auth
|
|
87
|
+
.command("enroll-remote")
|
|
88
|
+
.description("Enroll admin credentials securely into remote Cloudflare Worker vault via authenticated POST /vault/enroll")
|
|
89
|
+
.option("-u, --url <workerUrl>", "Cloudflare Worker URL", "https://akadmin-mcp-worker.hi-7ac.workers.dev")
|
|
90
|
+
.option("-t, --token <jwtToken>", "Operator Bearer / Access token")
|
|
91
|
+
.action(async (options) => {
|
|
92
|
+
let token = options.token;
|
|
93
|
+
if (!token) {
|
|
94
|
+
token = await promptHidden("Enter Operator Bearer / Access Token (hidden): ");
|
|
95
|
+
}
|
|
96
|
+
const apiKey = await promptHidden("Enter Admin API Key to enroll (leave blank to skip): ");
|
|
97
|
+
const sessionCookie = await promptHidden("Enter Session Cookie to enroll (leave blank to skip): ");
|
|
98
|
+
if (!apiKey && !sessionCookie) {
|
|
99
|
+
console.error("Error: Must provide an API key or session cookie to enroll.");
|
|
100
|
+
process.exitCode = 1;
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const enrollUrl = new URL("/vault/enroll", options.url);
|
|
105
|
+
const res = await fetch(enrollUrl.toString(), {
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: {
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
"Authorization": `Bearer ${token}`,
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify({
|
|
112
|
+
apiKey: apiKey || undefined,
|
|
113
|
+
sessionCookie: sessionCookie || undefined,
|
|
114
|
+
label: "default",
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
const data = await res.json();
|
|
118
|
+
if (!res.ok) {
|
|
119
|
+
console.error(`ā Enrollment failed (${res.status}):`, JSON.stringify(data, null, 2));
|
|
120
|
+
process.exitCode = 1;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
console.log("ā
Credentials successfully enrolled into remote Worker encrypted vault:");
|
|
124
|
+
console.log(JSON.stringify(data, null, 2));
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.error("ā Network error connecting to worker:", String(err));
|
|
128
|
+
process.exitCode = 1;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
auth
|
|
132
|
+
.command("use <profile>")
|
|
133
|
+
.description("Set the active environment profile (production or staging)")
|
|
134
|
+
.action((profile) => {
|
|
135
|
+
keychain.setActiveProfile(profile);
|
|
136
|
+
console.log(`ā
Active profile switched to '${profile}'.`);
|
|
137
|
+
});
|
|
138
|
+
auth
|
|
139
|
+
.command("status")
|
|
140
|
+
.description("Display active profile and masked credential status")
|
|
141
|
+
.option("--json", "Output JSON format")
|
|
142
|
+
.action(async (options) => {
|
|
143
|
+
const status = await keychain.getStatus();
|
|
144
|
+
if (options.json) {
|
|
145
|
+
console.log(JSON.stringify(status, null, 2));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
console.log("\nš akadmin Auth Status:\n");
|
|
149
|
+
console.log(` Active Profile: ${status.activeProfile.toUpperCase()}`);
|
|
150
|
+
console.log(` Base URL: ${status.baseUrl}`);
|
|
151
|
+
console.log(` API Key: ${status.hasApiKey ? `Configured (${status.maskedKey})` : "ā Not Set"}`);
|
|
152
|
+
console.log(` Session Cookie: ${status.hasSessionCookie ? "Configured" : "ā Not Set"}`);
|
|
153
|
+
console.log("\nTo set credentials, use `akadmin auth login` or `akadmin auth enroll-remote`.\n");
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,eAAe,CAAC;AAIrC,KAAK,UAAU,YAAY,CAAC,YAAoB;IAC9C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAU,CAAC;IAC7D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAE1B,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC,IAAI;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrD,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC5C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,GAAG,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,QAAqB;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC;IAE/F,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,oBAAoB,EAAE,yEAAyE,CAAC;SACvG,MAAM,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,MAAM,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC9D,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,wDAAwD,MAAM,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+EAA+E,CAAC;SAC5F,MAAM,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;SACvD,MAAM,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,YAAY,CAAC,iCAAiC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC9D,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,+DAA+D,MAAM,IAAI,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4GAA4G,CAAC;SACzH,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,+CAA+C,CAAC;SACzG,MAAM,CAAC,wBAAwB,EAAE,gCAAgC,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,YAAY,CAAC,iDAAiD,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,uDAAuD,CAAC,CAAC;QAC3F,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,wDAAwD,CAAC,CAAC;QAEnG,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,UAAU,KAAK,EAAE;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,MAAM,IAAI,SAAS;oBAC3B,aAAa,EAAE,aAAa,IAAI,SAAS;oBACzC,KAAK,EAAE,SAAS;iBACjB,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG/D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI discover & describe commands.
|
|
3
|
+
*/
|
|
4
|
+
import { getAllDomains, getOperation, getOperationsByDomain } from "@akadmin/manifest";
|
|
5
|
+
export function registerDiscoverCommands(program) {
|
|
6
|
+
program
|
|
7
|
+
.command("discover [domain]")
|
|
8
|
+
.description("Explore available administrative domains and operations")
|
|
9
|
+
.option("--json", "Output JSON format")
|
|
10
|
+
.option("--destructive", "Filter only destructive operations")
|
|
11
|
+
.action((domain, options) => {
|
|
12
|
+
if (!domain) {
|
|
13
|
+
const domains = getAllDomains();
|
|
14
|
+
const summary = domains.map((d) => {
|
|
15
|
+
const ops = getOperationsByDomain(d);
|
|
16
|
+
const destructive = ops.filter((o) => o.isDestructive).length;
|
|
17
|
+
const sessionOnly = ops.filter((o) => o.authRequirement === "session_only").length;
|
|
18
|
+
return {
|
|
19
|
+
domain: d,
|
|
20
|
+
totalOperations: ops.length,
|
|
21
|
+
destructiveOperations: destructive,
|
|
22
|
+
sessionOnlyOperations: sessionOnly,
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
if (options.json) {
|
|
26
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log("\nš¦ AgentKit Admin Surface (17 Domains, 124 Operations):\n");
|
|
30
|
+
for (const s of summary) {
|
|
31
|
+
const destBadge = s.destructiveOperations > 0 ? ` [ā ļø ${s.destructiveOperations} destructive]` : "";
|
|
32
|
+
const sessBadge = s.sessionOnlyOperations > 0 ? ` [šŖ ${s.sessionOnlyOperations} session-only]` : "";
|
|
33
|
+
console.log(` ⢠${s.domain.padEnd(30)} ${s.totalOperations} ops${destBadge}${sessBadge}`);
|
|
34
|
+
}
|
|
35
|
+
console.log("\nRun `akadmin discover <domain>` to inspect operations within a domain.");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let ops = getOperationsByDomain(domain);
|
|
39
|
+
if (ops.length === 0) {
|
|
40
|
+
console.error(`Error: Domain '${domain}' not found. Run 'akadmin discover' to list valid domains.`);
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (options.destructive) {
|
|
45
|
+
ops = ops.filter((o) => o.isDestructive);
|
|
46
|
+
}
|
|
47
|
+
if (options.json) {
|
|
48
|
+
console.log(JSON.stringify(ops, null, 2));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`\nš Operations in '${domain}' (${ops.length} operations):\n`);
|
|
52
|
+
for (const op of ops) {
|
|
53
|
+
const flag = op.isDestructive ? "ā ļø DESTRUCTIVE" : op.isMutation ? "āļø MUTATION" : "š READ";
|
|
54
|
+
const authBadge = op.authRequirement === "session_only" ? "[šŖ Session Only]" : op.authRequirement === "public" ? "[š Public]" : "";
|
|
55
|
+
console.log(` ⢠${op.operationId.padEnd(36)} [${op.method} ${op.path}] ${flag} ${authBadge}`);
|
|
56
|
+
if (op.summary) {
|
|
57
|
+
console.log(` ${op.summary}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
program
|
|
62
|
+
.command("describe <operationId>")
|
|
63
|
+
.description("Show detailed schema, parameters, and scopes for an operation")
|
|
64
|
+
.option("--json", "Output JSON format")
|
|
65
|
+
.action((operationId, options) => {
|
|
66
|
+
const op = getOperation(operationId);
|
|
67
|
+
if (!op) {
|
|
68
|
+
console.error(`Error: Operation '${operationId}' not found.`);
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (options.json) {
|
|
73
|
+
console.log(JSON.stringify(op, null, 2));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
console.log(`\nš Operation: ${op.operationId}`);
|
|
77
|
+
console.log(`Domain: ${op.domain}`);
|
|
78
|
+
console.log(`Endpoint: ${op.method} ${op.path}`);
|
|
79
|
+
console.log(`Auth Mode: ${op.authRequirement}`);
|
|
80
|
+
console.log(`Destructive: ${op.isDestructive ? "YES (gated by preview->confirm)" : "No"}`);
|
|
81
|
+
console.log(`Scopes: ${op.requiredScopes.length > 0 ? op.requiredScopes.join(", ") : "None declared (admin session/super-scope)"}`);
|
|
82
|
+
console.log(`Summary: ${op.summary || "None"}`);
|
|
83
|
+
if (op.parameters.length > 0) {
|
|
84
|
+
console.log("\nParameters:");
|
|
85
|
+
for (const p of op.parameters) {
|
|
86
|
+
console.log(` - ${p.name} (${p.in}, ${p.required ? "required" : "optional"}): ${p.description || ""}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (op.hasRequestBody) {
|
|
90
|
+
console.log("\nRequest Body: Accepts JSON payload");
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curated domain subcommands for akadmin CLI with persistent storage.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { CliKeychain } from "../keychain/index.js";
|
|
6
|
+
export declare function registerDomainCommands(program: Command, keychain: CliKeychain): void;
|
|
7
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AA0BnD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CAoGpF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curated domain subcommands for akadmin CLI with persistent storage.
|
|
3
|
+
*/
|
|
4
|
+
import { executeOperation } from "@akadmin/core";
|
|
5
|
+
import { FileAuditStore, FileNonceStore } from "../storage/file-store.js";
|
|
6
|
+
async function buildContext(keychain, profileOverride, confirmToken) {
|
|
7
|
+
const activeProfile = profileOverride || keychain.getActiveProfile();
|
|
8
|
+
const creds = await keychain.getCredentials(activeProfile);
|
|
9
|
+
const nonceStore = new FileNonceStore(keychain.getConfigDir());
|
|
10
|
+
const auditStore = new FileAuditStore(keychain.getConfigDir());
|
|
11
|
+
return {
|
|
12
|
+
operatorId: "cli_operator",
|
|
13
|
+
profile: activeProfile,
|
|
14
|
+
apiKey: creds.apiKey,
|
|
15
|
+
sessionCookie: creds.sessionCookie,
|
|
16
|
+
baseUrl: creds.baseUrl || "https://agentkit.best",
|
|
17
|
+
signingSecret: keychain.getSigningSecret(),
|
|
18
|
+
nonceStore,
|
|
19
|
+
auditStore,
|
|
20
|
+
confirmToken,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function registerDomainCommands(program, keychain) {
|
|
24
|
+
// Orders Domain
|
|
25
|
+
const orders = program.command("orders").description("Orders management workflows");
|
|
26
|
+
orders
|
|
27
|
+
.command("list")
|
|
28
|
+
.description("List orders")
|
|
29
|
+
.option("-q, --query <search>", "Search keyword")
|
|
30
|
+
.option("-s, --status <status>", "Filter by status")
|
|
31
|
+
.option("--json", "Output JSON format")
|
|
32
|
+
.action(async (options) => {
|
|
33
|
+
const ctx = await buildContext(keychain);
|
|
34
|
+
const res = await executeOperation("getOrders", { query: options.query, status: options.status }, undefined, ctx);
|
|
35
|
+
console.log(JSON.stringify(res, null, 2));
|
|
36
|
+
});
|
|
37
|
+
orders
|
|
38
|
+
.command("get <orderId>")
|
|
39
|
+
.description("Get order details by ID")
|
|
40
|
+
.option("--json", "Output JSON format")
|
|
41
|
+
.action(async (orderId) => {
|
|
42
|
+
const ctx = await buildContext(keychain);
|
|
43
|
+
const res = await executeOperation("getOrdersOrderId", { orderId }, undefined, ctx);
|
|
44
|
+
console.log(JSON.stringify(res, null, 2));
|
|
45
|
+
});
|
|
46
|
+
orders
|
|
47
|
+
.command("refund <orderId>")
|
|
48
|
+
.description("Refund an order (Destructive ā two-phase gate)")
|
|
49
|
+
.requiredOption("-a, --amount <number>", "Refund amount in cents")
|
|
50
|
+
.requiredOption("-r, --reason <string>", "Reason for refund")
|
|
51
|
+
.option("--confirm <token>", "Confirm token required in production")
|
|
52
|
+
.action(async (orderId, options) => {
|
|
53
|
+
const ctx = await buildContext(keychain, undefined, options.confirm);
|
|
54
|
+
const res = await executeOperation("postOrdersOrderIdRefund", { orderId }, { amount: Number(options.amount), reason: options.reason }, ctx);
|
|
55
|
+
console.log(JSON.stringify(res, null, 2));
|
|
56
|
+
});
|
|
57
|
+
// Discounts Domain
|
|
58
|
+
const discounts = program.command("discounts").description("Discounts management workflows");
|
|
59
|
+
discounts
|
|
60
|
+
.command("list")
|
|
61
|
+
.description("List discount codes")
|
|
62
|
+
.action(async () => {
|
|
63
|
+
const ctx = await buildContext(keychain);
|
|
64
|
+
const res = await executeOperation("getDiscounts", {}, undefined, ctx);
|
|
65
|
+
console.log(JSON.stringify(res, null, 2));
|
|
66
|
+
});
|
|
67
|
+
discounts
|
|
68
|
+
.command("create")
|
|
69
|
+
.description("Create a discount code (Destructive ā two-phase gate)")
|
|
70
|
+
.requiredOption("-c, --code <string>", "Discount code")
|
|
71
|
+
.option("-p, --percent <number>", "Percent off")
|
|
72
|
+
.option("-m, --max-uses <number>", "Maximum uses")
|
|
73
|
+
.option("--confirm <token>", "Confirm token")
|
|
74
|
+
.action(async (options) => {
|
|
75
|
+
const ctx = await buildContext(keychain, undefined, options.confirm);
|
|
76
|
+
const res = await executeOperation("postDiscounts", {}, {
|
|
77
|
+
code: options.code,
|
|
78
|
+
percentOff: options.percent ? Number(options.percent) : undefined,
|
|
79
|
+
maxUses: options.maxUses ? Number(options.maxUses) : undefined,
|
|
80
|
+
}, ctx);
|
|
81
|
+
console.log(JSON.stringify(res, null, 2));
|
|
82
|
+
});
|
|
83
|
+
// Payouts Domain
|
|
84
|
+
const payouts = program.command("payouts").description("Payouts workflows (Session Cookie required)");
|
|
85
|
+
payouts
|
|
86
|
+
.command("list")
|
|
87
|
+
.description("List payouts")
|
|
88
|
+
.action(async () => {
|
|
89
|
+
const ctx = await buildContext(keychain);
|
|
90
|
+
const res = await executeOperation("getPayouts", {}, undefined, ctx);
|
|
91
|
+
console.log(JSON.stringify(res, null, 2));
|
|
92
|
+
});
|
|
93
|
+
// Revenue Domain
|
|
94
|
+
const revenue = program.command("revenue").description("Revenue reports");
|
|
95
|
+
revenue
|
|
96
|
+
.command("summary")
|
|
97
|
+
.description("Get platform revenue summary")
|
|
98
|
+
.action(async () => {
|
|
99
|
+
const ctx = await buildContext(keychain);
|
|
100
|
+
const res = await executeOperation("getRevenue", {}, undefined, ctx);
|
|
101
|
+
console.log(JSON.stringify(res, null, 2));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI universal raw escape hatch command with persistent nonces and audit logging.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { CliKeychain } from "../keychain/index.js";
|
|
6
|
+
export declare function registerRawCommand(program: Command, keychain: CliKeychain): void;
|
|
7
|
+
//# sourceMappingURL=raw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/commands/raw.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CA0FhF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI universal raw escape hatch command with persistent nonces and audit logging.
|
|
3
|
+
*/
|
|
4
|
+
import { executeOperation } from "@akadmin/core";
|
|
5
|
+
import { FileAuditStore, FileNonceStore } from "../storage/file-store.js";
|
|
6
|
+
export function registerRawCommand(program, keychain) {
|
|
7
|
+
const nonceStore = new FileNonceStore(keychain.getConfigDir());
|
|
8
|
+
const auditStore = new FileAuditStore(keychain.getConfigDir());
|
|
9
|
+
program
|
|
10
|
+
.command("raw <operationId>")
|
|
11
|
+
.description("Invoke any of the 124 OpenAPI operations by operationId")
|
|
12
|
+
.option("-p, --param <key=value...>", "Path/query parameters (e.g. -p orderId=ord_100)")
|
|
13
|
+
.option("-b, --body <json>", "Request body JSON string")
|
|
14
|
+
.option("--confirm <token>", "Confirm token required to execute mutations")
|
|
15
|
+
.option("--profile <profile>", "Target environment profile (default: production)")
|
|
16
|
+
.option("--json", "Output JSON format")
|
|
17
|
+
.action(async (operationId, options) => {
|
|
18
|
+
const activeProfile = options.profile || keychain.getActiveProfile();
|
|
19
|
+
const creds = await keychain.getCredentials(activeProfile);
|
|
20
|
+
const params = {};
|
|
21
|
+
if (options.param) {
|
|
22
|
+
const paramList = Array.isArray(options.param) ? options.param : [options.param];
|
|
23
|
+
for (const item of paramList) {
|
|
24
|
+
const eqIdx = item.indexOf("=");
|
|
25
|
+
if (eqIdx !== -1) {
|
|
26
|
+
const k = item.slice(0, eqIdx).trim();
|
|
27
|
+
const v = item.slice(eqIdx + 1).trim();
|
|
28
|
+
params[k] = v;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
let parsedBody = undefined;
|
|
33
|
+
if (options.body) {
|
|
34
|
+
try {
|
|
35
|
+
parsedBody = JSON.parse(options.body);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
console.error("Error: --body must be valid JSON.");
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const context = {
|
|
44
|
+
operatorId: "cli_operator",
|
|
45
|
+
profile: activeProfile,
|
|
46
|
+
apiKey: creds.apiKey,
|
|
47
|
+
sessionCookie: creds.sessionCookie,
|
|
48
|
+
baseUrl: creds.baseUrl || "https://agentkit.best",
|
|
49
|
+
signingSecret: keychain.getSigningSecret(),
|
|
50
|
+
nonceStore,
|
|
51
|
+
auditStore,
|
|
52
|
+
confirmToken: options.confirm,
|
|
53
|
+
};
|
|
54
|
+
const result = await executeOperation(operationId, params, parsedBody, context);
|
|
55
|
+
if (options.json) {
|
|
56
|
+
console.log(JSON.stringify(result, null, 2));
|
|
57
|
+
if (result.status === "error")
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (result.status === "confirmation_required") {
|
|
62
|
+
const p = result.preview;
|
|
63
|
+
console.log(`\nš [PREVIEW ā ${activeProfile.toUpperCase()}] ${p.summary || p.operationId}`);
|
|
64
|
+
console.log(`Endpoint: ${p.method} ${p.path}`);
|
|
65
|
+
console.log(`Impact: ${p.impactDescription}`);
|
|
66
|
+
console.log(`Hash: ${p.canonicalHash.slice(0, 16)}...`);
|
|
67
|
+
console.log(`Expires: ${p.expiresAt}`);
|
|
68
|
+
for (const w of p.warnings)
|
|
69
|
+
console.log(` ${w}`);
|
|
70
|
+
console.log("\nā¶ TO EXECUTE, re-run with confirmation token:");
|
|
71
|
+
console.log(` akadmin raw ${operationId} ${options.param ? `--param ${options.param}` : ""} --confirm ${p.confirmToken}\n`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (result.status === "executed") {
|
|
75
|
+
console.log(`\nā
[${activeProfile.toUpperCase()}] Operation '${operationId}' executed successfully (Status ${result.statusCode}):`);
|
|
76
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
77
|
+
console.log(`\nAudit ID: ${result.auditId}${result.idempotencyKey ? ` | Idempotency Key: ${result.idempotencyKey}` : ""}`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (result.status === "error") {
|
|
81
|
+
console.error(`\nā [${activeProfile.toUpperCase()}] Execution Error (Status ${result.statusCode}):`);
|
|
82
|
+
console.error(` ${result.error}`);
|
|
83
|
+
if (result.requiredScopes && result.requiredScopes.length > 0) {
|
|
84
|
+
console.error(` Required scope(s): ${result.requiredScopes.join(", ")}`);
|
|
85
|
+
}
|
|
86
|
+
process.exitCode = 1;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=raw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw.js","sourceRoot":"","sources":["../../src/commands/raw.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1E,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,QAAqB;IACxE,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/D,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,4BAA4B,EAAE,iDAAiD,CAAC;SACvF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;SACjF,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAE3D,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,GAAY,SAAS,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACnD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,aAAa;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,uBAAuB;YACjD,aAAa,EAAE,QAAQ,CAAC,gBAAgB,EAAE;YAC1C,UAAU;YACV,UAAU;YACV,YAAY,EAAE,OAAO,CAAC,OAAO;SAC9B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEhF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7F,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;YAC7H,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,aAAa,CAAC,WAAW,EAAE,gBAAgB,WAAW,mCAAmC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YACpI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3H,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,QAAQ,aAAa,CAAC,WAAW,EAAE,6BAA6B,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YACrG,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|