@graphit/cli 0.2.357 → 0.2.370

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 (62) 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/bin/graphit +1 -1
  5. package/bin/graphit.ps1 +1 -1
  6. package/dist/commands/dashboard-entities.d.ts +14 -0
  7. package/dist/commands/dashboard-entities.js +140 -0
  8. package/dist/commands/dashboard-entities.js.map +1 -0
  9. package/dist/commands/dashboard.d.ts +1 -14
  10. package/dist/commands/dashboard.js +6 -135
  11. package/dist/commands/dashboard.js.map +1 -1
  12. package/dist/commands/ds/api.js +2 -9
  13. package/dist/commands/ds/api.js.map +1 -1
  14. package/dist/commands/ds/delete.d.ts +2 -0
  15. package/dist/commands/ds/delete.js +35 -0
  16. package/dist/commands/ds/delete.js.map +1 -0
  17. package/dist/commands/ds/expose.d.ts +23 -0
  18. package/dist/commands/ds/expose.js +58 -0
  19. package/dist/commands/ds/expose.js.map +1 -0
  20. package/dist/commands/ds/polling.js +11 -10
  21. package/dist/commands/ds/polling.js.map +1 -1
  22. package/dist/commands/ds/render.d.ts +12 -1
  23. package/dist/commands/ds/render.js +58 -16
  24. package/dist/commands/ds/render.js.map +1 -1
  25. package/dist/commands/ds/types.d.ts +22 -5
  26. package/dist/commands/ds/types.js.map +1 -1
  27. package/dist/commands/ds/ui-only.js +2 -9
  28. package/dist/commands/ds/ui-only.js.map +1 -1
  29. package/dist/commands/ds-poll.js +4 -7
  30. package/dist/commands/ds-poll.js.map +1 -1
  31. package/dist/commands/ds.js +54 -29
  32. package/dist/commands/ds.js.map +1 -1
  33. package/dist/commands/kb.js +21 -0
  34. package/dist/commands/kb.js.map +1 -1
  35. package/dist/skill-guard.js +2 -0
  36. package/dist/skill-guard.js.map +1 -1
  37. package/package.json +5 -3
  38. package/scripts/sync-plugin-marketplace.sh +62 -15
  39. package/scripts/sync-plugin-version.mjs +7 -2
  40. package/scripts/sync-workflow-references.mjs +61 -0
  41. package/scripts/verb-policy-source.json +11 -3
  42. package/skills/graphit/SKILL.md +60 -101
  43. package/skills/graphit/VERSION.json +1 -1
  44. package/skills/graphit/references/build.md +37 -0
  45. package/skills/graphit/references/dashboard-create.md +20 -5
  46. package/skills/graphit/references/dashboard-planning.md +2 -2
  47. package/skills/graphit/references/data-sources.md +6 -4
  48. package/skills/graphit/references/explore.md +21 -0
  49. package/skills/graphit/references/filters.md +2 -2
  50. package/skills/graphit/references/kb-actions.md +2 -0
  51. package/skills/graphit/references/kb-discovery.md +3 -1
  52. package/skills/graphit/references/kb-scope.md +12 -1
  53. package/skills/graphit/references/onboarding.md +6 -12
  54. package/skills/graphit/references/operations.md +6 -9
  55. package/skills/graphit/references/query-contract.md +52 -0
  56. package/skills/graphit/references/runtime.md +2 -2
  57. package/skills/graphit/references/semantic-authoring.md +1 -1
  58. package/skills/graphit/references/share.md +46 -0
  59. package/skills/graphit/references/sharing-recovery.md +2 -0
  60. package/skills/graphit-build/SKILL.md +66 -0
  61. package/skills/graphit-explore/SKILL.md +50 -0
  62. package/skills/graphit-share/SKILL.md +75 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `ds verify --expose <columns>`: unhide detector-hidden columns as part of the
