@bragi-gmbh/codebus 1.6.5 → 1.6.7

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.
@@ -23,6 +23,7 @@ export const GRAPH_CACHE_DIR = join(homedir(), ".codebus", "graph");
23
23
  export function defaultGraphPullDeps() {
24
24
  return {
25
25
  findLatestRun: async (sha) => {
26
+ let stderr = "";
26
27
  try {
27
28
  const endpoint = `repos/${GRAPHIFY_REPO}/actions/workflows/${GRAPHIFY_WORKFLOW}/runs`;
28
29
  const params = new URLSearchParams({ branch: GRAPH_BRANCH, status: "success", per_page: "10" });
@@ -35,12 +36,19 @@ export function defaultGraphPullDeps() {
35
36
  }
36
37
  return successful.length > 0 ? successful[0] : null;
37
38
  }
38
- catch {
39
- return null;
39
+ catch (err) {
40
+ stderr = err instanceof Error ? err.message : String(err);
41
+ throw new CodebusError(`gh failed to resolve latest graphify run: ${stderr}`, 1);
40
42
  }
41
43
  },
42
44
  downloadArtifact: async (runId, artifactName, destDir) => {
43
- await execFileP("gh", ["run", "download", String(runId), "--name", artifactName, "-D", destDir]);
45
+ try {
46
+ await execFileP("gh", ["run", "download", String(runId), "--name", artifactName, "-D", destDir]);
47
+ }
48
+ catch (err) {
49
+ const ghErr = err instanceof Error ? err.message : String(err);
50
+ throw new CodebusError(`gh failed to download artifact '${artifactName}' for run #${runId}: ${ghErr}`, 1);
51
+ }
44
52
  },
45
53
  };
46
54
  }
@@ -90,13 +98,23 @@ export async function pullSnapshot(run, deps) {
90
98
  }
91
99
  }
92
100
  mkdirSync(runDir, { recursive: true });
93
- await deps.downloadArtifact(run.id, "graphify-pointer", runDir);
101
+ try {
102
+ await deps.downloadArtifact(run.id, "graphify-pointer", runDir);
103
+ }
104
+ catch (err) {
105
+ throw new CodebusError(`failed to download artifact 'graphify-pointer' for run #${run.database_id} (sha ${run.head_sha.slice(0, 7)}): ${err instanceof Error ? err.message : String(err)}`, 1);
106
+ }
94
107
  const pointerPath = join(runDir, "pointer.json");
95
108
  if (!existsSync(pointerPath)) {
96
109
  throw new CodebusError(`Workflow run #${run.database_id} did not produce a graphify-pointer artifact.`, 1);
97
110
  }
98
111
  const pointer = JSON.parse(readFileSync(pointerPath, "utf-8"));
99
- await deps.downloadArtifact(run.id, "graphify-snapshot", runDir);
112
+ try {
113
+ await deps.downloadArtifact(run.id, "graphify-snapshot", runDir);
114
+ }
115
+ catch (err) {
116
+ throw new CodebusError(`failed to download artifact 'graphify-snapshot' for run #${run.database_id} (sha ${run.head_sha.slice(0, 7)}): ${err instanceof Error ? err.message : String(err)}`, 1);
117
+ }
100
118
  // gh run download may place files under a nested subdirectory — flatten if needed.
