mewkit 1.0.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/README.md +61 -0
- package/dist/commands/budget.d.ts +6 -0
- package/dist/commands/budget.d.ts.map +1 -0
- package/dist/commands/budget.js +95 -0
- package/dist/commands/budget.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +248 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/memory.d.ts +8 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +159 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +149 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/task.d.ts +10 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +301 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/upgrade.d.ts +8 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +108 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +139 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +121 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +26 -0
- package/dist/logger.js +70 -0
- package/dist/logger.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,139 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import minimist from "minimist";
|
|
6
|
+
import pc from "picocolors";
|
|
7
|
+
import { upgrade } from "./commands/upgrade.js";
|
|
8
|
+
import { validate } from "./commands/validate.js";
|
|
9
|
+
import { budget } from "./commands/budget.js";
|
|
10
|
+
import { memory } from "./commands/memory.js";
|
|
11
|
+
import { doctor } from "./commands/doctor.js";
|
|
12
|
+
import { setup } from "./commands/setup.js";
|
|
13
|
+
import { task } from "./commands/task.js";
|
|
14
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
const pkgJson = JSON.parse(fs.readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
|
|
16
|
+
const VERSION = pkgJson.version;
|
|
17
|
+
function printHelp() {
|
|
18
|
+
console.log(`
|
|
19
|
+
${pc.bold(pc.cyan("meowkit"))} ${pc.dim(`v${VERSION}`)} — MeowKit runtime CLI
|
|
20
|
+
|
|
21
|
+
${pc.bold("Usage:")}
|
|
22
|
+
meowkit <command> [options]
|
|
23
|
+
|
|
24
|
+
${pc.bold("Commands:")}
|
|
25
|
+
${pc.green("upgrade")} Upgrade create-meowkit to the latest version
|
|
26
|
+
${pc.green("validate")} Validate .claude/ project structure
|
|
27
|
+
${pc.green("budget")} View token usage and cost log
|
|
28
|
+
${pc.green("memory")} Manage agent memory (lessons & patterns)
|
|
29
|
+
${pc.green("setup")} Guided post-scaffold configuration
|
|
30
|
+
${pc.green("doctor")} Diagnose common environment issues
|
|
31
|
+
${pc.green("status")} Print version and config summary
|
|
32
|
+
${pc.green("task")} Create and list task files (new, list)
|
|
33
|
+
|
|
34
|
+
${pc.bold("Options:")}
|
|
35
|
+
--help, -h Show help
|
|
36
|
+
--version, -v Show version
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
async function printStatus() {
|
|
40
|
+
const channel = VERSION.includes("-beta") || VERSION.includes("-rc") ? "beta" : "stable";
|
|
41
|
+
console.log(`${pc.bold(pc.cyan("meowkit"))} ${pc.dim(`v${VERSION}`)} ${pc.dim(`(${channel})`)}`);
|
|
42
|
+
console.log();
|
|
43
|
+
const configPath = ".claude/meowkit.config.json";
|
|
44
|
+
try {
|
|
45
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
46
|
+
const config = JSON.parse(content);
|
|
47
|
+
console.log(`${pc.bold("Config:")} ${configPath}`);
|
|
48
|
+
for (const [key, value] of Object.entries(config)) {
|
|
49
|
+
console.log(` ${pc.dim(key)}: ${String(value)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
console.log(`${pc.dim("No .claude/meowkit.config.json found.")}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function main() {
|
|
57
|
+
const args = minimist(process.argv.slice(2), {
|
|
58
|
+
boolean: ["help", "version", "check", "beta", "list", "monthly", "clear", "show", "stats", "report", "all"],
|
|
59
|
+
string: ["only", "type", "priority", "status"],
|
|
60
|
+
alias: { h: "help", v: "version" },
|
|
61
|
+
});
|
|
62
|
+
if (args.version) {
|
|
63
|
+
console.log(VERSION);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const command = args._[0];
|
|
67
|
+
if (args.help && !command) {
|
|
68
|
+
printHelp();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
switch (command) {
|
|
72
|
+
case "upgrade":
|
|
73
|
+
await upgrade({ check: args.check, beta: args.beta, list: args.list });
|
|
74
|
+
break;
|
|
75
|
+
case "validate":
|
|
76
|
+
await validate();
|
|
77
|
+
break;
|
|
78
|
+
case "budget":
|
|
79
|
+
await budget({ monthly: args.monthly });
|
|
80
|
+
break;
|
|
81
|
+
case "memory":
|
|
82
|
+
await memory({ clear: args.clear, show: args.show, stats: args.stats });
|
|
83
|
+
break;
|
|
84
|
+
case "setup":
|
|
85
|
+
setup({ only: args.only });
|
|
86
|
+
break;
|
|
87
|
+
case "doctor":
|
|
88
|
+
await doctor({ report: args.report });
|
|
89
|
+
break;
|
|
90
|
+
case "status":
|
|
91
|
+
await printStatus();
|
|
92
|
+
break;
|
|
93
|
+
case "task": {
|
|
94
|
+
const subcommand = args._[1];
|
|
95
|
+
// positional description: everything after the subcommand that isn't a flag
|
|
96
|
+
const description = args._.slice(2).join(" ");
|
|
97
|
+
task({
|
|
98
|
+
subcommand,
|
|
99
|
+
type: args.type,
|
|
100
|
+
priority: args.priority,
|
|
101
|
+
all: args.all,
|
|
102
|
+
status: args.status,
|
|
103
|
+
description: description || undefined,
|
|
104
|
+
});
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
default:
|
|
108
|
+
if (command) {
|
|
109
|
+
console.error(pc.red(`Unknown command: ${command}`));
|
|
110
|
+
console.log();
|
|
111
|
+
}
|
|
112
|
+
printHelp();
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
main().catch((error) => {
|
|
117
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
118
|
+
console.error(pc.red(`Fatal: ${message}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
});
|
|
121
|
+
//# 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/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Output modes controlled by --json and --verbose flags */
|
|
2
|
+
interface LoggerOptions {
|
|
3
|
+
json: boolean;
|
|
4
|
+
verbose: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Initialize logger with CLI flags. Call once at startup. */
|
|
7
|
+
export declare function initLogger(opts: Partial<LoggerOptions> & {
|
|
8
|
+
command?: string;
|
|
9
|
+
}): void;
|
|
10
|
+
/** Info message (always shown in text mode, accumulated in json mode) */
|
|
11
|
+
export declare function info(msg: string): void;
|
|
12
|
+
/** Success message with green checkmark */
|
|
13
|
+
export declare function success(msg: string): void;
|
|
14
|
+
/** Warning message */
|
|
15
|
+
export declare function warn(msg: string): void;
|
|
16
|
+
/** Error message. Sets json output success=false. */
|
|
17
|
+
export declare function error(msg: string): void;
|
|
18
|
+
/** Debug message (only in --verbose mode) */
|
|
19
|
+
export declare function debug(msg: string): void;
|
|
20
|
+
/** Set structured data for json output */
|
|
21
|
+
export declare function setData(key: string, value: unknown): void;
|
|
22
|
+
/** Flush json output at end of command. No-op in text mode. */
|
|
23
|
+
export declare function flush(): void;
|
|
24
|
+
/** Check if json mode is active */
|
|
25
|
+
export declare function isJson(): boolean;
|
|
26
|
+
export {};
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
let options = { json: false, verbose: false };
|
|
3
|
+
let jsonOutput = { success: true, command: "", data: {}, messages: [] };
|
|
4
|
+
/** Initialize logger with CLI flags. Call once at startup. */
|
|
5
|
+
export function initLogger(opts) {
|
|
6
|
+
options = { json: opts.json ?? false, verbose: opts.verbose ?? false };
|
|
7
|
+
jsonOutput = { success: true, command: opts.command ?? "", data: {}, messages: [] };
|
|
8
|
+
}
|
|
9
|
+
/** Info message (always shown in text mode, accumulated in json mode) */
|
|
10
|
+
export function info(msg) {
|
|
11
|
+
if (options.json) {
|
|
12
|
+
jsonOutput.messages.push({ level: "info", text: msg });
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
console.log(msg);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Success message with green checkmark */
|
|
19
|
+
export function success(msg) {
|
|
20
|
+
if (options.json) {
|
|
21
|
+
jsonOutput.messages.push({ level: "success", text: msg });
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log(`${pc.green("✓")} ${msg}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Warning message */
|
|
28
|
+
export function warn(msg) {
|
|
29
|
+
if (options.json) {
|
|
30
|
+
jsonOutput.messages.push({ level: "warn", text: msg });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.warn(pc.yellow(`⚠ ${msg}`));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Error message. Sets json output success=false. */
|
|
37
|
+
export function error(msg) {
|
|
38
|
+
jsonOutput.success = false;
|
|
39
|
+
if (options.json) {
|
|
40
|
+
jsonOutput.messages.push({ level: "error", text: msg });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.error(pc.red(`✗ ${msg}`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Debug message (only in --verbose mode) */
|
|
47
|
+
export function debug(msg) {
|
|
48
|
+
if (options.json) {
|
|
49
|
+
if (options.verbose)
|
|
50
|
+
jsonOutput.messages.push({ level: "debug", text: msg });
|
|
51
|
+
}
|
|
52
|
+
else if (options.verbose) {
|
|
53
|
+
console.log(pc.dim(`[debug] ${msg}`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Set structured data for json output */
|
|
57
|
+
export function setData(key, value) {
|
|
58
|
+
jsonOutput.data[key] = value;
|
|
59
|
+
}
|
|
60
|
+
/** Flush json output at end of command. No-op in text mode. */
|
|
61
|
+
export function flush() {
|
|
62
|
+
if (options.json) {
|
|
63
|
+
console.log(JSON.stringify(jsonOutput, null, 2));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Check if json mode is active */
|
|
67
|
+
export function isJson() {
|
|
68
|
+
return options.json;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mewkit",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MeowKit runtime CLI — upgrade, validate, budget, memory, doctor",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"meowkit": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"prepublishOnly": "npm run build",
|
|
15
|
+
"dev": "tsc --watch"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"picocolors": "^1.1.0",
|
|
19
|
+
"minimist": "^1.2.8"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/minimist": "^1.2.5",
|
|
23
|
+
"@types/node": "^20.14.0",
|
|
24
|
+
"typescript": "^5.5.0"
|
|
25
|
+
},
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=20"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT"
|
|
30
|
+
}
|