3
+ * same acceptance (a hidden column is masked as NULL in every query, not only
4
+ * for the AI).
5
+ *
6
+ * Composed on the client from the two routes that already exist - the scan
7
+ * (which may activate) has run, and each named column is now posted to the
8
+ * `kb column-visibility` route, one write per column, each authorized on its
9
+ * own by the server (the source's creator or an org admin may expose a
10
+ * detector verdict). A refusal is printed and reported, never hidden: the
11
+ * source stays as the scan left it with the column still hidden, and the
12
+ * caller exits non-zero. CLI HTTP stays route-native - no agent adapter here.
13
+ */
14
+ import { ScanResult } from "./types.js";
15
+ export interface ExposeOutcome {
16
+ exposed: string[];
17
+ failed: {
18
+ column: string;
19
+ error: string;
20
+ }[];
21
+ }
22
+ export declare function parseExposeList(raw: string): string[];
23
+ export declare function exposeColumns(scan: ScanResult, raw: string): Promise<ExposeOutcome>;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `ds verify --expose <columns>`: unhide detector-hidden columns as part of the
3
+ * same acceptance (a hidden column is masked as NULL in every query, not only
4
+ * for the AI).
5
+ *
6
+ * Composed on the client from the two routes that already exist - the scan
7
+ * (which may activate) has run, and each named column is now posted to the
8
+ * `kb column-visibility` route, one write per column, each authorized on its
9
+ * own by the server (the source's creator or an org admin may expose a
10
+ * detector verdict). A refusal is printed and reported, never hidden: the
11
+ * source stays as the scan left it with the column still hidden, and the
12
+ * caller exits non-zero. CLI HTTP stays route-native - no agent adapter here.
13
+ */
14
+ import { apiClient } from "../../api/client.js";
15
+ import { note } from "../../output/format.js";
16
+ export function parseExposeList(raw) {
17
+ return raw
18
+ .split(",")
19
+ .map((part) => part.trim())
20
+ .filter((part) => part.length > 0);
21
+ }
22
+ function errorText(err) {
23
+ if (err instanceof Error)
24
+ return err.message;
25
+ const detail = err?.detail;
26
+ return typeof detail === "string" ? detail : String(err);
27
+ }
28
+ export async function exposeColumns(scan, raw) {
29
+ const columns = parseExposeList(raw);
30
+ const outcome = { exposed: [], failed: [] };
31
+ if (columns.length === 0)
32
+ return outcome;
33
+ const model = scan.semantic_model_name;
34
+ if (!model) {
35
+ // The legacy scan path names no semantic model; the verdict lives on the
36
+ // semantic layer, so there is nothing here to expose.
37
+ note(` --expose needs the semantic layer; this source has no semantic model to change.`);
38
+ outcome.failed = columns.map((column) => ({ column, error: "no semantic model" }));
39
+ return outcome;
40
+ }
41
+ for (const column of columns) {
42
+ try {
43
+ const receipt = await apiClient.post(`/api/v1/cli/kb/semantic-model/${encodeURIComponent(model)}/columns/${encodeURIComponent(column)}/visibility`, { visible: true });
44
+ const who = receipt.visibility_set_by ? ` (set by ${receipt.visibility_set_by})` : "";
45
+ note(receipt.changed
46
+ ? ` ${receipt.column}: unhidden - served in every query${who}`
47
+ : ` ${receipt.column}: already visible`);
48
+ outcome.exposed.push(receipt.column);
49
+ }
50
+ catch (err) {
51
+ const message = errorText(err);
52
+ note(` ${column}: not exposed - ${message}`);
53
+ outcome.failed.push({ column, error: message });
54
+ }
55
+ }
56
+ return outcome;
57
+ }
58
+ //# sourceMappingURL=expose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expose.js","sourceRoot":"","sources":["../../../src/commands/ds/expose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAe9C,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,MAAM,MAAM,GAAI,GAA4B,EAAE,MAAM,CAAC;IACrD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAgB,EAAE,GAAW;IAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,OAAO,GAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,yEAAyE;QACzE,sDAAsD;QACtD,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAC1F,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAClC,iCAAiC,kBAAkB,CAAC,KAAK,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,aAAa,EAC7G,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;YACF,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,IAAI,CACF,OAAO,CAAC,OAAO;gBACb,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,qCAAqC,GAAG,EAAE;gBAC/D,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,mBAAmB,CAC3C,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,MAAM,mBAAmB,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  import { note } from "../../output/format.js";
11
11
  import { NOT_FOUND_STATUS, isCreatePollTerminal, reconcilePoll } from "../ds-poll.js";
