@grantex/cli 0.1.5 → 0.1.7

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 (85) hide show
  1. package/README.md +177 -52
  2. package/dist/commands/agents.d.ts.map +1 -1
  3. package/dist/commands/agents.js +50 -11
  4. package/dist/commands/agents.js.map +1 -1
  5. package/dist/commands/anomalies.d.ts.map +1 -1
  6. package/dist/commands/anomalies.js +10 -2
  7. package/dist/commands/anomalies.js.map +1 -1
  8. package/dist/commands/audit.d.ts.map +1 -1
  9. package/dist/commands/audit.js +65 -3
  10. package/dist/commands/audit.js.map +1 -1
  11. package/dist/commands/authorize.d.ts +3 -0
  12. package/dist/commands/authorize.d.ts.map +1 -0
  13. package/dist/commands/authorize.js +42 -0
  14. package/dist/commands/authorize.js.map +1 -0
  15. package/dist/commands/billing.d.ts.map +1 -1
  16. package/dist/commands/billing.js +10 -2
  17. package/dist/commands/billing.js.map +1 -1
  18. package/dist/commands/budgets.d.ts +3 -0
  19. package/dist/commands/budgets.d.ts.map +1 -0
  20. package/dist/commands/budgets.js +83 -0
  21. package/dist/commands/budgets.js.map +1 -0
  22. package/dist/commands/compliance.d.ts.map +1 -1
  23. package/dist/commands/compliance.js +13 -3
  24. package/dist/commands/compliance.js.map +1 -1
  25. package/dist/commands/credentials.d.ts +3 -0
  26. package/dist/commands/credentials.d.ts.map +1 -0
  27. package/dist/commands/credentials.js +106 -0
  28. package/dist/commands/credentials.js.map +1 -0
  29. package/dist/commands/domains.d.ts +3 -0
  30. package/dist/commands/domains.d.ts.map +1 -0
  31. package/dist/commands/domains.js +70 -0
  32. package/dist/commands/domains.js.map +1 -0
  33. package/dist/commands/events.d.ts +3 -0
  34. package/dist/commands/events.d.ts.map +1 -0
  35. package/dist/commands/events.js +34 -0
  36. package/dist/commands/events.js.map +1 -0
  37. package/dist/commands/grants.d.ts.map +1 -1
  38. package/dist/commands/grants.js +58 -3
  39. package/dist/commands/grants.js.map +1 -1
  40. package/dist/commands/me.d.ts +3 -0
  41. package/dist/commands/me.d.ts.map +1 -0
  42. package/dist/commands/me.js +46 -0
  43. package/dist/commands/me.js.map +1 -0
  44. package/dist/commands/passports.d.ts +3 -0
  45. package/dist/commands/passports.d.ts.map +1 -0
  46. package/dist/commands/passports.js +89 -0
  47. package/dist/commands/passports.js.map +1 -0
  48. package/dist/commands/policies.d.ts.map +1 -1
  49. package/dist/commands/policies.js +18 -2
  50. package/dist/commands/policies.js.map +1 -1
  51. package/dist/commands/principal-sessions.d.ts +3 -0
  52. package/dist/commands/principal-sessions.d.ts.map +1 -0
  53. package/dist/commands/principal-sessions.js +31 -0
  54. package/dist/commands/principal-sessions.js.map +1 -0
  55. package/dist/commands/scim.d.ts.map +1 -1
  56. package/dist/commands/scim.js +96 -4
  57. package/dist/commands/scim.js.map +1 -1
  58. package/dist/commands/sso.d.ts.map +1 -1
  59. package/dist/commands/sso.js +25 -2
  60. package/dist/commands/sso.js.map +1 -1
  61. package/dist/commands/tokens.d.ts.map +1 -1
  62. package/dist/commands/tokens.js +60 -2
  63. package/dist/commands/tokens.js.map +1 -1
  64. package/dist/commands/usage.d.ts +3 -0
  65. package/dist/commands/usage.d.ts.map +1 -0
  66. package/dist/commands/usage.js +44 -0
  67. package/dist/commands/usage.js.map +1 -0
  68. package/dist/commands/vault.d.ts +3 -0
  69. package/dist/commands/vault.d.ts.map +1 -0
  70. package/dist/commands/vault.js +117 -0
  71. package/dist/commands/vault.js.map +1 -0
  72. package/dist/commands/webauthn.d.ts +3 -0
  73. package/dist/commands/webauthn.d.ts.map +1 -0
  74. package/dist/commands/webauthn.js +78 -0
  75. package/dist/commands/webauthn.js.map +1 -0
  76. package/dist/commands/webhooks.d.ts.map +1 -1
  77. package/dist/commands/webhooks.js +10 -2
  78. package/dist/commands/webhooks.js.map +1 -1
  79. package/dist/format.d.ts +13 -5
  80. package/dist/format.d.ts.map +1 -1
  81. package/dist/format.js +42 -8
  82. package/dist/format.js.map +1 -1
  83. package/dist/index.js +36 -7
  84. package/dist/index.js.map +1 -1
  85. package/package.json +1 -1
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Command-line tool for the [Grantex](https://grantex.dev) delegated authorization protocol.
4
4
 
5
- Manage agents, grants, audit logs, webhooks, policies, anomalies, and compliance exports from your terminal.
5
+ 83 commands covering the full Grantex API — agents, grants, tokens, policies, budgets, audit, compliance, credentials, and more. All commands support `--json` for machine-readable output.
6
6
 
7
- > **[Homepage](https://grantex.dev)** | **[Docs](https://grantex.dev/docs)** | **[Sign Up Free](https://grantex.dev/dashboard/signup)** | **[GitHub](https://github.com/mishrasanjeev/grantex)**
7
+ > **[Homepage](https://grantex.dev)** | **[Docs](https://docs.grantex.dev)** | **[CLI Docs](https://docs.grantex.dev/integrations/cli)** | **[GitHub](https://github.com/mishrasanjeev/grantex)**
8
8
 
9
9
  ## Install
10
10
 
@@ -14,122 +14,247 @@ npm install -g @grantex/cli
14
14
 
15
15
  ## Configure
16
16
 
17
- Point the CLI at your Grantex server and set your API key:
18
-
19
17
  ```bash
20
- # Interactive setup
21
18
  grantex config set --url https://grantex-auth-dd4mtrt2gq-uc.a.run.app --key YOUR_API_KEY
22
19
 
23
20
  # Or use environment variables
24
21
  export GRANTEX_URL=https://grantex-auth-dd4mtrt2gq-uc.a.run.app
25
22
  export GRANTEX_KEY=YOUR_API_KEY
23
+
24
+ # Verify your setup
25
+ grantex me
26
26
  ```
27
27
 
28
28
  Config is saved to `~/.grantex/config.json`. Environment variables override the config file.
29
29
 
30
+ ## JSON Output
31
+
32
+ All commands support `--json` for machine-readable output — ideal for scripting, `jq`, and AI coding assistants (Claude Code, Cursor, Codex).
33
+
30
34
  ```bash
31
- # Verify your setup
32
- grantex config show
35
+ grantex --json agents list | jq '.[0].agentId'
36
+ grantex --json tokens verify <jwt> | jq '.valid'
33
37
  ```
34
38
 
39
+ Set `NO_COLOR=1` to disable colored output.
40
+
35
41
  ## Commands
36
42
 
43
+ ### Core Flow
44
+
45
+ ```bash
46
+ # 1. Register an agent
47
+ grantex agents register --name "My Bot" --description "Reads email" --scopes email:read
48
+
49
+ # 2. Start authorization
50
+ grantex authorize --agent ag_... --principal user@example.com --scopes email:read
51
+
52
+ # 3. Exchange code for token
53
+ grantex tokens exchange --code <code> --agent-id ag_...
54
+
55
+ # 4. Verify the token
56
+ grantex tokens verify <jwt>
57
+
58
+ # 5. Refresh when needed
59
+ grantex tokens refresh --refresh-token <token> --agent-id ag_...
60
+
61
+ # 6. Revoke when done
62
+ grantex grants revoke grnt_...
63
+ ```
64
+
37
65
  ### Agents
38
66
 
39
67
  ```bash
40
68
  grantex agents list
41
- grantex agents register --name travel-booker --scopes calendar:read,payments:initiate
42
- grantex agents get ag_01ABC...
43
- grantex agents update ag_01ABC... --name new-name --scopes calendar:read,email:send
44
- grantex agents delete ag_01ABC...
69
+ grantex agents register --name bot --description "..." --scopes email:read,calendar:write
70
+ grantex agents get ag_...
71
+ grantex agents update ag_... --name new-name --scopes email:read
72
+ grantex agents delete ag_...
45
73
  ```
46
74
 
47
75
  ### Grants
48
76
 
49
77
  ```bash
50
- grantex grants list
51
- grantex grants list --agent ag_01ABC... --status active
52
- grantex grants revoke grnt_01XYZ...
78
+ grantex grants list [--agent ag_... --status active]
79
+ grantex grants get grnt_...
80
+ grantex grants revoke grnt_...
81
+ grantex grants delegate --grant-token <jwt> --agent-id ag_child... --scopes email:read
53
82
  ```
54
83
 
55
84
  ### Tokens
56
85
 
57
86
  ```bash
58
- grantex tokens verify <jwt-token>
87
+ grantex tokens exchange --code <code> --agent-id ag_...
88
+ grantex tokens verify <jwt>
89
+ grantex tokens refresh --refresh-token <token> --agent-id ag_...
59
90
  grantex tokens revoke <jti>
60
91
  ```
61
92
 
62
- ### Audit Log
93
+ ### Authorize
63
94
 
64
95
  ```bash
65
- grantex audit list
66
- grantex audit list --agent ag_01ABC... --action payment.initiated --since 2026-01-01
96
+ grantex authorize --agent ag_... --principal user@example.com --scopes email:read
97
+ grantex authorize --agent ag_... --principal user@example.com --scopes email:read \
98
+ --code-challenge <S256-challenge> --redirect-uri https://app.com/callback
99
+ ```
100
+
101
+ ### Audit
102
+
103
+ ```bash
104
+ grantex audit list [--agent ag_... --grant grnt_... --action email.read --since 2026-01-01]
105
+ grantex audit get alog_...
106
+ grantex audit log --agent-id ag_... --agent-did did:grantex:ag_... --grant-id grnt_... \
107
+ --principal-id user@example.com --action email.read --status success
108
+ ```
109
+
110
+ ### Policies
111
+
112
+ ```bash
113
+ grantex policies list
114
+ grantex policies get pol_...
115
+ grantex policies create --name "Allow Bot" --effect allow --agent-id ag_... --scopes email:read
116
+ grantex policies update pol_... --priority 50
117
+ grantex policies delete pol_...
118
+ ```
119
+
120
+ ### Budgets
121
+
122
+ ```bash
123
+ grantex budgets allocate --grant-id grnt_... --amount 100 [--currency USD]
124
+ grantex budgets debit --grant-id grnt_... --amount 25.50 --description "API call"
125
+ grantex budgets balance grnt_...
126
+ grantex budgets transactions grnt_...
127
+ ```
128
+
129
+ ### Usage
130
+
131
+ ```bash
132
+ grantex usage current
133
+ grantex usage history [--days 7]
67
134
  ```
68
135
 
69
136
  ### Webhooks
70
137
 
71
138
  ```bash
72
139
  grantex webhooks list
73
- grantex webhooks create --url https://example.com/hook --events grant.created,grant.revoked
74
- grantex webhooks delete wh_01XYZ...
140
+ grantex webhooks create --url https://example.com/hook --events grant.created,token.issued
141
+ grantex webhooks delete wh_...
75
142
  ```
76
143
 
77
- Supported events: `grant.created`, `grant.revoked`, `token.issued`
144
+ ### Events
78
145
 
79
- ### Compliance
146
+ ```bash
147
+ grantex events stream [--types grant.created,token.issued]
148
+ grantex --json events stream # One JSON object per line
149
+ ```
150
+
151
+ ### Domains
80
152
 
81
153
  ```bash
82
- # Summary stats
83
- grantex compliance summary
84
- grantex compliance summary --since 2026-01-01 --until 2026-02-01
154
+ grantex domains list
155
+ grantex domains add --domain auth.mycompany.com
156
+ grantex domains verify dom_...
157
+ grantex domains delete dom_...
158
+ ```
85
159
 
86
- # Export grants
87
- grantex compliance export grants --format json --output grants.json
160
+ ### Vault (Credential Storage)
88
161
 
89
- # Export audit log
90
- grantex compliance export audit --format json --output audit.json
162
+ ```bash
163
+ grantex vault list [--principal user@example.com --service google]
164
+ grantex vault get cred_...
165
+ grantex vault store --principal-id user@example.com --service google --access-token ya29...
166
+ grantex vault delete cred_...
167
+ grantex vault exchange --grant-token <jwt> --service google
168
+ ```
91
169
 
92
- # Evidence pack (SOC 2, GDPR, etc.)
170
+ ### WebAuthn / FIDO2
171
+
172
+ ```bash
173
+ grantex webauthn register-options --principal-id user@example.com
174
+ grantex webauthn register-verify --challenge-id ch_... --response '{"id":"..."}' --device-name "MacBook"
175
+ grantex webauthn list user@example.com
176
+ grantex webauthn delete cred_...
177
+ ```
178
+
179
+ ### Verifiable Credentials
180
+
181
+ ```bash
182
+ grantex credentials list [--grant-id grnt_... --status active]
183
+ grantex credentials get vc_...
184
+ grantex credentials verify --vc-jwt eyJ...
185
+ grantex credentials present --sd-jwt eyJ... --nonce abc123
186
+ ```
187
+
188
+ ### Agent Passports (MPP)
189
+
190
+ ```bash
191
+ grantex passports issue --agent-id ag_... --grant-id grnt_... --categories "compute,storage" --max-amount 100
192
+ grantex passports list [--agent-id ag_...]
193
+ grantex passports get pp_...
194
+ grantex passports revoke pp_...
195
+ ```
196
+
197
+ ### Principal Sessions
198
+
199
+ ```bash
200
+ grantex principal-sessions create --principal-id user@example.com [--expires-in 1h]
201
+ ```
202
+
203
+ ### Account
204
+
205
+ ```bash
206
+ grantex me
207
+ ```
208
+
209
+ ### Compliance
210
+
211
+ ```bash
212
+ grantex compliance summary [--since 2026-01-01 --until 2026-02-01]
213
+ grantex compliance export grants --format json --output grants.json
214
+ grantex compliance export audit --format json --output audit.json
93
215
  grantex compliance evidence-pack --framework soc2 --output evidence.json
94
216
  ```
95
217
 
96
- ### Anomaly Detection
218
+ ### Anomalies
97
219
 
98
220
  ```bash
99
221
  grantex anomalies detect
100
- grantex anomalies list
101
- grantex anomalies list --unacknowledged
102
- grantex anomalies acknowledge anom_01XYZ...
222
+ grantex anomalies list [--unacknowledged]
223
+ grantex anomalies acknowledge anom_...
103
224
  ```
104
225
 
105
- ## Local Development
106
-
107
- For local development with `docker compose`:
226
+ ### Billing
108
227
 
109
228
  ```bash
110
- grantex config set --url http://localhost:3001 --key dev-api-key-local
229
+ grantex billing status
230
+ grantex billing checkout pro --success-url https://app.com/ok --cancel-url https://app.com/cancel
231
+ grantex billing portal --return-url https://app.com/settings
111
232
  ```
112
233
 
113
- ## Requirements
234
+ ### SCIM
114
235
 
115
- - Node.js 18+
236
+ ```bash
237
+ grantex scim tokens list | create --label "Okta" | revoke tok_...
238
+ grantex scim users list | get usr_... | create --user-name john@co.com | update usr_... | delete usr_...
239
+ ```
116
240
 
117
- ## Links
241
+ ### SSO
118
242
 
119
- - [Grantex Protocol](https://github.com/mishrasanjeev/grantex)
120
- - [TypeScript SDK](https://www.npmjs.com/package/@grantex/sdk)
121
- - [Self-Hosting Guide](https://github.com/mishrasanjeev/grantex/blob/main/docs/self-hosting.md)
122
- - [Developer Portal](https://grantex.dev/dashboard)
243
+ ```bash
244
+ grantex sso get | configure --issuer-url ... --client-id ... | delete
245
+ grantex sso login-url my-org
246
+ grantex sso callback --code CODE --state STATE
247
+ ```
248
+
249
+ ## Local Development
123
250
 
124
- ## Grantex Ecosystem
251
+ ```bash
252
+ grantex config set --url http://localhost:3001 --key dev-api-key-local
253
+ ```
125
254
 
126
- This package is part of the [Grantex](https://grantex.dev) ecosystem. See also:
255
+ ## Requirements
127
256
 
128
- - [`@grantex/sdk`](https://www.npmjs.com/package/@grantex/sdk) — Core TypeScript SDK
129
- - [`grantex`](https://pypi.org/project/grantex/) — Python SDK
130
- - [`@grantex/langchain`](https://www.npmjs.com/package/@grantex/langchain) — LangChain integration
131
- - [`@grantex/mcp`](https://www.npmjs.com/package/@grantex/mcp) — MCP server for Claude Desktop / Cursor / Windsurf
132
- - [`@grantex/vercel-ai`](https://www.npmjs.com/package/@grantex/vercel-ai) — Vercel AI SDK integration
257
+ - Node.js 18+
133
258
 
134
259
  ## License
135
260
 
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,aAAa,IAAI,OAAO,CAqEvC"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,aAAa,IAAI,OAAO,CAuGvC"}
@@ -1,7 +1,11 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
3
  import { requireClient } from '../client.js';
4
- import { printTable, printRecord, shortDate } from '../format.js';
4
+ import { printTable, printRecord, shortDate, isJsonMode } from '../format.js';
5
+ // The API returns `agentId` but the SDK type says `id`. Handle both.
6
+ function agentId(a) {
7
+ return String(a.agentId ?? a.id ?? '');
8
+ }
5
9
  export function agentsCommand() {
6
10
  const cmd = new Command('agents').description('Manage registered agents');
7
11
  cmd
@@ -11,11 +15,11 @@ export function agentsCommand() {
11
15
  const client = await requireClient();
12
16
  const { agents } = await client.agents.list();
13
17
  printTable(agents.map((a) => ({
14
- ID: a.id,
18
+ ID: agentId(a),
15
19
  NAME: a.name,
16
20
  DID: a.did,
17
21
  CREATED: shortDate(a.createdAt),
18
- })), ['ID', 'NAME', 'DID', 'CREATED']);
22
+ })), ['ID', 'NAME', 'DID', 'CREATED'], agents.map((a) => ({ ...a })));
19
23
  });
20
24
  cmd
21
25
  .command('register')
@@ -30,9 +34,14 @@ export function agentsCommand() {
30
34
  description: opts.description,
31
35
  scopes: opts.scopes.split(',').map((s) => s.trim()),
32
36
  });
33
- console.log(chalk.green('✓') + ` Agent registered: ${agent.id}`);
37
+ if (isJsonMode()) {
38
+ console.log(JSON.stringify(agent, null, 2));
39
+ return;
40
+ }
41
+ const id = agentId(agent);
42
+ console.log(chalk.green('✓') + ` Agent registered: ${id}`);
34
43
  printRecord({
35
- id: agent.id,
44
+ id,
36
45
  name: agent.name,
37
46
  did: agent.did,
38
47
  scopes: agent.scopes.join(', '),
@@ -42,11 +51,15 @@ export function agentsCommand() {
42
51
  cmd
43
52
  .command('get <agentId>')
44
53
  .description('Get details for a single agent')
45
- .action(async (agentId) => {
54
+ .action(async (agentIdArg) => {
46
55
  const client = await requireClient();
47
- const agent = await client.agents.get(agentId);
56
+ const agent = await client.agents.get(agentIdArg);
57
+ if (isJsonMode()) {
58
+ console.log(JSON.stringify(agent, null, 2));
59
+ return;
60
+ }
48
61
  printRecord({
49
- id: agent.id,
62
+ id: agentId(agent),
50
63
  name: agent.name,
51
64
  did: agent.did,
52
65
  description: agent.description,
@@ -54,13 +67,39 @@ export function agentsCommand() {
54
67
  createdAt: shortDate(agent.createdAt),
55
68
  });
56
69
  });
70
+ cmd
71
+ .command('update <agentId>')
72
+ .description('Update an agent')
73
+ .option('--name <name>', 'New agent name')
74
+ .option('--description <desc>', 'New agent description')
75
+ .option('--scopes <scopes>', 'New comma-separated scopes')
76
+ .action(async (agentIdArg, opts) => {
77
+ const client = await requireClient();
78
+ const updates = {};
79
+ if (opts.name !== undefined)
80
+ updates.name = opts.name;
81
+ if (opts.description !== undefined)
82
+ updates.description = opts.description;
83
+ if (opts.scopes !== undefined)
84
+ updates.scopes = opts.scopes.split(',').map((s) => s.trim());
85
+ const agent = await client.agents.update(agentIdArg, updates);
86
+ if (isJsonMode()) {
87
+ console.log(JSON.stringify(agent, null, 2));
88
+ return;
89
+ }
90
+ console.log(chalk.green('✓') + ` Agent ${agentIdArg} updated.`);
91
+ });
57
92
  cmd
58
93
  .command('delete <agentId>')
59
94
  .description('Delete an agent')
60
- .action(async (agentId) => {
95
+ .action(async (agentIdArg) => {
61
96
  const client = await requireClient();
62
- await client.agents.delete(agentId);
63
- console.log(chalk.green('✓') + ` Agent ${agentId} deleted.`);
97
+ await client.agents.delete(agentIdArg);
98
+ if (isJsonMode()) {
99
+ console.log(JSON.stringify({ deleted: agentIdArg }));
100
+ return;
101
+ }
102
+ console.log(chalk.green('✓') + ` Agent ${agentIdArg} deleted.`);
64
103
  });
65
104
  return cmd;
66
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"anomalies.d.ts","sourceRoot":"","sources":["../../src/commands/anomalies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,gBAAgB,IAAI,OAAO,CAgD1C"}
1
+ {"version":3,"file":"anomalies.d.ts","sourceRoot":"","sources":["../../src/commands/anomalies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,gBAAgB,IAAI,OAAO,CA0D1C"}
@@ -1,7 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
3
  import { requireClient } from '../client.js';
4
- import { printTable } from '../format.js';
4
+ import { printTable, isJsonMode } from '../format.js';
5
5
  const SEVERITY_COLOR = {
6
6
  high: chalk.red,
7
7
  medium: chalk.yellow,
@@ -18,6 +18,10 @@ export function anomaliesCommand() {
18
18
  .action(async () => {
19
19
  const client = await requireClient();
20
20
  const result = await client.anomalies.detect();
21
+ if (isJsonMode()) {
22
+ console.log(JSON.stringify(result, null, 2));
23
+ return;
24
+ }
21
25
  if (result.total === 0) {
22
26
  console.log(chalk.green('✓') + ' No anomalies detected.');
23
27
  return;
@@ -34,7 +38,7 @@ export function anomaliesCommand() {
34
38
  const result = await client.anomalies.list({
35
39
  ...(opts.unacknowledged ? { unacknowledged: true } : {}),
36
40
  });
37
- printTable(result.anomalies.map(formatRow), ['ID', 'TYPE', 'SEVERITY', 'AGENT', 'DESCRIPTION']);
41
+ printTable(result.anomalies.map(formatRow), ['ID', 'TYPE', 'SEVERITY', 'AGENT', 'DESCRIPTION'], result.anomalies.map((a) => ({ ...a })));
38
42
  });
39
43
  cmd
40
44
  .command('acknowledge <anomalyId>')
@@ -42,6 +46,10 @@ export function anomaliesCommand() {
42
46
  .action(async (anomalyId) => {
43
47
  const client = await requireClient();
44
48
  await client.anomalies.acknowledge(anomalyId);
49
+ if (isJsonMode()) {
50
+ console.log(JSON.stringify({ acknowledged: anomalyId }));
51
+ return;
52
+ }
45
53
  console.log(chalk.green('✓') + ` Anomaly ${anomalyId} acknowledged.`);
46
54
  });
47
55
  return cmd;
@@ -1 +1 @@
1
- {"version":3,"file":"anomalies.js","sourceRoot":"","sources":["../../src/commands/anomalies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anomalies.js","sourceRoot":"","sources":["../../src/commands/anomalies.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,YAAY,IAAI,OAAO,CA4CtC"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,YAAY,IAAI,OAAO,CAyHtC"}
@@ -1,8 +1,9 @@
1
1
  import { Command } from 'commander';
2
+ import chalk from 'chalk';
2
3
  import { requireClient } from '../client.js';
3
- import { printTable, shortDate } from '../format.js';
4
+ import { printTable, printRecord, shortDate, isJsonMode } from '../format.js';
4
5
  export function auditCommand() {
5
- const cmd = new Command('audit').description('View the audit log');
6
+ const cmd = new Command('audit').description('View and manage the audit log');
6
7
  cmd
7
8
  .command('list')
8
9
  .description('List audit entries')
@@ -28,7 +29,68 @@ export function auditCommand() {
28
29
  ACTION: e.action,
29
30
  STATUS: e.status,
30
31
  TIMESTAMP: shortDate(e.timestamp),
31
- })), ['ID', 'AGENT', 'ACTION', 'STATUS', 'TIMESTAMP']);
32
+ })), ['ID', 'AGENT', 'ACTION', 'STATUS', 'TIMESTAMP'], entries.map((e) => ({ ...e })));
33
+ });
34
+ cmd
35
+ .command('get <entryId>')
36
+ .description('Get a single audit entry by ID')
37
+ .action(async (entryId) => {
38
+ const client = await requireClient();
39
+ const entry = await client.audit.get(entryId);
40
+ if (isJsonMode()) {
41
+ console.log(JSON.stringify(entry, null, 2));
42
+ return;
43
+ }
44
+ printRecord({
45
+ entryId: entry.entryId,
46
+ agentId: entry.agentId,
47
+ agentDid: entry.agentDid ?? '',
48
+ grantId: entry.grantId ?? '',
49
+ principalId: entry.principalId ?? '',
50
+ action: entry.action,
51
+ status: entry.status,
52
+ hash: entry.hash ?? '',
53
+ previousHash: entry.prevHash ?? '',
54
+ timestamp: shortDate(entry.timestamp),
55
+ metadata: JSON.stringify(entry.metadata ?? {}),
56
+ });
57
+ });
58
+ cmd
59
+ .command('log')
60
+ .description('Log a new audit entry')
61
+ .requiredOption('--agent-id <agentId>', 'Agent ID')
62
+ .requiredOption('--agent-did <agentDid>', 'Agent DID (e.g. did:grantex:ag_...)')
63
+ .requiredOption('--grant-id <grantId>', 'Grant ID')
64
+ .requiredOption('--principal-id <principalId>', 'Principal ID')
65
+ .requiredOption('--action <action>', 'Action name (e.g. email.read, payment.initiated)')
66
+ .option('--status <status>', 'Status: success, failure, or blocked')
67
+ .option('--metadata <json>', 'JSON metadata object')
68
+ .action(async (opts) => {
69
+ const client = await requireClient();
70
+ let metadata;
71
+ if (opts.metadata !== undefined) {
72
+ try {
73
+ metadata = JSON.parse(opts.metadata);
74
+ }
75
+ catch {
76
+ console.error('Error: --metadata must be valid JSON.');
77
+ process.exit(1);
78
+ }
79
+ }
80
+ const entry = await client.audit.log({
81
+ agentId: opts.agentId,
82
+ agentDid: opts.agentDid,
83
+ grantId: opts.grantId,
84
+ principalId: opts.principalId,
85
+ action: opts.action,
86
+ ...(opts.status !== undefined ? { status: opts.status } : {}),
87
+ ...(metadata !== undefined ? { metadata } : {}),
88
+ });
89
+ if (isJsonMode()) {
90
+ console.log(JSON.stringify(entry, null, 2));
91
+ return;
92
+ }
93
+ console.log(chalk.green('✓') + ` Audit entry logged: ${entry.entryId}`);
32
94
  });
33
95
  return cmd;
34
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAEnE,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SACjD,MAAM,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;SAC5D,MAAM,CACL,KAAK,EAAE,IAON,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC;QACH,UAAU,CACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,EAAE,EAAE,CAAC,CAAC,OAAO;YACb,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC,EACH,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CACjD,CAAC;IACJ,CAAC,CACF,CAAC;IAEJ,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function authorizeCommand(): Command;
3
+ //# sourceMappingURL=authorize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/commands/authorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,gBAAgB,IAAI,OAAO,CAiD1C"}
@@ -0,0 +1,42 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireClient } from '../client.js';
4
+ import { printRecord, shortDate, isJsonMode } from '../format.js';
5
+ export function authorizeCommand() {
6
+ const cmd = new Command('authorize').description('Start an authorization request');
7
+ cmd
8
+ .requiredOption('--agent <agentId>', 'Agent ID to authorize')
9
+ .requiredOption('--principal <principalId>', 'Principal (user) identifier')
10
+ .requiredOption('--scopes <scopes>', 'Comma-separated scopes to request')
11
+ .option('--redirect-uri <uri>', 'Redirect URI for callback')
12
+ .option('--expires-in <duration>', 'Expiry duration (e.g. 1h, 24h)')
13
+ .option('--code-challenge <challenge>', 'PKCE S256 code challenge')
14
+ .action(async (opts) => {
15
+ const client = await requireClient();
16
+ const res = await client.authorize({
17
+ agentId: opts.agent,
18
+ userId: opts.principal,
19
+ scopes: opts.scopes.split(',').map((s) => s.trim()),
20
+ ...(opts.redirectUri !== undefined ? { redirectUri: opts.redirectUri } : {}),
21
+ ...(opts.expiresIn !== undefined ? { expiresIn: opts.expiresIn } : {}),
22
+ ...(opts.codeChallenge !== undefined ? { codeChallenge: opts.codeChallenge, codeChallengeMethod: 'S256' } : {}),
23
+ });
24
+ if (isJsonMode()) {
25
+ console.log(JSON.stringify(res, null, 2));
26
+ return;
27
+ }
28
+ console.log(chalk.green('✓') + ` Authorization request created.`);
29
+ const display = {
30
+ authRequestId: res.authRequestId,
31
+ consentUrl: res.consentUrl,
32
+ expiresAt: shortDate(res.expiresAt),
33
+ };
34
+ if ('code' in res && res.code) {
35
+ display.code = res.code;
36
+ console.log(chalk.yellow(' (sandbox auto-approved — code returned directly)'));
37
+ }
38
+ printRecord(display);
39
+ });
40
+ return cmd;
41
+ }
42
+ //# sourceMappingURL=authorize.js.map