@eevee-ta/cli 0.1.0-beta.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/README.md +492 -0
- package/assets/skills/eevee-mcp/SKILL.md +127 -0
- package/assets/skills/eevee-mcp/reference.md +105 -0
- package/assets/skills/eevee-migration/SKILL.md +181 -0
- package/assets/skills/eevee-project-setup/SKILL.md +266 -0
- package/dist/src/bin/cli.js +237 -0
- package/dist/src/bin/cli.js.map +1 -0
- package/dist/src/commands/business-command.js +340 -0
- package/dist/src/commands/business-command.js.map +1 -0
- package/dist/src/commands/config-command.js +71 -0
- package/dist/src/commands/config-command.js.map +1 -0
- package/dist/src/commands/intl-command.js +131 -0
- package/dist/src/commands/intl-command.js.map +1 -0
- package/dist/src/commands/lint-command.js +105 -0
- package/dist/src/commands/lint-command.js.map +1 -0
- package/dist/src/commands/mcp-command.js +167 -0
- package/dist/src/commands/mcp-command.js.map +1 -0
- package/dist/src/commands/skill-command.js +116 -0
- package/dist/src/commands/skill-command.js.map +1 -0
- package/dist/src/lib/args.js +77 -0
- package/dist/src/lib/args.js.map +1 -0
- package/dist/src/lib/business-catalog.js +445 -0
- package/dist/src/lib/business-catalog.js.map +1 -0
- package/dist/src/lib/config.js +69 -0
- package/dist/src/lib/config.js.map +1 -0
- package/dist/src/lib/intl-catalog.js +58 -0
- package/dist/src/lib/intl-catalog.js.map +1 -0
- package/dist/src/lib/intl-config.js +125 -0
- package/dist/src/lib/intl-config.js.map +1 -0
- package/dist/src/lib/intl-downloader.js +217 -0
- package/dist/src/lib/intl-downloader.js.map +1 -0
- package/dist/src/lib/intl-serializers/csv.js +25 -0
- package/dist/src/lib/intl-serializers/csv.js.map +1 -0
- package/dist/src/lib/intl-serializers/custom.js +23 -0
- package/dist/src/lib/intl-serializers/custom.js.map +1 -0
- package/dist/src/lib/intl-serializers/index.js +22 -0
- package/dist/src/lib/intl-serializers/index.js.map +1 -0
- package/dist/src/lib/intl-serializers/js.js +10 -0
- package/dist/src/lib/intl-serializers/js.js.map +1 -0
- package/dist/src/lib/intl-serializers/json.js +7 -0
- package/dist/src/lib/intl-serializers/json.js.map +1 -0
- package/dist/src/lib/intl-serializers/properties.js +43 -0
- package/dist/src/lib/intl-serializers/properties.js.map +1 -0
- package/dist/src/lib/intl-serializers/ts.js +16 -0
- package/dist/src/lib/intl-serializers/ts.js.map +1 -0
- package/dist/src/lib/intl-serializers/xml.js +21 -0
- package/dist/src/lib/intl-serializers/xml.js.map +1 -0
- package/dist/src/lib/json.js +40 -0
- package/dist/src/lib/json.js.map +1 -0
- package/dist/src/lib/lint-config.js +180 -0
- package/dist/src/lib/lint-config.js.map +1 -0
- package/dist/src/lib/lint-java.js +226 -0
- package/dist/src/lib/lint-java.js.map +1 -0
- package/dist/src/lib/lint-types.js +2 -0
- package/dist/src/lib/lint-types.js.map +1 -0
- package/dist/src/lib/lint-web.js +183 -0
- package/dist/src/lib/lint-web.js.map +1 -0
- package/dist/src/lib/lint.js +192 -0
- package/dist/src/lib/lint.js.map +1 -0
- package/dist/src/lib/mcp-client.js +185 -0
- package/dist/src/lib/mcp-client.js.map +1 -0
- package/dist/src/lib/output.js +34 -0
- package/dist/src/lib/output.js.map +1 -0
- package/dist/src/lib/skill-installer.js +123 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/tool-docs.js +66 -0
- package/dist/src/lib/tool-docs.js.map +1 -0
- package/dist/src/lib/types.js +2 -0
- package/dist/src/lib/types.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { copyFile, cp, mkdir, readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
export const BUNDLED_SKILLS = ['eevee-mcp', 'eevee-migration', 'eevee-project-setup'];
|
|
6
|
+
export const DEFAULT_SKILL_NAME = 'eevee-mcp';
|
|
7
|
+
/** Legacy export kept for backward compatibility */
|
|
8
|
+
export const SKILL_NAME = DEFAULT_SKILL_NAME;
|
|
9
|
+
export const SKILL_AGENTS = {
|
|
10
|
+
codex: {
|
|
11
|
+
label: 'Codex CLI',
|
|
12
|
+
envRoot: 'CODEX_HOME',
|
|
13
|
+
homeDirectory: () => process.env.CODEX_HOME || path.join(homedir(), '.codex'),
|
|
14
|
+
skillsSubdir: 'skills',
|
|
15
|
+
projectDirectory: '.codex/skills',
|
|
16
|
+
},
|
|
17
|
+
claude: {
|
|
18
|
+
label: 'Claude Code',
|
|
19
|
+
envRoot: 'CLAUDE_CONFIG_DIR',
|
|
20
|
+
homeDirectory: () => process.env.CLAUDE_CONFIG_DIR || path.join(homedir(), '.claude'),
|
|
21
|
+
skillsSubdir: 'skills',
|
|
22
|
+
projectDirectory: '.claude/skills',
|
|
23
|
+
},
|
|
24
|
+
universal: {
|
|
25
|
+
label: 'Agent Skills / OpenCode 等兼容实现',
|
|
26
|
+
envRoot: 'EEVEE_AGENT_HOME',
|
|
27
|
+
homeDirectory: () => process.env.EEVEE_AGENT_HOME || path.join(homedir(), '.agents'),
|
|
28
|
+
skillsSubdir: 'skills',
|
|
29
|
+
projectDirectory: '.agents/skills',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const AGENT_NAMES = new Set(Object.keys(SKILL_AGENTS));
|
|
33
|
+
export function parseAgents(input) {
|
|
34
|
+
const flattened = input.length === 0 ? ['codex', 'claude'] : input.flatMap((piece) => piece.split(','));
|
|
35
|
+
const result = [];
|
|
36
|
+
for (const raw of flattened) {
|
|
37
|
+
const name = raw.trim().toLowerCase();
|
|
38
|
+
if (!raw.trim())
|
|
39
|
+
continue;
|
|
40
|
+
if (!AGENT_NAMES.has(name)) {
|
|
41
|
+
throw new Error(`未知 agent: ${raw}(可用: codex, claude, universal)`);
|
|
42
|
+
}
|
|
43
|
+
if (!result.includes(name))
|
|
44
|
+
result.push(name);
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
export async function bundledSkillDirectory(skillName = DEFAULT_SKILL_NAME) {
|
|
49
|
+
let current = path.dirname(fileURLToPath(import.meta.url));
|
|
50
|
+
for (let depth = 0; depth < 8; depth++) {
|
|
51
|
+
const candidate = path.join(current, 'assets', 'skills', skillName);
|
|
52
|
+
try {
|
|
53
|
+
if ((await stat(path.join(candidate, 'SKILL.md'))).isFile())
|
|
54
|
+
return candidate;
|
|
55
|
+
}
|
|
56
|
+
catch { /* 继续向上查找 */ }
|
|
57
|
+
current = path.dirname(current);
|
|
58
|
+
}
|
|
59
|
+
throw new Error(`内置 skill 资源不存在,请检查 npm 包是否完整(应包含 assets/skills/${skillName}/SKILL.md)`);
|
|
60
|
+
}
|
|
61
|
+
export function destinationFor(agent, options, skillName = DEFAULT_SKILL_NAME) {
|
|
62
|
+
if (options.targetDirectory)
|
|
63
|
+
return path.join(options.targetDirectory, skillName);
|
|
64
|
+
const definition = SKILL_AGENTS[agent];
|
|
65
|
+
const root = options.global
|
|
66
|
+
? definition.homeDirectory()
|
|
67
|
+
: options.projectDirectory ?? process.cwd();
|
|
68
|
+
const skills = options.global ? definition.skillsSubdir : definition.projectDirectory;
|
|
69
|
+
return path.resolve(root, skills, skillName);
|
|
70
|
+
}
|
|
71
|
+
export async function installSkill(options) {
|
|
72
|
+
const results = [];
|
|
73
|
+
for (const skillName of BUNDLED_SKILLS) {
|
|
74
|
+
const source = await bundledSkillDirectory(skillName);
|
|
75
|
+
for (const agent of options.agents) {
|
|
76
|
+
const destination = destinationFor(agent, options, skillName);
|
|
77
|
+
const marker = path.join(destination, 'SKILL.md');
|
|
78
|
+
let exists = false;
|
|
79
|
+
try {
|
|
80
|
+
exists = (await stat(marker)).isFile();
|
|
81
|
+
}
|
|
82
|
+
catch { /* 不存在 */ }
|
|
83
|
+
if (exists && !options.force) {
|
|
84
|
+
results.push({ agent: `${SKILL_AGENTS[agent].label} (${skillName})`, directory: destination, action: 'skipped' });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (!options.dryRun)
|
|
88
|
+
await copySkill(source, destination);
|
|
89
|
+
results.push({
|
|
90
|
+
agent: `${SKILL_AGENTS[agent].label} (${skillName})`,
|
|
91
|
+
directory: destination,
|
|
92
|
+
action: exists ? 'copied' : 'created',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return results;
|
|
97
|
+
}
|
|
98
|
+
async function copySkill(source, destination) {
|
|
99
|
+
await mkdir(destination, { recursive: true });
|
|
100
|
+
for (const entry of await readdir(source, { withFileTypes: true })) {
|
|
101
|
+
const from = path.join(source, entry.name);
|
|
102
|
+
const to = path.join(destination, entry.name);
|
|
103
|
+
if (entry.isDirectory())
|
|
104
|
+
await cp(from, to, { recursive: true });
|
|
105
|
+
else if (entry.isFile())
|
|
106
|
+
await copyFile(from, to);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export async function discoverInstalls() {
|
|
110
|
+
const output = [];
|
|
111
|
+
for (const skillName of BUNDLED_SKILLS) {
|
|
112
|
+
for (const [agent, definition] of Object.entries(SKILL_AGENTS)) {
|
|
113
|
+
const directory = path.join(definition.homeDirectory(), definition.skillsSubdir, skillName);
|
|
114
|
+
try {
|
|
115
|
+
if ((await stat(path.join(directory, 'SKILL.md'))).isFile())
|
|
116
|
+
output.push({ agent: `${definition.label} (${skillName})`, path: directory });
|
|
117
|
+
}
|
|
118
|
+
catch { /* 未安装 */ }
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return output;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=skill-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../../src/lib/skill-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export const TOOL_DOCS = {
|
|
2
|
+
list_api_operations: {
|
|
3
|
+
name: 'list_api_operations',
|
|
4
|
+
title: '发现可调用 API',
|
|
5
|
+
purpose: '从运行时 Swagger 目录中搜索 REST 操作,输出 operation_id、方法、路径和摘要。',
|
|
6
|
+
useWhen: [
|
|
7
|
+
'第一次接入服务,需要知道有哪些接口;',
|
|
8
|
+
'忘记 operation_id、路径或想按关键词筛选操作。',
|
|
9
|
+
],
|
|
10
|
+
arguments: 'search/tag/method/limit/offset 均可选;limit 默认 100,最大 200。',
|
|
11
|
+
examples: [
|
|
12
|
+
"eevee tools call list_api_operations '{\"method\":\"GET\",\"search\":\"term\"}'",
|
|
13
|
+
"eevee tools call list_api_operations '{\"tag\":\"项目\"}'",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
get_api_operation: {
|
|
17
|
+
name: 'get_api_operation',
|
|
18
|
+
title: '查看单个操作契约',
|
|
19
|
+
purpose: '返回一个操作的完整参数位置与请求体 schema,避免猜测参数类型。',
|
|
20
|
+
useWhen: ['准备调用某个 API 前确认必填 path/query/body。'],
|
|
21
|
+
examples: [
|
|
22
|
+
"eevee tools call get_api_operation '{\"operation_id\":\"<operation_id>\"}'",
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
call_api_operation: {
|
|
26
|
+
name: 'call_api_operation',
|
|
27
|
+
title: '执行 eevee 业务 API',
|
|
28
|
+
purpose: '以当前 token 用户身份回环调用已登记的 REST API,响应保持原有权限与审计逻辑。',
|
|
29
|
+
useWhen: ['确认 contract 后读写项目、版本、词条、翻译、标签、权限或日志。'],
|
|
30
|
+
arguments: 'operation_id 必填;parameters 放 path/query;body 放 JSON 请求体。',
|
|
31
|
+
examples: [
|
|
32
|
+
"eevee tools call call_api_operation '{\"operation_id\":\"<read-operation-id>\"}'",
|
|
33
|
+
"eevee tools call call_api_operation '{\"operation_id\":\"<write-operation-id>\",\"parameters\":{\"id\":1},\"body\":{\"name\":\"example\"}}'",
|
|
34
|
+
"eevee tools call call_api_operation --args ./payload/project-create.json",
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export function mergeLiveTools(live) {
|
|
39
|
+
return live.map((tool) => ({
|
|
40
|
+
name: tool.name,
|
|
41
|
+
title: TOOL_DOCS[tool.name]?.title ?? tool.title ?? tool.name,
|
|
42
|
+
purpose: TOOL_DOCS[tool.name]?.purpose ?? tool.description ?? '',
|
|
43
|
+
useWhen: TOOL_DOCS[tool.name]?.useWhen ?? [],
|
|
44
|
+
arguments: TOOL_DOCS[tool.name]?.arguments,
|
|
45
|
+
examples: TOOL_DOCS[tool.name]?.examples ?? [],
|
|
46
|
+
live: tool,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
export function renderToolDoc(doc) {
|
|
50
|
+
const schema = doc.live.inputSchema
|
|
51
|
+
? `${doc.arguments ? `\n参数说明:${doc.arguments}\n\n` : '\n'}Input Schema:\n${JSON.stringify(doc.live.inputSchema, null, 2)}`
|
|
52
|
+
: doc.arguments ? `\n参数说明:${doc.arguments}` : '';
|
|
53
|
+
return [
|
|
54
|
+
`## ${doc.live.name}`,
|
|
55
|
+
'',
|
|
56
|
+
`**标题**:${doc.title}`,
|
|
57
|
+
`**用途**:${doc.purpose}`,
|
|
58
|
+
...doc.useWhen.map((item) => `- 适用:${item}`),
|
|
59
|
+
schema,
|
|
60
|
+
'\n### 示例',
|
|
61
|
+
...doc.examples.map((example) => `- \`${example}\``),
|
|
62
|
+
'',
|
|
63
|
+
'凭证不会写入示例时必须显式包含;通常由 `~/.eevee-cli/config.json` 或环境变量提供。',
|
|
64
|
+
].filter(Boolean).join('\n');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=tool-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-docs.js","sourceRoot":"","sources":["../../../src/lib/tool-docs.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,SAAS,GAA4B;IAChD,mBAAmB,EAAE;QACnB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,sDAAsD;QAC/D,OAAO,EAAE;YACP,oBAAoB;YACpB,+BAA+B;SAChC;QACD,SAAS,EAAE,yDAAyD;QACpE,QAAQ,EAAE;YACR,iFAAiF;YACjF,yDAAyD;SAC1D;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE,CAAC,mCAAmC,CAAC;QAC9C,QAAQ,EAAE;YACR,4EAA4E;SAC7E;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,gDAAgD;QACzD,OAAO,EAAE,CAAC,sCAAsC,CAAC;QACjD,SAAS,EAAE,0DAA0D;QACrE,QAAQ,EAAE;YACR,kFAAkF;YAClF,6IAA6I;YAC7I,0EAA0E;SAC3E;KACF;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI;QAC7D,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE;QAChE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,EAAE;QAC5C,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS;QAC1C,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE;QAC9C,IAAI,EAAE,IAAI;KACX,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAgC;IAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW;QACjC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,IAAI,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC1H,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,OAAO;QACL,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACrB,EAAE;QACF,UAAU,GAAG,CAAC,KAAK,EAAE;QACrB,UAAU,GAAG,CAAC,OAAO,EAAE;QACvB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5C,MAAM;QACN,UAAU;QACV,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,IAAI,CAAC;QACpD,EAAE;QACF,yDAAyD;KAC1D,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eevee-ta/cli",
|
|
3
|
+
"version": "0.1.0-beta.1",
|
|
4
|
+
"description": "Command-line client for the eevee MCP server",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"eevee": "./dist/src/bin/cli.js",
|
|
8
|
+
"eevee-cli": "./dist/src/bin/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/src/bin/cli.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc -p tsconfig.json",
|
|
13
|
+
"prepack": "npm run build",
|
|
14
|
+
"check": "npm run build && node dist/test/cli.test.js",
|
|
15
|
+
"cli": "npm run build && node dist/src/bin/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist/src",
|
|
19
|
+
"assets",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=20.4.0"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"java-parser": "^3.0.1",
|
|
27
|
+
"minimatch": "^10.2.6",
|
|
28
|
+
"typescript": "^5.9.3"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^24.0.0"
|
|
32
|
+
}
|
|
33
|
+
}
|