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 CHANGED
@@ -11,10 +11,10 @@ groundplan
11
11
  `groundplan doctor` validates the catalog it shipped with — run it first if generation ever
12
12
  behaves unexpectedly, since it reports which home directory was resolved.
13
13
 
14
- The templates and catalog live in [`@groundplan/core`](https://www.npmjs.com/package/@groundplan/core),
14
+ The templates and catalog live in [`@opengroundplan/core`](https://www.npmjs.com/package/@opengroundplan/core),
15
15
  which this package depends on; installing the CLI brings them with it.
16
16
 
17
17
  Full documentation, architecture notes, and the contributor guide are in the
18
- [repository](https://github.com/groundplan/groundplan#readme).
18
+ [repository](https://github.com/groundplan/opengroundplan#readme).
19
19
 
20
20
  MIT licensed.
package/dist/args.d.ts CHANGED
@@ -6,3 +6,5 @@ export interface Args {
6
6
  export declare function parseArgs(argv: string[]): Args;
7
7
  export declare function flagString(args: Args, name: string): string | undefined;
8
8
  export declare function flagBool(args: Args, name: string): boolean;
9
+ /** Comma-separated flag value → trimmed, non-empty items. `undefined` when the flag is absent. */
10
+ export declare function flagList(args: Args, name: string): string[] | undefined;
package/dist/args.js CHANGED
@@ -27,4 +27,11 @@ export function flagString(args, name) {
27
27
  export function flagBool(args, name) {
28
28
  return args.flags[name] === true || args.flags[name] === 'true';
29
29
  }
30
+ /** Comma-separated flag value → trimmed, non-empty items. `undefined` when the flag is absent. */
31
+ export function flagList(args, name) {
32
+ const value = flagString(args, name);
33
+ if (value === undefined)
34
+ return undefined;
35
+ return value.split(',').map((s) => s.trim()).filter(Boolean);
36
+ }
30
37
  //# sourceMappingURL=args.js.map
package/dist/args.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,IAAY;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,IAAY;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,IAAY;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,IAAY;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
+ /**
3
+ * `groundplan analyze <dir>` — inspect an existing repository and report its stack, present and
4
+ * missing capabilities, a quality scorecard, an improvement roadmap, and a CTO verdict — the same
5
+ * review a new project gets, run over code that already exists.
6
+ */
7
+ export declare function cmdAnalyze(argv: string[], _config: GroundplanConfig): Promise<void>;
@@ -0,0 +1,38 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import * as p from '@clack/prompts';
4
+ import pc from 'picocolors';
5
+ import { analyzeRepo, renderAnalysis } from '@opengroundplan/core';
6
+ import { flagBool, flagString, parseArgs } from '../args.js';
7
+ /**
8
+ * `groundplan analyze <dir>` — inspect an existing repository and report its stack, present and
9
+ * missing capabilities, a quality scorecard, an improvement roadmap, and a CTO verdict — the same
10
+ * review a new project gets, run over code that already exists.
11
+ */
12
+ export async function cmdAnalyze(argv, _config) {
13
+ const args = parseArgs(argv);
14
+ const asJson = flagBool(args, 'json');
15
+ const dir = path.resolve(args.positional[0] ?? '.');
16
+ if (!fs.existsSync(dir))
17
+ throw new Error(`No such directory: ${dir}`);
18
+ const analysis = analyzeRepo(dir);
19
+ const files = renderAnalysis(analysis);
20
+ if (asJson) {
21
+ console.log(files['analysis.json']);
22
+ return;
23
+ }
24
+ const outDir = path.resolve(flagString(args, 'out') ?? path.join(dir, 'groundplan-analysis'));
25
+ fs.mkdirSync(outDir, { recursive: true });
26
+ for (const [name, content] of Object.entries(files))
27
+ fs.writeFileSync(path.join(outDir, name), content, 'utf8');
28
+ p.intro(pc.bgCyan(pc.black(' groundplan analyze ')));
29
+ console.log(`\n${pc.bold(analysis.facts.stack)} repo ${pc.dim(`— ${analysis.overall}/100, ${analysis.facts.dependencies} deps`)}`);
30
+ if (analysis.facts.missing.length)
31
+ console.log(pc.yellow(`Missing baseline: ${analysis.facts.missing.join(', ')}`));
32
+ console.log(`${analysis.cto.verdict === 'needs-work' ? pc.red(analysis.cto.summary) : pc.dim(analysis.cto.summary)}`);
33
+ console.log(`\n${pc.dim('Wrote:')}`);
34
+ for (const name of Object.keys(files))
35
+ console.log(` ${pc.cyan(path.join(path.basename(outDir), name))}`);
36
+ p.outro(`${pc.green('✔')} analysis at ${pc.cyan(outDir)}`);
37
+ }
38
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
+ /**
3
+ * `groundplan blueprint "<idea>"` — an engineering blueprint from a sentence: understanding,
4
+ * requirements, architecture decisions, a roadmap, and a task backlog. Writes documents, not a
5
+ * repository; run `groundplan new` to scaffold once the plan is agreed.
6
+ */
7
+ export declare function cmdBlueprint(argv: string[], config: GroundplanConfig): Promise<void>;
@@ -0,0 +1,102 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import * as p from '@clack/prompts';
4
+ import pc from 'picocolors';
5
+ import { availableAgents, buildBlueprint, inferSelection, loadCatalog, loadMemories, recall, rememberProject, renderBlueprint, } from '@opengroundplan/core';
6
+ import { flagBool, flagList, flagString, parseArgs } from '../args.js';
7
+ /**
8
+ * `groundplan blueprint "<idea>"` — an engineering blueprint from a sentence: understanding,
9
+ * requirements, architecture decisions, a roadmap, and a task backlog. Writes documents, not a
10
+ * repository; run `groundplan new` to scaffold once the plan is agreed.
11
+ */
12
+ export async function cmdBlueprint(argv, config) {
13
+ const args = parseArgs(argv);
14
+ const asJson = flagBool(args, 'json');
15
+ const idea = readIdea(args);
16
+ if (!idea)
17
+ throw new Error('Describe the project: groundplan blueprint "<idea>" (or --brief <file>).');
18
+ const catalog = await loadCatalog(config);
19
+ if (catalog.blueprints.size === 0) {
20
+ throw new Error('No blueprints installed. Run `groundplan doctor` and check templates/.');
21
+ }
22
+ // The one shared inference pipeline — same reasoning `new` runs, no duplicated logic.
23
+ const { selection, gaps } = await inferSelection(idea, catalog, config, {
24
+ overrides: collectOverrides(args),
25
+ useModel: !flagBool(args, 'no-ai'),
26
+ });
27
+ const blueprint = buildBlueprint(idea, selection, catalog, gaps, availableAgents(catalog));
28
+ const files = renderBlueprint(blueprint);
29
+ if (asJson) {
30
+ console.log(JSON.stringify(blueprint, null, 2));
31
+ return;
32
+ }
33
+ const outDir = path.resolve(flagString(args, 'out') ?? `${slug(idea)}-blueprint`);
34
+ fs.mkdirSync(outDir, { recursive: true });
35
+ for (const [name, content] of Object.entries(files)) {
36
+ const dest = path.join(outDir, name);
37
+ fs.mkdirSync(path.dirname(dest), { recursive: true }); // some docs (adr/) live in subdirs
38
+ fs.writeFileSync(dest, content, 'utf8');
39
+ }
40
+ // Reusable knowledge (off unless GROUNDPLAN_KNOWLEDGE is set): surface prior art, then record this.
41
+ const signals = selection.intent.matched.map((m) => m.signal);
42
+ const priors = recall({ signals, family: selection.intent.family }, loadMemories(config.knowledgePath));
43
+ rememberProject(config.knowledgePath, {
44
+ idea,
45
+ stack: selection.stack,
46
+ architecture: selection.architecture,
47
+ layers: selection.layers,
48
+ family: selection.intent.family,
49
+ signals,
50
+ });
51
+ p.intro(pc.bgCyan(pc.black(' groundplan blueprint ')));
52
+ console.log(`\n${pc.bold(blueprint.architecture.name)} on ${pc.cyan(selection.stack)} ${pc.dim(`— ${Math.round(blueprint.confidence * 100)}% confidence`)}`);
53
+ for (const prior of priors) {
54
+ console.log(pc.dim(` prior art (${Math.round(prior.score * 100)}%): ${prior.memory.architecture ?? 'no overlay'} on ${prior.memory.stack} — "${prior.memory.idea.slice(0, 48)}"`));
55
+ }
56
+ console.log(`${pc.dim(`${blueprint.requirements.length} requirements · ${blueprint.decisions.length} decisions · ${blueprint.tasks.length} tasks`)}`);
57
+ if (blueprint.gaps.length)
58
+ console.log(pc.yellow(`${blueprint.gaps.length} capability gap(s) flagged in risks.md`));
59
+ console.log(`\n${pc.dim('Wrote:')}`);
60
+ for (const name of Object.keys(files))
61
+ console.log(` ${pc.cyan(path.join(path.basename(outDir), name))}`);
62
+ p.outro(`${pc.green('✔')} blueprint at ${pc.cyan(outDir)} — run ${pc.bold(`groundplan new "${idea.slice(0, 32)}${idea.length > 32 ? '…' : ''}"`)} to scaffold it`);
63
+ }
64
+ function collectOverrides(args) {
65
+ const overrides = {};
66
+ const stack = flagString(args, 'stack');
67
+ if (stack)
68
+ overrides.stack = stack;
69
+ const architecture = flagString(args, 'architecture');
70
+ if (architecture)
71
+ overrides.architecture = architecture;
72
+ const base = flagString(args, 'base');
73
+ if (base)
74
+ overrides.base = base;
75
+ const layers = flagList(args, 'layers');
76
+ if (layers)
77
+ overrides.layers = layers;
78
+ const adapters = flagList(args, 'adapters');
79
+ if (adapters)
80
+ overrides.adapters = adapters;
81
+ return overrides;
82
+ }
83
+ function readIdea(args) {
84
+ const file = flagString(args, 'brief');
85
+ if (file) {
86
+ if (!fs.existsSync(file))
87
+ throw new Error(`Cannot read "${file}" — file not found.`);
88
+ return fs.readFileSync(file, 'utf8').trim();
89
+ }
90
+ return args.positional.join(' ').trim();
91
+ }
92
+ function slug(text) {
93
+ return (text
94
+ .toLowerCase()
95
+ .replace(/[^a-z0-9]+/g, ' ')
96
+ .trim()
97
+ .split(/\s+/)
98
+ .filter((w) => !['a', 'an', 'the', 'build', 'create', 'for', 'with'].includes(w))
99
+ .slice(0, 3)
100
+ .join('-') || 'project');
101
+ }
102
+ //# sourceMappingURL=blueprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/commands/blueprint.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type GroundplanConfig } from '@groundplan/core';
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
2
  /**
3
3
  * Validates every YAML against the schema, every cross-reference, and the rules that keep
4
4
  * the multi-tool layer honest. Run this in CI — a dangling id or a duplicated instruction
@@ -1,8 +1,8 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import pc from 'picocolors';
4
- import { checkCapabilityCoverage, checkDelegationCompliance, checkGoverningRule, loadCatalog, } from '@groundplan/core';
5
- import { templatePaths } from '@groundplan/core';
4
+ import { checkCapabilityCoverage, checkDelegationCompliance, checkGoverningRule, loadCatalog, } from '@opengroundplan/core';
5
+ import { templatePaths } from '@opengroundplan/core';
6
6
  /**
7
7
  * A wrong GROUNDPLAN_HOME finds nothing, and "nothing" trivially satisfies every
8
8
  * consistency check. Reporting that as healthy is the one failure mode a validator must
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
+ /**
3
+ * `groundplan improve <dir>` — analyze a repo and propose the smallest set of justified changes
4
+ * that raise its quality, with a before/after score. It never edits code; it produces the plan
5
+ * and delegates the change to `groundplan new` or an agent.
6
+ */
7
+ export declare function cmdImprove(argv: string[], _config: GroundplanConfig): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import * as p from '@clack/prompts';
4
+ import pc from 'picocolors';
5
+ import { planImprovements, renderImprovement } from '@opengroundplan/core';
6
+ import { flagBool, flagString, parseArgs } from '../args.js';
7
+ /**
8
+ * `groundplan improve <dir>` — analyze a repo and propose the smallest set of justified changes
9
+ * that raise its quality, with a before/after score. It never edits code; it produces the plan
10
+ * and delegates the change to `groundplan new` or an agent.
11
+ */
12
+ export async function cmdImprove(argv, _config) {
13
+ const args = parseArgs(argv);
14
+ const asJson = flagBool(args, 'json');
15
+ const dir = path.resolve(args.positional[0] ?? '.');
16
+ if (!fs.existsSync(dir))
17
+ throw new Error(`No such directory: ${dir}`);
18
+ const improvement = planImprovements(dir);
19
+ const files = renderImprovement(improvement);
20
+ if (asJson) {
21
+ console.log(files['improve.json']);
22
+ return;
23
+ }
24
+ const outDir = path.resolve(flagString(args, 'out') ?? path.join(dir, 'groundplan-analysis'));
25
+ fs.mkdirSync(outDir, { recursive: true });
26
+ for (const [name, content] of Object.entries(files))
27
+ fs.writeFileSync(path.join(outDir, name), content, 'utf8');
28
+ const delta = improvement.afterOverall - improvement.before.overall;
29
+ p.intro(pc.bgCyan(pc.black(' groundplan improve ')));
30
+ console.log(`\n${pc.bold(`${improvement.before.overall} → ${improvement.afterOverall}/100`)} ${pc.dim(`(${delta >= 0 ? '+' : ''}${delta})`)} · ${improvement.changes.length} change(s)`);
31
+ for (const c of improvement.changes)
32
+ console.log(` ${pc.green('+')} ${c.layer} ${pc.dim(`— ${c.why}`)}`);
33
+ p.outro(`${pc.green('✔')} plan at ${pc.cyan(path.join(outDir, 'improve-report.md'))}`);
34
+ }
35
+ //# sourceMappingURL=improve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve.js","sourceRoot":"","sources":["../../src/commands/improve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc,EAAE,OAAyB;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC9F,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEhH,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IACpE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IACzL,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -1,2 +1,2 @@
1
- import { type GroundplanConfig } from '@groundplan/core';
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
2
  export declare function cmdList(argv: string[], config: GroundplanConfig): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import pc from 'picocolors';
2
- import { loadCatalog } from '@groundplan/core';
2
+ import { loadCatalog } from '@opengroundplan/core';
3
3
  import { parseArgs } from '../args.js';
4
4
  const KINDS = ['architectures', 'blueprints', 'adapters', 'registry'];
5
5
  export async function cmdList(argv, config) {
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,7 @@
1
- import { type GroundplanConfig } from '@groundplan/core';
1
+ import { type GroundplanConfig } from '@opengroundplan/core';
2
+ /**
3
+ * `groundplan new` — describe a project, get a repository. The brief drives everything; the
4
+ * interview only appears for a fork the description genuinely left open. `--yes` and
5
+ * `--non-interactive` suppress even those, taking the inferred default for each.
6
+ */
2
7
  export declare function cmdNew(argv: string[], config: GroundplanConfig): Promise<void>;