truecourse 0.6.0-next.2 → 0.6.0-next.3

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 (3) hide show
  1. package/cli.mjs +52 -20
  2. package/package.json +1 -1
  3. package/server.mjs +1 -1
package/cli.mjs CHANGED
@@ -128242,7 +128242,7 @@ function readToolVersion() {
128242
128242
  if (cachedVersion)
128243
128243
  return cachedVersion;
128244
128244
  if (true) {
128245
- cachedVersion = "0.6.0-next.2";
128245
+ cachedVersion = "0.6.0-next.3";
128246
128246
  return cachedVersion;
128247
128247
  }
128248
128248
  try {
@@ -149166,7 +149166,7 @@ async function runContractsGenerate(options = {}) {
149166
149166
  }
149167
149167
  stampGeneratedMarker(repoRoot5);
149168
149168
  if (result.write.written.length === 0) {
149169
- gt("Up to date \u2014 no contract files needed updating.");
149169
+ gt("Up to date \u2014 run `truecourse verify`.");
149170
149170
  return;
149171
149171
  }
149172
149172
  O2.success(`Wrote ${result.write.written.length} contract file${result.write.written.length === 1 ? "" : "s"}.`);
@@ -149197,7 +149197,7 @@ async function runContractsList(options = {}) {
149197
149197
  }
149198
149198
  mt(`Contracts (${files.length})`);
149199
149199
  for (const f2 of files) console.log(` ${path54.relative(repoRoot5, f2)}`);
149200
- gt("");
149200
+ gt("`truecourse contracts validate` then `truecourse verify`.");
149201
149201
  }
149202
149202
  async function runContractsValidate(options = {}) {
149203
149203
  const repoRoot5 = options.cwd ?? process.cwd();
@@ -149233,6 +149233,7 @@ async function runContractsValidate(options = {}) {
149233
149233
  }
149234
149234
  if (issues.length === 0) {
149235
149235
  O2.success(`Validated ${resolution.index.size} artifact${resolution.index.size === 1 ? "" : "s"} \u2014 no issues.`);
149236
+ gt("Run `truecourse verify`.");
149236
149237
  return;
149237
149238
  }
149238
149239
  O2.error(`${issues.length} issue${issues.length === 1 ? "" : "s"}:`);
@@ -149354,7 +149355,9 @@ async function runSpecScan(opts = {}) {
149354
149355
  O2.message(' truecourse spec conflicts custom <id> --text "\u2026"');
149355
149356
  O2.message(" \u2022 accept defaults: truecourse spec resolve --all-defaults");
149356
149357
  }
149357
- gt(merge2.openConflicts.length === 0 ? "No open conflicts." : `${merge2.openConflicts.length} open.`);
149358
+ gt(
149359
+ merge2.openConflicts.length === 0 ? "No open conflicts \u2014 run `truecourse contracts generate`." : `${merge2.openConflicts.length} open.`
149360
+ );
149358
149361
  } catch (e) {
149359
149362
  renderer.dispose();
149360
149363
  pt(`Failed: ${e.message}`);
@@ -149405,7 +149408,9 @@ async function runSpecStatus(opts = {}) {
149405
149408
  O2.message("");
149406
149409
  summarizeConflicts("Open", merge2.openConflicts);
149407
149410
  }
149408
- gt(merge2.openConflicts.length === 0 ? "Up to date." : "Pending decisions.");
149411
+ gt(
149412
+ merge2.openConflicts.length === 0 ? "Up to date \u2014 run `truecourse contracts generate`." : "Pending decisions \u2014 see `truecourse spec conflicts list`."
149413
+ );
149409
149414
  } catch (e) {
149410
149415
  renderer.dispose();
149411
149416
  pt(`Failed: ${e.message}`);
@@ -149571,7 +149576,7 @@ async function runSpecConflictsList(opts = {}) {
149571
149576
  for (const c2 of list) {
149572
149577
  O2.message(` \u2022 ${c2.id} [${c2.topic}] ${c2.subject} (${c2.candidates.length} candidates)`);
149573
149578
  }
149574
- gt("Use `truecourse spec conflicts show <id>` for full detail.");
149579
+ gt('`show <id>` for detail \xB7 resolve with `pick <id> <n>` or `custom <id> --text "\u2026"`.');
149575
149580
  }
149576
149581
  async function runSpecConflictsShow(conflictId2, opts = {}) {
149577
149582
  const root = repoRoot2(opts);
@@ -149605,7 +149610,10 @@ async function runSpecConflictsShow(conflictId2, opts = {}) {
149605
149610
  if (diffs.length > 12) O2.message(` \u2026 and ${diffs.length - 12} more`);
149606
149611
  }
149607
149612
  }
149608
- gt("");
149613
+ if (!opts.diff) O2.message("add --diff to see field-level differences.");
149614
+ gt(
149615
+ `resolve: truecourse spec conflicts pick ${conflict.id} <n> \xB7 custom ${conflict.id} --text "\u2026"`
149616
+ );
149609
149617
  }
149610
149618
  async function runSpecConflictsPick(conflictId2, candidateIndex, opts = {}) {
149611
149619
  const root = repoRoot2(opts);
@@ -149624,7 +149632,10 @@ async function runSpecConflictsPick(conflictId2, candidateIndex, opts = {}) {
149624
149632
  note: opts.note
149625
149633
  });
149626
149634
  await refreshScan(root);
149627
- emitOk(`Picked candidate ${candidateIndex} on ${conflictId2.slice(0, 12)}\u2026`);
149635
+ emitOk(
149636
+ `Picked candidate ${candidateIndex} on ${conflictId2.slice(0, 12)}\u2026`,
149637
+ "next: resolve remaining (`truecourse spec conflicts list`) or `truecourse contracts generate`."
149638
+ );
149628
149639
  }
