@opvs-ai/cli 0.26.0 → 0.27.1

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.
@@ -29,7 +29,9 @@
29
29
  * `format=undefined` is a literal string on the URL. Each `if (opts.x) ...`
30
30
  * gate exists so the request the server sees is the request the user asked for.
31
31
  */
32
- import { getEffectiveConfig, createClient } from "@opvs-ai/core";
32
+ import { readFile } from "node:fs/promises";
33
+ import { codeCallers, createClient, getEffectiveConfig, } from "@opvs-ai/core";
34
+ import { extractCardAnchors, } from "../lib/card-anchors.js";
33
35
  import { buildUrl, printResponse } from "../lib/format.js";
34
36
  export function registerCodeCommands(program) {
35
37
  const code = program
@@ -71,6 +73,140 @@ export function registerCodeCommands(program) {
71
73
  process.exit(1);
72
74
  }
73
75
  });
76
+ // ── callers: resolve anchors, then ask who calls their live nodes ──
77
+ const MAX_CALLER_ANCHORS = 50;
78
+ code
79
+ .command("callers <anchors...>")
80
+ .description("Show callers and nearby test hints for up to 50 file or symbol anchors")
81
+ .requiredOption("--project <id>", "Project id (board_groups.id where kind=project)")
82
+ .option("--limit <n>", "Callers per anchor (1-100)", "20")
83
+ .option("--json", "Print the full JSON response plus unresolved anchors")
84
+ .option("--format <fmt>", "text | json (json returns the full response)")
85
+ .action(async (anchors, opts) => {
86
+ if (anchors.length > MAX_CALLER_ANCHORS) {
87
+ console.error(`Error: too many anchors (${anchors.length}); max is ${MAX_CALLER_ANCHORS}`);
88
+ process.exit(1);
89
+ }
90
+ const callersLimit = Number(opts.limit);
91
+ if (!Number.isInteger(callersLimit) || callersLimit < 1 || callersLimit > 100) {
92
+ console.error("Error: --limit must be an integer from 1 to 100");
93
+ process.exit(1);
94
+ }
95
+ const wsSlug = program.opts().workspace;
96
+ try {
97
+ const client = createClient(wsSlug);
98
+ const resolvedResponse = await client.post(`/api/v1/code/${opts.project}/nodes/resolve`, { anchors });
99
+ const resolutions = await resolvedResponse.json();
100
+ const live = resolutions.filter((item) => item.state === "live");
101
+ const unresolvedAnchors = resolutions
102
+ .filter((item) => item.state !== "live")
103
+ .map((item) => ({
104
+ anchor: item.anchor,
105
+ state: item.state,
106
+ moved_to_anchor: item.moved_to_anchor ?? null,
107
+ }));
108
+ if (live.length === 0) {
109
+ if (opts.json || opts.format === "json") {
110
+ console.log(JSON.stringify({ results: [], unresolved_anchors: unresolvedAnchors }, null, 2));
111
+ return;
112
+ }
113
+ printUnresolvedAnchors(anchors, resolutions);
114
+ return;
115
+ }
116
+ const nodeIds = live.map((item) => item.node_id);
117
+ const callersOptions = { callersLimit, testsLimit: 10 };
118
+ const response = wsSlug
119
+ ? await codeCallers(opts.project, nodeIds, callersOptions, wsSlug)
120
+ : await codeCallers(opts.project, nodeIds, callersOptions);
121
+ if (response.degraded) {
122
+ console.warn("Warning: code index unavailable; caller information is degraded");
123
+ }
124
+ if (opts.json || opts.format === "json") {
125
+ console.log(JSON.stringify({ ...response, unresolved_anchors: unresolvedAnchors }, null, 2));
126
+ return;
127
+ }
128
+ printCallersText(anchors, resolutions, response);
129
+ }
130
+ catch (err) {
131
+ const e = err;
132
+ console.error(`Error: ${e.detail || "Failed to fetch code callers"}`);
133
+ process.exit(1);
134
+ }
135
+ });
136
+ // ── check-card: bounded index facts for a planner's draft brief ──
137
+ code
138
+ .command("check-card <brief.md>")
139
+ .description("Check a draft card's paths and names against the code index")
140
+ .option("--project <id>", "Project id (or OPVS_CODE_PROJECT)")
141
+ .option("--similar <words>", "Append existing code similar to these words (repeatable, max 5)", (value, previous) => [...previous, value], [])
142
+ .option("--strict", "Exit 1 when an anchor is absent and not declared new")
143
+ .option("--json", "Print the same facts as JSON")
144
+ .action(async (briefPath, opts) => {
145
+ const project = opts.project || process.env.OPVS_CODE_PROJECT;
146
+ if (!project) {
147
+ reportCannotCheckCard("project required: pass --project <id> or set OPVS_CODE_PROJECT");
148
+ return;
149
+ }
150
+ const similarQueries = Array.isArray(opts.similar) ? opts.similar : [];
151
+ if (similarQueries.length > 5) {
152
+ reportCannotCheckCard("--similar may be repeated at most 5 times");
153
+ return;
154
+ }
155
+ let markdown;
156
+ try {
157
+ markdown = await readFile(briefPath, "utf8");
158
+ }
159
+ catch {
160
+ reportCannotCheckCard(`cannot read brief: ${briefPath}`);
161
+ return;
162
+ }
163
+ const extracted = extractCardAnchors(markdown);
164
+ const anchorNames = extracted.anchors.map((item) => item.anchor);
165
+ const wsSlug = program.opts().workspace;
166
+ try {
167
+ const client = createClient(wsSlug);
168
+ const resolvedResponse = await client.post(`/api/v1/code/${project}/nodes/resolve`, { anchors: anchorNames });
169
+ const resolutions = await resolvedResponse.json();
170
+ const resolutionByAnchor = new Map(resolutions.map((item) => [item.anchor, item]));
171
+ const live = resolutions.filter((item) => item.state === "live");
172
+ const nodeIds = live.map((item) => item.node_id);
173
+ const callersOptions = { callersLimit: 20, testsLimit: 10 };
174
+ const callersResponse = wsSlug
175
+ ? await codeCallers(project, nodeIds, callersOptions, wsSlug)
176
+ : await codeCallers(project, nodeIds, callersOptions);
177
+ if (callersResponse.degraded || !callersResponse.index) {
178
+ reportCannotCheckCard("code index unavailable");
179
+ return;
180
+ }
181
+ const callerByNode = new Map(callersResponse.results.map((item) => [item.node_id, item]));
182
+ const facts = extracted.anchors.map((item) => cardAnchorFact(item, resolutionByAnchor.get(item.anchor), callersResponse, callerByNode));
183
+ const similar = await loadSimilarFacts(client, project, similarQueries);
184
+ const checkedAt = new Date().toISOString();
185
+ const output = {
186
+ version: "index-facts-v1",
187
+ project_id: project,
188
+ checked_at: checkedAt,
189
+ index: callersResponse.index,
190
+ paths_checked: facts.length,
191
+ paths_left_out: extracted.leftOut,
192
+ anchors: facts,
193
+ similar,
194
+ };
195
+ if (opts.json) {
196
+ console.log(JSON.stringify(output, null, 2));
197
+ }
198
+ else {
199
+ console.log(boundIndexFactsMarkdown(indexFactsMarkdown(project, callersResponse, checkedAt, facts, extracted.leftOut, similar)));
200
+ }
201
+ if (opts.strict && facts.some((fact) => fact.in_index === "NO — not in the index and not declared new")) {
202
+ process.exitCode = 1;
203
+ }
204
+ }
205
+ catch (err) {
206
+ const e = err;
207
+ reportCannotCheckCard(e.detail || e.message || "code index unavailable");
208
+ }
209
+ });
74
210
  // ── summary: the orientation document as data ───────────────────
