@graphit/cli 0.1.4 → 0.1.6

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 (68) hide show
  1. package/dist/api/client.d.ts +16 -0
  2. package/dist/api/client.js +67 -0
  3. package/dist/api/client.js.map +1 -0
  4. package/dist/auth/credentials.d.ts +15 -0
  5. package/dist/auth/credentials.js +34 -0
  6. package/dist/auth/credentials.js.map +1 -0
  7. package/dist/auth/login.d.ts +2 -0
  8. package/dist/auth/login.js +230 -0
  9. package/dist/auth/login.js.map +1 -0
  10. package/dist/auth/token.d.ts +5 -0
  11. package/dist/auth/token.js +42 -0
  12. package/dist/auth/token.js.map +1 -0
  13. package/dist/commands/auth.d.ts +2 -0
  14. package/dist/commands/auth.js +68 -0
  15. package/dist/commands/auth.js.map +1 -0
  16. package/dist/commands/connector.d.ts +2 -0
  17. package/dist/commands/connector.js +97 -0
  18. package/dist/commands/connector.js.map +1 -0
  19. package/dist/commands/dashboard.d.ts +2 -0
  20. package/dist/commands/dashboard.js +124 -0
  21. package/dist/commands/dashboard.js.map +1 -0
  22. package/dist/commands/ds.d.ts +2 -0
  23. package/dist/commands/ds.js +53 -0
  24. package/dist/commands/ds.js.map +1 -0
  25. package/dist/commands/kb.d.ts +2 -0
  26. package/dist/commands/kb.js +505 -0
  27. package/dist/commands/kb.js.map +1 -0
  28. package/dist/commands/query.d.ts +2 -0
  29. package/dist/commands/query.js +61 -0
  30. package/dist/commands/query.js.map +1 -0
  31. package/dist/commands/setup.d.ts +2 -0
  32. package/dist/commands/setup.js +173 -0
  33. package/dist/commands/setup.js.map +1 -0
  34. package/dist/config.d.ts +4 -0
  35. package/dist/config.js +9 -0
  36. package/dist/config.js.map +1 -0
  37. package/dist/index.d.ts +2 -0
  38. package/dist/index.js +27 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/output/format.d.ts +8 -0
  41. package/dist/output/format.js +30 -0
  42. package/dist/output/format.js.map +1 -0
  43. package/dist/output/json.d.ts +1 -0
  44. package/dist/output/json.js +4 -0
  45. package/dist/output/json.js.map +1 -0
  46. package/dist/output/table.d.ts +2 -0
  47. package/dist/output/table.js +17 -0
  48. package/dist/output/table.js.map +1 -0
  49. package/dist/update-check.d.ts +3 -0
  50. package/dist/update-check.js +78 -0
  51. package/dist/update-check.js.map +1 -0
  52. package/package.json +1 -1
  53. package/skills/graphit/SKILL.md +84 -8
  54. package/skills/graphit/cursor/graphit-kb-actions.mdc +101 -0
  55. package/skills/graphit/cursor/graphit-kb-awareness.mdc +88 -0
  56. package/skills/graphit/cursor/graphit-kb-explanation.mdc +56 -0
  57. package/skills/graphit/cursor/graphit-kb-exploration.mdc +7 -13
  58. package/skills/graphit/cursor/graphit-kb-graph-structure.mdc +61 -0
  59. package/skills/graphit/cursor/graphit-kb-traversal.mdc +64 -0
  60. package/skills/graphit/cursor/graphit-parameterized-metrics.mdc +95 -0
  61. package/skills/graphit/graphit.mdc +12 -1
  62. package/skills/graphit/references/kb-actions.md +95 -0
  63. package/skills/graphit/references/kb-awareness.md +82 -0
  64. package/skills/graphit/references/kb-explanation.md +50 -0
  65. package/skills/graphit/references/kb-exploration.md +7 -13
  66. package/skills/graphit/references/kb-graph-structure.md +55 -0
  67. package/skills/graphit/references/kb-traversal.md +58 -0
  68. package/skills/graphit/references/parameterized-metrics.md +89 -0
