@grantex/cli 0.1.1 → 0.1.3

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 CHANGED
@@ -1,9 +1,11 @@
1
1
  # @grantex/cli
2
2
 
3
- Command-line tool for the [Grantex](https://github.com/mishrasanjeev/grantex) delegated authorization protocol.
3
+ Command-line tool for the [Grantex](https://grantex.dev) delegated authorization protocol.
4
4
 
5
5
  Manage agents, grants, audit logs, webhooks, policies, anomalies, and compliance exports from your terminal.
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)**
8
+
7
9
  ## Install
8
10
 
9
11
  ```bash
@@ -119,6 +121,16 @@ grantex config set --url http://localhost:3001 --key dev-api-key-local
119
121
  - [Self-Hosting Guide](https://github.com/mishrasanjeev/grantex/blob/main/docs/self-hosting.md)
120
122
  - [Developer Portal](https://grantex.dev/dashboard)
121
123
 
124
+ ## Grantex Ecosystem
125
+
126
+ This package is part of the [Grantex](https://grantex.dev) ecosystem. See also:
127
+
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
133
+
122
134
  ## License
123
135
 
124
136
  Apache 2.0
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function billingCommand(): Command;
3
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,cAAc,IAAI,OAAO,CA4CxC"}
@@ -0,0 +1,46 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireClient } from '../client.js';
4
+ import { printRecord } from '../format.js';
5
+ export function billingCommand() {
6
+ const cmd = new Command('billing').description('Manage subscription and billing');
7
+ cmd
8
+ .command('status')
9
+ .description('Show current subscription status')
10
+ .action(async () => {
11
+ const client = await requireClient();
12
+ const sub = await client.billing.getSubscription();
13
+ printRecord({
14
+ plan: sub.plan,
15
+ status: sub.status,
16
+ currentPeriodEnd: sub.currentPeriodEnd ?? '—',
17
+ });
18
+ });
19
+ cmd
20
+ .command('checkout <plan>')
21
+ .description('Create a checkout session for a plan (pro or enterprise)')
22
+ .requiredOption('--success-url <url>', 'Redirect URL after successful payment')
23
+ .requiredOption('--cancel-url <url>', 'Redirect URL if user cancels')
24
+ .action(async (plan, opts) => {
25
+ const client = await requireClient();
26
+ const { checkoutUrl } = await client.billing.createCheckout({
27
+ plan: plan,
28
+ successUrl: opts.successUrl,
29
+ cancelUrl: opts.cancelUrl,
30
+ });
31
+ console.log(chalk.green('✓') + ' Checkout URL:');
32
+ console.log(checkoutUrl);
33
+ });
34
+ cmd
35
+ .command('portal')
36
+ .description('Create a billing portal session')
37
+ .requiredOption('--return-url <url>', 'URL to return to after portal session')
38
+ .action(async (opts) => {
39
+ const client = await requireClient();
40
+ const { portalUrl } = await client.billing.createPortal({ returnUrl: opts.returnUrl });
41
+ console.log(chalk.green('✓') + ' Portal URL:');
42
+ console.log(portalUrl);
43
+ });
44
+ return cmd;
45
+ }
46
+ //# sourceMappingURL=billing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElF,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACnD,WAAW,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,GAAG;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,0DAA0D,CAAC;SACvE,cAAc,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;SAC9E,cAAc,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA+C,EAAE,EAAE;QAC9E,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;YAC1D,IAAI,EAAE,IAA4B;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,cAAc,CAAC,oBAAoB,EAAE,uCAAuC,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,IAA2B,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,IAAI,OAAO,CAsCvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,IAAI,OAAO,CAuCvC"}
@@ -25,7 +25,8 @@ export function configCommand() {
25
25
  process.exit(1);
26
26
  }
27
27
  console.log(`URL ${config.baseUrl}`);
28
- console.log(`API key ${config.apiKey}`);
28
+ const prefix = config.apiKey.startsWith('gx_test_') ? 'gx_test_' : 'gx_live_';
29
+ console.log(`API key ${prefix}${'*'.repeat(8)}`);
29
30
  if (process.env['GRANTEX_URL'] || process.env['GRANTEX_KEY']) {
30
31
  console.log(chalk.dim('(env vars take precedence over config file)'));
31
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExF,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAE1E,GAAG;SACA,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,wCAAwC,CAAC;SACrD,cAAc,CAAC,aAAa,EAAE,oDAAoD,CAAC;SACnF,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAkC,EAAE,EAAE;QACnD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oBAAoB,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC7B,sDAAsD,CACzD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExF,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAE1E,GAAG;SACA,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,wCAAwC,CAAC;SACrD,cAAc,CAAC,aAAa,EAAE,oDAAoD,CAAC;SACnF,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,IAAkC,EAAE,EAAE;QACnD,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACvC,MAAM,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oBAAoB,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC7B,sDAAsD,CACzD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAElD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function policiesCommand(): Command;
3
+ //# sourceMappingURL=policies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/commands/policies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,eAAe,IAAI,OAAO,CAsGzC"}
@@ -0,0 +1,90 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireClient } from '../client.js';
4
+ import { printTable, printRecord, shortDate } from '../format.js';
5
+ export function policiesCommand() {
6
+ const cmd = new Command('policies').description('Manage authorization policies');
7
+ cmd
8
+ .command('list')
9
+ .description('List all policies')
10
+ .action(async () => {
11
+ const client = await requireClient();
12
+ const { policies } = await client.policies.list();
13
+ printTable(policies.map((p) => ({
14
+ ID: p.id,
15
+ NAME: p.name,
16
+ EFFECT: p.effect,
17
+ PRIORITY: String(p.priority),
18
+ CREATED: shortDate(p.createdAt),
19
+ })), ['ID', 'NAME', 'EFFECT', 'PRIORITY', 'CREATED']);
20
+ });
21
+ cmd
22
+ .command('get <policyId>')
23
+ .description('Get details for a policy')
24
+ .action(async (policyId) => {
25
+ const client = await requireClient();
26
+ const p = await client.policies.get(policyId);
27
+ printRecord({
28
+ id: p.id,
29
+ name: p.name,
30
+ effect: p.effect,
31
+ priority: String(p.priority),
32
+ agentId: p.agentId ?? '(any)',
33
+ principalId: p.principalId ?? '(any)',
34
+ scopes: p.scopes?.join(', ') ?? '(any)',
35
+ timeOfDayStart: p.timeOfDayStart ?? '—',
36
+ timeOfDayEnd: p.timeOfDayEnd ?? '—',
37
+ createdAt: shortDate(p.createdAt),
38
+ });
39
+ });
40
+ cmd
41
+ .command('create')
42
+ .description('Create a new policy')
43
+ .requiredOption('--name <name>', 'Policy name')
44
+ .requiredOption('--effect <effect>', 'Effect: allow or deny')
45
+ .option('--priority <n>', 'Priority (lower = higher priority)', '100')
46
+ .option('--agent-id <id>', 'Restrict to specific agent')
47
+ .option('--principal-id <id>', 'Restrict to specific principal')
48
+ .option('--scopes <scopes>', 'Comma-separated scopes')
49
+ .option('--time-start <HH:mm>', 'Time-of-day window start')
50
+ .option('--time-end <HH:mm>', 'Time-of-day window end')
51
+ .action(async (opts) => {
52
+ const client = await requireClient();
53
+ const policy = await client.policies.create({
54
+ name: opts.name,
55
+ effect: opts.effect,
56
+ priority: parseInt(opts.priority, 10),
57
+ ...(opts.agentId !== undefined ? { agentId: opts.agentId } : {}),
58
+ ...(opts.principalId !== undefined ? { principalId: opts.principalId } : {}),
59
+ ...(opts.scopes !== undefined ? { scopes: opts.scopes.split(',').map((s) => s.trim()) } : {}),
60
+ ...(opts.timeStart !== undefined ? { timeOfDayStart: opts.timeStart } : {}),
61
+ ...(opts.timeEnd !== undefined ? { timeOfDayEnd: opts.timeEnd } : {}),
62
+ });
63
+ console.log(chalk.green('✓') + ` Policy created: ${policy.id}`);
64
+ });
65
+ cmd
66
+ .command('update <policyId>')
67
+ .description('Update a policy')
68
+ .option('--name <name>', 'New name')
69
+ .option('--effect <effect>', 'New effect')
70
+ .option('--priority <n>', 'New priority')
71
+ .action(async (policyId, opts) => {
72
+ const client = await requireClient();
73
+ const policy = await client.policies.update(policyId, {
74
+ ...(opts.name !== undefined ? { name: opts.name } : {}),
75
+ ...(opts.effect !== undefined ? { effect: opts.effect } : {}),
76
+ ...(opts.priority !== undefined ? { priority: parseInt(opts.priority, 10) } : {}),
77
+ });
78
+ console.log(chalk.green('✓') + ` Policy updated: ${policy.id}`);
79
+ });
80
+ cmd
81
+ .command('delete <policyId>')
82
+ .description('Delete a policy')
83
+ .action(async (policyId) => {
84
+ const client = await requireClient();
85
+ await client.policies.delete(policyId);
86
+ console.log(chalk.green('✓') + ` Policy ${policyId} deleted.`);
87
+ });
88
+ return cmd;
89
+ }
90
+ //# sourceMappingURL=policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/commands/policies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function scimCommand(): Command;
3
+ //# sourceMappingURL=scim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scim.d.ts","sourceRoot":"","sources":["../../src/commands/scim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,WAAW,IAAI,OAAO,CAwFrC"}
@@ -0,0 +1,78 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireClient } from '../client.js';
4
+ import { printTable, printRecord, shortDate } from '../format.js';
5
+ export function scimCommand() {
6
+ const cmd = new Command('scim').description('Manage SCIM provisioning');
7
+ // ── scim tokens ──────────────────────────────────────────────────────────
8
+ const tokens = new Command('tokens').description('Manage SCIM bearer tokens');
9
+ tokens
10
+ .command('list')
11
+ .description('List SCIM tokens')
12
+ .action(async () => {
13
+ const client = await requireClient();
14
+ const { tokens: list } = await client.scim.listTokens();
15
+ printTable(list.map((t) => ({
16
+ ID: t.id,
17
+ LABEL: t.label,
18
+ CREATED: shortDate(t.createdAt),
19
+ 'LAST USED': t.lastUsedAt ? shortDate(t.lastUsedAt) : '—',
20
+ })), ['ID', 'LABEL', 'CREATED', 'LAST USED']);
21
+ });
22
+ tokens
23
+ .command('create')
24
+ .description('Create a new SCIM token')
25
+ .requiredOption('--label <label>', 'Human-readable label')
26
+ .action(async (opts) => {
27
+ const client = await requireClient();
28
+ const result = await client.scim.createToken({ label: opts.label });
29
+ console.log(chalk.green('✓') + ` SCIM token created: ${result.id}`);
30
+ console.log(`Token: ${chalk.bold(result.token)} (shown once — store it securely)`);
31
+ });
32
+ tokens
33
+ .command('revoke <tokenId>')
34
+ .description('Revoke a SCIM token')
35
+ .action(async (tokenId) => {
36
+ const client = await requireClient();
37
+ await client.scim.revokeToken(tokenId);
38
+ console.log(chalk.green('✓') + ` SCIM token ${tokenId} revoked.`);
39
+ });
40
+ cmd.addCommand(tokens);
41
+ // ── scim users ───────────────────────────────────────────────────────────
42
+ const users = new Command('users').description('View SCIM-provisioned users');
43
+ users
44
+ .command('list')
45
+ .description('List SCIM users')
46
+ .option('--start-index <n>', 'Start index', '1')
47
+ .option('--count <n>', 'Page size', '25')
48
+ .action(async (opts) => {
49
+ const client = await requireClient();
50
+ const result = await client.scim.listUsers({
51
+ startIndex: parseInt(opts.startIndex, 10),
52
+ count: parseInt(opts.count, 10),
53
+ });
54
+ printTable(result.Resources.map((u) => ({
55
+ ID: u.id,
56
+ USERNAME: u.userName,
57
+ DISPLAY: u.displayName ?? '—',
58
+ ACTIVE: u.active ? 'yes' : 'no',
59
+ })), ['ID', 'USERNAME', 'DISPLAY', 'ACTIVE']);
60
+ });
61
+ users
62
+ .command('get <userId>')
63
+ .description('Get a SCIM user by ID')
64
+ .action(async (userId) => {
65
+ const client = await requireClient();
66
+ const u = await client.scim.getUser(userId);
67
+ printRecord({
68
+ id: u.id,
69
+ userName: u.userName,
70
+ displayName: u.displayName ?? '—',
71
+ active: u.active ? 'yes' : 'no',
72
+ emails: u.emails.map((e) => e.value).join(', ') || '—',
73
+ });
74
+ });
75
+ cmd.addCommand(users);
76
+ return cmd;
77
+ }
78
+ //# sourceMappingURL=scim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scim.js","sourceRoot":"","sources":["../../src/commands/scim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function ssoCommand(): Command;
3
+ //# sourceMappingURL=sso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../src/commands/sso.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,UAAU,IAAI,OAAO,CAsDpC"}
@@ -0,0 +1,55 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { requireClient } from '../client.js';
4
+ import { printRecord, shortDate } from '../format.js';
5
+ export function ssoCommand() {
6
+ const cmd = new Command('sso').description('Manage SSO configuration');
7
+ cmd
8
+ .command('get')
9
+ .description('Show current SSO configuration')
10
+ .action(async () => {
11
+ const client = await requireClient();
12
+ const config = await client.sso.getConfig();
13
+ printRecord({
14
+ issuerUrl: config.issuerUrl,
15
+ clientId: config.clientId,
16
+ redirectUri: config.redirectUri,
17
+ updatedAt: shortDate(config.updatedAt),
18
+ });
19
+ });
20
+ cmd
21
+ .command('configure')
22
+ .description('Create or update SSO configuration')
23
+ .requiredOption('--issuer-url <url>', 'OIDC issuer URL')
24
+ .requiredOption('--client-id <id>', 'OIDC client ID')
25
+ .requiredOption('--client-secret <secret>', 'OIDC client secret')
26
+ .requiredOption('--redirect-uri <uri>', 'Callback redirect URI')
27
+ .action(async (opts) => {
28
+ const client = await requireClient();
29
+ await client.sso.createConfig({
30
+ issuerUrl: opts.issuerUrl,
31
+ clientId: opts.clientId,
32
+ clientSecret: opts.clientSecret,
33
+ redirectUri: opts.redirectUri,
34
+ });
35
+ console.log(chalk.green('✓') + ' SSO configuration saved.');
36
+ });
37
+ cmd
38
+ .command('delete')
39
+ .description('Delete SSO configuration')
40
+ .action(async () => {
41
+ const client = await requireClient();
42
+ await client.sso.deleteConfig();
43
+ console.log(chalk.green('✓') + ' SSO configuration deleted.');
44
+ });
45
+ cmd
46
+ .command('login-url <org>')
47
+ .description('Get the SSO login URL for an organization')
48
+ .action(async (org) => {
49
+ const client = await requireClient();
50
+ const { authorizeUrl } = await client.sso.getLoginUrl(org);
51
+ console.log(authorizeUrl);
52
+ });
53
+ return cmd;
54
+ }
55
+ //# sourceMappingURL=sso.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso.js","sourceRoot":"","sources":["../../src/commands/sso.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAEvE,GAAG;SACA,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC5C,WAAW,CAAC;YACV,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,oCAAoC,CAAC;SACjD,cAAc,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;SACvD,cAAc,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SACpD,cAAc,CAAC,0BAA0B,EAAE,oBAAoB,CAAC;SAChE,cAAc,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,IAAwF,EAAE,EAAE;QACzG,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,2BAA2B,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,6BAA6B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/index.js CHANGED
@@ -8,6 +8,10 @@ import { configCommand } from './commands/config.js';
8
8
  import { grantsCommand } from './commands/grants.js';
9
9
  import { tokensCommand } from './commands/tokens.js';
10
10
  import { webhooksCommand } from './commands/webhooks.js';
11
+ import { policiesCommand } from './commands/policies.js';
12
+ import { billingCommand } from './commands/billing.js';
13
+ import { scimCommand } from './commands/scim.js';
14
+ import { ssoCommand } from './commands/sso.js';
11
15
  const program = new Command();
12
16
  program
13
17
  .name('grantex')
@@ -21,6 +25,10 @@ program.addCommand(auditCommand());
21
25
  program.addCommand(webhooksCommand());
22
26
  program.addCommand(complianceCommand());
23
27
  program.addCommand(anomaliesCommand());
28
+ program.addCommand(policiesCommand());
29
+ program.addCommand(billingCommand());
30
+ program.addCommand(scimCommand());
31
+ program.addCommand(ssoCommand());
24
32
  program.parseAsync(process.argv).catch((err) => {
25
33
  console.error((err instanceof Error ? err.message : String(err)));
26
34
  process.exit(1);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEvC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@grantex/cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CLI tool for local Grantex development",
5
+ "homepage": "https://grantex.dev",
6
+ "bugs": {
7
+ "url": "https://github.com/mishrasanjeev/grantex/issues"
8
+ },
5
9
  "type": "module",
6
10
  "bin": {
7
11
  "grantex": "./dist/index.js"
@@ -33,6 +37,15 @@
33
37
  "engines": {
34
38
  "node": ">=18.0.0"
35
39
  },
40
+ "keywords": [
41
+ "grantex",
42
+ "cli",
43
+ "ai-agents",
44
+ "authorization",
45
+ "oauth",
46
+ "jwt",
47
+ "developer-tools"
48
+ ],
36
49
  "license": "Apache-2.0",
37
50
  "repository": {
38
51
  "type": "git",