groundplan 0.1.0 → 0.2.0
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/README.md +2 -2
- package/dist/args.d.ts +2 -0
- package/dist/args.js +7 -0
- package/dist/args.js.map +1 -1
- package/dist/commands/analyze.d.ts +7 -0
- package/dist/commands/analyze.js +38 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/blueprint.d.ts +7 -0
- package/dist/commands/blueprint.js +102 -0
- package/dist/commands/blueprint.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/improve.d.ts +7 -0
- package/dist/commands/improve.js +35 -0
- package/dist/commands/improve.js.map +1 -0
- package/dist/commands/list.d.ts +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new.d.ts +6 -1
- package/dist/commands/new.js +313 -188
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/recommend.d.ts +5 -8
- package/dist/commands/recommend.js +30 -76
- package/dist/commands/recommend.js.map +1 -1
- package/dist/commands/sync-agents.d.ts +1 -1
- package/dist/commands/sync-agents.js +1 -1
- package/dist/commands/sync-agents.js.map +1 -1
- package/dist/index.js +29 -7
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/commands/new.js
CHANGED
|
@@ -1,49 +1,55 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import * as p from '@clack/prompts';
|
|
3
4
|
import pc from 'picocolors';
|
|
4
|
-
import { apply,
|
|
5
|
-
import { flagBool, flagString, parseArgs } from '../args.js';
|
|
6
|
-
|
|
5
|
+
import { apply, autoSelect, buildPlan, commandVars, delegationToolsJson, engineGlobals, hasRequiredFailure, inferSelection, loadCatalog, renderAdapterFiles, resolve, resolveVariableDefaults, runChecks, verificationPlan, writeAdapterFiles, } from '@opengroundplan/core';
|
|
6
|
+
import { flagBool, flagList, flagString, parseArgs } from '../args.js';
|
|
7
|
+
/**
|
|
8
|
+
* `groundplan new` — describe a project, get a repository. The brief drives everything; the
|
|
9
|
+
* interview only appears for a fork the description genuinely left open. `--yes` and
|
|
10
|
+
* `--non-interactive` suppress even those, taking the inferred default for each.
|
|
11
|
+
*/
|
|
7
12
|
export async function cmdNew(argv, config) {
|
|
8
13
|
const args = parseArgs(argv);
|
|
14
|
+
const asJson = flagBool(args, 'json');
|
|
15
|
+
const yes = flagBool(args, 'yes');
|
|
9
16
|
const dryRun = flagBool(args, 'dry-run');
|
|
10
|
-
|
|
17
|
+
const nonInteractive = asJson || yes || flagBool(args, 'non-interactive');
|
|
18
|
+
if (!asJson)
|
|
19
|
+
p.intro(pc.bgCyan(pc.black(' groundplan new ')));
|
|
11
20
|
const catalog = await loadCatalog(config);
|
|
12
21
|
if (catalog.blueprints.size === 0) {
|
|
13
22
|
throw new Error('No blueprints installed. Run `groundplan doctor` and check templates/.');
|
|
14
23
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
let description = readBrief(args);
|
|
25
|
+
if (!description && !nonInteractive)
|
|
26
|
+
description = await askBrief();
|
|
27
|
+
if (!description) {
|
|
28
|
+
throw new Error('Nothing to build from. Give a description, or --brief <file> / --from-readme / --from-spec.');
|
|
29
|
+
}
|
|
30
|
+
// The one shared inference pipeline — the model (when configured) proposes catalog-constrained
|
|
31
|
+
// overrides, explicit flags win, and the deterministic planner fills the rest.
|
|
32
|
+
const inferred = await inferSelection(description, catalog, config, {
|
|
33
|
+
overrides: collectOverrides(args),
|
|
34
|
+
useModel: !flagBool(args, 'no-ai'),
|
|
24
35
|
});
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}),
|
|
43
|
-
...commandVars(selected.order, answers.stack, config),
|
|
44
|
-
...(await askBlueprintVariables(selected.order, { base, stack: answers.stack, architecture })),
|
|
45
|
-
};
|
|
46
|
-
const plan = await buildPlan({ solution: solutionName, target, blueprints: selected.order, adapters, architecture, vars }, config);
|
|
36
|
+
const gaps = inferred.gaps;
|
|
37
|
+
let selection = inferred.selection;
|
|
38
|
+
if (inferred.viaModel)
|
|
39
|
+
selection.assumptions.unshift(`Understood by ${config.ai.inferModel}`);
|
|
40
|
+
if (!nonInteractive)
|
|
41
|
+
selection = await refine(description, catalog, config, selection, inferred.baseOverrides);
|
|
42
|
+
const name = await resolveName(args, description, nonInteractive);
|
|
43
|
+
const target = path.resolve(flagString(args, 'target') ?? name);
|
|
44
|
+
const plan = await planFromSelection(selection, name, target, catalog, config);
|
|
45
|
+
if (asJson) {
|
|
46
|
+
console.log(JSON.stringify(toJson(selection, plan, name, target, gaps), null, 2));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
printSelection(selection);
|
|
50
|
+
if (gaps.length) {
|
|
51
|
+
p.log.warn(`Not in the catalog yet — you'll need to add these yourself:\n ${gaps.join('\n ')}`);
|
|
52
|
+
}
|
|
47
53
|
printPlan(plan);
|
|
48
54
|
for (const warning of plan.warnings)
|
|
49
55
|
p.log.warn(warning);
|
|
@@ -51,21 +57,222 @@ export async function cmdNew(argv, config) {
|
|
|
51
57
|
p.outro(pc.dim('Dry run — nothing written.'));
|
|
52
58
|
return;
|
|
53
59
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
p.
|
|
57
|
-
|
|
60
|
+
if (!yes) {
|
|
61
|
+
const approved = await p.confirm({ message: `Write ${plan.files.length} files to ${target}?` });
|
|
62
|
+
if (p.isCancel(approved) || !approved) {
|
|
63
|
+
p.cancel('Nothing written.');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
58
66
|
}
|
|
67
|
+
await generate(selection, plan, name, target, catalog, config, flagBool(args, 'verify'));
|
|
68
|
+
}
|
|
69
|
+
/* ── input ─────────────────────────────────────────────────────────────────── */
|
|
70
|
+
/** Resolve the brief from flags or the positional argument; empty string when there is none. */
|
|
71
|
+
function readBrief(args) {
|
|
72
|
+
const file = flagString(args, 'brief');
|
|
73
|
+
if (file)
|
|
74
|
+
return readFileBrief(file);
|
|
75
|
+
if (flagBool(args, 'from-readme'))
|
|
76
|
+
return readFileBrief('README.md');
|
|
77
|
+
if (flagBool(args, 'from-spec'))
|
|
78
|
+
return readFileBrief(findSpec());
|
|
79
|
+
const positional = args.positional[0];
|
|
80
|
+
if (!positional)
|
|
81
|
+
return '';
|
|
82
|
+
if (isFileArg(positional))
|
|
83
|
+
return readFileBrief(positional);
|
|
84
|
+
if (/\s/.test(positional.trim()))
|
|
85
|
+
return positional.trim(); // a sentence, not a name
|
|
86
|
+
return '';
|
|
87
|
+
}
|
|
88
|
+
function isFileArg(arg) {
|
|
89
|
+
return /\.(md|txt|markdown)$/i.test(arg) || fileExists(arg);
|
|
90
|
+
}
|
|
91
|
+
function readFileBrief(file) {
|
|
92
|
+
if (!file)
|
|
93
|
+
throw new Error('No spec file found. Looked for ./spec.md and specs/*/spec.md.');
|
|
94
|
+
if (!fileExists(file))
|
|
95
|
+
throw new Error(`Cannot read "${file}" — file not found.`);
|
|
96
|
+
return fs.readFileSync(file, 'utf8').trim();
|
|
97
|
+
}
|
|
98
|
+
function findSpec() {
|
|
99
|
+
if (fileExists('spec.md'))
|
|
100
|
+
return 'spec.md';
|
|
101
|
+
const dirs = fileExists('specs') ? fs.readdirSync('specs', { withFileTypes: true }) : [];
|
|
102
|
+
for (const dir of dirs.filter((d) => d.isDirectory()).sort().reverse()) {
|
|
103
|
+
const candidate = path.join('specs', dir.name, 'spec.md');
|
|
104
|
+
if (fileExists(candidate))
|
|
105
|
+
return candidate;
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
function fileExists(file) {
|
|
110
|
+
try {
|
|
111
|
+
fs.accessSync(file);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function collectOverrides(args) {
|
|
119
|
+
const overrides = {};
|
|
120
|
+
const stack = flagString(args, 'stack');
|
|
121
|
+
if (stack)
|
|
122
|
+
overrides.stack = stack;
|
|
123
|
+
const architecture = flagString(args, 'architecture');
|
|
124
|
+
if (architecture)
|
|
125
|
+
overrides.architecture = architecture;
|
|
126
|
+
const base = flagString(args, 'base');
|
|
127
|
+
if (base)
|
|
128
|
+
overrides.base = base;
|
|
129
|
+
const layers = flagList(args, 'layers');
|
|
130
|
+
if (layers)
|
|
131
|
+
overrides.layers = layers;
|
|
132
|
+
const adapters = flagList(args, 'adapters');
|
|
133
|
+
if (adapters)
|
|
134
|
+
overrides.adapters = adapters;
|
|
135
|
+
return overrides;
|
|
136
|
+
}
|
|
137
|
+
/* ── interactive refinement — only the questions the brief left open ─────────── */
|
|
138
|
+
const REFINABLE = new Set(['stack', 'priorities', 'architecture', 'base']);
|
|
139
|
+
const PRIORITY_CHOICES = [
|
|
140
|
+
{ value: 'simplicity', label: 'Simplicity', hint: 'ship fast, few moving parts' },
|
|
141
|
+
{ value: 'scalability', label: 'Scalability', hint: 'grow with load' },
|
|
142
|
+
{ value: 'deployability', label: 'Deployability', hint: 'deploy often, independently' },
|
|
143
|
+
{ value: 'testability', label: 'Testability', hint: 'fast, isolated tests' },
|
|
144
|
+
{ value: 'evolvability', label: 'Evolvability', hint: 'change direction cheaply' },
|
|
145
|
+
{ value: 'fault-tolerance', label: 'Fault tolerance', hint: 'survive partial failure' },
|
|
146
|
+
{ value: 'maintainability', label: 'Maintainability', hint: 'easy to change safely' },
|
|
147
|
+
{ value: 'responsiveness', label: 'Responsiveness', hint: 'low latency to the user' },
|
|
148
|
+
{ value: 'cost', label: 'Low cost', hint: 'minimize infrastructure spend' },
|
|
149
|
+
];
|
|
150
|
+
async function refine(description, catalog, config, selection, baseOverrides) {
|
|
151
|
+
const overrides = { ...baseOverrides };
|
|
152
|
+
const handled = new Set();
|
|
153
|
+
for (;;) {
|
|
154
|
+
const question = selection.questions.find((q) => REFINABLE.has(q.field) && !handled.has(q.field));
|
|
155
|
+
if (!question)
|
|
156
|
+
break;
|
|
157
|
+
handled.add(question.field);
|
|
158
|
+
if (question.field === 'priorities') {
|
|
159
|
+
overrides.priorities = await askPriorities();
|
|
160
|
+
}
|
|
161
|
+
else if (question.field === 'stack') {
|
|
162
|
+
overrides.stack = (await askSelect('Primary stack', question.options, question.chosen));
|
|
163
|
+
}
|
|
164
|
+
else if (question.field === 'architecture') {
|
|
165
|
+
overrides.architecture = await askSelect('Architecture', question.options, question.chosen);
|
|
166
|
+
}
|
|
167
|
+
else if (question.field === 'base') {
|
|
168
|
+
overrides.base = await askSelect('Base template', question.options, question.chosen);
|
|
169
|
+
}
|
|
170
|
+
selection = autoSelect(description, catalog, { defaultAdapters: config.defaultAdapters, overrides });
|
|
171
|
+
}
|
|
172
|
+
return selection;
|
|
173
|
+
}
|
|
174
|
+
async function askSelect(message, options, initial) {
|
|
175
|
+
const value = await p.select({
|
|
176
|
+
message,
|
|
177
|
+
initialValue: initial,
|
|
178
|
+
options: options.map((o) => ({ value: o.id, label: o.label, hint: o.hint })),
|
|
179
|
+
});
|
|
180
|
+
assertNotCancelled(value);
|
|
181
|
+
return value;
|
|
182
|
+
}
|
|
183
|
+
async function askPriorities() {
|
|
184
|
+
const chosen = (await p.multiselect({
|
|
185
|
+
message: 'What matters most? (pick 2-4)',
|
|
186
|
+
options: PRIORITY_CHOICES,
|
|
187
|
+
required: true,
|
|
188
|
+
}));
|
|
189
|
+
assertNotCancelled(chosen);
|
|
190
|
+
const priorities = {};
|
|
191
|
+
chosen.forEach((c, i) => (priorities[c] = Math.max(5 - i, 2)));
|
|
192
|
+
return priorities;
|
|
193
|
+
}
|
|
194
|
+
async function askBrief() {
|
|
195
|
+
const value = await p.text({
|
|
196
|
+
message: 'Describe your project in a sentence or two',
|
|
197
|
+
placeholder: 'An AI tutoring platform with realtime voice and screen monitoring',
|
|
198
|
+
validate: (v) => (v.trim().length > 0 ? undefined : 'Say a little about what you are building'),
|
|
199
|
+
});
|
|
200
|
+
assertNotCancelled(value);
|
|
201
|
+
return value.trim();
|
|
202
|
+
}
|
|
203
|
+
async function resolveName(args, description, nonInteractive) {
|
|
204
|
+
const explicit = flagString(args, 'name') ?? bareNameArg(args) ?? targetName(args);
|
|
205
|
+
if (explicit)
|
|
206
|
+
return explicit;
|
|
207
|
+
const derived = slugify(description) || 'app';
|
|
208
|
+
if (nonInteractive)
|
|
209
|
+
return derived;
|
|
210
|
+
const value = await p.text({ message: 'Project name', defaultValue: derived, placeholder: derived });
|
|
211
|
+
assertNotCancelled(value);
|
|
212
|
+
return value.trim() || derived;
|
|
213
|
+
}
|
|
214
|
+
/** A bare positional token (`groundplan new acme-billing`) is a name, not a brief. */
|
|
215
|
+
function bareNameArg(args) {
|
|
216
|
+
const positional = args.positional[0];
|
|
217
|
+
if (positional && !isFileArg(positional) && !/\s/.test(positional.trim()))
|
|
218
|
+
return positional.trim();
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
function targetName(args) {
|
|
222
|
+
const target = flagString(args, 'target');
|
|
223
|
+
return target ? path.basename(target) : undefined;
|
|
224
|
+
}
|
|
225
|
+
const NAME_FILLERS = new Set(['build', 'create', 'make', 'a', 'an', 'the', 'my', 'some', 'app', 'for']);
|
|
226
|
+
/** A repo name from the first few meaningful words — "Build an AI tutoring…" → "ai-tutoring". */
|
|
227
|
+
function slugify(text) {
|
|
228
|
+
const words = text
|
|
229
|
+
.toLowerCase()
|
|
230
|
+
.replace(/[^a-z0-9]+/g, ' ')
|
|
231
|
+
.trim()
|
|
232
|
+
.split(/\s+/)
|
|
233
|
+
.filter((w) => w && !NAME_FILLERS.has(w));
|
|
234
|
+
return words.slice(0, 3).join('-');
|
|
235
|
+
}
|
|
236
|
+
/* ── plan assembly ───────────────────────────────────────────────────────────── */
|
|
237
|
+
async function planFromSelection(selection, name, target, catalog, config) {
|
|
238
|
+
const selected = resolve({ base: selection.base, architecture: selection.architecture, layers: selection.layers }, catalog.blueprints);
|
|
239
|
+
const adapterEntries = selection.adapters
|
|
240
|
+
.map((id) => catalog.adapters.get(id))
|
|
241
|
+
.filter((a) => a !== undefined);
|
|
242
|
+
const globals = engineGlobals({
|
|
243
|
+
solutionName: name,
|
|
244
|
+
base: selection.base,
|
|
245
|
+
stack: selection.stack,
|
|
246
|
+
teamSize: selection.teamSize,
|
|
247
|
+
architecture: selection.architecture,
|
|
248
|
+
adapters: selection.adapters,
|
|
249
|
+
today: new Date().toISOString().slice(0, 10),
|
|
250
|
+
delegationTools: delegationToolsJson(adapterEntries),
|
|
251
|
+
});
|
|
252
|
+
const cmds = commandVars(selected.order, selection.stack, config);
|
|
253
|
+
const context = { base: selection.base, stack: selection.stack, architecture: selection.architecture };
|
|
254
|
+
const { vars: filled } = resolveVariableDefaults(selected.order, { ...context, ...globals, ...cmds });
|
|
255
|
+
return buildPlan({
|
|
256
|
+
solution: name,
|
|
257
|
+
target,
|
|
258
|
+
blueprints: selected.order,
|
|
259
|
+
adapters: selection.adapters,
|
|
260
|
+
architecture: selection.architecture,
|
|
261
|
+
vars: { ...globals, ...cmds, ...filled },
|
|
262
|
+
}, config);
|
|
263
|
+
}
|
|
264
|
+
async function generate(selection, plan, name, target, catalog, config, verify) {
|
|
59
265
|
const spinner = p.spinner();
|
|
60
266
|
spinner.start('Generating');
|
|
61
267
|
const result = await apply(plan, config, { onProgress: (m) => spinner.message(m) });
|
|
62
268
|
spinner.stop(`Wrote ${result.written.length} files`);
|
|
63
|
-
|
|
64
|
-
|
|
269
|
+
const adapterEntries = selection.adapters
|
|
270
|
+
.map((id) => catalog.adapters.get(id))
|
|
271
|
+
.filter((a) => a !== undefined);
|
|
65
272
|
const emitted = await renderAdapterFiles({
|
|
66
|
-
adapters:
|
|
273
|
+
adapters: adapterEntries,
|
|
67
274
|
registry: [...catalog.registry.values()],
|
|
68
|
-
vars,
|
|
275
|
+
vars: plan.variables,
|
|
69
276
|
config,
|
|
70
277
|
});
|
|
71
278
|
await writeAdapterFiles(target, emitted.files);
|
|
@@ -89,154 +296,42 @@ export async function cmdNew(argv, config) {
|
|
|
89
296
|
process.exitCode = 1;
|
|
90
297
|
return;
|
|
91
298
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
validate: (v) => (v.trim().length > 0 ? undefined : 'Required'),
|
|
99
|
-
});
|
|
100
|
-
assertNotCancelled(value);
|
|
101
|
-
return value.trim();
|
|
102
|
-
}
|
|
103
|
-
async function pickArchitecture(ranked) {
|
|
104
|
-
if (ranked.length === 0)
|
|
105
|
-
return undefined;
|
|
106
|
-
const value = await p.select({
|
|
107
|
-
message: 'Architecture',
|
|
108
|
-
options: ranked.slice(0, 6).map((r, i) => ({
|
|
109
|
-
value: r.architecture.id,
|
|
110
|
-
label: `${r.architecture.name}${i === 0 ? pc.green(' ← recommended') : ''}`,
|
|
111
|
-
hint: `${Math.round(r.fit * 100)}% fit — ${r.architecture.keyTradeoff}`,
|
|
112
|
-
})),
|
|
113
|
-
});
|
|
114
|
-
assertNotCancelled(value);
|
|
115
|
-
return value;
|
|
116
|
-
}
|
|
117
|
-
async function pickBase(catalog, stack, architecture) {
|
|
118
|
-
const bases = [...catalog.blueprints.values()].filter((b) => b.kind === 'base' &&
|
|
119
|
-
b.stack === stack &&
|
|
120
|
-
(!architecture || b.supportsArchitectures.length === 0 || b.supportsArchitectures.includes(architecture)));
|
|
121
|
-
if (bases.length === 0) {
|
|
122
|
-
// Two very different causes; saying "no base for this stack" when eight exist sends the
|
|
123
|
-
// reader looking in the wrong place.
|
|
124
|
-
const forStack = [...catalog.blueprints.values()].filter((b) => b.kind === 'base' && b.stack === stack);
|
|
125
|
-
throw new Error(forStack.length === 0
|
|
126
|
-
? `No base template for stack "${stack}" yet.`
|
|
127
|
-
: `No ${stack} base supports the "${architecture}" architecture. ` +
|
|
128
|
-
`Bases for this stack: ${forStack.map((b) => b.id).join(', ')}. ` +
|
|
129
|
-
`A base opts in through supportsArchitectures in its blueprint.yaml.`);
|
|
130
|
-
}
|
|
131
|
-
if (bases.length === 1)
|
|
132
|
-
return bases[0].id;
|
|
133
|
-
const value = await p.select({
|
|
134
|
-
message: 'Base template',
|
|
135
|
-
options: bases.map((b) => ({ value: b.id, label: b.name, hint: b.description })),
|
|
136
|
-
});
|
|
137
|
-
assertNotCancelled(value);
|
|
138
|
-
return value;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Choice sets are asked first as pick-one (database, ORM, auth provider…), then everything
|
|
142
|
-
* else as checkboxes. Presenting exclusive alternatives as checkboxes invites a selection
|
|
143
|
-
* the resolver will only reject afterwards.
|
|
144
|
-
*/
|
|
145
|
-
async function pickLayers(catalog, base) {
|
|
146
|
-
const baseStack = catalog.blueprints.get(base)?.stack;
|
|
147
|
-
const layers = [...catalog.blueprints.values()].filter((b) => b.kind === 'layer' && (!b.stack || b.stack === baseStack));
|
|
148
|
-
if (layers.length === 0)
|
|
149
|
-
return [];
|
|
150
|
-
const selected = [];
|
|
151
|
-
const sets = choiceSets(layers);
|
|
152
|
-
for (const [setName, options] of [...sets.entries()].sort()) {
|
|
153
|
-
const preselected = options.find((o) => o.choiceDefault);
|
|
154
|
-
const value = await p.select({
|
|
155
|
-
message: `${setName.replace(/-/g, ' ')}`,
|
|
156
|
-
initialValue: preselected?.id,
|
|
157
|
-
options: [
|
|
158
|
-
...options.map((o) => ({ value: o.id, label: o.name, hint: o.description })),
|
|
159
|
-
{ value: '', label: 'None', hint: 'skip this' },
|
|
160
|
-
],
|
|
161
|
-
});
|
|
162
|
-
assertNotCancelled(value);
|
|
163
|
-
if (value)
|
|
164
|
-
selected.push(value);
|
|
165
|
-
}
|
|
166
|
-
const rest = layers.filter((l) => !l.choiceSet);
|
|
167
|
-
if (rest.length === 0)
|
|
168
|
-
return selected;
|
|
169
|
-
const extras = await p.multiselect({
|
|
170
|
-
message: 'Capabilities',
|
|
171
|
-
options: rest.map((l) => ({ value: l.id, label: l.name, hint: l.description })),
|
|
172
|
-
required: false,
|
|
173
|
-
});
|
|
174
|
-
assertNotCancelled(extras);
|
|
175
|
-
return [...selected, ...extras];
|
|
176
|
-
}
|
|
177
|
-
async function pickAdapters(catalog, config) {
|
|
178
|
-
const available = [...catalog.adapters.values()];
|
|
179
|
-
if (available.length === 0)
|
|
180
|
-
return [];
|
|
181
|
-
const value = await p.multiselect({
|
|
182
|
-
message: 'Which AI coding tools will touch this repo?',
|
|
183
|
-
options: available.map((a) => ({
|
|
184
|
-
value: a.id,
|
|
185
|
-
label: a.name,
|
|
186
|
-
hint: a.readsAgentsMd ? 'reads AGENTS.md natively' : 'needs a wrapper file',
|
|
187
|
-
})),
|
|
188
|
-
initialValues: config.defaultAdapters.filter((id) => catalog.adapters.has(id)),
|
|
189
|
-
required: false,
|
|
190
|
-
});
|
|
191
|
-
assertNotCancelled(value);
|
|
192
|
-
return value;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Only asks questions the selected blueprints actually declared, and only those whose `when`
|
|
196
|
-
* holds. Skipping the condition asked a .NET user which Python package manager to use, and —
|
|
197
|
-
* worse — recorded an answer the templates then rendered as fact.
|
|
198
|
-
*
|
|
199
|
-
* A skipped variable still takes its declared default, because a template may reference it
|
|
200
|
-
* even on a stack that was never asked: the docker layer's compose file names a Dockerfile
|
|
201
|
-
* whose suffix only one stack chooses.
|
|
202
|
-
*/
|
|
203
|
-
async function askBlueprintVariables(blueprints, context) {
|
|
204
|
-
const answers = {};
|
|
205
|
-
const asked = new Set();
|
|
206
|
-
const skipped = [];
|
|
207
|
-
for (const blueprint of blueprints) {
|
|
208
|
-
for (const variable of blueprint.variables) {
|
|
209
|
-
if (asked.has(variable.name))
|
|
210
|
-
continue;
|
|
211
|
-
asked.add(variable.name);
|
|
212
|
-
if (!testCondition(variable.when, { ...context, ...answers })) {
|
|
213
|
-
skipped.push(variable);
|
|
214
|
-
asked.delete(variable.name);
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
const value = variable.type === 'boolean'
|
|
218
|
-
? await p.confirm({ message: variable.prompt, initialValue: Boolean(variable.default) })
|
|
219
|
-
: variable.type === 'select'
|
|
220
|
-
? await p.select({
|
|
221
|
-
message: variable.prompt,
|
|
222
|
-
options: (variable.choices ?? []).map((c) => ({ value: c.value, label: c.label })),
|
|
223
|
-
})
|
|
224
|
-
: await p.text({
|
|
225
|
-
message: variable.prompt,
|
|
226
|
-
defaultValue: variable.default === undefined ? '' : String(variable.default),
|
|
227
|
-
});
|
|
228
|
-
assertNotCancelled(value);
|
|
229
|
-
answers[variable.name] = value;
|
|
299
|
+
if (verify) {
|
|
300
|
+
const failed = await runVerification(selection.stack, target, config);
|
|
301
|
+
if (failed) {
|
|
302
|
+
p.outro(pc.red(`${name} generated, but a check failed. See ${pc.cyan(target)}.`));
|
|
303
|
+
process.exitCode = 1;
|
|
304
|
+
return;
|
|
230
305
|
}
|
|
231
306
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
307
|
+
p.outro(`${pc.green('✔')} ${name} ready at ${pc.cyan(target)}`);
|
|
308
|
+
}
|
|
309
|
+
/** Run the stack's own checks against the generated repo; returns true if any failed. */
|
|
310
|
+
async function runVerification(stack, target, config) {
|
|
311
|
+
const checks = verificationPlan(stack, config);
|
|
312
|
+
if (checks.length === 0)
|
|
313
|
+
return false;
|
|
314
|
+
const spinner = p.spinner();
|
|
315
|
+
spinner.start('Verifying');
|
|
316
|
+
const results = await runChecks(target, checks, config, { onProgress: (n) => spinner.message(`Verifying — ${n}`) });
|
|
317
|
+
spinner.stop('Verification');
|
|
318
|
+
let anyFailed = false;
|
|
319
|
+
for (const r of results) {
|
|
320
|
+
if (r.ok)
|
|
321
|
+
p.log.success(`${r.name}: ${r.command}`);
|
|
322
|
+
else {
|
|
323
|
+
anyFailed = true;
|
|
324
|
+
p.log.error(`${r.name} failed: ${r.command}\n${pc.dim(r.output.slice(-800))}`);
|
|
237
325
|
}
|
|
238
326
|
}
|
|
239
|
-
return
|
|
327
|
+
return anyFailed;
|
|
328
|
+
}
|
|
329
|
+
/* ── output ─────────────────────────────────────────────────────────────────── */
|
|
330
|
+
function printSelection(selection) {
|
|
331
|
+
const pct = Math.round(selection.confidence * 100);
|
|
332
|
+
console.log(`\n${pc.bold('Understood')} ${pc.dim(`— ${pct}% confidence`)}`);
|
|
333
|
+
for (const note of selection.assumptions)
|
|
334
|
+
console.log(` ${pc.green('·')} ${pc.dim(note)}`);
|
|
240
335
|
}
|
|
241
336
|
function printPlan(plan) {
|
|
242
337
|
const byBlueprint = new Map();
|
|
@@ -247,8 +342,9 @@ function printPlan(plan) {
|
|
|
247
342
|
for (const [blueprint, count] of byBlueprint) {
|
|
248
343
|
console.log(` ${pc.cyan(blueprint.padEnd(24))} ${pc.dim(`${count} files`)}`);
|
|
249
344
|
}
|
|
250
|
-
if (plan.adapters.length)
|
|
345
|
+
if (plan.adapters.length) {
|
|
251
346
|
console.log(` ${pc.cyan('ai-tools'.padEnd(24))} ${pc.dim(plan.adapters.join(', '))}`);
|
|
347
|
+
}
|
|
252
348
|
if (plan.postApply.length) {
|
|
253
349
|
console.log(`\n${pc.dim('After writing:')}`);
|
|
254
350
|
for (const step of plan.postApply) {
|
|
@@ -257,6 +353,35 @@ function printPlan(plan) {
|
|
|
257
353
|
}
|
|
258
354
|
console.log();
|
|
259
355
|
}
|
|
356
|
+
function toJson(selection, plan, name, target, gaps) {
|
|
357
|
+
return {
|
|
358
|
+
name,
|
|
359
|
+
target,
|
|
360
|
+
confidence: selection.confidence,
|
|
361
|
+
gaps,
|
|
362
|
+
stack: selection.stack,
|
|
363
|
+
architecture: selection.architecture,
|
|
364
|
+
base: selection.base,
|
|
365
|
+
layers: selection.layers,
|
|
366
|
+
adapters: selection.adapters,
|
|
367
|
+
intent: {
|
|
368
|
+
matched: selection.intent.matched,
|
|
369
|
+
priorities: selection.intent.priorities,
|
|
370
|
+
teamSize: selection.teamSize,
|
|
371
|
+
},
|
|
372
|
+
ranked: selection.ranked.slice(0, 5).map((r) => ({
|
|
373
|
+
id: r.architecture.id,
|
|
374
|
+
name: r.architecture.name,
|
|
375
|
+
fit: Math.round(r.fit * 100) / 100,
|
|
376
|
+
reasons: r.reasons,
|
|
377
|
+
concerns: r.concerns,
|
|
378
|
+
})),
|
|
379
|
+
assumptions: selection.assumptions,
|
|
380
|
+
questions: selection.questions,
|
|
381
|
+
files: plan.files.map((f) => ({ path: f.path, from: f.fromBlueprint })),
|
|
382
|
+
postApply: plan.postApply,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
260
385
|
function assertNotCancelled(value) {
|
|
261
386
|
if (p.isCancel(value)) {
|
|
262
387
|
p.cancel('Cancelled.');
|
package/dist/commands/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
family?: 'application' | 'system' | 'frontend' | 'data' | 'ai';
|
|
7
|
-
}
|
|
8
|
-
export declare function askAnswers(): Promise<Answers>;
|
|
1
|
+
import { type GroundplanConfig } from '@opengroundplan/core';
|
|
2
|
+
/**
|
|
3
|
+
* `groundplan recommend "<brief>"` — rank architectures against a described project, and say
|
|
4
|
+
* why the top one won and why the runners-up did not. No scaffolding, no interview.
|
|
5
|
+
*/
|
|
9
6
|
export declare function cmdRecommend(argv: string[], config: GroundplanConfig): Promise<void>;
|