12
12
  import { fetchDSList, scanDS } from "./api.js";
13
- import { formatRowCount, printShapeWarnings, printStatusTable, printVerifySummary } from "./render.js";
13
+ import { formatRowCount, printShapeWarnings, printStatusTable, printVerificationCTA, printVerifySummary } from "./render.js";
14
14
  import { MAX_CREATE_POLL_DURATION_MS, MAX_POLL_DURATION_MS, POLL_INTERVAL_MS } from "./types.js";
15
15
  // Returns true if it gave up at the timeout, false if every target reached a
16
16
  // terminal state - the caller surfaces this as `timed_out` in the JSON summary.
@@ -62,6 +62,10 @@ export async function pollUntilReady(targetIds, targets, errors) {
62
62
  const errorCount = Array.from(statuses.entries()).filter(([id, s]) => s === "error" || errors.has(id)).length;
63
63
  const notFoundCount = Array.from(statuses.values()).filter((s) => s === NOT_FOUND_STATUS).length;
64
64
  note(`\n ${readyCount}/${targetIds.size} refreshed${errorCount > 0 ? `, ${errorCount} failed` : ""}${notFoundCount > 0 ? `, ${notFoundCount} not found` : ""}`);
65
+ for (const [id, status] of statuses) {
66
+ if (status === "pending_verification")
67
+ printVerificationCTA(id);
68
+ }
65
69
  return false;
66
70
  }
67
71
  }
