@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,415 @@
1
+ "use strict";
2
+ /**
3
+ * Verb Router - Unix-style command shortcuts
4
+ *
5
+ * Provides Unix-familiar verbs (ls, rm, stat, cat) that delegate to
6
+ * primary noun→verb commands.
7
+ *
8
+ * Examples:
9
+ * kg ls job → kg job list
10
+ * kg rm job 123 → kg job cancel 123
11
+ * kg stat database → kg database stats
12
+ * kg cat concept X → kg search details X
13
+ *
14
+ * Architecture: Clean delegation with no business logic
15
+ * See: ADR-029 - CLI Theory of Operation
16
+ *
17
+ * User-configurable aliases:
18
+ * Commands can have user-defined aliases via config.aliases
19
+ * Example: config.aliases.cat = ['bat'] allows 'kg bat' as alias for 'kg cat'
20
+ */
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.createVerbRouter = createVerbRouter;
56
+ const commander_1 = require("commander");
57
+ const colors = __importStar(require("./colors"));
58
+ const config_1 = require("../lib/config");
59
+ /**
60
+ * Resource routing map
61
+ * Maps resource names to their primary command paths
62
+ */
63
+ const RESOURCE_ROUTES = {
64
+ // Jobs
65
+ job: ['job'],
66
+ jobs: ['job'],
67
+ // Ontologies
68
+ ontology: ['ontology'],
69
+ ontologies: ['ontology'],
70
+ onto: ['ontology'],
71
+ // Database
72
+ database: ['database'],
73
+ db: ['database'],
74
+ // Config
75
+ config: ['config'],
76
+ cfg: ['config'],
77
+ // Roles (RBAC)
78
+ role: ['admin', 'rbac', 'role'],
79
+ roles: ['admin', 'rbac', 'role'],
80
+ // Permissions (RBAC)
81
+ permission: ['admin', 'rbac', 'permission'],
82
+ permissions: ['admin', 'rbac', 'permission'],
83
+ perm: ['admin', 'rbac', 'permission'],
84
+ // Resources (RBAC)
85
+ resource: ['admin', 'rbac', 'resource'],
86
+ resources: ['admin', 'rbac', 'resource'],
87
+ res: ['admin', 'rbac', 'resource'],
88
+ // Backups
89
+ backup: ['admin'],
90
+ backups: ['admin'],
91
+ // Users
92
+ user: ['admin', 'user'],
93
+ users: ['admin', 'user'],
94
+ // Concepts (via search)
95
+ concept: ['search'],
96
+ concepts: ['search'],
97
+ // Artifacts (ADR-083)
98
+ artifact: ['artifact'],
99
+ artifacts: ['artifact'],
100
+ // Sources (ADR-081)
101
+ source: ['source'],
102
+ sources: ['source'],
103
+ };
104
+ /**
105
+ * Execute a command by re-invoking the CLI with new arguments
106
+ *
107
+ * This is a workaround since Commander.js doesn't support dynamic command execution well.
108
+ * We spawn a new process with the correct command structure.
109
+ *
110
+ * @param path - Command path (e.g., ['job', 'list'])
111
+ * @param args - Additional arguments
112
+ */
113
+ function executeCommand(rootCommand, path, args = []) {
114
+ const { spawn } = require('child_process');
115
+ const { resolve } = require('path');
116
+ // Build full command: kg <path> <args>
117
+ const fullArgs = [...path, ...args];
118
+ // kg is symlinked to dist/index.js
119
+ // __dirname is dist/cli, so go up one level to dist/index.js
120
+ const kgPath = resolve(__dirname, '..', 'index.js');
121
+ // Execute kg with the new arguments (no shell for security)
122
+ const child = spawn(process.execPath, [kgPath, ...fullArgs], {
123
+ stdio: 'inherit'
124
+ });
125
+ child.on('exit', (code) => {
126
+ process.exit(code || 0);
127
+ });
128
+ child.on('error', (error) => {
129
+ console.error(colors.status.error(`āœ— Failed to execute command: ${error.message}`));
130
+ process.exit(1);
131
+ });
132
+ }
133
+ /**
134
+ * Get resource route path
135
+ */
136
+ function getResourceRoute(resource) {
137
+ const route = RESOURCE_ROUTES[resource.toLowerCase()];
138
+ return route || null;
139
+ }
140
+ /**
141
+ * Apply user-configured aliases to a command (ADR-029)
142
+ *
143
+ * Loads aliases from config and applies them to the command using .alias()
144
+ *
145
+ * @param cmd The command to apply aliases to
146
+ * @param commandName Name of the command (used to lookup aliases in config)
147
+ */
148
+ function applyAliases(cmd, commandName) {
149
+ try {
150
+ const config = (0, config_1.getConfig)();
151
+ const aliases = config.getCommandAliases(commandName);
152
+ // Apply each alias
153
+ for (const alias of aliases) {
154
+ cmd.alias(alias);
155
+ }
156
+ }
157
+ catch (error) {
158
+ // Silently fail if config can't be loaded - aliases are optional
159
+ // This prevents blocking CLI usage if config is corrupted
160
+ }
161
+ }
162
+ /**
163
+ * Create the ls (list) verb command
164
+ */
165
+ function createLsCommand(rootCommand) {
166
+ const cmd = new commander_1.Command('ls')
167
+ .description('List resources (Unix-style shortcut)')
168
+ .argument('<resource>', 'Resource type: job, ontology, backup, config, role, permission, resource, user, artifact, source')
169
+ .option('--json', 'Output as JSON')
170
+ .option('-o, --ontology <name>', 'Filter by ontology (for sources)')
171
+ .action(async (resource, options) => {
172
+ const route = getResourceRoute(resource);
173
+ if (!route) {
174
+ console.error(colors.status.error(`āœ— Unknown resource: ${resource}`));
175
+ console.log(colors.status.dim('\nAvailable resources:'));
176
+ console.log(colors.status.dim(' job, ontology, backup, config, role, permission, resource, user, artifact, source'));
177
+ console.log(colors.status.dim('\nExample: kg ls job'));
178
+ process.exit(1);
179
+ }
180
+ // Special handling for different list commands
181
+ const listArgs = ['list'];
182
+ if (options.json) {
183
+ listArgs.push('--json');
184
+ }
185
+ // Handle special cases
186
+ if (resource === 'backup' || resource === 'backups') {
187
+ executeCommand(rootCommand, [...route, 'list-backups'], []);
188
+ }
189
+ else if (resource === 'concept' || resource === 'concepts') {
190
+ console.error(colors.status.error('āœ— Use "kg search <text>" to search concepts'));
191
+ process.exit(1);
192
+ }
193
+ else if (resource === 'source' || resource === 'sources') {
194
+ // Sources support ontology filter
195
+ if (options.ontology) {
196
+ listArgs.push('--ontology', options.ontology);
197
+ }
198
+ executeCommand(rootCommand, route, listArgs);
199
+ }
200
+ else {
201
+ executeCommand(rootCommand, route, listArgs);
202
+ }
203
+ });
204
+ // Apply user-configured aliases (ADR-029)
205
+ applyAliases(cmd, 'ls');
206
+ return cmd;
207
+ }
208
+ /**
209
+ * Create the stat (status/statistics) verb command
210
+ */
211
+ function createStatCommand(rootCommand) {
212
+ const cmd = new commander_1.Command('stat')
213
+ .description('Show status or statistics (Unix-style shortcut)')
214
+ .argument('<resource>', 'Resource type: job, database')
215
+ .argument('[id]', 'Resource identifier (for jobs)')
216
+ .option('--json', 'Output as JSON')
217
+ .action(async (resource, id, options) => {
218
+ const route = getResourceRoute(resource);
219
+ if (!route) {
220
+ console.error(colors.status.error(`āœ— Unknown resource: ${resource}`));
221
+ console.log(colors.status.dim('\nAvailable resources: job, database'));
222
+ console.log(colors.status.dim('\nExamples:'));
223
+ console.log(colors.status.dim(' kg stat job abc-123'));
224
+ console.log(colors.status.dim(' kg stat database'));
225
+ process.exit(1);
226
+ }
227
+ const args = [];
228
+ // Determine verb based on resource
229
+ if (resource === 'job' || resource === 'jobs') {
230
+ if (!id) {
231
+ console.error(colors.status.error('āœ— Job ID required'));
232
+ console.log(colors.status.dim('Example: kg stat job abc-123'));
233
+ process.exit(1);
234
+ }
235
+ args.push('status', id);
236
+ }
237
+ else if (resource === 'database' || resource === 'db') {
238
+ args.push('stats');
239
+ }
240
+ else {
241
+ console.error(colors.status.error(`āœ— stat not supported for ${resource}`));
242
+ process.exit(1);
243
+ }
244
+ if (options.json) {
245
+ args.push('--json');
246
+ }
247
+ executeCommand(rootCommand, route, args);
248
+ });
249
+ // Apply user-configured aliases (ADR-029)
250
+ applyAliases(cmd, 'stat');
251
+ return cmd;
252
+ }
253
+ /**
254
+ * Create the rm (remove/cancel/delete) verb command
255
+ */
256
+ function createRmCommand(rootCommand) {
257
+ const cmd = new commander_1.Command('rm')
258
+ .description('Remove or delete resources (Unix-style shortcut)')
259
+ .argument('<resource>', 'Resource type: job, ontology, role, permission, user, artifact')
260
+ .argument('<id>', 'Resource identifier')
261
+ .option('-f, --force', 'Skip confirmation')
262
+ .option('--json', 'Output as JSON')
263
+ .action(async (resource, id, options) => {
264
+ const route = getResourceRoute(resource);
265
+ if (!route) {
266
+ console.error(colors.status.error(`āœ— Unknown resource: ${resource}`));
267
+ console.log(colors.status.dim('\nAvailable resources: job, ontology, role, user, artifact'));
268
+ console.log(colors.status.dim('\nExample: kg rm job abc-123'));
269
+ process.exit(1);
270
+ }
271
+ const args = [];
272
+ // Determine verb based on resource
273
+ if (resource === 'job' || resource === 'jobs') {
274
+ args.push('cancel', id);
275
+ }
276
+ else if (resource === 'ontology' || resource === 'ontologies' || resource === 'onto') {
277
+ args.push('delete', id);
278
+ if (options.force)
279
+ args.push('--force');
280
+ }
281
+ else if (resource === 'role' || resource === 'roles') {
282
+ args.push('delete', id);
283
+ if (options.force)
284
+ args.push('--force');
285
+ }
286
+ else if (resource === 'user' || resource === 'users') {
287
+ args.push('delete', id);
288
+ if (options.force)
289
+ args.push('--force');
290
+ }
291
+ else if (resource === 'artifact' || resource === 'artifacts') {
292
+ args.push('delete', id);
293
+ }
294
+ else {
295
+ console.error(colors.status.error(`āœ— rm not supported for ${resource}`));
296
+ process.exit(1);
297
+ }
298
+ if (options.json) {
299
+ args.push('--json');
300
+ }
301
+ executeCommand(rootCommand, route, args);
302
+ });
303
+ // Apply user-configured aliases (ADR-029)
304
+ applyAliases(cmd, 'rm');
305
+ return cmd;
306
+ }
307
+ /**
308
+ * Create the cat (display/show details) verb command
309
+ *
310
+ * Aliases are loaded from user config (ADR-029)
311
+ */
312
+ function createCatCommand(rootCommand) {
313
+ const cmd = new commander_1.Command('cat')
314
+ .description('Display resource details (Unix-style shortcut)')
315
+ .argument('<resource>', 'Resource type: concept, artifact, source, config, job, role, ontology')
316
+ .argument('[id]', 'Resource identifier or key (optional for config and job)')
317
+ .option('--json', 'Output as JSON')
318
+ .option('--payload', 'Show full payload (for artifacts)')
319
+ .action(async (resource, id, options) => {
320
+ const args = [];
321
+ if (options.json) {
322
+ args.push('--json');
323
+ }
324
+ // Route based on resource type
325
+ if (resource === 'concept' || resource === 'concepts') {
326
+ if (!id) {
327
+ console.error(colors.status.error('āœ— Concept ID required'));
328
+ console.log(colors.status.dim('Example: kg cat concept abc-123'));
329
+ process.exit(1);
330
+ }
331
+ executeCommand(rootCommand, ['search', 'details'], [id, ...args]);
332
+ }
333
+ else if (resource === 'artifact' || resource === 'artifacts') {
334
+ if (!id) {
335
+ console.error(colors.status.error('āœ— Artifact ID required'));
336
+ console.log(colors.status.dim('Example: kg cat artifact 123'));
337
+ process.exit(1);
338
+ }
339
+ if (options.payload) {
340
+ // Show artifact with payload
341
+ executeCommand(rootCommand, ['artifact', 'payload'], [id, ...args]);
342
+ }
343
+ else {
344
+ // Show artifact metadata
345
+ executeCommand(rootCommand, ['artifact', 'show'], [id, ...args]);
346
+ }
347
+ }
348
+ else if (resource === 'source' || resource === 'sources') {
349
+ if (!id) {
350
+ console.error(colors.status.error('āœ— Source ID required'));
351
+ console.log(colors.status.dim('Example: kg cat source sha256:abc123_chunk1'));
352
+ process.exit(1);
353
+ }
354
+ // Show source metadata
355
+ executeCommand(rootCommand, ['source', 'info'], [id, ...args]);
356
+ }
357
+ else if (resource === 'config' || resource === 'cfg') {
358
+ if (id) {
359
+ // Show specific config key
360
+ executeCommand(rootCommand, ['config', 'get'], [id, ...args]);
361
+ }
362
+ else {
363
+ // List all config
364
+ executeCommand(rootCommand, ['config', 'list'], args);
365
+ }
366
+ }
367
+ else if (resource === 'job' || resource === 'jobs') {
368
+ if (id) {
369
+ // Show specific job status
370
+ executeCommand(rootCommand, ['job', 'status'], [id, ...args]);
371
+ }
372
+ else {
373
+ // List all jobs
374
+ executeCommand(rootCommand, ['job', 'list'], args);
375
+ }
376
+ }
377
+ else if (resource === 'role' || resource === 'roles') {
378
+ if (!id) {
379
+ console.error(colors.status.error('āœ— Role name required'));
380
+ console.log(colors.status.dim('Example: kg cat role admin'));
381
+ process.exit(1);
382
+ }
383
+ executeCommand(rootCommand, ['admin', 'rbac', 'role', 'get'], [id, ...args]);
384
+ }
385
+ else if (resource === 'ontology' || resource === 'ontologies' || resource === 'onto') {
386
+ if (!id) {
387
+ console.error(colors.status.error('āœ— Ontology name required'));
388
+ console.log(colors.status.dim('Example: kg cat ontology "My Ontology"'));
389
+ process.exit(1);
390
+ }
391
+ executeCommand(rootCommand, ['ontology', 'info'], [id, ...args]);
392
+ }
393
+ else {
394
+ console.error(colors.status.error(`āœ— Unknown resource: ${resource}`));
395
+ console.log(colors.status.dim('\nAvailable resources: concept, artifact, source, config, job, role, ontology'));
396
+ console.log(colors.status.dim('\nExample: kg cat concept abc-123'));
397
+ process.exit(1);
398
+ }
399
+ });
400
+ // Apply user-configured aliases (ADR-029)
401
+ applyAliases(cmd, 'cat');
402
+ return cmd;
403
+ }
404
+ /**
405
+ * Create the complete verb router with all Unix-style verbs
406
+ */
407
+ function createVerbRouter(rootCommand) {
408
+ return [
409
+ createLsCommand(rootCommand),
410
+ createStatCommand(rootCommand),
411
+ createRmCommand(rootCommand),
412
+ createCatCommand(rootCommand),
413
+ ];
414
+ }
415
+ //# sourceMappingURL=verb-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verb-router.js","sourceRoot":"","sources":["../../src/cli/verb-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Vocabulary Configuration Commands
3
+ * Show and update vocabulary configuration settings
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function createConfigCommand(): Command;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/vocabulary/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,mBAAmB,IAAI,OAAO,CAwK7C"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Vocabulary Configuration Commands
4
+ * Show and update vocabulary configuration settings
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.createConfigCommand = createConfigCommand;
41
+ const commander_1 = require("commander");
42
+ const client_1 = require("../../api/client");
43
+ const colors = __importStar(require("../colors"));
44
+ const colors_1 = require("../colors");
45
+ const table_1 = require("../../lib/table");
46
+ function createConfigCommand() {
47
+ return new commander_1.Command('config')
48
+ .description('Show or update vocabulary configuration. No args: display config. With args: update properties (e.g., "kg vocab config vocab_max 275").')
49
+ .argument('[properties...]', 'Property assignments: key value [key value...]')
50
+ .action(async (properties) => {
51
+ // If properties provided, update config
52
+ if (properties && properties.length > 0) {
53
+ if (properties.length % 2 !== 0) {
54
+ console.error(colors.status.error('āœ— Properties must be provided as key-value pairs'));
55
+ console.error(colors.status.dim(' Usage: kg vocab config <key> <value> [<key> <value>...]'));
56
+ console.error(colors.status.dim(' Example: kg vocab config vocab_max 275 vocab_emergency 350'));
57
+ process.exit(1);
58
+ }
59
+ try {
60
+ const client = (0, client_1.createClientFromEnv)();
61
+ // Get logged-in user from OAuth credentials
62
+ const { getConfig } = require('../../lib/config');
63
+ const configManager = getConfig();
64
+ const credentials = configManager.getOAuthCredentials();
65
+ const username = credentials?.username || 'cli-user';
66
+ const updates = {
67
+ updated_by: username
68
+ };
69
+ // Parse key-value pairs
70
+ for (let i = 0; i < properties.length; i += 2) {
71
+ const key = properties[i];
72
+ const value = properties[i + 1];
73
+ // Parse value based on type
74
+ if (key === 'vocab_min' || key === 'vocab_max' || key === 'vocab_emergency') {
75
+ updates[key] = parseInt(value);
76
+ }
77
+ else if (key === 'auto_expand_enabled') {
78
+ updates[key] = value.toLowerCase() === 'true';
79
+ }
80
+ else if (key === 'synonym_threshold_strong' || key === 'synonym_threshold_moderate' ||
81
+ key === 'low_value_threshold' || key === 'consolidation_similarity_threshold') {
82
+ updates[key] = parseFloat(value);
83
+ }
84
+ else if (key === 'pruning_mode' || key === 'aggressiveness_profile' || key === 'embedding_model') {
85
+ updates[key] = value;
86
+ }
87
+ else {
88
+ console.error(colors.status.error(`āœ— Unknown property: ${key}`));
89
+ process.exit(1);
90
+ }
91
+ }
92
+ // Update config
93
+ await client.updateVocabularyConfig(updates);
94
+ console.log(colors.status.success('\nāœ“ Configuration updated successfully\n'));
95
+ }
96
+ catch (error) {
97
+ console.error(colors.status.error('āœ— Failed to update vocabulary configuration'));
98
+ if (error.response?.data?.detail) {
99
+ console.error(colors.status.error(JSON.stringify(error.response.data.detail, null, 2)));
100
+ }
101
+ else {
102
+ console.error(colors.status.error(error.message || String(error)));
103
+ }
104
+ process.exit(1);
105
+ }
106
+ }
107
+ // Display config (either after update or when called with no args)
108
+ try {
109
+ const client = (0, client_1.createClientFromEnv)();
110
+ console.log('\n' + (0, colors_1.separator)());
111
+ console.log(colors.ui.title('šŸ“‹ Vocabulary Configuration'));
112
+ console.log((0, colors_1.separator)());
113
+ const config = await client.getVocabularyConfigDetail();
114
+ // Zone color mapping
115
+ const zoneColors = {
116
+ comfort: colors.status.success,
117
+ watch: colors.status.warning,
118
+ merge: colors.status.warning,
119
+ mixed: colors.status.warning,
120
+ emergency: colors.status.error,
121
+ block: colors.status.error
122
+ };
123
+ const zoneColor = zoneColors[config.zone] || colors.ui.value;
124
+ // Current state table
125
+ console.log(`\n${colors.stats.section('Current State')}\n`);
126
+ const stateRows = [
127
+ { metric: 'Vocabulary Size', value: config.current_size.toString() },
128
+ { metric: 'Zone', value: config.zone.toUpperCase() },
129
+ { metric: 'Aggressiveness', value: (config.aggressiveness * 100).toFixed(1) + '%' }
130
+ ];
131
+ const stateTable = new table_1.Table({
132
+ columns: [
133
+ {
134
+ header: 'Metric',
135
+ field: 'metric',
136
+ type: 'heading',
137
+ width: 'auto',
138
+ priority: 2
139
+ },
140
+ {
141
+ header: 'Value',
142
+ field: 'value',
143
+ type: 'value',
144
+ width: 'flex',
145
+ priority: 3
146
+ }
147
+ ]
148
+ });
149
+ stateTable.print(stateRows);
150
+ // Configuration table
151
+ console.log(`\n${colors.stats.section('Configuration Parameters')}`);
152
+ console.log(colors.status.dim('Use `kg vocab config <property> <value>` to update:\n'));
153
+ const configRows = [
154
+ { parameter: 'Minimum Threshold', value: config.vocab_min.toString(), property: 'vocab_min' },
155
+ { parameter: 'Maximum Threshold', value: config.vocab_max.toString(), property: 'vocab_max' },
156
+ { parameter: 'Emergency Threshold', value: config.vocab_emergency.toString(), property: 'vocab_emergency' },
157
+ { parameter: 'Pruning Mode', value: config.pruning_mode, property: 'pruning_mode' },
158
+ { parameter: 'Aggressiveness Profile', value: config.aggressiveness_profile, property: 'aggressiveness_profile' },
159
+ { parameter: 'Auto-expand', value: config.auto_expand_enabled ? 'true' : 'false', property: 'auto_expand_enabled' },
160
+ { parameter: 'Synonym (Strong)', value: config.synonym_threshold_strong.toFixed(2), property: 'synonym_threshold_strong' },
161
+ { parameter: 'Synonym (Moderate)', value: config.synonym_threshold_moderate.toFixed(2), property: 'synonym_threshold_moderate' },
162
+ { parameter: 'Low Value Threshold', value: config.low_value_threshold.toFixed(1), property: 'low_value_threshold' },
163
+ { parameter: 'Consolidation Threshold', value: config.consolidation_similarity_threshold.toFixed(2), property: 'consolidation_similarity_threshold' },
164
+ { parameter: 'Embedding Model', value: config.embedding_model, property: '(managed via kg admin embedding)' },
165
+ ];
166
+ const table = new table_1.Table({
167
+ columns: [
168
+ {
169
+ header: 'Parameter',
170
+ field: 'parameter',
171
+ type: 'heading',
172
+ width: 'flex',
173
+ priority: 2
174
+ },
175
+ {
176
+ header: 'Value',
177
+ field: 'value',
178
+ type: 'value',
179
+ width: 'auto',
180
+ priority: 3
181
+ },
182
+ {
183
+ header: 'Property Name',
184
+ field: 'property',
185
+ type: 'value',
186
+ width: 'flex',
187
+ priority: 1
188
+ }
189
+ ]
190
+ });
191
+ table.print(configRows);
192
+ console.log('\n' + (0, colors_1.separator)());
193
+ }
194
+ catch (error) {
195
+ console.error(colors.status.error('āœ— Failed to get vocabulary configuration'));
196
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
197
+ process.exit(1);
198
+ }
199
+ });
200
+ }
201
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/vocabulary/config.ts"],"names":[],"mappings":"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"}