149629
149640
  async function runSpecConflictsCustom(conflictId2, text, opts = {}) {
149630
149641
  const root = repoRoot2(opts);
@@ -149640,13 +149651,19 @@ async function runSpecConflictsCustom(conflictId2, text, opts = {}) {
149640
149651
  candidateFingerprint: candidateFingerprint(conflict)
149641
149652
  });
149642
149653
  await refreshScan(root);
149643
- emitOk(`Wrote custom answer for ${conflictId2.slice(0, 12)}\u2026`);
149654
+ emitOk(
149655
+ `Wrote custom answer for ${conflictId2.slice(0, 12)}\u2026`,
149656
+ "next: resolve remaining (`truecourse spec conflicts list`) or `truecourse contracts generate`."
149657
+ );
149644
149658
  }
149645
149659
  async function runSpecConflictsRevoke(conflictId2, opts = {}) {
149646
149660
  const root = repoRoot2(opts);
149647
149661
  revokeDecision(root, conflictId2);
149648
149662
  await refreshScan(root);
149649
- emitOk(`Revoked decision for ${conflictId2.slice(0, 12)}\u2026`);
149663
+ emitOk(
149664
+ `Revoked decision for ${conflictId2.slice(0, 12)}\u2026`,
149665
+ `re-resolve: truecourse spec conflicts pick ${conflictId2} <n> \xB7 custom ${conflictId2} --text "\u2026"`
149666
+ );
149650
149667
  }
