@graftsync/cli 0.0.0-stage → 0.1.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/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +5 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +443 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -3
- package/README.md +0 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Brandon Roberts
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type CommandDef } from 'citty';
|
|
2
|
+
import { type MechanismAdapter } from '@graftsync/core';
|
|
3
|
+
/** Mechanisms the CLI knows about. */
|
|
4
|
+
export declare const defaultAdapters: MechanismAdapter[];
|
|
5
|
+
export declare const main: CommandDef;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAoBL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAKzB,sCAAsC;AACtC,eAAO,MAAM,eAAe,EAAE,gBAAgB,EAAgC,CAAC;AAya/E,eAAO,MAAM,IAAI,EAAE,UAGH,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { defineCommand } from 'citty';
|
|
5
|
+
import { addGraft, applyGraft, applyInstalled, applyToProject, checkAnchors, GraftError, initProject, outdated, Project, projectStatus, recordVariant, replay, resolveVersion, runOracle, scopeDiff, setupAgent, sync, updateGraft, } from '@graftsync/core';
|
|
6
|
+
import { patchAdapter } from '@graftsync/adapter-patch';
|
|
7
|
+
import { forkAdapter } from '@graftsync/adapter-fork';
|
|
8
|
+
import { GRAFT_STATUSES, REQUIRED_SECTIONS } from '@graftsync/spec';
|
|
9
|
+
/** Mechanisms the CLI knows about. */
|
|
10
|
+
export const defaultAdapters = [patchAdapter, forkAdapter];
|
|
11
|
+
const EXIT = { ok: 0, attention: 1, tooling: 2 };
|
|
12
|
+
const common = {
|
|
13
|
+
root: { type: 'string', description: 'Project root (default: nearest directory with .grafts/)' },
|
|
14
|
+
json: { type: 'boolean', description: 'Print machine-readable JSON' },
|
|
15
|
+
};
|
|
16
|
+
async function open(root) {
|
|
17
|
+
const resolved = root ? path.resolve(root) : (Project.findRoot(process.cwd()) ?? process.cwd());
|
|
18
|
+
return Project.open({ root: resolved, adapters: defaultAdapters });
|
|
19
|
+
}
|
|
20
|
+
const print = (json, value, human) => {
|
|
21
|
+
if (json)
|
|
22
|
+
console.log(JSON.stringify(value, null, 2));
|
|
23
|
+
else
|
|
24
|
+
human();
|
|
25
|
+
};
|
|
26
|
+
/** Run a command body, mapping errors to exit code 2 (tooling error). */
|
|
27
|
+
const guarded = (fn) => async ({ args }) => {
|
|
28
|
+
try {
|
|
29
|
+
process.exitCode = await fn(args);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
console.error(err instanceof GraftError ? `graft: ${err.message}` : err);
|
|
33
|
+
process.exitCode = EXIT.tooling;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
function printAnchors(report) {
|
|
37
|
+
console.log(`${report.graft}: ${report.package}@${report.version} → ${report.variant ? report.variant.module : '(no variant)'}`);
|
|
38
|
+
for (const a of report.anchors) {
|
|
39
|
+
const where = a.location ? `:${a.location.line}` : '';
|
|
40
|
+
console.log(` ${a.matched ? '✓' : '✗'} ${a.name} ${a.file}${where}${a.description ? ` — ${a.description}` : ''}${a.error ? ` (${a.error})` : ''}`);
|
|
41
|
+
}
|
|
42
|
+
for (const e of report.errors)
|
|
43
|
+
console.log(` ✗ ${e}`);
|
|
44
|
+
if (report.upstreamed) {
|
|
45
|
+
console.log(` ⇡ likely upstreamed: ${report.package}@${report.version} already contains this graft's change; confirm and set status: upstreamed`);
|
|
46
|
+
for (const e of report.upstreamed.evidence)
|
|
47
|
+
console.log(` ${e}`);
|
|
48
|
+
}
|
|
49
|
+
for (const w of report.warnings ?? [])
|
|
50
|
+
console.log(` ! ${w}`);
|
|
51
|
+
}
|
|
52
|
+
const init = defineCommand({
|
|
53
|
+
meta: { name: 'init', description: 'Create .grafts/ (and a starter graft with --package; agent setup with --agent)' },
|
|
54
|
+
args: {
|
|
55
|
+
...common,
|
|
56
|
+
agent: {
|
|
57
|
+
type: 'boolean',
|
|
58
|
+
description: "Also onboard coding agents: install the graft-sync skill (it drives Graft through this CLI) into the project's agent skills folders",
|
|
59
|
+
},
|
|
60
|
+
'skills-dir': {
|
|
61
|
+
type: 'string',
|
|
62
|
+
description: 'With --agent: install into this skills folder instead of detecting (comma-separated for several), e.g. .agents/skills',
|
|
63
|
+
},
|
|
64
|
+
package: { type: 'string', description: 'Upstream package for a starter graft' },
|
|
65
|
+
id: { type: 'string', description: 'Starter graft id (default: <package>-graft)' },
|
|
66
|
+
mechanism: { type: 'string', default: 'patch', description: 'Mechanism for the starter graft' },
|
|
67
|
+
},
|
|
68
|
+
run: guarded(async (args) => {
|
|
69
|
+
const root = path.resolve(args.root ?? process.cwd());
|
|
70
|
+
// Agent setup first: if no skills folder can be found, fail before creating anything.
|
|
71
|
+
const skillsDirs = args['skills-dir']?.split(',').map((d) => d.trim()).filter(Boolean);
|
|
72
|
+
const agent = args.agent ? await setupAgent(root, { skill: await readBundledSkill(), skillsDirs }) : undefined;
|
|
73
|
+
const created = await initProject(root);
|
|
74
|
+
if (args.package) {
|
|
75
|
+
const project = await open(root);
|
|
76
|
+
const id = args.id ?? `${args.package.replace(/^@/, '').replace(/[^a-z0-9]+/gi, '-').toLowerCase()}-graft`;
|
|
77
|
+
created.push(...(await addGraft(project, { id, package: args.package, mechanism: args.mechanism })));
|
|
78
|
+
}
|
|
79
|
+
print(args.json, { created, agent }, () => {
|
|
80
|
+
for (const f of created)
|
|
81
|
+
console.log(`created ${path.relative(process.cwd(), f)}`);
|
|
82
|
+
for (const d of agent?.skillsDirs ?? [])
|
|
83
|
+
if (d.reason !== 'requested')
|
|
84
|
+
console.log(`skills ${d.dir} (${d.reason})`);
|
|
85
|
+
for (const f of agent?.files ?? []) {
|
|
86
|
+
const what = { created: 'created', updated: 'updated', unchanged: 'up to date' }[f.action];
|
|
87
|
+
console.log(`${what.padEnd(10)} ${path.relative(process.cwd(), f.file)}`);
|
|
88
|
+
}
|
|
89
|
+
for (const n of agent?.notes ?? [])
|
|
90
|
+
console.log(`note: ${n}`);
|
|
91
|
+
if (!args.package)
|
|
92
|
+
console.log('next: graft add <id> --package <upstream>');
|
|
93
|
+
});
|
|
94
|
+
return EXIT.ok;
|
|
95
|
+
}),
|
|
96
|
+
});
|
|
97
|
+
/** The graft-sync skill shipped in @graftsync/skill. */
|
|
98
|
+
async function readBundledSkill() {
|
|
99
|
+
const file = createRequire(import.meta.url).resolve('@graftsync/skill/SKILL.md');
|
|
100
|
+
return readFile(file, 'utf8');
|
|
101
|
+
}
|
|
102
|
+
const add = defineCommand({
|
|
103
|
+
meta: { name: 'add', description: 'Scaffold graft.md, a variant stub, and an oracle stub' },
|
|
104
|
+
args: {
|
|
105
|
+
...common,
|
|
106
|
+
id: { type: 'positional', required: true, description: 'Graft id (kebab-case)' },
|
|
107
|
+
package: { type: 'string', required: true, description: 'Upstream npm package' },
|
|
108
|
+
version: { type: 'string', description: 'Upstream version (default: installed)' },
|
|
109
|
+
mechanism: { type: 'string', default: 'patch', description: 'Mechanism adapter' },
|
|
110
|
+
target: { type: 'string', description: 'Comma-separated target files in the package' },
|
|
111
|
+
modes: { type: 'string', description: 'Comma-separated oracle modes (default: default)' },
|
|
112
|
+
},
|
|
113
|
+
run: guarded(async (args) => {
|
|
114
|
+
const project = await open(args.root);
|
|
115
|
+
const split = (s) => s?.split(',').map((x) => x.trim()).filter(Boolean);
|
|
116
|
+
const files = await addGraft(project, {
|
|
117
|
+
id: args.id,
|
|
118
|
+
package: args.package,
|
|
119
|
+
version: args.version,
|
|
120
|
+
mechanism: args.mechanism,
|
|
121
|
+
targets: split(args.target),
|
|
122
|
+
modes: split(args.modes),
|
|
123
|
+
});
|
|
124
|
+
print(args.json, { created: files }, () => files.forEach((f) => console.log(`created ${path.relative(process.cwd(), f)}`)));
|
|
125
|
+
return EXIT.ok;
|
|
126
|
+
}),
|
|
127
|
+
});
|
|
128
|
+
const status = defineCommand({
|
|
129
|
+
meta: { name: 'status', description: 'List grafts, rootstock versions, status, and anchor health' },
|
|
130
|
+
args: common,
|
|
131
|
+
run: guarded(async (args) => {
|
|
132
|
+
const project = await open(args.root);
|
|
133
|
+
const result = await projectStatus(project);
|
|
134
|
+
const unhealthy = result.invalid.length > 0 || result.grafts.some((g) => g.error || (g.anchors && !g.anchors.ok));
|
|
135
|
+
print(args.json, result, () => {
|
|
136
|
+
if (!result.grafts.length && !result.invalid.length)
|
|
137
|
+
console.log('no grafts (run `graft add`)');
|
|
138
|
+
for (const g of result.grafts) {
|
|
139
|
+
const health = g.error ? `✗ ${g.error}` : !g.anchors ? (g.installed ? '—' : 'not installed') : g.anchors.ok ? '✓ anchors ok' : g.anchors.upstreamed ? '✗ anchors miss (likely upstreamed)' : '✗ anchors miss';
|
|
140
|
+
console.log(`${g.id} ${g.package} verified ${g.verified} installed ${g.installed ?? '—'} ${g.status} ${health}`);
|
|
141
|
+
if (g.anchors && !g.anchors.ok)
|
|
142
|
+
printAnchors(g.anchors);
|
|
143
|
+
}
|
|
144
|
+
for (const g of result.invalid) {
|
|
145
|
+
console.log(`${g.id} ✗ invalid`);
|
|
146
|
+
for (const e of g.errors)
|
|
147
|
+
console.log(` - ${e}`);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
return result.invalid.length ? EXIT.tooling : unhealthy ? EXIT.attention : EXIT.ok;
|
|
151
|
+
}),
|
|
152
|
+
});
|
|
153
|
+
const check = defineCommand({
|
|
154
|
+
meta: { name: 'check', description: 'Check anchors against the installed or a specified upstream version' },
|
|
155
|
+
args: {
|
|
156
|
+
...common,
|
|
157
|
+
id: { type: 'positional', required: false, description: 'Graft id (default: all active grafts)' },
|
|
158
|
+
version: { type: 'string', description: 'Upstream version (default: installed)' },
|
|
159
|
+
},
|
|
160
|
+
run: guarded(async (args) => {
|
|
161
|
+
const project = await open(args.root);
|
|
162
|
+
const ids = args.id
|
|
163
|
+
? [args.id]
|
|
164
|
+
: (await project.loadAll()).grafts.filter((g) => ['applied', 'conflicted'].includes(g.frontmatter.status)).map((g) => g.id);
|
|
165
|
+
const reports = [];
|
|
166
|
+
for (const id of ids)
|
|
167
|
+
reports.push(await checkAnchors(project, id, args.version));
|
|
168
|
+
print(args.json, reports, () => reports.forEach(printAnchors));
|
|
169
|
+
return reports.every((r) => r.ok) ? EXIT.ok : EXIT.attention;
|
|
170
|
+
}),
|
|
171
|
+
});
|
|
172
|
+
const apply = defineCommand({
|
|
173
|
+
meta: { name: 'apply', description: 'Point the package manager at each graft\'s selected variant, reinstall, and re-check' },
|
|
174
|
+
args: {
|
|
175
|
+
...common,
|
|
176
|
+
id: { type: 'positional', required: false, description: 'Graft id (default: all active grafts)' },
|
|
177
|
+
install: { type: 'boolean', default: true, description: 'Reinstall afterwards (--no-install to only write config)' },
|
|
178
|
+
installed: {
|
|
179
|
+
type: 'boolean',
|
|
180
|
+
description: "Apply variants directly to installed packages (Graft's built-in applier; run from postinstall). Offline and idempotent; exits 1 if any graft does not fit.",
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
run: guarded(async (args) => {
|
|
184
|
+
const project = await open(args.root);
|
|
185
|
+
if (args.installed) {
|
|
186
|
+
const { reports, ok } = await applyInstalled(project, { ids: args.id ? [args.id] : undefined });
|
|
187
|
+
print(args.json, { reports, ok }, () => {
|
|
188
|
+
for (const r of reports) {
|
|
189
|
+
for (const c of r.copies) {
|
|
190
|
+
const where = c.primary ? '' : ` (nested: ${path.relative(project.root, c.dir)})`;
|
|
191
|
+
if (c.action === 'patched' || c.action === 'already-patched')
|
|
192
|
+
console.log(`graft: ${c.action === 'patched' ? 'patched' : 'already patched'} ${r.package}@${c.version} with ${r.graft}${where}`);
|
|
193
|
+
}
|
|
194
|
+
for (const w of r.warnings)
|
|
195
|
+
console.log(`graft: warning: ${w}`);
|
|
196
|
+
for (const e of r.errors)
|
|
197
|
+
console.error(`graft: error: ${e}`);
|
|
198
|
+
}
|
|
199
|
+
if (!ok)
|
|
200
|
+
console.error('graft: one or more grafts could not be applied; failing the install so the package is never left silently unmodified');
|
|
201
|
+
});
|
|
202
|
+
return ok ? EXIT.ok : EXIT.attention;
|
|
203
|
+
}
|
|
204
|
+
const result = await applyToProject(project, { ids: args.id ? [args.id] : undefined, install: args.install });
|
|
205
|
+
print(args.json, result, () => {
|
|
206
|
+
for (const c of result.configured)
|
|
207
|
+
console.log(`configured ${c.id}: ${c.package}@${c.version} → ${c.variant}`);
|
|
208
|
+
if (result.installCommand)
|
|
209
|
+
console.log(`ran ${result.installCommand}`);
|
|
210
|
+
result.anchors.forEach(printAnchors);
|
|
211
|
+
for (const e of result.errors)
|
|
212
|
+
console.log(`✗ ${e.id}: ${e.error}`);
|
|
213
|
+
});
|
|
214
|
+
return result.errors.length ? EXIT.tooling : result.anchors.every((a) => a.ok) ? EXIT.ok : EXIT.attention;
|
|
215
|
+
}),
|
|
216
|
+
});
|
|
217
|
+
const diff = defineCommand({
|
|
218
|
+
meta: { name: 'diff', description: 'Print the scoped upstream diff for a graft' },
|
|
219
|
+
args: {
|
|
220
|
+
...common,
|
|
221
|
+
id: { type: 'positional', required: true },
|
|
222
|
+
from: { type: 'positional', required: false, description: 'From version (default: rootstock.verified)' },
|
|
223
|
+
to: { type: 'positional', required: false, description: 'To version (default: installed)' },
|
|
224
|
+
},
|
|
225
|
+
run: guarded(async (args) => {
|
|
226
|
+
const project = await open(args.root);
|
|
227
|
+
const result = await scopeDiff(project, args.id, args.from, args.to);
|
|
228
|
+
print(args.json, result, () => process.stdout.write(result.patch || `no changes in target files between ${result.from} and ${result.to}\n`));
|
|
229
|
+
return EXIT.ok;
|
|
230
|
+
}),
|
|
231
|
+
});
|
|
232
|
+
const syncCmd = defineCommand({
|
|
233
|
+
meta: { name: 'sync', description: 'Re-verify grafts against an upstream version (deterministic first pass)' },
|
|
234
|
+
args: {
|
|
235
|
+
...common,
|
|
236
|
+
version: { type: 'string', description: 'Target upstream version (default: installed)' },
|
|
237
|
+
package: { type: 'string', description: 'Only grafts on this upstream package' },
|
|
238
|
+
id: { type: 'string', description: 'Comma-separated graft ids' },
|
|
239
|
+
install: { type: 'boolean', description: 'Install the target version if it is not installed' },
|
|
240
|
+
'dry-run': { type: 'boolean', description: 'Do not update graft.md on success' },
|
|
241
|
+
quiet: { type: 'boolean', description: 'Do not stream oracle output' },
|
|
242
|
+
},
|
|
243
|
+
run: guarded(async (args) => {
|
|
244
|
+
const project = await open(args.root);
|
|
245
|
+
const report = await sync(project, {
|
|
246
|
+
version: args.version,
|
|
247
|
+
package: args.package,
|
|
248
|
+
ids: args.id?.split(',').map((s) => s.trim()).filter(Boolean),
|
|
249
|
+
install: args.install,
|
|
250
|
+
dryRun: args['dry-run'],
|
|
251
|
+
onProgress: args.json ? undefined : (m) => console.error(`graft: ${m}`),
|
|
252
|
+
onOutput: args.json || args.quiet ? undefined : (c) => process.stderr.write(c),
|
|
253
|
+
});
|
|
254
|
+
print(args.json, report, () => {
|
|
255
|
+
for (const g of report.grafts) {
|
|
256
|
+
console.log(`${g.outcome === 'green' ? '✓' : g.outcome === 'skipped' ? '-' : '✗'} ${g.id} ${g.from} → ${g.to ?? '?'} ${g.outcome}${g.likelyUpstreamed ? ' (likely upstreamed)' : ''}`);
|
|
257
|
+
if (g.regenerated)
|
|
258
|
+
console.log(` ${g.regenerated.rolledBack ? 'rolled back regenerated' : 'regenerated'} variant ${g.regenerated.module} with \`${g.regenerated.command}\``);
|
|
259
|
+
for (const r of g.reasons)
|
|
260
|
+
console.log(` ${r}`);
|
|
261
|
+
}
|
|
262
|
+
if (report.reportFiles)
|
|
263
|
+
console.log(`report: ${path.relative(process.cwd(), report.reportFiles.markdown)}`);
|
|
264
|
+
});
|
|
265
|
+
return report.exitCode;
|
|
266
|
+
}),
|
|
267
|
+
});
|
|
268
|
+
const verify = defineCommand({
|
|
269
|
+
meta: { name: 'verify', description: "Run a graft's oracle in all configured modes" },
|
|
270
|
+
args: {
|
|
271
|
+
...common,
|
|
272
|
+
id: { type: 'positional', required: true },
|
|
273
|
+
mode: { type: 'string', description: 'Comma-separated subset of modes' },
|
|
274
|
+
},
|
|
275
|
+
run: guarded(async (args) => {
|
|
276
|
+
const project = await open(args.root);
|
|
277
|
+
const graft = await project.get(args.id);
|
|
278
|
+
const result = await runOracle(project, graft, {
|
|
279
|
+
modes: args.mode?.split(','),
|
|
280
|
+
onOutput: args.json ? undefined : (c) => process.stdout.write(c),
|
|
281
|
+
});
|
|
282
|
+
print(args.json, result, () => {
|
|
283
|
+
for (const m of result.modes)
|
|
284
|
+
console.log(`${m.passed ? '✓' : '✗'} ${m.mode} (exit ${m.exitCode}, ${m.durationMs}ms)`);
|
|
285
|
+
});
|
|
286
|
+
return result.passed ? EXIT.ok : EXIT.attention;
|
|
287
|
+
}),
|
|
288
|
+
});
|
|
289
|
+
const outdatedCmd = defineCommand({
|
|
290
|
+
meta: { name: 'outdated', description: 'Find newer upstream versions (dist-tags) to sync against' },
|
|
291
|
+
args: { ...common, tags: { type: 'string', description: 'Comma-separated dist-tags (default: latest,next,rc,beta)' } },
|
|
292
|
+
run: guarded(async (args) => {
|
|
293
|
+
const project = await open(args.root);
|
|
294
|
+
const entries = await outdated(project, { tags: args.tags?.split(',') });
|
|
295
|
+
print(args.json, entries, () => {
|
|
296
|
+
for (const e of entries) {
|
|
297
|
+
console.log(`${e.package} verified ${e.verified} ${e.candidate ? `→ ${e.candidate.version} (${e.candidate.tag})` : 'up to date'} [${e.grafts.join(', ')}]`);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
return EXIT.ok;
|
|
301
|
+
}),
|
|
302
|
+
});
|
|
303
|
+
const replayCmd = defineCommand({
|
|
304
|
+
meta: { name: 'replay', description: "Replay a graft's static checks across published upstream versions" },
|
|
305
|
+
args: {
|
|
306
|
+
...common,
|
|
307
|
+
id: { type: 'positional', required: true },
|
|
308
|
+
range: { type: 'string', description: 'Only versions in this semver range' },
|
|
309
|
+
prerelease: { type: 'boolean', description: 'Include prereleases' },
|
|
310
|
+
},
|
|
311
|
+
run: guarded(async (args) => {
|
|
312
|
+
const project = await open(args.root);
|
|
313
|
+
const entries = await replay(project, args.id, {
|
|
314
|
+
range: args.range,
|
|
315
|
+
prerelease: args.prerelease,
|
|
316
|
+
onProgress: args.json ? undefined : (e) => console.log(`${e.ok ? '✓' : '✗'} ${e.version.padEnd(12)} ${e.variant ?? '—'} ${e.ok ? '' : e.summary}`),
|
|
317
|
+
});
|
|
318
|
+
if (args.json)
|
|
319
|
+
console.log(JSON.stringify(entries, null, 2));
|
|
320
|
+
else
|
|
321
|
+
console.log(`${entries.filter((e) => e.ok).length}/${entries.length} versions pass static checks`);
|
|
322
|
+
return EXIT.ok;
|
|
323
|
+
}),
|
|
324
|
+
});
|
|
325
|
+
const show = defineCommand({
|
|
326
|
+
meta: { name: 'show', description: "A graft's intent, variants (resolved paths) and the variant selected for the installed version" },
|
|
327
|
+
args: { ...common, id: { type: 'positional', required: true, description: 'Graft id' } },
|
|
328
|
+
run: guarded(async (args) => {
|
|
329
|
+
const project = await open(args.root);
|
|
330
|
+
const graft = await project.get(args.id);
|
|
331
|
+
const fm = graft.frontmatter;
|
|
332
|
+
const installed = await project.currentVersion(graft);
|
|
333
|
+
const selected = installed ? project.selectVariant(graft, installed) : null;
|
|
334
|
+
const sections = Object.fromEntries(REQUIRED_SECTIONS.map((name) => [name, graft.sections.find((x) => x.title.toLowerCase() === name.toLowerCase())?.content ?? null]));
|
|
335
|
+
const value = {
|
|
336
|
+
id: graft.id,
|
|
337
|
+
file: graft.file,
|
|
338
|
+
dir: graft.dir,
|
|
339
|
+
frontmatter: fm,
|
|
340
|
+
sections,
|
|
341
|
+
variants: fm.variants.map((v) => project.resolveVariant(graft, v)),
|
|
342
|
+
installed: installed ?? null,
|
|
343
|
+
selectedForInstalled: selected?.module ?? null,
|
|
344
|
+
diagnostics: graft.diagnostics,
|
|
345
|
+
};
|
|
346
|
+
print(args.json, value, () => {
|
|
347
|
+
console.log(`${graft.id}: ${fm.rootstock.package} (verified ${fm.rootstock.verified}, installed ${installed ?? '—'}) · ${fm.mechanism} · ${fm.status}`);
|
|
348
|
+
for (const v of value.variants)
|
|
349
|
+
console.log(` ${v.module === value.selectedForInstalled ? '▶' : ' '} ${v.range.padEnd(20)} ${v.module}`);
|
|
350
|
+
console.log(` oracle: ${fm.oracle.command} [${fm.oracle.modes.join(', ')}]`);
|
|
351
|
+
for (const d of graft.diagnostics)
|
|
352
|
+
console.log(` ${d.severity}: ${d.message}`);
|
|
353
|
+
console.log(` intent: ${path.relative(process.cwd(), graft.file)}`);
|
|
354
|
+
});
|
|
355
|
+
return EXIT.ok;
|
|
356
|
+
}),
|
|
357
|
+
});
|
|
358
|
+
const preview = defineCommand({
|
|
359
|
+
meta: {
|
|
360
|
+
name: 'preview',
|
|
361
|
+
description: "Apply a graft's selected variant to pristine upstream and write the modified files to a folder for inspection (installs nothing)",
|
|
362
|
+
},
|
|
363
|
+
args: {
|
|
364
|
+
...common,
|
|
365
|
+
id: { type: 'positional', required: true, description: 'Graft id' },
|
|
366
|
+
version: { type: 'string', description: 'Upstream version (default: installed)' },
|
|
367
|
+
out: { type: 'string', description: 'Output folder (default: .grafts/.report/<id>/applied)' },
|
|
368
|
+
},
|
|
369
|
+
run: guarded(async (args) => {
|
|
370
|
+
const project = await open(args.root);
|
|
371
|
+
const outDir = args.out ? path.resolve(args.out) : path.join(project.reportDir, args.id, 'applied');
|
|
372
|
+
const result = await applyGraft(project, args.id, { version: args.version, outDir });
|
|
373
|
+
print(args.json, result, () => {
|
|
374
|
+
console.log(`${result.graft}: ${result.variant?.module ?? '(no variant)'} on ${result.version}`);
|
|
375
|
+
for (const f of result.files)
|
|
376
|
+
console.log(` ${f.error ? '✗' : '✓'} ${f.file}${f.outputPath ? ` → ${path.relative(process.cwd(), f.outputPath)}` : ''}${f.error ? ` (${f.error})` : ''}`);
|
|
377
|
+
for (const e of result.errors)
|
|
378
|
+
console.log(` ✗ ${e}`);
|
|
379
|
+
});
|
|
380
|
+
return result.ok ? EXIT.ok : EXIT.attention;
|
|
381
|
+
}),
|
|
382
|
+
});
|
|
383
|
+
const variantAdd = defineCommand({
|
|
384
|
+
meta: {
|
|
385
|
+
name: 'add',
|
|
386
|
+
description: 'Register a variant file you wrote for a version range. Never edits existing variants; narrows overlapping open-ended older ranges; appends History',
|
|
387
|
+
},
|
|
388
|
+
args: {
|
|
389
|
+
...common,
|
|
390
|
+
id: { type: 'positional', required: true, description: 'Graft id' },
|
|
391
|
+
range: { type: 'string', required: true, description: 'Semver range the variant is valid for, e.g. ">=5.0.0-0"' },
|
|
392
|
+
module: { type: 'string', required: true, description: 'Variant path relative to the graft directory, e.g. ./variants/v5.patch' },
|
|
393
|
+
'verify-version': { type: 'string', description: 'Refuse (and roll back) unless all anchors match at this version' },
|
|
394
|
+
narrow: { type: 'boolean', default: true, description: 'Narrow overlapping older ranges (--no-narrow to refuse instead)' },
|
|
395
|
+
note: { type: 'string', description: 'History note: what moved upstream and how the variant differs' },
|
|
396
|
+
},
|
|
397
|
+
run: guarded(async (args) => {
|
|
398
|
+
const project = await open(args.root);
|
|
399
|
+
const result = await recordVariant(project, args.id, { range: args.range, module: args.module, narrow: args.narrow }, { verifyVersion: args['verify-version'], note: args.note });
|
|
400
|
+
const value = { variants: result.graft.frontmatter.variants, narrowed: result.narrowed, anchors: result.anchors };
|
|
401
|
+
print(args.json, value, () => {
|
|
402
|
+
console.log(`recorded ${args.module} for "${args.range}"`);
|
|
403
|
+
for (const n of result.narrowed)
|
|
404
|
+
console.log(` narrowed ${n.module}: "${n.from}" → "${n.to}"`);
|
|
405
|
+
if (result.anchors)
|
|
406
|
+
printAnchors(result.anchors);
|
|
407
|
+
});
|
|
408
|
+
return EXIT.ok;
|
|
409
|
+
}),
|
|
410
|
+
});
|
|
411
|
+
const variant = defineCommand({
|
|
412
|
+
meta: { name: 'variant', description: 'Manage variants (add)' },
|
|
413
|
+
subCommands: { add: variantAdd },
|
|
414
|
+
});
|
|
415
|
+
const mark = defineCommand({
|
|
416
|
+
meta: {
|
|
417
|
+
name: 'mark',
|
|
418
|
+
description: `Set a graft's status (${GRAFT_STATUSES.join(' | ')}) and/or verified version, and append a History entry`,
|
|
419
|
+
},
|
|
420
|
+
args: {
|
|
421
|
+
...common,
|
|
422
|
+
id: { type: 'positional', required: true, description: 'Graft id' },
|
|
423
|
+
status: { type: 'string', description: GRAFT_STATUSES.join(' | ') },
|
|
424
|
+
verified: { type: 'string', description: 'Set rootstock.verified (only after the oracle passed at that version)' },
|
|
425
|
+
history: { type: 'string', description: 'History entry to append' },
|
|
426
|
+
},
|
|
427
|
+
run: guarded(async (args) => {
|
|
428
|
+
if (!args.status && !args.verified && !args.history)
|
|
429
|
+
throw new GraftError('nothing to change: pass --status, --verified and/or --history', 'cli/usage');
|
|
430
|
+
const project = await open(args.root);
|
|
431
|
+
if (args.verified)
|
|
432
|
+
await resolveVersion(project, await project.get(args.id, { allowConflicts: true }), args.verified);
|
|
433
|
+
const graft = await updateGraft(project, args.id, { status: args.status, verified: args.verified, history: args.history });
|
|
434
|
+
const value = { id: graft.id, status: graft.frontmatter.status, verified: graft.frontmatter.rootstock.verified };
|
|
435
|
+
print(args.json, value, () => console.log(`${value.id}: status ${value.status}, verified ${value.verified}`));
|
|
436
|
+
return EXIT.ok;
|
|
437
|
+
}),
|
|
438
|
+
});
|
|
439
|
+
export const main = defineCommand({
|
|
440
|
+
meta: { name: 'graft', version: '0.1.0', description: 'Keep local modifications to upstream packages in sync' },
|
|
441
|
+
subCommands: { init, add, show, apply, preview, status, check, diff, sync: syncCmd, verify, variant, mark, outdated: outdatedCmd, replay: replayCmd },
|
|
442
|
+
});
|
|
443
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,50 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graftsync/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The graft CLI: keep local modifications to upstream npm packages in sync.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/brandonroberts/graft.git",
|
|
10
|
+
"directory": "packages/cli"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/brandonroberts/graft#readme",
|
|
13
|
+
"bugs": "https://github.com/brandonroberts/graft/issues",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"graft",
|
|
16
|
+
"cli",
|
|
17
|
+
"patch",
|
|
18
|
+
"npm",
|
|
19
|
+
"upstream",
|
|
20
|
+
"sync"
|
|
21
|
+
],
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./package.json": "./package.json"
|
|
31
|
+
},
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"bin": {
|
|
34
|
+
"graft": "./dist/bin.js"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"citty": "^0.2.2",
|
|
41
|
+
"@graftsync/spec": "0.1.0",
|
|
42
|
+
"@graftsync/adapter-patch": "0.1.0",
|
|
43
|
+
"@graftsync/core": "0.1.0",
|
|
44
|
+
"@graftsync/skill": "0.1.0",
|
|
45
|
+
"@graftsync/adapter-fork": "0.1.0"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
}
|
|
6
50
|
}
|
package/README.md
DELETED