75
211
  code
76
212
  .command("summary")
@@ -290,4 +426,190 @@ export function registerCodeCommands(program) {
290
426
  }
291
427
  });
292
428
  }
429
+ function ageInWords(seconds) {
430
+ if (seconds < 60)
431
+ return `${Math.max(0, Math.floor(seconds))} s old`;
432
+ if (seconds < 3600)
433
+ return `${Math.floor(seconds / 60)} min old`;
434
+ if (seconds < 86_400)
435
+ return `${Math.floor(seconds / 3600)} h old`;
436
+ return `${Math.floor(seconds / 86_400)} d old`;
437
+ }
438
+ function nodeLabel(result, fallback) {
439
+ if (!result?.path)
440
+ return fallback;
441
+ return result.symbol ? `${result.path}#${result.symbol}` : result.path;
442
+ }
443
+ function printCallersText(anchors, resolutions, response) {
444
+ console.log(response.index
445
+ ? `index: ${response.index.commit.slice(0, 7)}, ${ageInWords(response.index.age_seconds)}`
446
+ : "index: unavailable");
447
+ let resultIndex = 0;
448
+ for (let anchorIndex = 0; anchorIndex < anchors.length; anchorIndex += 1) {
449
+ const resolution = resolutions[anchorIndex];
450
+ if (!resolution || resolution.state !== "live") {
451
+ printUnresolvedAnchor(resolution?.anchor ?? anchors[anchorIndex], resolution);
452
+ continue;
453
+ }
454
+ const result = response.results[resultIndex];
455
+ resultIndex += 1;
456
+ console.log(`\n${nodeLabel(result, resolution.anchor)}`);
457
+ if (!response.calls_indexed) {
458
+ console.log("calls are not indexed for this repo: callers are UNKNOWN, not zero");
459
+ }
460
+ else if (!result?.callers_known) {
461
+ console.log("callers: UNKNOWN (calls are not indexed for this file type)");
462
+ }
463
+ else {
464
+ console.log(`callers: ${result.callers_total} (showing ${result.callers.length})` +
465
+ (result.callers_truncated ? " — truncated" : ""));
466
+ for (const caller of result.callers) {
467
+ const label = caller.symbol ? `${caller.path}#${caller.symbol}` : caller.path;
468
+ console.log(` ${label} [${caller.resolution}]`);
469
+ }
470
+ }
471
+ const hints = result?.nearby_tests.map((test) => test.path).join(", ") || "none";
472
+ console.log(`test hints (not coverage): ${hints}` +
473
+ (result?.nearby_tests_truncated ? " — truncated" : ""));
474
+ }
475
+ }
476
+ function printUnresolvedAnchors(anchors, resolutions) {
477
+ for (let anchorIndex = 0; anchorIndex < anchors.length; anchorIndex += 1) {
478
+ const resolution = resolutions[anchorIndex];
479
+ printUnresolvedAnchor(resolution?.anchor ?? anchors[anchorIndex], resolution);
480
+ }
481
+ }
482
+ function printUnresolvedAnchor(anchor, resolution) {
483
+ let status = "NOT IN INDEX";
484
+ if (resolution?.state === "moved") {
485
+ status = resolution.moved_to_anchor
486
+ ? `MOVED → ${resolution.moved_to_anchor}`
487
+ : "MOVED";
488
+ }
489
+ else if (resolution?.state === "removed") {
490
+ status = "REMOVED";
491
+ }
492
+ console.log(`\n${anchor}\n${status}`);
493
+ }
494
+ function reportCannotCheckCard(reason) {
495
+ console.error(`CANNOT: ${reason}`);
496
+ process.exitCode = 2;
497
+ }
498
+ function cardAnchorFact(cardAnchor, resolution, response, callerByNode) {
499
+ const state = resolution?.state ?? "unknown";
500
+ if (state === "moved") {
501
+ return {
502
+ anchor: cardAnchor.anchor,
503
+ declared_new: cardAnchor.declaredNew,
504
+ state,
505
+ moved_to_anchor: resolution?.moved_to_anchor ?? null,
506
+ in_index: resolution?.moved_to_anchor
507
+ ? `MOVED → ${resolution.moved_to_anchor}`
508
+ : "MOVED",
509
+ callers: "n/a",
510
+ test_hints: "n/a",
511
+ };
512
+ }
513
+ if (state !== "live" || !resolution) {
514
+ return {
515
+ anchor: cardAnchor.anchor,
516
+ declared_new: cardAnchor.declaredNew,
517
+ state,
518
+ moved_to_anchor: null,
519
+ in_index: cardAnchor.declaredNew
520
+ ? "no (declared new)"
521
+ : "NO — not in the index and not declared new",
522
+ callers: "n/a",
523
+ test_hints: "n/a",
524
+ };
525
+ }
526
+ const result = callerByNode.get(resolution.node_id);
527
+ let callers;
528
+ if (!response.calls_indexed) {
529
+ callers = "unknown (calls not indexed)";
530
+ }
531
+ else if (!result?.callers_known) {
532
+ callers = "unknown (calls not indexed for this file type)";
533
+ }
534
+ else {
535
+ const shown = result.callers.slice(0, 5);
536
+ const exact = result.callers.filter((caller) => caller.resolution === "exact").length;
537
+ const heuristic = result.callers.filter((caller) => caller.resolution === "heuristic").length;
538
+ const labels = shown.map((caller) => caller.symbol ? `${caller.path}#${caller.symbol}` : caller.path);
539
+ const more = result.callers_total > shown.length ? ", …" : "";
540
+ callers = `${result.callers_total} (${exact} exact, ${heuristic} heuristic)` +
541
+ (labels.length > 0 ? `: ${labels.map(inlineCode).join(", ")}${more}` : "");
542
+ }
543
+ const testHints = result?.nearby_tests.length
544
+ ? result.nearby_tests.map((test) => inlineCode(test.path)).join(", ")
545
+ : "none";
546
+ return {
547
+ anchor: cardAnchor.anchor,
548
+ declared_new: cardAnchor.declaredNew,
549
+ state,
550
+ moved_to_anchor: null,
551
+ in_index: "yes",
552
+ callers,
553
+ test_hints: testHints,
554
+ };
555
+ }
556
+ async function loadSimilarFacts(client, project, queries) {
557
+ const facts = [];
558
+ for (const query of queries) {
559
+ const response = await client.get(buildUrl(`/api/v1/code/${project}/context`, { query, limit: "5" }, "json"));
560
+ const body = await response.json();
561
+ for (const match of (body.matches ?? []).slice(0, 5)) {
562
+ const path = match.file_path;
563
+ const symbol = match.name;
564
+ const detail = firstLine(match.doc_first_line) || firstLine(match.signature) || "matching code";
565
+ facts.push({ query, anchor: symbol ? `${path}#${symbol}` : path, detail });
566
+ }
567
+ }
568
+ return facts;
569
+ }
570
+ function firstLine(value) {
571
+ return value?.split(/\r?\n/, 1)[0].trim() ?? "";
572
+ }
573
+ function indexFactsMarkdown(project, response, checkedAt, facts, leftOut, similar) {
574
+ const index = response.index;
575
+ const lines = [
576
+ "## Index facts",
577
+ `<!-- index-facts v1 commit=${index.commit} indexed_at=${index.indexed_at} checked_at=${checkedAt} -->`,
578
+ `index: ${index.commit.slice(0, 7)}, ${ageInWords(index.age_seconds)} · project ${project} · ${facts.length} paths checked`,
579
+ ];
580
+ if (leftOut > 0) {
581
+ lines.push(`_${leftOut} ${leftOut === 1 ? "path" : "paths"} left out after the 50-anchor limit._`);
582
+ }
583
+ lines.push("| Anchor | In the index | Callers | Test hints (not coverage) |", "| --- | --- | --- | --- |");
584
+ for (const fact of facts) {
585
+ lines.push(`| ${inlineCode(fact.anchor)} | ${markdownCell(fact.in_index)} | ${markdownCell(fact.callers)} | ${markdownCell(fact.test_hints)} |`);
586
+ }
587
+ for (const fact of similar) {
588
+ lines.push(`Already exists for "${markdownText(fact.query)}": ${inlineCode(fact.anchor)} — ${markdownText(fact.detail)}`);
589
+ }
590
+ return lines.join("\n");
591
+ }
592
+ const INDEX_FACTS_MAX_BYTES = 6_000;
593
+ const INDEX_FACTS_TRUNCATED = "_Truncated: output exceeded 6,000 bytes._";
594
+ function boundIndexFactsMarkdown(markdown) {
595
+ if (Buffer.byteLength(`${markdown}\n`, "utf8") <= INDEX_FACTS_MAX_BYTES)
596
+ return markdown;
597
+ const kept = [];
598
+ for (const line of markdown.split("\n")) {
599
+ const candidate = [...kept, line, INDEX_FACTS_TRUNCATED].join("\n");
600
+ if (Buffer.byteLength(`${candidate}\n`, "utf8") > INDEX_FACTS_MAX_BYTES)
601
+ break;
602
+ kept.push(line);
603
+ }
604
+ return [...kept, INDEX_FACTS_TRUNCATED].join("\n");
605
+ }
606
+ function inlineCode(value) {
607
+ return `\`${markdownText(value).replaceAll("`", "\\`")}\``;
608
+ }
609
+ function markdownCell(value) {
610
+ return value.replaceAll("|", "\\|").replaceAll("\n", " ");
611
+ }
612
+ function markdownText(value) {
613
+ return value.replaceAll("|", "\\|").replaceAll("\r", " ").replaceAll("\n", " ");
614
+ }
293
615
  //# sourceMappingURL=code.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * opvs engines — switch the build engines on and off (REAS-217).