@@ -0,0 +1,505 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { apiClient } from "../api/client.js";
3
+ import { output, errorOutput } from "../output/format.js";
4
+ const ENTITY_COLUMNS = {
5
+ metric: ["id", "name", "description", "calculation", "verified"],
6
+ dimension: ["id", "name", "description", "expression", "verified"],
7
+ table: ["id", "name", "description", "verified"],
8
+ rule: ["id", "name", "description", "verified"],
9
+ domain: ["id", "name", "description", "color"],
10
+ synonym: ["id", "term", "canonical", "canonical_type", "description"],
11
+ template: ["id", "name", "description", "chart_types"],
12
+ relationship: ["id", "name", "primary_table", "primary_column", "description"],
13
+ topic: ["id", "name", "description", "verified"],
14
+ };
15
+ export function registerKBCommands(program) {
16
+ const kb = program.command("kb").description("Knowledge Base operations");
17
+ kb.command("list <type>")
18
+ .description("List KB entities (metric, dimension, table, rule, domain, synonym)")
19
+ .option("--limit <n>", "Max results", "50")
20
+ .option("--verified", "Only verified entities")
21
+ .option("--unverified", "Only unverified entities")
22
+ .action(async function (type) {
23
+ try {
24
+ const opts = this.opts();
25
+ const params = new URLSearchParams({ limit: opts.limit });
26
+ if (opts.verified)
27
+ params.set("verified", "true");
28
+ if (opts.unverified)
29
+ params.set("verified", "false");
30
+ const resp = await apiClient.get(`/api/v1/cli/kb/${type}?${params}`);
31
+ output(this, resp.entities, { columns: ENTITY_COLUMNS[type] });
32
+ }
33
+ catch (err) {
34
+ errorOutput(err);
35
+ }
36
+ });
37
+ kb.command("get <type> <name>")
38
+ .description("Get a KB entity by name")
39
+ .action(async function (type, name) {
40
+ try {
41
+ const resp = await apiClient.get(`/api/v1/cli/kb/${type}/by-name/${encodeURIComponent(name)}`);
42
+ output(this, resp.entity, { keyValue: true });
43
+ }
44
+ catch (err) {
45
+ errorOutput(err);
46
+ }
47
+ });
48
+ kb.command("search <query>")
49
+ .description("Search KB assets across all types")
50
+ .option("--type <type>", "Filter by entity type")
51
+ .option("--limit <n>", "Max results", "20")
52
+ .action(async function (query) {
53
+ try {
54
+ const opts = this.opts();
55
+ const params = new URLSearchParams({ q: query, limit: opts.limit });
56
+ if (opts.type)
57
+ params.set("type", opts.type);
58
+ const resp = await apiClient.get(`/api/v1/cli/kb/search?${params}`);
59
+ output(this, resp.results, { columns: ["type", "name", "description"] });
60
+ }
61
+ catch (err) {
62
+ errorOutput(err);
63
+ }
64
+ });
65
+ kb.command("explore <type> <name>")
66
+ .description("Traverse KB graph (metric -> tables -> dimensions)")
67
+ .action(async function (type, name) {
68
+ try {
69
+ const resp = await apiClient.get(`/api/v1/cli/kb/explore/${type}/${encodeURIComponent(name)}`);
70
+ output(this, resp, { keyValue: true });
71
+ }
72
+ catch (err) {
73
+ errorOutput(err);
74
+ }
75
+ });
76
+ // -- Create commands --
77
+ const create = kb.command("create").description("Create KB entities");
78
+ create
79
+ .command("metric")
80
+ .description("Create a new metric")
81
+ .requiredOption("--name <name>", "Metric name (UPPER_SNAKE_CASE)")
82
+ .requiredOption("--sql <expr>", "SQL calculation expression")
83
+ .requiredOption("--table <table>", "Primary table")
84
+ .option("--description <desc>", "Description", "")
85
+ .option("--topics <topics>", "Comma-separated topic names")
86
+ .action(async function () {
87
+ try {
88
+ const opts = this.opts();
89
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : [];
90
+ const resp = await apiClient.post("/api/v1/cli/kb/metric", {
91
+ name: opts.name,
92
+ calculation: opts.sql,
93
+ table: opts.table,
94
+ description: opts.description,
95
+ topics,
96
+ });
97
+ output(this, resp.entity, { keyValue: true });
98
+ }
99
+ catch (err) {
100
+ errorOutput(err);
101
+ }
102
+ });
103
+ create
104
+ .command("dimension")
105
+ .description("Create a new dimension")
106
+ .requiredOption("--name <name>", "Dimension name (UPPER_SNAKE_CASE)")
107
+ .requiredOption("--expr <expr>", "SQL expression")
108
+ .requiredOption("--table <table>", "Primary table")
109
+ .option("--type <type>", "Dimension type", "categorical")
110
+ .option("--description <desc>", "Description", "")
111
+ .option("--topics <topics>", "Comma-separated topic names")
112
+ .action(async function () {
113
+ try {
114
+ const opts = this.opts();
115
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : [];
116
+ const resp = await apiClient.post("/api/v1/cli/kb/dimension", {
117
+ name: opts.name,
118
+ expression: opts.expr,
119
+ table: opts.table,
120
+ type: opts.type,
121
+ description: opts.description,
122
+ topics,
123
+ });
124
+ output(this, resp.entity, { keyValue: true });
125
+ }
126
+ catch (err) {
127
+ errorOutput(err);
128
+ }
129
+ });
130
+ create
131
+ .command("rule")
132
+ .description("Create a new rule")
133
+ .requiredOption("--name <name>", "Rule name (UPPER_SNAKE_CASE)")
134
+ .requiredOption("--sql <expr>", "Rule content/SQL")
135
+ .requiredOption("--table <table>", "Referenced table")
136
+ .option("--description <desc>", "Description", "")
137
+ .option("--topics <topics>", "Comma-separated topic names")
138
+ .action(async function () {
139
+ try {
140
+ const opts = this.opts();
141
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : [];
142
+ const resp = await apiClient.post("/api/v1/cli/kb/rule", {
143
+ name: opts.name,
144
+ content: opts.sql,
145
+ table: opts.table,
146
+ description: opts.description,
147
+ topics,
148
+ });
149
+ output(this, resp.entity, { keyValue: true });
150
+ }
151
+ catch (err) {
152
+ errorOutput(err);
153
+ }
154
+ });
155
+ create
156
+ .command("table")
157
+ .description("Tables are created via data sources. Use `graphit ds create`.")
158
+ .action(function () {
159
+ console.error(JSON.stringify({
160
+ error: "Tables are created via data sources. Use `graphit ds create` instead.",
161
+ }));
162
+ process.exit(1);
163
+ });
164
+ create
165
+ .command("domain")
166
+ .description("Create a new domain")
167
+ .requiredOption("--name <name>", "Domain name (UPPER_SNAKE_CASE)")
168
+ .option("--description <desc>", "Description", "")
169
+ .option("--color <hex>", "Hex color for UI", "#4DB6AC")
170
+ .action(async function () {
171
+ try {
172
+ const opts = this.opts();
173
+ const resp = await apiClient.post("/api/v1/cli/kb/domain", {
174
+ name: opts.name,
175
+ description: opts.description,
176
+ color: opts.color,
177
+ });
178
+ output(this, resp.entity, { keyValue: true });
179
+ }
180
+ catch (err) {
181
+ errorOutput(err);
182
+ }
183
+ });
184
+ create
185
+ .command("synonym")
186
+ .description("Create a new synonym")
187
+ .requiredOption("--term <term>", "Synonym term (e.g., GMV)")
188
+ .requiredOption("--canonical <name>", "Canonical asset name (e.g., TOTAL_REVENUE)")
189
+ .requiredOption("--type <type>", "Canonical type: metric, column, or table")
190
+ .option("--description <desc>", "Description", "")
191
+ .action(async function () {
192
+ try {
193
+ const opts = this.opts();
194
+ const resp = await apiClient.post("/api/v1/cli/kb/synonym", {
195
+ term: opts.term,
196
+ canonical: opts.canonical,
197
+ canonical_type: opts.type,
198
+ description: opts.description,
199
+ });
200
+ output(this, resp.entity, { keyValue: true });
201
+ }
202
+ catch (err) {
203
+ errorOutput(err);
204
+ }
205
+ });
206
+ create
207
+ .command("relationship")
208
+ .description("Create a new relationship (JOIN between tables)")
209
+ .requiredOption("--name <name>", "Relationship name (e.g., ORDERS_TO_CUSTOMERS)")
210
+ .requiredOption("--primary-table <table>", "Primary table")
211
+ .requiredOption("--primary-column <col>", "Primary column")
212
+ .requiredOption("--related-table <table>", "Related table")
213
+ .requiredOption("--related-column <col>", "Related column")
214
+ .option("--description <desc>", "Description", "")
215
+ .action(async function () {
216
+ try {
217
+ const opts = this.opts();
218
+ const resp = await apiClient.post("/api/v1/cli/kb/relationship", {
219
+ name: opts.name,
220
+ primary_table: opts.primaryTable,
221
+ primary_column: opts.primaryColumn,
222
+ related_table: opts.relatedTable,
223
+ related_column: opts.relatedColumn,
224
+ description: opts.description,
225
+ });
226
+ output(this, resp.entity, { keyValue: true });
227
+ }
228
+ catch (err) {
229
+ errorOutput(err);
230
+ }
231
+ });
232
+ create
233
+ .command("topic")
234
+ .description("Create a new topic (business-concept tag)")
235
+ .requiredOption("--name <name>", "Topic name (UPPER_SNAKE_CASE)")
236
+ .option("--description <desc>", "Description", "")
237
+ .action(async function () {
238
+ try {
239
+ const opts = this.opts();
240
+ const resp = await apiClient.post("/api/v1/cli/kb/topic", {
241
+ name: opts.name,
242
+ description: opts.description,
243
+ });
244
+ output(this, resp.entity, { keyValue: true });
245
+ }
246
+ catch (err) {
247
+ errorOutput(err);
248
+ }
249
+ });
250
+ create
251
+ .command("template")
252
+ .description("Create a reusable chart template")
253
+ .requiredOption("--name <name>", "Template name (UPPER_SNAKE_CASE)")
254
+ .option("--render-code <code>", "JS function body for rendering")
255
+ .option("--file <path>", "Read render code from a local file")
256
+ .option("--description <desc>", "Description", "")
257
+ .option("--chart-types <types>", "Related chart types (comma-separated)", "")
258
+ .action(async function () {
259
+ try {
260
+ const opts = this.opts();
261
+ let renderCode;
262
+ if (opts.file) {
263
+ renderCode = await readFile(opts.file, "utf-8");
264
+ }
265
+ else if (opts.renderCode) {
266
+ renderCode = opts.renderCode;
267
+ }
268
+ else {
269
+ console.error(JSON.stringify({ error: "Provide --render-code or --file" }));
270
+ process.exit(1);
271
+ }
272
+ const chartTypes = opts.chartTypes
273
+ ? opts.chartTypes.split(",").map((s) => s.trim()).filter(Boolean)
274
+ : [];
275
+ const resp = await apiClient.post("/api/v1/cli/kb/template", {
276
+ name: opts.name,
277
+ render_code: renderCode,
278
+ description: opts.description,
279
+ chart_types: chartTypes,
280
+ });
281
+ output(this, resp.entity, { keyValue: true });
282
+ }
283
+ catch (err) {
284
+ errorOutput(err);
285
+ }
286
+ });
287
+ // -- Update commands --
288
+ const update = kb.command("update").description("Update KB entities");
289
+ update
290
+ .command("metric <name>")
291
+ .description("Update a metric")
292
+ .option("--sql <expr>", "New SQL calculation")
293
+ .option("--table <table>", "New primary table")
294
+ .option("--description <desc>", "New description")
295
+ .option("--topics <topics>", "Comma-separated topic names (replaces existing)")
296
+ .option("--secondary-tables <tables>", "Comma-separated secondary table names (replaces existing)")
297
+ .action(async function (name) {
298
+ try {
299
+ const opts = this.opts();
300
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
301
+ const secondaryTables = opts.secondaryTables ? opts.secondaryTables.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
302
+ const resp = await apiClient.put(`/api/v1/cli/kb/metric/${encodeURIComponent(name)}`, {
303
+ calculation: opts.sql ?? null,
304
+ table: opts.table ?? null,
305
+ description: opts.description ?? null,
306
+ topics: topics ?? null,
307
+ secondary_tables: secondaryTables ?? null,
308
+ });
309
+ output(this, resp.entity, { keyValue: true });
310
+ }
311
+ catch (err) {
312
+ errorOutput(err);
313
+ }
314
+ });
315
+ update
316
+ .command("dimension <name>")
317
+ .description("Update a dimension")
318
+ .option("--expr <expr>", "New SQL expression")
319
+ .option("--table <table>", "New primary table")
320
+ .option("--description <desc>", "New description")
321
+ .option("--topics <topics>", "Comma-separated topic names (replaces existing)")
322
+ .option("--secondary-tables <tables>", "Comma-separated secondary table names (replaces existing)")
323
+ .action(async function (name) {
324
+ try {
325
+ const opts = this.opts();
326
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
327
+ const secondaryTables = opts.secondaryTables ? opts.secondaryTables.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
328
+ const resp = await apiClient.put(`/api/v1/cli/kb/dimension/${encodeURIComponent(name)}`, {
329
+ expression: opts.expr ?? null,
330
+ table: opts.table ?? null,
331
+ description: opts.description ?? null,
332
+ topics: topics ?? null,
333
+ secondary_tables: secondaryTables ?? null,
334
+ });
335
+ output(this, resp.entity, { keyValue: true });
336
+ }
337
+ catch (err) {
338
+ errorOutput(err);
339
+ }
340
+ });
341
+ update
342
+ .command("rule <name>")
343
+ .description("Update a rule")
344
+ .option("--sql <expr>", "New rule content")
345
+ .option("--description <desc>", "New description")
346
+ .option("--topics <topics>", "Comma-separated topic names (replaces existing)")
347
+ .option("--secondary-tables <tables>", "Comma-separated secondary table names (replaces existing)")
348
+ .action(async function (name) {
349
+ try {
350
+ const opts = this.opts();
351
+ const topics = opts.topics ? opts.topics.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
352
+ const secondaryTables = opts.secondaryTables ? opts.secondaryTables.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
353
+ const resp = await apiClient.put(`/api/v1/cli/kb/rule/${encodeURIComponent(name)}`, {
354
+ content: opts.sql ?? null,
355
+ description: opts.description ?? null,
356
+ topics: topics ?? null,
357
+ secondary_tables: secondaryTables ?? null,
358
+ });
359
+ output(this, resp.entity, { keyValue: true });
360
+ }
361
+ catch (err) {
362
+ errorOutput(err);
363
+ }
364
+ });
365
+ update
366
+ .command("template <name>")
367
+ .description("Update a template")
368
+ .option("--render-code <code>", "New JS function body")
369
+ .option("--file <path>", "Read render code from a local file")
370
+ .option("--description <desc>", "New description")
371
+ .action(async function (name) {
372
+ try {
373
+ const opts = this.opts();
374
+ let renderCode = opts.renderCode ?? null;
375
+ if (opts.file) {
376
+ renderCode = await readFile(opts.file, "utf-8");
377
+ }
378
+ const resp = await apiClient.put(`/api/v1/cli/kb/template/${encodeURIComponent(name)}`, {
379
+ render_code: renderCode,
380
+ description: opts.description ?? null,
381
+ });
382
+ output(this, resp.entity, { keyValue: true });
383
+ }
384
+ catch (err) {
385
+ errorOutput(err);
386
+ }
387
+ });
388
+ update
389
+ .command("table <name>")
390
+ .description("Update a table's description or domain")
391
+ .option("--description <desc>", "New description")
392
+ .option("--domain <domain_id>", "New domain ID")
393
+ .action(async function (name) {
394
+ try {
395
+ const opts = this.opts();
396
+ const resp = await apiClient.put(`/api/v1/cli/kb/table/${encodeURIComponent(name)}`, {
397
+ description: opts.description ?? null,
398
+ domain_id: opts.domain ?? null,
399
+ });
400
+ output(this, resp.entity, { keyValue: true });
401
+ }
402
+ catch (err) {
403
+ errorOutput(err);
404
+ }
405
+ });
406
+ update
407
+ .command("domain <name>")
408
+ .description("Update a domain")
409
+ .option("--description <desc>", "New description")
410
+ .option("--color <hex>", "New hex color")
411
+ .action(async function (name) {
412
+ try {
413
+ const opts = this.opts();
414
+ const resp = await apiClient.put(`/api/v1/cli/kb/domain/${encodeURIComponent(name)}`, {
415
+ description: opts.description ?? null,
416
+ color: opts.color ?? null,
417
+ });
418
+ output(this, resp.entity, { keyValue: true });
419
+ }
420
+ catch (err) {
421
+ errorOutput(err);
422
+ }
423
+ });
424
+ update
425
+ .command("synonym <term>")
426
+ .description("Update a synonym")
427
+ .option("--canonical <name>", "New canonical asset name")
428
+ .option("--type <type>", "New canonical type: metric, column, or table")
429
+ .option("--description <desc>", "New description")
430
+ .action(async function (term) {
431
+ try {
432
+ const opts = this.opts();
433
+ const resp = await apiClient.put(`/api/v1/cli/kb/synonym/${encodeURIComponent(term)}`, {
434
+ canonical: opts.canonical ?? null,
435
+ canonical_type: opts.type ?? null,
436
+ description: opts.description ?? null,
437
+ });
438
+ output(this, resp.entity, { keyValue: true });
439
+ }
440
+ catch (err) {
441
+ errorOutput(err);
442
+ }
443
+ });
444
+ update
445
+ .command("relationship <name>")
446
+ .description("Update a relationship")
447
+ .option("--description <desc>", "New description")
448
+ .option("--primary-table <table>", "New primary table")
449
+ .option("--primary-column <col>", "New primary column")
450
+ .option("--related-table <table>", "New related table")
451
+ .option("--related-column <col>", "New related column")
452
+ .action(async function (name) {
453
+ try {
454
+ const opts = this.opts();
455
+ const resp = await apiClient.put(`/api/v1/cli/kb/relationship/${encodeURIComponent(name)}`, {
456
+ description: opts.description ?? null,
457
+ primary_table: opts.primaryTable ?? null,
458
+ primary_column: opts.primaryColumn ?? null,
459
+ related_table: opts.relatedTable ?? null,
460
+ related_column: opts.relatedColumn ?? null,
461
+ });
462
+ output(this, resp.entity, { keyValue: true });
463
+ }
464
+ catch (err) {
465
+ errorOutput(err);
466
+ }
467
+ });
468
+ update
469
+ .command("topic <name>")
470
+ .description("Update a topic")
471
+ .option("--description <desc>", "New description")
472
+ .action(async function (name) {
473
+ try {
474
+ const opts = this.opts();
475
+ const resp = await apiClient.put(`/api/v1/cli/kb/topic/${encodeURIComponent(name)}`, {
476
+ description: opts.description ?? null,
477
+ });
478
+ output(this, resp.entity, { keyValue: true });
479
+ }
480
+ catch (err) {
481
+ errorOutput(err);
482
+ }
483
+ });
484
+ // -- Delete command --
485
+ kb.command("delete <type> <name>")
486
+ .description("Delete a KB entity (requires --yes flag)")
487
+ .requiredOption("--yes", "Confirm deletion")
488
+ .action(async function (type, name) {
489
+ try {
490
+ const validTypes = ["metric", "dimension", "rule", "template", "synonym", "domain", "relationship", "topic"];
491
+ if (!validTypes.includes(type)) {
492
+ console.error(JSON.stringify({
493
+ error: `Delete not supported for '${type}'. Supported: ${validTypes.join(", ")}`,
494
+ }));
495
+ process.exit(1);
496
+ }
497
+ await apiClient.delete(`/api/v1/cli/kb/${type}/${encodeURIComponent(name)}`);
498
+ console.log(JSON.stringify({ status: "deleted", type, name: name.toUpperCase() }));
499
+ }
500
+ catch (err) {
501
+ errorOutput(err);
502
+ }
503
+ });
504
+ }
505
+ //# sourceMappingURL=kb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kb.js","sourceRoot":"","sources":["../../src/commands/kb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerQueryCommands(program: Command): void;
@@ -0,0 +1,61 @@
1
+ import { apiClient } from "../api/client.js";
2
+ import { output, errorOutput } from "../output/format.js";
3
+ export function registerQueryCommands(program) {
4
+ program
5
+ .command("query <sql>")
6
+ .description("Run SQL against a cached data source or live Snowflake")
7
+ .option("--ds <id>", "Data source ID (cached, ~100ms)")
8
+ .option("--warehouse", "Query live Snowflake (~10s)")
9
+ .option("--connection <id>", "Snowflake connection ID (for --warehouse)")
10
+ .option("--limit <n>", "Max rows returned", "50")
11
+ .action(async function (sql) {
12
+ try {
13
+ const opts = this.opts();
14
+ const resp = await apiClient.post("/api/v1/cli/query", {
15
+ sql,
16
+ data_source_id: opts.ds || null,
17
+ warehouse: !!opts.warehouse,
18
+ connection_id: opts.connection || null,
19
+ limit: parseInt(opts.limit, 10),
20
+ });
21
+ output(this, resp);
22
+ }
23
+ catch (err) {
24
+ errorOutput(err);
25
+ }
26
+ });
27
+ const metadata = program.command("metadata").description("Snowflake metadata");
28
+ metadata
29
+ .command("schemas")
30
+ .description("List Snowflake schemas")
31
+ .requiredOption("--connection <id>", "Connection ID")
32
+ .action(async function () {
33
+ try {
34
+ const opts = this.opts();
35
+ const resp = await apiClient.get(`/api/v1/cli/metadata/schemas?connection_id=${opts.connection}`);
36
+ output(this, resp.schemas.map((s) => ({ schema: s })), { columns: ["schema"] });
37
+ }
38
+ catch (err) {
39
+ errorOutput(err);
40
+ }
41
+ });
42
+ metadata
43
+ .command("tables")
44
+ .description("List tables in a Snowflake schema")
45
+ .requiredOption("--connection <id>", "Connection ID")
46
+ .option("--schema <name>", "Schema name")
47
+ .action(async function () {
48
+ try {
49
+ const opts = this.opts();
50
+ const params = new URLSearchParams({ connection_id: opts.connection });
51
+ if (opts.schema)
52
+ params.set("schema", opts.schema);
53
+ const resp = await apiClient.get(`/api/v1/cli/metadata/tables?${params}`);
54
+ output(this, resp.tables.map((t) => ({ table: t })), { columns: ["table"] });
55
+ }
56
+ catch (err) {
57
+ errorOutput(err);
58
+ }
59
+ });
60
+ }
61
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSetupCommand(program: Command): void;