@chiralkit/cli 0.1.0-alpha.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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/add.d.ts +4 -0
- package/dist/add.js +118 -0
- package/dist/add.js.map +1 -0
- package/dist/agents/subprocess.d.ts +10 -0
- package/dist/agents/subprocess.js +43 -0
- package/dist/agents/subprocess.js.map +1 -0
- package/dist/automation/index.d.ts +14 -0
- package/dist/automation/index.js +129 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/install.d.ts +19 -0
- package/dist/automation/install.js +116 -0
- package/dist/automation/install.js.map +1 -0
- package/dist/automation/parsers/audit-report.d.ts +2 -0
- package/dist/automation/parsers/audit-report.js +42 -0
- package/dist/automation/parsers/audit-report.js.map +1 -0
- package/dist/automation/parsers/exit-code.d.ts +2 -0
- package/dist/automation/parsers/exit-code.js +6 -0
- package/dist/automation/parsers/exit-code.js.map +1 -0
- package/dist/automation/parsers/index.d.ts +10 -0
- package/dist/automation/parsers/index.js +13 -0
- package/dist/automation/parsers/index.js.map +1 -0
- package/dist/automation/parsers/observer-snapshot.d.ts +2 -0
- package/dist/automation/parsers/observer-snapshot.js +30 -0
- package/dist/automation/parsers/observer-snapshot.js.map +1 -0
- package/dist/automation/parsers/plan-report.d.ts +2 -0
- package/dist/automation/parsers/plan-report.js +53 -0
- package/dist/automation/parsers/plan-report.js.map +1 -0
- package/dist/automation/parsers/refinement-report.d.ts +2 -0
- package/dist/automation/parsers/refinement-report.js +149 -0
- package/dist/automation/parsers/refinement-report.js.map +1 -0
- package/dist/automation/parsers/types.d.ts +7 -0
- package/dist/automation/parsers/types.js +2 -0
- package/dist/automation/parsers/types.js.map +1 -0
- package/dist/automation/run.d.ts +25 -0
- package/dist/automation/run.js +68 -0
- package/dist/automation/run.js.map +1 -0
- package/dist/automation/schema.d.ts +130 -0
- package/dist/automation/schema.js +46 -0
- package/dist/automation/schema.js.map +1 -0
- package/dist/automation/status.d.ts +16 -0
- package/dist/automation/status.js +56 -0
- package/dist/automation/status.js.map +1 -0
- package/dist/automation/verifiers/index.d.ts +7 -0
- package/dist/automation/verifiers/index.js +5 -0
- package/dist/automation/verifiers/index.js.map +1 -0
- package/dist/automation/verifiers/shell.d.ts +5 -0
- package/dist/automation/verifiers/shell.js +17 -0
- package/dist/automation/verifiers/shell.js.map +1 -0
- package/dist/automation/verifiers/types.d.ts +12 -0
- package/dist/automation/verifiers/types.js +2 -0
- package/dist/automation/verifiers/types.js.map +1 -0
- package/dist/backlog/add.d.ts +10 -0
- package/dist/backlog/add.js +30 -0
- package/dist/backlog/add.js.map +1 -0
- package/dist/backlog/index.d.ts +1 -0
- package/dist/backlog/index.js +53 -0
- package/dist/backlog/index.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.js +110 -0
- package/dist/config.js.map +1 -0
- package/dist/detect.d.ts +2 -0
- package/dist/detect.js +26 -0
- package/dist/detect.js.map +1 -0
- package/dist/doctor-invariants.d.ts +6 -0
- package/dist/doctor-invariants.js +50 -0
- package/dist/doctor-invariants.js.map +1 -0
- package/dist/doctor.d.ts +13 -0
- package/dist/doctor.js +281 -0
- package/dist/doctor.js.map +1 -0
- package/dist/generate.d.ts +1 -0
- package/dist/generate.js +275 -0
- package/dist/generate.js.map +1 -0
- package/dist/generator/agent.d.ts +8 -0
- package/dist/generator/agent.js +66 -0
- package/dist/generator/agent.js.map +1 -0
- package/dist/generator/api.d.ts +7 -0
- package/dist/generator/api.js +42 -0
- package/dist/generator/api.js.map +1 -0
- package/dist/generator/config.d.ts +23 -0
- package/dist/generator/config.js +121 -0
- package/dist/generator/config.js.map +1 -0
- package/dist/generator/parse-response.d.ts +5 -0
- package/dist/generator/parse-response.js +58 -0
- package/dist/generator/parse-response.js.map +1 -0
- package/dist/generator/prompt.d.ts +9 -0
- package/dist/generator/prompt.js +166 -0
- package/dist/generator/prompt.js.map +1 -0
- package/dist/generator/request.d.ts +17 -0
- package/dist/generator/request.js +15 -0
- package/dist/generator/request.js.map +1 -0
- package/dist/generators/prompts/stencil.md +45 -0
- package/dist/generators/prompts/vue.md +54 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +1 -0
- package/dist/init.js +89 -0
- package/dist/init.js.map +1 -0
- package/dist/installers/context.d.ts +4 -0
- package/dist/installers/context.js +120 -0
- package/dist/installers/context.js.map +1 -0
- package/dist/installers/index.d.ts +7 -0
- package/dist/installers/index.js +22 -0
- package/dist/installers/index.js.map +1 -0
- package/dist/installers/installer.d.ts +12 -0
- package/dist/installers/installer.js +30 -0
- package/dist/installers/installer.js.map +1 -0
- package/dist/installers/stencil/django-template/installer.d.ts +10 -0
- package/dist/installers/stencil/django-template/installer.js +77 -0
- package/dist/installers/stencil/django-template/installer.js.map +1 -0
- package/dist/installers/stencil/react/installer.d.ts +9 -0
- package/dist/installers/stencil/react/installer.js +22 -0
- package/dist/installers/stencil/react/installer.js.map +1 -0
- package/dist/installers/stencil/react/manifest.json +17 -0
- package/dist/installers/types.d.ts +24 -0
- package/dist/installers/types.js +2 -0
- package/dist/installers/types.js.map +1 -0
- package/dist/lock.d.ts +25 -0
- package/dist/lock.js +86 -0
- package/dist/lock.js.map +1 -0
- package/dist/manifest.d.ts +1 -0
- package/dist/manifest.js +93 -0
- package/dist/manifest.js.map +1 -0
- package/dist/pm/audit.d.ts +36 -0
- package/dist/pm/audit.js +147 -0
- package/dist/pm/audit.js.map +1 -0
- package/dist/pm/backlog.d.ts +3 -0
- package/dist/pm/backlog.js +123 -0
- package/dist/pm/backlog.js.map +1 -0
- package/dist/pm/brief.d.ts +4 -0
- package/dist/pm/brief.js +18 -0
- package/dist/pm/brief.js.map +1 -0
- package/dist/pm/git.d.ts +3 -0
- package/dist/pm/git.js +43 -0
- package/dist/pm/git.js.map +1 -0
- package/dist/pm/grid.d.ts +8 -0
- package/dist/pm/grid.js +16 -0
- package/dist/pm/grid.js.map +1 -0
- package/dist/pm/index.d.ts +25 -0
- package/dist/pm/index.js +199 -0
- package/dist/pm/index.js.map +1 -0
- package/dist/pm/observe.d.ts +55 -0
- package/dist/pm/observe.js +177 -0
- package/dist/pm/observe.js.map +1 -0
- package/dist/pm/plan.d.ts +54 -0
- package/dist/pm/plan.js +151 -0
- package/dist/pm/plan.js.map +1 -0
- package/dist/pm/refinement-worktree.d.ts +31 -0
- package/dist/pm/refinement-worktree.js +160 -0
- package/dist/pm/refinement-worktree.js.map +1 -0
- package/dist/pm/refinement.d.ts +79 -0
- package/dist/pm/refinement.js +326 -0
- package/dist/pm/refinement.js.map +1 -0
- package/dist/pm/render.d.ts +2 -0
- package/dist/pm/render.js +39 -0
- package/dist/pm/render.js.map +1 -0
- package/dist/pm/roadmap-rings.d.ts +7 -0
- package/dist/pm/roadmap-rings.js +31 -0
- package/dist/pm/roadmap-rings.js.map +1 -0
- package/dist/pm/roadmap.d.ts +2 -0
- package/dist/pm/roadmap.js +118 -0
- package/dist/pm/roadmap.js.map +1 -0
- package/dist/pm/snapshot.d.ts +10 -0
- package/dist/pm/snapshot.js +129 -0
- package/dist/pm/snapshot.js.map +1 -0
- package/dist/pm/types.d.ts +99 -0
- package/dist/pm/types.js +29 -0
- package/dist/pm/types.js.map +1 -0
- package/dist/registry-layout.d.ts +18 -0
- package/dist/registry-layout.js +122 -0
- package/dist/registry-layout.js.map +1 -0
- package/dist/scaffold-registry.d.ts +10 -0
- package/dist/scaffold-registry.js +283 -0
- package/dist/scaffold-registry.js.map +1 -0
- package/dist/scaffold.d.ts +1 -0
- package/dist/scaffold.js +32 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/spec-from-react.d.ts +11 -0
- package/dist/spec-from-react.js +522 -0
- package/dist/spec-from-react.js.map +1 -0
- package/dist/spec-from-stencil.d.ts +7 -0
- package/dist/spec-from-stencil.js +275 -0
- package/dist/spec-from-stencil.js.map +1 -0
- package/dist/spec.d.ts +1 -0
- package/dist/spec.js +60 -0
- package/dist/spec.js.map +1 -0
- package/dist/tokens-map.d.ts +11 -0
- package/dist/tokens-map.js +43 -0
- package/dist/tokens-map.js.map +1 -0
- package/dist/update.d.ts +39 -0
- package/dist/update.js +490 -0
- package/dist/update.js.map +1 -0
- package/dist/workspace-init.d.ts +9 -0
- package/dist/workspace-init.js +119 -0
- package/dist/workspace-init.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { lstat, mkdir, readdir, readFile, stat, symlink, unlink, writeFile, } from "node:fs/promises";
|
|
3
|
+
import { dirname, join, relative } from "node:path";
|
|
4
|
+
import { resolveKitsRoot } from "@chiralkit/kits";
|
|
5
|
+
import { readMaintainerConfig } from "./config.js";
|
|
6
|
+
import { runFromStencil } from "./spec-from-stencil.js";
|
|
7
|
+
import { MODULE_ENVELOPE_FILENAME, TYPE_TO_FAMILY, TYPE_TO_KIT } from "./registry-layout.js";
|
|
8
|
+
// Filenames scaffold itself manages at the implementations/stencil/ layer
|
|
9
|
+
// (generation.json) or elsewhere in the registry entry (module.json,
|
|
10
|
+
// spec.json — normally at registry/<family>/<name>/, but skipping
|
|
11
|
+
// defensively). The walker will not symlink source files with these names,
|
|
12
|
+
// so that step 4's writeFile through the symlink can't corrupt the source.
|
|
13
|
+
const RESERVED_FILENAMES = new Set([
|
|
14
|
+
"generation.json",
|
|
15
|
+
MODULE_ENVELOPE_FILENAME,
|
|
16
|
+
"spec.json",
|
|
17
|
+
]);
|
|
18
|
+
export async function runScaffoldRegistry(name, opts) {
|
|
19
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
20
|
+
const force = opts.force ?? false;
|
|
21
|
+
const type = opts.type ?? "ui-component";
|
|
22
|
+
const family = TYPE_TO_FAMILY[type];
|
|
23
|
+
const config = await readMaintainerConfig(cwd);
|
|
24
|
+
const kitsRoot = opts.kitsRoot ?? resolveKitsRoot();
|
|
25
|
+
const registryDir = join(kitsRoot, TYPE_TO_KIT[type], "registry", family, name);
|
|
26
|
+
// Non-ui-component types have no Stencil source to onboard from — there is
|
|
27
|
+
// no `ds-<name>.tsx` to parse into spec.json/tag/tokens_used. Until Task 5
|
|
28
|
+
// builds real agent/recipe/config scaffolders, `--type <t>` for those types
|
|
29
|
+
// writes a minimal placeholder envelope only (name/type/metadata scaffold,
|
|
30
|
+
// empty spec) at the correct family path, for a human to fill in by hand.
|
|
31
|
+
if (type !== "ui-component") {
|
|
32
|
+
await validateTarget(registryDir, family, name, force);
|
|
33
|
+
await mkdir(registryDir, { recursive: true });
|
|
34
|
+
const envelope = {
|
|
35
|
+
name,
|
|
36
|
+
type,
|
|
37
|
+
metadata: {
|
|
38
|
+
level: opts.level,
|
|
39
|
+
description: `TODO: describe ${name}`,
|
|
40
|
+
author: detectAuthor(cwd),
|
|
41
|
+
version: "0.1.0",
|
|
42
|
+
created_at: new Date().toISOString().slice(0, 10),
|
|
43
|
+
dependencies: [],
|
|
44
|
+
translations: {},
|
|
45
|
+
},
|
|
46
|
+
spec: {},
|
|
47
|
+
};
|
|
48
|
+
await writeFile(join(registryDir, MODULE_ENVELOPE_FILENAME), JSON.stringify(envelope, null, 2) + "\n", "utf8");
|
|
49
|
+
console.log(`Wrote placeholder envelope: ${join(registryDir, MODULE_ENVELOPE_FILENAME)}`);
|
|
50
|
+
console.log(`type '${type}' has no automated scaffolder yet — fill in metadata.description and spec by hand.`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const sourceDir = join(cwd, config.design_system_path, `ds-${name}`);
|
|
54
|
+
const stencilImplDir = join(registryDir, "implementations", "stencil");
|
|
55
|
+
await validateSource(sourceDir, name);
|
|
56
|
+
await validateTarget(registryDir, family, name, force);
|
|
57
|
+
// 1. spec.json (delegates to Plan 2's extractor via the wrapper below).
|
|
58
|
+
// Before writing, capture any hand-authored fields on an existing
|
|
59
|
+
// spec.json (slot, a11y, state_machine) so we can warn the user that
|
|
60
|
+
// the pure-parser regeneration will drop them.
|
|
61
|
+
const wipedFields = await detectFieldsToBeWiped(join(registryDir, "spec.json"));
|
|
62
|
+
await writeSpecViaFromStencil(name, sourceDir, registryDir);
|
|
63
|
+
if (wipedFields.length > 0) {
|
|
64
|
+
console.warn(`[WARN] scaffold: existing spec.json had hand-authored field(s): ` +
|
|
65
|
+
`${wipedFields.join(", ")}. The pure-parser regeneration dropped them; ` +
|
|
66
|
+
`re-add them to registry/${family}/${name}/spec.json before the next 'chiralkit doctor' pass.`);
|
|
67
|
+
}
|
|
68
|
+
// 2. module.json envelope — build it from the just-written spec.json
|
|
69
|
+
// (for tokens_used bucketed form) + parsed source (for the tag).
|
|
70
|
+
const spec = JSON.parse(await readFile(join(registryDir, "spec.json"), "utf8"));
|
|
71
|
+
const tag = extractTag(await readFile(join(sourceDir, `ds-${name}.tsx`), "utf8"), name);
|
|
72
|
+
const envelope = buildEnvelope({
|
|
73
|
+
name,
|
|
74
|
+
tag,
|
|
75
|
+
bucketedTokens: spec.tokens_used ?? {},
|
|
76
|
+
cwd,
|
|
77
|
+
level: opts.level,
|
|
78
|
+
});
|
|
79
|
+
await mkdir(registryDir, { recursive: true });
|
|
80
|
+
await writeFile(join(registryDir, MODULE_ENVELOPE_FILENAME), JSON.stringify(envelope, null, 2) + "\n", "utf8");
|
|
81
|
+
// 3. Symlinks: one per source file (files-only, no hidden, no subdirs).
|
|
82
|
+
await mkdir(stencilImplDir, { recursive: true });
|
|
83
|
+
// First: sweep any pre-existing symlinks in stencilImplDir so a --force
|
|
84
|
+
// regeneration doesn't leave orphans pointing at now-removed source
|
|
85
|
+
// files. Regular files (like generation.json) are left alone; only
|
|
86
|
+
// symlinks are swept.
|
|
87
|
+
await sweepSymlinks(stencilImplDir);
|
|
88
|
+
const sourceEntries = await readdir(sourceDir, { withFileTypes: true });
|
|
89
|
+
for (const entry of sourceEntries) {
|
|
90
|
+
if (entry.name.startsWith("."))
|
|
91
|
+
continue;
|
|
92
|
+
if (!entry.isFile())
|
|
93
|
+
continue;
|
|
94
|
+
// Skip CLI-managed filenames — if a user's source dir happens to
|
|
95
|
+
// contain one of these, symlinking through it would let step 4's
|
|
96
|
+
// writeFile clobber the source file.
|
|
97
|
+
if (RESERVED_FILENAMES.has(entry.name))
|
|
98
|
+
continue;
|
|
99
|
+
const linkPath = join(stencilImplDir, entry.name);
|
|
100
|
+
const targetAbs = join(sourceDir, entry.name);
|
|
101
|
+
const targetRel = relative(dirname(linkPath), targetAbs);
|
|
102
|
+
try {
|
|
103
|
+
await unlink(linkPath);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Doesn't exist — that's fine.
|
|
107
|
+
}
|
|
108
|
+
await symlink(targetRel, linkPath);
|
|
109
|
+
}
|
|
110
|
+
// 4. generation.json baseline (regular file, not a symlink)
|
|
111
|
+
await writeFile(join(stencilImplDir, "generation.json"), JSON.stringify({
|
|
112
|
+
generated_from_spec_version: null,
|
|
113
|
+
generated_at: null,
|
|
114
|
+
generator_model: null,
|
|
115
|
+
manually_edited: true,
|
|
116
|
+
}, null, 2) + "\n", "utf8");
|
|
117
|
+
}
|
|
118
|
+
// Pure function — exposed for unit test. Flattens the bucketed tokens_used
|
|
119
|
+
// form spec.json uses ({ colors: ["primary"], spacing: ["sm"] }) into the
|
|
120
|
+
// flat "category.value" string list module.json uses.
|
|
121
|
+
export function flattenTokensUsed(bucketed) {
|
|
122
|
+
const out = [];
|
|
123
|
+
for (const [bucket, values] of Object.entries(bucketed)) {
|
|
124
|
+
if (!values || values.length === 0)
|
|
125
|
+
continue;
|
|
126
|
+
const cat = singular(bucket);
|
|
127
|
+
for (const v of values) {
|
|
128
|
+
out.push(`${cat}.${v}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
// Same 5-line function as generator/prompt.ts:singular(). Duplicated per
|
|
134
|
+
// spec §Design decisions #5 — extracting a shared helper is not justified
|
|
135
|
+
// by two callers at ~5 LOC each.
|
|
136
|
+
function singular(bucket) {
|
|
137
|
+
switch (bucket) {
|
|
138
|
+
case "colors":
|
|
139
|
+
return "color";
|
|
140
|
+
default:
|
|
141
|
+
return bucket;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function buildEnvelope(input) {
|
|
145
|
+
return {
|
|
146
|
+
name: input.name,
|
|
147
|
+
type: "ui-component",
|
|
148
|
+
metadata: {
|
|
149
|
+
level: input.level,
|
|
150
|
+
description: `TODO: describe ${input.name}`,
|
|
151
|
+
author: detectAuthor(input.cwd),
|
|
152
|
+
version: "0.1.0",
|
|
153
|
+
created_at: new Date().toISOString().slice(0, 10),
|
|
154
|
+
dependencies: [],
|
|
155
|
+
translations: {},
|
|
156
|
+
},
|
|
157
|
+
spec: {
|
|
158
|
+
tech: "stencil",
|
|
159
|
+
tag: input.tag,
|
|
160
|
+
tokens_used: flattenTokensUsed(input.bucketedTokens),
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function detectAuthor(cwd) {
|
|
165
|
+
try {
|
|
166
|
+
const out = execFileSync("git", ["config", "user.name"], {
|
|
167
|
+
cwd,
|
|
168
|
+
encoding: "utf8",
|
|
169
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
170
|
+
}).trim();
|
|
171
|
+
return out.length > 0 ? out : "TODO";
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return "TODO";
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Parses `@Component({ tag: "ds-foo", ... })` from Stencil source and
|
|
178
|
+
// returns the tag. Falls back to `ds-<name>` if the decorator can't be
|
|
179
|
+
// parsed (shouldn't happen for a well-formed Stencil component, but the
|
|
180
|
+
// fallback keeps scaffold usable during Stencil source edits).
|
|
181
|
+
function extractTag(source, name) {
|
|
182
|
+
const m = /@Component\s*\(\s*\{[^}]*?\btag\s*:\s*["']([^"']+)["']/.exec(source);
|
|
183
|
+
return m ? m[1] : `ds-${name}`;
|
|
184
|
+
}
|
|
185
|
+
async function validateSource(sourceDir, name) {
|
|
186
|
+
try {
|
|
187
|
+
const s = await stat(sourceDir);
|
|
188
|
+
if (!s.isDirectory()) {
|
|
189
|
+
throw new Error(`source '${sourceDir}' exists but is not a directory.`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
if (e.code === "ENOENT") {
|
|
194
|
+
throw new Error(`source '${sourceDir}' does not exist. Expected a Stencil component directory with ds-${name}.tsx and ds-${name}.css.`);
|
|
195
|
+
}
|
|
196
|
+
throw e;
|
|
197
|
+
}
|
|
198
|
+
const tsxPath = join(sourceDir, `ds-${name}.tsx`);
|
|
199
|
+
try {
|
|
200
|
+
await stat(tsxPath);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
throw new Error(`${sourceDir} exists but has no ds-${name}.tsx (Stencil requires the tsx entry point named after the component).`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function validateTarget(registryDir, family, name, force) {
|
|
207
|
+
if (force)
|
|
208
|
+
return;
|
|
209
|
+
try {
|
|
210
|
+
await stat(registryDir);
|
|
211
|
+
// Exists — refuse.
|
|
212
|
+
throw new Error(`registry/${family}/${name}/ already exists at ${registryDir}; pass --force to regenerate (this will overwrite module.json and, for ui-component types, spec.json, generation.json, and all implementations/stencil/ symlinks).`);
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
if (e.code === "ENOENT")
|
|
216
|
+
return;
|
|
217
|
+
throw e;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Bridge to runFromStencil. Task 3 Step 3 extended runFromStencil to
|
|
221
|
+
// accept optional sourceDir + registryDir; scaffold passes both so the
|
|
222
|
+
// spec extractor operates against the scaffold's configured layout
|
|
223
|
+
// rather than the workspace-resolved default. `force: true` is safe
|
|
224
|
+
// because validateTarget above has already enforced the outer --force
|
|
225
|
+
// gate — reaching this line means we're allowed to overwrite.
|
|
226
|
+
async function writeSpecViaFromStencil(name, sourceDir, registryDir) {
|
|
227
|
+
await runFromStencil(name, { force: true, sourceDir, registryDir });
|
|
228
|
+
}
|
|
229
|
+
// Removes every symlink under `dir` (leaves regular files untouched). Used
|
|
230
|
+
// before recreating symlinks on --force regeneration so that source files
|
|
231
|
+
// removed since the last scaffold do not leave orphaned symlinks behind.
|
|
232
|
+
async function sweepSymlinks(dir) {
|
|
233
|
+
let entries;
|
|
234
|
+
try {
|
|
235
|
+
entries = await readdir(dir);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return; // Dir doesn't exist yet — nothing to sweep.
|
|
239
|
+
}
|
|
240
|
+
for (const name of entries) {
|
|
241
|
+
const full = join(dir, name);
|
|
242
|
+
let s;
|
|
243
|
+
try {
|
|
244
|
+
s = await lstat(full);
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
if (s.isSymbolicLink()) {
|
|
250
|
+
await unlink(full);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Detects which human-authored fields exist on an already-present spec.json
|
|
255
|
+
// and would be wiped by the pure-parser regeneration. Returns [] if no
|
|
256
|
+
// spec.json exists (fresh scaffold — nothing to wipe).
|
|
257
|
+
async function detectFieldsToBeWiped(specPath) {
|
|
258
|
+
let raw;
|
|
259
|
+
try {
|
|
260
|
+
raw = await readFile(specPath, "utf8");
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
let parsed;
|
|
266
|
+
try {
|
|
267
|
+
parsed = JSON.parse(raw);
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
const obj = parsed;
|
|
276
|
+
const wiped = [];
|
|
277
|
+
for (const field of ["slot", "a11y", "state_machine"]) {
|
|
278
|
+
if (obj[field] !== undefined)
|
|
279
|
+
wiped.push(field);
|
|
280
|
+
}
|
|
281
|
+
return wiped;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=scaffold-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-registry.js","sourceRoot":"","sources":["../src/scaffold-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runScaffold(rest: string[]): Promise<void>;
|
package/dist/scaffold.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { runScaffoldRegistry } from "./scaffold-registry.js";
|
|
2
|
+
import { parseLevelFlag, parseTypeFlag } from "./registry-layout.js";
|
|
3
|
+
// Subcommand dispatcher for `chiralkit scaffold ...`. Currently one action;
|
|
4
|
+
// grows as future types (recipe, agent, config) gain their own scaffolders.
|
|
5
|
+
export async function runScaffold(rest) {
|
|
6
|
+
const [action, ...args] = rest;
|
|
7
|
+
switch (action) {
|
|
8
|
+
case "registry": {
|
|
9
|
+
const name = args[0];
|
|
10
|
+
if (!name) {
|
|
11
|
+
throw new Error("scaffold registry: missing module name. Usage: chiralkit scaffold registry <name> --level <n> [--type <t>] [--force]");
|
|
12
|
+
}
|
|
13
|
+
const force = args.includes("--force");
|
|
14
|
+
const type = parseTypeFlag(args, (msg) => {
|
|
15
|
+
throw new Error(`scaffold registry: ${msg}`);
|
|
16
|
+
});
|
|
17
|
+
const level = parseLevelFlag(args, (msg) => {
|
|
18
|
+
throw new Error(`scaffold registry: ${msg}`);
|
|
19
|
+
});
|
|
20
|
+
if (level === undefined) {
|
|
21
|
+
throw new Error("scaffold registry: --level <n> is required, where n ∈ 0,1,2,3,5,8");
|
|
22
|
+
}
|
|
23
|
+
await runScaffoldRegistry(name, { force, type, level });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
case undefined:
|
|
27
|
+
throw new Error("scaffold: missing action. Actions: registry <name> --level <n> [--type <t>] [--force]");
|
|
28
|
+
default:
|
|
29
|
+
throw new Error(`scaffold: unknown action '${action}'`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErE,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,CAAC;YACD,MAAM,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,KAAK,SAAS;YACZ,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;QACJ;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface FromReactOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
exportName?: string;
|
|
4
|
+
tokensMapPath: string;
|
|
5
|
+
version?: string;
|
|
6
|
+
outPath?: string;
|
|
7
|
+
force: boolean;
|
|
8
|
+
strict: boolean;
|
|
9
|
+
dryRun: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function runFromReact(sourcePath: string, options: FromReactOptions): Promise<void>;
|