3
+ *
4
+ * The route is `GET / PUT / DELETE /api/v1/factory/engines-off/{harness}` (built
5
+ * by REAS-216, the switch route that owns the authz and storage). This command
6
+ * is the CLI face of that surface — and only that surface; it does not invent
7
+ * any state the route does not already advertise.
8
+ *
9
+ * OFF has three visible states on screen:
10
+ * - until is null → "OFF" (off until switched on)
11
+ * - until in future → "off until <local>" (timed pause)
12
+ * - until in past → "expired" (a timed pause whose clock ran out;
13
+ * the route drops it on the next call,
14
+ * and the list shows it before that)
15
+ *
16
+ * `--until` accepts four forms. `--reason` is required for `off` because the route
17
+ * records it as the reason the next operator will read.
18
+ */
19
+ import { Command } from "commander";
20
+ /**
21
+ * The list of harness identifiers the route accepts (REAS-216 enumerates them
22
+ * on the server). Help text only — the route is the authority, a typo is a 422
23
+ * with the canonical list it returned, and pinning it on the CLI as a second
24
+ * source of truth invites the two to drift.
25
+ *
26
+ * ⚠️ Two existing CLI commands spell this vocabulary with HYPHENS because their
27
+ * upstream enum (`agentboard BuildProvider`) does. This one is a `factory`
28
+ * harness, and REAS-216's enum is underscored (`claude_code`, `opencode`,
29
+ * `codex`, `pi`, `grok`, `agy`, `cursor`, `openhands`). The two do NOT match —
30
+ * mixing them is the 422 a reader of `--help` should not have to discover.
31
+ */
32
+ export declare const HARNESSES: readonly string[];
33
+ /** Standardised access to "now". The action handler calls this with no args,
34
+ * the parser accepts an explicit one — letting tests pin the clock. */
35
+ export declare function now(): Date;
36
+ /**
37
+ * Parse the four `--until` forms into an ISO-8601 UTC string the server stores
38
+ * verbatim. Pure on purpose: the only input is `(raw, now)`; the only output is
39
+ * the ISO string or `null` when `--until` was omitted, or an `Error` on bad
40
+ * input. Pure functions are why the test can fix the clock without standing up
41
+ * the rest of the action.
42
+ *
43
+ * - undefined → null (off until switched on)
44
+ * - "+Nh" | "+Nm" → raw minutes/hours from now
45
+ * - "HH:MM" (24h, local time) → the next such local time; tomorrow if today's HH:MM already passed
46
+ * - ISO-8601 already → passed through (any timezone accepted; we re-emit UTC if it parses)
47
+ */
48
+ export declare function parseUntil(raw: string | undefined, nowArg: Date): string | null;
49
+ export declare function registerEnginesCommands(program: Command): void;