@specverse/engines 6.0.13 → 6.0.15
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/dist/ai/analyse-runner.d.ts.map +1 -1
- package/dist/ai/analyse-runner.js +9 -1
- package/dist/ai/analyse-runner.js.map +1 -1
- package/dist/ai/create-runner.d.ts.map +1 -1
- package/dist/ai/create-runner.js +8 -1
- package/dist/ai/create-runner.js.map +1 -1
- package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +152 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +152 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyse-runner.d.ts","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"analyse-runner.d.ts","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgMnF"}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
import { writeFileSync, readFileSync, existsSync, rmSync, cpSync } from 'fs';
|
|
26
26
|
import { join } from 'path';
|
|
27
27
|
import { execSync, spawnSync } from 'child_process';
|
|
28
|
-
import { promptsDir, llmOutputDir, factsDir, specsDir, ensureSubdirs, writeStageSpec, writeProjectReadme, writeManifest, } from './run-paths.js';
|
|
28
|
+
import { promptsDir, llmOutputDir, factsDir, specsDir, ensureSubdirs, writeStageSpec, writeProjectReadme, writeManifest, writeReadme, } from './run-paths.js';
|
|
29
29
|
import { runPrompt, extractSpec } from './prompt-runner.js';
|
|
30
30
|
import { resolveModel, resolveProviderId } from './model-resolver.js';
|
|
31
31
|
function runValidate(specPath) {
|
|
@@ -230,6 +230,14 @@ export async function runAnalyse(opts) {
|
|
|
230
230
|
experimentRunId: opts.experimentRunId ?? null,
|
|
231
231
|
};
|
|
232
232
|
writeManifest(opts.outputDir, manifest);
|
|
233
|
+
// Default README — caller (harness) may overwrite after scoring with
|
|
234
|
+
// a richer version including domain coverage / validity battery.
|
|
235
|
+
writeReadme(opts.outputDir, {
|
|
236
|
+
caseEntry: opts.caseMeta ?? { name: opts.caseName ?? 'spec' },
|
|
237
|
+
manifest,
|
|
238
|
+
runFolder: manifest.runFolder,
|
|
239
|
+
kind: 'analyse',
|
|
240
|
+
});
|
|
233
241
|
return {
|
|
234
242
|
outputDir: opts.outputDir,
|
|
235
243
|
draftSpecPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyse-runner.js","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAa,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAC5C,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"analyse-runner.js","sourceRoot":"","sources":["../../src/ai/analyse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAa,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAC5C,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,GAE9E,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAwB,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAqDtE,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;QACtD,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,SAAiB;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACpF,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE;YAC9C,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;SAC/C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAqB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,QAAQ,CAAC,mCAAmC,EAAE;YAC5C,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM;SACtD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAoD,CAAC;QAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE9B,0EAA0E;IAC1E,yEAAyE;IACzE,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5C,WAAW,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC;QACvG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpD,WAAW,GAAG,WAAW,IAAI,CAAC,SAAS,GAAG,CAAC;QAC3C,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,iEAAiE;YACjE,oEAAoE;YACpE,yEAAyE;YACzE,uEAAuE;YACvE,2DAA2D;YAC3D,gCAAgC;YAChC,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI;YAC1B,gCAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;IAEP,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAErF,mBAAmB;IACnB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC;QAClC,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE;YACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,aAAa;SAC3B;QACD,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;QACxC,UAAU;QACV,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnF,4CAA4C;IAC5C,IAAI,kBAAkB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvF,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC;gBAClC,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE;oBACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;oBAClC,IAAI,EAAE,EAAE;oBACR,WAAW,EAAE,aAAa;iBAC3B;gBACD,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;gBACxC,UAAU,EACR,yEAAyE;oBACzE,OAAO,GAAG,kBAAkB,CAAC,MAAM,GAAG,WAAW;oBACjD,oCAAoC,GAAG,SAAS,GAAG,WAAW;oBAC9D,8EAA8E;gBAChF,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;oBAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAC;oBACpF,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,CAAC;gBAClF,CAAC;aACF,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;YAC/E,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACzF,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAC7F,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,EAC5D,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,kBAAkB,CAAC,EAAE,EAAE,CAAC;gBAC1B,SAAS,GAAG,SAAS,CAAC;gBACtB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBACnD,kBAAkB,GAAG,kBAAkB,CAAC;gBACxC,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;IAC9D,CAAC;IAED,6BAA6B;IAC7B,IAAI,SAAS,GAAG,SAAS,CAAC;IAC1B,IAAI,UAAU,GAAyB,OAAO,CAAC;IAC/C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,YAAY,GAAoB,MAAM,SAAS,CAAC;gBACpD,SAAS,EAAE,gBAAgB;gBAC3B,MAAM,EAAE;oBACN,kBAAkB,EAAE,IAAI,CAAC,SAAS;oBAClC,KAAK,EAAE,SAAS;oBAChB,eAAe,EAAE,YAAY;wBAC3B,sEAAsE;iBACzE;gBACD,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,GAAG,MAAM;gBACxC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;oBAChC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC7E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3E,CAAC;aACF,CAAC,CAAC;YACH,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3C,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACnF,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC;YAC5C,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACjD,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACjD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAChD,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAElD,uBAAuB;IACvB,IAAI,OAAO,GAA2C,IAAI,CAAC;IAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;QACrC,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM;QACxD,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC;IAChD,MAAM,QAAQ,GAAgB;QAC5B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM;QACpD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;QAChD,SAAS;QACT,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,UAAU;QACV,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE;QAChD,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;QAChC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAC,wDAAwD;YAC1D,CAAC,CAAC,wBAAwB;QAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;QACrB,SAAS,EAAE,WAAW;QACtB,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3E,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;QAClF,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;KAC9C,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExC,qEAAqE;IACrE,iEAAiE;IACjE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;QAC1B,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;QAC7D,QAAQ;QACR,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa;QACb,aAAa;QACb,UAAU;QACV,aAAa;QACb,OAAO;QACP,eAAe;QACf,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,oBAAoB,EAAE,kBAAkB,CAAC,EAAE;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-runner.d.ts","sourceRoot":"","sources":["../../src/ai/create-runner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAqCD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"create-runner.d.ts","sourceRoot":"","sources":["../../src/ai/create-runner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EAAE,KAAK,YAAY,EACpC,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAqCD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuHhF"}
|
package/dist/ai/create-runner.js
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
import { writeFileSync, existsSync, rmSync, cpSync } from 'fs';
|
|
20
20
|
import { join } from 'path';
|
|
21
21
|
import { execSync, spawnSync } from 'child_process';
|
|
22
|
-
import { inputDir, promptsDir, llmOutputDir, specsDir, ensureSubdirs, writeStageSpec, writeProjectReadme, writeManifest, } from './run-paths.js';
|
|
22
|
+
import { inputDir, promptsDir, llmOutputDir, specsDir, ensureSubdirs, writeStageSpec, writeProjectReadme, writeManifest, writeReadme, } from './run-paths.js';
|
|
23
23
|
import { runPrompt, extractSpec } from './prompt-runner.js';
|
|
24
24
|
import { resolveModel, resolveProviderId } from './model-resolver.js';
|
|
25
25
|
function runValidate(specPath) {
|
|
@@ -157,6 +157,13 @@ export async function runCreate(opts) {
|
|
|
157
157
|
experimentRunId: opts.experimentRunId ?? null,
|
|
158
158
|
};
|
|
159
159
|
writeManifest(opts.outputDir, manifest);
|
|
160
|
+
// Default README — caller (harness) may overwrite after scoring.
|
|
161
|
+
writeReadme(opts.outputDir, {
|
|
162
|
+
caseEntry: opts.caseMeta ?? { name: opts.caseName ?? 'spec', nl_request: opts.requirements },
|
|
163
|
+
manifest,
|
|
164
|
+
runFolder: manifest.runFolder,
|
|
165
|
+
kind: 'create',
|
|
166
|
+
});
|
|
160
167
|
return {
|
|
161
168
|
outputDir: opts.outputDir,
|
|
162
169
|
draftSpecPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-runner.js","sourceRoot":"","sources":["../../src/ai/create-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAC5C,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"create-runner.js","sourceRoot":"","sources":["../../src/ai/create-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1145,6 +1145,158 @@ import type { ParserEngine } from '@specverse/types';`,
|
|
|
1145
1145
|
process.exit(1);
|
|
1146
1146
|
}`
|
|
1147
1147
|
},
|
|
1148
|
+
"ai.analyse": {
|
|
1149
|
+
imports: `import { resolve, basename } from 'path';
|
|
1150
|
+
import { existsSync, mkdirSync, cpSync, statSync, readdirSync } from 'fs';`,
|
|
1151
|
+
handler: `// Resolve the absolute source dir.
|
|
1152
|
+
const userCwd = process.env.SPECVERSE_USER_CWD || process.cwd();
|
|
1153
|
+
const sourceAbs = resolve(userCwd, source);
|
|
1154
|
+
if (!existsSync(sourceAbs)) {
|
|
1155
|
+
console.error('Source dir not found: ' + sourceAbs);
|
|
1156
|
+
process.exit(1);
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
// Default output: ./runs/analyse/<basename>/<date>_<label>/
|
|
1160
|
+
const { runAnalyse, buildRunFolder, caseRunPath, ensureSubdirs, inputDir, resolveProviderId } = await import('@specverse/engines/ai');
|
|
1161
|
+
const providerId = resolveProviderId();
|
|
1162
|
+
const modelId = process.env.SPECVERSE_AI_MODEL || 'default';
|
|
1163
|
+
const runFolder = buildRunFolder({
|
|
1164
|
+
prompt: 'analyse-v9',
|
|
1165
|
+
providerId,
|
|
1166
|
+
modelId,
|
|
1167
|
+
label: options.label,
|
|
1168
|
+
});
|
|
1169
|
+
const outputDir = options.output
|
|
1170
|
+
? resolve(userCwd, options.output)
|
|
1171
|
+
: caseRunPath(userCwd, 'analyse', basename(sourceAbs), runFolder);
|
|
1172
|
+
ensureSubdirs(outputDir);
|
|
1173
|
+
|
|
1174
|
+
// Copy source into outputDir/input/ (excluding noisy indices) so the
|
|
1175
|
+
// run dir is self-contained.
|
|
1176
|
+
const inDir = inputDir(outputDir);
|
|
1177
|
+
const stat = statSync(sourceAbs);
|
|
1178
|
+
if (stat.isDirectory()) {
|
|
1179
|
+
if (existsSync(inDir)) {
|
|
1180
|
+
// Replace the empty stub from ensureSubdirs with the real copy.
|
|
1181
|
+
try { cpSync(sourceAbs, inDir, { recursive: true, force: true }); }
|
|
1182
|
+
catch (err: any) {
|
|
1183
|
+
console.error('Failed to copy source into input/: ' + err.message);
|
|
1184
|
+
process.exit(1);
|
|
1185
|
+
}
|
|
1186
|
+
// Strip noise.
|
|
1187
|
+
for (const noise of ['.gitnexus', 'node_modules', '.DS_Store']) {
|
|
1188
|
+
const p = resolve(inDir, noise);
|
|
1189
|
+
try { if (existsSync(p)) require('fs').rmSync(p, { recursive: true, force: true }); } catch {}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
} else {
|
|
1193
|
+
// Single-file source \u2014 copy it into input/ as-is.
|
|
1194
|
+
mkdirSync(inDir, { recursive: true });
|
|
1195
|
+
cpSync(sourceAbs, resolve(inDir, basename(sourceAbs)));
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
console.log(' source: ' + sourceAbs);
|
|
1199
|
+
console.log(' output: ' + outputDir);
|
|
1200
|
+
console.log(' provider: ' + providerId);
|
|
1201
|
+
if (options.facts) console.log(' facts: ' + options.facts);
|
|
1202
|
+
if (options.autoFacts) console.log(' facts: auto (runPrepass)');
|
|
1203
|
+
if (options.verify) console.log(' verify: enabled');
|
|
1204
|
+
if (options.realize) console.log(' realize: enabled');
|
|
1205
|
+
|
|
1206
|
+
try {
|
|
1207
|
+
const result = await runAnalyse({
|
|
1208
|
+
sourceDir: inDir,
|
|
1209
|
+
outputDir,
|
|
1210
|
+
factsPath: options.facts ? resolve(userCwd, options.facts) : undefined,
|
|
1211
|
+
autoFacts: !!options.autoFacts,
|
|
1212
|
+
verify: !!options.verify,
|
|
1213
|
+
realize: !!options.realize,
|
|
1214
|
+
prompt: 'analyse-v9',
|
|
1215
|
+
providerId,
|
|
1216
|
+
modelId,
|
|
1217
|
+
caseName: basename(sourceAbs),
|
|
1218
|
+
});
|
|
1219
|
+
console.log('');
|
|
1220
|
+
console.log('\u2705 Analyse complete');
|
|
1221
|
+
console.log(' Final spec: ' + result.finalSpecPath);
|
|
1222
|
+
console.log(' Validate: ' + (result.validateFinal.ok ? '\u2713 pass' : '\u2717 ' + result.validateFinal.errors.slice(0, 100)));
|
|
1223
|
+
if (result.realize) {
|
|
1224
|
+
console.log(' Realize: ' + (result.realize.ok ? '\u2713 project/ materialized' : '\u2717 ' + result.realize.error));
|
|
1225
|
+
}
|
|
1226
|
+
console.log(' README: ' + outputDir + '/README.md');
|
|
1227
|
+
} catch (err: any) {
|
|
1228
|
+
console.error('Analyse failed: ' + (err?.message || err));
|
|
1229
|
+
process.exit(1);
|
|
1230
|
+
}`
|
|
1231
|
+
},
|
|
1232
|
+
"ai.create": {
|
|
1233
|
+
imports: `import { resolve, basename } from 'path';
|
|
1234
|
+
import { existsSync, readFileSync } from 'fs';`,
|
|
1235
|
+
handler: `const userCwd = process.env.SPECVERSE_USER_CWD || process.cwd();
|
|
1236
|
+
// Resolve requirements: positional arg, or read from --file.
|
|
1237
|
+
let reqText = requirements;
|
|
1238
|
+
if (options.file) {
|
|
1239
|
+
const fp = resolve(userCwd, options.file);
|
|
1240
|
+
if (!existsSync(fp)) {
|
|
1241
|
+
console.error('Requirements file not found: ' + fp);
|
|
1242
|
+
process.exit(1);
|
|
1243
|
+
}
|
|
1244
|
+
reqText = readFileSync(fp, 'utf8');
|
|
1245
|
+
}
|
|
1246
|
+
if (!reqText || !reqText.trim()) {
|
|
1247
|
+
console.error('No requirements provided. Pass them as a positional argument or via --file.');
|
|
1248
|
+
process.exit(1);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
const { runCreate, buildRunFolder, caseRunPath, ensureSubdirs, resolveProviderId } = await import('@specverse/engines/ai');
|
|
1252
|
+
const providerId = resolveProviderId();
|
|
1253
|
+
const modelId = process.env.SPECVERSE_AI_MODEL || 'default';
|
|
1254
|
+
const runFolder = buildRunFolder({
|
|
1255
|
+
prompt: 'create-v9',
|
|
1256
|
+
providerId,
|
|
1257
|
+
modelId,
|
|
1258
|
+
label: options.label,
|
|
1259
|
+
});
|
|
1260
|
+
// Default output: ./runs/create/<short-slug>/<date>_<label>/
|
|
1261
|
+
const slug = (options.name || 'spec').toLowerCase().replace(/[^a-z0-9-]+/g, '-').slice(0, 40) || 'spec';
|
|
1262
|
+
const outputDir = options.output
|
|
1263
|
+
? resolve(userCwd, options.output)
|
|
1264
|
+
: caseRunPath(userCwd, 'create', slug, runFolder);
|
|
1265
|
+
ensureSubdirs(outputDir);
|
|
1266
|
+
|
|
1267
|
+
console.log(' output: ' + outputDir);
|
|
1268
|
+
console.log(' provider: ' + providerId);
|
|
1269
|
+
if (options.scale) console.log(' scale: ' + options.scale);
|
|
1270
|
+
if (options.preferredTech) console.log(' tech: ' + options.preferredTech);
|
|
1271
|
+
if (options.verify) console.log(' verify: enabled');
|
|
1272
|
+
if (options.realize) console.log(' realize: enabled');
|
|
1273
|
+
|
|
1274
|
+
try {
|
|
1275
|
+
const result = await runCreate({
|
|
1276
|
+
requirements: reqText,
|
|
1277
|
+
scale: options.scale,
|
|
1278
|
+
preferredTech: options.preferredTech,
|
|
1279
|
+
outputDir,
|
|
1280
|
+
verify: !!options.verify,
|
|
1281
|
+
realize: !!options.realize,
|
|
1282
|
+
prompt: 'create-v9',
|
|
1283
|
+
providerId,
|
|
1284
|
+
modelId,
|
|
1285
|
+
caseName: slug,
|
|
1286
|
+
});
|
|
1287
|
+
console.log('');
|
|
1288
|
+
console.log('\u2705 Create complete');
|
|
1289
|
+
console.log(' Final spec: ' + result.finalSpecPath);
|
|
1290
|
+
console.log(' Validate: ' + (result.validateFinal.ok ? '\u2713 pass' : '\u2717 ' + result.validateFinal.errors.slice(0, 100)));
|
|
1291
|
+
if (result.realize) {
|
|
1292
|
+
console.log(' Realize: ' + (result.realize.ok ? '\u2713 project/ materialized' : '\u2717 ' + result.realize.error));
|
|
1293
|
+
}
|
|
1294
|
+
console.log(' README: ' + outputDir + '/README.md');
|
|
1295
|
+
} catch (err: any) {
|
|
1296
|
+
console.error('Create failed: ' + (err?.message || err));
|
|
1297
|
+
process.exit(1);
|
|
1298
|
+
}`
|
|
1299
|
+
},
|
|
1148
1300
|
// === session subcommands ===
|
|
1149
1301
|
"session.create": {
|
|
1150
1302
|
imports: `import { EngineRegistry } from '@specverse/entities';`,
|
|
@@ -1200,6 +1200,158 @@ import type { ParserEngine } from '@specverse/types';`,
|
|
|
1200
1200
|
process.exit(1);
|
|
1201
1201
|
}`
|
|
1202
1202
|
},
|
|
1203
|
+
'ai.analyse': {
|
|
1204
|
+
imports: `import { resolve, basename } from 'path';
|
|
1205
|
+
import { existsSync, mkdirSync, cpSync, statSync, readdirSync } from 'fs';`,
|
|
1206
|
+
handler: `// Resolve the absolute source dir.
|
|
1207
|
+
const userCwd = process.env.SPECVERSE_USER_CWD || process.cwd();
|
|
1208
|
+
const sourceAbs = resolve(userCwd, source);
|
|
1209
|
+
if (!existsSync(sourceAbs)) {
|
|
1210
|
+
console.error('Source dir not found: ' + sourceAbs);
|
|
1211
|
+
process.exit(1);
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
// Default output: ./runs/analyse/<basename>/<date>_<label>/
|
|
1215
|
+
const { runAnalyse, buildRunFolder, caseRunPath, ensureSubdirs, inputDir, resolveProviderId } = await import('@specverse/engines/ai');
|
|
1216
|
+
const providerId = resolveProviderId();
|
|
1217
|
+
const modelId = process.env.SPECVERSE_AI_MODEL || 'default';
|
|
1218
|
+
const runFolder = buildRunFolder({
|
|
1219
|
+
prompt: 'analyse-v9',
|
|
1220
|
+
providerId,
|
|
1221
|
+
modelId,
|
|
1222
|
+
label: options.label,
|
|
1223
|
+
});
|
|
1224
|
+
const outputDir = options.output
|
|
1225
|
+
? resolve(userCwd, options.output)
|
|
1226
|
+
: caseRunPath(userCwd, 'analyse', basename(sourceAbs), runFolder);
|
|
1227
|
+
ensureSubdirs(outputDir);
|
|
1228
|
+
|
|
1229
|
+
// Copy source into outputDir/input/ (excluding noisy indices) so the
|
|
1230
|
+
// run dir is self-contained.
|
|
1231
|
+
const inDir = inputDir(outputDir);
|
|
1232
|
+
const stat = statSync(sourceAbs);
|
|
1233
|
+
if (stat.isDirectory()) {
|
|
1234
|
+
if (existsSync(inDir)) {
|
|
1235
|
+
// Replace the empty stub from ensureSubdirs with the real copy.
|
|
1236
|
+
try { cpSync(sourceAbs, inDir, { recursive: true, force: true }); }
|
|
1237
|
+
catch (err: any) {
|
|
1238
|
+
console.error('Failed to copy source into input/: ' + err.message);
|
|
1239
|
+
process.exit(1);
|
|
1240
|
+
}
|
|
1241
|
+
// Strip noise.
|
|
1242
|
+
for (const noise of ['.gitnexus', 'node_modules', '.DS_Store']) {
|
|
1243
|
+
const p = resolve(inDir, noise);
|
|
1244
|
+
try { if (existsSync(p)) require('fs').rmSync(p, { recursive: true, force: true }); } catch {}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
} else {
|
|
1248
|
+
// Single-file source — copy it into input/ as-is.
|
|
1249
|
+
mkdirSync(inDir, { recursive: true });
|
|
1250
|
+
cpSync(sourceAbs, resolve(inDir, basename(sourceAbs)));
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
console.log(' source: ' + sourceAbs);
|
|
1254
|
+
console.log(' output: ' + outputDir);
|
|
1255
|
+
console.log(' provider: ' + providerId);
|
|
1256
|
+
if (options.facts) console.log(' facts: ' + options.facts);
|
|
1257
|
+
if (options.autoFacts) console.log(' facts: auto (runPrepass)');
|
|
1258
|
+
if (options.verify) console.log(' verify: enabled');
|
|
1259
|
+
if (options.realize) console.log(' realize: enabled');
|
|
1260
|
+
|
|
1261
|
+
try {
|
|
1262
|
+
const result = await runAnalyse({
|
|
1263
|
+
sourceDir: inDir,
|
|
1264
|
+
outputDir,
|
|
1265
|
+
factsPath: options.facts ? resolve(userCwd, options.facts) : undefined,
|
|
1266
|
+
autoFacts: !!options.autoFacts,
|
|
1267
|
+
verify: !!options.verify,
|
|
1268
|
+
realize: !!options.realize,
|
|
1269
|
+
prompt: 'analyse-v9',
|
|
1270
|
+
providerId,
|
|
1271
|
+
modelId,
|
|
1272
|
+
caseName: basename(sourceAbs),
|
|
1273
|
+
});
|
|
1274
|
+
console.log('');
|
|
1275
|
+
console.log('✅ Analyse complete');
|
|
1276
|
+
console.log(' Final spec: ' + result.finalSpecPath);
|
|
1277
|
+
console.log(' Validate: ' + (result.validateFinal.ok ? '✓ pass' : '✗ ' + result.validateFinal.errors.slice(0, 100)));
|
|
1278
|
+
if (result.realize) {
|
|
1279
|
+
console.log(' Realize: ' + (result.realize.ok ? '✓ project/ materialized' : '✗ ' + result.realize.error));
|
|
1280
|
+
}
|
|
1281
|
+
console.log(' README: ' + outputDir + '/README.md');
|
|
1282
|
+
} catch (err: any) {
|
|
1283
|
+
console.error('Analyse failed: ' + (err?.message || err));
|
|
1284
|
+
process.exit(1);
|
|
1285
|
+
}`
|
|
1286
|
+
},
|
|
1287
|
+
'ai.create': {
|
|
1288
|
+
imports: `import { resolve, basename } from 'path';
|
|
1289
|
+
import { existsSync, readFileSync } from 'fs';`,
|
|
1290
|
+
handler: `const userCwd = process.env.SPECVERSE_USER_CWD || process.cwd();
|
|
1291
|
+
// Resolve requirements: positional arg, or read from --file.
|
|
1292
|
+
let reqText = requirements;
|
|
1293
|
+
if (options.file) {
|
|
1294
|
+
const fp = resolve(userCwd, options.file);
|
|
1295
|
+
if (!existsSync(fp)) {
|
|
1296
|
+
console.error('Requirements file not found: ' + fp);
|
|
1297
|
+
process.exit(1);
|
|
1298
|
+
}
|
|
1299
|
+
reqText = readFileSync(fp, 'utf8');
|
|
1300
|
+
}
|
|
1301
|
+
if (!reqText || !reqText.trim()) {
|
|
1302
|
+
console.error('No requirements provided. Pass them as a positional argument or via --file.');
|
|
1303
|
+
process.exit(1);
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
const { runCreate, buildRunFolder, caseRunPath, ensureSubdirs, resolveProviderId } = await import('@specverse/engines/ai');
|
|
1307
|
+
const providerId = resolveProviderId();
|
|
1308
|
+
const modelId = process.env.SPECVERSE_AI_MODEL || 'default';
|
|
1309
|
+
const runFolder = buildRunFolder({
|
|
1310
|
+
prompt: 'create-v9',
|
|
1311
|
+
providerId,
|
|
1312
|
+
modelId,
|
|
1313
|
+
label: options.label,
|
|
1314
|
+
});
|
|
1315
|
+
// Default output: ./runs/create/<short-slug>/<date>_<label>/
|
|
1316
|
+
const slug = (options.name || 'spec').toLowerCase().replace(/[^a-z0-9-]+/g, '-').slice(0, 40) || 'spec';
|
|
1317
|
+
const outputDir = options.output
|
|
1318
|
+
? resolve(userCwd, options.output)
|
|
1319
|
+
: caseRunPath(userCwd, 'create', slug, runFolder);
|
|
1320
|
+
ensureSubdirs(outputDir);
|
|
1321
|
+
|
|
1322
|
+
console.log(' output: ' + outputDir);
|
|
1323
|
+
console.log(' provider: ' + providerId);
|
|
1324
|
+
if (options.scale) console.log(' scale: ' + options.scale);
|
|
1325
|
+
if (options.preferredTech) console.log(' tech: ' + options.preferredTech);
|
|
1326
|
+
if (options.verify) console.log(' verify: enabled');
|
|
1327
|
+
if (options.realize) console.log(' realize: enabled');
|
|
1328
|
+
|
|
1329
|
+
try {
|
|
1330
|
+
const result = await runCreate({
|
|
1331
|
+
requirements: reqText,
|
|
1332
|
+
scale: options.scale,
|
|
1333
|
+
preferredTech: options.preferredTech,
|
|
1334
|
+
outputDir,
|
|
1335
|
+
verify: !!options.verify,
|
|
1336
|
+
realize: !!options.realize,
|
|
1337
|
+
prompt: 'create-v9',
|
|
1338
|
+
providerId,
|
|
1339
|
+
modelId,
|
|
1340
|
+
caseName: slug,
|
|
1341
|
+
});
|
|
1342
|
+
console.log('');
|
|
1343
|
+
console.log('✅ Create complete');
|
|
1344
|
+
console.log(' Final spec: ' + result.finalSpecPath);
|
|
1345
|
+
console.log(' Validate: ' + (result.validateFinal.ok ? '✓ pass' : '✗ ' + result.validateFinal.errors.slice(0, 100)));
|
|
1346
|
+
if (result.realize) {
|
|
1347
|
+
console.log(' Realize: ' + (result.realize.ok ? '✓ project/ materialized' : '✗ ' + result.realize.error));
|
|
1348
|
+
}
|
|
1349
|
+
console.log(' README: ' + outputDir + '/README.md');
|
|
1350
|
+
} catch (err: any) {
|
|
1351
|
+
console.error('Create failed: ' + (err?.message || err));
|
|
1352
|
+
process.exit(1);
|
|
1353
|
+
}`
|
|
1354
|
+
},
|
|
1203
1355
|
// === session subcommands ===
|
|
1204
1356
|
'session.create': {
|
|
1205
1357
|
imports: `import { EngineRegistry } from '@specverse/entities';`,
|