musubix2 0.5.73 → 0.5.75
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/.claude/.musubix-managed +1 -1
- package/dist/assets/skills-manifest.json +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +102 -15
- package/dist/cli.js.map +1 -1
- package/dist/index.js +102 -15
- package/package.json +1 -1
package/.claude/.musubix-managed
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generator":"musubix2","version":"0.5.
|
|
1
|
+
{"generator":"musubix2","version":"0.5.75","timestamp":"2026-07-10T23:55:04.204Z"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -134,7 +134,7 @@ export declare function handleSkills(sub: string | undefined, args: string[]): P
|
|
|
134
134
|
export declare function handleKnowledge(sub: string | undefined, args: string[], flags: Record<string, unknown>): Promise<ExitCodeValue>;
|
|
135
135
|
export declare function handleDecision(sub: string | undefined, args: string[], flags: Record<string, unknown>): Promise<ExitCodeValue>;
|
|
136
136
|
export declare function handleDeepResearch(sub: string | undefined, args: string[]): Promise<ExitCodeValue>;
|
|
137
|
-
export declare function handleRepl(): Promise<ExitCodeValue>;
|
|
137
|
+
export declare function handleRepl(input?: NodeJS.ReadableStream, output?: NodeJS.WritableStream): Promise<ExitCodeValue>;
|
|
138
138
|
export declare function handleScaffold(sub: string | undefined, args: string[]): Promise<ExitCodeValue>;
|
|
139
139
|
export declare function handleExplain(input: string | undefined): Promise<ExitCodeValue>;
|
|
140
140
|
export declare function handleLearn(sub: string | undefined, args: string[]): Promise<ExitCodeValue>;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1924,6 +1924,20 @@ var init_interviewer = __esm({
|
|
|
1924
1924
|
this.updateState();
|
|
1925
1925
|
return { ...this.state };
|
|
1926
1926
|
}
|
|
1927
|
+
/**
|
|
1928
|
+
* Restore a previously serialized state so the 1問1答 flow can span separate
|
|
1929
|
+
* CLI invocations (each a fresh process). Pairs with getState().
|
|
1930
|
+
*/
|
|
1931
|
+
restoreState(state) {
|
|
1932
|
+
this.state = {
|
|
1933
|
+
context: state.context ?? {},
|
|
1934
|
+
answeredQuestions: state.answeredQuestions ?? [],
|
|
1935
|
+
currentQuestion: state.currentQuestion ?? null,
|
|
1936
|
+
isComplete: state.isComplete ?? false,
|
|
1937
|
+
completionPercentage: state.completionPercentage ?? 0,
|
|
1938
|
+
missingRequired: state.missingRequired ?? []
|
|
1939
|
+
};
|
|
1940
|
+
}
|
|
1927
1941
|
/** Reset the interview */
|
|
1928
1942
|
reset() {
|
|
1929
1943
|
this.state = {
|
|
@@ -16030,7 +16044,7 @@ function synthesisTools() {
|
|
|
16030
16044
|
return [
|
|
16031
16045
|
tool("synthesis.dsl.build", "Apply a DSL transform pipeline to an input string", "synthesis", [
|
|
16032
16046
|
param("input", "string", "Input string to transform"),
|
|
16033
|
-
param("ops", "array", "Ops: trim | upper | lower | reverse | capitalize | camelCase | snakeCase | replace:from:to")
|
|
16047
|
+
param("ops", "array", "Ops: trim | upper | lower | reverse | capitalize | camelCase | snakeCase | replace:from:to | prefixRemove:p | suffixAppend:s | repeat:n")
|
|
16034
16048
|
], async (params) => {
|
|
16035
16049
|
try {
|
|
16036
16050
|
const { createDSLBuilder: createDSLBuilder2 } = await Promise.resolve().then(() => (init_dist12(), dist_exports12));
|
|
@@ -16073,6 +16087,9 @@ function synthesisTools() {
|
|
|
16073
16087
|
case "suffixAppend":
|
|
16074
16088
|
builder.suffixAppend(a[0] ?? "");
|
|
16075
16089
|
break;
|
|
16090
|
+
case "repeat":
|
|
16091
|
+
builder.repeat(Number.parseInt(a[0] ?? "1", 10) || 1);
|
|
16092
|
+
break;
|
|
16076
16093
|
default:
|
|
16077
16094
|
return fail(`Unknown DSL op: ${name}`);
|
|
16078
16095
|
}
|
|
@@ -17073,7 +17090,7 @@ init_dist5();
|
|
|
17073
17090
|
init_dist6();
|
|
17074
17091
|
init_dist();
|
|
17075
17092
|
init_dist();
|
|
17076
|
-
import { readFileSync as readFileSync6, existsSync as existsSync12, statSync, readdirSync, writeFileSync as writeFileSync4, mkdirSync as mkdirSync4 } from "node:fs";
|
|
17093
|
+
import { readFileSync as readFileSync6, existsSync as existsSync12, statSync, readdirSync, writeFileSync as writeFileSync4, mkdirSync as mkdirSync4, rmSync as rmSync2 } from "node:fs";
|
|
17077
17094
|
import { join as joinPath, dirname as dirnamePath } from "node:path";
|
|
17078
17095
|
function parseArgs(argv) {
|
|
17079
17096
|
const command = argv[0] ?? "";
|
|
@@ -17574,9 +17591,21 @@ async function handleTrace(sub, args, flags = {}) {
|
|
|
17574
17591
|
}
|
|
17575
17592
|
const generator = createMatrixGenerator();
|
|
17576
17593
|
const report = generator.generate(data.requirementIds, data.fileIds, data.links);
|
|
17577
|
-
console.log(generator.toMarkdown(report));
|
|
17578
17594
|
const covered = data.requirementIds.filter((r) => (data.refsByReq.get(r)?.length ?? 0) > 0);
|
|
17579
17595
|
const pct = Math.round(covered.length / data.requirementIds.length * 100);
|
|
17596
|
+
if (flags["json"] === true) {
|
|
17597
|
+
console.log(JSON.stringify({
|
|
17598
|
+
requirements: data.requirementIds,
|
|
17599
|
+
files: data.fileIds,
|
|
17600
|
+
links: data.links,
|
|
17601
|
+
completeness: report.completeness,
|
|
17602
|
+
gaps: report.gaps,
|
|
17603
|
+
referencedInCode: covered.length,
|
|
17604
|
+
coveragePercent: pct
|
|
17605
|
+
}, null, 2));
|
|
17606
|
+
return ExitCode.SUCCESS;
|
|
17607
|
+
}
|
|
17608
|
+
console.log(generator.toMarkdown(report));
|
|
17580
17609
|
console.log(`
|
|
17581
17610
|
Requirements: ${data.requirementIds.length}, referenced in code: ${covered.length} (${pct}%), source files: ${data.fileIds.length} (scanned ${srcDir}).`);
|
|
17582
17611
|
return ExitCode.SUCCESS;
|
|
@@ -17617,6 +17646,16 @@ Requirements: ${data.requirementIds.length}, referenced in code: ${covered.lengt
|
|
|
17617
17646
|
const result = analyzer.analyze(targetId, links);
|
|
17618
17647
|
const affectedReqs = result.affectedIds.filter((id) => /^REQ-[A-Z]{2,6}-\d{3}$/.test(id));
|
|
17619
17648
|
const affectedSymbols = result.affectedIds.filter((id) => !/^REQ-[A-Z]{2,6}-\d{3}$/.test(id));
|
|
17649
|
+
if (flags["json"] === true) {
|
|
17650
|
+
console.log(JSON.stringify({
|
|
17651
|
+
target: targetId,
|
|
17652
|
+
level: result.level,
|
|
17653
|
+
affectedIds: result.affectedIds,
|
|
17654
|
+
affectedSymbols,
|
|
17655
|
+
affectedRequirements: affectedReqs
|
|
17656
|
+
}, null, 2));
|
|
17657
|
+
return ExitCode.SUCCESS;
|
|
17658
|
+
}
|
|
17620
17659
|
console.log(`Impact analysis for ${targetId}:`);
|
|
17621
17660
|
console.log(` Level: ${result.level}`);
|
|
17622
17661
|
console.log(` Affected: ${result.affectedIds.length} item(s) (${affectedSymbols.length} symbol(s), ${affectedReqs.length} requirement(s))`);
|
|
@@ -19203,7 +19242,7 @@ async function handleCodegraph(sub, args) {
|
|
|
19203
19242
|
output = lines.join("\n");
|
|
19204
19243
|
}
|
|
19205
19244
|
if (outPath) {
|
|
19206
|
-
|
|
19245
|
+
writeOut(outPath, output);
|
|
19207
19246
|
console.log(`\u2705 Exported ${fileSet.size} file(s), ${rels.length} edge(s) as ${format} to ${outPath}`);
|
|
19208
19247
|
} else {
|
|
19209
19248
|
console.log(output);
|
|
@@ -19440,18 +19479,35 @@ async function handleReqWizard() {
|
|
|
19440
19479
|
return ExitCode.GENERAL_ERROR;
|
|
19441
19480
|
}
|
|
19442
19481
|
}
|
|
19443
|
-
var
|
|
19482
|
+
var INTERVIEW_STATE_FILE = ".musubix/interview.json";
|
|
19444
19483
|
function getInterviewer() {
|
|
19445
|
-
|
|
19446
|
-
|
|
19484
|
+
const interviewer = createRequirementsInterviewer();
|
|
19485
|
+
if (existsSync12(INTERVIEW_STATE_FILE)) {
|
|
19486
|
+
try {
|
|
19487
|
+
interviewer.restoreState(JSON.parse(readFileSync6(INTERVIEW_STATE_FILE, "utf-8")));
|
|
19488
|
+
} catch {
|
|
19489
|
+
}
|
|
19490
|
+
}
|
|
19491
|
+
return interviewer;
|
|
19492
|
+
}
|
|
19493
|
+
function saveInterview(interviewer) {
|
|
19494
|
+
mkdirSync4(dirnamePath(INTERVIEW_STATE_FILE), { recursive: true });
|
|
19495
|
+
writeFileSync4(INTERVIEW_STATE_FILE, JSON.stringify(interviewer.getState(), null, 2), "utf-8");
|
|
19496
|
+
}
|
|
19497
|
+
function writeOut(filePath, content) {
|
|
19498
|
+
const dir = dirnamePath(filePath);
|
|
19499
|
+
if (dir && dir !== ".") {
|
|
19500
|
+
mkdirSync4(dir, { recursive: true });
|
|
19447
19501
|
}
|
|
19448
|
-
|
|
19502
|
+
writeFileSync4(filePath, content, "utf-8");
|
|
19449
19503
|
}
|
|
19450
19504
|
async function handleReqInterview(args) {
|
|
19451
19505
|
try {
|
|
19452
19506
|
const interviewer = getInterviewer();
|
|
19453
19507
|
if (args["reset"] === true) {
|
|
19454
|
-
|
|
19508
|
+
if (existsSync12(INTERVIEW_STATE_FILE)) {
|
|
19509
|
+
rmSync2(INTERVIEW_STATE_FILE, { force: true });
|
|
19510
|
+
}
|
|
19455
19511
|
console.log("\u{1F504} Interview state reset.");
|
|
19456
19512
|
return ExitCode.SUCCESS;
|
|
19457
19513
|
}
|
|
@@ -19485,6 +19541,7 @@ async function handleReqInterview(args) {
|
|
|
19485
19541
|
return ExitCode.GENERAL_ERROR;
|
|
19486
19542
|
}
|
|
19487
19543
|
const result2 = interviewer.answer(questionId, response);
|
|
19544
|
+
saveInterview(interviewer);
|
|
19488
19545
|
if (result2.status === "complete") {
|
|
19489
19546
|
console.log("\u2705 Interview complete! All required info gathered.");
|
|
19490
19547
|
console.log(" Run `musubix req:interview --generate` to generate the spec.");
|
|
@@ -19510,7 +19567,9 @@ async function handleReqInterview(args) {
|
|
|
19510
19567
|
console.log(" musubix req:interview --reset Reset interview");
|
|
19511
19568
|
return ExitCode.SUCCESS;
|
|
19512
19569
|
}
|
|
19570
|
+
interviewer.reset();
|
|
19513
19571
|
const result = interviewer.analyzeInput(inputText);
|
|
19572
|
+
saveInterview(interviewer);
|
|
19514
19573
|
if (result.status === "complete") {
|
|
19515
19574
|
console.log("\u2705 Sufficient info gathered! Generating requirements...");
|
|
19516
19575
|
const generator = createRequirementsDocGenerator();
|
|
@@ -19549,7 +19608,7 @@ async function handleDesignGenerate(filePath, outPath) {
|
|
|
19549
19608
|
if (outPath) {
|
|
19550
19609
|
const c4 = deriveC4FromRequirements(content);
|
|
19551
19610
|
const artifact = { ...design, elements: c4.elements, relationships: c4.relationships };
|
|
19552
|
-
|
|
19611
|
+
writeOut(outPath, JSON.stringify(artifact, null, 2) + "\n");
|
|
19553
19612
|
console.log(`\u2705 Wrote design artifact: ${outPath} (${design.sections.length} section(s))`);
|
|
19554
19613
|
console.log(` Next: musubix design:verify ${outPath} | musubix design:c4 ${outPath}`);
|
|
19555
19614
|
return ExitCode.SUCCESS;
|
|
@@ -19806,7 +19865,7 @@ async function handleCodegen(nameOrFile, type = "class", outPath) {
|
|
|
19806
19865
|
const entityDecls = renderEntityTypeStubs(targets);
|
|
19807
19866
|
const code = [...entityDecls, ...blocks].join("\n\n");
|
|
19808
19867
|
if (outPath) {
|
|
19809
|
-
|
|
19868
|
+
writeOut(outPath, code + "\n");
|
|
19810
19869
|
console.error(`\u2705 Wrote ${targets.length} skeleton(s) to ${outPath}`);
|
|
19811
19870
|
console.error(` Next: musubix test:gen ${outPath}`);
|
|
19812
19871
|
return ExitCode.SUCCESS;
|
|
@@ -19836,7 +19895,7 @@ async function handleCodegen(nameOrFile, type = "class", outPath) {
|
|
|
19836
19895
|
name: safeName
|
|
19837
19896
|
});
|
|
19838
19897
|
if (outPath) {
|
|
19839
|
-
|
|
19898
|
+
writeOut(outPath, result.code + "\n");
|
|
19840
19899
|
console.error(`\u2705 Wrote skeleton to ${outPath}`);
|
|
19841
19900
|
console.error(` Next: musubix test:gen ${outPath}`);
|
|
19842
19901
|
return ExitCode.SUCCESS;
|
|
@@ -20268,13 +20327,41 @@ async function handleDeepResearch(sub, args) {
|
|
|
20268
20327
|
return ExitCode.SUCCESS;
|
|
20269
20328
|
}
|
|
20270
20329
|
}
|
|
20271
|
-
async function handleRepl() {
|
|
20330
|
+
async function handleRepl(input = process.stdin, output = process.stdout) {
|
|
20272
20331
|
const { ReplEngine: ReplEngine2 } = await Promise.resolve().then(() => (init_dist(), dist_exports));
|
|
20332
|
+
const readline2 = await import("node:readline");
|
|
20273
20333
|
const repl = new ReplEngine2();
|
|
20274
20334
|
console.log("MUSUBIX2 Interactive REPL");
|
|
20275
20335
|
console.log('Type "help" for commands, "exit" to quit.\n');
|
|
20276
|
-
|
|
20277
|
-
|
|
20336
|
+
const rl = readline2.createInterface({
|
|
20337
|
+
input,
|
|
20338
|
+
output,
|
|
20339
|
+
prompt: repl.getPrompt()
|
|
20340
|
+
});
|
|
20341
|
+
rl.prompt();
|
|
20342
|
+
return await new Promise((resolve9) => {
|
|
20343
|
+
rl.on("line", (line) => {
|
|
20344
|
+
const trimmed = line.trim();
|
|
20345
|
+
if (trimmed === "exit" || trimmed === "quit" || trimmed === "q") {
|
|
20346
|
+
rl.close();
|
|
20347
|
+
return;
|
|
20348
|
+
}
|
|
20349
|
+
if (!trimmed) {
|
|
20350
|
+
rl.prompt();
|
|
20351
|
+
return;
|
|
20352
|
+
}
|
|
20353
|
+
rl.pause();
|
|
20354
|
+
repl.eval(trimmed).then((out) => {
|
|
20355
|
+
if (out) {
|
|
20356
|
+
console.log(out);
|
|
20357
|
+
}
|
|
20358
|
+
}).catch((err) => console.error(`\u274C ${err instanceof Error ? err.message : String(err)}`)).finally(() => {
|
|
20359
|
+
rl.resume();
|
|
20360
|
+
rl.prompt();
|
|
20361
|
+
});
|
|
20362
|
+
});
|
|
20363
|
+
rl.on("close", () => resolve9(ExitCode.SUCCESS));
|
|
20364
|
+
});
|
|
20278
20365
|
}
|
|
20279
20366
|
async function handleScaffold(sub, args) {
|
|
20280
20367
|
const { createProjectInitializer: createProjectInitializer2 } = await Promise.resolve().then(() => (init_dist(), dist_exports));
|