@graphit/cli 0.2.321 → 0.2.322
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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/bin/graphit +1 -1
- package/bin/graphit.ps1 +1 -1
- package/dist/commands/sl/index.d.ts +2 -0
- package/dist/commands/sl/index.js +263 -0
- package/dist/commands/sl/index.js.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/graphit/SKILL.md +2 -2
- package/skills/graphit/VERSION.json +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "Graphit CLI plugin for AI coding assistants",
|
|
10
|
-
"version": "0.2.
|
|
10
|
+
"version": "0.2.322"
|
|
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.
|
|
19
|
+
"version": "0.2.322"
|
|
20
20
|
},
|
|
21
|
-
"version": "0.2.
|
|
21
|
+
"version": "0.2.322",
|
|
22
22
|
"category": "data-visualization",
|
|
23
23
|
"tags": [
|
|
24
24
|
"bi",
|
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.
|
|
17
|
+
FLOOR_VERSION="0.2.322"
|
|
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.
|
|
10
|
+
$FloorVersion = "0.2.322"
|
|
11
11
|
|
|
12
12
|
$PackageName = "@graphit/cli"
|
|
13
13
|
# Strict semver: anything else is rejected so a tampered cache cannot inject.
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { apiClient } from "../../api/client.js";
|
|
3
|
+
import { errorOutput } from "../../output/format.js";
|
|
4
|
+
import { writeStderr } from "../../stderr.js";
|
|
5
|
+
// The dbt-native semantic-layer command tree (dormant preview).
|
|
6
|
+
//
|
|
7
|
+
// GATED: registered only when GRAPHIT_SL=1 (see src/index.ts). This file lives
|
|
8
|
+
// in a SUBDIRECTORY of commands/ deliberately - the SKILL.md/tool-manifest
|
|
9
|
+
// generators walk only top-level dist/commands/*.js registrars, so nothing
|
|
10
|
+
// here can reach the published skill, the verb-policy manifest, or the in-app
|
|
11
|
+
// agent surface until the cutover promotes it. At cutover this tree replaces
|
|
12
|
+
// the legacy `kb` group (same verbs, `kb` group name), the gate drops, a
|
|
13
|
+
// top-level registrar makes the walk see it, verb-policy rows + skill
|
|
14
|
+
// references land, and gen:commands regenerates - the full CLI change
|
|
15
|
+
// checklist runs THEN, against commands users can actually run.
|
|
16
|
+
//
|
|
17
|
+
// The noun set mirrors the backend's typed descriptors: semantic-model,
|
|
18
|
+
// metric, group. Nested entities/dimensions/measures mutate through
|
|
19
|
+
// `update semantic-model` (a provided list replaces the stored list whole)
|
|
20
|
+
// and are independently readable (`sl entity`, `sl get semantic-model`).
|
|
21
|
+
const NOUNS = ["semantic-model", "metric", "group"];
|
|
22
|
+
const ARG_NOUN = "Semantic-layer noun - semantic-model, metric or group";
|
|
23
|
+
const ARG_NAME = "Asset name (lowercase snake_case), as returned by sl list or sl search";
|
|
24
|
+
function requireNoun(noun) {
|
|
25
|
+
if (!NOUNS.includes(noun)) {
|
|
26
|
+
writeStderr(JSON.stringify({
|
|
27
|
+
error: `Unknown noun '${noun}'. Valid: ${NOUNS.join(", ")}`,
|
|
28
|
+
}));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
return noun;
|
|
32
|
+
}
|
|
33
|
+
function payloadFromOpts(opts) {
|
|
34
|
+
if (!opts.file && !opts.json) {
|
|
35
|
+
writeStderr(JSON.stringify({ error: "Provide the definition via --file <path> or --json <string>" }));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
if (opts.file && opts.json) {
|
|
39
|
+
writeStderr(JSON.stringify({ error: "--file and --json are mutually exclusive" }));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const raw = opts.file ? readFileSync(opts.file, "utf-8") : opts.json;
|
|
43
|
+
try {
|
|
44
|
+
return JSON.parse(raw);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
writeStderr(JSON.stringify({ error: "Definition is not valid JSON" }));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function parseAxes(pairs) {
|
|
52
|
+
const axes = {};
|
|
53
|
+
for (const pair of pairs ?? []) {
|
|
54
|
+
const eq = pair.indexOf("=");
|
|
55
|
+
if (eq <= 0) {
|
|
56
|
+
writeStderr(JSON.stringify({ error: `--axis '${pair}' must be key=value` }));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
axes[pair.slice(0, eq)] = pair.slice(eq + 1);
|
|
60
|
+
}
|
|
61
|
+
return axes;
|
|
62
|
+
}
|
|
63
|
+
export function registerSlCommands(program) {
|
|
64
|
+
const sl = program
|
|
65
|
+
.command("sl")
|
|
66
|
+
.description("Semantic layer (dbt-native Knowledge Base) - semantic models, metrics, groups");
|
|
67
|
+
// -- create ---------------------------------------------------------------
|
|
68
|
+
const create = sl.command("create").description("Create semantic-layer assets");
|
|
69
|
+
create
|
|
70
|
+
.command("semantic-model")
|
|
71
|
+
.description("Create a semantic model from a JSON definition (dbt shape: name, model, " +
|
|
72
|
+
"entities, dimensions, measures, defaults, group)")
|
|
73
|
+
.option("--file <path>", "Path to a JSON definition file")
|
|
74
|
+
.option("--json <string>", "Inline JSON definition")
|
|
75
|
+
.option("--unverified", "Create as draft instead of verified")
|
|
76
|
+
.action(async function () {
|
|
77
|
+
try {
|
|
78
|
+
const opts = this.opts();
|
|
79
|
+
const body = {
|
|
80
|
+
definition: payloadFromOpts(opts),
|
|
81
|
+
unverified: opts.unverified === true,
|
|
82
|
+
};
|
|
83
|
+
console.log(JSON.stringify(await apiClient.post("/api/v1/cli/sl/semantic-model", body)));
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
errorOutput(err);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
create
|
|
90
|
+
.command("metric")
|
|
91
|
+
.description("Create a metric from a JSON definition (type: simple, ratio, derived, " +
|
|
92
|
+
"cumulative or conversion, with type_params). --family/--axis tag a " +
|
|
93
|
+
"concrete member of a metric family")
|
|
94
|
+
.option("--file <path>", "Path to a JSON definition file")
|
|
95
|
+
.option("--json <string>", "Inline JSON definition")
|
|
96
|
+
.option("--family <name>", "Metric family this variant belongs to")
|
|
97
|
+
.option("--axis <key=value...>", "Axis value that generated this variant (repeatable)")
|
|
98
|
+
.option("--unverified", "Create as draft instead of verified")
|
|
99
|
+
.action(async function () {
|
|
100
|
+
try {
|
|
101
|
+
const opts = this.opts();
|
|
102
|
+
const definition = payloadFromOpts(opts);
|
|
103
|
+
if (opts.family) {
|
|
104
|
+
const meta = (definition.meta ??= {});
|
|
105
|
+
const graphit = (meta.graphit ??=
|
|
106
|
+
{});
|
|
107
|
+
graphit.family ??= opts.family;
|
|
108
|
+
const axes = parseAxes(opts.axis);
|
|
109
|
+
if (Object.keys(axes).length > 0)
|
|
110
|
+
graphit.axes ??= axes;
|
|
111
|
+
}
|
|
112
|
+
const body = { definition, unverified: opts.unverified === true };
|
|
113
|
+
console.log(JSON.stringify(await apiClient.post("/api/v1/cli/sl/metric", body)));
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
errorOutput(err);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
create
|
|
120
|
+
.command("group")
|
|
121
|
+
.description("Create a group (the domain analogue; admin only)")
|
|
122
|
+
.requiredOption("--name <name>", "Group name (lowercase snake_case)")
|
|
123
|
+
.option("--description <text>", "Group description")
|
|
124
|
+
.option("--owner-email <email>", "Owning analyst's email")
|
|
125
|
+
.option("--access <level>", "dbt group access level: private, protected or public")
|
|
126
|
+
.action(async function () {
|
|
127
|
+
try {
|
|
128
|
+
const opts = this.opts();
|
|
129
|
+
const definition = { name: opts.name };
|
|
130
|
+
if (opts.description)
|
|
131
|
+
definition.description = opts.description;
|
|
132
|
+
if (opts.ownerEmail)
|
|
133
|
+
definition.owner_email = opts.ownerEmail;
|
|
134
|
+
if (opts.access)
|
|
135
|
+
definition.access = opts.access;
|
|
136
|
+
console.log(JSON.stringify(await apiClient.post("/api/v1/cli/sl/group", { definition })));
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
errorOutput(err);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
// -- update ---------------------------------------------------------------
|
|
143
|
+
sl.command("update")
|
|
144
|
+
.argument("<noun>", ARG_NOUN)
|
|
145
|
+
.argument("<name>", ARG_NAME)
|
|
146
|
+
.description("Update an asset with a JSON patch. On semantic-model, a provided " +
|
|
147
|
+
"entities/dimensions/measures list replaces the stored list whole")
|
|
148
|
+
.option("--file <path>", "Path to a JSON patch file")
|
|
149
|
+
.option("--json <string>", "Inline JSON patch")
|
|
150
|
+
.action(async function (noun, name) {
|
|
151
|
+
try {
|
|
152
|
+
requireNoun(noun);
|
|
153
|
+
const body = { patch: payloadFromOpts(this.opts()) };
|
|
154
|
+
console.log(JSON.stringify(await apiClient.put(`/api/v1/cli/sl/${noun}/${encodeURIComponent(name)}`, body)));
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
errorOutput(err);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
// -- delete ---------------------------------------------------------------
|
|
161
|
+
sl.command("delete")
|
|
162
|
+
.argument("<noun>", ARG_NOUN)
|
|
163
|
+
.argument("<name>", ARG_NAME)
|
|
164
|
+
.description("Delete an asset (requires --yes). Refused while other definitions " +
|
|
165
|
+
"still reference it")
|
|
166
|
+
.requiredOption("--yes", "Confirm deletion")
|
|
167
|
+
.action(async function (noun, name) {
|
|
168
|
+
try {
|
|
169
|
+
requireNoun(noun);
|
|
170
|
+
await apiClient.delete(`/api/v1/cli/sl/${noun}/${encodeURIComponent(name)}`);
|
|
171
|
+
console.log(JSON.stringify({ status: "deleted", noun, name }));
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
errorOutput(err);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
// -- reads ----------------------------------------------------------------
|
|
178
|
+
sl.command("get")
|
|
179
|
+
.argument("<noun>", ARG_NOUN)
|
|
180
|
+
.argument("<name>", ARG_NAME)
|
|
181
|
+
.description("Fetch one asset. Metrics include their family and sibling variants")
|
|
182
|
+
.action(async function (noun, name) {
|
|
183
|
+
try {
|
|
184
|
+
requireNoun(noun);
|
|
185
|
+
console.log(JSON.stringify(await apiClient.get(`/api/v1/cli/sl/${noun}/${encodeURIComponent(name)}`)));
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
errorOutput(err);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
sl.command("list")
|
|
192
|
+
.argument("<noun>", ARG_NOUN)
|
|
193
|
+
.description("List all visible assets of one noun")
|
|
194
|
+
.action(async function (noun) {
|
|
195
|
+
try {
|
|
196
|
+
requireNoun(noun);
|
|
197
|
+
console.log(JSON.stringify(await apiClient.get(`/api/v1/cli/sl/${noun}`)));
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
errorOutput(err);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
sl.command("tree")
|
|
204
|
+
.description("The whole visible semantic layer: group -> semantic model -> assets, " +
|
|
205
|
+
"metric families collapsed to one card each")
|
|
206
|
+
.action(async function () {
|
|
207
|
+
try {
|
|
208
|
+
console.log(JSON.stringify(await apiClient.get("/api/v1/cli/sl/tree")));
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
errorOutput(err);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
sl.command("search")
|
|
215
|
+
.argument("<query>", "Search text (name or description)")
|
|
216
|
+
.description("Search semantic models, metrics, groups and nested components")
|
|
217
|
+
.option("--limit <n>", "Maximum results (default 50)")
|
|
218
|
+
.action(async function (query) {
|
|
219
|
+
try {
|
|
220
|
+
const rawLimit = this.opts().limit;
|
|
221
|
+
if (rawLimit !== undefined && !/^[1-9]\d*$/.test(rawLimit)) {
|
|
222
|
+
writeStderr(JSON.stringify({ error: `--limit '${rawLimit}' must be a positive integer` }));
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
const limit = rawLimit ? `&limit=${rawLimit}` : "";
|
|
226
|
+
console.log(JSON.stringify(await apiClient.get(`/api/v1/cli/sl/search?q=${encodeURIComponent(query)}${limit}`)));
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
errorOutput(err);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
sl.command("entity")
|
|
233
|
+
.argument("<name>", "Entity name (as declared inside semantic models)")
|
|
234
|
+
.description("One entity across every visible semantic model that declares it")
|
|
235
|
+
.action(async function (name) {
|
|
236
|
+
try {
|
|
237
|
+
console.log(JSON.stringify(await apiClient.get(`/api/v1/cli/sl/entity/${encodeURIComponent(name)}`)));
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
errorOutput(err);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
sl.command("family")
|
|
244
|
+
.argument("<family>", "Metric family name")
|
|
245
|
+
.description("Expand a metric family; with --axis constraints, resolve to the one " +
|
|
246
|
+
"concrete member (ambiguity answers with the still-open axes)")
|
|
247
|
+
.option("--axis <key=value...>", "Axis constraint to resolve against (repeatable)")
|
|
248
|
+
.action(async function (family) {
|
|
249
|
+
try {
|
|
250
|
+
const axes = parseAxes(this.opts().axis);
|
|
251
|
+
const entries = Object.entries(axes);
|
|
252
|
+
const encoded = encodeURIComponent(family);
|
|
253
|
+
const path = entries.length > 0
|
|
254
|
+
? `/api/v1/cli/sl/family/${encoded}/resolve?axes=${encodeURIComponent(entries.map(([k, v]) => `${k}=${v}`).join(","))}`
|
|
255
|
+
: `/api/v1/cli/sl/family/${encoded}`;
|
|
256
|
+
console.log(JSON.stringify(await apiClient.get(path)));
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
errorOutput(err);
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sl/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { Command } from "commander";
|
|
|
7
7
|
import { registerAuthCommands } from "./commands/auth.js";
|
|
8
8
|
import { registerStatusCommand } from "./commands/status.js";
|
|
9
9
|
import { registerKBCommands } from "./commands/kb.js";
|
|
10
|
+
import { registerSlCommands } from "./commands/sl/index.js";
|
|
10
11
|
import { registerQueryCommands } from "./commands/query.js";
|
|
11
12
|
import { registerDSCommands } from "./commands/ds.js";
|
|
12
13
|
import { registerDashboardCommands } from "./commands/dashboard.js";
|
|
@@ -30,6 +31,13 @@ program
|
|
|
30
31
|
registerAuthCommands(program);
|
|
31
32
|
registerStatusCommand(program);
|
|
32
33
|
registerKBCommands(program);
|
|
34
|
+
// Dormant semantic-layer preview: the registrar lives in a commands/
|
|
35
|
+
// SUBDIRECTORY (the doc/manifest walk scans only top-level registrars), so
|
|
36
|
+
// this gate controls the runtime surface while the generated artifacts stay
|
|
37
|
+
// stable by construction. The cutover ungates it as the kb replacement.
|
|
38
|
+
if (process.env.GRAPHIT_SL === "1") {
|
|
39
|
+
registerSlCommands(program);
|
|
40
|
+
}
|
|
33
41
|
registerQueryCommands(program);
|
|
34
42
|
registerDSCommands(program);
|
|
35
43
|
registerDashboardCommands(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/skills/graphit/SKILL.md
CHANGED
|
@@ -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.2.
|
|
5
|
+
skill_version: "0.2.322"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- SIZE EXEMPTION (SKILL.md): standard hard limit 12,288 chars, exempted ceiling 31,872. Always-loaded: the collaboration/pace spine, hard constraints + scope gate, the loop, and the generated command table (COMMANDS markers, scripts/generate-commands-doc.mjs) - needed every turn, cannot defer to a reference. Marker sits after the frontmatter so the loader and sync-plugin-version.mjs parse it. Reviewed 2026-08-02. Raised from 29,952 on 2026-08-07 (founder-directed): a domain is now an access boundary, so loop step 2 must say that picking one decides who ever sees the work - load-bearing before any reference load can be relied on. Raised from 30,592 on 2026-08-13 (founder-directed): the living-context MUST bullet - explore placements answer path + pre-create fork. SIZING.md rules raises pay only for command-table growth; both raises are deliberate exceptions. Raised from 31,232 on 2026-08-16: the generated table gained `dashboard check` and its flags - table growth, the sanctioned kind - plus that verb's one router row. -->
|
|
@@ -157,7 +157,7 @@ Read the one that matches what you are doing now. Do not preload them. Exact com
|
|
|
157
157
|
|
|
158
158
|
## Commands
|
|
159
159
|
|
|
160
|
-
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.2.
|
|
160
|
+
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.2.322 <command>` (a stamped version, kept current by the build; pin an exact version for a reproducible run). The table below is generated from the CLI itself. For exact flags, run `graphit <command> --help` - never guess a flag.
|
|
161
161
|
|
|
162
162
|
<!-- COMMANDS:START -->
|
|
163
163
|
|