@graphit/cli 0.2.114 → 0.2.140

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 (45) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/README.md +2 -0
  5. package/bin/graphit +1 -1
  6. package/bin/graphit.ps1 +1 -1
  7. package/commands/doctor.md +14 -0
  8. package/commands/help.md +26 -0
  9. package/commands/login.md +13 -0
  10. package/commands/logout.md +11 -0
  11. package/commands/update.md +16 -0
  12. package/dist/commands/dashboard.js +126 -3
  13. package/dist/commands/dashboard.js.map +1 -1
  14. package/dist/commands/ds-config.d.ts +45 -0
  15. package/dist/commands/ds-config.js +122 -0
  16. package/dist/commands/ds-config.js.map +1 -0
  17. package/dist/commands/ds.d.ts +0 -45
  18. package/dist/commands/ds.js +2 -126
  19. package/dist/commands/ds.js.map +1 -1
  20. package/dist/commands/governance.js +1 -17
  21. package/dist/commands/governance.js.map +1 -1
  22. package/dist/commands/kb-create.js +2 -2
  23. package/dist/commands/kb-create.js.map +1 -1
  24. package/dist/commands/kb-update.js +2 -2
  25. package/dist/commands/kb-update.js.map +1 -1
  26. package/dist/commands/query.d.ts +38 -0
  27. package/dist/commands/query.js +138 -11
  28. package/dist/commands/query.js.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/skill-guard.d.ts +4 -0
  32. package/dist/skill-guard.js +75 -0
  33. package/dist/skill-guard.js.map +1 -0
  34. package/package.json +2 -1
  35. package/scripts/plugin-status.mjs +49 -0
  36. package/skills/graphit/SKILL.md +15 -12
  37. package/skills/graphit/VERSION.json +1 -1
  38. package/skills/graphit/cursor/graphit-sql-reference.mdc +2 -2
  39. package/skills/graphit/graphit.mdc +6 -9
  40. package/skills/graphit/references/governance-explained.md +2 -2
  41. package/skills/graphit/references/governance.md +22 -17
  42. package/skills/graphit/references/kb-actions.md +2 -3
  43. package/skills/graphit/references/kb-traversal.md +1 -1
  44. package/skills/graphit/references/operations.md +1 -1
  45. package/skills/graphit/references/runtime.md +5 -1
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Graphit CLI plugin for AI coding assistants",
10
- "version": "0.2.114"
10
+ "version": "0.2.140"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -16,9 +16,9 @@
16
16
  "source": {
17
17
  "source": "npm",
18
18
  "package": "@graphit/cli",
19
- "version": "0.2.114"
19
+ "version": "0.2.140"
20
20
  },
21
- "version": "0.2.114",
21
+ "version": "0.2.140",
22
22
  "category": "data-visualization",
