mewkit 1.6.8 → 1.7.1

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.
Files changed (88) hide show
  1. package/package.json +10 -2
  2. package/dist/commands/budget.d.ts +0 -6
  3. package/dist/commands/budget.d.ts.map +0 -1
  4. package/dist/commands/budget.js +0 -95
  5. package/dist/commands/budget.js.map +0 -1
  6. package/dist/commands/doctor.d.ts +0 -4
  7. package/dist/commands/doctor.d.ts.map +0 -1
  8. package/dist/commands/doctor.js +0 -365
  9. package/dist/commands/doctor.js.map +0 -1
  10. package/dist/commands/init.d.ts +0 -7
  11. package/dist/commands/init.d.ts.map +0 -1
  12. package/dist/commands/init.js +0 -309
  13. package/dist/commands/init.js.map +0 -1
  14. package/dist/commands/memory.d.ts +0 -9
  15. package/dist/commands/memory.d.ts.map +0 -1
  16. package/dist/commands/memory.js +0 -217
  17. package/dist/commands/memory.js.map +0 -1
  18. package/dist/commands/setup.d.ts +0 -16
  19. package/dist/commands/setup.d.ts.map +0 -1
  20. package/dist/commands/setup.js +0 -413
  21. package/dist/commands/setup.js.map +0 -1
  22. package/dist/commands/task.d.ts +0 -10
  23. package/dist/commands/task.d.ts.map +0 -1
  24. package/dist/commands/task.js +0 -313
  25. package/dist/commands/task.js.map +0 -1
  26. package/dist/commands/upgrade.d.ts +0 -7
  27. package/dist/commands/upgrade.d.ts.map +0 -1
  28. package/dist/commands/upgrade.js +0 -143
  29. package/dist/commands/upgrade.js.map +0 -1
  30. package/dist/commands/validate.d.ts +0 -2
  31. package/dist/commands/validate.d.ts.map +0 -1
  32. package/dist/commands/validate.js +0 -139
  33. package/dist/commands/validate.js.map +0 -1
  34. package/dist/core/compute-checksums.d.ts +0 -25
  35. package/dist/core/compute-checksums.d.ts.map +0 -1
  36. package/dist/core/compute-checksums.js +0 -105
  37. package/dist/core/compute-checksums.js.map +0 -1
  38. package/dist/core/core-logger.d.ts +0 -9
  39. package/dist/core/core-logger.d.ts.map +0 -1
  40. package/dist/core/core-logger.js +0 -31
  41. package/dist/core/core-logger.js.map +0 -1
  42. package/dist/core/dependency-installer.d.ts +0 -29
  43. package/dist/core/dependency-installer.d.ts.map +0 -1
  44. package/dist/core/dependency-installer.js +0 -150
  45. package/dist/core/dependency-installer.js.map +0 -1
  46. package/dist/core/github-releases.d.ts +0 -32
  47. package/dist/core/github-releases.d.ts.map +0 -1
  48. package/dist/core/github-releases.js +0 -96
  49. package/dist/core/github-releases.js.map +0 -1
  50. package/dist/core/index.d.ts +0 -12
  51. package/dist/core/index.d.ts.map +0 -1
  52. package/dist/core/index.js +0 -12
  53. package/dist/core/index.js.map +0 -1
  54. package/dist/core/merge-settings.d.ts +0 -7
  55. package/dist/core/merge-settings.d.ts.map +0 -1
  56. package/dist/core/merge-settings.js +0 -131
  57. package/dist/core/merge-settings.js.map +0 -1
  58. package/dist/core/skills-dependencies.d.ts +0 -25
  59. package/dist/core/skills-dependencies.d.ts.map +0 -1
  60. package/dist/core/skills-dependencies.js +0 -100
  61. package/dist/core/skills-dependencies.js.map +0 -1
  62. package/dist/core/smart-update-utils.d.ts +0 -10
  63. package/dist/core/smart-update-utils.d.ts.map +0 -1
  64. package/dist/core/smart-update-utils.js +0 -61
  65. package/dist/core/smart-update-utils.js.map +0 -1
  66. package/dist/core/smart-update.d.ts +0 -18
  67. package/dist/core/smart-update.d.ts.map +0 -1
  68. package/dist/core/smart-update.js +0 -177
  69. package/dist/core/smart-update.js.map +0 -1
  70. package/dist/core/substitute-placeholders.d.ts +0 -11
  71. package/dist/core/substitute-placeholders.d.ts.map +0 -1
  72. package/dist/core/substitute-placeholders.js +0 -28
  73. package/dist/core/substitute-placeholders.js.map +0 -1
  74. package/dist/core/validate-install.d.ts +0 -6
  75. package/dist/core/validate-install.d.ts.map +0 -1
  76. package/dist/core/validate-install.js +0 -97
  77. package/dist/core/validate-install.js.map +0 -1
  78. package/dist/index.d.ts +0 -3
  79. package/dist/index.d.ts.map +0 -1
  80. package/dist/index.js +0 -153
  81. package/dist/index.js.map +0 -1
  82. package/dist/lib/system-deps-registry.d.ts +0 -117
  83. package/dist/lib/system-deps-registry.d.ts.map +0 -1
  84. package/dist/lib/system-deps-registry.js +0 -234
  85. package/dist/lib/system-deps-registry.js.map +0 -1
  86. package/dist/logger.d.ts +0 -26
  87. package/dist/logger.js +0 -70
  88. package/dist/logger.js.map +0 -1
