@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,458 @@
1
+ "use strict";
2
+ /**
3
+ * Document search and retrieval commands (ADR-084)
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.documentCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const client_1 = require("../api/client");
42
+ const help_formatter_1 = require("./help-formatter");
43
+ const colors = __importStar(require("./colors"));
44
+ const colors_1 = require("./colors");
45
+ const table_1 = require("../lib/table");
46
+ /**
47
+ * Format grounding for display - prefers API's grounding_display when available
48
+ * Falls back to local computation from grounding_strength
49
+ */
50
+ function formatGrounding(grounding, groundingDisplay, confidenceScore) {
51
+ // Prefer API's categorical label when available
52
+ if (groundingDisplay) {
53
+ const confStr = confidenceScore !== undefined && confidenceScore !== null
54
+ ? ` [${(confidenceScore * 100).toFixed(0)}% conf]`
55
+ : '';
56
+ // Apply color based on the display label
57
+ const label = groundingDisplay.toLowerCase();
58
+ if (label.includes('well-supported') || label.includes('strong')) {
59
+ return colors.status.success(`✓ ${groundingDisplay}${confStr}`);
60
+ }
61
+ else if (label.includes('some support') || label.includes('moderate')) {
62
+ return colors.status.warning(`⚡ ${groundingDisplay}${confStr}`);
63
+ }
64
+ else if (label.includes('contested') || label.includes('contradicted')) {
65
+ return colors.status.error(`⚠ ${groundingDisplay}${confStr}`);
66
+ }
67
+ else if (label.includes('unclear') || label.includes('unexplored')) {
68
+ return colors.status.dim(`◯ ${groundingDisplay}${confStr}`);
69
+ }
70
+ else {
71
+ return colors.status.dim(`${groundingDisplay}${confStr}`);
72
+ }
73
+ }
74
+ // Fallback: compute from raw grounding value
75
+ if (grounding === undefined || grounding === null) {
76
+ return colors.status.dim('◯ Unexplored');
77
+ }
78
+ const groundingValue = grounding.toFixed(3);
79
+ const percentValue = grounding * 100;
80
+ const groundingPercent = (Math.abs(percentValue) < 0.1 && percentValue !== 0)
81
+ ? `≈${percentValue >= 0 ? '0' : '-0'}`
82
+ : percentValue.toFixed(0);
83
+ if (grounding >= 0.7) {
84
+ return colors.status.success(`✓ Strong (${groundingValue}, ${groundingPercent}%)`);
85
+ }
86
+ else if (grounding >= 0.3) {
87
+ return colors.status.warning(`⚡ Moderate (${groundingValue}, ${groundingPercent}%)`);
88
+ }
89
+ else if (grounding >= 0) {
90
+ return colors.status.dim(`◯ Weak (${groundingValue}, ${groundingPercent}%)`);
91
+ }
92
+ else if (grounding >= -0.3) {
93
+ return colors.status.warning(`⚠ Negative (${groundingValue}, ${groundingPercent}%)`);
94
+ }
95
+ else {
96
+ return colors.status.error(`✗ Contradicted (${groundingValue}, ${groundingPercent}%)`);
97
+ }
98
+ }
99
+ exports.documentCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('document'), 'Search and retrieve documents', 'Search for documents using semantic similarity and retrieve their content from Garage storage. Documents are aggregated from source chunks, ranked by their best matching chunk similarity (ADR-084).')
100
+ .showHelpAfterError();
101
+ // Alias: kg doc
102
+ exports.documentCommand.alias('doc');
103
+ // kg document search <query>
104
+ const searchCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('search'), 'Search documents by semantic similarity', 'Find documents that match a query using semantic search. Results show documents ranked by their best matching chunk similarity. Use --details to show full concept information for the top result.')
105
+ .argument('<query>', 'Search query (natural language)')
106
+ .option('-o, --ontology <name>', 'Filter by ontology name')
107
+ .option('-s, --min-similarity <n>', 'Minimum similarity threshold (0-1)', '0.5')
108
+ .option('-l, --limit <n>', 'Maximum results', '20')
109
+ .option('-d, --details', 'Show full concept details for top result')
110
+ .option('-j, --json', 'Output raw JSON')
111
+ .showHelpAfterError()
112
+ .action(async (query, options) => {
113
+ try {
114
+ const client = (0, client_1.createClientFromEnv)();
115
+ const result = await client.searchDocuments({
116
+ query,
117
+ ontology: options.ontology,
118
+ min_similarity: parseFloat(options.minSimilarity),
119
+ limit: parseInt(options.limit),
120
+ });
121
+ if (options.json) {
122
+ console.log(JSON.stringify(result, null, 2));
123
+ return;
124
+ }
125
+ console.log();
126
+ console.log(colors.ui.title(`🔍 Document Search: "${query}"`));
127
+ console.log(colors.separator());
128
+ if (result.documents.length === 0) {
129
+ console.log(colors.status.warning('\n⚠ No documents found matching query'));
130
+ console.log(colors.status.dim(` Try lowering --min-similarity (currently ${options.minSimilarity})`));
131
+ return;
132
+ }
133
+ console.log(colors.status.success(`\n✓ Found ${result.total_matches} document(s):\n`));
134
+ for (let i = 0; i < result.documents.length; i++) {
135
+ const doc = result.documents[i];
136
+ const similarity = (doc.best_similarity * 100).toFixed(1);
137
+ // Document header
138
+ console.log(colors.ui.bullet(`${i + 1}.`) + ' ' + colors.ui.title(doc.filename));
139
+ console.log(` ${colors.ui.key('ID:')} ${colors.status.dim(doc.document_id.substring(0, 40) + '...')}`);
140
+ console.log(` ${colors.ui.key('Ontology:')} ${colors.ui.value(doc.ontology)}`);
141
+ console.log(` ${colors.ui.key('Similarity:')} ${colors.coloredPercentage(doc.best_similarity)}`);
142
+ console.log(` ${colors.ui.key('Sources:')} ${colors.ui.value(String(doc.source_count))} chunk(s)`);
143
+ // Concepts
144
+ if (doc.concept_ids.length > 0) {
145
+ const conceptPreview = doc.concept_ids.slice(0, 3).map(id => id.length > 20 ? id.substring(0, 20) + '…' : id).join(', ');
146
+ const more = doc.concept_ids.length > 3 ? ` (+${doc.concept_ids.length - 3} more)` : '';
147
+ console.log(` ${colors.ui.key('Concepts:')} ${colors.status.dim(conceptPreview + more)}`);
148
+ }
149
+ console.log();
150
+ }
151
+ if (result.returned < result.total_matches) {
152
+ console.log(colors.status.dim(` Showing ${result.returned} of ${result.total_matches} matches`));
153
+ console.log(colors.status.dim(` Use --limit to see more`));
154
+ }
155
+ // --details: Show full concept details for the top result
156
+ if (options.details && result.documents.length > 0) {
157
+ const topDoc = result.documents[0];
158
+ console.log((0, colors_1.separator)());
159
+ console.log(colors.ui.header(`Concepts: ${topDoc.filename}`));
160
+ console.log((0, colors_1.separator)());
161
+ // Fetch concepts for this document
162
+ const conceptsResult = await client.getDocumentConcepts(topDoc.document_id);
163
+ if (conceptsResult.concepts.length === 0) {
164
+ console.log(colors.status.warning('\n⚠ No concepts found for this document'));
165
+ }
166
+ else {
167
+ const uniqueConceptIds = [...new Set(conceptsResult.concepts.map(c => c.concept_id))];
168
+ console.log(colors.status.dim(`\nFetching details for ${uniqueConceptIds.length} unique concepts...\n`));
169
+ for (const [i, conceptId] of uniqueConceptIds.entries()) {
170
+ try {
171
+ const concept = await client.getConceptDetails(conceptId, true);
172
+ console.log(colors.ui.bullet('●') + ' ' + colors.concept.label(`${i + 1}. ${concept.label}`));
173
+ if (concept.description) {
174
+ console.log(` ${colors.status.dim(concept.description)}`);
175
+ }
176
+ console.log(` ${colors.ui.key('ID:')} ${colors.concept.id(concept.concept_id)}`);
177
+ console.log(` ${colors.ui.key('Evidence:')} ${colors.evidence.count(String(concept.instances.length))} instances`);
178
+ // Display grounding
179
+ if (concept.grounding_strength !== undefined) {
180
+ console.log(` ${colors.ui.key('Grounding:')} ${formatGrounding(concept.grounding_strength, concept.grounding_display, concept.confidence_score)}`);
181
+ }
182
+ // Display sample evidence (max 2)
183
+ if (concept.instances.length > 0) {
184
+ console.log(` ${colors.ui.key('Sample Evidence:')}`);
185
+ for (const inst of concept.instances.slice(0, 2)) {
186
+ const truncatedQuote = inst.quote.length > 100
187
+ ? inst.quote.substring(0, 100) + '...'
188
+ : inst.quote;
189
+ console.log(` ${colors.ui.bullet('•')} ${colors.evidence.document(inst.document)} ${colors.evidence.paragraph(`(para ${inst.paragraph})`)}`);
190
+ console.log(` ${colors.evidence.quote(`"${truncatedQuote}"`)}`);
191
+ }
192
+ if (concept.instances.length > 2) {
193
+ console.log(` ${colors.status.dim(`... and ${concept.instances.length - 2} more`)}`);
194
+ }
195
+ }
196
+ // Display relationships (max 3)
197
+ if (concept.relationships.length > 0) {
198
+ console.log(` ${colors.ui.key('Relationships:')} ${colors.status.dim(`(${concept.relationships.length})`)}`);
199
+ for (const rel of concept.relationships.slice(0, 3)) {
200
+ const relColor = (0, colors_1.getRelationshipColor)(rel.rel_type);
201
+ const confidence = rel.confidence ? ` ${colors.status.dim(`[${(rel.confidence * 100).toFixed(0)}%]`)}` : '';
202
+ console.log(` ${colors.path.arrow('→')} ${relColor(rel.rel_type)} ${colors.path.arrow('→')} ${colors.concept.label(rel.to_label)}${confidence}`);
203
+ }
204
+ if (concept.relationships.length > 3) {
205
+ console.log(` ${colors.status.dim(`... and ${concept.relationships.length - 3} more`)}`);
206
+ }
207
+ }
208
+ console.log();
209
+ }
210
+ catch (err) {
211
+ console.log(colors.ui.bullet('●') + ' ' + colors.status.error(`${i + 1}. Failed to load: ${conceptId}`));
212
+ console.log(` ${colors.status.dim(err.message)}`);
213
+ console.log();
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ catch (error) {
220
+ console.error(colors.status.error('✗ Document search failed'));
221
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
222
+ process.exit(1);
223
+ }
224
+ });
225
+ // kg document list
226
+ const listCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('list'), 'List all documents', 'List all documents (DocumentMeta nodes) in the knowledge graph. Filter by ontology to see documents from specific collections.')
227
+ .option('-o, --ontology <name>', 'Filter by ontology name (partial match)')
228
+ .option('-l, --limit <n>', 'Maximum documents to return', '50')
229
+ .option('--offset <n>', 'Skip N documents (pagination)', '0')
230
+ .option('-j, --json', 'Output raw JSON')
231
+ .showHelpAfterError()
232
+ .action(async (options) => {
233
+ try {
234
+ const client = (0, client_1.createClientFromEnv)();
235
+ const result = await client.listDocuments({
236
+ ontology: options.ontology,
237
+ limit: parseInt(options.limit),
238
+ offset: parseInt(options.offset),
239
+ });
240
+ if (options.json) {
241
+ console.log(JSON.stringify(result, null, 2));
242
+ return;
243
+ }
244
+ if (result.documents.length === 0) {
245
+ console.log(colors.status.warning('\n⚠ No documents found'));
246
+ if (options.ontology) {
247
+ console.log(colors.status.dim(` Try a different ontology filter or remove -o`));
248
+ }
249
+ return;
250
+ }
251
+ console.log('\n' + colors.ui.title('📄 Documents'));
252
+ console.log(colors.status.dim(` Showing ${result.documents.length} of ${result.total} documents\n`));
253
+ const table = new table_1.Table({
254
+ columns: [
255
+ { header: 'Filename', field: 'filename', type: 'heading', width: 30 },
256
+ { header: 'Ontology', field: 'ontology', type: 'text', width: 'flex' },
257
+ { header: 'Type', field: 'content_type', type: 'text', width: 10 },
258
+ { header: 'Sources', field: 'source_count', type: 'count', width: 8, align: 'right' },
259
+ { header: 'Concepts', field: 'concept_count', type: 'count', width: 10, align: 'right' },
260
+ ]
261
+ });
262
+ table.print(result.documents);
263
+ if (result.total > result.documents.length) {
264
+ console.log(colors.status.dim(`\n Use --offset ${result.offset + result.documents.length} to see more`));
265
+ }
266
+ }
267
+ catch (error) {
268
+ console.error(colors.status.error('✗ Failed to list documents'));
269
+ console.error(colors.status.error(error.response?.data?.detail || error.message));
270
+ process.exit(1);
271
+ }
272
+ });
273
+ // kg document show <document-id>
274
+ const showCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('show'), 'Show document content', 'Retrieve and display the full content of a document from Garage storage. Shows the original document text plus source chunks created during ingestion.')
275
+ .argument('<document-id>', 'Document ID (e.g., sha256:abc123...)')
276
+ .option('-c, --chunks', 'Show source chunks instead of full document')
277
+ .option('-j, --json', 'Output raw JSON')
278
+ .showHelpAfterError()
279
+ .action(async (documentId, options) => {
280
+ try {
281
+ const client = (0, client_1.createClientFromEnv)();
282
+ const result = await client.getDocumentContent(documentId);
283
+ if (options.json) {
284
+ console.log(JSON.stringify(result, null, 2));
285
+ return;
286
+ }
287
+ console.log();
288
+ console.log(colors.ui.header(`Document: ${documentId.substring(0, 50)}...`));
289
+ console.log(colors.separator());
290
+ console.log(`${colors.ui.key('Type:')} ${colors.ui.value(result.content_type)}`);
291
+ console.log(`${colors.ui.key('Chunks:')} ${colors.ui.value(String(result.chunks.length))}`);
292
+ console.log();
293
+ if (options.chunks) {
294
+ // Show chunks
295
+ console.log(colors.ui.header('Source Chunks'));
296
+ console.log();
297
+ for (const chunk of result.chunks) {
298
+ console.log(colors.ui.bullet(chunk.paragraph) + ' ' + colors.status.dim(`[${chunk.source_id}]`));
299
+ const preview = chunk.full_text.length > 200
300
+ ? chunk.full_text.substring(0, 200) + '...'
301
+ : chunk.full_text;
302
+ console.log(colors.status.dim(preview));
303
+ console.log();
304
+ }
305
+ }
306
+ else {
307
+ // Show full document
308
+ console.log(colors.ui.header('Content'));
309
+ console.log();
310
+ if (result.content_type === 'image') {
311
+ if (result.content.prose) {
312
+ console.log(result.content.prose);
313
+ }
314
+ if (result.content.image) {
315
+ console.log(colors.status.dim(`\n[Image data: ${result.content.image.length} bytes base64]`));
316
+ }
317
+ }
318
+ else {
319
+ if (result.content.document) {
320
+ console.log(result.content.document);
321
+ }
322
+ else if (result.content.error) {
323
+ console.log(colors.status.error(`Error retrieving content: ${result.content.error}`));
324
+ }
325
+ else {
326
+ console.log(colors.status.warning('No document content available'));
327
+ }
328
+ }
329
+ }
330
+ }
331
+ catch (error) {
332
+ if (error.response?.status === 404) {
333
+ console.error(colors.status.error(`✗ Document not found: ${documentId}`));
334
+ }
335
+ else {
336
+ console.error(colors.status.error(`✗ Failed to retrieve document: ${error.message}`));
337
+ if (error.response?.data?.detail) {
338
+ console.error(colors.status.error(error.response.data.detail));
339
+ }
340
+ }
341
+ process.exit(1);
342
+ }
343
+ });
344
+ // kg document concepts <document-id>
345
+ const conceptsCommand = (0, help_formatter_1.setCommandHelp)(new commander_1.Command('concepts'), 'List concepts from a document', 'Show all concepts extracted from a specific document. Displays concept names, IDs, and the source chunks where they appear. Use --details for full concept information including evidence and relationships.')
346
+ .argument('<document-id>', 'Document ID (e.g., sha256:abc123...)')
347
+ .option('-d, --details', 'Show full concept details (evidence, relationships, grounding)')
348
+ .option('-j, --json', 'Output raw JSON')
349
+ .showHelpAfterError()
350
+ .action(async (documentId, options) => {
351
+ try {
352
+ const client = (0, client_1.createClientFromEnv)();
353
+ const result = await client.getDocumentConcepts(documentId);
354
+ if (options.json) {
355
+ console.log(JSON.stringify(result, null, 2));
356
+ return;
357
+ }
358
+ console.log();
359
+ console.log(colors.ui.header(`Concepts: ${result.filename}`));
360
+ console.log(colors.separator());
361
+ console.log(`${colors.ui.key('Document:')} ${colors.status.dim(documentId.substring(0, 50) + '...')}`);
362
+ console.log(`${colors.ui.key('Total:')} ${colors.ui.value(String(result.total))} concept(s)`);
363
+ console.log();
364
+ if (result.concepts.length === 0) {
365
+ console.log(colors.status.warning('⚠ No concepts found for this document'));
366
+ console.log(colors.status.dim(' The document may not have HAS_SOURCE relationships (ingested before fix)'));
367
+ return;
368
+ }
369
+ if (options.details) {
370
+ // Detailed view: fetch full details for each concept
371
+ const uniqueConceptIds = [...new Set(result.concepts.map(c => c.concept_id))];
372
+ console.log(colors.status.dim(`Fetching details for ${uniqueConceptIds.length} unique concepts...\n`));
373
+ for (const [i, conceptId] of uniqueConceptIds.entries()) {
374
+ try {
375
+ const concept = await client.getConceptDetails(conceptId, true);
376
+ console.log(colors.ui.bullet('●') + ' ' + colors.concept.label(`${i + 1}. ${concept.label}`));
377
+ if (concept.description) {
378
+ console.log(` ${colors.status.dim(concept.description)}`);
379
+ }
380
+ console.log(` ${colors.ui.key('ID:')} ${colors.concept.id(concept.concept_id)}`);
381
+ console.log(` ${colors.ui.key('Documents:')} ${colors.evidence.document(concept.documents.join(', '))}`);
382
+ console.log(` ${colors.ui.key('Evidence:')} ${colors.evidence.count(String(concept.instances.length))} instances`);
383
+ // Display grounding
384
+ if (concept.grounding_strength !== undefined) {
385
+ console.log(` ${colors.ui.key('Grounding:')} ${formatGrounding(concept.grounding_strength, concept.grounding_display, concept.confidence_score)}`);
386
+ }
387
+ // Display sample evidence (max 2)
388
+ if (concept.instances.length > 0) {
389
+ console.log(` ${colors.ui.key('Sample Evidence:')}`);
390
+ for (const inst of concept.instances.slice(0, 2)) {
391
+ const truncatedQuote = inst.quote.length > 100
392
+ ? inst.quote.substring(0, 100) + '...'
393
+ : inst.quote;
394
+ console.log(` ${colors.ui.bullet('•')} ${colors.evidence.document(inst.document)} ${colors.evidence.paragraph(`(para ${inst.paragraph})`)}`);
395
+ console.log(` ${colors.evidence.quote(`"${truncatedQuote}"`)}`);
396
+ }
397
+ if (concept.instances.length > 2) {
398
+ console.log(` ${colors.status.dim(`... and ${concept.instances.length - 2} more`)}`);
399
+ }
400
+ }
401
+ // Display relationships (max 5)
402
+ if (concept.relationships.length > 0) {
403
+ console.log(` ${colors.ui.key('Relationships:')} ${colors.status.dim(`(${concept.relationships.length})`)}`);
404
+ for (const rel of concept.relationships.slice(0, 5)) {
405
+ const relColor = (0, colors_1.getRelationshipColor)(rel.rel_type);
406
+ const confidence = rel.confidence ? ` ${colors.status.dim(`[${(rel.confidence * 100).toFixed(0)}%]`)}` : '';
407
+ console.log(` ${colors.path.arrow('→')} ${relColor(rel.rel_type)} ${colors.path.arrow('→')} ${colors.concept.label(rel.to_label)}${confidence}`);
408
+ }
409
+ if (concept.relationships.length > 5) {
410
+ console.log(` ${colors.status.dim(`... and ${concept.relationships.length - 5} more`)}`);
411
+ }
412
+ }
413
+ console.log();
414
+ }
415
+ catch (err) {
416
+ console.log(colors.ui.bullet('●') + ' ' + colors.status.error(`${i + 1}. Failed to load: ${conceptId}`));
417
+ console.log(` ${colors.status.dim(err.message)}`);
418
+ console.log();
419
+ }
420
+ }
421
+ }
422
+ else {
423
+ // Table view (default)
424
+ const table = new table_1.Table({
425
+ columns: [
426
+ { header: 'Concept', field: 'name', type: 'heading', width: 'flex' },
427
+ { header: 'Concept ID', field: 'concept_id', type: 'concept_id', width: 28 },
428
+ { header: 'Source', field: 'source_id', type: 'text', width: 22 },
429
+ { header: 'Instances', field: 'instance_count', type: 'count', width: 10, align: 'right' },
430
+ ]
431
+ });
432
+ const displayData = result.concepts.map(c => ({
433
+ ...c,
434
+ concept_id: c.concept_id.length > 26 ? c.concept_id.substring(0, 26) + '…' : c.concept_id,
435
+ source_id: c.source_id.length > 20 ? c.source_id.substring(0, 20) + '…' : c.source_id,
436
+ }));
437
+ table.print(displayData);
438
+ console.log(colors.status.dim(`\nTip: Use --details for full concept information`));
439
+ }
440
+ }
441
+ catch (error) {
442
+ if (error.response?.status === 404) {
443
+ console.error(colors.status.error(`✗ Document not found: ${documentId}`));
444
+ }
445
+ else {
446
+ console.error(colors.status.error(`✗ Failed to get concepts: ${error.message}`));
447
+ if (error.response?.data?.detail) {
448
+ console.error(colors.status.error(error.response.data.detail));
449
+ }
450
+ }
451
+ process.exit(1);
452
+ }
453
+ });
454
+ exports.documentCommand.addCommand(searchCommand);
455
+ exports.documentCommand.addCommand(listCommand);
456
+ exports.documentCommand.addCommand(showCommand);
457
+ exports.documentCommand.addCommand(conceptsCommand);
458
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/cli/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Group Management Commands (ADR-082)
3
+ *
4
+ * CLI commands for managing groups and group membership.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const groupCommand: Command;
8
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/cli/group.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,YAAY,SAmJtB,CAAC"}