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.
- package/cli.mjs +52 -20
- package/package.json +1 -1
- 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.
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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.
|
|
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
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.
|
|
156923
|
+
cachedVersion = "0.6.0-next.3";
|
|
156924
156924
|
return cachedVersion;
|
|
156925
156925
|
}
|
|
156926
156926
|
try {
|