149651
149668
  function serializeConflict(c2) {
149652
149669
  return {
@@ -149657,7 +149674,8 @@ function serializeConflict(c2) {
149657
149674
  async function refreshScan(root) {
149658
149675
  await scanInProcess(root, {});
149659
149676
  }
149660
- function emitOk(msg) {
149677
+ function emitOk(msg, hint) {
149678
+ if (hint) O2.message(hint);
149661
149679
  gt(msg);
149662
149680
  }
149663
149681
  function fail(msg) {
@@ -149739,22 +149757,29 @@ async function runSpecChainsList(opts = {}) {
149739
149757
  for (const c2 of manual) {
149740
149758
  O2.message(` ${c2.older} \u2192 ${c2.newer} ${c2.note ? `\xB7 ${c2.note}` : ""}`);
149741
149759
  }
149742
- gt("");
149760
+ gt("manage with `truecourse spec chains add/remove`.");
149743
149761
  }
149744
149762
  async function runSpecChainsAdd(opts) {
149745
149763
  const root = repoRoot3(opts);
149746
149764
  if (opts.older === opts.newer) return fail2("older and newer must be different docs");
149747
149765
  addManualChain(root, { older: opts.older, newer: opts.newer, note: opts.note });
149748
149766
  await scanInProcess(root, {});
149749
- emitOk2(`Marked ${opts.older} as superseded by ${opts.newer}`);
149767
+ emitOk2(
149768
+ `Marked ${opts.older} as superseded by ${opts.newer}`,
149769
+ "re-run `truecourse spec scan` to apply."
149770
+ );
149750
149771
  }
149751
149772
  async function runSpecChainsRemove(opts) {
149752
149773
  const root = repoRoot3(opts);
149753
149774
  removeManualChain(root, { older: opts.older, newer: opts.newer });
149754
149775
  await scanInProcess(root, {});
149755
- emitOk2(`Removed chain ${opts.older} \u2192 ${opts.newer}`);
149776
+ emitOk2(
149777
+ `Removed chain ${opts.older} \u2192 ${opts.newer}`,
149778
+ "re-run `truecourse spec scan` to apply."
149779
+ );
149756
149780
  }
149757
- function emitOk2(msg) {
149781
+ function emitOk2(msg, hint) {
149782
+ if (hint) O2.message(hint);
149758
149783
  gt(msg);
149759
149784
  }
149760
149785
  function fail2(msg) {
@@ -149782,23 +149807,30 @@ async function runSpecDocsSkipped(opts = {}) {
149782
149807
  O2.step(`Manual includes (${manualIncludes.length})`);
149783
149808
  for (const inc of manualIncludes) O2.message(` ${inc}`);
149784
149809
  }
149785
- gt("");
149810
+ gt("force-include with `truecourse spec docs include <path>`.");
149786
149811
  }
149787
149812
  async function runSpecDocsInclude(docPath, opts = {}) {
149788
149813
  const root = repoRoot4(opts);
149789
149814
  if (!docPath) return fail3("Missing doc path");
149790
149815
  addManualInclude(root, docPath);
149791
149816
  await scanInProcess(root, {});
149792
- emitOk3(`Force-include ${docPath}`);
149817
+ emitOk3(
149818
+ `Force-include ${docPath}`,
149819
+ "re-scanned \u2014 review `truecourse spec conflicts list`."
149820
+ );
149793
149821
  }
149794
149822
  async function runSpecDocsUninclude(docPath, opts = {}) {
149795
149823
  const root = repoRoot4(opts);
149796
149824
  if (!docPath) return fail3("Missing doc path");
149797
149825
  removeManualInclude(root, docPath);
149798
149826
  await scanInProcess(root, {});
149799
- emitOk3(`Removed force-include for ${docPath}`);
149827
+ emitOk3(
149828
+ `Removed force-include for ${docPath}`,
149829
+ "re-scanned \u2014 review `truecourse spec conflicts list`."
149830
+ );
149800
149831
  }
149801
- function emitOk3(msg) {
149832
+ function emitOk3(msg, hint) {
149833
+ if (hint) O2.message(hint);
149802
149834
  gt(msg);
149803
149835
  }
149804
149836
  function fail3(msg) {
@@ -152751,7 +152783,7 @@ async function runHooksRun() {
152751
152783
 
152752
152784
  // tools/cli/src/index.ts
152753
152785
  var program2 = new Command();
152754
- program2.name("truecourse").version("0.6.0-next.2").description("TrueCourse CLI \u2014 analyze your repository and open the dashboard");
152786
+ program2.name("truecourse").version("0.6.0-next.3").description("TrueCourse CLI \u2014 analyze your repository and open the dashboard");
152755
152787
  var dashboardCmd = program2.command("dashboard").description("Start the TrueCourse dashboard and open it in your browser").option("--reconfigure", "Re-prompt for console vs background service mode").option("--service", "Run as a background service (skips mode prompt)").option("--console", "Run in this terminal (skips mode prompt)").action(async (options) => {
152756
152788
  if (options.service && options.console) {
152757
152789
  console.error("error: --service and --console are mutually exclusive");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truecourse",
3
- "version": "0.6.0-next.2",
3
+ "version": "0.6.0-next.3",
4
4
  "description": "Visualize your codebase architecture as an interactive graph",
5
5
  "type": "module",
6
6
  "bin": {
package/server.mjs CHANGED
@@ -156920,7 +156920,7 @@ function readToolVersion() {
156920
156920
  if (cachedVersion)
156921
156921
  return cachedVersion;
156922
156922
  if (true) {
156923
- cachedVersion = "0.6.0-next.2";
156923
+ cachedVersion = "0.6.0-next.3";
156924
156924
  return cachedVersion;
156925
156925
  }
156926
156926
  try {