23
23
  "tags": [
24
24
  "bi",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphit",
3
- "version": "0.2.114",
3
+ "version": "0.2.140",
4
4
  "description": "Build custom HTML dashboards from real data using the Graphit CLI. KB-aware queries, entity wrapping, cached data sources.",
5
5
  "author": {
6
6
  "name": "Graphit",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphit",
3
- "version": "0.2.114",
3
+ "version": "0.2.140",
4
4
  "description": "Build custom HTML dashboards from real data using the Graphit CLI. KB-aware queries, entity wrapping, cached data sources.",
5
5
  "author": {
6
6
  "name": "Graphit",
package/README.md CHANGED
@@ -51,6 +51,8 @@ graphit setup
51
51
 
52
52
  Either path installs the Graphit skill so the assistant can drive the CLI on your behalf.
53
53
 
54
+ > **Start a new session after installing the plugin.** Claude Code (and Codex) load plugin skills and commands at session start, so the Graphit skill, `/graphit`, and the `graphit` commands are not available in the session you installed from. Open a new session first - otherwise the assistant will not have the skill loaded and will improvise instead of following the guided workflow.
55
+
54
56
  ## Authenticate
55
57
 
56
58
  ```bash
package/bin/graphit CHANGED
@@ -14,7 +14,7 @@ if [ -z "${GRAPHIT_PLUGIN_ROOT:-}" ]; then
14
14
  fi
15
15
 
16
16
  # graphit:floor (stamped by scripts/sync-plugin-version.mjs from cli/package.json)
17
- FLOOR_VERSION="0.2.114"
17
+ FLOOR_VERSION="0.2.140"
18
18
 
19
19
  PACKAGE_NAME="@graphit/cli"
20
20
  # Strict semver: anything else is rejected so a tampered cache cannot inject.
package/bin/graphit.ps1 CHANGED
@@ -7,7 +7,7 @@ if (-not $env:GRAPHIT_PLUGIN_ROOT) {
7
7
  }
8
8
 
9
9
  # graphit:floor (stamped by scripts/sync-plugin-version.mjs from cli/package.json)
10
- $FloorVersion = "0.2.114"
10
+ $FloorVersion = "0.2.140"
11
11
 
12
12
  $PackageName = "@graphit/cli"
13
13
  # Strict semver: anything else is rejected so a tampered cache cannot inject.
@@ -0,0 +1,14 @@
1
+ ---
2
+ description: Report Graphit plugin health - installed vs latest version, login status, and any issues needing action. Use when the user asks to check Graphit's status or health, "is Graphit working", "am I logged in to Graphit", "graphit doctor", or "what version of Graphit".
3
+ allowed-tools: Bash(node:*)
4
+ ---
5
+
6
+ !`node "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-status.mjs" --json`
7
+
8
+ The JSON above is the current Graphit plugin health. Present it to the user as a short health report - do not dump the raw JSON:
9
+
10
+ - **Version:** compare `currentVersion` and `latestVersion`. If equal, say Graphit is up to date. If `latestVersion` is higher, note an update is available and mention `/graphit:update`.
11
+ - **Login:** if `auth.logged_in` is true, say "Logged in as {auth.email}". Otherwise say "Not logged in" and mention `/graphit:login`.
12
+ - **Issues:** if `findings` is empty, say everything looks healthy. Otherwise list each finding's `message` followed by its `remediation`.
13
+
14
+ Keep it to a few lines.
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Explain what Graphit is and the first things to try. Use when the user asks "what is Graphit", "what can Graphit do", "how do I get started with Graphit", or wants a Graphit overview or quickstart.
3
+ ---
4
+
5
+ Present this overview to the user, adapting the wording to fit the conversation:
6
+
7
+ ## What Graphit is
8
+
9
+ Graphit turns questions about your business data into governed, shareable answers. Ask in plain language and Graphit answers either as a fast query over cached data or as a hand-authored, interactive HTML dashboard.
10
+
11
+ Everything runs through a governed semantic layer - your team's shared definitions of every metric, dimension, and rule - so numbers are computed the team's way, reusable, and safe to share.
12
+
13
+ ## First things to try
14
+
15
+ - Ask a data question: "how is retention trending this month?", "what's revenue by plan?"
16
+ - Build a dashboard: "build me a dashboard for weekly active users and spend"
17
+ - Manage your knowledge base: define a metric, a dimension, or a governance rule so future answers reuse it
18
+
19
+ ## Plugin commands
20
+
21
+ - `/graphit:doctor` - check plugin health: installed vs latest version, login status, and anything needing attention
22
+ - `/graphit:update` - update the plugin and CLI to the latest version
23
+ - `/graphit:login` - log in to Graphit (opens your browser)
24
+ - `/graphit:help` - this overview
25
+
26
+ Keep it concise. If the user already seems oriented, offer the first-things-to-try list and stop.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Log in to Graphit (opens a browser for authentication). Use when the user asks to log in, sign in, or authenticate to Graphit, or when a Graphit action just failed because the user is not logged in.
3
+ allowed-tools: Bash(node:*)
4
+ ---
5
+
6
+ !`node "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-status.mjs" --json --skip-network`
7
+
8
+ The JSON above includes `auth.logged_in` and `auth.email`, read from the local credentials file with no network call.
9
+
10
+ - If `auth.logged_in` is true: tell the user they are already logged in as `auth.email`. Do not start a new login unless they explicitly want to switch accounts.
11
+ - If `auth.logged_in` is false (or the user wants to switch accounts): run `graphit auth login` as a Bash command. It opens the user's browser for authentication and waits for them to finish (up to about two minutes). When it returns, confirm the logged-in email and organization from its output.
12
+
13
+ Never ask the user for a password or token in chat - authentication happens entirely in their browser.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Log out of Graphit and clear stored credentials. Use ONLY when the user explicitly asks to log out or sign out of Graphit. Never run this on your own.
3
+ allowed-tools: Bash(node:*)
4
+ ---
5
+
6
+ !`node "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-status.mjs" --json --skip-network`
7
+
8
+ The JSON above includes `auth.logged_in` and `auth.email`, read from the local credentials file with no network call.
9
+
10
+ - If `auth.logged_in` is false: tell the user they are not currently logged in - there is nothing to do.
11
+ - If `auth.logged_in` is true: run `graphit auth logout` as a Bash command. It revokes the session server-side (best effort) and clears the local credentials at `~/.graphit/credentials.json`. Confirm the user has been logged out (they were `auth.email`), and mention they can sign back in with `/graphit:login`.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Update the Graphit plugin and CLI to the latest version. Use ONLY when the user explicitly asks to update or upgrade Graphit. Never run this on your own in response to a startup notice or a "version available" message - only on a direct user request.
3
+ allowed-tools: Bash(node:*)
4
+ ---
5
+
6
+ !`node "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-status.mjs" --json`
7
+
8
+ The JSON above is the current Graphit plugin state, before updating. Update Graphit to the latest version, then report what changed:
9
+
10
+ 1. Note `currentVersion` and `latestVersion`. If they are already equal and `findings` is empty, tell the user Graphit is already up to date and stop - do not run the steps below.
11
+ 2. Update the plugin bundle by running these two Bash commands in order:
12
+ - `claude plugin marketplace update graphit-plugin`
13
+ - `claude plugin update graphit@graphit-plugin`
14
+ 3. If `findings` mentions a legacy global `@graphit/cli` install shadowing the plugin wrapper: explain it to the user and ask them to confirm before you run `npm uninstall -g @graphit/cli`. Run it only after they say yes.
15
+ 4. If step 2 reports the plugin is already current but the status still shows a stale installed bundle, run `graphit plugin status --repair` as a fallback.
16
+ 5. Report the before and after versions. Then tell the user: the plugin bundle is updated on disk, but they must restart Claude Code (quit and relaunch) for the new version to take effect in this session. The CLI binary itself updates automatically.
@@ -1,5 +1,8 @@
1
1
  import { mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import { basename, join, resolve } from "node:path";
3
+ import { tmpdir } from "node:os";
4
+ import { randomUUID } from "node:crypto";
5
+ import open from "open";
3
6
  import { apiClient } from "../api/client.js";
4
7
  import { getFrontendUrl } from "../config.js";
5
8
  import { output, errorOutput, getOutputFormat } from "../output/format.js";
@@ -114,6 +117,33 @@ export async function ensureArtifactsDir(dir) {
114
117
  await writeFile(ignorePath, "*\n");
115
118
  }
116
119
  }
120
+ /**
121
+ * Feature #759: download the entity's staged screenshot (the graph as the user
122
+ * last viewed it) to a local file for the agent to Read. The image can hold
123
+ * sensitive business data, so it goes to the OS temp dir (NOT the repo), with a
124
+ * randomized filename + owner-only perms; OS temp-cleanup reclaims it. Returns an
125
+ * object to merge into the get-entity output: `{ image_path }` on success, or a
126
+ * soft `{ image }` note on any failure - a missing/expired image (404, ~10 min
127
+ * TTL) or a fetch error must never fail the primary get-entity command.
128
+ */
129
+ async function stageEntityImage(id, entityId) {
130
+ try {
131
+ const { buffer } = await apiClient.downloadBinary("GET", `/api/v1/cli/dashboards/${id}/entities/${entityId}/image`);
132
+ // Sanitize the id out of the filename (defense-in-depth vs path traversal);
133
+ // randomUUID guarantees uniqueness so `wx` (fail-if-exists) never collides.
134
+ const safeId = entityId.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 40);
135
+ const path = join(tmpdir(), `graphit-graph-${safeId}-${randomUUID()}.png`);
136
+ await writeFile(path, buffer, { mode: 0o600, flag: "wx" });
137
+ return { image_path: path };
138
+ }
139
+ catch (err) {
140
+ const status = err?.status;
141
+ if (status === 404) {
142
+ return { image: "not available (open the graph in Graphit and retry within ~10 min)" };
143
+ }
144
+ return { image: "could not be downloaded" };
145
+ }
146
+ }
117
147
  export function registerDashboardCommands(program) {
118
148
  const dashboard = program.command("dashboard").description("Custom dashboard management");
119
149
  dashboard
@@ -304,11 +334,29 @@ export function registerDashboardCommands(program) {
304
334
  });
305
335
  dashboard
306
336
  .command("get-entity <id> <entityId>")
307
- .description("Get a single entity's inner HTML (the fragment update-entity accepts)")
337
+ .description("Get a single entity's structured context (label, SQL, KB refs, data source, HTML). Use --with-data to also execute the governed query and return resolved data inline. Use --image for a local PNG of the graph (as last viewed) to Read")
338
+ .option("--with-data", "Execute the entity's SQL and include resolved data (columns, rows, governed SQL, provenance)")
339
+ .option("--params <json>", "JSON filter params to bind into the SQL (e.g. '{\"region\":\"Network\"}'). Used with --with-data to get the filtered view")
340
+ .option("--image", "Download a local PNG of the graph (as the user last viewed it, filters + theme applied) and include its path (image_path) so you can Read it. Best-effort: prints a note if none was staged / it expired (~10 min)")
341
+ .option("--raw", "Print only the inner HTML (legacy behavior)")
308
342
  .action(async function (id, entityId) {
309
343
  try {
310
- const resp = await apiClient.get(`/api/v1/cli/dashboards/${id}/entities/${entityId}`);
311
- console.log(resp.html);
344
+ const opts = this.opts();
345
+ const qsParts = [];
346
+ if (opts.withData)
347
+ qsParts.push("with_data=true");
348
+ if (opts.params)
349
+ qsParts.push(`params=${encodeURIComponent(opts.params)}`);
350
+ const qs = qsParts.length ? `?${qsParts.join("&")}` : "";
351
+ const resp = await apiClient.get(`/api/v1/cli/dashboards/${id}/entities/${entityId}${qs}`);
352
+ if (opts.raw) {
353
+ console.log(resp.html);
354
+ return;
355
+ }
356
+ if (opts.image) {
357
+ Object.assign(resp, await stageEntityImage(id, entityId));
358
+ }
359
+ output(this, resp, { keyValue: true });
312
360
  }
313
361
  catch (err) {
314
362
  errorOutput(err);
@@ -344,6 +392,64 @@ export function registerDashboardCommands(program) {
344
392
  errorOutput(err);
345
393
  }
346
394
  });
395
+ dashboard
396
+ .command("edit <id>")
397
+ .description("Enter edit mode on a shared dashboard: catch the editing session + start a draft, then open it in your browser. Gated (409) if someone else is editing, (423) if locked, (403) if view-only. Private dashboards need no session - edit directly.")
398
+ .option("--no-open", "Skip opening the dashboard in a browser after catching the session")
399
+ .action(async function (id) {
400
+ try {
401
+ const opts = this.opts();
402
+ const resp = await apiClient.post(`/api/v1/cli/dashboards/${id}/edit`, {});
403
+ if (resp.status === "not_required") {
404
+ output(this, {
405
+ status: "not_required",
406
+ id,
407
+ message: "Private dashboard - no editing session needed. Edit directly with `dashboard update-html`.",
408
+ }, { keyValue: true });
409
+ return;
410
+ }
411
+ const url = `${dashboardUrl(id)}?edit=1`;
412
+ const willOpen = opts.open !== false;
413
+ if (willOpen)
414
+ await open(url);
415
+ output(this, {
416
+ status: "editing",
417
+ id,
418
+ url,
419
+ message: willOpen
420
+ ? "Editing session caught and opened in your browser in edit mode. Run `dashboard publish <id>` to go live, or `dashboard release <id> --yes` to abandon."
421
+ : "Editing session caught. Run `dashboard publish <id>` to go live, or `dashboard release <id> --yes` to abandon.",
422
+ }, { keyValue: true });
423
+ }
424
+ catch (err) {
425
+ editSessionError(err);
426
+ }
427
+ });
428
+ dashboard
429
+ .command("publish <id>")
430
+ .description("Publish your draft edits on a shared dashboard (makes them live) and release the editing session")
431
+ .action(async function (id) {
432
+ try {
433
+ const resp = await apiClient.post(`/api/v1/cli/dashboards/${id}/publish`, {});
434
+ output(this, { ...resp, url: dashboardUrl(id) }, { keyValue: true });
435
+ }
436
+ catch (err) {
437
+ errorOutput(err);
438
+ }
439
+ });
440
+ dashboard
441
+ .command("release <id>")
442
+ .description("Discard your unpublished draft edits on a shared dashboard and release the editing session (requires --yes)")
443
+ .requiredOption("--yes", "Confirm discarding unpublished draft edits")
444
+ .action(async function (id) {
445
+ try {
446
+ const resp = await apiClient.post(`/api/v1/cli/dashboards/${id}/release`, {});
447
+ output(this, resp, { keyValue: true });
448
+ }
449
+ catch (err) {
450
+ errorOutput(err);
451
+ }
452
+ });
347
453
  dashboard
348
454
  .command("delete <id>")
349
455
  .description("Delete a custom dashboard (requires --yes)")
@@ -358,6 +464,23 @@ export function registerDashboardCommands(program) {
358
464
  }
359
465
  });
360
466
  }
467
+ /**
468
+ * Friendlier error for `dashboard edit`: a 409 means another user holds the
469
+ * editing session (the structured detail carries their name). 423 (locked) and
470
+ * 403 (view-only) already arrive as human strings, so they fall through to
471
+ * errorOutput.
472
+ */
473
+ function editSessionError(err) {
474
+ const e = err;
475
+ if (e?.status === 409 && e.detailStructured) {
476
+ const name = e.detailStructured.editor_name || "Another user";
477
+ console.error(JSON.stringify({
478
+ error: `${name} is currently editing this dashboard. Try again once they publish or release.`,
479
+ }));
480
+ process.exit(1);
481
+ }
482
+ errorOutput(err);
483
+ }
361
484
  function readStdin() {
362
485
  return new Promise((resolve, reject) => {
363
486
  const chunks = [];
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export type CreateMode = {
2
+ kind: "file";
3
+ } | {
4
+ kind: "sql";
5
+ } | {
6
+ kind: "error";
7
+ message: string;
8
+ };
9
+ /**
10
+ * Decide whether `ds create` runs in file-upload or SQL mode (Feature #645).
11
+ * Pure + exported so it is unit-testable without a backend.
12
+ */
13
+ export declare function resolveCreateMode(opts: {
14
+ file?: unknown;
15
+ sql?: unknown;
16
+ name?: unknown;
17
+ }): CreateMode;
18
+ /**
19
+ * Parse one `--table-lookback` spec of the form `TABLE:COLUMN:DAYS`. Split from
20
+ * the RIGHT so schema-qualified table names (`DB.SCHEMA.TABLE`) pass through
21
+ * verbatim - column names can never contain `:` (server-validated identifiers).
22
+ * Pure + exported so it is unit-testable without a backend.
23
+ */
24
+ export declare function parseTableLookback(spec: string): {
25
+ table: string;
26
+ column: string;
27
+ lookback_days: number;
28
+ };
29
+ /**
30
+ * Validate `ds refresh-config` flags and build the PATCH body. Pure + exported
31
+ * so it is unit-testable without a backend. Throws on invalid input; the action
32
+ * surfaces the message via errorOutput. Sets the COMPLETE incremental config -
33
+ * omitted fields fall back to server defaults (merge window 3, reconciliation
34
+ * off, table lookback windows cleared).
35
+ */
36
+ export declare function buildRefreshConfigBody(opts: {
37
+ mode?: unknown;
38
+ watermarkColumn?: unknown;
39
+ watermarkType?: unknown;
40
+ mergeKey?: unknown;
41
+ lookback?: unknown;
42
+ mergeWindow?: unknown;
43
+ reconciliation?: unknown;
44
+ tableLookback?: unknown;
45
+ }): Record<string, unknown>;
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Decide whether `ds create` runs in file-upload or SQL mode (Feature #645).
3
+ * Pure + exported so it is unit-testable without a backend.
4
+ */
5
+ export function resolveCreateMode(opts) {
6
+ if (opts.file) {
7
+ if (opts.sql) {
8
+ return { kind: "error", message: "Use either --file or --sql, not both." };
9
+ }
10
+ return { kind: "file" };
11
+ }
12
+ if (!opts.sql || !opts.name) {
13
+ return {
14
+ kind: "error",
15
+ message: "Provide --file <path> to upload a local Excel/CSV, or both --sql <query> and --name <name> for a SQL data source.",
16
+ };
17
+ }
18
+ return { kind: "sql" };
19
+ }
20
+ /**
21
+ * Parse one `--table-lookback` spec of the form `TABLE:COLUMN:DAYS`. Split from
22
+ * the RIGHT so schema-qualified table names (`DB.SCHEMA.TABLE`) pass through
23
+ * verbatim - column names can never contain `:` (server-validated identifiers).
24
+ * Pure + exported so it is unit-testable without a backend.
25
+ */
26
+ export function parseTableLookback(spec) {
27
+ const last = spec.lastIndexOf(":");
28
+ const mid = last === -1 ? -1 : spec.lastIndexOf(":", last - 1);
29
+ const column = mid === -1 ? "" : spec.slice(mid + 1, last);
30
+ if (mid <= 0 || !column) {
31
+ throw new Error(`Invalid --table-lookback "${spec}". Use TABLE:COLUMN:DAYS (e.g. "ANALYTICS.PUBLIC.EVENTS:EVENT_DATE:30").`);
32
+ }
33
+ const days = Number(spec.slice(last + 1));
34
+ if (!Number.isInteger(days) || days < 1 || days > 3650) {
35
+ throw new Error(`Invalid days in --table-lookback "${spec}". Must be an integer between 1 and 3650.`);
36
+ }
37
+ return { table: spec.slice(0, mid), column, lookback_days: days };
38
+ }
39
+ // Mirrors the server's canonical table matching: last dotted segment, uppercased.
40
+ function canonicalTableKey(table) {
41
+ return (table.split(".").pop() ?? table).toUpperCase();
42
+ }
43
+ /**
44
+ * Validate `ds refresh-config` flags and build the PATCH body. Pure + exported
45
+ * so it is unit-testable without a backend. Throws on invalid input; the action
46
+ * surfaces the message via errorOutput. Sets the COMPLETE incremental config -
47
+ * omitted fields fall back to server defaults (merge window 3, reconciliation
48
+ * off, table lookback windows cleared).
49
+ */
50
+ export function buildRefreshConfigBody(opts) {
51
+ const mode = opts.mode;
52
+ if (!mode) {
53
+ throw new Error('--mode is required. Use "full" or "incremental".');
54
+ }
55
+ if (mode !== "full" && mode !== "incremental") {
56
+ throw new Error(`Invalid --mode "${mode}". Use "full" or "incremental".`);
57
+ }
58
+ // Mirror the backend 400 client-side so the user fixes it in one turn.
59
+ if (mode === "incremental" && (!opts.watermarkColumn || !opts.watermarkType)) {
60
+ throw new Error("Incremental mode requires --watermark-column and --watermark-type.");
61
+ }
62
+ const WM_TYPES = new Set(["timestamp", "date", "integer"]);
63
+ if (opts.watermarkType && !WM_TYPES.has(opts.watermarkType)) {
64
+ throw new Error(`Invalid --watermark-type "${opts.watermarkType}". Use timestamp, date, or integer.`);
65
+ }
66
+ const RECON = new Set(["daily", "weekly", "monthly", "off"]);
67
+ if (opts.reconciliation !== undefined && !RECON.has(opts.reconciliation)) {
68
+ throw new Error(`Invalid --reconciliation "${opts.reconciliation}". Use daily, weekly, monthly, or off.`);
69
+ }
70
+ // Clean break: the pre-rename --lookback flag set the merge window, while
71
+ // "lookback" now means the per-table read windows - silently honoring
72
+ // either meaning would be a trap. Hidden from help; always errors with the fix.
73
+ if (opts.lookback !== undefined) {
74
+ throw new Error("--lookback was renamed to --merge-window (it sets the merge window - how far back " +
75
+ "each run re-fetches and upserts). For per-table lookback windows use --table-lookback.");
76
+ }
77
+ const body = { refresh_mode: mode };
78
+ if (opts.watermarkColumn)
79
+ body.watermark_column = opts.watermarkColumn;
80
+ if (opts.watermarkType)
81
+ body.watermark_type = opts.watermarkType;
82
+ if (opts.mergeKey)
83
+ body.merge_key = opts.mergeKey;
84
+ if (opts.mergeWindow !== undefined) {
85
+ const n = parseInt(opts.mergeWindow, 10);
86
+ if (isNaN(n)) {
87
+ throw new Error(`Invalid --merge-window "${opts.mergeWindow}". Must be a number.`);
88
+ }
89
+ body.lookback_periods = n;
90
+ }
91
+ if (opts.reconciliation !== undefined) {
92
+ // "off" disables the reconciliation full-refresh backstop.
93
+ body.reconciliation_schedule = opts.reconciliation === "off" ? null : opts.reconciliation;
94
+ }
95
+ // Per-table lookback windows (repeatable TABLE:COLUMN:DAYS). The server
96
+ // clears windows SILENTLY in full mode and rejects integer watermarks -
97
+ // both are mirrored loudly here so the user fixes the call in one turn.
98
+ const specs = (opts.tableLookback ?? []);
99
+ if (specs.length > 0) {
100
+ if (mode !== "incremental") {
101
+ throw new Error("--table-lookback requires --mode incremental.");
102
+ }
103
+ if (opts.watermarkType === "integer") {
104
+ throw new Error("--table-lookback needs --watermark-type date or timestamp (lookback windows are day-based).");
105
+ }
106
+ if (specs.length > 20) {
107
+ throw new Error(`Too many --table-lookback windows (${specs.length}); max 20.`);
108
+ }
109
+ const windows = specs.map(parseTableLookback);
110
+ const seen = new Set();
111
+ for (const w of windows) {
112
+ const key = canonicalTableKey(w.table);
113
+ if (seen.has(key)) {
114
+ throw new Error(`Duplicate --table-lookback for table "${w.table}" (tables match on the last dotted segment, case-insensitive).`);
115
+ }
116
+ seen.add(key);
117
+ }
118
+ body.table_lookback_windows = windows;
119
+ }
120
+ return body;
121
+ }
122
+ //# sourceMappingURL=ds-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-config.js","sourceRoot":"","sources":["../../src/commands/ds-config.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,2 @@
1
1
  import { Command } from "commander";
2
- export type CreateMode = {
3
- kind: "file";
4
- } | {
5
- kind: "sql";
6
- } | {
7
- kind: "error";
8
- message: string;
9
- };
10
- /**
11
- * Decide whether `ds create` runs in file-upload or SQL mode (Feature #645).
12
- * Pure + exported so it is unit-testable without a backend.
13
- */
14
- export declare function resolveCreateMode(opts: {
15
- file?: unknown;
16
- sql?: unknown;
17
- name?: unknown;
18
- }): CreateMode;
19
- /**
20
- * Parse one `--table-lookback` spec of the form `TABLE:COLUMN:DAYS`. Split from
21
- * the RIGHT so schema-qualified table names (`DB.SCHEMA.TABLE`) pass through
22
- * verbatim - column names can never contain `:` (server-validated identifiers).
23
- * Pure + exported so it is unit-testable without a backend.
24
- */
25
- export declare function parseTableLookback(spec: string): {
26
- table: string;
27
- column: string;
28
- lookback_days: number;
29
- };
30
- /**
31
- * Validate `ds refresh-config` flags and build the PATCH body. Pure + exported
32
- * so it is unit-testable without a backend. Throws on invalid input; the action
33
- * surfaces the message via errorOutput. Sets the COMPLETE incremental config -
34
- * omitted fields fall back to server defaults (merge window 3, reconciliation
35
- * off, table lookback windows cleared).
36
- */
37
- export declare function buildRefreshConfigBody(opts: {
38
- mode?: unknown;
39
- watermarkColumn?: unknown;
40
- watermarkType?: unknown;
41
- mergeKey?: unknown;
42
- lookback?: unknown;
43
- mergeWindow?: unknown;
44
- reconciliation?: unknown;
45
- tableLookback?: unknown;
46
- }): Record<string, unknown>;
47
2
  export declare function registerDSCommands(program: Command): void;