@@ -1,313 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import pc from "picocolors";
4
- // ── Helpers ──────────────────────────────────────────────────────────────────
5
- /** Format today as YYMMDD */
6
- function todayYYMMDD() {
7
- const d = new Date();
8
- const yy = String(d.getFullYear()).slice(2);
9
- const mm = String(d.getMonth() + 1).padStart(2, "0");
10
- const dd = String(d.getDate()).padStart(2, "0");
11
- return `${yy}${mm}${dd}`;
12
- }
13
- /** Format today as YYYY-MM-DD for frontmatter */
14
- function todayISO() {
15
- return new Date().toISOString().slice(0, 10);
16
- }
17
- /** Convert description to kebab-case slug */
18
- function toKebab(text) {
19
- return text
20
- .toLowerCase()
21
- .replace(/[^a-z0-9\s-]/g, "")
22
- .trim()
23
- .replace(/\s+/g, "-")
24
- .replace(/-+/g, "-")
25
- .slice(0, 60);
26
- }
27
- /** Walk up from cwd looking for tasks/active/ directory */
28
- function findTasksDir() {
29
- let current = process.cwd();
30
- while (true) {
31
- const candidate = path.join(current, "tasks", "active");
32
- if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
33
- return candidate;
34
- }
35
- const parent = path.dirname(current);
36
- if (parent === current)
37
- return null;
38
- current = parent;
39
- }
40
- }
41
- /** Walk up from cwd looking for tasks/ root (for --all scan) */
42
- function findTasksRoot() {
43
- let current = process.cwd();
44
- while (true) {
45
- const candidate = path.join(current, "tasks");
46
- if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
47
- return candidate;
48
- }
49
- const parent = path.dirname(current);
50
- if (parent === current)
51
- return null;
52
- current = parent;
53
- }
54
- }
55
- /** Parse YAML-style frontmatter between --- fences */
56
- function parseFrontmatter(content) {
57
- const match = /^---\n([\s\S]*?)\n---/.exec(content);
58
- if (!match)
59
- return {};
60
- const result = {};
61
- for (const line of match[1].split("\n")) {
62
- const colonIdx = line.indexOf(":");
63
- if (colonIdx === -1)
64
- continue;
65
- const key = line.slice(0, colonIdx).trim();
66
- const val = line
67
- .slice(colonIdx + 1)
68
- .trim()
69
- .replace(/^"(.*)"$/, "$1");
70
- if (key === "title")
71
- result.title = val;
72
- else if (key === "type")
73
- result.type = val;
74
- else if (key === "status")
75
- result.status = val;
76
- else if (key === "priority")
77
- result.priority = val;
78
- else if (key === "created")
79
- result.created = val;
80
- }
81
- return result;
82
- }
83
- /** Walk a directory recursively collecting .md file paths */
84
- function collectMdFiles(dir) {
85
- const results = [];
86
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
87
- const full = path.join(dir, entry.name);
88
- if (entry.isDirectory()) {
89
- results.push(...collectMdFiles(full));
90
- }
91
- else if (entry.isFile() && entry.name.endsWith(".md")) {
92
- results.push(full);
93
- }
94
- }
95
- return results;
96
- }
97
- /** Map template type to file suffix used in naming */
98
- function typeSuffix(type) {
99
- const map = {
100
- feature: "feature",
101
- "bug-fix": "bug",
102
- refactor: "refactor",
103
- security: "security",
104
- };
105
- return map[type];
106
- }
107
- /** Read template content from .claude/tasks/templates/ relative to project root */
108
- function readTemplate(type, projectRoot) {
109
- const templateNames = {
110
- feature: "feature-implementation.md",
111
- "bug-fix": "bug-fix.md",
112
- refactor: "refactor.md",
113
- security: "security-audit.md",
114
- };
115
- // Look in .claude/tasks/templates/ or tasks/templates/ under project root
116
- const candidates = [
117
- path.join(projectRoot, ".claude", "tasks", "templates", templateNames[type]),
118
- path.join(projectRoot, "tasks", "templates", templateNames[type]),
119
- path.join(projectRoot, "system", "tasks", "templates", templateNames[type]),
120
- ];
121
- for (const p of candidates) {
122
- if (fs.existsSync(p)) {
123
- return fs.readFileSync(p, "utf-8");
124
- }
125
- }
126
- return null;
127
- }
128
- /** Find project root by looking for tasks/ directory */
129
- function findProjectRoot() {
130
- let current = process.cwd();
131
- while (true) {
132
- if (fs.existsSync(path.join(current, "tasks")))
133
- return current;
134
- const parent = path.dirname(current);
135
- if (parent === current)
136
- return process.cwd();
137
- current = parent;
138
- }
139
- }
140
- // ── Table helpers ────────────────────────────────────────────────────────────
141
- function padEnd(str, len) {
142
- const s = str ?? "";
143
- return s.length >= len ? s.slice(0, len) : s + " ".repeat(len - s.length);
144
- }
145
- function statusColor(status) {
146
- switch (status) {
147
- case "done":
148
- return pc.green(padEnd(status, 12));
149
- case "in-progress":
150
- return pc.cyan(padEnd(status, 12));
151
- case "blocked":
152
- return pc.red(padEnd(status, 12));
153
- case "review":
154
- return pc.yellow(padEnd(status, 12));
155
- default:
156
- return pc.dim(padEnd(status, 12));
157
- }
158
- }
159
- function priorityColor(priority) {
160
- switch (priority) {
161
- case "high":
162
- return pc.red(padEnd(priority, 8));
163
- case "medium":
164
- return pc.yellow(padEnd(priority, 8));
165
- case "low":
166
- return pc.dim(padEnd(priority, 8));
167
- default:
168
- return pc.dim(padEnd(priority, 8));
169
- }
170
- }
171
- // ── Commands ─────────────────────────────────────────────────────────────────
172
- /** meowkit task new --type feature "description" */
173
- function taskNew(args) {
174
- const type = args.type ?? "feature";
175
- const validTypes = ["feature", "bug-fix", "refactor", "security"];
176
- if (!validTypes.includes(type)) {
177
- console.error(pc.red(`Invalid --type "${type}". Must be one of: ${validTypes.join(", ")}`));
178
- process.exit(1);
179
- }
180
- const description = args.description.trim();
181
- if (!description) {
182
- console.error(pc.red('Description is required. Usage: meowkit task new [--type feature] "description"'));
183
- process.exit(1);
184
- }
185
- // Resolve destination directory — create tasks/active/ if it doesn't exist
186
- let activeDir = findTasksDir();
187
- if (!activeDir) {
188
- // Create tasks/active/ under cwd
189
- activeDir = path.join(process.cwd(), "tasks", "active");
190
- fs.mkdirSync(activeDir, { recursive: true });
191
- }
192
- const slug = toKebab(description);
193
- const suffix = typeSuffix(type);
194
- const filename = `${todayYYMMDD()}-${slug}.${suffix}.md`;
195
- const destPath = path.join(activeDir, filename);
196
- if (fs.existsSync(destPath)) {
197
- console.error(pc.red(`File already exists: ${destPath}`));
198
- process.exit(1);
199
- }
200
- // Build frontmatter with filled-in values
201
- const priority = args.priority ?? "medium";
202
- const frontmatter = [
203
- "---",
204
- `title: "${description}"`,
205
- `type: ${type}`,
206
- `status: draft`,
207
- `phase: 1`,
208
- `priority: ${priority}`,
209
- `effort: medium`,
210
- `created: ${todayISO()}`,
211
- `branch: ${suffix}/${slug}`,
212
- `agent: ""`,
213
- "---",
214
- "",
215
- ].join("\n");
216
- // Try to get template body (everything after the frontmatter)
217
- const projectRoot = findProjectRoot();
218
- const templateContent = readTemplate(type, projectRoot);
219
- let body = "";
220
- if (templateContent) {
221
- // Strip template frontmatter, keep body
222
- const bodyMatch = /^---\n[\s\S]*?\n---\n([\s\S]*)/.exec(templateContent);
223
- body = bodyMatch ? bodyMatch[1] : templateContent;
224
- }
225
- else {
226
- body = `\n# ${description}\n\n<!-- Fill in sections from the template -->\n\n## Agent State\n\nCurrent phase: 1 — Planning\nLast action: Task file created\nNext action: Get Gate 1 approval before writing any tests or code\nBlockers: none\nDecisions made: none yet\n`;
227
- }
228
- fs.writeFileSync(destPath, frontmatter + body, "utf-8");
229
- console.log(`\n ${pc.green("✓")} Created: ${pc.bold(destPath)}\n`);
230
- }
231
- /** meowkit task list [--all] [--status done] */
232
- function taskList(args) {
233
- const root = args.all ? findTasksRoot() : findTasksDir();
234
- if (!root) {
235
- console.log(pc.dim("\n No tasks/ directory found. Run from a MeowKit project.\n"));
236
- return;
237
- }
238
- const files = collectMdFiles(root);
239
- if (files.length === 0) {
240
- console.log(pc.dim(`\n No task files found in ${root}\n`));
241
- return;
242
- }
243
- const rows = [];
244
- for (const file of files) {
245
- const content = fs.readFileSync(file, "utf-8");
246
- const fm = parseFrontmatter(content);
247
- const status = fm.status ?? "unknown";
248
- if (args.status && status !== args.status)
249
- continue;
250
- rows.push({
251
- status,
252
- type: fm.type ?? "unknown",
253
- priority: fm.priority ?? "medium",
254
- title: fm.title ?? path.basename(file, ".md"),
255
- relPath: path.relative(process.cwd(), file),
256
- });
257
- }
258
- if (rows.length === 0) {
259
- console.log(pc.dim(`\n No tasks with status "${args.status ?? "any"}"\n`));
260
- return;
261
- }
262
- const header = ` ${pc.bold(padEnd("Status", 12))}` +
263
- `${pc.bold(padEnd("Type", 14))}` +
264
- `${pc.bold(padEnd("Priority", 8))}` +
265
- ` ${pc.bold(padEnd("Title", 40))}` +
266
- ` ${pc.bold("Path")}`;
267
- const divider = " " + "─".repeat(100);
268
- console.log(`\n${header}`);
269
- console.log(divider);
270
- for (const row of rows) {
271
- const line = ` ${statusColor(row.status)}` +
272
- `${pc.dim(padEnd(row.type, 14))}` +
273
- `${priorityColor(row.priority)}` +
274
- ` ${padEnd(row.title, 40)}` +
275
- ` ${pc.dim(row.relPath)}`;
276
- console.log(line);
277
- }
278
- console.log(`\n ${pc.dim(`${rows.length} task${rows.length === 1 ? "" : "s"} found`)}\n`);
279
- }
280
- export function task(args) {
281
- const sub = args.subcommand;
282
- switch (sub) {
283
- case "new":
284
- taskNew({
285
- type: args.type,
286
- priority: args.priority,
287
- description: args.description ?? "",
288
- });
289
- break;
290
- case "list":
291
- taskList({
292
- all: args.all,
293
- status: args.status,
294
- });
295
- break;
296
- default: {
297
- console.log(`
298
- ${pc.bold("meowkit task")} — Manage task files
299
-
300
- ${pc.bold("Usage:")}
301
- meowkit task new [--type feature|bug-fix|refactor|security] [--priority high|medium|low] "description"
302
- meowkit task list [--all] [--status draft|in-progress|blocked|review|done]
303
-
304
- ${pc.bold("Examples:")}
305
- meowkit task new "Add user authentication"
306
- meowkit task new --type bug-fix --priority high "Fix null session crash"
307
- meowkit task list
308
- meowkit task list --all --status in-progress
309
- `);
310
- }
311
- }
312
- }
313
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export interface UpgradeArgs {
2
- check?: boolean;
3
- beta?: boolean;
4
- list?: boolean;
5
- }
6
- export declare function upgrade(args: UpgradeArgs): Promise<void>;
7
- //# sourceMappingURL=upgrade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAyID,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9D"}
@@ -1,143 +0,0 @@
1
- import fs from "node:fs";
2
- import { join } from "node:path";
3
- import pc from "picocolors";
4
- import { fetchReleases, downloadRelease, cleanupDownload, smartUpdate } from "../core/index.js";
5
- /** Read installed version from .claude/metadata.json (instant, no npx) */
6
- function getLocalVersion() {
7
- try {
8
- const raw = fs.readFileSync(join(process.cwd(), ".claude", "metadata.json"), "utf-8");
9
- const meta = JSON.parse(raw);
10
- return meta.version ?? null;
11
- }
12
- catch {
13
- return null;
14
- }
15
- }
16
- /** Format a date string as YYYY-MM-DD */
17
- function formatDate(iso) {
18
- return iso.split("T")[0];
19
- }
20
- /** Show available releases fetched from GitHub */
21
- async function listReleases(localVersion) {
22
- console.log(pc.dim("Fetching available releases from GitHub..."));
23
- const releases = await fetchReleases();
24
- const stable = releases.filter((r) => !r.isBeta);
25
- const beta = releases.filter((r) => r.isBeta);
26
- console.log();
27
- console.log(pc.bold("Channels:"));
28
- console.log(` ${pc.green("stable:")} ${stable[0]?.version ?? "none"}`);
29
- if (beta.length > 0) {
30
- console.log(` ${pc.yellow("beta:")} ${beta[0]?.version ?? "none"}`);
31
- }
32
- console.log();
33
- console.log(pc.bold("Recent releases:"));
34
- for (const r of releases.slice(0, 10)) {
35
- const installed = r.version === localVersion ? pc.cyan(" (installed)") : "";
36
- const label = r.isBeta ? pc.yellow(" (beta)") : "";
37
- console.log(` ${r.version}${label}${installed} ${pc.dim(formatDate(r.publishedAt))}`);
38
- }
39
- }
40
- /** Compare local vs latest GitHub release */
41
- async function checkVersion(localVersion, useBeta) {
42
- console.log(pc.dim("Checking for updates..."));
43
- const releases = await fetchReleases();
44
- const latestStable = releases.find((r) => !r.isBeta);
45
- const latestBeta = releases.find((r) => r.isBeta);
46
- console.log(`${pc.bold("Local version:")} ${localVersion ? pc.cyan(localVersion) : pc.dim("not installed")}`);
47
- if (latestStable) {
48
- console.log(`${pc.bold("Latest stable:")} ${pc.green(latestStable.version)} ${pc.dim(formatDate(latestStable.publishedAt))}`);
49
- }
50
- if (latestBeta) {
51
- console.log(`${pc.bold("Latest beta:")} ${pc.yellow(latestBeta.version)} ${pc.dim(formatDate(latestBeta.publishedAt))}`);
52
- }
53
- const compareTo = useBeta ? (latestBeta ?? latestStable) : latestStable;
54
- if (!compareTo) {
55
- console.log(pc.yellow("No releases found on GitHub."));
56
- return;
57
- }
58
- if (localVersion === compareTo.version) {
59
- console.log(pc.green("\nAlready up to date."));
60
- }
61
- else {
62
- console.log(pc.yellow(`\nUpdate available: ${localVersion ?? "none"} → ${compareTo.version}`));
63
- console.log(pc.dim("Run `npx mewkit upgrade` to install."));
64
- }
65
- }
66
- /** Perform the upgrade: download latest release and apply via smart update */
67
- async function performUpgrade(localVersion, useBeta) {
68
- console.log(pc.dim("Fetching latest release from GitHub..."));
69
- const releases = await fetchReleases();
70
- const latest = useBeta
71
- ? (releases.find((r) => r.isBeta) ?? releases.find((r) => !r.isBeta))
72
- : releases.find((r) => !r.isBeta);
73
- if (!latest) {
74
- console.error(pc.red("No releases found on GitHub."));
75
- process.exit(1);
76
- }
77
- if (localVersion === latest.version) {
78
- console.log(pc.green(`Already up to date (v${latest.version}).`));
79
- return;
80
- }
81
- console.log(`Upgrading: ${pc.dim(localVersion ?? "none")} → ${pc.cyan(latest.version)}`);
82
- console.log(pc.dim(`Downloading v${latest.version}...`));
83
- let sourceDir;
84
- try {
85
- sourceDir = await downloadRelease(latest);
86
- }
87
- catch (err) {
88
- const msg = err instanceof Error ? err.message : String(err);
89
- console.error(pc.red(`Download failed: ${msg}`));
90
- process.exit(1);
91
- }
92
- try {
93
- const config = {
94
- description: "",
95
- enableCostTracking: true,
96
- enableMemory: true,
97
- geminiApiKey: null,
98
- };
99
- const stats = await smartUpdate(config, sourceDir, process.cwd(), /* dryRun */ false, /* force */ false);
100
- console.log();
101
- console.log(pc.green(pc.bold("Upgrade complete!")));
102
- console.log(` ${pc.dim("Before:")} ${localVersion ?? "not installed"}`);
103
- console.log(` ${pc.dim("After:")} ${latest.version}`);
104
- console.log();
105
- console.log(` ${pc.green("added")} ${stats.added}`);
106
- console.log(` ${pc.cyan("updated")} ${stats.updated}`);
107
- console.log(` ${pc.dim("skipped")} ${stats.skipped}`);
108
- if (stats.userModified.length > 0) {
109
- console.log(pc.yellow(`\n ${stats.userModified.length} user-modified file(s) preserved (use --force to overwrite).`));
110
- }
111
- }
112
- finally {
113
- cleanupDownload(sourceDir);
114
- }
115
- }
116
- export async function upgrade(args) {
117
- const localVersion = getLocalVersion();
118
- const useBeta = args.beta ?? false;
119
- if (localVersion) {
120
- const isBeta = localVersion.includes("-beta") || localVersion.includes("-rc");
121
- console.log(`${pc.bold("Current version:")} ${pc.cyan(localVersion)}${isBeta ? pc.dim(" (beta)") : ""}`);
122
- }
123
- else {
124
- console.log(`${pc.bold("Current version:")} ${pc.dim("not installed")}`);
125
- }
126
- try {
127
- if (args.list) {
128
- await listReleases(localVersion);
129
- return;
130
- }
131
- if (args.check) {
132
- await checkVersion(localVersion, useBeta);
133
- return;
134
- }
135
- await performUpgrade(localVersion, useBeta);
136
- }
137
- catch (err) {
138
- const msg = err instanceof Error ? err.message : String(err);
139
- console.error(pc.red(`upgrade failed: ${msg}`));
140
- process.exit(1);
141
- }
142
- }
143
- //# sourceMappingURL=upgrade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function validate(): Promise<void>;
2
- //# sourceMappingURL=validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAwHA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C9C"}
@@ -1,139 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import pc from "picocolors";
4
- /** Find MeowKit .claude/ in cwd only (no walk-up). */
5
- function findMeowkitDir(startDir) {
6
- const candidate = path.join(startDir, ".claude");
7
- if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
8
- return candidate;
9
- }
10
- return null;
11
- }
12
- function checkFileExists(meowkitDir, relativePath) {
13
- const fullPath = path.join(meowkitDir, relativePath);
14
- const exists = fs.existsSync(fullPath);
15
- return {
16
- name: `File exists: ${relativePath}`,
17
- passed: exists,
18
- detail: exists ? fullPath : `Missing: ${fullPath}`,
19
- };
20
- }
21
- function checkDirExists(meowkitDir, relativePath) {
22
- const fullPath = path.join(meowkitDir, relativePath);
23
- const exists = fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory();
24
- return {
25
- name: `Directory exists: ${relativePath}`,
26
- passed: exists,
27
- detail: exists ? fullPath : `Missing: ${fullPath}`,
28
- };
29
- }
30
- function checkHooksExecutable(meowkitDir) {
31
- const hooksDir = path.join(meowkitDir, "hooks");
32
- const results = [];
33
- if (!fs.existsSync(hooksDir)) {
34
- results.push({
35
- name: "Hooks directory",
36
- passed: false,
37
- detail: `Missing: ${hooksDir}`,
38
- });
39
- return results;
40
- }
41
- const hookFiles = fs.readdirSync(hooksDir).filter((f) => !f.startsWith("."));
42
- if (hookFiles.length === 0) {
43
- results.push({
44
- name: "Hooks present",
45
- passed: false,
46
- detail: "No hook files found in hooks/",
47
- });
48
- return results;
49
- }
50
- for (const hook of hookFiles) {
51
- const hookPath = path.join(hooksDir, hook);
52
- try {
53
- fs.accessSync(hookPath, fs.constants.X_OK);
54
- results.push({
55
- name: `Hook executable: ${hook}`,
56
- passed: true,
57
- detail: hookPath,
58
- });
59
- }
60
- catch {
61
- results.push({
62
- name: `Hook executable: ${hook}`,
63
- passed: false,
64
- detail: `Not executable: ${hookPath}`,
65
- });
66
- }
67
- }
68
- return results;
69
- }
70
- function checkConfigJson(meowkitDir) {
71
- const configPath = path.join(meowkitDir, "meowkit.config.json");
72
- if (!fs.existsSync(configPath)) {
73
- return {
74
- name: "Config JSON valid",
75
- passed: false,
76
- detail: `Missing: ${configPath}`,
77
- };
78
- }
79
- try {
80
- const content = fs.readFileSync(configPath, "utf-8");
81
- JSON.parse(content);
82
- return {
83
- name: "Config JSON valid",
84
- passed: true,
85
- detail: configPath,
86
- };
87
- }
88
- catch (error) {
89
- const message = error instanceof Error ? error.message : String(error);
90
- return {
91
- name: "Config JSON valid",
92
- passed: false,
93
- detail: `Invalid JSON: ${message}`,
94
- };
95
- }
96
- }
97
- function printResult(result) {
98
- const icon = result.passed ? pc.green("PASS") : pc.red("FAIL");
99
- console.log(` [${icon}] ${result.name}`);
100
- if (!result.passed) {
101
- console.log(` ${pc.dim(result.detail)}`);
102
- }
103
- }
104
- export async function validate() {
105
- console.log(pc.bold(pc.cyan("Validating .claude/ project structure...")));
106
- console.log();
107
- const meowkitDir = findMeowkitDir(process.cwd());
108
- if (!meowkitDir) {
109
- console.error(pc.red("Could not find .claude/ directory in current or parent directories."));
110
- process.exit(1);
111
- }
112
- console.log(`${pc.dim("Found:")} ${meowkitDir}`);
113
- console.log();
114
- const results = [];
115
- // Required directories
116
- results.push(checkDirExists(meowkitDir, "agents"));
117
- results.push(checkDirExists(meowkitDir, "hooks"));
118
- // CLAUDE.md lives at project root (Claude Code reads it from there)
119
- const projectRoot = path.dirname(meowkitDir);
120
- results.push(checkFileExists(projectRoot, "CLAUDE.md"));
121
- // Hooks executable
122
- results.push(...checkHooksExecutable(meowkitDir));
123
- // Config JSON
124
- results.push(checkConfigJson(meowkitDir));
125
- for (const result of results) {
126
- printResult(result);
127
- }
128
- console.log();
129
- const passCount = results.filter((r) => r.passed).length;
130
- const failCount = results.filter((r) => !r.passed).length;
131
- if (failCount === 0) {
132
- console.log(pc.green(pc.bold(`All ${passCount} checks passed.`)));
133
- }
134
- else {
135
- console.log(`${pc.green(`${passCount} passed`)}, ${pc.red(`${failCount} failed`)}`);
136
- process.exit(1);
137
- }
138
- }
139
- //# sourceMappingURL=validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}