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.
- package/package.json +10 -2
- package/dist/commands/budget.d.ts +0 -6
- package/dist/commands/budget.d.ts.map +0 -1
- package/dist/commands/budget.js +0 -95
- package/dist/commands/budget.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -4
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -365
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts +0 -7
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -309
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -9
- package/dist/commands/memory.d.ts.map +0 -1
- package/dist/commands/memory.js +0 -217
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -16
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -413
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/task.d.ts +0 -10
- package/dist/commands/task.d.ts.map +0 -1
- package/dist/commands/task.js +0 -313
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -7
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js +0 -143
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -2
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -139
- package/dist/commands/validate.js.map +0 -1
- package/dist/core/compute-checksums.d.ts +0 -25
- package/dist/core/compute-checksums.d.ts.map +0 -1
- package/dist/core/compute-checksums.js +0 -105
- package/dist/core/compute-checksums.js.map +0 -1
- package/dist/core/core-logger.d.ts +0 -9
- package/dist/core/core-logger.d.ts.map +0 -1
- package/dist/core/core-logger.js +0 -31
- package/dist/core/core-logger.js.map +0 -1
- package/dist/core/dependency-installer.d.ts +0 -29
- package/dist/core/dependency-installer.d.ts.map +0 -1
- package/dist/core/dependency-installer.js +0 -150
- package/dist/core/dependency-installer.js.map +0 -1
- package/dist/core/github-releases.d.ts +0 -32
- package/dist/core/github-releases.d.ts.map +0 -1
- package/dist/core/github-releases.js +0 -96
- package/dist/core/github-releases.js.map +0 -1
- package/dist/core/index.d.ts +0 -12
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -12
- package/dist/core/index.js.map +0 -1
- package/dist/core/merge-settings.d.ts +0 -7
- package/dist/core/merge-settings.d.ts.map +0 -1
- package/dist/core/merge-settings.js +0 -131
- package/dist/core/merge-settings.js.map +0 -1
- package/dist/core/skills-dependencies.d.ts +0 -25
- package/dist/core/skills-dependencies.d.ts.map +0 -1
- package/dist/core/skills-dependencies.js +0 -100
- package/dist/core/skills-dependencies.js.map +0 -1
- package/dist/core/smart-update-utils.d.ts +0 -10
- package/dist/core/smart-update-utils.d.ts.map +0 -1
- package/dist/core/smart-update-utils.js +0 -61
- package/dist/core/smart-update-utils.js.map +0 -1
- package/dist/core/smart-update.d.ts +0 -18
- package/dist/core/smart-update.d.ts.map +0 -1
- package/dist/core/smart-update.js +0 -177
- package/dist/core/smart-update.js.map +0 -1
- package/dist/core/substitute-placeholders.d.ts +0 -11
- package/dist/core/substitute-placeholders.d.ts.map +0 -1
- package/dist/core/substitute-placeholders.js +0 -28
- package/dist/core/substitute-placeholders.js.map +0 -1
- package/dist/core/validate-install.d.ts +0 -6
- package/dist/core/validate-install.d.ts.map +0 -1
- package/dist/core/validate-install.js +0 -97
- package/dist/core/validate-install.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -153
- package/dist/index.js.map +0 -1
- package/dist/lib/system-deps-registry.d.ts +0 -117
- package/dist/lib/system-deps-registry.d.ts.map +0 -1
- package/dist/lib/system-deps-registry.js +0 -234
- package/dist/lib/system-deps-registry.js.map +0 -1
- package/dist/logger.d.ts +0 -26
- package/dist/logger.js +0 -70
- package/dist/logger.js.map +0 -1
package/dist/commands/init.js
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import * as p from "@clack/prompts";
|
|
4
|
-
import pc from "picocolors";
|
|
5
|
-
import { fetchReleases, downloadRelease, cleanupDownload, smartUpdate, validate } from "../core/index.js";
|
|
6
|
-
import { promptAndInstallSystemDeps } from "./setup.js";
|
|
7
|
-
import { getRequirementsSource, formatPackageList } from "../core/skills-dependencies.js";
|
|
8
|
-
import { ensureVenv, installPipPackages } from "../core/dependency-installer.js";
|
|
9
|
-
/** Detect if this is a fresh install or an update */
|
|
10
|
-
function detectMode(targetDir) {
|
|
11
|
-
return fs.existsSync(join(targetDir, ".claude")) ? "update" : "new";
|
|
12
|
-
}
|
|
13
|
-
/** Build @clack/prompts options from release list (top 4 + manual entry) */
|
|
14
|
-
function buildReleaseOptions(releases, beta) {
|
|
15
|
-
const latestStable = releases.find((r) => !r.isBeta);
|
|
16
|
-
const pool = beta ? releases : releases.filter((r) => !r.isBeta);
|
|
17
|
-
const options = pool.slice(0, 4).map((r) => ({
|
|
18
|
-
value: r.tag,
|
|
19
|
-
label: `${r.version}${r.isBeta ? pc.yellow(" (beta)") : ""}${r.tag === latestStable?.tag ? pc.green(" (latest)") : ""}`,
|
|
20
|
-
hint: r.publishedAt.split("T")[0],
|
|
21
|
-
}));
|
|
22
|
-
options.push({ value: "__manual__", label: pc.dim("Enter version manually..."), hint: "" });
|
|
23
|
-
return options;
|
|
24
|
-
}
|
|
25
|
-
/** Cancel-safe wrapper: exits on Ctrl+C */
|
|
26
|
-
function cancelCheck(value) {
|
|
27
|
-
if (p.isCancel(value)) {
|
|
28
|
-
p.cancel("Installation cancelled.");
|
|
29
|
-
process.exit(0);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/** Prompt the user for project description, skill deps, and Gemini key */
|
|
33
|
-
async function promptNewInstall() {
|
|
34
|
-
const description = await p.text({
|
|
35
|
-
message: "Describe your project (optional)",
|
|
36
|
-
placeholder: "Press Enter to skip",
|
|
37
|
-
validate() {
|
|
38
|
-
return undefined;
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
cancelCheck(description);
|
|
42
|
-
// Skills dependencies prompt (before Gemini key — more common question first)
|
|
43
|
-
const installDeps = await p.confirm({
|
|
44
|
-
message: "Install Python skill dependencies? (into .claude/skills/.venv)",
|
|
45
|
-
initialValue: false,
|
|
46
|
-
});
|
|
47
|
-
const shouldInstallDeps = p.isCancel(installDeps) ? false : installDeps;
|
|
48
|
-
// --- API Keys ---
|
|
49
|
-
const addGeminiKey = await p.confirm({
|
|
50
|
-
message: "Add Gemini API key? (recommended — analysis, image gen, video gen)",
|
|
51
|
-
initialValue: false,
|
|
52
|
-
});
|
|
53
|
-
cancelCheck(addGeminiKey);
|
|
54
|
-
let geminiApiKey = null;
|
|
55
|
-
if (addGeminiKey) {
|
|
56
|
-
const keyInput = await p.password({
|
|
57
|
-
message: "Enter your Gemini API key (get one at aistudio.google.com/apikey)",
|
|
58
|
-
validate(value) {
|
|
59
|
-
if (!value || value.trim().length === 0)
|
|
60
|
-
return "API key is required";
|
|
61
|
-
if (value.trim().length < 10)
|
|
62
|
-
return "Key too short — check aistudio.google.com/apikey";
|
|
63
|
-
return undefined;
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
cancelCheck(keyInput);
|
|
67
|
-
geminiApiKey = typeof keyInput === "string" ? keyInput.trim() : null;
|
|
68
|
-
}
|
|
69
|
-
// External provider keys (optional fallback)
|
|
70
|
-
const externalProviderKeys = {};
|
|
71
|
-
const EXTERNAL_PROVIDERS = [
|
|
72
|
-
{
|
|
73
|
-
id: "minimax",
|
|
74
|
-
name: "MiniMax",
|
|
75
|
-
description: "TTS (332 voices), music, Hailuo video, image fallback",
|
|
76
|
-
envVar: "MEOWKIT_MINIMAX_API_KEY",
|
|
77
|
-
setupUrl: "platform.minimax.io",
|
|
78
|
-
extraEnvVars: {},
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
id: "openrouter",
|
|
82
|
-
name: "OpenRouter",
|
|
83
|
-
description: "Image gen fallback (Flux models)",
|
|
84
|
-
envVar: "MEOWKIT_OPENROUTER_API_KEY",
|
|
85
|
-
setupUrl: "openrouter.ai/keys",
|
|
86
|
-
extraEnvVars: { MEOWKIT_OPENROUTER_FALLBACK_ENABLED: "true" },
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
|
-
const addFallback = await p.confirm({
|
|
90
|
-
message: "Add fallback API keys for external providers? (optional)",
|
|
91
|
-
initialValue: false,
|
|
92
|
-
});
|
|
93
|
-
if (addFallback && !p.isCancel(addFallback)) {
|
|
94
|
-
const choices = await p.multiselect({
|
|
95
|
-
message: "Select external providers:",
|
|
96
|
-
options: EXTERNAL_PROVIDERS.map((prov) => ({
|
|
97
|
-
value: prov.id,
|
|
98
|
-
label: prov.name,
|
|
99
|
-
hint: prov.description,
|
|
100
|
-
})),
|
|
101
|
-
required: false,
|
|
102
|
-
});
|
|
103
|
-
if (!p.isCancel(choices)) {
|
|
104
|
-
for (const providerId of choices) {
|
|
105
|
-
const provider = EXTERNAL_PROVIDERS.find((pr) => pr.id === providerId);
|
|
106
|
-
if (!provider)
|
|
107
|
-
continue;
|
|
108
|
-
const keyInput = await p.password({
|
|
109
|
-
message: `Enter your ${provider.name} API key (get one at ${provider.setupUrl})`,
|
|
110
|
-
validate(value) {
|
|
111
|
-
if (!value || value.trim().length === 0)
|
|
112
|
-
return "API key is required";
|
|
113
|
-
return undefined;
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
if (p.isCancel(keyInput))
|
|
117
|
-
continue;
|
|
118
|
-
externalProviderKeys[provider.envVar] = String(keyInput).trim();
|
|
119
|
-
for (const [k, v] of Object.entries(provider.extraEnvVars)) {
|
|
120
|
-
externalProviderKeys[k] = v;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
description: typeof description === "string" ? description.trim() : "",
|
|
127
|
-
enableCostTracking: true,
|
|
128
|
-
enableMemory: true,
|
|
129
|
-
geminiApiKey,
|
|
130
|
-
externalProviderKeys: Object.keys(externalProviderKeys).length > 0 ? externalProviderKeys : undefined,
|
|
131
|
-
installDeps: shouldInstallDeps,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/** Print install/update summary */
|
|
135
|
-
function printSummary(stats, dryRun) {
|
|
136
|
-
console.log(`\n${pc.bold("Summary:")}`);
|
|
137
|
-
if (stats.added > 0)
|
|
138
|
-
console.log(` ${pc.green("added")} ${stats.added}`);
|
|
139
|
-
if (stats.updated > 0)
|
|
140
|
-
console.log(` ${pc.cyan("updated")} ${stats.updated}`);
|
|
141
|
-
if (stats.skipped > 0)
|
|
142
|
-
console.log(` ${pc.dim("skipped")} ${stats.skipped}`);
|
|
143
|
-
if (stats.userModified.length > 0) {
|
|
144
|
-
console.log(pc.yellow(`\n ${stats.userModified.length} user-modified file(s) preserved:`));
|
|
145
|
-
stats.userModified.slice(0, 8).forEach((f) => console.log(` ${pc.dim(f)}`));
|
|
146
|
-
if (stats.userModified.length > 8)
|
|
147
|
-
console.log(` ${pc.dim(`...and ${stats.userModified.length - 8} more`)}`);
|
|
148
|
-
}
|
|
149
|
-
if (!dryRun) {
|
|
150
|
-
console.log(`\n${pc.bold("Next steps:")}`);
|
|
151
|
-
console.log(` ${pc.dim("1.")} Run ${pc.bold("npx mewkit setup")} for guided configuration`);
|
|
152
|
-
console.log(` ${pc.dim("2.")} Run ${pc.bold("npx mewkit doctor")} to verify your environment`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
export async function init(args) {
|
|
156
|
-
const targetDir = process.cwd();
|
|
157
|
-
const mode = detectMode(targetDir);
|
|
158
|
-
const dryRun = args.dryRun ?? false;
|
|
159
|
-
const force = args.force ?? false;
|
|
160
|
-
p.intro(pc.bgCyan(pc.black(" meowkit init ")));
|
|
161
|
-
if (dryRun)
|
|
162
|
-
p.log.warn("Dry-run mode — no files will be written.");
|
|
163
|
-
if (mode === "update")
|
|
164
|
-
p.log.info("Existing .claude/ detected — running in update mode.");
|
|
165
|
-
// Step 1: Fetch releases
|
|
166
|
-
const releaseSpinner = p.spinner();
|
|
167
|
-
releaseSpinner.start("Fetching available releases...");
|
|
168
|
-
let releases;
|
|
169
|
-
try {
|
|
170
|
-
releases = await fetchReleases();
|
|
171
|
-
}
|
|
172
|
-
catch (err) {
|
|
173
|
-
releaseSpinner.stop("Failed to fetch releases");
|
|
174
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
175
|
-
p.cancel(`Cannot fetch releases from GitHub: ${msg}`);
|
|
176
|
-
process.exit(1);
|
|
177
|
-
}
|
|
178
|
-
if (releases.length === 0) {
|
|
179
|
-
releaseSpinner.stop("No releases found");
|
|
180
|
-
p.cancel("No releases available on GitHub.");
|
|
181
|
-
process.exit(1);
|
|
182
|
-
}
|
|
183
|
-
releaseSpinner.stop(`Found ${releases.length} release(s)`);
|
|
184
|
-
// Step 2: Version picker
|
|
185
|
-
const options = buildReleaseOptions(releases, args.beta ?? false);
|
|
186
|
-
const latestStable = releases.find((r) => !r.isBeta);
|
|
187
|
-
const selected = await p.select({
|
|
188
|
-
message: "Select MeowKit version to install",
|
|
189
|
-
options,
|
|
190
|
-
initialValue: latestStable?.tag ?? releases[0].tag,
|
|
191
|
-
});
|
|
192
|
-
if (p.isCancel(selected)) {
|
|
193
|
-
p.cancel("Installation cancelled.");
|
|
194
|
-
process.exit(0);
|
|
195
|
-
}
|
|
196
|
-
let selectedTag = selected;
|
|
197
|
-
// Handle manual version entry
|
|
198
|
-
if (selectedTag === "__manual__") {
|
|
199
|
-
const manualVersion = await p.text({
|
|
200
|
-
message: "Enter version tag (e.g. v1.4.0)",
|
|
201
|
-
placeholder: "v1.4.0",
|
|
202
|
-
validate(value) {
|
|
203
|
-
if (!value || !value.trim())
|
|
204
|
-
return "Version is required";
|
|
205
|
-
return undefined;
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
cancelCheck(manualVersion);
|
|
209
|
-
selectedTag = manualVersion.trim();
|
|
210
|
-
// Ensure tag has 'v' prefix for consistency
|
|
211
|
-
if (!selectedTag.startsWith("v"))
|
|
212
|
-
selectedTag = `v${selectedTag}`;
|
|
213
|
-
}
|
|
214
|
-
const release = releases.find((r) => r.tag === selectedTag);
|
|
215
|
-
if (!release) {
|
|
216
|
-
p.cancel(`Version ${selectedTag} not found. Available: ${releases
|
|
217
|
-
.slice(0, 5)
|
|
218
|
-
.map((r) => r.tag)
|
|
219
|
-
.join(", ")}`);
|
|
220
|
-
process.exit(1);
|
|
221
|
-
}
|
|
222
|
-
// Step 3: Config prompts (new installs only)
|
|
223
|
-
let config;
|
|
224
|
-
if (mode === "new") {
|
|
225
|
-
config = await promptNewInstall();
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
config = { description: "", enableCostTracking: true, enableMemory: true, geminiApiKey: null, installDeps: false };
|
|
229
|
-
}
|
|
230
|
-
// Step 4: Download release
|
|
231
|
-
const downloadSpinner = p.spinner();
|
|
232
|
-
downloadSpinner.start(`Downloading v${release.version}...`);
|
|
233
|
-
let sourceDir;
|
|
234
|
-
try {
|
|
235
|
-
sourceDir = await downloadRelease(release);
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
downloadSpinner.stop("Download failed");
|
|
239
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
240
|
-
p.cancel(`Failed to download release: ${msg}`);
|
|
241
|
-
process.exit(1);
|
|
242
|
-
}
|
|
243
|
-
downloadSpinner.stop(`Downloaded v${release.version}`);
|
|
244
|
-
try {
|
|
245
|
-
// Step 5: Apply via smart update
|
|
246
|
-
const updateSpinner = p.spinner();
|
|
247
|
-
updateSpinner.start("Applying files...");
|
|
248
|
-
const stats = await smartUpdate(config, sourceDir, targetDir, dryRun, force);
|
|
249
|
-
updateSpinner.stop(`Applied: ${stats.added} added, ${stats.updated} updated, ${stats.skipped} skipped`);
|
|
250
|
-
// Security confirmation for API keys
|
|
251
|
-
const hasAnyKey = config.geminiApiKey || config.externalProviderKeys;
|
|
252
|
-
if (hasAnyKey && !dryRun) {
|
|
253
|
-
p.log.success("API keys saved to .claude/.env (local only — never committed to git)");
|
|
254
|
-
}
|
|
255
|
-
// Step 6: Validate (skip dry-run)
|
|
256
|
-
if (!dryRun) {
|
|
257
|
-
const validateSpinner = p.spinner();
|
|
258
|
-
validateSpinner.start("Validating installation...");
|
|
259
|
-
const result = validate(targetDir);
|
|
260
|
-
if (result.valid) {
|
|
261
|
-
validateSpinner.stop("Validation passed");
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
validateSpinner.stop(`Validation: ${result.issues.length} issue(s) — run \`mewkit validate\` for details`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
// Step 7: System dependencies (optional, skipped on dry-run)
|
|
268
|
-
// Flat list from registry — no per-skill ownership shown (locked decision #4).
|
|
269
|
-
// Each dep rendered as: [ ] Name (~NMB) — all unchecked by default.
|
|
270
|
-
if (!dryRun) {
|
|
271
|
-
console.log(`\n${pc.bold("? Phase 2: System dependencies")} ${pc.dim("(optional)")}`);
|
|
272
|
-
await promptAndInstallSystemDeps(targetDir);
|
|
273
|
-
}
|
|
274
|
-
// Step 8: Skills dependencies (if user opted in during config)
|
|
275
|
-
if (!dryRun && config.installDeps) {
|
|
276
|
-
console.log(`\n${pc.bold("? Phase 3: Skills dependencies")}`);
|
|
277
|
-
const { packages, source } = getRequirementsSource(targetDir);
|
|
278
|
-
console.log(pc.dim(`\n Packages (from ${source}):\n`));
|
|
279
|
-
console.log(pc.dim(formatPackageList(packages)));
|
|
280
|
-
console.log();
|
|
281
|
-
try {
|
|
282
|
-
const { created } = ensureVenv(targetDir);
|
|
283
|
-
if (created)
|
|
284
|
-
console.log(` ${pc.green("✓")} Python venv created`);
|
|
285
|
-
const results = await installPipPackages(targetDir, packages);
|
|
286
|
-
const failed = results.filter((r) => !r.success);
|
|
287
|
-
if (failed.length === 0) {
|
|
288
|
-
console.log(`\n ${pc.green("✓")} All ${results.length} packages installed`);
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
console.log(`\n ${pc.yellow("!")} ${results.length - failed.length} installed, ${failed.length} failed`);
|
|
292
|
-
console.log(pc.dim(` Re-run: npx mewkit setup --only=deps`));
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
catch (err) {
|
|
296
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
297
|
-
console.log(` ${pc.red("✗")} ${msg}`);
|
|
298
|
-
console.log(pc.dim(` Install later: npx mewkit setup --only=deps`));
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// Step 9: Summary
|
|
302
|
-
printSummary(stats, dryRun);
|
|
303
|
-
p.outro(pc.green(mode === "new" ? "MeowKit installed!" : "MeowKit updated!"));
|
|
304
|
-
}
|
|
305
|
-
finally {
|
|
306
|
-
cleanupDownload(sourceDir);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
interface MemoryArgs {
|
|
2
|
-
clear?: boolean;
|
|
3
|
-
show?: boolean;
|
|
4
|
-
stats?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare function findMemoryDir(startDir?: string): string | null;
|
|
7
|
-
export declare function memory(args: MemoryArgs): Promise<void>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAWD,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB9D;AAkMD,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5D"}
|
package/dist/commands/memory.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import readline from "node:readline";
|
|
4
|
-
import pc from "picocolors";
|
|
5
|
-
// Walks up at most 5 levels, stopping at a project root sentinel (CLAUDE.md or
|
|
6
|
-
// .claude/settings.json) so `mewkit memory --clear` can't reach a parent
|
|
7
|
-
// project's memory. Accepts optional startDir for testability; defaults to
|
|
8
|
-
// process.cwd().
|
|
9
|
-
export function findMemoryDir(startDir) {
|
|
10
|
-
const PROJECT_ROOT_SENTINELS = ["CLAUDE.md", ".claude/settings.json"];
|
|
11
|
-
let current = startDir ?? process.cwd();
|
|
12
|
-
for (let depth = 0; depth < 5; depth++) {
|
|
13
|
-
const candidate = path.join(current, ".claude", "memory");
|
|
14
|
-
if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
|
|
15
|
-
return candidate;
|
|
16
|
-
}
|
|
17
|
-
// Stop if we've reached a project root (has CLAUDE.md or .claude/settings.json)
|
|
18
|
-
const atRoot = PROJECT_ROOT_SENTINELS.some((s) => fs.existsSync(path.join(current, s)));
|
|
19
|
-
// Sentinel must fire at depth 0 too. If CWD has CLAUDE.md but no memory
|
|
20
|
-
// dir, the walk must STOP here — not continue into the parent project.
|
|
21
|
-
if (atRoot)
|
|
22
|
-
return null;
|
|
23
|
-
const parent = path.dirname(current);
|
|
24
|
-
if (parent === current)
|
|
25
|
-
return null; // filesystem root
|
|
26
|
-
current = parent;
|
|
27
|
-
}
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
function promptConfirmation(question) {
|
|
31
|
-
const rl = readline.createInterface({
|
|
32
|
-
input: process.stdin,
|
|
33
|
-
output: process.stdout,
|
|
34
|
-
});
|
|
35
|
-
return new Promise((resolve) => {
|
|
36
|
-
rl.question(question, (answer) => {
|
|
37
|
-
rl.close();
|
|
38
|
-
resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
// Writes valid schema v2.0.0 skeletons to the three split JSON files.
|
|
43
|
-
const EMPTY_SKELETON = (scope, consumer) => JSON.stringify({
|
|
44
|
-
version: "2.0.0",
|
|
45
|
-
scope,
|
|
46
|
-
consumer,
|
|
47
|
-
patterns: [],
|
|
48
|
-
metadata: {
|
|
49
|
-
created: new Date().toISOString().split("T")[0],
|
|
50
|
-
last_updated: new Date().toISOString().split("T")[0],
|
|
51
|
-
},
|
|
52
|
-
}, null, 2);
|
|
53
|
-
const SPLIT_FILES = [
|
|
54
|
-
{ file: "fixes.json", scope: "fixes", consumer: "meow:fix" },
|
|
55
|
-
{
|
|
56
|
-
file: "review-patterns.json",
|
|
57
|
-
scope: "review-patterns",
|
|
58
|
-
consumer: "meow:review,meow:plan-creator",
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
file: "architecture-decisions.json",
|
|
62
|
-
scope: "architecture-decisions",
|
|
63
|
-
consumer: "meow:plan-creator,meow:cook",
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
async function clearMemory(memoryDir) {
|
|
67
|
-
const confirmed = await promptConfirmation(pc.yellow("This will clear all learned patterns and lessons. Continue? (y/N) "));
|
|
68
|
-
if (!confirmed) {
|
|
69
|
-
console.log(pc.dim("Aborted."));
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Clear v2 split files with valid skeletons
|
|
73
|
-
for (const { file, scope, consumer } of SPLIT_FILES) {
|
|
74
|
-
const p = path.join(memoryDir, file);
|
|
75
|
-
if (fs.existsSync(p)) {
|
|
76
|
-
fs.writeFileSync(p, EMPTY_SKELETON(scope, consumer), "utf-8");
|
|
77
|
-
console.log(` ${pc.green("Cleared")} ${file}`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Clear topic markdown files
|
|
81
|
-
const topicFiles = ["fixes.md", "review-patterns.md", "architecture-decisions.md", "security-notes.md"];
|
|
82
|
-
for (const tf of topicFiles) {
|
|
83
|
-
const p = path.join(memoryDir, tf);
|
|
84
|
-
if (fs.existsSync(p)) {
|
|
85
|
-
fs.writeFileSync(p, "", "utf-8");
|
|
86
|
-
console.log(` ${pc.green("Cleared")} ${tf}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
console.log();
|
|
90
|
-
console.log(pc.green("Memory cleared."));
|
|
91
|
-
}
|
|
92
|
-
function showLessons(memoryDir) {
|
|
93
|
-
const lessonsPath = path.join(memoryDir, "lessons.md");
|
|
94
|
-
if (!fs.existsSync(lessonsPath)) {
|
|
95
|
-
console.log(pc.dim("No lessons.md file found."));
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const content = fs.readFileSync(lessonsPath, "utf-8");
|
|
99
|
-
if (content.trim().length === 0) {
|
|
100
|
-
console.log(pc.dim("lessons.md is empty."));
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
console.log(pc.bold("Lessons:"));
|
|
104
|
-
console.log();
|
|
105
|
-
console.log(content);
|
|
106
|
-
}
|
|
107
|
-
function showStats(memoryDir) {
|
|
108
|
-
let patternsCount = 0;
|
|
109
|
-
let lastUpdated = "unknown";
|
|
110
|
-
// Aggregate patterns across the three split files.
|
|
111
|
-
for (const { file } of SPLIT_FILES) {
|
|
112
|
-
const p = path.join(memoryDir, file);
|
|
113
|
-
if (fs.existsSync(p)) {
|
|
114
|
-
try {
|
|
115
|
-
const content = fs.readFileSync(p, "utf-8");
|
|
116
|
-
const data = JSON.parse(content);
|
|
117
|
-
const entries = data.patterns ?? [];
|
|
118
|
-
patternsCount += entries.length;
|
|
119
|
-
for (const entry of entries) {
|
|
120
|
-
const ts = entry.lastSeen ?? entry.timestamp ?? "";
|
|
121
|
-
if (ts && (ts > lastUpdated || lastUpdated === "unknown")) {
|
|
122
|
-
lastUpdated = ts;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
// Ignore parse errors
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// Count entries in topic markdown files as proxy for "sessions"
|
|
132
|
-
let sessionsCount = 0;
|
|
133
|
-
for (const tf of ["fixes.md", "review-patterns.md", "architecture-decisions.md"]) {
|
|
134
|
-
const p = path.join(memoryDir, tf);
|
|
135
|
-
if (fs.existsSync(p)) {
|
|
136
|
-
const content = fs.readFileSync(p, "utf-8");
|
|
137
|
-
const headings = content.match(/^## /gm);
|
|
138
|
-
sessionsCount += headings ? headings.length : 0;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// Check file modification time as fallback for last updated
|
|
142
|
-
if (lastUpdated === "unknown") {
|
|
143
|
-
const files = SPLIT_FILES.map(({ file }) => path.join(memoryDir, file)).filter((f) => fs.existsSync(f));
|
|
144
|
-
for (const file of files) {
|
|
145
|
-
const stat = fs.statSync(file);
|
|
146
|
-
const mtime = stat.mtime.toISOString();
|
|
147
|
-
if (mtime > lastUpdated || lastUpdated === "unknown") {
|
|
148
|
-
lastUpdated = mtime;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
console.log(pc.bold("Memory Stats:"));
|
|
153
|
-
console.log(` ${pc.dim("Entries captured:")} ${pc.cyan(String(sessionsCount))}`);
|
|
154
|
-
console.log(` ${pc.dim("Patterns learned:")} ${pc.cyan(String(patternsCount))}`);
|
|
155
|
-
console.log(` ${pc.dim("Last updated:")} ${pc.cyan(lastUpdated === "unknown" ? "never" : lastUpdated)}`);
|
|
156
|
-
}
|
|
157
|
-
function showSummary(memoryDir) {
|
|
158
|
-
console.log(pc.bold("Memory Summary:"));
|
|
159
|
-
console.log();
|
|
160
|
-
// Topic markdown files
|
|
161
|
-
for (const tf of ["fixes.md", "review-patterns.md", "architecture-decisions.md", "security-notes.md"]) {
|
|
162
|
-
const p = path.join(memoryDir, tf);
|
|
163
|
-
const label = `${tf}:`.padEnd(28);
|
|
164
|
-
if (fs.existsSync(p)) {
|
|
165
|
-
const content = fs.readFileSync(p, "utf-8");
|
|
166
|
-
const lineCount = content.trim().length === 0 ? 0 : content.split("\n").length;
|
|
167
|
-
console.log(` ${pc.dim(label)} ${pc.cyan(`${lineCount} lines`)}`);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
console.log(` ${pc.dim(label)} ${pc.yellow("not found")}`);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
console.log();
|
|
174
|
-
// Split JSON files — the canonical pattern/decision stores.
|
|
175
|
-
for (const { file } of SPLIT_FILES) {
|
|
176
|
-
const p = path.join(memoryDir, file);
|
|
177
|
-
const label = `${file}:`.padEnd(28);
|
|
178
|
-
if (fs.existsSync(p)) {
|
|
179
|
-
try {
|
|
180
|
-
const content = fs.readFileSync(p, "utf-8");
|
|
181
|
-
const data = JSON.parse(content);
|
|
182
|
-
const count = data.patterns?.length ?? 0;
|
|
183
|
-
console.log(` ${pc.dim(label)} ${pc.cyan(`${count} entries`)}`);
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
console.log(` ${pc.dim(label)} ${pc.red("invalid JSON")}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
console.log(` ${pc.dim(label)} ${pc.yellow("not found")}`);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
export async function memory(args) {
|
|
195
|
-
console.log(pc.bold(pc.cyan("Agent Memory")));
|
|
196
|
-
console.log();
|
|
197
|
-
const memoryDir = findMemoryDir();
|
|
198
|
-
if (!memoryDir) {
|
|
199
|
-
console.error(pc.red("Could not find .claude/memory/ directory."));
|
|
200
|
-
process.exit(1);
|
|
201
|
-
}
|
|
202
|
-
console.log(`${pc.dim("Location:")} ${memoryDir}`);
|
|
203
|
-
console.log();
|
|
204
|
-
if (args.clear) {
|
|
205
|
-
await clearMemory(memoryDir);
|
|
206
|
-
}
|
|
207
|
-
else if (args.show) {
|
|
208
|
-
showLessons(memoryDir);
|
|
209
|
-
}
|
|
210
|
-
else if (args.stats) {
|
|
211
|
-
showStats(memoryDir);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
showSummary(memoryDir);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
//# sourceMappingURL=memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,YAAY,CAAC;AAa5B,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,iBAAiB;AACjB,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC9C,MAAM,sBAAsB,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACtE,IAAI,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,gFAAgF;QAChF,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CACpC,CAAC;QACF,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,CAAC,kBAAkB;QACvD,OAAO,GAAG,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAChC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE,CAClE,IAAI,CAAC,SAAS,CACb;IACC,OAAO,EAAE,OAAO;IAChB,KAAK;IACL,QAAQ;IACR,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE;QACT,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACpD;CACD,EACD,IAAI,EACJ,CAAC,CACD,CAAC;AAEH,MAAM,WAAW,GAAG;IACnB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;IAC5D;QACC,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,+BAA+B;KACzC;IACD;QACC,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,wBAAwB;QAC/B,QAAQ,EAAE,6BAA6B;KACvC;CACQ,CAAC;AAEX,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,SAAS,GAAG,MAAM,kBAAkB,CACzC,EAAE,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAC/E,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAChC,OAAO;IACR,CAAC;IAED,4CAA4C;IAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;IACxG,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACjD,OAAO;IACR,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5C,OAAO;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,SAAiB;IACnC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,SAAS,CAAC;IAE5B,mDAAmD;IACnD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkC,CAAC;gBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;gBAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,EAAE,GAAI,KAAK,CAAC,QAA+B,IAAK,KAAK,CAAC,SAAgC,IAAI,EAAE,CAAC;oBACnG,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;wBAC3D,WAAW,GAAG,EAAE,CAAC;oBAClB,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,sBAAsB;YACvB,CAAC;QACF,CAAC;IACF,CAAC;IAED,gEAAgE;IAChE,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,CAAC,EAAE,CAAC;QAClF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzC,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACpF,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAChB,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,KAAK,GAAG,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBACtD,WAAW,GAAG,KAAK,CAAC;YACrB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,uBAAuB;IACvB,KAAK,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACvG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,SAAS,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4DAA4D;IAC5D,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkC,CAAC;gBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,WAAW,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,SAAS,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACP,WAAW,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;AACF,CAAC"}
|
package/dist/commands/setup.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/** Check if a command is available in PATH */
|
|
2
|
-
export declare function commandExists(cmd: string): boolean;
|
|
3
|
-
/** Install all deps that are currently absent */
|
|
4
|
-
export declare function installSystemDeps(projectDir?: string): Promise<void>;
|
|
5
|
-
/**
|
|
6
|
-
* Show system dep status as a flat checklist, prompt, and install if confirmed.
|
|
7
|
-
* Each dep is shown as: [ ] Name (~NMB) — unchecked by default (locked decision #4).
|
|
8
|
-
* Playwright appears alongside FFmpeg and ImageMagick in the same list.
|
|
9
|
-
*/
|
|
10
|
-
export declare function promptAndInstallSystemDeps(projectDir?: string): Promise<void>;
|
|
11
|
-
/** Run setup steps. --only=<step> runs a single step. --system-deps installs system deps. */
|
|
12
|
-
export declare function setup(args: {
|
|
13
|
-
only?: string;
|
|
14
|
-
systemDeps?: boolean;
|
|
15
|
-
}): Promise<void>;
|
|
16
|
-
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAiBA,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AA+ID,iDAAiD;AACjD,wBAAsB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1E;AAID;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDnF;AA8LD,6FAA6F;AAC7F,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDxF"}
|