workos 0.7.3 → 0.8.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.
Files changed (146) hide show
  1. package/README.md +353 -8
  2. package/dist/bin.js +938 -128
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/api-key-mgmt.d.ts +16 -0
  5. package/dist/commands/api-key-mgmt.js +96 -0
  6. package/dist/commands/api-key-mgmt.js.map +1 -0
  7. package/dist/commands/audit-log.d.ts +26 -0
  8. package/dist/commands/audit-log.js +155 -0
  9. package/dist/commands/audit-log.js.map +1 -0
  10. package/dist/commands/config.d.ts +3 -0
  11. package/dist/commands/config.js +54 -0
  12. package/dist/commands/config.js.map +1 -0
  13. package/dist/commands/connection.d.ts +13 -0
  14. package/dist/commands/connection.js +94 -0
  15. package/dist/commands/connection.js.map +1 -0
  16. package/dist/commands/debug-sso.d.ts +1 -0
  17. package/dist/commands/debug-sso.js +78 -0
  18. package/dist/commands/debug-sso.js.map +1 -0
  19. package/dist/commands/debug-sync.d.ts +1 -0
  20. package/dist/commands/debug-sync.js +102 -0
  21. package/dist/commands/debug-sync.js.map +1 -0
  22. package/dist/commands/directory.d.ts +27 -0
  23. package/dist/commands/directory.js +174 -0
  24. package/dist/commands/directory.js.map +1 -0
  25. package/dist/commands/env.js +41 -28
  26. package/dist/commands/env.js.map +1 -1
  27. package/dist/commands/event.d.ts +9 -0
  28. package/dist/commands/event.js +43 -0
  29. package/dist/commands/event.js.map +1 -0
  30. package/dist/commands/feature-flag.d.ts +12 -0
  31. package/dist/commands/feature-flag.js +96 -0
  32. package/dist/commands/feature-flag.js.map +1 -0
  33. package/dist/commands/install.js +13 -20
  34. package/dist/commands/install.js.map +1 -1
  35. package/dist/commands/invitation.d.ts +19 -0
  36. package/dist/commands/invitation.js +94 -0
  37. package/dist/commands/invitation.js.map +1 -0
  38. package/dist/commands/membership.d.ts +20 -0
  39. package/dist/commands/membership.js +129 -0
  40. package/dist/commands/membership.js.map +1 -0
  41. package/dist/commands/onboard-user.d.ts +7 -0
  42. package/dist/commands/onboard-user.js +61 -0
  43. package/dist/commands/onboard-user.js.map +1 -0
  44. package/dist/commands/org-domain.d.ts +4 -0
  45. package/dist/commands/org-domain.js +45 -0
  46. package/dist/commands/org-domain.js.map +1 -0
  47. package/dist/commands/organization.d.ts +1 -5
  48. package/dist/commands/organization.js +34 -73
  49. package/dist/commands/organization.js.map +1 -1
  50. package/dist/commands/permission.d.ts +20 -0
  51. package/dist/commands/permission.js +93 -0
  52. package/dist/commands/permission.js.map +1 -0
  53. package/dist/commands/portal.d.ts +7 -0
  54. package/dist/commands/portal.js +26 -0
  55. package/dist/commands/portal.js.map +1 -0
  56. package/dist/commands/role.d.ts +17 -0
  57. package/dist/commands/role.js +122 -0
  58. package/dist/commands/role.js.map +1 -0
  59. package/dist/commands/seed.d.ts +4 -0
  60. package/dist/commands/seed.js +238 -0
  61. package/dist/commands/seed.js.map +1 -0
  62. package/dist/commands/session.d.ts +8 -0
  63. package/dist/commands/session.js +63 -0
  64. package/dist/commands/session.js.map +1 -0
  65. package/dist/commands/setup-org.d.ts +6 -0
  66. package/dist/commands/setup-org.js +99 -0
  67. package/dist/commands/setup-org.js.map +1 -0
  68. package/dist/commands/user.js +35 -71
  69. package/dist/commands/user.js.map +1 -1
  70. package/dist/commands/vault.d.ts +24 -0
  71. package/dist/commands/vault.js +120 -0
  72. package/dist/commands/vault.js.map +1 -0
  73. package/dist/commands/webhook.d.ts +3 -0
  74. package/dist/commands/webhook.js +73 -0
  75. package/dist/commands/webhook.js.map +1 -0
  76. package/dist/dashboard/components/DiffPanel.js.map +1 -1
  77. package/dist/dashboard/lib/logo-frames.js +1 -1
  78. package/dist/dashboard/lib/logo-frames.js.map +1 -1
  79. package/dist/doctor/checks/dashboard.js.map +1 -1
  80. package/dist/doctor/checks/environment.js.map +1 -1
  81. package/dist/integrations/go/index.js +1 -3
  82. package/dist/integrations/go/index.js.map +1 -1
  83. package/dist/lib/adapters/headless-adapter.d.ts +67 -0
  84. package/dist/lib/adapters/headless-adapter.js +263 -0
  85. package/dist/lib/adapters/headless-adapter.js.map +1 -0
  86. package/dist/lib/adapters/index.d.ts +1 -0
  87. package/dist/lib/adapters/index.js +1 -0
  88. package/dist/lib/adapters/index.js.map +1 -1
  89. package/dist/lib/agent-interface.d.ts +3 -11
  90. package/dist/lib/agent-interface.js +1 -13
  91. package/dist/lib/agent-interface.js.map +1 -1
  92. package/dist/lib/api-error-handler.d.ts +6 -0
  93. package/dist/lib/api-error-handler.js +58 -0
  94. package/dist/lib/api-error-handler.js.map +1 -0
  95. package/dist/lib/api-key.js +5 -1
  96. package/dist/lib/api-key.js.map +1 -1
  97. package/dist/lib/config.js.map +1 -1
  98. package/dist/lib/credential-proxy.js +0 -6
  99. package/dist/lib/credential-proxy.js.map +1 -1
  100. package/dist/lib/device-auth.js +1 -1
  101. package/dist/lib/device-auth.js.map +1 -1
  102. package/dist/lib/ensure-auth.js +25 -4
  103. package/dist/lib/ensure-auth.js.map +1 -1
  104. package/dist/lib/installer-core.d.ts +12 -12
  105. package/dist/lib/run-with-core.js +25 -4
  106. package/dist/lib/run-with-core.js.map +1 -1
  107. package/dist/lib/validation/validator.js +0 -1
  108. package/dist/lib/validation/validator.js.map +1 -1
  109. package/dist/lib/workos-client.d.ts +58 -0
  110. package/dist/lib/workos-client.js +137 -0
  111. package/dist/lib/workos-client.js.map +1 -0
  112. package/dist/run.d.ts +7 -0
  113. package/dist/run.js +5 -2
  114. package/dist/run.js.map +1 -1
  115. package/dist/smoke-test.ts +881 -0
  116. package/dist/steps/run-prettier.js +1 -1
  117. package/dist/steps/run-prettier.js.map +1 -1
  118. package/dist/utils/analytics.d.ts +1 -1
  119. package/dist/utils/analytics.js.map +1 -1
  120. package/dist/utils/clack-utils.js +1 -1
  121. package/dist/utils/clack-utils.js.map +1 -1
  122. package/dist/utils/environment.js +8 -0
  123. package/dist/utils/environment.js.map +1 -1
  124. package/dist/utils/exit-codes.d.ts +22 -0
  125. package/dist/utils/exit-codes.js +30 -0
  126. package/dist/utils/exit-codes.js.map +1 -0
  127. package/dist/utils/help-json.d.ts +45 -0
  128. package/dist/utils/help-json.js +1161 -0
  129. package/dist/utils/help-json.js.map +1 -0
  130. package/dist/utils/ndjson.d.ts +16 -0
  131. package/dist/utils/ndjson.js +18 -0
  132. package/dist/utils/ndjson.js.map +1 -0
  133. package/dist/utils/output.d.ts +40 -0
  134. package/dist/utils/output.js +95 -0
  135. package/dist/utils/output.js.map +1 -0
  136. package/dist/utils/package-manager.js +2 -3
  137. package/dist/utils/package-manager.js.map +1 -1
  138. package/dist/utils/register-subcommand.d.ts +7 -0
  139. package/dist/utils/register-subcommand.js +36 -0
  140. package/dist/utils/register-subcommand.js.map +1 -0
  141. package/dist/utils/telemetry-types.d.ts +1 -1
  142. package/dist/utils/telemetry-types.js.map +1 -1
  143. package/dist/utils/types.d.ts +12 -0
  144. package/dist/utils/types.js.map +1 -1
  145. package/package.json +20 -16
  146. package/skills/workos-management/SKILL.md +250 -0
