@1claw/cli 0.47.2 → 0.48.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/README.md +28 -0
- package/dist/src/commands/contract-abi.d.ts +3 -0
- package/dist/src/commands/contract-abi.d.ts.map +1 -0
- package/dist/src/commands/contract-abi.js +123 -0
- package/dist/src/commands/contract-abi.js.map +1 -0
- package/dist/src/commands/pending-approval.d.ts +3 -0
- package/dist/src/commands/pending-approval.d.ts.map +1 -0
- package/dist/src/commands/pending-approval.js +163 -0
- package/dist/src/commands/pending-approval.js.map +1 -0
- package/dist/src/commands/policy-backend.d.ts +3 -0
- package/dist/src/commands/policy-backend.d.ts.map +1 -0
- package/dist/src/commands/policy-backend.js +105 -0
- package/dist/src/commands/policy-backend.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -551,6 +551,34 @@ Create, sign, and execute Safe multisig transaction proposals.
|
|
|
551
551
|
1claw policy delete <id> # Remove a policy
|
|
552
552
|
```
|
|
553
553
|
|
|
554
|
+
### Policy backend (Cedar/OPA enforcement v2)
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
1claw policy-backend get # Show backend, mode, scope, circuit breaker
|
|
558
|
+
1claw policy-backend set --mode shadow # Stay in shadow mode (default)
|
|
559
|
+
1claw policy-backend set --backend builtin+cedar --mode enforce
|
|
560
|
+
1claw policy-backend shadow-report # Divergence report (shadow vs builtin)
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Contract ABIs
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
1claw contract-abi list # List org contract ABIs
|
|
567
|
+
1claw contract-abi create --chain ethereum \
|
|
568
|
+
--address 0x... --abi-file ./erc20.json # Register an ABI
|
|
569
|
+
1claw contract-abi delete <id> # Remove from registry
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
### Pending approvals (consensus)
|
|
573
|
+
|
|
574
|
+
```bash
|
|
575
|
+
1claw pending-approval list # List pending approvals
|
|
576
|
+
1claw pending-approval get <id> # Details + signatures
|
|
577
|
+
1claw pending-approval approve <id> --decision approve --payload-hash <hash>
|
|
578
|
+
1claw pending-approval execute <id> # Execute approved action (human)
|
|
579
|
+
1claw pending-approval cancel <id> # Cancel pending approval
|
|
580
|
+
```
|
|
581
|
+
|
|
554
582
|
### Sharing
|
|
555
583
|
|
|
556
584
|
```bash
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-abi.d.ts","sourceRoot":"","sources":["../../../src/commands/contract-abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,kBAAkB,SACiB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { api } from "../client.js";
|
|
4
|
+
import { requireToken, handleError } from "../middleware.js";
|
|
5
|
+
import { printTable, printJson, printSuccess, printKeyValue } from "../output.js";
|
|
6
|
+
export const contractAbiCommand = new Command("contract-abi")
|
|
7
|
+
.description("Manage contract ABI registry");
|
|
8
|
+
contractAbiCommand
|
|
9
|
+
.command("upload")
|
|
10
|
+
.description("Upload a contract ABI")
|
|
11
|
+
.requiredOption("--chain <chain>", "Chain name (e.g. ethereum)")
|
|
12
|
+
.requiredOption("--address <address>", "Contract address")
|
|
13
|
+
.requiredOption("--file <path>", "Path to ABI JSON file")
|
|
14
|
+
.option("--name <name>", "Display name")
|
|
15
|
+
.option("--description <desc>", "Description")
|
|
16
|
+
.option("--token-decimals <n>", "Token decimals (for ERC-20 contracts)")
|
|
17
|
+
.option("--json", "Output as JSON")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
try {
|
|
20
|
+
requireToken();
|
|
21
|
+
const abiJson = JSON.parse(readFileSync(opts.file, "utf-8"));
|
|
22
|
+
const body = {
|
|
23
|
+
chain: opts.chain,
|
|
24
|
+
contract_address: opts.address,
|
|
25
|
+
abi_json: abiJson,
|
|
26
|
+
};
|
|
27
|
+
if (opts.name)
|
|
28
|
+
body.name = opts.name;
|
|
29
|
+
if (opts.description)
|
|
30
|
+
body.description = opts.description;
|
|
31
|
+
if (opts.tokenDecimals)
|
|
32
|
+
body.token_decimals = parseInt(opts.tokenDecimals, 10);
|
|
33
|
+
const res = await api("/org/contract-abis", {
|
|
34
|
+
method: "POST",
|
|
35
|
+
body,
|
|
36
|
+
});
|
|
37
|
+
if (opts.json) {
|
|
38
|
+
printJson(res);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
printSuccess(`Contract ABI uploaded: ${res.id}`);
|
|
42
|
+
printKeyValue([
|
|
43
|
+
["ID", res.id],
|
|
44
|
+
["Chain", res.chain],
|
|
45
|
+
["Address", res.contract_address],
|
|
46
|
+
["Name", res.name ?? ""],
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
handleError(err);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
contractAbiCommand
|
|
54
|
+
.command("list")
|
|
55
|
+
.description("List contract ABIs")
|
|
56
|
+
.option("--chain <chain>", "Filter by chain")
|
|
57
|
+
.option("--json", "Output as JSON")
|
|
58
|
+
.action(async (opts) => {
|
|
59
|
+
try {
|
|
60
|
+
requireToken();
|
|
61
|
+
const query = {};
|
|
62
|
+
if (opts.chain)
|
|
63
|
+
query.chain = opts.chain;
|
|
64
|
+
const res = await api("/org/contract-abis", { query });
|
|
65
|
+
if (opts.json) {
|
|
66
|
+
printJson(res.abis);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (!res.abis.length) {
|
|
70
|
+
console.log("No contract ABIs found.");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
printTable(res.abis, [
|
|
74
|
+
{ key: "id", header: "ID", width: 36 },
|
|
75
|
+
{ key: "chain", header: "Chain", width: 12 },
|
|
76
|
+
{ key: "contract_address", header: "Address", width: 44 },
|
|
77
|
+
{ key: "name", header: "Name", width: 20 },
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
handleError(err);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
contractAbiCommand
|
|
85
|
+
.command("get <id>")
|
|
86
|
+
.description("Get a contract ABI")
|
|
87
|
+
.option("--json", "Output as JSON")
|
|
88
|
+
.action(async (id, opts) => {
|
|
89
|
+
try {
|
|
90
|
+
requireToken();
|
|
91
|
+
const res = await api(`/org/contract-abis/${id}`);
|
|
92
|
+
if (opts.json) {
|
|
93
|
+
printJson(res);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
printKeyValue([
|
|
97
|
+
["ID", res.id],
|
|
98
|
+
["Chain", res.chain],
|
|
99
|
+
["Address", res.contract_address],
|
|
100
|
+
["Name", res.name ?? ""],
|
|
101
|
+
["Description", res.description ?? ""],
|
|
102
|
+
["Token Decimals", res.token_decimals != null ? String(res.token_decimals) : ""],
|
|
103
|
+
["Created", res.created_at],
|
|
104
|
+
]);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
handleError(err);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
contractAbiCommand
|
|
111
|
+
.command("delete <id>")
|
|
112
|
+
.description("Delete a contract ABI")
|
|
113
|
+
.action(async (id) => {
|
|
114
|
+
try {
|
|
115
|
+
requireToken();
|
|
116
|
+
await api(`/org/contract-abis/${id}`, { method: "DELETE" });
|
|
117
|
+
printSuccess(`Contract ABI ${id} deleted.`);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
handleError(err);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=contract-abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-abi.js","sourceRoot":"","sources":["../../../src/commands/contract-abi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-approval.d.ts","sourceRoot":"","sources":["../../../src/commands/pending-approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,sBAAsB,SACyB,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { api } from "../client.js";
|
|
4
|
+
import { requireToken, handleError } from "../middleware.js";
|
|
5
|
+
import { printTable, printJson, printSuccess, printKeyValue } from "../output.js";
|
|
6
|
+
export const pendingApprovalCommand = new Command("pending-approval")
|
|
7
|
+
.description("Manage consensus-based pending approvals");
|
|
8
|
+
pendingApprovalCommand
|
|
9
|
+
.command("list")
|
|
10
|
+
.description("List pending approvals")
|
|
11
|
+
.option("--status <status>", "Filter by status (pending, approved, rejected, executed, expired, cancelled)")
|
|
12
|
+
.option("--agent-id <id>", "Filter by agent ID")
|
|
13
|
+
.option("--json", "Output as JSON")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
try {
|
|
16
|
+
requireToken();
|
|
17
|
+
const query = {};
|
|
18
|
+
if (opts.status)
|
|
19
|
+
query.status = opts.status;
|
|
20
|
+
if (opts.agentId)
|
|
21
|
+
query.agent_id = opts.agentId;
|
|
22
|
+
const res = await api("/pending-approvals", { query });
|
|
23
|
+
if (opts.json) {
|
|
24
|
+
printJson(res.pending_approvals);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!res.pending_approvals.length) {
|
|
28
|
+
console.log("No pending approvals found.");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
printTable(res.pending_approvals.map((a) => ({
|
|
32
|
+
...a,
|
|
33
|
+
progress: `${a.current_approvals}/${a.required_approvals}`,
|
|
34
|
+
submitter: `${a.submitted_by_type}:${a.submitted_by.slice(0, 8)}…`,
|
|
35
|
+
status_display: colorStatus(a.status),
|
|
36
|
+
})), [
|
|
37
|
+
{ key: "id", header: "ID", width: 36 },
|
|
38
|
+
{ key: "action", header: "Action", width: 20 },
|
|
39
|
+
{ key: "status_display", header: "Status", width: 12 },
|
|
40
|
+
{ key: "progress", header: "Approvals", width: 10 },
|
|
41
|
+
{ key: "submitter", header: "Submitted By", width: 18 },
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
handleError(err);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
pendingApprovalCommand
|
|
49
|
+
.command("get <id>")
|
|
50
|
+
.description("Get pending approval details")
|
|
51
|
+
.option("--json", "Output as JSON")
|
|
52
|
+
.action(async (id, opts) => {
|
|
53
|
+
try {
|
|
54
|
+
requireToken();
|
|
55
|
+
const res = await api(`/pending-approvals/${id}`);
|
|
56
|
+
if (opts.json) {
|
|
57
|
+
printJson(res);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
printKeyValue([
|
|
61
|
+
["ID", res.id],
|
|
62
|
+
["Policy ID", res.policy_id],
|
|
63
|
+
["Action", res.action],
|
|
64
|
+
["Status", res.status],
|
|
65
|
+
["Approvals", `${res.current_approvals}/${res.required_approvals}`],
|
|
66
|
+
["Submitted By", `${res.submitted_by_type}:${res.submitted_by}`],
|
|
67
|
+
["Expires", res.expires_at ?? "never"],
|
|
68
|
+
["Created", res.created_at],
|
|
69
|
+
]);
|
|
70
|
+
if (res.signatures.length) {
|
|
71
|
+
console.log("\nSignatures:");
|
|
72
|
+
printTable(res.signatures, [
|
|
73
|
+
{ key: "signer_id", header: "Signer", width: 36 },
|
|
74
|
+
{ key: "decision", header: "Decision", width: 10 },
|
|
75
|
+
{ key: "reason", header: "Reason", width: 20 },
|
|
76
|
+
{ key: "created_at", header: "Time" },
|
|
77
|
+
]);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
handleError(err);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
pendingApprovalCommand
|
|
85
|
+
.command("approve <id>")
|
|
86
|
+
.description("Approve a pending approval")
|
|
87
|
+
.requiredOption("--payload-hash <hash>", "SHA-256 hash of the action payload")
|
|
88
|
+
.option("--reason <reason>", "Reason for approval")
|
|
89
|
+
.action(async (id, opts) => {
|
|
90
|
+
try {
|
|
91
|
+
requireToken();
|
|
92
|
+
const body = {
|
|
93
|
+
decision: "approve",
|
|
94
|
+
payload_hash: opts.payloadHash,
|
|
95
|
+
};
|
|
96
|
+
if (opts.reason)
|
|
97
|
+
body.reason = opts.reason;
|
|
98
|
+
await api(`/pending-approvals/${id}/approve`, { method: "POST", body });
|
|
99
|
+
printSuccess(`Pending approval ${id} approved.`);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
handleError(err);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
pendingApprovalCommand
|
|
106
|
+
.command("reject <id>")
|
|
107
|
+
.description("Reject a pending approval")
|
|
108
|
+
.requiredOption("--payload-hash <hash>", "SHA-256 hash of the action payload")
|
|
109
|
+
.option("--reason <reason>", "Reason for rejection")
|
|
110
|
+
.action(async (id, opts) => {
|
|
111
|
+
try {
|
|
112
|
+
requireToken();
|
|
113
|
+
const body = {
|
|
114
|
+
decision: "reject",
|
|
115
|
+
payload_hash: opts.payloadHash,
|
|
116
|
+
};
|
|
117
|
+
if (opts.reason)
|
|
118
|
+
body.reason = opts.reason;
|
|
119
|
+
await api(`/pending-approvals/${id}/approve`, { method: "POST", body });
|
|
120
|
+
printSuccess(`Pending approval ${id} rejected.`);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
handleError(err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
pendingApprovalCommand
|
|
127
|
+
.command("execute <id>")
|
|
128
|
+
.description("Execute an approved pending approval")
|
|
129
|
+
.action(async (id) => {
|
|
130
|
+
try {
|
|
131
|
+
requireToken();
|
|
132
|
+
await api(`/pending-approvals/${id}/execute`, { method: "POST" });
|
|
133
|
+
printSuccess(`Pending approval ${id} executed.`);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
handleError(err);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
pendingApprovalCommand
|
|
140
|
+
.command("cancel <id>")
|
|
141
|
+
.description("Cancel a pending approval")
|
|
142
|
+
.action(async (id) => {
|
|
143
|
+
try {
|
|
144
|
+
requireToken();
|
|
145
|
+
await api(`/pending-approvals/${id}/cancel`, { method: "POST" });
|
|
146
|
+
printSuccess(`Pending approval ${id} cancelled.`);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
handleError(err);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
function colorStatus(status) {
|
|
153
|
+
switch (status) {
|
|
154
|
+
case "pending": return chalk.yellow(status);
|
|
155
|
+
case "approved": return chalk.green(status);
|
|
156
|
+
case "rejected": return chalk.red(status);
|
|
157
|
+
case "executed": return chalk.blue(status);
|
|
158
|
+
case "expired": return chalk.dim(status);
|
|
159
|
+
case "cancelled": return chalk.gray(status);
|
|
160
|
+
default: return status;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=pending-approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-approval.js","sourceRoot":"","sources":["../../../src/commands/pending-approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-backend.d.ts","sourceRoot":"","sources":["../../../src/commands/policy-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,oBAAoB,SAC6C,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { api } from "../client.js";
|
|
3
|
+
import { requireToken, handleError } from "../middleware.js";
|
|
4
|
+
import { printKeyValue, printJson, printSuccess, printTable } from "../output.js";
|
|
5
|
+
export const policyBackendCommand = new Command("policy-backend")
|
|
6
|
+
.description("Manage org policy backend settings (Cedar/OPA enforcement)");
|
|
7
|
+
policyBackendCommand
|
|
8
|
+
.command("get")
|
|
9
|
+
.description("Show current policy backend settings")
|
|
10
|
+
.option("--json", "Output as JSON")
|
|
11
|
+
.action(async (opts) => {
|
|
12
|
+
try {
|
|
13
|
+
requireToken();
|
|
14
|
+
const res = await api("/org/settings/policy-backend");
|
|
15
|
+
if (opts.json) {
|
|
16
|
+
printJson(res);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
printKeyValue([
|
|
20
|
+
["Backend", res.backend],
|
|
21
|
+
["Mode", res.mode],
|
|
22
|
+
["Scope", res.scope.length ? res.scope.join(", ") : "(all)"],
|
|
23
|
+
["Breaker Behavior", res.breaker_behavior],
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
handleError(err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
policyBackendCommand
|
|
31
|
+
.command("set")
|
|
32
|
+
.description("Update policy backend settings")
|
|
33
|
+
.option("--backend <backend>", "Backend: builtin, cedar, opa, builtin+cedar, builtin+opa")
|
|
34
|
+
.option("--mode <mode>", "Mode: shadow or enforce")
|
|
35
|
+
.option("--scope <scope>", "Comma-separated scope (e.g. sign,submit_transaction)")
|
|
36
|
+
.option("--breaker <behavior>", "Circuit breaker: fail_closed or fail_open_builtin")
|
|
37
|
+
.option("--json", "Output as JSON")
|
|
38
|
+
.action(async (opts) => {
|
|
39
|
+
try {
|
|
40
|
+
requireToken();
|
|
41
|
+
const body = {};
|
|
42
|
+
if (opts.backend)
|
|
43
|
+
body.backend = opts.backend;
|
|
44
|
+
if (opts.mode)
|
|
45
|
+
body.mode = opts.mode;
|
|
46
|
+
if (opts.scope)
|
|
47
|
+
body.scope = opts.scope.split(",").map((s) => s.trim());
|
|
48
|
+
if (opts.breaker)
|
|
49
|
+
body.breaker_behavior = opts.breaker;
|
|
50
|
+
const res = await api("/org/settings/policy-backend", {
|
|
51
|
+
method: "PATCH",
|
|
52
|
+
body,
|
|
53
|
+
});
|
|
54
|
+
if (opts.json) {
|
|
55
|
+
printJson(res);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
printSuccess("Policy backend settings updated.");
|
|
59
|
+
printKeyValue([
|
|
60
|
+
["Backend", res.backend],
|
|
61
|
+
["Mode", res.mode],
|
|
62
|
+
["Scope", res.scope.length ? res.scope.join(", ") : "(all)"],
|
|
63
|
+
["Breaker Behavior", res.breaker_behavior],
|
|
64
|
+
]);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
handleError(err);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
policyBackendCommand
|
|
71
|
+
.command("shadow-report")
|
|
72
|
+
.description("Show policy shadow mode divergence report")
|
|
73
|
+
.option("--json", "Output as JSON")
|
|
74
|
+
.action(async (opts) => {
|
|
75
|
+
try {
|
|
76
|
+
requireToken();
|
|
77
|
+
const res = await api("/org/policy-shadow-report");
|
|
78
|
+
if (opts.json) {
|
|
79
|
+
printJson(res);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
printKeyValue([
|
|
83
|
+
["Concordance Rate", `${(res.concordance_rate * 100).toFixed(1)}%`],
|
|
84
|
+
["Total Evaluated", String(res.total_evaluated)],
|
|
85
|
+
["Divergent Count", String(res.divergent_count)],
|
|
86
|
+
]);
|
|
87
|
+
if (res.sample_events.length) {
|
|
88
|
+
console.log("\nSample divergences:");
|
|
89
|
+
printTable(res.sample_events.map((e) => ({
|
|
90
|
+
...e,
|
|
91
|
+
principal: `${e.principal_type}:${e.principal_id.slice(0, 8)}…`,
|
|
92
|
+
})), [
|
|
93
|
+
{ key: "timestamp", header: "Time" },
|
|
94
|
+
{ key: "action", header: "Action" },
|
|
95
|
+
{ key: "principal", header: "Principal", width: 18 },
|
|
96
|
+
{ key: "builtin_decision", header: "Builtin" },
|
|
97
|
+
{ key: "backend_decision", header: "Backend" },
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
handleError(err);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=policy-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-backend.js","sourceRoot":"","sources":["../../../src/commands/policy-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoEpC,wBAAgB,aAAa,IAAI,OAAO,CA+GvC"}
|
package/dist/src/index.js
CHANGED
|
@@ -42,6 +42,9 @@ import { channelCommand } from "./commands/channel.js";
|
|
|
42
42
|
import { oauthCommand } from "./commands/oauth.js";
|
|
43
43
|
import { cedarPolicyCommand } from "./commands/cedar-policy.js";
|
|
44
44
|
import { opaPolicyCommand } from "./commands/opa-policy.js";
|
|
45
|
+
import { policyBackendCommand } from "./commands/policy-backend.js";
|
|
46
|
+
import { contractAbiCommand } from "./commands/contract-abi.js";
|
|
47
|
+
import { pendingApprovalCommand } from "./commands/pending-approval.js";
|
|
45
48
|
import { subOrgCommand } from "./commands/sub-org.js";
|
|
46
49
|
import { portfolioCommand } from "./commands/portfolio.js";
|
|
47
50
|
import { setOutputFormat, setApiUrl } from "./config.js";
|
|
@@ -119,6 +122,9 @@ export function createProgram() {
|
|
|
119
122
|
// Policy engines
|
|
120
123
|
program.addCommand(cedarPolicyCommand);
|
|
121
124
|
program.addCommand(opaPolicyCommand);
|
|
125
|
+
program.addCommand(policyBackendCommand);
|
|
126
|
+
program.addCommand(contractAbiCommand);
|
|
127
|
+
program.addCommand(pendingApprovalCommand);
|
|
122
128
|
// Sub-organizations
|
|
123
129
|
program.addCommand(subOrgCommand);
|
|
124
130
|
// Portfolio
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|