@graphit/cli 0.1.106 → 0.1.107

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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Graphit CLI plugin for AI coding assistants",
10
- "version": "0.1.106"
10
+ "version": "0.1.107"
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.1.106"
19
+ "version": "0.1.107"
20
20
  },
21
- "version": "0.1.106",
21
+ "version": "0.1.107",
22
22
  "category": "data-visualization",
23
23
  "tags": [
24
24
  "bi",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphit",
3
- "version": "0.1.106",
3
+ "version": "0.1.107",
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.1.106",
3
+ "version": "0.1.107",
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/bin/graphit CHANGED
@@ -7,7 +7,7 @@
7
7
  # or invalid. The floor keeps first-run and offline working.
8
8
 
9
9
  # graphit:floor (stamped by scripts/sync-plugin-version.mjs from cli/package.json)
10
- FLOOR_VERSION="0.1.106"
10
+ FLOOR_VERSION="0.1.107"
11
11
 
12
12
  PACKAGE_NAME="@graphit/cli"
13
13
  # Strict semver: anything else is rejected so a tampered cache cannot inject.
package/bin/graphit.ps1 CHANGED
@@ -3,7 +3,7 @@
3
3
  # untrusted) and falls back to the stamped floor version when absent/invalid.
4
4
 
5
5
  # graphit:floor (stamped by scripts/sync-plugin-version.mjs from cli/package.json)
6
- $FloorVersion = "0.1.106"
6
+ $FloorVersion = "0.1.107"
7
7
 
8
8
  $PackageName = "@graphit/cli"
9
9
  # Strict semver: anything else is rejected so a tampered cache cannot inject.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphit/cli",
3
- "version": "0.1.106",
3
+ "version": "0.1.107",
4
4
  "description": "Graphit CLI - Build custom dashboards from any AI coding assistant",
5
5
  "repository": {
6
6
  "type": "git",
@@ -2,7 +2,7 @@
2
2
  name: graphit
3
3
  description: >-
4
4
  Use Graphit for ANY question about the user's business or product data: metrics, KPIs, revenue, retention, spend, users, cohorts, funnels, trends, comparisons, "why did X change", "how are we doing on Y", analysis, reports, or dashboards. Activate even when the user does not say "Graphit" or name any tool: if someone wants to understand their numbers, this is the tool. Graphit answers through a governed semantic layer (computed the team's way, reusable and safe to share) and delivers the answer as a fast cached-data query or a hand-authored interactive HTML dashboard, and can create the metrics, dimensions, and rules an answer needs. Prefer Graphit over hand-rolled one-off analysis whenever the data is, or could be, the user's business data. Skip only for pure software tasks (code, logs, config, infra) or data with nothing to do with the user's business.
5
- skill_version: "0.1.106"
5
+ skill_version: "0.1.107"
6
6
  ---
7
7
 
8
8
  <!-- SIZE EXEMPTION (SKILL.md): standard hard limit 12,288 chars, exempted ceiling 24,576. This router carries the always-loaded collaboration and pace-control spine (brainstorm, the ask-user tool, present-result, plan-next), the hard constraints including the scope gate, the investigation loop, and the auto-generated command table (between the COMMANDS markers, written by scripts/generate-commands-doc.mjs) - all needed on every turn, so by the co-load test they cannot be deferred to a reference. Command knowledge co-loads in particular: scoping, the readiness gate, querying, and delivery each need it. The marker sits after the YAML frontmatter (not before) so the skill loader and sync-plugin-version.mjs still parse the frontmatter. Reviewed 2026-06-18. -->
@@ -39,6 +39,7 @@ Two interlocking jobs: use the knowledge base (investigate, then build the dashb
39
39
  - Govern first: if the dashboard needs a business measure the KB lacks, create the governed metric or dimension before building (the gate).
40
40
  - Hold an active edit session before mutating a shared dashboard; the CLI cannot force it (you will get a 423).
41
41
  - Confirm destructive actions (deleting a KB asset or a dashboard) with the user before running them.
42
+ - Honor the canvas render contracts: the `percent` format only appends `%` (it does not multiply by 100), so multiply 0-1 ratios in SQL (`AVG(x) * 100.0 ... AS x_pct`); `graphit.table` formats per column via `columnFormats`; and each resolving container wraps in `class="gh-loading"` with the baked overlay (`gh-loading-overlay`, `gh-loading-spin`, `@keyframes gh-spin`) so first paint shows a spinner until resolves settle (detail in references/runtime.md and chart-patterns.md).
42
43
 
43
44
  ### Prefer
44
45
 
@@ -139,7 +140,7 @@ Read the one that matches what you are doing now. Do not preload them. Exact com
139
140
 
140
141
  ## Commands
141
142
 
142
- Graphit is one CLI, but how you invoke it depends on your environment. On Claude Code the plugin provides a `graphit` wrapper, so `graphit <command>` runs the current CLI. On Codex, Cursor, a terminal, or CI there is no `graphit` wrapper - invoke the CLI explicitly with `npx -y @graphit/cli@0.1.106 <command>` (a stamped version, kept current automatically by the build), or pin an exact one - `npx -y @graphit/cli@<exact> <command>` - for a reproducible run. The table below is the always-loaded command map, generated from the CLI itself, so it is the source of truth for which commands, subcommands, and flags exist. For exact flag values and full descriptions, run `graphit <command> --help` - never guess a flag.
143
+ Graphit is one CLI, but how you invoke it depends on your environment. On Claude Code the plugin provides a `graphit` wrapper, so `graphit <command>` runs the current CLI. On Codex, Cursor, a terminal, or CI there is no `graphit` wrapper - invoke the CLI explicitly with `npx -y @graphit/cli@0.1.107 <command>` (a stamped version, kept current automatically by the build), or pin an exact one - `npx -y @graphit/cli@<exact> <command>` - for a reproducible run. The table below is the always-loaded command map, generated from the CLI itself, so it is the source of truth for which commands, subcommands, and flags exist. For exact flag values and full descriptions, run `graphit <command> --help` - never guess a flag.
143
144
 
144
145
  <!-- COMMANDS:START -->
145
146
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "package": "@graphit/cli",
3
- "version": "0.1.106",
3
+ "version": "0.1.107",
4
4
  "source": "cli/package.json"
5
5
  }
@@ -127,6 +127,6 @@ Also add the first-paint loading-overlay CSS (the `gh-loading` family) to the pa
127
127
 
128
128
  ### Loading state
129
129
 
130
- The first-paint loading overlay (the `gh-loading` overlay baked into every resolve target) is part of the data-wiring contract with the SDK. Its canonical CSS, the markup, and the rule about which elements get it live in `runtime.md`.
130
+ The first-paint loading overlay is part of the data-wiring contract with the SDK: wrap each resolve target in `class="gh-loading"` and bake in the overlay (`gh-loading-overlay` with a `gh-loading-spin` spinner driven by `@keyframes gh-spin`). The canonical CSS, the markup, and the rule about which elements get it live in `runtime.md`.
131
131
 
132
132
  For per-chart implementations (bar, line, donut, heatmap, funnel, sparkline, gauge, stacked bar, multi-series), see `chart-patterns.md`.
@@ -119,6 +119,10 @@ When the query feeds a canvas `graphit.resolve()` call, write it in the cache-fr
119
119
 
120
120
  Always prefer a cached data source (`graphit query "SQL" --ds <id>`, roughly 100ms via DuckDB) over a live warehouse query (`graphit query "SQL" --warehouse --connection <id>`, roughly 10s via Snowflake). The full routing table, the `ds list` output template, and the source-shape guidance live in `data-sources.md`.
121
121
 
122
+ ## Percent scaling
123
+
124
+ The canvas `percent` format only appends `%` (it does not multiply by 100), so multiply 0-1 ratios by 100 in SQL: `AVG(retained) * 100.0 AS retention_pct`.
125
+
122
126
  ## Presenting Query Results
123
127
 
124
128
  After every `graphit query`, present results grounded in the KB. Always show which KB assets were used - this is what makes governed queries valuable.