@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,296 @@
1
+ "use strict";
2
+ /**
3
+ * kg oauth - OAuth client management commands (ADR-054)
4
+ *
5
+ * Manage personal OAuth clients for CLI, MCP, scripts, etc.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.oauthCommand = void 0;
12
+ exports.registerOAuthCommand = registerOAuthCommand;
13
+ const commander_1 = require("commander");
14
+ const config_js_1 = require("../lib/config.js");
15
+ const auth_client_js_1 = require("../lib/auth/auth-client.js");
16
+ const table_js_1 = require("../lib/table.js");
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const help_formatter_js_1 = require("./help-formatter.js");
19
+ /**
20
+ * Require authentication and return OAuth access token
21
+ */
22
+ async function requireAuth() {
23
+ const config = (0, config_js_1.getConfig)();
24
+ if (!config.isAuthenticated()) {
25
+ console.error('\x1b[31māŒ Authentication required\x1b[0m');
26
+ console.error(' Please login first: kg login');
27
+ process.exit(1);
28
+ }
29
+ const apiUrl = config.getApiUrl();
30
+ const authClient = new auth_client_js_1.AuthClient(apiUrl);
31
+ // Get OAuth client credentials (ADR-054)
32
+ const oauthCreds = config.getOAuthCredentials();
33
+ if (!oauthCreds) {
34
+ console.error('\x1b[31māŒ No OAuth credentials found. Please login: kg login\x1b[0m\n');
35
+ process.exit(1);
36
+ }
37
+ // Get fresh access token using client credentials grant
38
+ const tokenResponse = await authClient.getOAuthToken({
39
+ grant_type: 'client_credentials',
40
+ client_id: oauthCreds.client_id,
41
+ client_secret: oauthCreds.client_secret,
42
+ scope: oauthCreds.scopes.join(' ')
43
+ });
44
+ return {
45
+ token: tokenResponse.access_token,
46
+ authClient,
47
+ username: oauthCreds.username || 'unknown'
48
+ };
49
+ }
50
+ /**
51
+ * List personal OAuth clients
52
+ */
53
+ async function listClientsCommand() {
54
+ try {
55
+ const { token } = await requireAuth();
56
+ const config = (0, config_js_1.getConfig)();
57
+ const apiUrl = config.getApiUrl();
58
+ // Call API to list personal OAuth clients
59
+ const response = await axios_1.default.get(`${apiUrl}/auth/oauth/clients/personal`, {
60
+ headers: { Authorization: `Bearer ${token}` }
61
+ });
62
+ const { clients, total } = response.data;
63
+ if (total === 0) {
64
+ console.log('\n\x1b[33māš ļø No OAuth clients found\x1b[0m');
65
+ console.log(' Create one with: kg login\n');
66
+ return;
67
+ }
68
+ // Display as table
69
+ const table = new table_js_1.Table({
70
+ columns: [
71
+ { header: 'Client ID', field: 'client_id', type: 'value', width: 'auto' },
72
+ { header: 'Name', field: 'client_name', type: 'value', width: 'auto' },
73
+ { header: 'Scopes', field: 'scopes', type: 'value', width: 'auto' },
74
+ { header: 'Created', field: 'created_at', type: 'timestamp', width: 'auto' },
75
+ { header: 'Status', field: 'is_active', type: 'text', width: 'auto',
76
+ customFormat: (val) => val ? '\x1b[32māœ“ Active\x1b[0m' : '\x1b[31māœ— Inactive\x1b[0m'
77
+ }
78
+ ]
79
+ });
80
+ const tableData = clients.map((client) => ({
81
+ ...client,
82
+ scopes: client.scopes.join(', ')
83
+ }));
84
+ console.log('');
85
+ table.print(tableData);
86
+ console.log('');
87
+ console.log(`\x1b[2mShowing ${total} client(s)\x1b[0m`);
88
+ console.log('');
89
+ }
90
+ catch (error) {
91
+ console.error(`\n\x1b[31māŒ Error: ${error.message}\x1b[0m\n`);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ /**
96
+ * Write FUSE config file to XDG path
97
+ */
98
+ function writeFuseConfig(clientId, clientSecret, apiUrl) {
99
+ const fs = require('fs');
100
+ const path = require('path');
101
+ const os = require('os');
102
+ const xdgConfig = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), '.config');
103
+ const fuseConfigDir = path.join(xdgConfig, 'kg-fuse');
104
+ const fuseConfigPath = path.join(fuseConfigDir, 'config.toml');
105
+ // Create directory if needed
106
+ if (!fs.existsSync(fuseConfigDir)) {
107
+ fs.mkdirSync(fuseConfigDir, { recursive: true });
108
+ }
109
+ // Write TOML config
110
+ const content = `# kg-fuse configuration
111
+ # Generated by: kg oauth create --for fuse
112
+
113
+ [auth]
114
+ client_id = "${clientId}"
115
+ client_secret = "${clientSecret}"
116
+
117
+ [api]
118
+ url = "${apiUrl}"
119
+ `;
120
+ fs.writeFileSync(fuseConfigPath, content, 'utf-8');
121
+ return fuseConfigPath;
122
+ }
123
+ /**
124
+ * Create OAuth client (generic - for MCP, FUSE, scripts, etc.)
125
+ */
126
+ async function createClientCommand(options) {
127
+ try {
128
+ const { token, username } = await requireAuth();
129
+ const config = (0, config_js_1.getConfig)();
130
+ const apiUrl = config.getApiUrl();
131
+ // Determine client name and target
132
+ const target = options.for || 'generic';
133
+ let clientName;
134
+ switch (target) {
135
+ case 'mcp':
136
+ clientName = options.name || `kg MCP Server (${username})`;
137
+ break;
138
+ case 'fuse':
139
+ clientName = options.name || `kg-fuse (${username})`;
140
+ break;
141
+ default:
142
+ clientName = options.name || `kg client (${username})`;
143
+ }
144
+ console.log(`\nšŸ” Creating OAuth client${target !== 'generic' ? ` for ${target}` : ''}...\n`);
145
+ // Create OAuth client
146
+ const formData = new URLSearchParams();
147
+ formData.append('client_name', clientName);
148
+ formData.append('scope', 'read:* write:*');
149
+ const response = await axios_1.default.post(`${apiUrl}/auth/oauth/clients/personal/new`, formData, {
150
+ headers: {
151
+ 'Authorization': `Bearer ${token}`,
152
+ 'Content-Type': 'application/x-www-form-urlencoded'
153
+ }
154
+ });
155
+ const client = response.data;
156
+ console.log('\x1b[32māœ… OAuth client created successfully!\x1b[0m\n');
157
+ // Always show plain credentials first
158
+ console.log('═'.repeat(60));
159
+ console.log('\x1b[1mCREDENTIALS\x1b[0m');
160
+ console.log('═'.repeat(60));
161
+ console.log(` Client ID: ${client.client_id}`);
162
+ console.log(` Client Secret: ${client.client_secret}`);
163
+ console.log(` API URL: ${apiUrl}`);
164
+ console.log('═'.repeat(60));
165
+ console.log('');
166
+ // Target-specific helpers
167
+ if (target === 'mcp') {
168
+ console.log('\x1b[1mCLAUDE DESKTOP CONFIG\x1b[0m');
169
+ console.log('─'.repeat(60));
170
+ console.log('');
171
+ console.log('Add this to your Claude Desktop config:');
172
+ console.log('');
173
+ const mcpServerPath = process.env.HOME ? `${process.env.HOME}/.local/bin/kg-mcp-server` : '/home/user/.local/bin/kg-mcp-server';
174
+ console.log(' "knowledge-graph": {');
175
+ console.log(` "command": "${mcpServerPath}",`);
176
+ console.log(' "env": {');
177
+ console.log(` "KG_OAUTH_CLIENT_ID": "${client.client_id}",`);
178
+ console.log(` "KG_OAUTH_CLIENT_SECRET": "${client.client_secret}",`);
179
+ console.log(` "KG_API_URL": "${apiUrl}"`);
180
+ console.log(' }');
181
+ console.log(' }');
182
+ console.log('');
183
+ console.log('\x1b[2mOr add using claude CLI:\x1b[0m');
184
+ console.log('');
185
+ console.log(` claude mcp add knowledge-graph ${mcpServerPath} \\`);
186
+ console.log(` --env KG_OAUTH_CLIENT_ID=${client.client_id} \\`);
187
+ console.log(` --env KG_OAUTH_CLIENT_SECRET=${client.client_secret} \\`);
188
+ console.log(` --env KG_API_URL=${apiUrl} \\`);
189
+ console.log(` -s local`);
190
+ console.log('');
191
+ }
192
+ else if (target === 'fuse') {
193
+ // Write FUSE config automatically
194
+ const configPath = writeFuseConfig(client.client_id, client.client_secret, apiUrl);
195
+ console.log('\x1b[1mFUSE CONFIG\x1b[0m');
196
+ console.log('─'.repeat(60));
197
+ console.log(` Config written to: ${configPath}`);
198
+ console.log('');
199
+ console.log(' Mount with:');
200
+ console.log(' kg-fuse /mnt/knowledge');
201
+ console.log('');
202
+ }
203
+ else {
204
+ // Generic usage
205
+ console.log('\x1b[1mUSAGE\x1b[0m');
206
+ console.log('─'.repeat(60));
207
+ console.log(' Environment variables:');
208
+ console.log(` export KG_OAUTH_CLIENT_ID="${client.client_id}"`);
209
+ console.log(` export KG_OAUTH_CLIENT_SECRET="${client.client_secret}"`);
210
+ console.log(` export KG_API_URL="${apiUrl}"`);
211
+ console.log('');
212
+ }
213
+ console.log('\x1b[33māš ļø IMPORTANT:\x1b[0m');
214
+ console.log(' • Keep these credentials secure!');
215
+ console.log(' • Client secret is shown only once');
216
+ console.log(' • To revoke: \x1b[36mkg oauth revoke ' + client.client_id + '\x1b[0m');
217
+ console.log('');
218
+ }
219
+ catch (error) {
220
+ console.error(`\n\x1b[31māŒ Error: ${error.response?.data?.detail || error.message}\x1b[0m\n`);
221
+ process.exit(1);
222
+ }
223
+ }
224
+ /**
225
+ * Revoke OAuth client
226
+ */
227
+ async function revokeClientCommand(clientId, options) {
228
+ try {
229
+ const { token, authClient } = await requireAuth();
230
+ const config = (0, config_js_1.getConfig)();
231
+ const currentClient = config.getOAuthCredentials();
232
+ // Check if user is trying to revoke their current CLI client
233
+ if (currentClient && currentClient.client_id === clientId) {
234
+ if (!options.force) {
235
+ console.log('\n\x1b[33māš ļø Warning: This is your current CLI OAuth client\x1b[0m');
236
+ console.log(` Client ID: ${clientId}`);
237
+ console.log(' Revoking this will log you out.');
238
+ console.log('');
239
+ console.log(' To proceed, use: \x1b[36mkg oauth revoke ' + clientId + ' --force\x1b[0m');
240
+ console.log(' Or use: \x1b[36mkg logout\x1b[0m\n');
241
+ process.exit(0);
242
+ }
243
+ }
244
+ console.log(`\nšŸ—‘ļø Revoking OAuth client ${clientId}...\n`);
245
+ // Delete the OAuth client
246
+ await authClient.deletePersonalOAuthClient(token, clientId);
247
+ console.log('\x1b[32māœ… OAuth client revoked successfully!\x1b[0m\n');
248
+ // If they revoked their current client, clear config
249
+ if (currentClient && currentClient.client_id === clientId) {
250
+ config.delete('auth.oauth_client_id');
251
+ config.delete('auth.oauth_client_secret');
252
+ config.delete('auth.oauth_client_name');
253
+ config.delete('auth.oauth_scopes');
254
+ config.delete('auth.oauth_created_at');
255
+ console.log('\x1b[33māš ļø You have been logged out\x1b[0m');
256
+ console.log(' To login again: \x1b[36mkg login\x1b[0m\n');
257
+ }
258
+ }
259
+ catch (error) {
260
+ console.error(`\n\x1b[31māŒ Error: ${error.response?.data?.detail || error.message}\x1b[0m\n`);
261
+ process.exit(1);
262
+ }
263
+ }
264
+ /**
265
+ * OAuth command group object (for documentation generation)
266
+ */
267
+ exports.oauthCommand = (0, help_formatter_js_1.setCommandHelp)(new commander_1.Command('oauth'), 'Manage OAuth clients', 'Manage OAuth clients (list, create for MCP, revoke)');
268
+ exports.oauthCommand
269
+ .command('clients')
270
+ .alias('list')
271
+ .description('List your personal OAuth clients')
272
+ .action(listClientsCommand);
273
+ exports.oauthCommand
274
+ .command('create')
275
+ .description('Create OAuth client for external tools (MCP, FUSE, scripts)')
276
+ .option('--name <name>', 'Custom client name')
277
+ .option('--for <target>', 'Target: mcp, fuse, or generic (shows appropriate setup instructions)')
278
+ .action(createClientCommand);
279
+ // Keep create-mcp as alias for backwards compatibility
280
+ exports.oauthCommand
281
+ .command('create-mcp')
282
+ .description('Create OAuth client for MCP server (alias for: create --for mcp)')
283
+ .option('--name <name>', 'Custom client name')
284
+ .action((options) => createClientCommand({ ...options, for: 'mcp' }));
285
+ exports.oauthCommand
286
+ .command('revoke <client-id>')
287
+ .description('Revoke an OAuth client')
288
+ .option('--force', 'Force revocation even if it\'s your current CLI client')
289
+ .action(revokeClientCommand);
290
+ /**
291
+ * Register oauth command group
292
+ */
293
+ function registerOAuthCommand(program) {
294
+ program.addCommand(exports.oauthCommand);
295
+ }
296
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/cli/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Ontology Management Commands
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const ontologyCommand: Command;
6
+ //# sourceMappingURL=ontology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../src/cli/ontology.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,eAAe,SA+MzB,CAAC"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * Ontology Management Commands
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ontologyCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const client_1 = require("../api/client");
42
+ const colors = __importStar(require("./colors"));
43
+ const colors_1 = require("./colors");
44
+ const table_1 = require("../lib/table");
45
+ const help_formatter_1 = require("./help-formatter");
46
+ exports.ontologyCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('ontology'), 'Manage ontologies (knowledge domains)', 'Manage ontologies (knowledge domains). Ontologies are named collections that organize concepts into knowledge domains. Each ontology groups related documents and concepts together, making it easier to organize and query knowledge by topic or project.')
47
+ .alias('onto') // Short alias
48
+ .showHelpAfterError('(add --help for additional information)')
49
+ .showSuggestionAfterError()
50
+ .addCommand(new commander_1.Command('list')
51
+ .description('List all ontologies in the knowledge graph. Shows a table with ontology name, file count, chunk count, and concept count. Use this to get a bird\'s-eye view of all knowledge domains, verify ingestion results, and understand how knowledge is distributed.')
52
+ .action(async () => {
53
+ try {
54
+ const client = (0, client_1.createClientFromEnv)();
55
+ const result = await client.listOntologies();
56
+ if (result.count === 0) {
57
+ console.log(colors.status.warning('\n⚠ No ontologies found'));
58
+ return;
59
+ }
60
+ console.log('\n' + colors.ui.title('šŸ“š Ontologies in Knowledge Graph'));
61
+ // Use Table system for consistent formatting
62
+ const table = new table_1.Table({
63
+ columns: [
64
+ {
65
+ header: 'Ontology',
66
+ field: 'ontology',
67
+ type: 'heading',
68
+ width: 'flex',
69
+ priority: 3
70
+ },
71
+ {
72
+ header: 'Files',
73
+ field: 'file_count',
74
+ type: 'count',
75
+ width: 10,
76
+ align: 'right'
77
+ },
78
+ {
79
+ header: 'Chunks',
80
+ field: 'source_count',
81
+ type: 'count',
82
+ width: 10,
83
+ align: 'right'
84
+ },
85
+ {
86
+ header: 'Concepts',
87
+ field: 'concept_count',
88
+ type: 'count',
89
+ width: 12,
90
+ align: 'right'
91
+ }
92
+ ]
93
+ });
94
+ table.print(result.ontologies);
95
+ }
96
+ catch (error) {
97
+ console.error(colors.status.error('āœ— Failed to list ontologies'));
98
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
99
+ process.exit(1);
100
+ }
101
+ }))
102
+ .addCommand(new commander_1.Command('info')
103
+ .description('Get detailed information about a specific ontology. Shows statistics (files, chunks, concepts, evidence, relationships) and lists all source files. Use this to understand ontology composition, verify expected files are present, and troubleshoot ingestion issues.')
104
+ .showHelpAfterError()
105
+ .argument('<name>', 'Ontology name')
106
+ .action(async (name) => {
107
+ try {
108
+ const client = (0, client_1.createClientFromEnv)();
109
+ const info = await client.getOntologyInfo(name);
110
+ console.log('\n' + (0, colors_1.separator)());
111
+ console.log(colors.ui.title(`šŸ“– Ontology: ${name}`));
112
+ console.log((0, colors_1.separator)());
113
+ console.log('\n' + colors.stats.section('Statistics'));
114
+ console.log(` ${colors.stats.label('Files:')} ${(0, colors_1.coloredCount)(info.statistics.file_count)}`);
115
+ console.log(` ${colors.stats.label('Chunks:')} ${(0, colors_1.coloredCount)(info.statistics.source_count)}`);
116
+ console.log(` ${colors.stats.label('Concepts:')} ${(0, colors_1.coloredCount)(info.statistics.concept_count)}`);
117
+ console.log(` ${colors.stats.label('Evidence:')} ${(0, colors_1.coloredCount)(info.statistics.instance_count)}`);
118
+ console.log(` ${colors.stats.label('Relationships:')} ${(0, colors_1.coloredCount)(info.statistics.relationship_count)}`);
119
+ if (info.files.length > 0) {
120
+ console.log('\n' + colors.ui.header('Files'));
121
+ console.log((0, colors_1.separator)(80, '─'));
122
+ info.files.forEach(file => {
123
+ console.log(` ${colors.ui.bullet('ā—')} ${colors.evidence.document(file)}`);
124
+ });
125
+ }
126
+ console.log('\n' + (0, colors_1.separator)());
127
+ }
128
+ catch (error) {
129
+ console.error(colors.status.error('āœ— Failed to get ontology info'));
130
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
131
+ process.exit(1);
132
+ }
133
+ }))
134
+ .addCommand(new commander_1.Command('files')
135
+ .description('List files in a specific ontology with per-file statistics (chunks and concepts). Shows which files contributed most concepts and helps identify files that may need re-ingestion. Original file paths are preserved, though temporary paths may appear for text-based ingestion.')
136
+ .showHelpAfterError()
137
+ .argument('<name>', 'Ontology name')
138
+ .action(async (name) => {
139
+ try {
140
+ const client = (0, client_1.createClientFromEnv)();
141
+ const result = await client.getOntologyFiles(name);
142
+ console.log('\n' + (0, colors_1.separator)());
143
+ console.log(colors.ui.title(`šŸ“ Files in: ${name}`));
144
+ console.log((0, colors_1.separator)());
145
+ console.log(colors.status.success(`\nāœ“ Found ${result.count} files:\n`));
146
+ result.files.forEach(file => {
147
+ console.log(colors.evidence.document(file.file_path));
148
+ console.log(` ${colors.ui.key('Chunks:')} ${(0, colors_1.coloredCount)(file.chunk_count)}`);
149
+ console.log(` ${colors.ui.key('Concepts:')} ${(0, colors_1.coloredCount)(file.concept_count)}`);
150
+ console.log();
151
+ });
152
+ console.log((0, colors_1.separator)());
153
+ }
154
+ catch (error) {
155
+ console.error(colors.status.error('āœ— Failed to get ontology files'));
156
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
157
+ process.exit(1);
158
+ }
159
+ }))
160
+ .addCommand(new commander_1.Command('rename')
161
+ .description('Rename an ontology while preserving all its data (concepts, sources, relationships). This is a non-destructive operation useful for reorganization, archiving old ontologies, fixing typos, or improving clarity. Atomic transaction ensures all-or-nothing updates. Requires confirmation unless -y flag is used.')
162
+ .showHelpAfterError()
163
+ .argument('<old-name>', 'Current ontology name')
164
+ .argument('<new-name>', 'New ontology name')
165
+ .option('-y, --yes', 'Skip confirmation prompt')
166
+ .action(async (oldName, newName, options) => {
167
+ try {
168
+ if (!options.yes) {
169
+ console.log('\n' + (0, colors_1.separator)());
170
+ console.log(colors.status.warning('āš ļø Rename Ontology'));
171
+ console.log((0, colors_1.separator)());
172
+ console.log(`\nRename: ${colors.concept.label(oldName)} → ${colors.concept.label(newName)}`);
173
+ console.log(`This will update all Source nodes in the ontology.`);
174
+ console.log('\nUse ' + colors.ui.key('-y') + ' or ' + colors.ui.key('--yes') + ' flag to proceed\n');
175
+ return;
176
+ }
177
+ const client = (0, client_1.createClientFromEnv)();
178
+ const result = await client.renameOntology(oldName, newName);
179
+ console.log('\n' + (0, colors_1.separator)());
180
+ console.log(colors.status.success(`āœ“ Renamed ontology "${result.old_name}" → "${result.new_name}"`));
181
+ console.log((0, colors_1.separator)());
182
+ console.log(` ${colors.ui.key('Sources updated:')} ${(0, colors_1.coloredCount)(result.sources_updated)}`);
183
+ console.log('\n' + (0, colors_1.separator)());
184
+ }
185
+ catch (error) {
186
+ console.error(colors.status.error('āœ— Failed to rename ontology'));
187
+ const detail = error.response?.data?.detail || error.message;
188
+ console.error(colors.status.error(detail));
189
+ // Provide helpful hints based on error
190
+ if (detail.includes('does not exist')) {
191
+ console.error(colors.status.dim('\n Hint: Use "kg ontology list" to see available ontologies'));
192
+ }
193
+ else if (detail.includes('already exists')) {
194
+ console.error(colors.status.dim('\n Hint: Choose a different name or delete the existing ontology first'));
195
+ }
196
+ process.exit(1);
197
+ }
198
+ }))
199
+ .addCommand(new commander_1.Command('delete')
200
+ .description('Delete an ontology and ALL its data (concepts, sources, evidence instances, relationships). This is a DESTRUCTIVE operation that CANNOT BE UNDONE. Use this to remove test data, delete old projects, or free up space. Requires --force flag for confirmation. Consider alternatives: rename to add "Archive" suffix, or export data first (future feature).')
201
+ .showHelpAfterError()
202
+ .argument('<name>', 'Ontology name')
203
+ .option('-f, --force', 'Skip confirmation and force deletion')
204
+ .action(async (name, options) => {
205
+ try {
206
+ if (!options.force) {
207
+ console.log('\n' + (0, colors_1.separator)());
208
+ console.log(colors.status.warning('āš ļø WARNING: This action cannot be undone!'));
209
+ console.log((0, colors_1.separator)());
210
+ console.log(`\nThis will delete all data for ontology ${colors.concept.label(name)}`);
211
+ console.log('\nUse ' + colors.ui.key('--force') + ' flag to confirm deletion\n');
212
+ return;
213
+ }
214
+ const client = (0, client_1.createClientFromEnv)();
215
+ const result = await client.deleteOntology(name, true);
216
+ console.log('\n' + (0, colors_1.separator)());
217
+ console.log(colors.status.success(`āœ“ Deleted ontology "${result.ontology}"`));
218
+ console.log((0, colors_1.separator)());
219
+ console.log(` ${colors.ui.key('Sources deleted:')} ${(0, colors_1.coloredCount)(result.sources_deleted)}`);
220
+ if (result.orphaned_concepts_deleted > 0) {
221
+ console.log(` ${colors.ui.key('Orphaned concepts cleaned:')} ${(0, colors_1.coloredCount)(result.orphaned_concepts_deleted)}`);
222
+ }
223
+ console.log('\n' + (0, colors_1.separator)());
224
+ }
225
+ catch (error) {
226
+ console.error(colors.status.error('āœ— Failed to delete ontology'));
227
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
228
+ process.exit(1);
229
+ }
230
+ }));
231
+ //# sourceMappingURL=ontology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.js","sourceRoot":"","sources":["../../src/cli/ontology.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Polarity Axis Analysis Commands (ADR-070)
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const polarityCommand: Command;
6
+ //# sourceMappingURL=polarity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polarity.d.ts","sourceRoot":"","sources":["../../src/cli/polarity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkRpC,eAAO,MAAM,eAAe,SAMC,CAAC"}