@@ -103,14 +107,13 @@ export async function pollUntilDSReady(id, name) {
103
107
  continue;
104
108
  if (!isCreatePollTerminal(ds.status))
105
109
  continue;
106
- // Issue #775: pending_verification is a terminal SUCCESS (server-side scan
107
- // succeeded during creation); without this branch the loop spun to the
108
- // 70-minute create cap on every scan-succeeded SQL create.
110
+ // A concurrent drift pause is terminal, so it cannot consume the 70-minute
111
+ // creation polling budget. Successful creates now land ready and verified.
109
112
  if (ds.status === "pending_verification") {
110
113
  if (isTTY)
111
- process.stderr.write(` scanned (${formatRowCount(ds.row_count)} rows), awaiting verification\n`);
114
+ process.stderr.write(` pending verification (${formatRowCount(ds.row_count)} rows)\n`);
112
115
  else
113
- note(` ${name}: scanned (${formatRowCount(ds.row_count)} rows), awaiting verification`);
116
+ note(` ${name}: pending verification (${formatRowCount(ds.row_count)} rows)`);
114
117
  return ds;
115
118
  }
116
119
  if (ds.status === "ready") {
@@ -144,10 +147,8 @@ export async function pollUntilDSReady(id, name) {
144
147
  note(`\n ${name} is still materializing server-side. Check status later with: graphit ds list`);
145
148
  return null;
146
149
  }
147
- // Issue #775: single copy of the "scanned, awaiting verification" call to action.
148
- // Printed identically after a create that lands at pending_verification and after
149
- // `ds verify` scans a warehouse/SQL source - kept in one place so the two paths
150
- // (create action + printVerifySummary) cannot drift.
150
+ // Reads stored facts for an already-scanned source; force and acceptSchema are
151
+ // supplied only by explicit ds verify actions, never by create completion.
151
152
  export async function scanAndPrintSummary(dsId, dsName, rowCount, force = false, acceptSchema = false) {
152
153
  const isTTY = process.stderr.isTTY ?? false;
153
154
  if (isTTY)
@@ -1 +1 @@
1
- {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/commands/ds/polling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/commands/ds/polling.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,20 @@
7
7
  * `ds.ts` so no Commander metadata moves and the generated command table in
8
8
  * SKILL.md cannot drift.
9
9
  */
10
- import type { DSInfo, ScanResult, ShapeValidation } from "./types.js";
10
+ import type { CreateResult, DSInfo, PiiVerdicts, ScanResult, ShapeValidation } from "./types.js";
11
11
  export declare function printShapeWarnings(validation?: ShapeValidation): void;
12
12
  export declare function formatRowCount(n: number): string;
13
13
  export declare function printStatusTable(targets: Map<string, DSInfo>, statuses: Map<string, string>, errors: Map<string, string>, clearPrevious: boolean): number;
14
14
  export declare function printVerificationCTA(dsId: string): void;
15
+ export declare function printCreateSummary(source: CreateResult): void;
16
+ /**
17
+ * The columns the PII detector hid, with its reason, and the exact way back.
18
+ * A hidden column is masked as NULL on EVERY query path - dashboards, exports,
19
+ * the AI - so this prints wherever the schema is signed: a false positive is
20
+ * seen at the moment it can be corrected rather than discovered as NULLs in a
21
+ * dashboard. The remedy follows the server's `can_expose_verdict`: the direct
22
+ * line when this caller may act, the ask when they may not - never an offer
23
+ * that would be refused.
24
+ */
25
+ export declare function printPiiHidden(scan: PiiVerdicts, dsId: string): void;
15
26
  export declare function printVerifySummary(scan: ScanResult, dsId: string, rowCount?: number): void;
@@ -7,7 +7,6 @@
7
7
  * `ds.ts` so no Commander metadata moves and the generated command table in
8
8
  * SKILL.md cannot drift.
9
9
  */
10
- import { getFrontendUrl } from "../../config.js";
11
10
  import { note } from "../../output/format.js";
12
11
  import { NOT_FOUND_STATUS } from "../ds-poll.js";
13
12
  // Project #244: print soft, non-blocking shape advisories. Print-and-proceed -
@@ -52,12 +51,57 @@ export function printStatusTable(targets, statuses, errors, clearPrevious) {
52
51
  return lines.length;
53
52
  }
54
53
  export function printVerificationCTA(dsId) {
55
- const url = `${getFrontendUrl()}/sources?tab=sources&sub=data&id=${dsId}`;
56
- note(`\n Scanned and awaiting verification. Review and activate in the platform:`);
57
- note(` ${url}`);
58
- note(`\n Or accept the AI schema as-is from the CLI:`);
54
+ note(`\n Schema verification is pending. Inspect the schema with:`);
55
+ note(` graphit ds verify ${dsId}`);
56
+ note(` If a breaking schema change is paused, review it before accepting with:`);
59
57
  note(` graphit ds verify ${dsId} --accept-schema\n`);
60
58
  }
59
+ export function printCreateSummary(source) {
60
+ printPiiHidden(source, source.id);
61
+ if (source.status === "ready" && source.verified) {
62
+ note(`\n Verified - this data source is queryable.\n`);
63
+ }
64
+ else if (source.status === "ready") {
65
+ note(` Data is ready, but its schema scan did not activate a model.`);
66
+ note(` Retry the scan with: graphit ds verify ${source.id}`);
67
+ }
68
+ else if (source.status === "pending_verification") {
69
+ printVerificationCTA(source.id);
70
+ }
71
+ }
72
+ /**
73
+ * The columns the PII detector hid, with its reason, and the exact way back.
74
+ * A hidden column is masked as NULL on EVERY query path - dashboards, exports,
75
+ * the AI - so this prints wherever the schema is signed: a false positive is
76
+ * seen at the moment it can be corrected rather than discovered as NULLs in a
77
+ * dashboard. The remedy follows the server's `can_expose_verdict`: the direct
78
+ * line when this caller may act, the ask when they may not - never an offer
79
+ * that would be refused.
80
+ */
81
+ export function printPiiHidden(scan, dsId) {
82
+ const flagged = scan.pii_hidden ?? [];
83
+ if (flagged.length === 0)
84
+ return;
85
+ const model = scan.semantic_model_name || scan.table_name;
86
+ const width = Math.max(...flagged.map((c) => c.column.length));
87
+ note(`\n Masked as NULL in every query (dashboards, exports, the AI) - ${flagged.length} column${flagged.length === 1 ? "" : "s"} the PII detector flagged:`);
88
+ for (const c of flagged) {
89
+ note(` ${c.column.padEnd(width)} ${c.reason ?? "PII detected"}`);
90
+ }
91
+ if (scan.can_expose_verdict) {
92
+ note(` False positive? Unhide a column with:`);
93
+ for (const c of flagged) {
94
+ note(` graphit kb column-visibility ${model} ${c.column} visible`);
95
+ }
96
+ note(` Or in one step: graphit ds verify ${dsId} --expose ${flagged.map((c) => c.column).join(",")}`);
97
+ }
98
+ else {
99
+ note(` False positive? Someone with write access to the group who created this source, or an org admin, can unhide it with:`);
100
+ for (const c of flagged) {
101
+ note(` graphit kb column-visibility ${model} ${c.column} visible`);
102
+ }
103
+ }
104
+ }
61
105
  export function printVerifySummary(scan, dsId, rowCount) {
62
106
  const line = "─".repeat(Math.max(scan.table_name.length, 30));
63
107
  note(`\n ${scan.table_name}`);
@@ -71,18 +115,16 @@ export function printVerifySummary(scan, dsId, rowCount) {
71
115
  if (rowCount !== undefined) {
72
116
  note(` Rows: ${formatRowCount(rowCount)}`);
73
117
  }
74
- // A file-upload verify (or an --accept-schema warehouse verify) activates the
75
- // source server-side, so there is nothing left to do - say so (Issue #544/#546).
76
- // Confirmed against the state the server reports back, not against the request
77
- // we made: a scan that demoted the source must fall through to the CTA below.
78
- if (scan.activated && scan.status !== "pending_verification") {
79
- note(`\n Verified - this data source is now queryable.\n`);
118
+ // The verdicts the signer must not miss, before the activation line / CTA.
119
+ printPiiHidden(scan, dsId);
120
+ // Completion is the state returned by the server, never the requested action.
121
+ if (scan.verified && scan.status === "ready") {
122
+ note(`\n Verified - this data source is queryable.\n`);
80
123
  return;
81
124
  }
82
- // Scanned but awaiting review (warehouse/SQL): the AI-inferred schema needs a
83
- // human to accept it. Offer both governed paths - review in the platform wizard,
84
- // or accept the schema as-is from the CLI (Issue #546). This is not "still
85
- // materializing" - the data is on disk; only verification is pending.
86
- printVerificationCTA(dsId);
125
+ if (scan.status === "pending_verification")
126
+ printVerificationCTA(dsId);
127
+ else
128
+ note(`\n Scan completed; source status: ${scan.status ?? "unknown"}, verified: ${scan.verified ?? "unknown"}.\n`);
87
129
  }
88
130
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/commands/ds/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/commands/ds/render.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,27 @@ export interface ShapeValidation {
40
40
  warnings?: string[];
41
41
  display_instruction?: string;
42
42
  }
43
- export interface ScanResult {
43
+ /** One column the PII detector hid, with the detector's reason. */
44
+ export interface PiiHiddenColumn {
45
+ column: string;
46
+ reason: string | null;
47
+ }
48
+ export interface PiiVerdicts {
49
+ semantic_model_name?: string | null;
50
+ table_name?: string;
51
+ pii_hidden?: PiiHiddenColumn[];
52
+ can_expose_verdict?: boolean;
53
+ }
54
+ export interface CreateResult extends PiiVerdicts {
55
+ id: string;
56
+ name: string;
57
+ status: string;
58
+ row_count?: number;
59
+ verified?: boolean;
60
+ source_tables?: string[];
61
+ validation?: ShapeValidation;
62
+ }
63
+ export interface ScanResult extends PiiVerdicts {
44
64
  data_source_id: string;
45
65
  kb_table_id: string;
46
66
  table_name: string;
@@ -62,10 +82,7 @@ export declare const MAX_CREATE_POLL_DURATION_MS: number;
62
82
  export declare const SCAN_TIMEOUT_MS = 90000;
63
83
  export declare const REFRESH_TRIGGER_TIMEOUT_MS = 60000;
64
84
  export declare const CREATE_TIMEOUT_MS = 120000;
65
- export interface FileUploadResult {
66
- id: string;
67
- name: string;
68
- status: string;
85
+ export interface FileUploadResult extends CreateResult {
69
86
  row_count: number;
70
87
  kb_table_id: string | null;
71
88
  domain: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/ds/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/C,qFAAqF;AACrF,yFAAyF;AACzF,oFAAoF;AACpF,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,kFAAkF;AAClF,mFAAmF;AACnF,uEAAuE;AACvE,+EAA+E;AAC/E,mFAAmF;AACnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAYzC;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/ds/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyFH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/C,qFAAqF;AACrF,yFAAyF;AACzF,oFAAoF;AACpF,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,kFAAkF;AAClF,mFAAmF;AACnF,uEAAuE;AACvE,+EAA+E;AAC/E,mFAAmF;AACnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AASzC;;;;GAIG"}
@@ -17,13 +17,6 @@
17
17
  import { getFrontendUrl } from "../../config.js";
18
18
  import { errorOutput } from "../../output/format.js";
19
19
  export const UI_ONLY_DS_ACTIONS = [
20
- {
21
- name: "delete",
22
- summary: "Delete a data source - not available on the CLI, use the Sources Hub",
23
- handoff: (frontendUrl) => "`ds delete` is not available on the CLI. Data source delete runs from the " +
24
- "Sources Hub, which shows what the change cascades into before it happens: " +
25
- `${frontendUrl}/sources?tab=sources&sub=data`,
26
- },
27
20
  {
28
21
  name: "move",
29
22
  summary: "Not a command anywhere: a source lives in its bound semantic model's group; kb update semantic-model moves it",
@@ -36,9 +29,9 @@ export const UI_ONLY_DS_ACTIONS = [
36
29
  },
37
30
  ];
38
31
  // Project #275: every positional argument in the tree carries a description,
39
- // including these two. They are excluded from the platform agent's generated
32
+ // including this handoff. It is excluded from the platform agent's generated
40
33
  // tool surface, so nothing reads this today - but a later decision to include
41
- // them must not be able to ship a parameter the model has to guess at.
34
+ // it must not be able to ship a parameter the model has to guess at.
42
35
  const UI_ONLY_ID_ARG = "Data source id, as returned by ds list";
43
36
  export function registerUiOnlyDSActions(ds) {
44
37
  for (const action of UI_ONLY_DS_ACTIONS) {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-only.js","sourceRoot":"","sources":["../../../src/commands/ds/ui-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,CAAC,MAAM,kBAAkB,GAKzB;IACJ;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,sEAAsE;QAC/E,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CACvB,4EAA4E;YAC5E,4EAA4E;YAC5E,GAAG,WAAW,+BAA+B;KAChD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EACL,+GAA+G;QACjH,OAAO,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAC5B,6FAA6F;YAC7F,gGAAgG;YAChG,0FAA0F,EAAE,KAAK;YACjG,iDAAiD;YACjD,6EAA6E;YAC7E,wEAAwE;KAC3E;CACF,CAAC;AAEF,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,cAAc,GAAG,wCAAwC,CAAC;AAEhE,MAAM,UAAU,uBAAuB,CAAC,EAAW;IACjD,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;aACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;aAChC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;aAC3B,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE;YACrB,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ui-only.js","sourceRoot":"","sources":["../../../src/commands/ds/ui-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,CAAC,MAAM,kBAAkB,GAKzB;IACJ;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EACL,+GAA+G;QACjH,OAAO,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,CAC5B,6FAA6F;YAC7F,gGAAgG;YAChG,0FAA0F,EAAE,KAAK;YACjG,iDAAiD;YACjD,6EAA6E;YAC7E,wEAAwE;KAC3E;CACF,CAAC;AAEF,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,cAAc,GAAG,wCAAwC,CAAC;AAEhE,MAAM,UAAU,uBAAuB,CAAC,EAAW;IACjD,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;aACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;aAChC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;aAC3B,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE;YACrB,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
@@ -11,11 +11,8 @@ export const NOT_FOUND_STATUS = "not_found";
11
11
  // small threshold rides out a single transient omission from fetchDSList()
12
12
  // while still resolving in a few seconds rather than the full poll timeout.
13
13
  export const NOT_FOUND_POLL_THRESHOLD = 2;
14
- // Issue #775: terminal SUCCESS statuses for a CREATE poll. pending_verification is
15
- // the NORMAL end state of a successful SQL/warehouse create - the export sequence
16
- // runs an inline KB scan and lands there whenever the scan succeeds ("ready" at
17
- // create time means the scan FAILED). The create poller must treat it as done or
18
- // it spins the full 70-min budget on every ordinary success.
14
+ // Non-error terminal states for creation polling. Clean creates land ready;
15
+ // retain a concurrent drift pause as terminal to avoid consuming the 70-min cap.
19
16
  export const CREATE_SUCCESS_STATUSES = new Set([
20
17
  "ready",
21
18
  "pending_verification",
@@ -26,7 +23,7 @@ export function isCreatePollTerminal(status) {
26
23
  }
27
24
  // Reconcile one poll's fresh DS list against the targets being waited on.
28
25
  // Mutates `statuses`, `targets`, and `missCounts` in place; returns true when
29
- // every target has reached a terminal state (ready / error / not_found).
26
+ // every target has reached a terminal state (ready / paused / error / not_found).
30
27
  //
31
28
  // When a target is missing from the fresh list, its consecutive-miss count is
32
29
  // bumped; once it crosses `notFoundThreshold` the target is marked not_found
@@ -41,7 +38,7 @@ export function reconcilePoll(targetIds, freshMap, statuses, targets, missCounts
41
38
  missCounts.delete(id);
42
39
  statuses.set(id, ds.status);
43
40
  targets.set(id, ds);
44
- if (ds.status !== "ready" && ds.status !== "error")
41
+ if (!["ready", "pending_verification", "error"].includes(ds.status))
45
42
  allDone = false;
46
43
  }
47
44
  else if (statuses.get(id) === NOT_FOUND_STATUS) {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-poll.js","sourceRoot":"","sources":["../../src/commands/ds-poll.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mEAAmE;AAEnE,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,mFAAmF;AACnF,kFAAkF;AAClF,gFAAgF;AAChF,iFAAiF;AACjF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAClE,OAAO;IACP,sBAAsB;CACvB,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,MAAM,KAAK,OAAO,IAAI,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAOD,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,mCAAmC;AACnC,MAAM,UAAU,aAAa,CAC3B,SAA2B,EAC3B,QAAwB,EACxB,QAA6B,EAC7B,OAAuB,EACvB,UAA+B,EAC/B,oBAA4B,wBAAwB;IAEpD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,EAAE,CAAC;YACP,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACpB,IAAI,EAAE,CAAC,MAAM,KAAK,OAAO,IAAI,EAAE,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,GAAG,KAAK,CAAC;QACtE,CAAC;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,gBAAgB,EAAE,CAAC;YACjD,mEAAmE;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"ds-poll.js","sourceRoot":"","sources":["../../src/commands/ds-poll.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mEAAmE;AAEnE,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,4EAA4E;AAC5E,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAClE,OAAO;IACP,sBAAsB;CACvB,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,MAAM,KAAK,OAAO,IAAI,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAOD,0EAA0E;AAC1E,8EAA8E;AAC9E,kFAAkF;AAClF,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,mCAAmC;AACnC,MAAM,UAAU,aAAa,CAC3B,SAA2B,EAC3B,QAAwB,EACxB,QAA6B,EAC7B,OAAuB,EACvB,UAA+B,EAC/B,oBAA4B,wBAAwB;IAEpD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,EAAE,CAAC;YACP,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;gBAAE,OAAO,GAAG,KAAK,CAAC;QACvF,CAAC;aAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,gBAAgB,EAAE,CAAC;YACjD,mEAAmE;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}