@mindfoldhq/trellis 0.5.0-rc.1 → 0.5.0-rc.3
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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/uninstall.d.ts +27 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +313 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +17 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/claude.d.ts.map +1 -1
- package/dist/configurators/claude.js +2 -2
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +11 -6
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/copilot.d.ts.map +1 -1
- package/dist/configurators/copilot.js +6 -4
- package/dist/configurators/copilot.js.map +1 -1
- package/dist/configurators/gemini.d.ts +6 -2
- package/dist/configurators/gemini.d.ts.map +1 -1
- package/dist/configurators/gemini.js +11 -4
- package/dist/configurators/gemini.js.map +1 -1
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +19 -6
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/opencode.d.ts.map +1 -1
- package/dist/configurators/opencode.js +2 -2
- package/dist/configurators/opencode.js.map +1 -1
- package/dist/configurators/pi.d.ts.map +1 -1
- package/dist/configurators/pi.js +8 -7
- package/dist/configurators/pi.js.map +1 -1
- package/dist/configurators/shared.d.ts +52 -0
- package/dist/configurators/shared.d.ts.map +1 -1
- package/dist/configurators/shared.js +173 -24
- package/dist/configurators/shared.js.map +1 -1
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +3 -2
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -1
- package/dist/templates/extract.d.ts.map +1 -1
- package/dist/templates/extract.js +4 -1
- package/dist/templates/extract.js.map +1 -1
- package/dist/templates/gemini/agents/trellis-check.md +0 -1
- package/dist/templates/gemini/agents/trellis-implement.md +0 -1
- package/dist/templates/gemini/agents/trellis-research.md +0 -1
- package/dist/templates/gemini/settings.json +1 -1
- package/dist/templates/shared-hooks/inject-workflow-state.py +15 -2
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +1 -0
- package/dist/types/ai-tools.js.map +1 -1
- package/dist/utils/uninstall-scrubbers.d.ts +65 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +320 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import chalk from "chalk";
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { init } from "../commands/init.js";
|
|
6
6
|
import { update } from "../commands/update.js";
|
|
7
|
+
import { uninstall } from "../commands/uninstall.js";
|
|
7
8
|
import { DIR_NAMES } from "../constants/paths.js";
|
|
8
9
|
import { VERSION, PACKAGE_NAME } from "../constants/version.js";
|
|
9
10
|
import { compareVersions } from "../utils/compare-versions.js";
|
|
@@ -107,5 +108,25 @@ program
|
|
|
107
108
|
process.exit(1);
|
|
108
109
|
}
|
|
109
110
|
});
|
|
111
|
+
program
|
|
112
|
+
.command("uninstall")
|
|
113
|
+
.description("Remove all trellis files (managed platform files + .trellis/) from this project")
|
|
114
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
115
|
+
.option("--dry-run", "List what would be removed without changing anything")
|
|
116
|
+
.action(async (options) => {
|
|
117
|
+
try {
|
|
118
|
+
await uninstall({
|
|
119
|
+
yes: options.yes,
|
|
120
|
+
dryRun: options.dryRun,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error(chalk.red("Error:"), error instanceof Error ? error.message : error);
|
|
125
|
+
if (process.env.DEBUG || process.env.TRELLIS_DEBUG) {
|
|
126
|
+
console.error(error instanceof Error ? error.stack : error);
|
|
127
|
+
}
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
110
131
|
program.parse();
|
|
111
132
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `trellis uninstall` — remove every file written by `trellis init` / `update`
|
|
3
|
+
* from the current project, plus the `.trellis/` directory itself.
|
|
4
|
+
*
|
|
5
|
+
* The single source of truth for "what trellis wrote" is
|
|
6
|
+
* `.trellis/.template-hashes.json`. Files outside that manifest are never
|
|
7
|
+
* touched (e.g. user-added hooks under `.cursor/hooks/`).
|
|
8
|
+
*
|
|
9
|
+
* Manifest-listed files split into two groups:
|
|
10
|
+
* A. Opaque content files (`.py` / `.md` / `.ts` / etc.) — unlinked outright.
|
|
11
|
+
* B. Structured config files (settings.json / hooks.json / config.toml /
|
|
12
|
+
* package.json) — passed through a scrubber that strips just the trellis
|
|
13
|
+
* fields, leaving user-added neighbors intact. If the scrubber says the
|
|
14
|
+
* file is fully empty afterwards, we delete it.
|
|
15
|
+
*
|
|
16
|
+
* Whether the user has modified a manifest-listed file or not, it is removed
|
|
17
|
+
* (per the PRD: "全删"). The `.trellis/` tree is removed unconditionally.
|
|
18
|
+
*/
|
|
19
|
+
export interface UninstallOptions {
|
|
20
|
+
yes?: boolean;
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Entry point.
|
|
25
|
+
*/
|
|
26
|
+
export declare function uninstall(options?: UninstallOptions): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoBH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAgUD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE7E"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `trellis uninstall` — remove every file written by `trellis init` / `update`
|
|
3
|
+
* from the current project, plus the `.trellis/` directory itself.
|
|
4
|
+
*
|
|
5
|
+
* The single source of truth for "what trellis wrote" is
|
|
6
|
+
* `.trellis/.template-hashes.json`. Files outside that manifest are never
|
|
7
|
+
* touched (e.g. user-added hooks under `.cursor/hooks/`).
|
|
8
|
+
*
|
|
9
|
+
* Manifest-listed files split into two groups:
|
|
10
|
+
* A. Opaque content files (`.py` / `.md` / `.ts` / etc.) — unlinked outright.
|
|
11
|
+
* B. Structured config files (settings.json / hooks.json / config.toml /
|
|
12
|
+
* package.json) — passed through a scrubber that strips just the trellis
|
|
13
|
+
* fields, leaving user-added neighbors intact. If the scrubber says the
|
|
14
|
+
* file is fully empty afterwards, we delete it.
|
|
15
|
+
*
|
|
16
|
+
* Whether the user has modified a manifest-listed file or not, it is removed
|
|
17
|
+
* (per the PRD: "全删"). The `.trellis/` tree is removed unconditionally.
|
|
18
|
+
*/
|
|
19
|
+
import fs from "node:fs";
|
|
20
|
+
import path from "node:path";
|
|
21
|
+
import readline from "node:readline";
|
|
22
|
+
import chalk from "chalk";
|
|
23
|
+
import inquirer from "inquirer";
|
|
24
|
+
import { DIR_NAMES } from "../constants/paths.js";
|
|
25
|
+
import { loadHashes } from "../utils/template-hash.js";
|
|
26
|
+
import { cleanupEmptyDirs } from "./update.js";
|
|
27
|
+
import { ALL_MANAGED_DIRS } from "../configurators/index.js";
|
|
28
|
+
import { scrubHooksJson, scrubOpencodePackageJson, scrubPiSettings, scrubCodexConfigToml, } from "../utils/uninstall-scrubbers.js";
|
|
29
|
+
/**
|
|
30
|
+
* Build the dispatch table for structured config scrubbers.
|
|
31
|
+
*
|
|
32
|
+
* Keys are POSIX paths exactly as they appear in `.template-hashes.json`.
|
|
33
|
+
*/
|
|
34
|
+
function buildStructuredFileSpecs() {
|
|
35
|
+
const specs = [
|
|
36
|
+
// Nested hooks.{Event}.[].hooks.[] schema
|
|
37
|
+
...[
|
|
38
|
+
".claude/settings.json",
|
|
39
|
+
".gemini/settings.json",
|
|
40
|
+
".factory/settings.json",
|
|
41
|
+
".codebuddy/settings.json",
|
|
42
|
+
".qoder/settings.json",
|
|
43
|
+
".codex/hooks.json",
|
|
44
|
+
].map((p) => ({
|
|
45
|
+
posixPath: p,
|
|
46
|
+
reason: "Strip trellis hooks; preserve user fields",
|
|
47
|
+
scrub: (content, deletedPaths) => scrubHooksJson(content, deletedPaths, "nested"),
|
|
48
|
+
})),
|
|
49
|
+
// Flat hooks.{Event}.[] schema
|
|
50
|
+
...[".cursor/hooks.json", ".github/copilot/hooks.json"].map((p) => ({
|
|
51
|
+
posixPath: p,
|
|
52
|
+
reason: "Strip trellis hooks; preserve user fields",
|
|
53
|
+
scrub: (content, deletedPaths) => scrubHooksJson(content, deletedPaths, "flat"),
|
|
54
|
+
})),
|
|
55
|
+
{
|
|
56
|
+
posixPath: ".opencode/package.json",
|
|
57
|
+
reason: "Remove @opencode-ai/plugin dep; preserve other deps",
|
|
58
|
+
scrub: (content) => scrubOpencodePackageJson(content),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
posixPath: ".pi/settings.json",
|
|
62
|
+
reason: "Strip trellis extension/skills/prompts entries; preserve user fields",
|
|
63
|
+
scrub: (content) => scrubPiSettings(content),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
posixPath: ".codex/config.toml",
|
|
67
|
+
reason: "Remove trellis project_doc_fallback_filenames and notes",
|
|
68
|
+
scrub: (content) => scrubCodexConfigToml(content),
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const map = new Map();
|
|
72
|
+
for (const spec of specs) {
|
|
73
|
+
map.set(spec.posixPath, spec);
|
|
74
|
+
}
|
|
75
|
+
return map;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Walk through the manifest and decide, for each entry, whether it is a plain
|
|
79
|
+
* deletion or a structured modification (or fully-empty modification → still
|
|
80
|
+
* a deletion at the end).
|
|
81
|
+
*/
|
|
82
|
+
function buildPlan(cwd, hashes) {
|
|
83
|
+
const structured = buildStructuredFileSpecs();
|
|
84
|
+
const allPosixPaths = Object.keys(hashes);
|
|
85
|
+
const deletions = [];
|
|
86
|
+
const modifications = [];
|
|
87
|
+
for (const posixPath of allPosixPaths) {
|
|
88
|
+
const absPath = path.join(cwd, ...posixPath.split("/"));
|
|
89
|
+
const spec = structured.get(posixPath);
|
|
90
|
+
if (!spec) {
|
|
91
|
+
deletions.push({
|
|
92
|
+
posixPath,
|
|
93
|
+
absPath,
|
|
94
|
+
missing: !fs.existsSync(absPath),
|
|
95
|
+
});
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (!fs.existsSync(absPath)) {
|
|
99
|
+
// Structured file expected by manifest is gone — nothing to do for it.
|
|
100
|
+
deletions.push({ posixPath, absPath, missing: true });
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const content = fs.readFileSync(absPath, "utf-8");
|
|
104
|
+
const result = spec.scrub(content, allPosixPaths);
|
|
105
|
+
if (result.fullyEmpty) {
|
|
106
|
+
// Strip + delete: nothing meaningful left in the file.
|
|
107
|
+
deletions.push({ posixPath, absPath, missing: false });
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
modifications.push({
|
|
111
|
+
posixPath,
|
|
112
|
+
absPath,
|
|
113
|
+
reason: spec.reason,
|
|
114
|
+
result,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
deletions,
|
|
120
|
+
modifications,
|
|
121
|
+
removeTrellisDir: true,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Render the two-column uninstall plan to stdout.
|
|
126
|
+
*/
|
|
127
|
+
function renderPlan(cwd, plan) {
|
|
128
|
+
const trellisDir = path.join(cwd, DIR_NAMES.WORKFLOW);
|
|
129
|
+
console.log(chalk.bold("\nTrellis uninstall plan\n"));
|
|
130
|
+
const deletePaths = plan.deletions
|
|
131
|
+
.filter((d) => !d.missing)
|
|
132
|
+
.map((d) => d.posixPath);
|
|
133
|
+
console.log(chalk.red.bold(`Will be deleted (${deletePaths.length + 1} entries):`));
|
|
134
|
+
for (const p of deletePaths) {
|
|
135
|
+
console.log(` ${chalk.red("-")} ${p}`);
|
|
136
|
+
}
|
|
137
|
+
if (plan.removeTrellisDir && fs.existsSync(trellisDir)) {
|
|
138
|
+
console.log(` ${chalk.red("-")} ${DIR_NAMES.WORKFLOW}/ ${chalk.gray("(entire directory, including tasks/runtime/config)")}`);
|
|
139
|
+
}
|
|
140
|
+
if (plan.modifications.length > 0) {
|
|
141
|
+
console.log();
|
|
142
|
+
console.log(chalk.yellow.bold(`Will be modified (${plan.modifications.length} files):`));
|
|
143
|
+
for (const m of plan.modifications) {
|
|
144
|
+
console.log(` ${chalk.yellow("~")} ${m.posixPath} ${chalk.gray(`(${m.reason})`)}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const skipped = plan.deletions.filter((d) => d.missing);
|
|
148
|
+
if (skipped.length > 0) {
|
|
149
|
+
console.log();
|
|
150
|
+
console.log(chalk.gray(`(${skipped.length} manifest entries already missing on disk — skipped.)`));
|
|
151
|
+
}
|
|
152
|
+
console.log();
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Prompt `Continue? [Y/n]` with default = yes. Returns true if user agrees.
|
|
156
|
+
*
|
|
157
|
+
* We use `inquirer` to match update.ts so the CLI behaves consistently and
|
|
158
|
+
* tests can mock the same library.
|
|
159
|
+
*/
|
|
160
|
+
async function promptContinue() {
|
|
161
|
+
const { proceed } = await inquirer.prompt([
|
|
162
|
+
{
|
|
163
|
+
type: "confirm",
|
|
164
|
+
name: "proceed",
|
|
165
|
+
message: "Continue?",
|
|
166
|
+
default: true,
|
|
167
|
+
},
|
|
168
|
+
]);
|
|
169
|
+
return proceed;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Execute the plan: write modifications, unlink deletions, remove `.trellis/`,
|
|
173
|
+
* then prune empty managed directories.
|
|
174
|
+
*
|
|
175
|
+
* Returns counts for the summary.
|
|
176
|
+
*/
|
|
177
|
+
function executePlan(cwd, plan) {
|
|
178
|
+
let deletedFiles = 0;
|
|
179
|
+
let modifiedFiles = 0;
|
|
180
|
+
// 1. Modifications first (preserve user data even if a later step fails).
|
|
181
|
+
for (const mod of plan.modifications) {
|
|
182
|
+
fs.writeFileSync(mod.absPath, mod.result.content);
|
|
183
|
+
modifiedFiles += 1;
|
|
184
|
+
}
|
|
185
|
+
// 2. Deletions (skip already-missing entries).
|
|
186
|
+
const deletedDirCandidates = new Set();
|
|
187
|
+
for (const del of plan.deletions) {
|
|
188
|
+
if (del.missing)
|
|
189
|
+
continue;
|
|
190
|
+
try {
|
|
191
|
+
fs.unlinkSync(del.absPath);
|
|
192
|
+
deletedFiles += 1;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Best-effort: a file that can't be unlinked (e.g. perm error) is
|
|
196
|
+
// surfaced via the summary mismatch, but we don't want to abort
|
|
197
|
+
// halfway through.
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
deletedDirCandidates.add(path.posix.dirname(del.posixPath));
|
|
201
|
+
}
|
|
202
|
+
// 3. Drop `.trellis/` entirely.
|
|
203
|
+
let deletedDirs = 0;
|
|
204
|
+
if (plan.removeTrellisDir) {
|
|
205
|
+
const trellisDir = path.join(cwd, DIR_NAMES.WORKFLOW);
|
|
206
|
+
if (fs.existsSync(trellisDir)) {
|
|
207
|
+
fs.rmSync(trellisDir, { recursive: true, force: true });
|
|
208
|
+
deletedDirs += 1;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// 4. Recursively clean up now-empty managed subdirectories (e.g. empty
|
|
212
|
+
// `.claude/hooks/` after every file inside was removed). This will not
|
|
213
|
+
// touch managed root dirs themselves (`.claude`, `.cursor`, etc.) — those
|
|
214
|
+
// are guarded by `isManagedRootDir` inside `cleanupEmptyDirs`.
|
|
215
|
+
for (const dirPosix of deletedDirCandidates) {
|
|
216
|
+
if (dirPosix === "." || dirPosix === "")
|
|
217
|
+
continue;
|
|
218
|
+
cleanupEmptyDirs(cwd, dirPosix);
|
|
219
|
+
}
|
|
220
|
+
// 5. Final pass: remove any platform root dir (`.claude`, `.cursor`,
|
|
221
|
+
// `.agents/skills`, …) that is now empty. We deliberately handle this here
|
|
222
|
+
// — `cleanupEmptyDirs` refuses to touch managed root dirs because in normal
|
|
223
|
+
// `update` flow they must persist. During uninstall, an empty platform root
|
|
224
|
+
// has no purpose. `.trellis` is already gone (step 3), so we skip it.
|
|
225
|
+
// Process deepest-first so that nested managed dirs (e.g. `.agents/skills`)
|
|
226
|
+
// are removed before their parents (`.agents`).
|
|
227
|
+
const sortedManagedDirs = [...ALL_MANAGED_DIRS]
|
|
228
|
+
.filter((d) => d !== DIR_NAMES.WORKFLOW)
|
|
229
|
+
.sort((a, b) => b.split("/").length - a.split("/").length);
|
|
230
|
+
for (const managedDir of sortedManagedDirs) {
|
|
231
|
+
const abs = path.join(cwd, ...managedDir.split("/"));
|
|
232
|
+
if (!fs.existsSync(abs))
|
|
233
|
+
continue;
|
|
234
|
+
try {
|
|
235
|
+
const stat = fs.statSync(abs);
|
|
236
|
+
if (!stat.isDirectory())
|
|
237
|
+
continue;
|
|
238
|
+
if (fs.readdirSync(abs).length === 0) {
|
|
239
|
+
fs.rmdirSync(abs);
|
|
240
|
+
deletedDirs += 1;
|
|
241
|
+
// After removing a nested dir, its parent may now be empty. Walk up
|
|
242
|
+
// until we hit something non-empty or leave the cwd. We keep this
|
|
243
|
+
// loop bounded to managed-dir territory by checking that the next
|
|
244
|
+
// parent posix path is still a managed dir (or an ancestor of one).
|
|
245
|
+
let parentPosix = managedDir.split("/").slice(0, -1).join("/");
|
|
246
|
+
while (parentPosix.length > 0) {
|
|
247
|
+
const parentAbs = path.join(cwd, ...parentPosix.split("/"));
|
|
248
|
+
if (!fs.existsSync(parentAbs))
|
|
249
|
+
break;
|
|
250
|
+
if (fs.readdirSync(parentAbs).length !== 0)
|
|
251
|
+
break;
|
|
252
|
+
fs.rmdirSync(parentAbs);
|
|
253
|
+
deletedDirs += 1;
|
|
254
|
+
parentPosix = parentPosix.split("/").slice(0, -1).join("/");
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Best-effort cleanup; ignore permission/race errors.
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return { deletedFiles, modifiedFiles, deletedDirs };
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Entry point.
|
|
266
|
+
*/
|
|
267
|
+
export async function uninstall(options = {}) {
|
|
268
|
+
const cwd = process.cwd();
|
|
269
|
+
const trellisDir = path.join(cwd, DIR_NAMES.WORKFLOW);
|
|
270
|
+
// Pre-check 1: must have a `.trellis/` directory.
|
|
271
|
+
if (!fs.existsSync(trellisDir)) {
|
|
272
|
+
console.log(chalk.gray("Trellis is not installed in this project (no .trellis/ directory found)."));
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
// Pre-check 2: must have a manifest. Without it we cannot determine which
|
|
276
|
+
// platform files are trellis-owned vs user-owned.
|
|
277
|
+
const hashes = loadHashes(cwd);
|
|
278
|
+
if (Object.keys(hashes).length === 0) {
|
|
279
|
+
console.error(chalk.red("Trellis directory found but manifest is missing — cannot determine which platform files to remove. " +
|
|
280
|
+
"You can manually delete .trellis/ if needed."));
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
const plan = buildPlan(cwd, hashes);
|
|
284
|
+
renderPlan(cwd, plan);
|
|
285
|
+
if (options.dryRun) {
|
|
286
|
+
console.log(chalk.gray("Dry run — no files were modified."));
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
if (!options.yes) {
|
|
290
|
+
// Make sure stdin is in a usable state for the prompt; in scripted
|
|
291
|
+
// environments that closed stdin, inquirer would otherwise raise. We
|
|
292
|
+
// honor the same UX as `trellis update` (which also fails closed in
|
|
293
|
+
// that case).
|
|
294
|
+
if (!process.stdin.isTTY) {
|
|
295
|
+
console.error(chalk.red("Refusing to prompt for confirmation in a non-interactive shell. " +
|
|
296
|
+
"Pass --yes/-y to confirm or --dry-run to preview."));
|
|
297
|
+
// Try to release the readline ref if anything else opened stdin.
|
|
298
|
+
readline.createInterface({ input: process.stdin }).close();
|
|
299
|
+
process.exit(1);
|
|
300
|
+
}
|
|
301
|
+
const ok = await promptContinue();
|
|
302
|
+
if (!ok) {
|
|
303
|
+
console.log(chalk.yellow("Uninstall cancelled. No files modified."));
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
const summary = executePlan(cwd, plan);
|
|
308
|
+
console.log();
|
|
309
|
+
console.log(chalk.green(`Uninstalled trellis: ${summary.deletedFiles} files deleted, ` +
|
|
310
|
+
`${summary.modifiedFiles} files modified, ` +
|
|
311
|
+
`${summary.deletedDirs} directories removed.`));
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,uBAAuB,CAAC;AAkC/B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmZD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA6DzD;AAwbD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAerE;AAqbD;;;GAGG;AACH,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAgCnE;AAED;;;;GAIG;AACH,0CAA0C;AAC1C,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,aAAa,EAAE,GAC1B,aAAa,EAAE,CAajB;AAuMD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+vBlE"}
|
package/dist/commands/update.js
CHANGED
|
@@ -16,6 +16,7 @@ import { getAllScripts,
|
|
|
16
16
|
configYamlTemplate, gitignoreTemplate, workflowMdTemplate, } from "../templates/trellis/index.js";
|
|
17
17
|
import { agentsMdContent } from "../templates/markdown/index.js";
|
|
18
18
|
import { ALL_MANAGED_DIRS, getConfiguredPlatforms, collectPlatformTemplates, isManagedPath, isManagedRootDir, } from "../configurators/index.js";
|
|
19
|
+
import { replacePythonCommandLiterals } from "../configurators/shared.js";
|
|
19
20
|
const CLAUDE_SETTINGS_PATH = ".claude/settings.json";
|
|
20
21
|
const TRELLIS_BLOCK_START = "<!-- TRELLIS:START -->";
|
|
21
22
|
const TRELLIS_BLOCK_END = "<!-- TRELLIS:END -->";
|
|
@@ -391,8 +392,19 @@ function needsCodexUpgrade(cwd) {
|
|
|
391
392
|
if (fs.existsSync(path.join(cwd, ".codex"))) {
|
|
392
393
|
return false;
|
|
393
394
|
}
|
|
395
|
+
// Codex-only marker: legacy Codex installs always tracked the
|
|
396
|
+
// command-as-skill files `trellis-continue/SKILL.md` and
|
|
397
|
+
// `trellis-finish-work/SKILL.md` under `.agents/skills/`. Other platforms
|
|
398
|
+
// that share `.agents/skills/` (e.g. Gemini CLI 0.40+ via the workspace
|
|
399
|
+
// alias — issue #224) only write the 5 workflow skills (brainstorm,
|
|
400
|
+
// before-dev, check, break-loop, update-spec) and never these two
|
|
401
|
+
// command files, so their presence in the hash file is a reliable signal
|
|
402
|
+
// that the project was originally configured with Codex before `.codex/`
|
|
403
|
+
// existed as a separate config dir.
|
|
394
404
|
const hashes = loadHashes(cwd);
|
|
395
|
-
|
|
405
|
+
const keys = Object.keys(hashes);
|
|
406
|
+
return (keys.some((key) => key === ".agents/skills/trellis-continue/SKILL.md") ||
|
|
407
|
+
keys.some((key) => key === ".agents/skills/trellis-finish-work/SKILL.md"));
|
|
396
408
|
}
|
|
397
409
|
function preserveExistingClaudeStatusLine(cwd, templates) {
|
|
398
410
|
const newSettingsContent = templates.get(CLAUDE_SETTINGS_PATH);
|
|
@@ -481,6 +493,10 @@ bypassUpdateSkip = false) {
|
|
|
481
493
|
}
|
|
482
494
|
}
|
|
483
495
|
}
|
|
496
|
+
// Apply python3→python replacement for Windows consistency with init-time writes
|
|
497
|
+
for (const [filePath, content] of files) {
|
|
498
|
+
files.set(filePath, replacePythonCommandLiterals(content));
|
|
499
|
+
}
|
|
484
500
|
return files;
|
|
485
501
|
}
|
|
486
502
|
/**
|