@@ -1,105 +1,70 @@
1
1
  import chalk from 'chalk';
2
- import { workosRequest, WorkOSApiError } from '../lib/workos-api.js';
2
+ import { createWorkOSClient } from '../lib/workos-client.js';
3
3
  import { formatTable } from '../utils/table.js';
4
+ import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
5
+ import { createApiErrorHandler } from '../lib/api-error-handler.js';
4
6
  export function parseDomainArgs(args) {
5
7
  return args.map((arg) => {
6
8
  const parts = arg.split(':');
7
9
  return {
8
10
  domain: parts[0],
9
- state: parts[1] || 'verified',
11
+ state: (parts[1] || 'verified'),
10
12
  };
11
13
  });
12
14
  }
13
- function handleApiError(error) {
14
- if (error instanceof WorkOSApiError) {
15
- if (error.statusCode === 401) {
16
- console.error(chalk.red('Invalid API key. Check your environment configuration.'));
17
- }
18
- else if (error.statusCode === 404) {
19
- console.error(chalk.red(`Organization not found.`));
20
- }
21
- else if (error.statusCode === 422 && error.errors?.length) {
22
- console.error(chalk.red(error.errors.map((e) => e.message).join(', ')));
23
- }
24
- else {
25
- console.error(chalk.red(error.message));
26
- }
27
- }
28
- else {
29
- console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
30
- }
31
- process.exit(1);
32
- }
15
+ const handleApiError = createApiErrorHandler('Organization');
33
16
  export async function runOrgCreate(name, domainArgs, apiKey, baseUrl) {
34
- const body = { name };
17
+ const client = createWorkOSClient(apiKey, baseUrl);
35
18
  const domains = parseDomainArgs(domainArgs);
36
- if (domains.length > 0) {
37
- body.domain_data = domains;
38
- }
39
19
  try {
40
- const org = await workosRequest({
41
- method: 'POST',
42
- path: '/organizations',
43
- apiKey,
44
- baseUrl,
45
- body,
20
+ const org = await client.sdk.organizations.createOrganization({
21
+ name,
22
+ ...(domains.length > 0 && { domainData: domains }),
46
23
  });
47
- console.log(chalk.green('Created organization'));
48
- console.log(JSON.stringify(org, null, 2));
24
+ outputSuccess('Created organization', org);
49
25
  }
50
26
  catch (error) {
51
27
  handleApiError(error);
52
28
  }
53
29
  }
54
30
  export async function runOrgUpdate(orgId, name, apiKey, domain, state, baseUrl) {
55
- const body = { name };
56
- if (domain) {
57
- body.domain_data = [{ domain, state: state || 'verified' }];
58
- }
31
+ const client = createWorkOSClient(apiKey, baseUrl);
59
32
  try {
60
- const org = await workosRequest({
61
- method: 'PUT',
62
- path: `/organizations/${orgId}`,
63
- apiKey,
64
- baseUrl,
65
- body,
33
+ const org = await client.sdk.organizations.updateOrganization({
34
+ organization: orgId,
35
+ name,
36
+ ...(domain && { domainData: [{ domain, state: (state || 'verified') }] }),
66
37
  });
67
- console.log(chalk.green('Updated organization'));
68
- console.log(JSON.stringify(org, null, 2));
38
+ outputSuccess('Updated organization', org);
69
39
  }
70
40
  catch (error) {
71
41
  handleApiError(error);
72
42
  }
73
43
  }
74
44
  export async function runOrgGet(orgId, apiKey, baseUrl) {
45
+ const client = createWorkOSClient(apiKey, baseUrl);
75
46
  try {
76
- const org = await workosRequest({
77
- method: 'GET',
78
- path: `/organizations/${orgId}`,
79
- apiKey,
80
- baseUrl,
81
- });
82
- console.log(JSON.stringify(org, null, 2));
47
+ const org = await client.sdk.organizations.getOrganization(orgId);
48
+ outputJson(org);
83
49
  }
84
50
  catch (error) {
85
51
  handleApiError(error);
86
52
  }
87
53
  }
88
54
  export async function runOrgList(options, apiKey, baseUrl) {
55
+ const client = createWorkOSClient(apiKey, baseUrl);
89
56
  try {
90
- const result = await workosRequest({
91
- method: 'GET',
92
- path: '/organizations',
93
- apiKey,
94
- baseUrl,
95
- params: {
96
- domains: options.domain,
97
- limit: options.limit,
98
- before: options.before,
99
- after: options.after,
100
- order: options.order,
101
- },
57
+ const result = await client.sdk.organizations.listOrganizations({
58
+ ...(options.domain && { domains: [options.domain] }),
59
+ limit: options.limit,
60
+ before: options.before,
61
+ after: options.after,
62
+ order: options.order,
102
63
  });
64
+ if (isJsonMode()) {
65
+ outputJson({ data: result.data, listMetadata: result.listMetadata });
66
+ return;
67
+ }
103
68
  if (result.data.length === 0) {
104
69
  console.log('No organizations found.');
105
70
  return;
@@ -110,7 +75,7 @@ export async function runOrgList(options, apiKey, baseUrl) {
110
75
  org.domains.map((d) => d.domain).join(', ') || chalk.dim('none'),
111
76
  ]);
112
77
  console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Domains' }], rows));
113
- const { before, after } = result.list_metadata;
78
+ const { before, after } = result.listMetadata;
114
79
  if (before && after) {
115
80
  console.log(chalk.dim(`Before: ${before} After: ${after}`));
116
81
  }
@@ -126,14 +91,10 @@ export async function runOrgList(options, apiKey, baseUrl) {
126
91
  }
127
92
  }
128
93
  export async function runOrgDelete(orgId, apiKey, baseUrl) {
94
+ const client = createWorkOSClient(apiKey, baseUrl);
129
95
  try {
130
- await workosRequest({
131
- method: 'DELETE',
132
- path: `/organizations/${orgId}`,
133
- apiKey,
134
- baseUrl,
135
- });
136
- console.log(chalk.green(`Deleted organization ${orgId}`));
96
+ await client.sdk.organizations.deleteOrganization(orgId);
97
+ outputSuccess('Deleted organization', { id: orgId });
137
98
  }
138
99
  catch (error) {
139
100
  handleApiError(error);
@@ -1 +1 @@
1
- {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/commands/organization.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport { workosRequest, WorkOSApiError } from '../lib/workos-api.js';\nimport type { WorkOSListResponse } from '../lib/workos-api.js';\nimport { formatTable } from '../utils/table.js';\n\ninterface OrganizationDomain {\n id: string;\n domain: string;\n state: 'verified' | 'pending';\n}\n\ninterface Organization {\n id: string;\n name: string;\n domains: OrganizationDomain[];\n created_at: string;\n updated_at: string;\n}\n\ninterface DomainData {\n domain: string;\n state: string;\n}\n\nexport function parseDomainArgs(args: string[]): DomainData[] {\n return args.map((arg) => {\n const parts = arg.split(':');\n return {\n domain: parts[0],\n state: parts[1] || 'verified',\n };\n });\n}\n\nfunction handleApiError(error: unknown): never {\n if (error instanceof WorkOSApiError) {\n if (error.statusCode === 401) {\n console.error(chalk.red('Invalid API key. Check your environment configuration.'));\n } else if (error.statusCode === 404) {\n console.error(chalk.red(`Organization not found.`));\n } else if (error.statusCode === 422 && error.errors?.length) {\n console.error(chalk.red(error.errors.map((e) => e.message).join(', ')));\n } else {\n console.error(chalk.red(error.message));\n }\n } else {\n console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));\n }\n process.exit(1);\n}\n\nexport async function runOrgCreate(\n name: string,\n domainArgs: string[],\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const body: Record<string, unknown> = { name };\n const domains = parseDomainArgs(domainArgs);\n if (domains.length > 0) {\n body.domain_data = domains;\n }\n\n try {\n const org = await workosRequest<Organization>({\n method: 'POST',\n path: '/organizations',\n apiKey,\n baseUrl,\n body,\n });\n console.log(chalk.green('Created organization'));\n console.log(JSON.stringify(org, null, 2));\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgUpdate(\n orgId: string,\n name: string,\n apiKey: string,\n domain?: string,\n state?: string,\n baseUrl?: string,\n): Promise<void> {\n const body: Record<string, unknown> = { name };\n if (domain) {\n body.domain_data = [{ domain, state: state || 'verified' }];\n }\n\n try {\n const org = await workosRequest<Organization>({\n method: 'PUT',\n path: `/organizations/${orgId}`,\n apiKey,\n baseUrl,\n body,\n });\n console.log(chalk.green('Updated organization'));\n console.log(JSON.stringify(org, null, 2));\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgGet(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n try {\n const org = await workosRequest<Organization>({\n method: 'GET',\n path: `/organizations/${orgId}`,\n apiKey,\n baseUrl,\n });\n console.log(JSON.stringify(org, null, 2));\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface OrgListOptions {\n domain?: string;\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runOrgList(options: OrgListOptions, apiKey: string, baseUrl?: string): Promise<void> {\n try {\n const result = await workosRequest<WorkOSListResponse<Organization>>({\n method: 'GET',\n path: '/organizations',\n apiKey,\n baseUrl,\n params: {\n domains: options.domain,\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order,\n },\n });\n\n if (result.data.length === 0) {\n console.log('No organizations found.');\n return;\n }\n\n const rows = result.data.map((org) => [\n org.id,\n org.name,\n org.domains.map((d) => d.domain).join(', ') || chalk.dim('none'),\n ]);\n\n console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Domains' }], rows));\n\n const { before, after } = result.list_metadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgDelete(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n try {\n await workosRequest({\n method: 'DELETE',\n path: `/organizations/${orgId}`,\n apiKey,\n baseUrl,\n });\n console.log(chalk.green(`Deleted organization ${orgId}`));\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/commands/organization.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport type { DomainData } from '@workos-inc/node';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nexport function parseDomainArgs(args: string[]): DomainData[] {\n return args.map((arg) => {\n const parts = arg.split(':');\n return {\n domain: parts[0],\n state: (parts[1] || 'verified') as DomainData['state'],\n };\n });\n}\n\nconst handleApiError = createApiErrorHandler('Organization');\n\nexport async function runOrgCreate(\n name: string,\n domainArgs: string[],\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n const domains = parseDomainArgs(domainArgs);\n\n try {\n const org = await client.sdk.organizations.createOrganization({\n name,\n ...(domains.length > 0 && { domainData: domains }),\n });\n outputSuccess('Created organization', org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgUpdate(\n orgId: string,\n name: string,\n apiKey: string,\n domain?: string,\n state?: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const org = await client.sdk.organizations.updateOrganization({\n organization: orgId,\n name,\n ...(domain && { domainData: [{ domain, state: (state || 'verified') as DomainData['state'] }] }),\n });\n outputSuccess('Updated organization', org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgGet(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const org = await client.sdk.organizations.getOrganization(orgId);\n outputJson(org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface OrgListOptions {\n domain?: string;\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runOrgList(options: OrgListOptions, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.organizations.listOrganizations({\n ...(options.domain && { domains: [options.domain] }),\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order as 'asc' | 'desc' | undefined,\n });\n\n if (isJsonMode()) {\n outputJson({ data: result.data, listMetadata: result.listMetadata });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No organizations found.');\n return;\n }\n\n const rows = result.data.map((org) => [\n org.id,\n org.name,\n org.domains.map((d) => d.domain).join(', ') || chalk.dim('none'),\n ]);\n\n console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Domains' }], rows));\n\n const { before, after } = result.listMetadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgDelete(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.organizations.deleteOrganization(orgId);\n outputSuccess('Deleted organization', { id: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
@@ -0,0 +1,20 @@
1
+ export interface PermissionListOptions {
2
+ limit?: number;
3
+ before?: string;
4
+ after?: string;
5
+ order?: string;
6
+ }
7
+ export declare function runPermissionList(options: PermissionListOptions, apiKey: string, baseUrl?: string): Promise<void>;
8
+ export declare function runPermissionGet(slug: string, apiKey: string, baseUrl?: string): Promise<void>;
9
+ export interface PermissionCreateOptions {
10
+ slug: string;
11
+ name: string;
12
+ description?: string;
13
+ }
14
+ export declare function runPermissionCreate(options: PermissionCreateOptions, apiKey: string, baseUrl?: string): Promise<void>;
15
+ export interface PermissionUpdateOptions {
16
+ name?: string;
17
+ description?: string;
18
+ }
19
+ export declare function runPermissionUpdate(slug: string, options: PermissionUpdateOptions, apiKey: string, baseUrl?: string): Promise<void>;
20
+ export declare function runPermissionDelete(slug: string, apiKey: string, baseUrl?: string): Promise<void>;
@@ -0,0 +1,93 @@
1
+ import chalk from 'chalk';
2
+ import { createWorkOSClient } from '../lib/workos-client.js';
3
+ import { formatTable } from '../utils/table.js';
4
+ import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
5
+ import { createApiErrorHandler } from '../lib/api-error-handler.js';
6
+ const handleApiError = createApiErrorHandler('Permission');
7
+ export async function runPermissionList(options, apiKey, baseUrl) {
8
+ const client = createWorkOSClient(apiKey, baseUrl);
9
+ try {
10
+ const result = await client.sdk.authorization.listPermissions({
11
+ limit: options.limit,
12
+ before: options.before,
13
+ after: options.after,
14
+ order: options.order,
15
+ });
16
+ if (isJsonMode()) {
17
+ outputJson({ data: result.data, listMetadata: result.listMetadata });
18
+ return;
19
+ }
20
+ if (result.data.length === 0) {
21
+ console.log('No permissions found.');
22
+ return;
23
+ }
24
+ const rows = result.data.map((perm) => [
25
+ perm.slug,
26
+ perm.name,
27
+ perm.description || chalk.dim('-'),
28
+ new Date(perm.createdAt).toLocaleDateString(),
29
+ ]);
30
+ console.log(formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Description' }, { header: 'Created' }], rows));
31
+ const { before, after } = result.listMetadata;
32
+ if (before && after) {
33
+ console.log(chalk.dim(`Before: ${before} After: ${after}`));
34
+ }
35
+ else if (before) {
36
+ console.log(chalk.dim(`Before: ${before}`));
37
+ }
38
+ else if (after) {
39
+ console.log(chalk.dim(`After: ${after}`));
40
+ }
41
+ }
42
+ catch (error) {
43
+ handleApiError(error);
44
+ }
45
+ }
46
+ export async function runPermissionGet(slug, apiKey, baseUrl) {
47
+ const client = createWorkOSClient(apiKey, baseUrl);
48
+ try {
49
+ const permission = await client.sdk.authorization.getPermission(slug);
50
+ outputJson(permission);
51
+ }
52
+ catch (error) {
53
+ handleApiError(error);
54
+ }
55
+ }
56
+ export async function runPermissionCreate(options, apiKey, baseUrl) {
57
+ const client = createWorkOSClient(apiKey, baseUrl);
58
+ try {
59
+ const permission = await client.sdk.authorization.createPermission({
60
+ slug: options.slug,
61
+ name: options.name,
62
+ ...(options.description && { description: options.description }),
63
+ });
64
+ outputSuccess('Created permission', permission);
65
+ }
66
+ catch (error) {
67
+ handleApiError(error);
68
+ }
69
+ }
70
+ export async function runPermissionUpdate(slug, options, apiKey, baseUrl) {
71
+ const client = createWorkOSClient(apiKey, baseUrl);
72
+ try {
73
+ const permission = await client.sdk.authorization.updatePermission(slug, {
74
+ ...(options.name !== undefined && { name: options.name }),
75
+ ...(options.description !== undefined && { description: options.description }),
76
+ });
77
+ outputSuccess('Updated permission', permission);
78
+ }
79
+ catch (error) {
80
+ handleApiError(error);
81
+ }
82
+ }
83
+ export async function runPermissionDelete(slug, apiKey, baseUrl) {
84
+ const client = createWorkOSClient(apiKey, baseUrl);
85
+ try {
86
+ await client.sdk.authorization.deletePermission(slug);
87
+ outputSuccess('Deleted permission', { slug });
88
+ }
89
+ catch (error) {
90
+ handleApiError(error);
91
+ }
92
+ }
93
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/commands/permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAS3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8B,EAC9B,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC;YAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAmC;SACnD,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAC9G,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9C,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgB;IACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtE,UAAU,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC,EAChC,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,OAAgC,EAChC,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACvE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;SAC/E,CAAC,CAAC;QACH,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgB;IACtF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtD,aAAa,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Permission');\n\nexport interface PermissionListOptions {\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runPermissionList(\n options: PermissionListOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.authorization.listPermissions({\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order as 'asc' | 'desc' | undefined,\n });\n\n if (isJsonMode()) {\n outputJson({ data: result.data, listMetadata: result.listMetadata });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No permissions found.');\n return;\n }\n\n const rows = result.data.map((perm) => [\n perm.slug,\n perm.name,\n perm.description || chalk.dim('-'),\n new Date(perm.createdAt).toLocaleDateString(),\n ]);\n\n console.log(\n formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Description' }, { header: 'Created' }], rows),\n );\n\n const { before, after } = result.listMetadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runPermissionGet(slug: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.getPermission(slug);\n outputJson(permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface PermissionCreateOptions {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport async function runPermissionCreate(\n options: PermissionCreateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.createPermission({\n slug: options.slug,\n name: options.name,\n ...(options.description && { description: options.description }),\n });\n outputSuccess('Created permission', permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface PermissionUpdateOptions {\n name?: string;\n description?: string;\n}\n\nexport async function runPermissionUpdate(\n slug: string,\n options: PermissionUpdateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.updatePermission(slug, {\n ...(options.name !== undefined && { name: options.name }),\n ...(options.description !== undefined && { description: options.description }),\n });\n outputSuccess('Updated permission', permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runPermissionDelete(slug: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.deletePermission(slug);\n outputSuccess('Deleted permission', { slug });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export interface PortalGenerateOptions {
2
+ intent: string;
3
+ organization: string;
4
+ returnUrl?: string;
5
+ successUrl?: string;
6
+ }
7
+ export declare function runPortalGenerateLink(options: PortalGenerateOptions, apiKey: string, baseUrl?: string): Promise<void>;
@@ -0,0 +1,26 @@
1
+ import chalk from 'chalk';
2
+ import { createWorkOSClient } from '../lib/workos-client.js';
3
+ import { outputJson, isJsonMode } from '../utils/output.js';
4
+ import { createApiErrorHandler } from '../lib/api-error-handler.js';
5
+ const handleApiError = createApiErrorHandler('Portal');
6
+ export async function runPortalGenerateLink(options, apiKey, baseUrl) {
7
+ const client = createWorkOSClient(apiKey, baseUrl);
8
+ try {
9
+ const result = await client.sdk.portal.generateLink({
10
+ intent: options.intent,
11
+ organization: options.organization,
12
+ ...(options.returnUrl && { returnUrl: options.returnUrl }),
13
+ ...(options.successUrl && { successUrl: options.successUrl }),
14
+ });
15
+ if (isJsonMode()) {
16
+ outputJson(result);
17
+ return;
18
+ }
19
+ console.log(result.link);
20
+ console.log(chalk.dim('Note: Portal links expire after 5 minutes.'));
21
+ }
22
+ catch (error) {
23
+ handleApiError(error);
24
+ }
25
+ }
26
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/commands/portal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AASvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B,EAC9B,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YAClD,MAAM,EAAE,OAAO,CAAC,MAAwE;YACxF,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Portal');\n\nexport interface PortalGenerateOptions {\n intent: string;\n organization: string;\n returnUrl?: string;\n successUrl?: string;\n}\n\nexport async function runPortalGenerateLink(\n options: PortalGenerateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.portal.generateLink({\n intent: options.intent as Parameters<typeof client.sdk.portal.generateLink>[0]['intent'],\n organization: options.organization,\n ...(options.returnUrl && { returnUrl: options.returnUrl }),\n ...(options.successUrl && { successUrl: options.successUrl }),\n });\n\n if (isJsonMode()) {\n outputJson(result);\n return;\n }\n\n console.log(result.link);\n console.log(chalk.dim('Note: Portal links expire after 5 minutes.'));\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ export declare function runRoleList(orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
2
+ export declare function runRoleGet(slug: string, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
3
+ export interface RoleCreateOptions {
4
+ slug: string;
5
+ name: string;
6
+ description?: string;
7
+ }
8
+ export declare function runRoleCreate(options: RoleCreateOptions, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
9
+ export interface RoleUpdateOptions {
10
+ name?: string;
11
+ description?: string;
12
+ }
13
+ export declare function runRoleUpdate(slug: string, options: RoleUpdateOptions, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
14
+ export declare function runRoleDelete(slug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void>;
15
+ export declare function runRoleSetPermissions(slug: string, permissions: string[], orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
16
+ export declare function runRoleAddPermission(slug: string, permissionSlug: string, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
17
+ export declare function runRoleRemovePermission(slug: string, permissionSlug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void>;
@@ -0,0 +1,122 @@
1
+ import { createWorkOSClient } from '../lib/workos-client.js';
2
+ import { formatTable } from '../utils/table.js';
3
+ import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
4
+ import { createApiErrorHandler } from '../lib/api-error-handler.js';
5
+ const handleApiError = createApiErrorHandler('Role');
6
+ export async function runRoleList(orgId, apiKey, baseUrl) {
7
+ const client = createWorkOSClient(apiKey, baseUrl);
8
+ try {
9
+ const result = orgId
10
+ ? await client.sdk.authorization.listOrganizationRoles(orgId)
11
+ : await client.sdk.authorization.listEnvironmentRoles();
12
+ if (isJsonMode()) {
13
+ outputJson({ data: result.data });
14
+ return;
15
+ }
16
+ if (result.data.length === 0) {
17
+ console.log('No roles found.');
18
+ return;
19
+ }
20
+ const rows = result.data.map((role) => [
21
+ role.slug,
22
+ role.name,
23
+ role.type,
24
+ String(role.permissions.length),
25
+ new Date(role.createdAt).toLocaleDateString(),
26
+ ]);
27
+ console.log(formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Type' }, { header: 'Permissions' }, { header: 'Created' }], rows));
28
+ }
29
+ catch (error) {
30
+ handleApiError(error);
31
+ }
32
+ }
33
+ export async function runRoleGet(slug, orgId, apiKey, baseUrl) {
34
+ const client = createWorkOSClient(apiKey, baseUrl);
35
+ try {
36
+ const role = orgId
37
+ ? await client.sdk.authorization.getOrganizationRole(orgId, slug)
38
+ : await client.sdk.authorization.getEnvironmentRole(slug);
39
+ outputJson(role);
40
+ }
41
+ catch (error) {
42
+ handleApiError(error);
43
+ }
44
+ }
45
+ export async function runRoleCreate(options, orgId, apiKey, baseUrl) {
46
+ const client = createWorkOSClient(apiKey, baseUrl);
47
+ const opts = {
48
+ slug: options.slug,
49
+ name: options.name,
50
+ ...(options.description && { description: options.description }),
51
+ };
52
+ try {
53
+ const role = orgId
54
+ ? await client.sdk.authorization.createOrganizationRole(orgId, opts)
55
+ : await client.sdk.authorization.createEnvironmentRole(opts);
56
+ outputSuccess('Created role', role);
57
+ }
58
+ catch (error) {
59
+ handleApiError(error);
60
+ }
61
+ }
62
+ export async function runRoleUpdate(slug, options, orgId, apiKey, baseUrl) {
63
+ const client = createWorkOSClient(apiKey, baseUrl);
64
+ const opts = {
65
+ ...(options.name !== undefined && { name: options.name }),
66
+ ...(options.description !== undefined && { description: options.description }),
67
+ };
68
+ try {
69
+ const role = orgId
70
+ ? await client.sdk.authorization.updateOrganizationRole(orgId, slug, opts)
71
+ : await client.sdk.authorization.updateEnvironmentRole(slug, opts);
72
+ outputSuccess('Updated role', role);
73
+ }
74
+ catch (error) {
75
+ handleApiError(error);
76
+ }
77
+ }
78
+ export async function runRoleDelete(slug, orgId, apiKey, baseUrl) {
79
+ const client = createWorkOSClient(apiKey, baseUrl);
80
+ try {
81
+ await client.sdk.authorization.deleteOrganizationRole(orgId, slug);
82
+ outputSuccess('Deleted role', { slug, organizationId: orgId });
83
+ }
84
+ catch (error) {
85
+ handleApiError(error);
86
+ }
87
+ }
88
+ export async function runRoleSetPermissions(slug, permissions, orgId, apiKey, baseUrl) {
89
+ const client = createWorkOSClient(apiKey, baseUrl);
90
+ try {
91
+ const role = orgId
92
+ ? await client.sdk.authorization.setOrganizationRolePermissions(orgId, slug, { permissions })
93
+ : await client.sdk.authorization.setEnvironmentRolePermissions(slug, { permissions });
94
+ outputSuccess('Set permissions on role', role);
95
+ }
96
+ catch (error) {
97
+ handleApiError(error);
98
+ }
99
+ }
100
+ export async function runRoleAddPermission(slug, permissionSlug, orgId, apiKey, baseUrl) {
101
+ const client = createWorkOSClient(apiKey, baseUrl);
102
+ try {
103
+ const role = orgId
104
+ ? await client.sdk.authorization.addOrganizationRolePermission(orgId, slug, { permissionSlug })
105
+ : await client.sdk.authorization.addEnvironmentRolePermission(slug, { permissionSlug });
106
+ outputSuccess('Added permission to role', role);
107
+ }
108
+ catch (error) {
109
+ handleApiError(error);
110
+ }
111
+ }
112
+ export async function runRoleRemovePermission(slug, permissionSlug, orgId, apiKey, baseUrl) {
113
+ const client = createWorkOSClient(apiKey, baseUrl);
114
+ try {
115
+ await client.sdk.authorization.removeOrganizationRolePermission(orgId, slug, { permissionSlug });
116
+ outputSuccess('Removed permission from role', { slug, permissionSlug, organizationId: orgId });
117
+ }
118
+ catch (error) {
119
+ handleApiError(error);
120
+ }
121
+ }
122
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"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","sourcesContent":["import { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Role');\n\nexport async function runRoleList(orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = orgId\n ? await client.sdk.authorization.listOrganizationRoles(orgId)\n : await client.sdk.authorization.listEnvironmentRoles();\n\n if (isJsonMode()) {\n outputJson({ data: result.data });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No roles found.');\n return;\n }\n\n const rows = result.data.map((role) => [\n role.slug,\n role.name,\n role.type,\n String(role.permissions.length),\n new Date(role.createdAt).toLocaleDateString(),\n ]);\n\n console.log(\n formatTable(\n [{ header: 'Slug' }, { header: 'Name' }, { header: 'Type' }, { header: 'Permissions' }, { header: 'Created' }],\n rows,\n ),\n );\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleGet(\n slug: string,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.getOrganizationRole(orgId, slug)\n : await client.sdk.authorization.getEnvironmentRole(slug);\n outputJson(role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface RoleCreateOptions {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport async function runRoleCreate(\n options: RoleCreateOptions,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n const opts = {\n slug: options.slug,\n name: options.name,\n ...(options.description && { description: options.description }),\n };\n\n try {\n const role = orgId\n ? await client.sdk.authorization.createOrganizationRole(orgId, opts)\n : await client.sdk.authorization.createEnvironmentRole(opts);\n outputSuccess('Created role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface RoleUpdateOptions {\n name?: string;\n description?: string;\n}\n\nexport async function runRoleUpdate(\n slug: string,\n options: RoleUpdateOptions,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n const opts = {\n ...(options.name !== undefined && { name: options.name }),\n ...(options.description !== undefined && { description: options.description }),\n };\n\n try {\n const role = orgId\n ? await client.sdk.authorization.updateOrganizationRole(orgId, slug, opts)\n : await client.sdk.authorization.updateEnvironmentRole(slug, opts);\n outputSuccess('Updated role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleDelete(slug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.deleteOrganizationRole(orgId, slug);\n outputSuccess('Deleted role', { slug, organizationId: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleSetPermissions(\n slug: string,\n permissions: string[],\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.setOrganizationRolePermissions(orgId, slug, { permissions })\n : await client.sdk.authorization.setEnvironmentRolePermissions(slug, { permissions });\n outputSuccess('Set permissions on role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleAddPermission(\n slug: string,\n permissionSlug: string,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.addOrganizationRolePermission(orgId, slug, { permissionSlug })\n : await client.sdk.authorization.addEnvironmentRolePermission(slug, { permissionSlug });\n outputSuccess('Added permission to role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleRemovePermission(\n slug: string,\n permissionSlug: string,\n orgId: string,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.removeOrganizationRolePermission(orgId, slug, { permissionSlug });\n outputSuccess('Removed permission from role', { slug, permissionSlug, organizationId: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare function runSeed(options: {
2
+ file?: string;
3
+ clean?: boolean;
4
+ }, apiKey: string, baseUrl?: string): Promise<void>;