101
119
  if (!existsSync(join(runDir, "graph.json"))) {
102
120
  const entries = readdirSync(runDir).filter((e) => e !== "pointer.json");
@@ -113,6 +131,9 @@ export async function pullSnapshot(run, deps) {
113
131
  return pointer.built_at_commit;
114
132
  }
115
133
  export async function graphPullCmd(opts) {
134
+ if (opts.repo !== undefined && String(opts.repo).toLowerCase() !== "codebus") {
135
+ throw new CodebusError(`--repo '${opts.repo}' is not supported by graph pull (only 'codebus')`, 1);
136
+ }
116
137
  const deps = opts.deps ?? defaultGraphPullDeps();
117
138
  const run = await deps.findLatestRun(opts.sha);
118
139
  if (!run) {
@@ -125,6 +146,16 @@ export async function graphPullCmd(opts) {
125
146
  }
126
147
  const builtAtCommit = await pullSnapshot(run, deps);
127
148
  const cacheRoot = deps.cacheDir ?? GRAPH_CACHE_DIR;
128
- return `graphify snapshot cached at ${join(cacheRoot, builtAtCommit)}\nBuilt at commit: ${builtAtCommit}`;
149
+ const cachePath = join(cacheRoot, builtAtCommit);
150
+ let nodeCount = 0, edgeCount = 0;
151
+ try {
152
+ const graph = JSON.parse(readFileSync(join(cachePath, "graph.json"), "utf-8"));
153
+ nodeCount = graph.nodes?.length ?? 0;
154
+ const links = graph.links?.length ?? 0;
155
+ const hyper = graph.hyperedges?.length ?? 0;
156
+ edgeCount = links || hyper ? links + hyper : (graph.edges?.length ?? 0);
157
+ }
158
+ catch { /* best-effort counts */ }
159
+ return `graphify snapshot cached at ${cachePath}\nBuilt at commit: ${builtAtCommit}\nNodes: ${nodeCount}, Edges: ${edgeCount}`;
129
160
  }
130
161
  //# sourceMappingURL=graph-pull.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-pull.js","sourceRoot":"","sources":["../../src/commands/graph-pull.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-pull.js","sourceRoot":"","sources":["../../src/commands/graph-pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { createInterface } from "node:readline";
2
+ import { CodebusError } from "../errors.js";
3
+ import { makeCtx } from "../client.js";
4
+ import { resolveConfig } from "../config.js";
5
+ import { listGraphVersions, promoteGraphVersion, readServing, resolveRemoteRepoSlug, resolveRepoId, } from "../graph-remote.js";
6
+ export const PROMOTE_TRUST_NOTE = "NOTE: trust grade resets to UNKNOWN by design; run the graphify-trust-sampler workflow with force=true to re-earn it";
7
+ export async function graphVersionsCmd(o) {
8
+ const ctx = o.ctx ?? (await makeCtx(resolveConfig(o)));
9
+ const repoRoot = o.repoRoot ?? process.cwd();
10
+ const repo = await resolveRemoteRepoSlug(ctx, repoRoot, o.repo);
11
+ const repoId = await resolveRepoId(ctx, repo, "codebus-graph-versions");
12
+ const limit = Math.max(1, Number(o.limit ?? 20) || 20);
13
+ const [versions, serving] = await Promise.all([listGraphVersions(ctx, repoId, limit), readServing(ctx, repoId)]);
14
+ const servingId = serving?.version_id ?? null;
15
+ if (o.json) {
16
+ console.log(JSON.stringify({ repo, versions, servingVersionId: servingId }, null, 2));
17
+ return;
18
+ }
19
+ for (const v of versions) {
20
+ const mark = v.id === servingId ? " *" : "";
21
+ console.log(`${v.source_sha.slice(0, 12)} ${v.status} nodes=${v.node_count} edges=${v.edge_count} ingested=${v.ingested_at}${mark}`);
22
+ }
23
+ if (serving)
24
+ console.log(`serving: version ${serving.version_id}`);
25
+ }
26
+ async function confirmOnTty(prompt) {
27
+ if (!process.stdin.isTTY)
28
+ return false;
29
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
30
+ try {
31
+ const answer = await new Promise((resolve) => rl.question(`${prompt} [y/N] `, resolve));
32
+ return /^y(es)?$/i.test(answer.trim());
33
+ }
34
+ finally {
35
+ rl.close();
36
+ }
37
+ }
38
+ export async function graphPromoteCmd(sourceSha, o) {
39
+ if (!sourceSha)
40
+ throw new CodebusError("graph promote: missing <source_sha>.", 1);
41
+ const ctx = o.ctx ?? (await makeCtx(resolveConfig(o)));
42
+ const repoRoot = o.repoRoot ?? process.cwd();
43
+ const repo = await resolveRemoteRepoSlug(ctx, repoRoot, o.repo);
44
+ const repoId = await resolveRepoId(ctx, repo, "codebus-graph-promote");
45
+ const versions = await listGraphVersions(ctx, repoId, 200);
46
+ const target = versions.find((v) => v.source_sha === sourceSha || v.source_sha.startsWith(sourceSha));
47
+ if (!target)
48
+ throw new CodebusError(`graph promote: no retained version '${sourceSha}' for repo '${repo}'.`, 1);
49
+ const current = await readServing(ctx, repoId);
50
+ if (!o.json) {
51
+ console.log(`target: ${target.source_sha} status=${target.status} nodes=${target.node_count} edges=${target.edge_count}`);
52
+ console.log(current ? `current serving: version ${current.version_id}` : "current serving: none");
53
+ }
54
+ if (!o.yes && !(await confirmOnTty(`promote ${target.source_sha} to serving for ${repo}?`))) {
55
+ throw new CodebusError("graph promote: refused without --yes (non-TTY or no confirmation).", 1);
56
+ }
57
+ await promoteGraphVersion(ctx, repoId, target.source_sha);
58
+ const after = await readServing(ctx, repoId);
59
+ if (o.json) {
60
+ console.log(JSON.stringify({ repo, sourceSha: target.source_sha, serving: after }, null, 2));
61
+ }
62
+ else {
63
+ console.log(after ? `serving: version ${after.version_id}` : "serving: unknown");
64
+ console.log(PROMOTE_TRUST_NOTE);
65
+ }
66
+ }
67
+ //# sourceMappingURL=graph-versions-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-versions-cmd.js","sourceRoot":"","sources":["../../src/commands/graph-versions-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAa,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAC7B,sHAAsH,CAAC;AAUzH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,CAAe;IACpD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC;IACvI,CAAC;IACD,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AACrE,CAAC;AAUD,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAW,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAChG,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,CAAc;IACrE,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,YAAY,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,YAAY,CAAC,uCAAuC,SAAS,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAChH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,UAAU,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1H,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,MAAM,CAAC,UAAU,mBAAmB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,YAAY,CAAC,oEAAoE,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { CodebusError } from "../errors.js";
2
2
  import { loadGraphSnapshot, getGraphBuiltCommit, checkStaleness } from "../graph.js";
3
- import { fetchRemoteStatus } from "../graph-remote.js";
3
+ import { fetchRemoteStatus, isLocalSnapshotStale, graphSearchRpc, graphSubgraphRpc, graphGapsRpc, resolveBlastRadius, resolveRemoteRepoSlug, tryMakeCtx, } from "../graph-remote.js";
4
+ import { makeCtx } from "../client.js";
5
+ import { resolveConfig } from "../config.js";
4
6
  import { graphPullCmd } from "./graph-pull.js";
5
7
  /**
6
8
  * CLI command: codebus graph status
@@ -44,12 +46,29 @@ export async function graphStatusCmd(options) {
44
46
  repo: remote.repoSlug,
45
47
  attachmentState: remote.attachmentState,
46
48
  grade: remote.grade,
49
+ extractedGrade: remote.extractedGrade,
50
+ inferredGrade: remote.inferredGrade,
51
+ extractedAccuracy: remote.extractedAccuracy,
52
+ inferredAccuracy: remote.inferredAccuracy,
47
53
  freshness: remote.freshness,
48
54
  stale: remote.stale,
49
55
  noGraph: remote.noGraph,
50
56
  servingSha: remote.servingSha7,
51
57
  headSha: remote.headSha7,
58
+ servingNodeCount: remote.servingNodeCount ?? null,
59
+ servingEdgeCount: remote.servingEdgeCount ?? null,
52
60
  };
61
+ if (snapshot && remote.servingSha7) {
62
+ const localBuilt = String(status.builtAtCommit ?? "");
63
+ const localN = Number(status.nodeCount ?? 0);
64
+ const localE = Number(status.edgeCount ?? 0);
65
+ const chk = isLocalSnapshotStale({ builtAt: localBuilt, nodeCount: localN, edgeCount: localE }, { servingSha: remote.servingSha7, nodeCount: remote.servingNodeCount ?? null, edgeCount: remote.servingEdgeCount ?? null });
66
+ if (chk.stale) {
67
+ const l7 = localBuilt.slice(0, 7);
68
+ const warn = `STALE LOCAL: local ${l7} (${localN} nodes) vs serving ${remote.servingSha7} (${remote.servingNodeCount ?? "?"}) — run codebus graph pull (${chk.reason})`;
69
+ status.staleLocalWarning = warn;
70
+ }
71
+ }
53
72
  }
54
73
  if (options.json) {
55
74
  console.log(JSON.stringify(status, null, 2));
@@ -73,7 +92,15 @@ export async function graphStatusCmd(options) {
73
92
  }
74
93
  if (remote) {
75
94
  console.log(`Remote (${remote.repoSlug}): attachment=${remote.attachmentState ?? "unknown"} grade=${remote.grade ?? "unknown"}`);
95
+ if (remote.extractedGrade !== undefined || remote.inferredGrade !== undefined) {
96
+ console.log(` Extracted: ${remote.extractedGrade ?? "unknown"} (acc ${remote.extractedAccuracy ?? "—"})`);
97
+ console.log(` Inferred: ${remote.inferredGrade ?? "unknown"} (acc ${remote.inferredAccuracy ?? "—"})`);
98
+ }
76
99
  console.log(` Freshness: ${remote.freshness ?? "unknown"} (serving ${remote.servingSha7 ?? "—"}, head ${remote.headSha7 ?? "—"})`);
100
+ if (remote.servingNodeCount !== null && remote.servingNodeCount !== undefined)
101
+ console.log(` Serving: ${remote.servingNodeCount} nodes, ${remote.servingEdgeCount ?? "?"} edges`);
102
+ if (status.staleLocalWarning)
103
+ console.log(String(status.staleLocalWarning));
77
104
  }
78
105
  else {
79
106
  console.log("Remote: not connected / not reachable");
@@ -87,6 +114,73 @@ export async function graphStatusCmd(options) {
87
114
  }
88
115
  }
89
116
  import { registerGraphPublish } from "./graph-publish-cmd.js";
117
+ import { graphVersionsCmd, graphPromoteCmd } from "./graph-versions-cmd.js";
118
+ /** Parse --min-tier (default EXTRACTED; ALL = no tier filter). */
119
+ function parseMinTier(v) {
120
+ if (v === undefined)
121
+ return "EXTRACTED";
122
+ const u = v.toUpperCase();
123
+ if (u === "EXTRACTED" || u === "INFERRED")
124
+ return u;
125
+ if (u === "ALL")
126
+ return null;
127
+ throw new CodebusError("--min-tier must be EXTRACTED, INFERRED, or ALL");
128
+ }
129
+ async function requireCtx() {
130
+ const cfg = resolveConfig({});
131
+ return makeCtx(cfg);
132
+ }
133
+ function printRows(rows, cols, json) {
134
+ if (json) {
135
+ console.log(JSON.stringify(rows, null, 2));
136
+ return;
137
+ }
138
+ if (rows.length === 0) {
139
+ console.log("(no results)");
140
+ return;
141
+ }
142
+ const widths = cols.map((c) => Math.max(c.length, ...rows.map((r) => String(r[c] ?? "").length)));
143
+ console.log(cols.map((c, i) => c.padEnd(widths[i])).join(" "));
144
+ for (const r of rows)
145
+ console.log(cols.map((c, i) => String(r[c] ?? "").padEnd(widths[i])).join(" "));
146
+ }
147
+ export async function graphSearchCmd(terms, opts) {
148
+ const ctx = await requireCtx();
149
+ const slug = await resolveRemoteRepoSlug(ctx, process.cwd(), opts.repo);
150
+ const rows = await graphSearchRpc(ctx, slug, terms.join(" "), Number(opts.limit ?? 20), parseMinTier(opts.minTier));
151
+ printRows(rows.map((r) => ({ node_id: r.node_id, label: r.label, source_file: r.source_file ?? "", tier: r.tier ?? "", similarity: r.similarity })), ["node_id", "label", "source_file", "tier", "similarity"], opts.json);
152
+ }
153
+ export async function graphSubgraphCmd(seeds, opts) {
154
+ const ctx = await requireCtx();
155
+ const slug = await resolveRemoteRepoSlug(ctx, process.cwd(), undefined);
156
+ const relations = opts.relation ? opts.relation.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
157
+ const res = await graphSubgraphRpc(ctx, slug, seeds, {
158
+ depth: Number(opts.depth ?? 2),
159
+ maxNodes: Number(opts.limit ?? 50),
160
+ relations,
161
+ minTier: parseMinTier(opts.minTier),
162
+ });
163
+ const rows = [
164
+ ...res.nodes.map((n) => ({ kind: "node", id: n.node_id, label: n.label, tier: n.tier ?? "" })),
165
+ ...res.edges.map((e) => ({ kind: "edge", id: `${e.src}->${e.dst}`, label: e.relation, tier: e.confidence ?? "" })),
166
+ ];
167
+ printRows(rows, ["kind", "id", "label", "tier"], opts.json);
168
+ if (res.truncated)
169
+ console.log("(truncated: more nodes reachable)");
170
+ }
171
+ export async function graphBlastRadiusCmd(targets, opts) {
172
+ const ctx = (await tryMakeCtx()) ?? undefined;
173
+ for (const seed of targets) {
174
+ const res = await resolveBlastRadius(seed, { repo: opts.repo, ctx });
175
+ printRows(res.rows.map((r) => ({ node_id: r.node_id, label: r.label, distance: r.distance, via_relation: r.via_relation })), ["node_id", "label", "distance", "via_relation"], opts.json);
176
+ }
177
+ }
178
+ export async function graphGapsCmd(opts) {
179
+ const ctx = await requireCtx();
180
+ const slug = await resolveRemoteRepoSlug(ctx, process.cwd(), opts.repo);
181
+ const rows = await graphGapsRpc(ctx, slug);
182
+ printRows(rows.map((r) => ({ category: r.category, node_id: r.node_id, label: r.label, detail: r.detail })), ["category", "node_id", "label", "detail"], opts.json);
183
+ }
90
184
  /**
91
185
  * Register the graph command.
92
186
  */
@@ -97,7 +191,33 @@ export function registerGraph(program, g) {
97
191
  .action((opts) => graphStatusCmd(opts));
98
192
  g(graphCmd.command("pull"))
99
193
  .option("--sha <commit>", "pull the snapshot built at this commit (default: latest successful run on main)")
100
- .action((opts) => { void graphPullCmd(opts); });
194
+ .option("--repo <slug>", "repo slug (only 'codebus' is supported)")
195
+ .action((opts) => graphPullCmd(opts).then((msg) => { console.log(msg); }));
101
196
  registerGraphPublish(graphCmd, g);
197
+ g(graphCmd.command("versions"))
198
+ .option("--repo <slug>", "repo slug (auto-detected from git remote if omitted)")
199
+ .option("--limit <n>", "max versions to list (default 20)")
200
+ .action((opts) => graphVersionsCmd(opts));
201
+ g(graphCmd.command("promote <source_sha>"))
202
+ .option("--repo <slug>", "repo slug (auto-detected from git remote if omitted)")
203
+ .option("--yes", "skip confirmation prompt")
204
+ .action((sha, opts) => graphPromoteCmd(sha, opts));
205
+ g(graphCmd.command("search").argument("<terms...>", "search terms"))
206
+ .option("--repo <slug>", "repo slug (auto-detected from git remote if omitted)")
207
+ .option("--min-tier <tier>", "EXTRACTED (default) | INFERRED | ALL")
208
+ .option("--limit <n>", "max rows (default 20)")
209
+ .action((terms, opts) => { void graphSearchCmd(terms, opts); });
210
+ g(graphCmd.command("subgraph").argument("<seeds...>", "seed node ids"))
211
+ .option("--depth <n>", "BFS depth (default 2)")
212
+ .option("--limit <n>", "max nodes (default 50)")
213
+ .option("--min-tier <tier>", "EXTRACTED (default) | INFERRED | ALL")
214
+ .option("--relation <r,...>", "comma-separated relations (default all)")
215
+ .action((seeds, opts) => { void graphSubgraphCmd(seeds, opts); });
216
+ g(graphCmd.command("blast-radius").argument("<targets...>", "seed node id, label, or file"))
217
+ .option("--repo <slug>", "repo slug (auto-detected from git remote if omitted)")
218
+ .action((targets, opts) => { void graphBlastRadiusCmd(targets, opts); });
219
+ g(graphCmd.command("gaps"))
220
+ .option("--repo <slug>", "repo slug (auto-detected from git remote if omitted)")
221
+ .action((opts) => { void graphGapsCmd(opts); });
102
222
  }
103
223
  //# sourceMappingURL=graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { createClient } from "@supabase/supabase-js";
2
+ import { loadFileConfig } from "../config.js";
3
+ import { CodebusError } from "../errors.js";
4
+ /** `codebus teams-link <aad-object-id>` — link your Teams account to your
5
+ * CodeBus person via the teams_identity_link RPC (source manual). */
6
+ export async function teamsLinkCmd(aadObjectId, o) {
7
+ const id = (aadObjectId ?? "").trim();
8
+ if (!id)
9
+ throw new CodebusError("expected an AAD object id");
10
+ const file = loadFileConfig();
11
+ const url = o.url ?? process.env.CODEBUS_URL ?? file.url;
12
+ const token = o.token ?? process.env.CODEBUS_TOKEN ?? file.token;
13
+ if (!url || !token)
14
+ throw new CodebusError("not logged in (codebus login first)");
15
+ const sb = createClient(url, token, { auth: { persistSession: false, autoRefreshToken: false } });
16
+ const { data, error } = await sb.rpc("teams_identity_link", { p_aad_object_id: id });
17
+ if (error)
18
+ throw new CodebusError(`teams link failed: ${error.message}`);
19
+ if (o.json)
20
+ console.log(JSON.stringify({ person_id: data, aad_object_id: id }));
21
+ else
22
+ console.log(`Linked Teams account ${id} to your CodeBus person.`);
23
+ }
24
+ //# sourceMappingURL=teams-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teams-link.js","sourceRoot":"","sources":["../../src/commands/teams-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAa,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;qEACqE;AACrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,CAAiC;IACvF,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC;IACzD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC;IACjE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,YAAY,CAAC,qCAAqC,CAAC,CAAC;IAClF,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;IACrF,IAAI,KAAK;QAAE,MAAM,IAAI,YAAY,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;QAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;AACzE,CAAC"}