create-quiver 0.14.1 → 0.15.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.
- package/CHANGELOG.md +22 -0
- package/README.md +35 -0
- package/README_FOR_AI.md +15 -4
- package/ROADMAP.md +13 -2
- package/docs/AI_CONTEXT.md.template +4 -0
- package/docs/AI_ONBOARDING_PROMPT.md.template +8 -0
- package/docs/CLI_UX_GUIDE.md +79 -4
- package/docs/COMMANDS.md.template +21 -5
- package/docs/TROUBLESHOOTING.md +70 -0
- package/docs/TROUBLESHOOTING.md.template +20 -0
- package/docs/getting-started/installation.md +86 -0
- package/docs/reference/commands.md +33 -1
- package/package.json +1 -1
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EVIDENCE_REPORT.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/SPEC.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/STATUS.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/pr.md +103 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/slice.json +71 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/slice.json +69 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/slice.json +75 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/slice.json +95 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/EVIDENCE_REPORT.md +185 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/SPEC.md +337 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/STATUS.md +30 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/pr.md +98 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +30 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/slice.json +62 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/slice.json +72 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/slice.json +78 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/slice.json +77 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/slice.json +84 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/slice.json +72 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/EXECUTION_BRIEF.md +58 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/slice.json +84 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/slice.json +94 -0
- package/specs/quiver-v32-npx-installation-guidance/EVIDENCE_REPORT.md +26 -0
- package/specs/quiver-v32-npx-installation-guidance/SPEC.md +55 -0
- package/specs/quiver-v32-npx-installation-guidance/STATUS.md +23 -0
- package/specs/quiver-v32-npx-installation-guidance/pr.md +72 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/slice.json +75 -0
- package/src/create-quiver/commands/ai.js +797 -99
- package/src/create-quiver/commands/flow.js +2 -2
- package/src/create-quiver/commands/spec.js +106 -6
- package/src/create-quiver/index.js +557 -78
- package/src/create-quiver/lib/agent-profiles.js +440 -11
- package/src/create-quiver/lib/ai/execution-plan.js +111 -8
- package/src/create-quiver/lib/ai/executor.js +291 -28
- package/src/create-quiver/lib/ai/model-catalog.js +333 -0
- package/src/create-quiver/lib/ai/providers.js +211 -2
- package/src/create-quiver/lib/cli/selectors.js +160 -0
- package/src/create-quiver/lib/cli/theme.js +5 -2
- package/src/create-quiver/lib/cli/ux-flags.js +18 -0
- package/src/create-quiver/lib/cli/ux.js +100 -5
|
@@ -321,10 +321,10 @@ function detectFlowState(projectRoot) {
|
|
|
321
321
|
stage: 'agent-profiles-needed',
|
|
322
322
|
label: 'agent profiles need setup',
|
|
323
323
|
blockers: [`Missing ${agents.missingCore.join(' and ')} agent profile${agents.missingCore.length > 1 ? 's' : ''}.`],
|
|
324
|
-
nextCommand: `npx create-quiver ai agent set ${role} --provider codex --model
|
|
324
|
+
nextCommand: `npx create-quiver ai agent set ${role} --provider codex --model gpt-5.5`,
|
|
325
325
|
suggestedCommands: [
|
|
326
326
|
'npx create-quiver ai agent list',
|
|
327
|
-
`npx create-quiver ai agent set ${role} --provider codex --model
|
|
327
|
+
`npx create-quiver ai agent set ${role} --provider codex --model gpt-5.5`,
|
|
328
328
|
],
|
|
329
329
|
facts,
|
|
330
330
|
});
|
|
@@ -3,6 +3,7 @@ const path = require('node:path');
|
|
|
3
3
|
|
|
4
4
|
const { checkHandoff } = require('../lib/handoff');
|
|
5
5
|
const { openEditor } = require('../lib/cli/editor');
|
|
6
|
+
const { selectOption } = require('../lib/cli/selectors');
|
|
6
7
|
const { createUx } = require('../lib/cli/ux');
|
|
7
8
|
const { parseJsonWithComments } = require('../lib/json');
|
|
8
9
|
const { assertPathInsideRoot, validateProjectRelativePaths } = require('../lib/paths');
|
|
@@ -399,6 +400,104 @@ function createSpecReviewFile(preview, options = {}) {
|
|
|
399
400
|
return reviewPath;
|
|
400
401
|
}
|
|
401
402
|
|
|
403
|
+
const SPEC_METHODOLOGY_OPTIONS = Object.freeze([
|
|
404
|
+
{
|
|
405
|
+
label: 'WDD + SDD',
|
|
406
|
+
value: 'wdd-sdd',
|
|
407
|
+
hint: 'Workflow Driven Development + Spec Driven Development',
|
|
408
|
+
default: true,
|
|
409
|
+
},
|
|
410
|
+
]);
|
|
411
|
+
|
|
412
|
+
async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options = {}) {
|
|
413
|
+
if (options.interactive !== true) {
|
|
414
|
+
return options;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
const ux = options.ux || createUx({
|
|
418
|
+
interactive: true,
|
|
419
|
+
promptConfirm: options.promptConfirm,
|
|
420
|
+
stdinIsTTY: options.stdinIsTTY,
|
|
421
|
+
stdoutIsTTY: options.stdoutIsTTY,
|
|
422
|
+
stderrIsTTY: options.stderrIsTTY,
|
|
423
|
+
write: options.write,
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
if (!ux.mode.usePrompts) {
|
|
427
|
+
throw new Error(formatError('spec create --interactive requires an interactive TTY. Use --input, --spec, --review, and --dry-run for non-interactive automation.'));
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
const selectorOptions = {
|
|
431
|
+
env: options.env,
|
|
432
|
+
input: options.inputStream,
|
|
433
|
+
interactive: true,
|
|
434
|
+
noColor: options.noColor,
|
|
435
|
+
output: options.output,
|
|
436
|
+
prompts: options.prompts,
|
|
437
|
+
promptSelect: options.promptSelect,
|
|
438
|
+
stderrIsTTY: options.stderrIsTTY,
|
|
439
|
+
stdinIsTTY: options.stdinIsTTY,
|
|
440
|
+
stdoutIsTTY: options.stdoutIsTTY,
|
|
441
|
+
};
|
|
442
|
+
const selectedMethodology = await selectOption('¿Qué metodología aplica esta spec?', SPEC_METHODOLOGY_OPTIONS, {
|
|
443
|
+
...selectorOptions,
|
|
444
|
+
defaultValue: 'wdd-sdd',
|
|
445
|
+
flag: '--methodology',
|
|
446
|
+
name: 'methodology',
|
|
447
|
+
value: options.methodology || '',
|
|
448
|
+
});
|
|
449
|
+
const selectedInput = await selectOption('¿Qué plan aprobado querés usar?', [
|
|
450
|
+
{
|
|
451
|
+
label: preview.inputPath,
|
|
452
|
+
value: preview.inputPath,
|
|
453
|
+
hint: 'Plan técnico revisado y aprobado',
|
|
454
|
+
default: true,
|
|
455
|
+
},
|
|
456
|
+
], {
|
|
457
|
+
...selectorOptions,
|
|
458
|
+
defaultValue: preview.inputPath,
|
|
459
|
+
flag: '--input',
|
|
460
|
+
name: 'approved technical plan input',
|
|
461
|
+
value: options.input || '',
|
|
462
|
+
});
|
|
463
|
+
const selectedReview = await selectOption('¿Cómo querés revisar antes de escribir?', [
|
|
464
|
+
{
|
|
465
|
+
label: 'Crear despues de confirmar',
|
|
466
|
+
value: 'direct',
|
|
467
|
+
hint: 'Muestra resumen y pide aprobacion final',
|
|
468
|
+
default: options.review !== true,
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
label: 'Abrir preview de review',
|
|
472
|
+
value: 'review',
|
|
473
|
+
hint: 'Usa $VISUAL o $EDITOR antes de escribir',
|
|
474
|
+
default: options.review === true,
|
|
475
|
+
},
|
|
476
|
+
], {
|
|
477
|
+
...selectorOptions,
|
|
478
|
+
defaultValue: options.review === true ? 'review' : 'direct',
|
|
479
|
+
flag: '--review',
|
|
480
|
+
name: 'spec create review mode',
|
|
481
|
+
});
|
|
482
|
+
|
|
483
|
+
ux.summary([
|
|
484
|
+
{ label: 'Spec', value: preview.manifest.slug },
|
|
485
|
+
{ label: 'Metodologia', value: selectedMethodology.label },
|
|
486
|
+
{ label: 'Input', value: selectedInput.value },
|
|
487
|
+
{ label: 'Target', value: preview.relativeSpecDir },
|
|
488
|
+
{ label: 'Archivos planificados', value: preview.preview.files.length },
|
|
489
|
+
{ label: 'Revision', value: selectedReview.value === 'review' ? 'abrir preview' : 'confirmacion directa' },
|
|
490
|
+
], { title: 'Spec create' });
|
|
491
|
+
|
|
492
|
+
return {
|
|
493
|
+
...options,
|
|
494
|
+
input: selectedInput.value,
|
|
495
|
+
methodology: selectedMethodology.value,
|
|
496
|
+
review: selectedReview.value === 'review',
|
|
497
|
+
ux,
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
|
|
402
501
|
async function confirmSpecCreate(message, options = {}) {
|
|
403
502
|
if (options.interactive !== true) {
|
|
404
503
|
return;
|
|
@@ -444,9 +543,10 @@ async function reviewSpecCreatePreview(repoRoot, preview, options = {}) {
|
|
|
444
543
|
|
|
445
544
|
async function runCreateSpec(repoRoot, options = {}) {
|
|
446
545
|
const preview = buildSpecCreatePreview(repoRoot, options);
|
|
546
|
+
const resolvedOptions = await resolveInteractiveSpecCreateOptions(repoRoot, preview, options);
|
|
447
547
|
|
|
448
|
-
if (
|
|
449
|
-
process.stdout.write(formatSpecCreateDryRun({ ...preview, reviewRequested:
|
|
548
|
+
if (resolvedOptions.dryRun) {
|
|
549
|
+
process.stdout.write(formatSpecCreateDryRun({ ...preview, reviewRequested: resolvedOptions.review === true }));
|
|
450
550
|
return {
|
|
451
551
|
task: 'spec-create',
|
|
452
552
|
dryRun: true,
|
|
@@ -456,12 +556,12 @@ async function runCreateSpec(repoRoot, options = {}) {
|
|
|
456
556
|
};
|
|
457
557
|
}
|
|
458
558
|
|
|
459
|
-
const reviewPath = await reviewSpecCreatePreview(repoRoot, preview,
|
|
460
|
-
await confirmSpecCreate(`Create spec '${preview.manifest.slug}'?`,
|
|
559
|
+
const reviewPath = await reviewSpecCreatePreview(repoRoot, preview, resolvedOptions);
|
|
560
|
+
await confirmSpecCreate(`Create spec '${preview.manifest.slug}'?`, resolvedOptions);
|
|
461
561
|
|
|
462
562
|
const result = generateSpecArtifacts(repoRoot, {
|
|
463
|
-
input: preview.inputPath,
|
|
464
|
-
specSlug:
|
|
563
|
+
input: resolvedOptions.input || preview.inputPath,
|
|
564
|
+
specSlug: resolvedOptions.specSlug,
|
|
465
565
|
});
|
|
466
566
|
process.stdout.write(formatSpecCreateResult(result, repoRoot));
|
|
467
567
|
|