@aaronsb/kg-cli 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +112 -0
  2. package/dist/api/client.d.ts +867 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +1362 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/cli/admin/backup.d.ts +9 -0
  7. package/dist/cli/admin/backup.d.ts.map +1 -0
  8. package/dist/cli/admin/backup.js +363 -0
  9. package/dist/cli/admin/backup.js.map +1 -0
  10. package/dist/cli/admin/index.d.ts +7 -0
  11. package/dist/cli/admin/index.d.ts.map +1 -0
  12. package/dist/cli/admin/index.js +52 -0
  13. package/dist/cli/admin/index.js.map +1 -0
  14. package/dist/cli/admin/scheduler.d.ts +7 -0
  15. package/dist/cli/admin/scheduler.d.ts.map +1 -0
  16. package/dist/cli/admin/scheduler.js +125 -0
  17. package/dist/cli/admin/scheduler.js.map +1 -0
  18. package/dist/cli/admin/status.d.ts +7 -0
  19. package/dist/cli/admin/status.d.ts.map +1 -0
  20. package/dist/cli/admin/status.js +134 -0
  21. package/dist/cli/admin/status.js.map +1 -0
  22. package/dist/cli/admin/utils.d.ts +34 -0
  23. package/dist/cli/admin/utils.d.ts.map +1 -0
  24. package/dist/cli/admin/utils.js +441 -0
  25. package/dist/cli/admin/utils.js.map +1 -0
  26. package/dist/cli/ai-config/embedding.d.ts +11 -0
  27. package/dist/cli/ai-config/embedding.d.ts.map +1 -0
  28. package/dist/cli/ai-config/embedding.js +598 -0
  29. package/dist/cli/ai-config/embedding.js.map +1 -0
  30. package/dist/cli/ai-config/extraction.d.ts +11 -0
  31. package/dist/cli/ai-config/extraction.d.ts.map +1 -0
  32. package/dist/cli/ai-config/extraction.js +206 -0
  33. package/dist/cli/ai-config/extraction.js.map +1 -0
  34. package/dist/cli/ai-config/index.d.ts +21 -0
  35. package/dist/cli/ai-config/index.d.ts.map +1 -0
  36. package/dist/cli/ai-config/index.js +27 -0
  37. package/dist/cli/ai-config/index.js.map +1 -0
  38. package/dist/cli/ai-config/keys.d.ts +11 -0
  39. package/dist/cli/ai-config/keys.d.ts.map +1 -0
  40. package/dist/cli/ai-config/keys.js +182 -0
  41. package/dist/cli/ai-config/keys.js.map +1 -0
  42. package/dist/cli/ai-config/utils.d.ts +13 -0
  43. package/dist/cli/ai-config/utils.d.ts.map +1 -0
  44. package/dist/cli/ai-config/utils.js +84 -0
  45. package/dist/cli/ai-config/utils.js.map +1 -0
  46. package/dist/cli/artifact.d.ts +8 -0
  47. package/dist/cli/artifact.d.ts.map +1 -0
  48. package/dist/cli/artifact.js +296 -0
  49. package/dist/cli/artifact.js.map +1 -0
  50. package/dist/cli/auth-admin.d.ts +11 -0
  51. package/dist/cli/auth-admin.d.ts.map +1 -0
  52. package/dist/cli/auth-admin.js +415 -0
  53. package/dist/cli/auth-admin.js.map +1 -0
  54. package/dist/cli/colors.d.ts +105 -0
  55. package/dist/cli/colors.d.ts.map +1 -0
  56. package/dist/cli/colors.js +164 -0
  57. package/dist/cli/colors.js.map +1 -0
  58. package/dist/cli/commands.d.ts +6 -0
  59. package/dist/cli/commands.d.ts.map +1 -0
  60. package/dist/cli/commands.js +164 -0
  61. package/dist/cli/commands.js.map +1 -0
  62. package/dist/cli/config.d.ts +6 -0
  63. package/dist/cli/config.d.ts.map +1 -0
  64. package/dist/cli/config.js +694 -0
  65. package/dist/cli/config.js.map +1 -0
  66. package/dist/cli/curve-viz.d.ts +89 -0
  67. package/dist/cli/curve-viz.d.ts.map +1 -0
  68. package/dist/cli/curve-viz.js +228 -0
  69. package/dist/cli/curve-viz.js.map +1 -0
  70. package/dist/cli/database.d.ts +6 -0
  71. package/dist/cli/database.d.ts.map +1 -0
  72. package/dist/cli/database.js +324 -0
  73. package/dist/cli/database.js.map +1 -0
  74. package/dist/cli/document.d.ts +6 -0
  75. package/dist/cli/document.d.ts.map +1 -0
  76. package/dist/cli/document.js +458 -0
  77. package/dist/cli/document.js.map +1 -0
  78. package/dist/cli/group.d.ts +8 -0
  79. package/dist/cli/group.d.ts.map +1 -0
  80. package/dist/cli/group.js +174 -0
  81. package/dist/cli/group.js.map +1 -0
  82. package/dist/cli/health.d.ts +6 -0
  83. package/dist/cli/health.d.ts.map +1 -0
  84. package/dist/cli/health.js +34 -0
  85. package/dist/cli/health.js.map +1 -0
  86. package/dist/cli/help-formatter.d.ts +16 -0
  87. package/dist/cli/help-formatter.d.ts.map +1 -0
  88. package/dist/cli/help-formatter.js +248 -0
  89. package/dist/cli/help-formatter.js.map +1 -0
  90. package/dist/cli/help.d.ts +9 -0
  91. package/dist/cli/help.d.ts.map +1 -0
  92. package/dist/cli/help.js +227 -0
  93. package/dist/cli/help.js.map +1 -0
  94. package/dist/cli/ingest.d.ts +6 -0
  95. package/dist/cli/ingest.d.ts.map +1 -0
  96. package/dist/cli/ingest.js +722 -0
  97. package/dist/cli/ingest.js.map +1 -0
  98. package/dist/cli/jobs.d.ts +6 -0
  99. package/dist/cli/jobs.d.ts.map +1 -0
  100. package/dist/cli/jobs.js +663 -0
  101. package/dist/cli/jobs.js.map +1 -0
  102. package/dist/cli/login.d.ts +21 -0
  103. package/dist/cli/login.d.ts.map +1 -0
  104. package/dist/cli/login.js +221 -0
  105. package/dist/cli/login.js.map +1 -0
  106. package/dist/cli/logout.d.ts +16 -0
  107. package/dist/cli/logout.d.ts.map +1 -0
  108. package/dist/cli/logout.js +141 -0
  109. package/dist/cli/logout.js.map +1 -0
  110. package/dist/cli/mcp-config.d.ts +10 -0
  111. package/dist/cli/mcp-config.d.ts.map +1 -0
  112. package/dist/cli/mcp-config.js +358 -0
  113. package/dist/cli/mcp-config.js.map +1 -0
  114. package/dist/cli/oauth.d.ts +15 -0
  115. package/dist/cli/oauth.d.ts.map +1 -0
  116. package/dist/cli/oauth.js +296 -0
  117. package/dist/cli/oauth.js.map +1 -0
  118. package/dist/cli/ontology.d.ts +6 -0
  119. package/dist/cli/ontology.d.ts.map +1 -0
  120. package/dist/cli/ontology.js +231 -0
  121. package/dist/cli/ontology.js.map +1 -0
  122. package/dist/cli/polarity.d.ts +6 -0
  123. package/dist/cli/polarity.d.ts.map +1 -0
  124. package/dist/cli/polarity.js +295 -0
  125. package/dist/cli/polarity.js.map +1 -0
  126. package/dist/cli/projection.d.ts +8 -0
  127. package/dist/cli/projection.d.ts.map +1 -0
  128. package/dist/cli/projection.js +297 -0
  129. package/dist/cli/projection.js.map +1 -0
  130. package/dist/cli/query-def.d.ts +8 -0
  131. package/dist/cli/query-def.d.ts.map +1 -0
  132. package/dist/cli/query-def.js +163 -0
  133. package/dist/cli/query-def.js.map +1 -0
  134. package/dist/cli/rbac.d.ts +12 -0
  135. package/dist/cli/rbac.d.ts.map +1 -0
  136. package/dist/cli/rbac.js +615 -0
  137. package/dist/cli/rbac.js.map +1 -0
  138. package/dist/cli/search.d.ts +6 -0
  139. package/dist/cli/search.d.ts.map +1 -0
  140. package/dist/cli/search.js +829 -0
  141. package/dist/cli/search.js.map +1 -0
  142. package/dist/cli/source.d.ts +6 -0
  143. package/dist/cli/source.d.ts.map +1 -0
  144. package/dist/cli/source.js +202 -0
  145. package/dist/cli/source.js.map +1 -0
  146. package/dist/cli/verb-router.d.ts +25 -0
  147. package/dist/cli/verb-router.d.ts.map +1 -0
  148. package/dist/cli/verb-router.js +415 -0
  149. package/dist/cli/verb-router.js.map +1 -0
  150. package/dist/cli/vocabulary/config.d.ts +7 -0
  151. package/dist/cli/vocabulary/config.d.ts.map +1 -0
  152. package/dist/cli/vocabulary/config.js +201 -0
  153. package/dist/cli/vocabulary/config.js.map +1 -0
  154. package/dist/cli/vocabulary/consolidate.d.ts +8 -0
  155. package/dist/cli/vocabulary/consolidate.d.ts.map +1 -0
  156. package/dist/cli/vocabulary/consolidate.js +192 -0
  157. package/dist/cli/vocabulary/consolidate.js.map +1 -0
  158. package/dist/cli/vocabulary/embeddings.d.ts +9 -0
  159. package/dist/cli/vocabulary/embeddings.d.ts.map +1 -0
  160. package/dist/cli/vocabulary/embeddings.js +205 -0
  161. package/dist/cli/vocabulary/embeddings.js.map +1 -0
  162. package/dist/cli/vocabulary/epistemic.d.ts +7 -0
  163. package/dist/cli/vocabulary/epistemic.d.ts.map +1 -0
  164. package/dist/cli/vocabulary/epistemic.js +315 -0
  165. package/dist/cli/vocabulary/epistemic.js.map +1 -0
  166. package/dist/cli/vocabulary/index.d.ts +7 -0
  167. package/dist/cli/vocabulary/index.d.ts.map +1 -0
  168. package/dist/cli/vocabulary/index.js +45 -0
  169. package/dist/cli/vocabulary/index.js.map +1 -0
  170. package/dist/cli/vocabulary/profiles.d.ts +7 -0
  171. package/dist/cli/vocabulary/profiles.d.ts.map +1 -0
  172. package/dist/cli/vocabulary/profiles.js +171 -0
  173. package/dist/cli/vocabulary/profiles.js.map +1 -0
  174. package/dist/cli/vocabulary/similarity.d.ts +9 -0
  175. package/dist/cli/vocabulary/similarity.d.ts.map +1 -0
  176. package/dist/cli/vocabulary/similarity.js +199 -0
  177. package/dist/cli/vocabulary/similarity.js.map +1 -0
  178. package/dist/cli/vocabulary/status.d.ts +8 -0
  179. package/dist/cli/vocabulary/status.d.ts.map +1 -0
  180. package/dist/cli/vocabulary/status.js +280 -0
  181. package/dist/cli/vocabulary/status.js.map +1 -0
  182. package/dist/cli/vocabulary/sync.d.ts +7 -0
  183. package/dist/cli/vocabulary/sync.d.ts.map +1 -0
  184. package/dist/cli/vocabulary/sync.js +111 -0
  185. package/dist/cli/vocabulary/sync.js.map +1 -0
  186. package/dist/index.d.ts +9 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +16 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/lib/auth/auth-client.d.ts +247 -0
  191. package/dist/lib/auth/auth-client.d.ts.map +1 -0
  192. package/dist/lib/auth/auth-client.js +305 -0
  193. package/dist/lib/auth/auth-client.js.map +1 -0
  194. package/dist/lib/auth/challenge.d.ts +39 -0
  195. package/dist/lib/auth/challenge.d.ts.map +1 -0
  196. package/dist/lib/auth/challenge.js +125 -0
  197. package/dist/lib/auth/challenge.js.map +1 -0
  198. package/dist/lib/auth/client-credentials-flow.d.ts +58 -0
  199. package/dist/lib/auth/client-credentials-flow.d.ts.map +1 -0
  200. package/dist/lib/auth/client-credentials-flow.js +118 -0
  201. package/dist/lib/auth/client-credentials-flow.js.map +1 -0
  202. package/dist/lib/auth/device-flow.d.ts +75 -0
  203. package/dist/lib/auth/device-flow.d.ts.map +1 -0
  204. package/dist/lib/auth/device-flow.js +177 -0
  205. package/dist/lib/auth/device-flow.js.map +1 -0
  206. package/dist/lib/auth/index.d.ts +14 -0
  207. package/dist/lib/auth/index.d.ts.map +1 -0
  208. package/dist/lib/auth/index.js +34 -0
  209. package/dist/lib/auth/index.js.map +1 -0
  210. package/dist/lib/auth/oauth-types.d.ts +69 -0
  211. package/dist/lib/auth/oauth-types.d.ts.map +1 -0
  212. package/dist/lib/auth/oauth-types.js +10 -0
  213. package/dist/lib/auth/oauth-types.js.map +1 -0
  214. package/dist/lib/auth/oauth-utils.d.ts +51 -0
  215. package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
  216. package/dist/lib/auth/oauth-utils.js +110 -0
  217. package/dist/lib/auth/oauth-utils.js.map +1 -0
  218. package/dist/lib/auth/token-manager.d.ts +87 -0
  219. package/dist/lib/auth/token-manager.d.ts.map +1 -0
  220. package/dist/lib/auth/token-manager.js +139 -0
  221. package/dist/lib/auth/token-manager.js.map +1 -0
  222. package/dist/lib/auth/token-refresh.d.ts +63 -0
  223. package/dist/lib/auth/token-refresh.d.ts.map +1 -0
  224. package/dist/lib/auth/token-refresh.js +141 -0
  225. package/dist/lib/auth/token-refresh.js.map +1 -0
  226. package/dist/lib/config.d.ts +286 -0
  227. package/dist/lib/config.d.ts.map +1 -0
  228. package/dist/lib/config.js +537 -0
  229. package/dist/lib/config.js.map +1 -0
  230. package/dist/lib/job-stream.d.ts +53 -0
  231. package/dist/lib/job-stream.d.ts.map +1 -0
  232. package/dist/lib/job-stream.js +153 -0
  233. package/dist/lib/job-stream.js.map +1 -0
  234. package/dist/lib/mcp-allowlist.d.ts +101 -0
  235. package/dist/lib/mcp-allowlist.d.ts.map +1 -0
  236. package/dist/lib/mcp-allowlist.js +340 -0
  237. package/dist/lib/mcp-allowlist.js.map +1 -0
  238. package/dist/lib/table-example.d.ts +7 -0
  239. package/dist/lib/table-example.d.ts.map +1 -0
  240. package/dist/lib/table-example.js +105 -0
  241. package/dist/lib/table-example.js.map +1 -0
  242. package/dist/lib/table.d.ts +95 -0
  243. package/dist/lib/table.d.ts.map +1 -0
  244. package/dist/lib/table.js +263 -0
  245. package/dist/lib/table.js.map +1 -0
  246. package/dist/lib/terminal-images.d.ts +66 -0
  247. package/dist/lib/terminal-images.d.ts.map +1 -0
  248. package/dist/lib/terminal-images.js +268 -0
  249. package/dist/lib/terminal-images.js.map +1 -0
  250. package/dist/mcp/formatters.d.ts +100 -0
  251. package/dist/mcp/formatters.d.ts.map +1 -0
  252. package/dist/mcp/formatters.js +1411 -0
  253. package/dist/mcp/formatters.js.map +1 -0
  254. package/dist/mcp-server.d.ts +9 -0
  255. package/dist/mcp-server.d.ts.map +1 -0
  256. package/dist/mcp-server.js +1810 -0
  257. package/dist/mcp-server.js.map +1 -0
  258. package/dist/types/index.d.ts +742 -0
  259. package/dist/types/index.d.ts.map +1 -0
  260. package/dist/types/index.js +6 -0
  261. package/dist/types/index.js.map +1 -0
  262. package/dist/version.d.ts +10 -0
  263. package/dist/version.d.ts.map +1 -0
  264. package/dist/version.js +13 -0
  265. package/dist/version.js.map +1 -0
  266. package/package.json +84 -0
