@graphit/cli 0.2.371 → 0.2.377
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/dashboard-delete.d.ts +43 -0
- package/dist/commands/dashboard-delete.js +66 -0
- package/dist/commands/dashboard-delete.js.map +1 -0
- package/dist/commands/dashboard.js +11 -19
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/ds/render.js +21 -2
- package/dist/commands/ds/render.js.map +1 -1
- package/dist/commands/ds/types.d.ts +2 -0
- package/dist/commands/ds/types.js.map +1 -1
- package/dist/commands/ds/usage.d.ts +50 -0
- package/dist/commands/ds/usage.js +72 -0
- package/dist/commands/ds/usage.js.map +1 -0
- package/dist/commands/ds.js +4 -0
- package/dist/commands/ds.js.map +1 -1
- package/dist/commands/kb-batch.d.ts +29 -0
- package/dist/commands/kb-batch.js +93 -0
- package/dist/commands/kb-batch.js.map +1 -0
- package/dist/commands/kb.js +2 -0
- package/dist/commands/kb.js.map +1 -1
- package/dist/commands/report.d.ts +2 -0
- package/dist/commands/report.js +214 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/index.js +3 -30
- package/dist/index.js.map +1 -1
- package/dist/output/format.d.ts +14 -0
- package/dist/output/format.js +33 -2
- package/dist/output/format.js.map +1 -1
- package/dist/program.d.ts +7 -0
- package/dist/program.js +43 -0
- package/dist/program.js.map +1 -0
- package/dist/skill-guard.js +2 -0
- package/dist/skill-guard.js.map +1 -1
- package/package.json +1 -1
- package/scripts/commander-walk.mjs +2 -2
- package/scripts/generate-tool-manifest.mjs +1 -1
- package/scripts/verb-policy-source.json +127 -3
- package/skills/graphit/SKILL.md +26 -8
- package/skills/graphit/VERSION.json +1 -1
- package/skills/graphit/references/build.md +3 -1
- package/skills/graphit/references/dashboard-create.md +1 -1
- package/skills/graphit/references/data-sources.md +1 -1
- package/skills/graphit/references/filters-advanced.md +10 -8
- package/skills/graphit/references/filters.md +3 -5
- package/skills/graphit/references/kb-actions.md +7 -0
- package/skills/graphit/references/onboarding.md +1 -1
- package/skills/graphit/references/query-contract.md +2 -2
- package/skills/graphit/references/scheduled-reports.md +22 -0
- package/skills/graphit/references/share.md +2 -2
- package/skills/graphit-build/SKILL.md +4 -2
- package/skills/graphit-explore/SKILL.md +1 -1
- package/skills/graphit-share/SKILL.md +3 -3
package/dist/output/format.d.ts
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
export type OutputFormat = "json" | "table" | "styled";
|
|
3
3
|
export declare function getOutputFormat(cmd: Command): OutputFormat;
|
|
4
|
+
/**
|
|
5
|
+
* Feature #1002: the root owns `--output <format>` and, with no positional
|
|
6
|
+
* options (enabling them would break `--output table` after every subcommand),
|
|
7
|
+
* Commander hands it EVERY `--output` on the line - including a leaf's own
|
|
8
|
+
* `--output <path>` (`dashboard export`), which then never saw its value and the
|
|
9
|
+
* file silently defaulted into `.graphit/`. Run as a preAction hook: a value
|
|
10
|
+
* that is not an output format goes to the leaf when the leaf declares its own
|
|
11
|
+
* `--output`, and the root reverts to json; otherwise it is named on stderr
|
|
12
|
+
* instead of silently becoming json (Issue #828). Not an error: stdout stays
|
|
13
|
+
* the json payload existing callers parse.
|
|
14
|
+
* Known limit: `--output table ... export --output a.png` keeps only the last
|
|
15
|
+
* value (Commander stores one), so that line prints json.
|
|
16
|
+
*/
|
|
17
|
+
export declare function reconcileOutputOption(leaf: Command): void;
|
|
4
18
|
export declare function output(cmd: Command, data: unknown, opts?: {
|
|
5
19
|
columns?: string[];
|
|
6
20
|
keyValue?: boolean;
|
package/dist/output/format.js
CHANGED
|
@@ -3,15 +3,46 @@ import { formatTable, formatKeyValue } from "./table.js";
|
|
|
3
3
|
import { writeStderr } from "../stderr.js";
|
|
4
4
|
import { staleVersionHint } from "../update-check.js";
|
|
5
5
|
import { formatSharingProblem } from "./sharing.js";
|
|
6
|
-
|
|
6
|
+
const OUTPUT_FORMATS = ["json", "table", "styled"];
|
|
7
|
+
function rootOf(cmd) {
|
|
7
8
|
let root = cmd;
|
|
8
9
|
while (root.parent)
|
|
9
10
|
root = root.parent;
|
|
10
|
-
|
|
11
|
+
return root;
|
|
12
|
+
}
|
|
13
|
+
export function getOutputFormat(cmd) {
|
|
14
|
+
const format = rootOf(cmd).opts().output;
|
|
11
15
|
if (format === "styled")
|
|
12
16
|
return "styled";
|
|
13
17
|
return format === "table" ? "table" : "json";
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Feature #1002: the root owns `--output <format>` and, with no positional
|
|
21
|
+
* options (enabling them would break `--output table` after every subcommand),
|
|
22
|
+
* Commander hands it EVERY `--output` on the line - including a leaf's own
|
|
23
|
+
* `--output <path>` (`dashboard export`), which then never saw its value and the
|
|
24
|
+
* file silently defaulted into `.graphit/`. Run as a preAction hook: a value
|
|
25
|
+
* that is not an output format goes to the leaf when the leaf declares its own
|
|
26
|
+
* `--output`, and the root reverts to json; otherwise it is named on stderr
|
|
27
|
+
* instead of silently becoming json (Issue #828). Not an error: stdout stays
|
|
28
|
+
* the json payload existing callers parse.
|
|
29
|
+
* Known limit: `--output table ... export --output a.png` keeps only the last
|
|
30
|
+
* value (Commander stores one), so that line prints json.
|
|
31
|
+
*/
|
|
32
|
+
export function reconcileOutputOption(leaf) {
|
|
33
|
+
const root = rootOf(leaf);
|
|
34
|
+
if (root === leaf || root.getOptionValueSource("output") !== "cli")
|
|
35
|
+
return;
|
|
36
|
+
const value = root.opts().output;
|
|
37
|
+
if (OUTPUT_FORMATS.includes(value))
|
|
38
|
+
return;
|
|
39
|
+
root.setOptionValueWithSource("output", "json", "default");
|
|
40
|
+
if (leaf.options.some((opt) => opt.attributeName() === "output")) {
|
|
41
|
+
leaf.setOptionValueWithSource("output", value, "cli");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
note(`Warning: --output "${value}" is not an output format (json, table, styled) and this command writes no file; printing json.`);
|
|
45
|
+
}
|
|
15
46
|
export function output(cmd, data, opts) {
|
|
16
47
|
const format = getOutputFormat(cmd);
|
|
17
48
|
if (format === "json") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/output/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBpD,MAAM,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/output/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* The command tree with its root options, free of process side effects (no
|
|
4
|
+
* banners, no skill gate, no parse), so a test can parse real argv against the
|
|
5
|
+
* exact root the shipped binary uses. `index.ts` adds the process-level hooks.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createProgram(): Command;
|
package/dist/program.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { registerAuthCommands } from "./commands/auth.js";
|
|
3
|
+
import { registerStatusCommand } from "./commands/status.js";
|
|
4
|
+
import { registerKBCommands } from "./commands/kb.js";
|
|
5
|
+
import { registerQueryCommands } from "./commands/query.js";
|
|
6
|
+
import { registerDSCommands } from "./commands/ds.js";
|
|
7
|
+
import { registerDashboardCommands } from "./commands/dashboard.js";
|
|
8
|
+
import { registerReportCommands } from "./commands/report.js";
|
|
9
|
+
import { registerConnectorCommands } from "./commands/connector.js";
|
|
10
|
+
import { registerSetupCommand } from "./commands/setup.js";
|
|
11
|
+
import { registerGovernanceCommands } from "./commands/governance.js";
|
|
12
|
+
import { registerTeamCommands } from "./commands/team.js";
|
|
13
|
+
import { registerPluginCommands } from "./commands/plugin.js";
|
|
14
|
+
import { getCurrentVersion } from "./update-check.js";
|
|
15
|
+
import { reconcileOutputOption } from "./output/format.js";
|
|
16
|
+
/**
|
|
17
|
+
* The command tree with its root options, free of process side effects (no
|
|
18
|
+
* banners, no skill gate, no parse), so a test can parse real argv against the
|
|
19
|
+
* exact root the shipped binary uses. `index.ts` adds the process-level hooks.
|
|
20
|
+
*/
|
|
21
|
+
export function createProgram() {
|
|
22
|
+
const program = new Command();
|
|
23
|
+
program
|
|
24
|
+
.name("graphit")
|
|
25
|
+
.description("Graphit CLI - Build custom dashboards from any AI coding assistant")
|
|
26
|
+
.version(getCurrentVersion())
|
|
27
|
+
.option("--output <format>", "Output format: json (default), table, or styled", "json");
|
|
28
|
+
registerAuthCommands(program);
|
|
29
|
+
registerStatusCommand(program);
|
|
30
|
+
registerKBCommands(program);
|
|
31
|
+
registerQueryCommands(program);
|
|
32
|
+
registerDSCommands(program);
|
|
33
|
+
registerDashboardCommands(program);
|
|
34
|
+
registerReportCommands(program);
|
|
35
|
+
registerConnectorCommands(program);
|
|
36
|
+
registerGovernanceCommands(program);
|
|
37
|
+
registerTeamCommands(program);
|
|
38
|
+
registerPluginCommands(program);
|
|
39
|
+
registerSetupCommand(program);
|
|
40
|
+
program.hook("preAction", (_thisCommand, actionCommand) => reconcileOutputOption(actionCommand));
|
|
41
|
+
return program;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,oEAAoE,CAAC;SACjF,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC5B,MAAM,CAAC,mBAAmB,EAAE,iDAAiD,EAAE,MAAM,CAAC,CAAC;IAE1F,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;IAEjG,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/skill-guard.js
CHANGED
|
@@ -220,6 +220,8 @@ const MUTATION_COMMAND_PREFIXES = [
|
|
|
220
220
|
["kb", "unverify"],
|
|
221
221
|
// Feature #982: the column AI-visibility override is a KB write.
|
|
222
222
|
["kb", "column-visibility"],
|
|
223
|
+
// Feature #1012: a batch of KB creates/updates is a KB write.
|
|
224
|
+
["kb", "batch"],
|
|
223
225
|
// Feature #903: chart templates are their own verb group, so `kb create` does
|
|
224
226
|
// not cover them; `kb template list|get` stay reads.
|
|
225
227
|
["kb", "template", "create"],
|
package/dist/skill-guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-guard.js","sourceRoot":"","sources":["../src/skill-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-guard.js","sourceRoot":"","sources":["../src/skill-guard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -21,9 +21,9 @@ export const cliRoot =
|
|
|
21
21
|
process.env.GRAPHIT_CLI_ROOT ??
|
|
22
22
|
join(fileURLToPath(new URL(".", import.meta.url)), "..");
|
|
23
23
|
|
|
24
|
-
// Mirrors
|
|
24
|
+
// Mirrors program.ts registration order; groups not listed are appended alphabetically.
|
|
25
25
|
export const GROUP_ORDER = [
|
|
26
|
-
"auth", "status", "kb", "query", "metadata", "ds", "dashboard",
|
|
26
|
+
"auth", "status", "kb", "query", "metadata", "ds", "dashboard", "report",
|
|
27
27
|
"connector", "governance", "team", "plugin", "setup",
|
|
28
28
|
];
|
|
29
29
|
|
|
@@ -47,7 +47,7 @@ const MAX_ACTIONS_PER_NOUN = 25;
|
|
|
47
47
|
const MAX_TOOL_DOC_CHARS = 2000;
|
|
48
48
|
|
|
49
49
|
const MUTATION_CLASSES = new Set([
|
|
50
|
-
"none", "kb", "canvas", "dashboard", "data_source", "governance", "kb_config",
|
|
50
|
+
"none", "kb", "canvas", "dashboard", "data_source", "governance", "kb_config", "report",
|
|
51
51
|
]);
|
|
52
52
|
const SURFACES = new Set(["both", "cli_only", "app_only"]);
|
|
53
53
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"Fields per verb:",
|
|
13
13
|
" surface both | cli_only | app_only - where the verb is callable",
|
|
14
14
|
" is_read_only true when the verb cannot change stored state",
|
|
15
|
-
" mutation_class none | kb | canvas | dashboard | data_source | governance | kb_config",
|
|
15
|
+
" mutation_class none | kb | canvas | dashboard | data_source | governance | kb_config | report",
|
|
16
16
|
" (routes the validation-gateway pipeline and the loop guards)",
|
|
17
17
|
" requires_approval true when the turn must show an approval card before executing",
|
|
18
18
|
" silent_retry_exempt true when a failure must surface instead of being retried silently",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"query": "Run SQL against a cached data source or a live warehouse, through the governance gateway",
|
|
34
34
|
"metadata": "Warehouse metadata discovery - schemas, tables and columns",
|
|
35
35
|
"governance": "Governance conformance and the audit log",
|
|
36
|
-
"status": "The caller's effective permissions per domain"
|
|
36
|
+
"status": "The caller's effective permissions per domain",
|
|
37
|
+
"report": "Scheduled reports - a dashboard emailed or posted to Slack on a schedule, optionally with agent commentary"
|
|
37
38
|
},
|
|
38
39
|
"verbs": {
|
|
39
40
|
"auth login": {
|
|
@@ -323,6 +324,14 @@
|
|
|
323
324
|
"requires_approval": true,
|
|
324
325
|
"silent_retry_exempt": false
|
|
325
326
|
},
|
|
327
|
+
"kb batch": {
|
|
328
|
+
"surface": "both",
|
|
329
|
+
"noun": "kb_write",
|
|
330
|
+
"is_read_only": false,
|
|
331
|
+
"mutation_class": "kb",
|
|
332
|
+
"requires_approval": true,
|
|
333
|
+
"silent_retry_exempt": true
|
|
334
|
+
},
|
|
326
335
|
"kb template list": {
|
|
327
336
|
"surface": "both",
|
|
328
337
|
"noun": "kb_read",
|
|
@@ -431,6 +440,13 @@
|
|
|
431
440
|
"requires_approval": false,
|
|
432
441
|
"silent_retry_exempt": false
|
|
433
442
|
},
|
|
443
|
+
"ds usage": {
|
|
444
|
+
"surface": "both",
|
|
445
|
+
"is_read_only": true,
|
|
446
|
+
"mutation_class": "none",
|
|
447
|
+
"requires_approval": false,
|
|
448
|
+
"silent_retry_exempt": false
|
|
449
|
+
},
|
|
434
450
|
"ds create": {
|
|
435
451
|
"surface": "both",
|
|
436
452
|
"is_read_only": false,
|
|
@@ -640,13 +656,121 @@
|
|
|
640
656
|
"requires_approval": true,
|
|
641
657
|
"silent_retry_exempt": true
|
|
642
658
|
},
|
|
659
|
+
"dashboard delete-preview": {
|
|
660
|
+
"surface": "cli_only",
|
|
661
|
+
"is_read_only": true,
|
|
662
|
+
"mutation_class": "none",
|
|
663
|
+
"requires_approval": false,
|
|
664
|
+
"silent_retry_exempt": false,
|
|
665
|
+
"reason": "The in-app dashboard tool doc sits at its 2000-character ceiling, so the action waits on a tightening of that noun's summaries. In the app, `dashboard delete` with `delete_sources` checks the named ids on the server before the approval card, the card lists every data source that will be deleted, and the delete removes only those ids the server still offers."
|
|
666
|
+
},
|
|
667
|
+
"report list": {
|
|
668
|
+
"surface": "both",
|
|
669
|
+
"is_read_only": true,
|
|
670
|
+
"mutation_class": "none",
|
|
671
|
+
"requires_approval": false,
|
|
672
|
+
"silent_retry_exempt": false
|
|
673
|
+
},
|
|
674
|
+
"report destinations": {
|
|
675
|
+
"surface": "both",
|
|
676
|
+
"is_read_only": true,
|
|
677
|
+
"mutation_class": "none",
|
|
678
|
+
"requires_approval": false,
|
|
679
|
+
"silent_retry_exempt": false
|
|
680
|
+
},
|
|
681
|
+
"report get": {
|
|
682
|
+
"surface": "both",
|
|
683
|
+
"is_read_only": true,
|
|
684
|
+
"mutation_class": "none",
|
|
685
|
+
"requires_approval": false,
|
|
686
|
+
"silent_retry_exempt": false
|
|
687
|
+
},
|
|
688
|
+
"report runs": {
|
|
689
|
+
"surface": "both",
|
|
690
|
+
"is_read_only": true,
|
|
691
|
+
"mutation_class": "none",
|
|
692
|
+
"requires_approval": false,
|
|
693
|
+
"silent_retry_exempt": false
|
|
694
|
+
},
|
|
695
|
+
"report run": {
|
|
696
|
+
"surface": "both",
|
|
697
|
+
"is_read_only": true,
|
|
698
|
+
"mutation_class": "none",
|
|
699
|
+
"requires_approval": false,
|
|
700
|
+
"silent_retry_exempt": false
|
|
701
|
+
},
|
|
702
|
+
"report create": {
|
|
703
|
+
"surface": "both",
|
|
704
|
+
"is_read_only": false,
|
|
705
|
+
"mutation_class": "report",
|
|
706
|
+
"requires_approval": true,
|
|
707
|
+
"silent_retry_exempt": true,
|
|
708
|
+
"app_params": {
|
|
709
|
+
"state_json": {
|
|
710
|
+
"type": "string",
|
|
711
|
+
"required": false,
|
|
712
|
+
"description": "The full filter map as a JSON object string, e.g. {\"region\": [\"EU\"]}. filter entries override its keys. Prefer filter for a few keys.",
|
|
713
|
+
"reason": "The CLI reads the full map from a file (--state-file), which an in-app turn has no disk for, so the map rides the call. Same capability (set the report's filters), different mechanics."
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
"report update": {
|
|
718
|
+
"surface": "both",
|
|
719
|
+
"is_read_only": false,
|
|
720
|
+
"mutation_class": "report",
|
|
721
|
+
"requires_approval": true,
|
|
722
|
+
"silent_retry_exempt": true,
|
|
723
|
+
"app_params": {
|
|
724
|
+
"state_json": {
|
|
725
|
+
"type": "string",
|
|
726
|
+
"required": false,
|
|
727
|
+
"description": "The full filter map as a JSON object string, e.g. {\"region\": [\"EU\"]}. filter entries override its keys. Prefer filter for a few keys.",
|
|
728
|
+
"reason": "Same as report create: --state-file is a filesystem source an in-app turn does not have."
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
},
|
|
732
|
+
"report pause": {
|
|
733
|
+
"surface": "both",
|
|
734
|
+
"is_read_only": false,
|
|
735
|
+
"mutation_class": "report",
|
|
736
|
+
"requires_approval": true,
|
|
737
|
+
"silent_retry_exempt": true
|
|
738
|
+
},
|
|
739
|
+
"report resume": {
|
|
740
|
+
"surface": "both",
|
|
741
|
+
"is_read_only": false,
|
|
742
|
+
"mutation_class": "report",
|
|
743
|
+
"requires_approval": true,
|
|
744
|
+
"silent_retry_exempt": true
|
|
745
|
+
},
|
|
746
|
+
"report test": {
|
|
747
|
+
"surface": "both",
|
|
748
|
+
"is_read_only": false,
|
|
749
|
+
"mutation_class": "report",
|
|
750
|
+
"requires_approval": true,
|
|
751
|
+
"silent_retry_exempt": true
|
|
752
|
+
},
|
|
753
|
+
"report send": {
|
|
754
|
+
"surface": "both",
|
|
755
|
+
"is_read_only": false,
|
|
756
|
+
"mutation_class": "report",
|
|
757
|
+
"requires_approval": true,
|
|
758
|
+
"silent_retry_exempt": true
|
|
759
|
+
},
|
|
760
|
+
"report delete": {
|
|
761
|
+
"surface": "both",
|
|
762
|
+
"is_read_only": false,
|
|
763
|
+
"mutation_class": "report",
|
|
764
|
+
"requires_approval": true,
|
|
765
|
+
"silent_retry_exempt": true
|
|
766
|
+
},
|
|
643
767
|
"connector list": {
|
|
644
768
|
"surface": "cli_only",
|
|
645
769
|
"is_read_only": true,
|
|
646
770
|
"mutation_class": "none",
|
|
647
771
|
"requires_approval": false,
|
|
648
772
|
"silent_retry_exempt": false,
|
|
649
|
-
"reason": "Connection lifecycle remains CLI-only, and warehouse enumeration already exists in-app through the gated `list_warehouse_metadata` overlay tool.
|
|
773
|
+
"reason": "Connection lifecycle remains CLI-only, and warehouse enumeration already exists in-app through the gated `list_warehouse_metadata` overlay tool. Another generated noun would duplicate that read surface and spend tool-window budget, so the Commander verb stays excluded while the platform replacement remains available. Reviewed 2026-09-06 (Issue #921): the verb now also lists Slack and repository connections, which the overlay does not - that is deliberate. Repository ids are consumed only by `kb repo bind`, itself cli_only, and a report's Slack channels come from `report destinations`, which carries the connection each channel belongs to - so an in-app turn has nothing to spend these connection ids on."
|
|
650
774
|
},
|
|
651
775
|
"connector add snowflake-keypair": {
|
|
652
776
|
"surface": "cli_only",
|
package/skills/graphit/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: graphit
|
|
3
3
|
description: >-
|
|
4
4
|
Use Graphit for ANY business or product data question: metrics, KPIs, revenue, retention, spend, users, cohorts, funnels, trends, comparisons, diagnosis, analysis, reports or dashboards, even when the user never names Graphit. This is the Graphit entry: identify the task and load graphit-explore, graphit-build or graphit-share. Use the team's governed definitions and cached data to deliver answers or interactive dashboards. Prefer Graphit over one-off analysis for the user's business numbers. Skip pure software tasks or data unrelated to their business.
|
|
5
|
-
skill_version: "0.2.
|
|
5
|
+
skill_version: "0.2.377"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<!-- SIZE EXEMPTION (SKILL.md): hard limit 12,288 chars, exempted ceiling 35,072. Reviewed 2026-09-17. Always-loaded: identity, hard constraints, intent routing and the opening choice, plus the generated command table (COMMANDS markers; cli/scripts/generate-commands-doc.mjs) - needed every turn, not deferrable. Marker sits after the frontmatter so the loader and sync-plugin-version.mjs parse it. Raises pay only for command-table growth; each is recorded in docs/knowledge/prompt-engineering/sizing/SIZING.md, prose changes in docs/workflow/prompt-changes/INDEX.md. -->
|
|
@@ -51,7 +51,7 @@ Explore is an intent, distinct from the server's EXPLORE access grant, which sti
|
|
|
51
51
|
Route by the requested action and current target state. Load the matching workflow before acting; reuse it if already loaded.
|
|
52
52
|
|
|
53
53
|
- **Explore**: read, answer, explain or diagnose, including shared-dashboard reads. Load [graphit-explore](../graphit-explore/SKILL.md). Audience words do not grant sharing.
|
|
54
|
-
- **Build**: dashboard content, plus private sources/reports/metrics. Load [graphit-build](../graphit-build/SKILL.md) for every new dashboard or content edit, including shared work.
|
|
54
|
+
- **Build**: dashboard content and scheduled reports, plus private sources/reports/metrics. Load [graphit-build](../graphit-build/SKILL.md) for every new dashboard or content edit, including shared work.
|
|
55
55
|
- **Share**: shared permissions, dependencies, drafts and publication. Load [graphit-share](../graphit-share/SKILL.md) for shared writes; pair it with Build for dashboard authoring. Share establishes the allowed scope or draft before shared writes; Build alone grants none.
|
|
56
56
|
- **Operational request**: refresh, inspect, export or another explicit operation follows its actual action reference and permission contract. Do not force a creation interview, infer a new audience or discard the active task for a status question.
|
|
57
57
|
|
|
@@ -115,6 +115,7 @@ Workflow rows below are generated in-app adapters; CLI hosts load the named work
|
|
|
115
115
|
| a graph switches metric, horizon, grain or grouping; typed query inputs | query-contract.md |
|
|
116
116
|
| reusing a chart across dashboards as a template, or expanding one on a host | templates.md |
|
|
117
117
|
| building a slide deck | presentations.md |
|
|
118
|
+
| scheduling, changing, sending or troubleshooting a scheduled report (email/Slack delivery) | scheduled-reports.md |
|
|
118
119
|
| moving an existing dashboard's queries onto its entities, or explaining a legacy-query save warning | migration.md |
|
|
119
120
|
| checking a dashboard against the write contract without saving - pre-flighting an edit, or an alignment sweep | alignment.md |
|
|
120
121
|
| CLI/plugin health, permission errors, local artifacts | operations.md |
|
|
@@ -124,7 +125,7 @@ Workflow rows below are generated in-app adapters; CLI hosts load the named work
|
|
|
124
125
|
|
|
125
126
|
## Commands
|
|
126
127
|
|
|
127
|
-
Claude Code supplies the `graphit` wrapper. On Codex, Cursor, terminals and CI, use `npx -y @graphit/cli@0.2.
|
|
128
|
+
Claude Code supplies the `graphit` wrapper. On Codex, Cursor, terminals and CI, use `npx -y @graphit/cli@0.2.377 <command>`; pin a version for reproducibility. The table is generated from the CLI; check command help for exact flags.
|
|
128
129
|
|
|
129
130
|
<!-- COMMANDS:START -->
|
|
130
131
|
|
|
@@ -153,6 +154,7 @@ _Generated by `npm run gen:commands`; do not hand-edit between the markers._
|
|
|
153
154
|
- `kb repo token mint` - Mint a display-once CI machine token (org admin); scope kb:verify or kb:apply - `--scope`
|
|
154
155
|
- `kb repo token list` - List CI machine tokens: metadata only, never the secret
|
|
155
156
|
- `kb repo token revoke <token-id>` - Revoke a CI machine token (org admin)
|
|
157
|
+
- `kb batch` - Apply many metric and semantic-model creates and updates as one Knowledge Base change (up to 50 per batch; 20 in-app). Items: {op: create, noun, definition, unverified?} or {op: update, noun, name, patch}; each passes the same checks as kb create/kb update and reports its own result, and readers rebuild once for the whole batch instead of once per edit. Groups, rules and deletes use their own verbs - `--file --json --stop-on-error`
|
|
156
158
|
- `kb template list` - List chart templates without their HTML
|
|
157
159
|
- `kb template get <name>` - Fetch one chart template with its HTML. What expands in every adopting dashboard
|
|
158
160
|
- `kb template create` - Create a chart template from an HTML fragment. A fragment may carry <script> and <style> and {{param}} placeholders in markup, never data-graphit-id/-sql/-ds/-label/-vocab/-state attributes: the host entity owns the query - `--name --file --json --description --params`
|
|
@@ -187,6 +189,7 @@ _Generated by `npm run gen:commands`; do not hand-edit between the markers._
|
|
|
187
189
|
|
|
188
190
|
**ds** - Data source management
|
|
189
191
|
- `ds refresh-history <id>` - Show recent refresh runs for a data source with the Snowflake query id per run (status, time, rows, duration). Runs from before query-id capture - or a failure before any query ran - show 'not captured'. Read-only; no ds refresh-history delete. - `--limit`
|
|
192
|
+
- `ds usage [id]` - Show which canvas dashboards and graphs read a data source. With an id: each dashboard you can open and its graphs, plus a count of graphs on dashboards you cannot open. Without an id: dashboard_count and graph_count for every source you can read (0 = no graph uses it). A graph counts when its data-graphit-ds names the source, its governed metrics or dimensions come from the source's semantic model, or its SQL reads the source by name. Graphs composed only in JavaScript are not seen. Read-only; ds delete still re-checks metrics and rules.
|
|
190
193
|
- `ds move <id>` - Not a command anywhere: a source lives in its bound semantic model's group; kb update semantic-model moves it
|
|
191
194
|
- `ds delete <id>` - Delete one of YOUR OWN private data sources (requires --yes). Shared sources are deleted in the Sources Hub, where the cascade is visible. - `--yes`
|
|
192
195
|
- `ds list` - List data sources. Rows carry domain, created_at and created_by. Response carries count/total/truncated; below total = capped, raise --limit - `--limit`
|
|
@@ -207,7 +210,7 @@ _Generated by `npm run gen:commands`; do not hand-edit between the markers._
|
|
|
207
210
|
- `dashboard move <id>` - Move a dashboard within one space, or return it to root. This changes only navigation metadata and needs no canvas edit session. Its placement in other spaces, content and sharing stay unchanged. Use sharing operations separately to grant access. - `--space --team --revision --folder`
|
|
208
211
|
- `dashboard list` - List custom dashboards. --view takes mine, shared, editable, all (default). mine is what you created and so own - exactly one owner per dashboard, so mine is how teammates split migration work with no overlap. editable adds dashboards others own that you can change. Every row carries permission owner/editor/viewer. - `--view --team`
|
|
209
212
|
- `dashboard create` - Create a new custom dashboard - `--name`
|
|
210
|
-
- `dashboard share <id>` - Share an
|
|
213
|
+
- `dashboard share <id>` - Share a dashboard you own, or as an org admin/owner one you can see. Org admins/owners may share it into Org or a team they belong to. Org requires admin/owner; Team requires membership. An optional folder path shares and files atomically; invalid paths reject both. - `--space --team --folder-path`
|
|
211
214
|
- `dashboard get <id>` - Get dashboard details - `--html`
|
|
212
215
|
- `dashboard check <id>` - Check a dashboard against the canvas write contract without saving. No flags = audit the stored page's standing debt; --file/--stdin = dry-run a proposed document and report the exact save verdict, without burning a version. Exits 1 when a save would be refused. - `--file --stdin`
|
|
213
216
|
- `dashboard update-html <id>` - Replace dashboard HTML content - `--file --stdin --label`
|
|
@@ -216,10 +219,25 @@ _Generated by `npm run gen:commands`; do not hand-edit between the markers._
|
|
|
216
219
|
- `dashboard list-entities <id>` - List the entities on a dashboard (id, label, KB refs, data source)
|
|
217
220
|
- `dashboard get-entity <id> <entityId>` - Get entity context. Includes label, SQL, KB refs, data source and HTML. Use --with-data to also execute the governed query and return resolved data inline - that envelope carries truncated (false = complete) and executed_row_count when capped. Use --image for a local PNG of the graph (as last viewed) to Read - `--with-data --max-rows --params --adhoc-reason --image --raw`
|
|
218
221
|
- `dashboard export <id>` - Export dashboard as PNG or PDF - `--format --output`
|
|
219
|
-
- `dashboard edit <id>` - Enter edit mode on a shared dashboard: catch the editing session + start a draft
|
|
220
|
-
- `dashboard publish <id>` - Publish your draft edits on a shared dashboard
|
|
221
|
-
- `dashboard release <id>` - Discard your unpublished draft edits on a shared dashboard and release the editing session
|
|
222
|
-
- `dashboard delete <id>` -
|
|
222
|
+
- `dashboard edit <id>` - Enter edit mode on a shared dashboard: catch the editing session + start a draft. Then opens 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. - `--no-open`
|
|
223
|
+
- `dashboard publish <id>` - Publish your draft edits on a shared dashboard and release the editing session. This makes them live.
|
|
224
|
+
- `dashboard release <id>` - Discard your unpublished draft edits on a shared dashboard and release the editing session. Requires --yes. - `--yes`
|
|
225
|
+
- `dashboard delete-preview <id>` - Preview a delete: the data sources only this dashboard uses. orphan_sources are your own private ones nothing else uses (ids for delete --delete-sources); kept_sources are the rest, each with its rule. Deletes nothing.
|
|
226
|
+
- `dashboard delete <id>` - Delete a custom dashboard. Requires --yes. Data sources are kept unless named in --delete-sources (see delete-preview). - `--yes --delete-sources`
|
|
227
|
+
|
|
228
|
+
**report** - Scheduled reports - a dashboard emailed or posted to Slack on a schedule, optionally with agent commentary
|
|
229
|
+
- `report list` - List scheduled reports you can see - `--dashboard`
|
|
230
|
+
- `report destinations` - Where reports can go: Slack channels the bot can post to, org members, and allowed email domains
|
|
231
|
+
- `report get <id>` - Show one report: schedule, destinations, filters, status
|
|
232
|
+
- `report create` - Schedule a dashboard as a report - needs at least one --email or --slack; you become its creator and it renders with your data access - `--dashboard --name --frequency --send-time --day-of-week --day-of-month --timezone --email --slack --subject --instructions --filter --state-file --skip-if-empty`
|
|
233
|
+
- `report update <id>` - Change a report - only the flags you pass change; recipients, Slack channels, instructions and filters are the creator's alone to change - `--name --frequency --send-time --day-of-week --day-of-month --timezone --email --slack --subject --instructions --filter --state-file --skip-if-empty --send-if-empty --clear-filters --clear-instructions`
|
|
234
|
+
- `report pause <id>` - Pause a report - no scheduled runs until resumed
|
|
235
|
+
- `report resume <id>` - Resume a paused report
|
|
236
|
+
- `report test <id>` - Send a test run to the report's creator only
|
|
237
|
+
- `report send <id>` - Send a report now to all its recipients and channels (requires --yes) - `--yes`
|
|
238
|
+
- `report delete <id>` - Delete a report and its schedule (requires --yes) - `--yes`
|
|
239
|
+
- `report runs <id>` - Recent runs of a report: status, deliveries, errors, commentary outcome - `--limit`
|
|
240
|
+
- `report run <id> <run-id>` - The agent commentary exchange behind one run (the report's creator only)
|
|
223
241
|
|
|
224
242
|
**connector** - Connection management. OAuth and GitHub connections are set up in the Graphit web app.
|
|
225
243
|
- `connector list` - List connections (Snowflake, BigQuery, Slack, GitHub/Bitbucket)
|
|
@@ -32,6 +32,8 @@ When no source exists and the user asks for a sketch, mockup, wireframe or layou
|
|
|
32
32
|
|
|
33
33
|
Build and show sections as they become useful; continue authorized work without an approval round per chart. Check the canvas, fix `entity_sql_warnings`, and verify rendering and real resolves before calling a data-backed dashboard complete. For a preview, verify layout and marker coverage and report it specifically as a preview.
|
|
34
34
|
|
|
35
|
-
Without Share's established shared scope/draft, Build writes only privately. Shared authoring stays within that authorization; Share retains checks before shared dependency writes and publication. Private sources refresh manually, in full. A schedule or Slack/email delivery request needs Share for the source and its bound model; explain that and offer it if not already requested. The dashboard may remain private. A private report or export alone does not imply scheduled delivery or a visibility change.
|
|
35
|
+
Without Share's established shared scope/draft, Build writes only privately. Shared authoring stays within that authorization; Share retains checks before shared dependency writes and publication. Private sources refresh manually, in full. A schedule or Slack/email delivery request needs Share for the source and its bound model; explain that and offer it if not already requested, then schedule through scheduled-reports.md. The dashboard may remain private. A private report or export alone does not imply scheduled delivery or a visibility change.
|
|
36
36
|
|
|
37
37
|
For Private first, end with the private link, verification and limitations, plus one offer to share; an offer grants no permission. When sharing/publication is already requested, continue the same artifact through Share's remaining checks and report its actual outcome. Do not repeat an answered choice; obtain approval for additional effects when required. A draft-only request stays a draft.
|
|
38
|
+
|
|
39
|
+
After completing a dashboard, or when the user asks for something recurring ("every Monday", "a weekly update", "send this to the team"), offer once per session to schedule it as a report; create one only after an explicit yes.
|
|
@@ -32,7 +32,7 @@ Example: a private retention dashboard is created in My Dashboards without a fol
|
|
|
32
32
|
## Build, share and file
|
|
33
33
|
|
|
34
34
|
1. Create the dashboard privately with `dashboard create` and retain its returned ID. Build and verify the content following dashboard-planning.md and runtime.md. Do not share an unfinished dashboard.
|
|
35
|
-
2. Refresh the chosen directory after building. For Org or Team, use `dashboard share` on that same ID with the chosen space/team and `folder_path` (CLI flag `--folder-path`): a slash-separated existing path within that audience, or `/` for root. This single operation shares and files together. Org requires an org admin/owner
|
|
35
|
+
2. Refresh the chosen directory after building. For Org or Team, use `dashboard share` on that same ID with the chosen space/team and `folder_path` (CLI flag `--folder-path`): a slash-separated existing path within that audience, or `/` for root. This single operation shares and files together. Org requires an org admin/owner; Team requires actual membership. The server re-resolves the exact path in its transaction, preserving the private-dependency sharing guard. Invalid, missing or inaccessible paths reject both changes; show the error and let the user correct the path. Never omit a rejected path and retry at root. No fuzzy matching or automatic folder creation. Omitting the path deliberately means share only and keep the existing placement.
|
|
36
36
|
3. My Dashboards needs no sharing: use `dashboard move` for a nested personal folder with the selected folder ID and freshly read revision. A new dashboard at root needs no move. A revision conflict requires a fresh read and reconsideration. Paths address the names that exist at commit time; they do not pin an earlier folder identity if a different folder later takes the same path.
|
|
37
37
|
4. Verify the same ID through `dashboard list` for visibility/team_ids and through the destination's folder listing for placement. Follow pagination as needed. Return the dashboard link, full breadcrumb and actual audience only after those reads agree. Later content edits on a shared dashboard require the existing edit-session/draft flow.
|
|
38
38
|
|
|
@@ -63,7 +63,7 @@ On an empty or suspiciously-null result: check the selected source and dialect,
|
|
|
63
63
|
- Reading does not imply authority over connector, SQL, or refresh settings.
|
|
64
64
|
- Visibility and masking cover agent, canvas, render, export, and report paths.
|
|
65
65
|
- Private names and columns remain concealed.
|
|
66
|
-
- Delete your own private sources with `graphit ds delete <id> --yes` only after the user confirms. Shared sources stay in the Sources Hub. A 409 names visible dependents to remove or rebind first; a 202 means deletion applied but storage cleanup is pending: report it and do not repeat the delete.
|
|
66
|
+
- Delete your own private sources with `graphit ds delete <id> --yes` only after the user confirms. Shared sources stay in the Sources Hub. `dashboard delete <id> --yes --delete-sources <ids>` also removes the named own private sources only that dashboard used (ids from `dashboard delete-preview`). A 409 names visible dependents to remove or rebind first; a 202 means deletion applied but storage cleanup is pending: report it and do not repeat the delete.
|
|
67
67
|
- There is no source move on any surface. A source lives in the `group` of the semantic model bound to it, so `kb update semantic-model <name>` with a new `group` moves the source; a source with no bound model yet keeps the domain it was created with.
|
|
68
68
|
|
|
69
69
|
For refresh modes, history, incremental tuning, and reconciliation, load `data-source-refresh.md`.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Advanced Filter Controls - Dependent Dropdowns and Date Presets
|
|
2
2
|
|
|
3
|
-
Load only when you need
|
|
3
|
+
Load only when you need an optional control on top of the core filters: a dependent dropdown, data-driven date bounds, a top-N list, or a date-preset picker. The base filter, param, bind, wiring, `:name` binding, and saved-view mechanics live in `filters.md`. Every control below is headless logic - you own all the markup.
|
|
4
4
|
|
|
5
5
|
## graphit.cascade(el, options) - Only Relevant Values
|
|
6
6
|
|
|
7
|
-
Dependent dropdowns: fetch a column's DISTINCT values constrained by other filters, and refetch when they change
|
|
7
|
+
Dependent dropdowns: fetch a column's DISTINCT values constrained by other filters, and refetch when they change - pick an org and the user list shows only that org's users. You build the markup in `render`.
|
|
8
8
|
|
|
9
9
|
```js
|
|
10
10
|
const org = graphit.filter('org', { label: 'Org' })
|
|
@@ -25,11 +25,12 @@ graphit.cascade('#user-list', {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
- `filters()` returns `{ COLUMN: value }`. A scalar makes `COLUMN = :p`; an array makes `COLUMN IN :p`. One contract everywhere: `null`, absent or `''` means ALL (no constraint), and `[]` means match NOTHING - an empty-array upstream settles the list empty without issuing a query.
|
|
28
|
-
- `
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
28
|
+
- Objects: `{ exclude: [...] }` is NOT IN, keeping null rows unless `null` is listed; `{ start, end }` takes `dr.get()` as-is (a date-only `end` includes that day); `{ min, max }` is inclusive. Empty ones constrain nothing.
|
|
29
|
+
- `selection` (a filter handle) is auto-pruned to the surviving values when an upstream changes. Name the control a cascade feeds - pass `selection`, or use the `column` that control declares in `data-graphit-field` - so report and saved-view editors can list and search these values.
|
|
30
|
+
- Returns `{ destroy(), search(term) }`. Keep the result set small (default `LIMIT 1001`).
|
|
31
|
+
- `withCounts: true` adds a per-value row count, delivered as `ctx.counts` alongside `values` (same order). `orderBy: 'count'` returns the top `limit` by count instead - for high-cardinality columns; it never prunes `selection`.
|
|
32
|
+
- Type-ahead: call the handle's `search('ber')` to narrow server-side; it is debounced with the normal refetch and is a case-insensitive contains match with literal wildcards, so `100%` finds `100%`. Clearing it (`search('')`) restores the full list.
|
|
33
|
+
- For low-cardinality cascades, `preload: true` fetches the distinct cross-product ONCE and filters in memory on every change; above `limit` tuples (default 1001), or with an object filter, it queries per change.
|
|
33
34
|
|
|
34
35
|
## graphit.dataBounds(options) - A Column's Real Min/Max
|
|
35
36
|
|
|
@@ -43,6 +44,7 @@ input.max = b.max
|
|
|
43
44
|
|
|
44
45
|
- Returns `{ min, max, dataMax, today }`. Use `max` as the picker ceiling: it is `max(dataMax, today)`, so a source lagging a few days never locks the user out of today. `dataMax` is the raw last row, for a "data through {dataMax}" caption.
|
|
45
46
|
- Non-date columns return their true min/max with no ceiling applied.
|
|
47
|
+
- Optional `filters` (as in cascade, e.g. `{ IS_WEB: 0 }`) bound matching rows only.
|
|
46
48
|
|
|
47
49
|
## graphit.rank(options) - Top-N Values
|
|
48
50
|
|
|
@@ -57,7 +59,7 @@ const top = await graphit.rank({
|
|
|
57
59
|
})
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
- Returns a plain array of values. Prefer `{{ Metric('name') }}` so ranking uses the org's definition; a bare aggregate accepts SUM, COUNT, AVG, MIN, or MAX over one column.
|
|
62
|
+
- Returns a plain array of values; `withScores: true` returns `{ values, scores }` (score = the `by` value). Prefer `{{ Metric('name') }}` so ranking uses the org's definition; a bare aggregate accepts SUM, COUNT, AVG, MIN, or MAX over one column.
|
|
61
63
|
|
|
62
64
|
## graphit.dateRange(id, options) - Date Presets
|
|
63
65
|
|