@@ -0,0 +1,615 @@
1
+ "use strict";
2
+ /**
3
+ * RBAC Management CLI Commands (ADR-028)
4
+ *
5
+ * Commands for managing roles, permissions, and resource types in the dynamic RBAC system.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.createRbacCommand = createRbacCommand;
42
+ const commander_1 = require("commander");
43
+ const colors = __importStar(require("./colors"));
44
+ const table_1 = require("../lib/table");
45
+ const colors_1 = require("./colors");
46
+ /**
47
+ * Create RBAC management subcommand for admin
48
+ */
49
+ function createRbacCommand(client) {
50
+ const rbac = new commander_1.Command('rbac')
51
+ .description('Manage roles, permissions, and access control (ADR-028)');
52
+ // ========== Resource Commands ==========
53
+ const resource = new commander_1.Command('resource')
54
+ .alias('resources') // Plural alias
55
+ .alias('res') // Short alias
56
+ .description('Manage resource types');
57
+ resource
58
+ .command('list')
59
+ .description('List all registered resource types')
60
+ .action(async () => {
61
+ try {
62
+ const resourceList = await client.listResources();
63
+ if (resourceList.length === 0) {
64
+ console.log(colors.status.dim('\nNo resources registered\n'));
65
+ return;
66
+ }
67
+ const table = new table_1.Table({
68
+ columns: [
69
+ {
70
+ header: 'Resource Type',
71
+ field: 'resource_type',
72
+ type: 'heading',
73
+ width: 'auto',
74
+ },
75
+ {
76
+ header: 'Description',
77
+ field: 'description',
78
+ type: 'text',
79
+ width: 'auto',
80
+ maxWidth: 35,
81
+ truncate: true,
82
+ customFormat: (desc) => desc || '-',
83
+ },
84
+ {
85
+ header: 'Actions',
86
+ field: (r) => r.available_actions.join(', '),
87
+ type: 'value',
88
+ width: 'flex',
89
+ priority: 2,
90
+ },
91
+ {
92
+ header: 'Scoping',
93
+ field: (r) => r.supports_scoping ? 'Yes' : 'No',
94
+ type: 'text',
95
+ width: 'auto',
96
+ },
97
+ ],
98
+ spacing: 2,
99
+ showHeader: true,
100
+ showSeparator: true,
101
+ });
102
+ table.print(resourceList);
103
+ }
104
+ catch (error) {
105
+ console.error(colors.status.error('\n✗ Failed to list resources'));
106
+ if (error.response?.status === 401 || error.response?.status === 403) {
107
+ console.error(colors.status.warning(' Requires admin or curator role\n'));
108
+ }
109
+ else {
110
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
111
+ }
112
+ process.exit(1);
113
+ }
114
+ });
115
+ resource
116
+ .command('create')
117
+ .description('Register a new resource type')
118
+ .requiredOption('-t, --type <type>', 'Resource type name')
119
+ .requiredOption('-a, --actions <actions...>', 'Available actions (space-separated)')
120
+ .option('-d, --description <desc>', 'Resource description')
121
+ .option('-p, --parent <parent>', 'Parent resource type')
122
+ .option('-s, --scoping', 'Enable instance scoping', false)
123
+ .action(async (options) => {
124
+ try {
125
+ const resource = {
126
+ resource_type: options.type,
127
+ description: options.description,
128
+ parent_type: options.parent,
129
+ available_actions: options.actions,
130
+ supports_scoping: options.scoping,
131
+ metadata: {},
132
+ };
133
+ const created = await client.createResource(resource);
134
+ console.log(colors.status.success('\n✓ Resource type created'));
135
+ console.log(` Type: ${colors.ui.value(created.resource_type)}`);
136
+ console.log(` Actions: ${created.available_actions.join(', ')}`);
137
+ console.log(` Registered by: ${created.registered_by || 'system'}\n`);
138
+ }
139
+ catch (error) {
140
+ console.error(colors.status.error('\n✗ Failed to create resource type'));
141
+ if (error.response?.status === 401 || error.response?.status === 403) {
142
+ console.error(colors.status.warning(' Requires admin role\n'));
143
+ }
144
+ else if (error.response?.status === 409) {
145
+ console.error(` Resource type '${options.type}' already exists\n`);
146
+ }
147
+ else {
148
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
149
+ }
150
+ process.exit(1);
151
+ }
152
+ });
153
+ rbac.addCommand(resource);
154
+ // ========== Role Commands ==========
155
+ const role = new commander_1.Command('role')
156
+ .alias('roles') // Plural alias
157
+ .description('Manage roles');
158
+ role
159
+ .command('list')
160
+ .description('List all roles')
161
+ .option('--all', 'Include inactive roles', false)
162
+ .action(async (options) => {
163
+ try {
164
+ const roleList = await client.listRoles(options.all);
165
+ if (roleList.length === 0) {
166
+ console.log(colors.status.dim('\nNo roles found\n'));
167
+ return;
168
+ }
169
+ const table = new table_1.Table({
170
+ columns: [
171
+ {
172
+ header: 'Role Name',
173
+ field: 'role_name',
174
+ type: 'heading',
175
+ width: 'flex',
176
+ priority: 2,
177
+ },
178
+ {
179
+ header: 'Display Name',
180
+ field: 'display_name',
181
+ type: 'value',
182
+ width: 'flex',
183
+ priority: 1,
184
+ },
185
+ {
186
+ header: 'Active',
187
+ field: (r) => r.is_active,
188
+ type: 'text',
189
+ width: 8,
190
+ customFormat: (active) => active ? '●' : '○',
191
+ },
192
+ {
193
+ header: 'Builtin',
194
+ field: (r) => r.is_builtin ? 'Yes' : 'No',
195
+ type: 'text',
196
+ width: 8,
197
+ },
198
+ {
199
+ header: 'Parent',
200
+ field: 'parent_role',
201
+ type: 'text',
202
+ width: 'auto',
203
+ customFormat: (p) => p || '-',
204
+ },
205
+ ],
206
+ spacing: 2,
207
+ showHeader: true,
208
+ showSeparator: true,
209
+ });
210
+ table.print(roleList);
211
+ }
212
+ catch (error) {
213
+ console.error(colors.status.error('\n✗ Failed to list roles'));
214
+ if (error.response?.status === 401 || error.response?.status === 403) {
215
+ console.error(colors.status.warning(' Requires admin or curator role\n'));
216
+ }
217
+ else {
218
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
219
+ }
220
+ process.exit(1);
221
+ }
222
+ });
223
+ role
224
+ .command('show <role>')
225
+ .description('Show role details')
226
+ .action(async (roleName) => {
227
+ try {
228
+ const role = await client.getRole(roleName);
229
+ const permissions = await client.listPermissions(roleName);
230
+ console.log('\n' + (0, colors_1.separator)());
231
+ console.log(colors.ui.title(`Role: ${role.display_name}`));
232
+ console.log((0, colors_1.separator)());
233
+ console.log(`\n ${colors.ui.key('ID:')} ${colors.ui.value(role.role_name)}`);
234
+ if (role.description) {
235
+ console.log(` ${colors.ui.key('Description:')} ${role.description}`);
236
+ }
237
+ console.log(` ${colors.ui.key('Status:')} ${role.is_active ? colors.status.success('Active') : colors.status.dim('Inactive')}`);
238
+ console.log(` ${colors.ui.key('Builtin:')} ${role.is_builtin ? 'Yes' : 'No'}`);
239
+ if (role.parent_role) {
240
+ console.log(` ${colors.ui.key('Inherits from:')} ${colors.ui.value(role.parent_role)}`);
241
+ }
242
+ console.log(` ${colors.ui.key('Created:')} ${new Date(role.created_at).toLocaleString()}`);
243
+ if (permissions.length > 0) {
244
+ console.log(`\n${colors.ui.header('Permissions')} (${permissions.length}):`);
245
+ for (const perm of permissions) {
246
+ const grantIcon = perm.granted ? colors.status.success('✓') : colors.status.error('✗');
247
+ console.log(` ${grantIcon} ${perm.action} on ${colors.ui.value(perm.resource_type)} (${perm.scope_type})`);
248
+ }
249
+ }
250
+ console.log('\n' + (0, colors_1.separator)() + '\n');
251
+ }
252
+ catch (error) {
253
+ console.error(colors.status.error('\n✗ Failed to get role details'));
254
+ if (error.response?.status === 404) {
255
+ console.error(` Role '${roleName}' not found\n`);
256
+ }
257
+ else if (error.response?.status === 401 || error.response?.status === 403) {
258
+ console.error(colors.status.warning(' Requires admin or curator role\n'));
259
+ }
260
+ else {
261
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
262
+ }
263
+ process.exit(1);
264
+ }
265
+ });
266
+ role
267
+ .command('create')
268
+ .description('Create a new role')
269
+ .requiredOption('-n, --name <name>', 'Role name (e.g., data_scientist)')
270
+ .requiredOption('-d, --display <display>', 'Display name')
271
+ .option('--description <desc>', 'Role description')
272
+ .option('-p, --parent <parent>', 'Parent role to inherit from')
273
+ .action(async (options) => {
274
+ try {
275
+ const role = {
276
+ role_name: options.name,
277
+ display_name: options.display,
278
+ description: options.description,
279
+ parent_role: options.parent,
280
+ metadata: {},
281
+ };
282
+ const created = await client.createRole(role);
283
+ console.log(colors.status.success('\n✓ Role created'));
284
+ console.log(` Name: ${colors.ui.value(created.role_name)}`);
285
+ console.log(` Display: ${created.display_name}`);
286
+ if (created.parent_role) {
287
+ console.log(` Inherits from: ${created.parent_role}`);
288
+ }
289
+ console.log();
290
+ }
291
+ catch (error) {
292
+ console.error(colors.status.error('\n✗ Failed to create role'));
293
+ if (error.response?.status === 401 || error.response?.status === 403) {
294
+ console.error(colors.status.warning(' Requires admin role\n'));
295
+ }
296
+ else if (error.response?.status === 409) {
297
+ console.error(` Role '${options.name}' already exists\n`);
298
+ }
299
+ else {
300
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
301
+ }
302
+ process.exit(1);
303
+ }
304
+ });
305
+ role
306
+ .command('delete <role>')
307
+ .description('Delete a role')
308
+ .option('--force', 'Skip confirmation', false)
309
+ .action(async (roleName, options) => {
310
+ try {
311
+ // Confirm deletion unless --force
312
+ if (!options.force) {
313
+ const readline = require('readline').createInterface({
314
+ input: process.stdin,
315
+ output: process.stdout,
316
+ });
317
+ await new Promise((resolve, reject) => {
318
+ readline.question(colors.status.warning(`\n⚠ Delete role '${roleName}'? This cannot be undone. [y/N]: `), (answer) => {
319
+ readline.close();
320
+ if (answer.toLowerCase() !== 'y') {
321
+ console.log('Cancelled\n');
322
+ process.exit(0);
323
+ }
324
+ resolve();
325
+ });
326
+ });
327
+ }
328
+ await client.deleteRole(roleName);
329
+ console.log(colors.status.success(`\n✓ Role '${roleName}' deleted\n`));
330
+ }
331
+ catch (error) {
332
+ console.error(colors.status.error('\n✗ Failed to delete role'));
333
+ if (error.response?.status === 404) {
334
+ console.error(` Role '${roleName}' not found\n`);
335
+ }
336
+ else if (error.response?.status === 403) {
337
+ console.error(' Cannot delete builtin roles or roles with users\n');
338
+ }
339
+ else if (error.response?.status === 409) {
340
+ console.error(' Cannot delete role with assigned users\n');
341
+ }
342
+ else {
343
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
344
+ }
345
+ process.exit(1);
346
+ }
347
+ });
348
+ rbac.addCommand(role);
349
+ // ========== Permission Commands ==========
350
+ const permission = new commander_1.Command('permission')
351
+ .alias('permissions') // Plural alias
352
+ .alias('perm') // Short alias
353
+ .description('Manage permissions');
354
+ permission
355
+ .command('list')
356
+ .description('List permissions')
357
+ .option('-r, --role <role>', 'Filter by role name')
358
+ .option('-t, --resource-type <type>', 'Filter by resource type')
359
+ .action(async (options) => {
360
+ try {
361
+ const permList = await client.listPermissions(options.role, options.resourceType);
362
+ if (permList.length === 0) {
363
+ console.log(colors.status.dim('\nNo permissions found\n'));
364
+ return;
365
+ }
366
+ const table = new table_1.Table({
367
+ columns: [
368
+ {
369
+ header: 'Role',
370
+ field: 'role_name',
371
+ type: 'heading',
372
+ width: 'flex',
373
+ priority: 1,
374
+ },
375
+ {
376
+ header: 'Action',
377
+ field: 'action',
378
+ type: 'value',
379
+ width: 'auto',
380
+ },
381
+ {
382
+ header: 'Resource',
383
+ field: 'resource_type',
384
+ type: 'heading',
385
+ width: 'flex',
386
+ priority: 2,
387
+ },
388
+ {
389
+ header: 'Scope',
390
+ field: 'scope_type',
391
+ type: 'text',
392
+ width: 12,
393
+ },
394
+ {
395
+ header: 'Granted',
396
+ field: (p) => p.granted,
397
+ type: 'text',
398
+ width: 8,
399
+ customFormat: (granted) => granted ? '✓' : '✗',
400
+ },
401
+ ],
402
+ spacing: 2,
403
+ showHeader: true,
404
+ showSeparator: true,
405
+ });
406
+ table.print(permList);
407
+ }
408
+ catch (error) {
409
+ console.error(colors.status.error('\n✗ Failed to list permissions'));
410
+ if (error.response?.status === 401 || error.response?.status === 403) {
411
+ console.error(colors.status.warning(' Requires admin or curator role\n'));
412
+ }
413
+ else {
414
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
415
+ }
416
+ process.exit(1);
417
+ }
418
+ });
419
+ permission
420
+ .command('grant')
421
+ .description('Grant a permission to a role')
422
+ .requiredOption('-r, --role <role>', 'Role name')
423
+ .requiredOption('-t, --resource-type <type>', 'Resource type')
424
+ .requiredOption('-a, --action <action>', 'Action (read, write, delete, etc.)')
425
+ .option('-s, --scope <scope>', 'Scope type (global, instance, filter)', 'global')
426
+ .option('--scope-id <id>', 'Scope ID for instance scoping')
427
+ .option('--deny', 'Create explicit deny (default is grant)', false)
428
+ .action(async (options) => {
429
+ try {
430
+ const permission = {
431
+ role_name: options.role,
432
+ resource_type: options.resourceType,
433
+ action: options.action,
434
+ scope_type: options.scope,
435
+ scope_id: options.scopeId,
436
+ granted: !options.deny,
437
+ };
438
+ const created = await client.createPermission(permission);
439
+ const grantType = created.granted ? 'granted' : 'denied';
440
+ console.log(colors.status.success(`\n✓ Permission ${grantType}`));
441
+ console.log(` Role: ${created.role_name}`);
442
+ console.log(` Action: ${created.action} on ${created.resource_type}`);
443
+ console.log(` Scope: ${created.scope_type}\n`);
444
+ }
445
+ catch (error) {
446
+ console.error(colors.status.error('\n✗ Failed to grant permission'));
447
+ if (error.response?.status === 401 || error.response?.status === 403) {
448
+ console.error(colors.status.warning(' Requires admin role\n'));
449
+ }
450
+ else if (error.response?.status === 404) {
451
+ console.error(' Role or resource type not found\n');
452
+ }
453
+ else if (error.response?.status === 409) {
454
+ console.error(' Permission already exists with this scope\n');
455
+ }
456
+ else {
457
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
458
+ }
459
+ process.exit(1);
460
+ }
461
+ });
462
+ permission
463
+ .command('revoke <permission-id>')
464
+ .description('Revoke a permission (use permission ID from list)')
465
+ .action(async (permissionId) => {
466
+ try {
467
+ await client.deletePermission(parseInt(permissionId));
468
+ console.log(colors.status.success(`\n✓ Permission revoked\n`));
469
+ }
470
+ catch (error) {
471
+ console.error(colors.status.error('\n✗ Failed to revoke permission'));
472
+ if (error.response?.status === 404) {
473
+ console.error(` Permission ${permissionId} not found\n`);
474
+ }
475
+ else if (error.response?.status === 401 || error.response?.status === 403) {
476
+ console.error(colors.status.warning(' Requires admin role\n'));
477
+ }
478
+ else {
479
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
480
+ }
481
+ process.exit(1);
482
+ }
483
+ });
484
+ rbac.addCommand(permission);
485
+ // ========== User Role Assignment Commands ==========
486
+ const userRoles = new commander_1.Command('assign')
487
+ .description('Assign roles to users');
488
+ userRoles
489
+ .command('list <user-id>')
490
+ .description('List role assignments for a user')
491
+ .action(async (userId) => {
492
+ try {
493
+ const assignments = await client.listUserRoles(parseInt(userId));
494
+ if (assignments.length === 0) {
495
+ console.log(colors.status.dim(`\nNo role assignments for user ${userId}\n`));
496
+ return;
497
+ }
498
+ const table = new table_1.Table({
499
+ columns: [
500
+ {
501
+ header: 'Role',
502
+ field: 'role_name',
503
+ type: 'heading',
504
+ width: 'flex',
505
+ priority: 2,
506
+ },
507
+ {
508
+ header: 'Scope Type',
509
+ field: 'scope_type',
510
+ type: 'text',
511
+ width: 'auto',
512
+ customFormat: (s) => s || 'global',
513
+ },
514
+ {
515
+ header: 'Scope ID',
516
+ field: 'scope_id',
517
+ type: 'value',
518
+ width: 'auto',
519
+ customFormat: (id) => id || '-',
520
+ },
521
+ {
522
+ header: 'Assigned',
523
+ field: 'assigned_at',
524
+ type: 'timestamp',
525
+ width: 18,
526
+ },
527
+ {
528
+ header: 'Expires',
529
+ field: 'expires_at',
530
+ type: 'timestamp',
531
+ width: 18,
532
+ customFormat: (exp) => exp ? new Date(exp).toLocaleString() : 'Never',
533
+ },
534
+ ],
535
+ spacing: 2,
536
+ showHeader: true,
537
+ showSeparator: true,
538
+ });
539
+ table.print(assignments);
540
+ }
541
+ catch (error) {
542
+ console.error(colors.status.error('\n✗ Failed to list user roles'));
543
+ if (error.response?.status === 401 || error.response?.status === 403) {
544
+ console.error(colors.status.warning(' Requires admin or curator role\n'));
545
+ }
546
+ else {
547
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
548
+ }
549
+ process.exit(1);
550
+ }
551
+ });
552
+ userRoles
553
+ .command('add')
554
+ .description('Assign a role to a user')
555
+ .requiredOption('-u, --user-id <id>', 'User ID')
556
+ .requiredOption('-r, --role <role>', 'Role name')
557
+ .option('-s, --scope <scope>', 'Scope type (global, workspace, ontology, etc.)', 'global')
558
+ .option('--scope-id <id>', 'Scope ID (e.g., workspace ID)')
559
+ .action(async (options) => {
560
+ try {
561
+ const assignment = {
562
+ user_id: parseInt(options.userId),
563
+ role_name: options.role,
564
+ scope_type: options.scope,
565
+ scope_id: options.scopeId,
566
+ };
567
+ const created = await client.assignUserRole(assignment);
568
+ console.log(colors.status.success('\n✓ Role assigned'));
569
+ console.log(` User: ${created.user_id}`);
570
+ console.log(` Role: ${created.role_name}`);
571
+ console.log(` Scope: ${created.scope_type || 'global'}\n`);
572
+ }
573
+ catch (error) {
574
+ console.error(colors.status.error('\n✗ Failed to assign role'));
575
+ if (error.response?.status === 401 || error.response?.status === 403) {
576
+ console.error(colors.status.warning(' Requires admin role\n'));
577
+ }
578
+ else if (error.response?.status === 404) {
579
+ console.error(' User or role not found\n');
580
+ }
581
+ else if (error.response?.status === 409) {
582
+ console.error(' User already has this role assignment\n');
583
+ }
584
+ else {
585
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
586
+ }
587
+ process.exit(1);
588
+ }
589
+ });
590
+ userRoles
591
+ .command('remove <assignment-id>')
592
+ .description('Remove a role assignment (use assignment ID from list)')
593
+ .action(async (assignmentId) => {
594
+ try {
595
+ await client.revokeUserRole(parseInt(assignmentId));
596
+ console.log(colors.status.success(`\n✓ Role assignment removed\n`));
597
+ }
598
+ catch (error) {
599
+ console.error(colors.status.error('\n✗ Failed to remove role assignment'));
600
+ if (error.response?.status === 404) {
601
+ console.error(` Assignment ${assignmentId} not found\n`);
602
+ }
603
+ else if (error.response?.status === 401 || error.response?.status === 403) {
604
+ console.error(colors.status.warning(' Requires admin role\n'));
605
+ }
606
+ else {
607
+ console.error(` ${error.response?.data?.detail || error.message}\n`);
608
+ }
609
+ process.exit(1);
610
+ }
611
+ });
612
+ rbac.addCommand(userRoles);
613
+ return rbac;
614
+ }
615
+ //# sourceMappingURL=rbac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/cli/rbac.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Search and Query Commands
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const searchCommand: Command;
6
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuuBpC,eAAO,MAAM,aAAa,SA0HG,CAAC"}