@spaceflow/core 0.8.0 → 0.10.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 +75 -56
- package/dist/index.js +5589 -970
- package/dist/index.js.map +1 -1
- package/package.json +9 -3
- package/src/cli-runtime/di/config.ts +157 -0
- package/src/cli-runtime/di/container.ts +120 -0
- package/src/cli-runtime/di/index.ts +3 -0
- package/src/cli-runtime/di/services.ts +53 -0
- package/src/cli-runtime/extension-loader.ts +74 -0
- package/src/{shared → cli-runtime}/i18n/index.ts +7 -1
- package/src/cli-runtime/i18n/init.ts +117 -0
- package/src/cli-runtime/index.ts +131 -0
- package/src/cli-runtime/internal-extensions.ts +33 -0
- package/src/commands/build/build.service.ts +323 -0
- package/src/commands/build/index.ts +49 -0
- package/src/commands/clear/clear.service.ts +159 -0
- package/src/commands/clear/index.ts +35 -0
- package/src/commands/commit/commit.config.ts +168 -0
- package/src/commands/commit/commit.service.ts +950 -0
- package/src/commands/commit/index.ts +58 -0
- package/src/commands/create/create.service.ts +318 -0
- package/src/commands/create/index.ts +42 -0
- package/src/commands/dev/index.ts +30 -0
- package/src/commands/install/index.ts +65 -0
- package/src/commands/install/install.service.ts +1539 -0
- package/src/commands/list/index.ts +33 -0
- package/src/commands/list/list.service.ts +127 -0
- package/src/commands/mcp/index.ts +37 -0
- package/src/commands/mcp/mcp.service.ts +246 -0
- package/src/commands/runx/index.ts +47 -0
- package/src/commands/runx/runx.service.ts +142 -0
- package/src/commands/runx/runx.utils.ts +83 -0
- package/src/commands/schema/index.ts +30 -0
- package/src/commands/setup/index.ts +34 -0
- package/src/commands/setup/setup.service.ts +234 -0
- package/src/commands/uninstall/index.ts +42 -0
- package/src/commands/uninstall/uninstall.service.ts +166 -0
- package/src/commands/update/index.ts +42 -0
- package/src/commands/update/update.service.ts +373 -0
- package/src/config/index.ts +1 -30
- package/src/config/spaceflow.config.ts +226 -278
- package/src/index.ts +11 -1
- package/src/locales/en/build.json +22 -0
- package/src/locales/en/clear.json +16 -0
- package/src/locales/en/commit.json +45 -0
- package/src/locales/en/create.json +27 -0
- package/src/locales/en/dev.json +5 -0
- package/src/locales/en/install.json +71 -0
- package/src/locales/en/list.json +8 -0
- package/src/locales/en/mcp.json +19 -0
- package/src/locales/en/runx.json +13 -0
- package/src/locales/en/schema.json +4 -0
- package/src/locales/en/setup.json +14 -0
- package/src/locales/en/uninstall.json +18 -0
- package/src/locales/en/update.json +28 -0
- package/src/locales/zh-cn/build.json +22 -0
- package/src/locales/zh-cn/clear.json +16 -0
- package/src/locales/zh-cn/commit.json +45 -0
- package/src/locales/zh-cn/create.json +27 -0
- package/src/locales/zh-cn/dev.json +5 -0
- package/src/locales/zh-cn/install.json +71 -0
- package/src/locales/zh-cn/list.json +8 -0
- package/src/locales/zh-cn/mcp.json +19 -0
- package/src/locales/zh-cn/runx.json +13 -0
- package/src/locales/zh-cn/schema.json +4 -0
- package/src/locales/zh-cn/setup.json +14 -0
- package/src/locales/zh-cn/uninstall.json +18 -0
- package/src/locales/zh-cn/update.json +28 -0
- package/src/shared/editor-config/index.ts +2 -21
- package/src/shared/llm-proxy/adapters/openai.adapter.ts +3 -1
- package/src/shared/package-manager/index.ts +5 -76
- package/src/shared/source-utils/index.ts +12 -130
- package/src/shared/spaceflow-dir/index.ts +13 -135
- package/src/shared/verbose/index.ts +10 -87
- package/dist/524.js +0 -9
- package/src/config/ci.config.ts +0 -29
- package/src/config/config-loader.ts +0 -100
- package/src/config/config-reader.service.ts +0 -128
- package/src/config/config-reader.ts +0 -75
- package/src/config/feishu.config.ts +0 -35
- package/src/config/git-provider.config.ts +0 -29
- package/src/config/llm.config.ts +0 -110
- package/src/config/load-env.ts +0 -15
- package/src/config/storage.config.ts +0 -33
- /package/src/{shared → cli-runtime}/i18n/i18n.spec.ts +0 -0
- /package/src/{shared → cli-runtime}/i18n/i18n.ts +0 -0
- /package/src/{shared → cli-runtime}/i18n/locale-detect.ts +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Install skill packages (npm or git), update all skills when no arguments",
|
|
3
|
+
"options.name": "Specify skill package name (auto-detected from source by default)",
|
|
4
|
+
"options.global": "Install to global directory (~/.spaceflow) and link to global editor directories",
|
|
5
|
+
"options.ignoreErrors": "Ignore installation errors without exiting",
|
|
6
|
+
"globalNoSource": "❌ Global install requires a source argument",
|
|
7
|
+
"globalUsage": " Usage: spaceflow install <source> -g [--name <name>]",
|
|
8
|
+
"installFailed": "❌ Installation failed: {{error}}",
|
|
9
|
+
"extensionDescription": "Install plugins/skills to project",
|
|
10
|
+
"envPlaceholder": "<Please fill in {{key}}>",
|
|
11
|
+
"registerMcp": " Register MCP Server: {{name}}",
|
|
12
|
+
"mcpEnvHint": " ⚠️ Please configure environment variables in {{path}}: {{vars}}",
|
|
13
|
+
"installingExtension": "📦 Installing Extension: {{source}}",
|
|
14
|
+
"installDone": "✅ Installation complete: {{name}}",
|
|
15
|
+
"typeLocal": " Type: local path",
|
|
16
|
+
"sourcePath": " Source path: {{path}}",
|
|
17
|
+
"typeGit": " Type: git repository",
|
|
18
|
+
"sourceUrl": " Source: {{url}}",
|
|
19
|
+
"typeNpm": " Type: npm package",
|
|
20
|
+
"targetDir": " Target directory: {{dir}}",
|
|
21
|
+
"extensionInstallFailed": "Extension installation failed: {{source}}",
|
|
22
|
+
"creatingDir": " Creating directory: {{dir}}",
|
|
23
|
+
"dirExistsSkip": " Directory exists, skipping clone",
|
|
24
|
+
"cloningRepo": " Cloning repository...",
|
|
25
|
+
"cloneFailed": "Failed to clone repository: {{error}}",
|
|
26
|
+
"removingGit": " Removing .git directory...",
|
|
27
|
+
"depsLinkExists": " deps link exists, skipping",
|
|
28
|
+
"depsExists": " deps/{{name}} exists, skipping",
|
|
29
|
+
"createDepsLink": " Creating deps link: {{dep}} -> {{source}}",
|
|
30
|
+
"skillLinkExists": " skills/{{name}} link exists, skipping",
|
|
31
|
+
"createSkillLink": " Creating skills link: skills/{{name}} -> {{target}}",
|
|
32
|
+
"copySkill": " Copying skills/{{name}}",
|
|
33
|
+
"globalInstalling": "🔄 Global install: {{name}} ({{dir}})",
|
|
34
|
+
"pluginTypes": " Plugin types: {{types}}",
|
|
35
|
+
"globalInstallDone": "\n✅ Global installation complete",
|
|
36
|
+
"updatingAll": "🔄 Updating all dependencies...",
|
|
37
|
+
"noDeps": " No dependencies in config file",
|
|
38
|
+
"foundDeps": " Found {{count}} dependencies",
|
|
39
|
+
"installingDeps": "\n📦 Installing dependencies...",
|
|
40
|
+
"pmInstallFailed": " Warning: {{pm}} install failed",
|
|
41
|
+
"depNotInstalled": " ⚠️ {{name}} not installed successfully, skipping",
|
|
42
|
+
"allExtensionsDone": "\n✅ All extensions updated",
|
|
43
|
+
"updatedPackageJson": " ✓ Updated .spaceflow/package.json",
|
|
44
|
+
"symlinkExists": " ✓ Symlink already exists",
|
|
45
|
+
"createSymlink": " Creating symlink: {{target}} -> {{source}}",
|
|
46
|
+
"createSymlinkFailed": "Failed to create symlink: {{error}}",
|
|
47
|
+
"pullFailed": " Warning: Failed to pull latest code",
|
|
48
|
+
"checkoutVersion": " Checking out version: {{ref}}",
|
|
49
|
+
"checkoutFailed": " Warning: Failed to checkout version",
|
|
50
|
+
"installingDepsEllipsis": " Installing dependencies...",
|
|
51
|
+
"depsInstallFailed": " Warning: Dependency installation failed",
|
|
52
|
+
"depsInstalled": " ✓ Dependencies installed",
|
|
53
|
+
"buildingPlugin": " Building plugin...",
|
|
54
|
+
"buildFailed": " Warning: Build failed",
|
|
55
|
+
"buildExists": " ✓ Build exists",
|
|
56
|
+
"repoExists": " Repository exists, updating...",
|
|
57
|
+
"repoUpdateFailed": " Warning: Repository update failed",
|
|
58
|
+
"cloneRepoFailed": " Warning: Clone repository failed",
|
|
59
|
+
"skillMdExists": " ✓ SKILL.md already exists",
|
|
60
|
+
"skillMdGenerated": " ✓ Generated SKILL.md",
|
|
61
|
+
"skillMdFailed": " Warning: Failed to generate SKILL.md",
|
|
62
|
+
"commandMdGenerated": " ✓ Generated commands/{{name}}.md",
|
|
63
|
+
"commandMdFailed": " Warning: Failed to generate commands/{{name}}.md",
|
|
64
|
+
"configUpdated": " Config updated: {{path}}",
|
|
65
|
+
"configAlreadyExists": " Config already contains this skill package",
|
|
66
|
+
"depsUpToDate": " ✓ Dependencies are up to date",
|
|
67
|
+
"buildUpToDate": " ✓ Build is up to date",
|
|
68
|
+
"detailSection": "Details",
|
|
69
|
+
"usageSection": "Usage",
|
|
70
|
+
"commandDefault": "{{name}} command"
|
|
71
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "List installed skill packages",
|
|
3
|
+
"extensionDescription": "List installed plugins/skills",
|
|
4
|
+
"noSkills": "📦 No skill packages installed",
|
|
5
|
+
"installHint": "Install skill packages with:",
|
|
6
|
+
"installedExtensions": "📦 Installed extensions ({{installed}}/{{total}}):",
|
|
7
|
+
"commands": "Commands: {{commands}}"
|
|
8
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Start MCP Server with all installed extension tools",
|
|
3
|
+
"options.inspector": "Start MCP Inspector for interactive debugging",
|
|
4
|
+
"inspectorStarting": "🔍 Starting MCP Inspector...",
|
|
5
|
+
"inspectorDebugCmd": " Debug command: pnpm space mcp",
|
|
6
|
+
"inspectorFailed": "❌ Failed to start MCP Inspector: {{error}}",
|
|
7
|
+
"extensionDescription": "Start MCP Server with all installed extension tools",
|
|
8
|
+
"scanning": "🔍 Scanning installed extensions...",
|
|
9
|
+
"foundExtensions": " Found {{count}} extensions",
|
|
10
|
+
"checkingExport": " Checking {{key}}: __mcp_server__={{hasMcpServer}}",
|
|
11
|
+
"containerSuccess": " ✅ Got {{key}} instance from container",
|
|
12
|
+
"containerFailed": " ⚠️ Failed to get {{key}} from container: {{error}}",
|
|
13
|
+
"loadToolsFailed": " ⚠️ {{name}}: Failed to load MCP tools",
|
|
14
|
+
"noToolsFound": "❌ No MCP tools found",
|
|
15
|
+
"noToolsHint": " Hint: Make sure you have installed MCP-enabled extensions that export mcpService or getMcpTools",
|
|
16
|
+
"toolsFound": "✅ Found {{count}} MCP tools",
|
|
17
|
+
"ttyHint": "💡 MCP Server must be started by an MCP client (e.g. Cursor, Claude Desktop) via pipe.\n Add the following config to your MCP client:\n\n \"spaceflow\": {\n \"command\": \"pnpm\",\n \"args\": [\"space\", \"mcp\"]\n }",
|
|
18
|
+
"serverStarted": "🚀 MCP Server started with {{count}} tools"
|
|
19
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Install dependency globally and run command",
|
|
3
|
+
"options.name": "Specify command name (auto-detected from source by default)",
|
|
4
|
+
"noSource": "❌ Please specify the dependency source to run",
|
|
5
|
+
"usage": " Usage: spaceflow x <source> [args...]",
|
|
6
|
+
"runFailed": "❌ Run failed: {{error}}",
|
|
7
|
+
"extensionDescription": "Execute scripts provided by plugins",
|
|
8
|
+
"runningCommand": "▶️ Running command: {{command}}",
|
|
9
|
+
"npxExitCode": "npx {{package}} exit code: {{code}}",
|
|
10
|
+
"commandNotInstalled": "Command {{name}} is not installed",
|
|
11
|
+
"commandNotBuilt": "Command {{name}} is not built, missing dist/index.js",
|
|
12
|
+
"pluginNoExport": "Plugin {{name}} has no default export"
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Initialize spaceflow configuration files",
|
|
3
|
+
"options.global": "Generate global config to ~/spaceflow/spaceflow.json (merge local .env and spaceflow.json)",
|
|
4
|
+
"setupFailed": "❌ Initialization failed: {{error}}",
|
|
5
|
+
"extensionDescription": "Initialize spaceflow configuration files",
|
|
6
|
+
"dirCreated": "✅ Directory created: {{dir}}",
|
|
7
|
+
"configGenerated": "✅ Config file generated: {{path}}",
|
|
8
|
+
"configExists": "ℹ️ Config file already exists: {{path}}",
|
|
9
|
+
"localConfigRead": "📖 Local config loaded",
|
|
10
|
+
"globalConfigGenerated": "✅ Global config generated: {{path}}",
|
|
11
|
+
"envConfigMerged": "📝 Merged environment variable config:",
|
|
12
|
+
"envRead": "📖 Environment variables loaded: {{path}}",
|
|
13
|
+
"envReadFailed": "⚠️ Failed to read .env file: {{path}}"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Uninstall a skill package",
|
|
3
|
+
"options.global": "Uninstall from global directory (~/.spaceflow) and clean up editor links",
|
|
4
|
+
"noName": "❌ Please specify the skill package name to uninstall",
|
|
5
|
+
"uninstallFailed": "❌ Uninstall failed: {{error}}",
|
|
6
|
+
"extensionDescription": "Uninstall installed plugins/skills",
|
|
7
|
+
"uninstallingExtension": " Uninstalling extension: {{name}}",
|
|
8
|
+
"targetDir": " Target directory: {{dir}}",
|
|
9
|
+
"extensionUninstallFailed": " Warning: Extension uninstall failed: {{name}}",
|
|
10
|
+
"uninstallingGlobal": "🗑️ Uninstalling skill package: {{name}} (global)",
|
|
11
|
+
"uninstalling": "🗑️ Uninstalling skill package: {{name}}",
|
|
12
|
+
"foundDependency": " Found dependency: {{key}} -> {{value}}",
|
|
13
|
+
"notRegistered": "Skill package \"{{name}}\" is not registered in config",
|
|
14
|
+
"uninstallDone": "✅ Uninstall complete",
|
|
15
|
+
"deletingSkill": " Deleting: skills/{{entry}}",
|
|
16
|
+
"deletingCommand": " Deleting: commands/{{entry}}",
|
|
17
|
+
"configUpdated": " Config updated: {{path}}"
|
|
18
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Update dependencies (latest npm version or git pull)",
|
|
3
|
+
"options.self": "Update spaceflow CLI itself",
|
|
4
|
+
"updateFailed": "❌ Update failed: {{error}}",
|
|
5
|
+
"extensionDescription": "Update dependencies (latest npm version or git pull)",
|
|
6
|
+
"cannotGetLatest": " ⚠️ Cannot get latest version of {{package}}",
|
|
7
|
+
"alreadyLatest": " ✓ {{package}} is already up to date ({{version}})",
|
|
8
|
+
"versionChange": " {{package}}: {{current}} -> {{latest}}",
|
|
9
|
+
"unknown": "unknown",
|
|
10
|
+
"npmUpdateFailed": " ❌ Failed to update {{package}}:",
|
|
11
|
+
"notGitRepo": " ⚠️ {{name}} is not a git repository (.git may have been removed)",
|
|
12
|
+
"reinstallHint": " Hint: Use spaceflow install <source> to reinstall",
|
|
13
|
+
"pullingLatest": " Pulling latest code...",
|
|
14
|
+
"gitUpdateFailed": " ❌ Failed to update {{name}}:",
|
|
15
|
+
"updatingCli": "🔄 Updating spaceflow CLI...",
|
|
16
|
+
"installMethod": " Install method: {{method}} ({{pm}})",
|
|
17
|
+
"installGlobal": "global",
|
|
18
|
+
"installLocal": "local",
|
|
19
|
+
"executing": " Executing: {{cmd}}",
|
|
20
|
+
"cliUpdateDone": "✅ CLI update complete",
|
|
21
|
+
"cliUpdateFailed": "❌ CLI update failed:",
|
|
22
|
+
"depNotFound": "❌ Dependency not found: {{name}}",
|
|
23
|
+
"updating": "📦 Updating: {{name}}",
|
|
24
|
+
"localNoUpdate": " ✓ Local path does not need updating",
|
|
25
|
+
"noDeps": "📦 No dependencies found",
|
|
26
|
+
"updatingAll": "🔄 Updating all dependencies ({{count}})...",
|
|
27
|
+
"updateComplete": "✅ Update complete: {{success}} succeeded, {{fail}} failed"
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "构建 skills 目录下的插件包",
|
|
3
|
+
"options.watch": "监听文件变化并自动重新构建",
|
|
4
|
+
"buildFailed": "❌ 构建失败: {{error}}",
|
|
5
|
+
"extensionDescription": "构建插件/技能",
|
|
6
|
+
"noPlugins": "📦 没有找到可构建的插件",
|
|
7
|
+
"startBuilding": "📦 开始构建 {{count}} 个插件...",
|
|
8
|
+
"buildComplete": "✅ 构建完成: {{success}} 成功, {{fail}} 失败",
|
|
9
|
+
"startWatching": "👀 开始监听 {{count}} 个插件...",
|
|
10
|
+
"stopWatching": "🛑 停止监听: {{name}}",
|
|
11
|
+
"building": "🔨 构建: {{name}}",
|
|
12
|
+
"buildSuccess": " ✅ 完成 ({{duration}}ms)",
|
|
13
|
+
"buildFailedWithDuration": " ❌ 失败 ({{duration}}ms)",
|
|
14
|
+
"buildFailedWithMessage": " ❌ 失败 ({{duration}}ms): {{message}}",
|
|
15
|
+
"buildWarnings": " ⚠️ 完成 ({{duration}}ms) - {{count}} 警告",
|
|
16
|
+
"watching": "👀 监听: {{name}}",
|
|
17
|
+
"watchError": " ❌ [{{name}}] 错误: {{message}}",
|
|
18
|
+
"watchBuildFailed": " ❌ [{{name}}] 构建失败",
|
|
19
|
+
"watchBuildWarnings": " ⚠️ [{{name}}] 构建完成 - {{count}} 警告",
|
|
20
|
+
"watchBuildSuccess": " ✅ [{{name}}] 构建完成",
|
|
21
|
+
"watchInitFailed": " ❌ [{{name}}] 初始化失败: {{message}}"
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "清理所有安装的技能包",
|
|
3
|
+
"options.global": "清理全局目录 (~/.spaceflow) 的安装内容",
|
|
4
|
+
"clearFailed": "❌ 清理失败: {{error}}",
|
|
5
|
+
"extensionDescription": "清理缓存和临时文件",
|
|
6
|
+
"clearingGlobal": "🧹 清理所有技能包 (全局)",
|
|
7
|
+
"clearing": "🧹 清理所有技能包",
|
|
8
|
+
"clearDone": "✅ 清理完成",
|
|
9
|
+
"spaceflowNotExist": " .spaceflow 不存在,跳过",
|
|
10
|
+
"spaceflowNoClean": " .spaceflow 无需清理",
|
|
11
|
+
"clearingSpaceflow": " 清理 .spaceflow ({{count}} 项,保留配置文件)",
|
|
12
|
+
"deleted": " 删除: {{entry}}",
|
|
13
|
+
"deleteFailed": " 警告: 删除 {{entry}} 失败:",
|
|
14
|
+
"clearingSkills": " 清理 {{editor}}/skills ({{count}} 项)",
|
|
15
|
+
"clearingCommands": " 清理 {{editor}}/commands ({{count}} 个 .md 文件)"
|
|
16
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "基于暂存区变更自动生成规范的 commit message 并提交",
|
|
3
|
+
"options.dryRun": "仅生成 commit message,不执行提交",
|
|
4
|
+
"options.noVerify": "跳过 pre-commit 和 commit-msg hooks",
|
|
5
|
+
"options.split": "按包/逻辑/业务拆分为多个 commit",
|
|
6
|
+
"dryRunMode": "\n🔍 Dry Run 模式",
|
|
7
|
+
"splitSuccess": "\n✅ 成功拆分为 {{count}} 个 commit",
|
|
8
|
+
"commitSuccess": "\n✅ 提交成功",
|
|
9
|
+
"commitFailed": "\n❌ 提交失败: {{error}}",
|
|
10
|
+
"extensionDescription": "智能 commit 命令,使用 LLM 生成 commit message",
|
|
11
|
+
"getDiffFailed": "获取暂存区 diff 失败,请确保在 git 仓库中运行",
|
|
12
|
+
"noFilesToCommit": "没有文件需要提交",
|
|
13
|
+
"noChanges": "没有变更内容",
|
|
14
|
+
"generatingMessage": "📝 正在使用 AI 生成 commit message...",
|
|
15
|
+
"strategyRules": "自定义规则",
|
|
16
|
+
"strategyRulesFirst": "规则优先",
|
|
17
|
+
"strategyPackage": "包目录",
|
|
18
|
+
"groupingByStrategy": "🔍 正在按 {{strategy}} 策略分组文件...",
|
|
19
|
+
"detectedGroups": "📦 检测到 {{count}} 个分组的变更",
|
|
20
|
+
"scopeChanges": "{{scope}} 的变更",
|
|
21
|
+
"rootChanges": "根目录变更",
|
|
22
|
+
"otherChanges": "其他变更",
|
|
23
|
+
"allChanges": "所有变更",
|
|
24
|
+
"analyzingSplit": "🔍 正在分析包内如何拆分 commit...",
|
|
25
|
+
"dryRunMessage": "[Dry Run] 将提交以下 message:\n{{message}}",
|
|
26
|
+
"commitFail": "commit 失败",
|
|
27
|
+
"stageFilesFailed": "暂存文件失败: {{error}}",
|
|
28
|
+
"noWorkingChanges": "没有工作区改动",
|
|
29
|
+
"noStagedFiles": "没有暂存的文件",
|
|
30
|
+
"singleCommit": "📦 变更无需拆分,将作为单个 commit 提交",
|
|
31
|
+
"generatedMessage": "\n📋 生成的 commit message:",
|
|
32
|
+
"splitIntoCommits": "\n📦 将拆分为 {{count}} 个 commit",
|
|
33
|
+
"groupItem": " {{index}}. {{reason}}{{pkg}} ({{count}} 个文件)",
|
|
34
|
+
"parallelGenerating": "\n🚀 并行生成 {{count}} 个 commit message...",
|
|
35
|
+
"allMessagesGenerated": "✅ 所有 commit message 生成完成",
|
|
36
|
+
"generateMessageFailed": "生成 commit message 失败: {{errors}}",
|
|
37
|
+
"resetStagingFailed": "重置暂存区失败",
|
|
38
|
+
"committingGroup": "\n📝 正在提交第 {{current}}/{{total}} 组: {{reason}}{{pkg}}",
|
|
39
|
+
"skippingNoChanges": "⏭️ 跳过: 没有实际变更",
|
|
40
|
+
"commitMessage": "📋 Commit message:",
|
|
41
|
+
"commitItemFailed": "❌ Commit {{index}} 失败: {{error}}",
|
|
42
|
+
"commitItemFailedDetail": "第 {{index}} 个 commit 失败: {{error}}\n\n已完成的提交:\n{{committed}}",
|
|
43
|
+
"noChangesAll": "没有任何改动,请先修改文件或使用 git add 添加文件",
|
|
44
|
+
"noStagedFilesHint": "没有暂存的文件,请先使用 git add 添加文件"
|
|
45
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "基于模板创建新的插件",
|
|
3
|
+
"options.directory": "指定创建目录",
|
|
4
|
+
"options.list": "列出可用的模板",
|
|
5
|
+
"options.from": "使用远程 Git 仓库作为模板源",
|
|
6
|
+
"options.ref": "指定 Git 分支或标签(默认: main)",
|
|
7
|
+
"noName": "❌ 请指定名称",
|
|
8
|
+
"usage": "用法: spaceflow create <template> <name>",
|
|
9
|
+
"createFailed": "❌ 创建失败: {{error}}",
|
|
10
|
+
"availableTemplates": "可用模板:",
|
|
11
|
+
"extensionDescription": "创建新的插件/技能模板",
|
|
12
|
+
"updatingRepo": "🔄 更新模板仓库: {{url}}",
|
|
13
|
+
"updateFailed": "⚠️ 更新失败,使用缓存版本",
|
|
14
|
+
"cloningRepo": "📥 克隆模板仓库: {{url}}",
|
|
15
|
+
"cloneFailed": "克隆仓库失败: {{error}}",
|
|
16
|
+
"repoReady": "✅ 模板仓库就绪: {{dir}}",
|
|
17
|
+
"templatesDirNotFound": "找不到模板目录",
|
|
18
|
+
"creatingPlugin": "📦 创建 {{template}} 插件: {{name}}",
|
|
19
|
+
"targetDir": " 目录: {{dir}}",
|
|
20
|
+
"dirExists": "目录已存在: {{dir}}",
|
|
21
|
+
"templateNotFound": "模板 \"{{template}}\" 不存在。可用模板: {{available}}",
|
|
22
|
+
"noTemplatesAvailable": "无",
|
|
23
|
+
"pluginCreated": "✅ {{template}} 插件创建完成: {{name}}",
|
|
24
|
+
"nextSteps": "下一步:",
|
|
25
|
+
"fileCreated": " ✓ 创建 {{file}}",
|
|
26
|
+
"fileCopied": " ✓ 复制 {{file}}"
|
|
27
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "安装技能包(支持 npm 包和 git 仓库),不带参数时更新配置文件中的所有 skills",
|
|
3
|
+
"options.name": "指定技能包名称(默认从 source 自动提取)",
|
|
4
|
+
"options.global": "安装到全局目录 (~/.spaceflow) 并关联到全局编辑器目录",
|
|
5
|
+
"options.ignoreErrors": "忽略安装错误,不退出进程",
|
|
6
|
+
"globalNoSource": "❌ 全局安装必须指定 source 参数",
|
|
7
|
+
"globalUsage": " 用法: spaceflow install <source> -g [--name <名称>]",
|
|
8
|
+
"installFailed": "❌ 安装失败: {{error}}",
|
|
9
|
+
"extensionDescription": "安装插件/技能到项目中",
|
|
10
|
+
"envPlaceholder": "<请填写 {{key}}>",
|
|
11
|
+
"registerMcp": " 注册 MCP Server: {{name}}",
|
|
12
|
+
"mcpEnvHint": " ⚠️ 请在 {{path}} 中配置环境变量: {{vars}}",
|
|
13
|
+
"installingExtension": "📦 安装 Extension: {{source}}",
|
|
14
|
+
"installDone": "✅ 安装完成: {{name}}",
|
|
15
|
+
"typeLocal": " 类型: 本地路径",
|
|
16
|
+
"sourcePath": " 源路径: {{path}}",
|
|
17
|
+
"typeGit": " 类型: git 仓库",
|
|
18
|
+
"sourceUrl": " 源: {{url}}",
|
|
19
|
+
"typeNpm": " 类型: npm 包",
|
|
20
|
+
"targetDir": " 目标目录: {{dir}}",
|
|
21
|
+
"extensionInstallFailed": "Extension 安装失败: {{source}}",
|
|
22
|
+
"creatingDir": " 创建目录: {{dir}}",
|
|
23
|
+
"dirExistsSkip": " 目录已存在,跳过克隆",
|
|
24
|
+
"cloningRepo": " 克隆仓库...",
|
|
25
|
+
"cloneFailed": "克隆仓库失败: {{error}}",
|
|
26
|
+
"removingGit": " 移除 .git 目录...",
|
|
27
|
+
"depsLinkExists": " deps 链接已存在,跳过",
|
|
28
|
+
"depsExists": " deps/{{name}} 已存在,跳过",
|
|
29
|
+
"createDepsLink": " 创建 deps 链接: {{dep}} -> {{source}}",
|
|
30
|
+
"skillLinkExists": " skills/{{name}} 链接已存在,跳过",
|
|
31
|
+
"createSkillLink": " 创建 skills 链接: skills/{{name}} -> {{target}}",
|
|
32
|
+
"copySkill": " 复制 skills/{{name}}",
|
|
33
|
+
"globalInstalling": "🔄 全局安装: {{name}} ({{dir}})",
|
|
34
|
+
"pluginTypes": " 插件类型: {{types}}",
|
|
35
|
+
"globalInstallDone": "\n✅ 全局安装完成",
|
|
36
|
+
"updatingAll": "🔄 更新所有依赖...",
|
|
37
|
+
"noDeps": " 配置文件中没有 dependencies",
|
|
38
|
+
"foundDeps": " 找到 {{count}} 个依赖",
|
|
39
|
+
"installingDeps": "\n📦 安装依赖...",
|
|
40
|
+
"pmInstallFailed": " 警告: {{pm}} install 失败",
|
|
41
|
+
"depNotInstalled": " ⚠️ {{name}} 未安装成功,跳过",
|
|
42
|
+
"allExtensionsDone": "\n✅ 所有 Extension 更新完成",
|
|
43
|
+
"updatedPackageJson": " ✓ 更新 .spaceflow/package.json",
|
|
44
|
+
"symlinkExists": " ✓ 符号链接已存在",
|
|
45
|
+
"createSymlink": " 创建符号链接: {{target}} -> {{source}}",
|
|
46
|
+
"createSymlinkFailed": "创建符号链接失败: {{error}}",
|
|
47
|
+
"pullFailed": " 警告: 拉取最新代码失败",
|
|
48
|
+
"checkoutVersion": " 切换到版本: {{ref}}",
|
|
49
|
+
"checkoutFailed": " 警告: 切换版本失败",
|
|
50
|
+
"installingDepsEllipsis": " 安装依赖...",
|
|
51
|
+
"depsInstallFailed": " 警告: 依赖安装失败",
|
|
52
|
+
"depsInstalled": " ✓ 依赖已安装",
|
|
53
|
+
"buildingPlugin": " 构建插件...",
|
|
54
|
+
"buildFailed": " 警告: 构建失败",
|
|
55
|
+
"buildExists": " ✓ 构建已存在",
|
|
56
|
+
"repoExists": " 仓库已存在,更新...",
|
|
57
|
+
"repoUpdateFailed": " 警告: 更新仓库失败",
|
|
58
|
+
"cloneRepoFailed": " 警告: 克隆仓库失败",
|
|
59
|
+
"skillMdExists": " ✓ SKILL.md 已存在",
|
|
60
|
+
"skillMdGenerated": " ✓ 生成 SKILL.md",
|
|
61
|
+
"skillMdFailed": " 警告: 生成 SKILL.md 失败",
|
|
62
|
+
"commandMdGenerated": " ✓ 生成 commands/{{name}}.md",
|
|
63
|
+
"commandMdFailed": " 警告: 生成 commands/{{name}}.md 失败",
|
|
64
|
+
"configUpdated": " 更新配置文件: {{path}}",
|
|
65
|
+
"configAlreadyExists": " 配置文件已包含该技能包",
|
|
66
|
+
"depsUpToDate": " ✓ 依赖已是最新",
|
|
67
|
+
"buildUpToDate": " ✓ 构建已是最新",
|
|
68
|
+
"detailSection": "详细说明",
|
|
69
|
+
"usageSection": "用法",
|
|
70
|
+
"commandDefault": "{{name}} 命令"
|
|
71
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "启动 MCP Server,提供所有已安装扩展的 MCP 工具",
|
|
3
|
+
"options.inspector": "启动 MCP Inspector 进行交互式调试",
|
|
4
|
+
"inspectorStarting": "🔍 启动 MCP Inspector...",
|
|
5
|
+
"inspectorDebugCmd": " 调试命令: pnpm space mcp",
|
|
6
|
+
"inspectorFailed": "❌ 启动 MCP Inspector 失败: {{error}}",
|
|
7
|
+
"extensionDescription": "启动 MCP Server,提供所有已安装扩展的 MCP 工具",
|
|
8
|
+
"scanning": "🔍 扫描已安装的扩展...",
|
|
9
|
+
"foundExtensions": " 发现 {{count}} 个扩展",
|
|
10
|
+
"checkingExport": " 检查 {{key}}: __mcp_server__={{hasMcpServer}}",
|
|
11
|
+
"containerSuccess": " ✅ 从容器获取 {{key}} 实例成功",
|
|
12
|
+
"containerFailed": " ⚠️ 从容器获取 {{key}} 失败: {{error}}",
|
|
13
|
+
"loadToolsFailed": " ⚠️ {{name}}: 加载 MCP 工具失败",
|
|
14
|
+
"noToolsFound": "❌ 没有找到任何 MCP 工具",
|
|
15
|
+
"noToolsHint": " 提示: 确保已安装支持 MCP 的扩展,并导出 mcpService 或 getMcpTools",
|
|
16
|
+
"toolsFound": "✅ 共发现 {{count}} 个 MCP 工具",
|
|
17
|
+
"ttyHint": "💡 MCP Server 需要由 MCP 客户端(如 Cursor、Claude Desktop)通过管道启动。\n 请将以下配置添加到你的 MCP 客户端中:\n\n \"spaceflow\": {\n \"command\": \"pnpm\",\n \"args\": [\"space\", \"mcp\"]\n }",
|
|
18
|
+
"serverStarted": "🚀 MCP Server 已启动,共 {{count}} 个工具"
|
|
19
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "全局安装依赖并运行命令",
|
|
3
|
+
"options.name": "指定命令名称(默认从 source 自动提取)",
|
|
4
|
+
"noSource": "❌ 请指定要运行的依赖源",
|
|
5
|
+
"usage": " 用法: spaceflow x <source> [args...]",
|
|
6
|
+
"runFailed": "❌ 运行失败: {{error}}",
|
|
7
|
+
"extensionDescription": "执行插件提供的脚本命令",
|
|
8
|
+
"runningCommand": "▶️ 运行命令: {{command}}",
|
|
9
|
+
"npxExitCode": "npx {{package}} 退出码: {{code}}",
|
|
10
|
+
"commandNotInstalled": "命令 {{name}} 未安装",
|
|
11
|
+
"commandNotBuilt": "命令 {{name}} 未构建,缺少 dist/index.js",
|
|
12
|
+
"pluginNoExport": "插件 {{name}} 没有默认导出"
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "初始化 spaceflow 配置文件",
|
|
3
|
+
"options.global": "生成全局配置到 ~/spaceflow/spaceflow.json(合并本地 .env 和 spaceflow.json)",
|
|
4
|
+
"setupFailed": "❌ 初始化失败: {{error}}",
|
|
5
|
+
"extensionDescription": "初始化 spaceflow 配置文件",
|
|
6
|
+
"dirCreated": "✅ 已创建目录: {{dir}}",
|
|
7
|
+
"configGenerated": "✅ 已生成配置文件: {{path}}",
|
|
8
|
+
"configExists": "ℹ️ 配置文件已存在: {{path}}",
|
|
9
|
+
"localConfigRead": "📖 已读取本地配置",
|
|
10
|
+
"globalConfigGenerated": "✅ 已生成全局配置: {{path}}",
|
|
11
|
+
"envConfigMerged": "📝 已合并环境变量配置:",
|
|
12
|
+
"envRead": "📖 已读取环境变量: {{path}}",
|
|
13
|
+
"envReadFailed": "⚠️ 无法读取 .env 文件: {{path}}"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "卸载技能包",
|
|
3
|
+
"options.global": "从全局目录 (~/.spaceflow) 卸载并清理各个编辑器的关联",
|
|
4
|
+
"noName": "❌ 请指定要卸载的技能包名称",
|
|
5
|
+
"uninstallFailed": "❌ 卸载失败: {{error}}",
|
|
6
|
+
"extensionDescription": "卸载已安装的插件/技能",
|
|
7
|
+
"uninstallingExtension": " 卸载 Extension: {{name}}",
|
|
8
|
+
"targetDir": " 目标目录: {{dir}}",
|
|
9
|
+
"extensionUninstallFailed": " 警告: Extension 卸载失败: {{name}}",
|
|
10
|
+
"uninstallingGlobal": "🗑️ 卸载技能包: {{name}} (全局)",
|
|
11
|
+
"uninstalling": "🗑️ 卸载技能包: {{name}}",
|
|
12
|
+
"foundDependency": " 找到依赖: {{key}} -> {{value}}",
|
|
13
|
+
"notRegistered": "技能包 \"{{name}}\" 未在配置文件中注册",
|
|
14
|
+
"uninstallDone": "✅ 卸载完成",
|
|
15
|
+
"deletingSkill": " 删除: skills/{{entry}}",
|
|
16
|
+
"deletingCommand": " 删除: commands/{{entry}}",
|
|
17
|
+
"configUpdated": " 更新配置文件: {{path}}"
|
|
18
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "更新依赖(npm 包获取最新版本,git 仓库拉取最新代码)",
|
|
3
|
+
"options.self": "更新 spaceflow CLI 自身",
|
|
4
|
+
"updateFailed": "❌ 更新失败: {{error}}",
|
|
5
|
+
"extensionDescription": "更新依赖(npm 包获取最新版本,git 仓库拉取最新代码)",
|
|
6
|
+
"cannotGetLatest": " ⚠️ 无法获取 {{package}} 的最新版本",
|
|
7
|
+
"alreadyLatest": " ✓ {{package}} 已是最新版本 ({{version}})",
|
|
8
|
+
"versionChange": " {{package}}: {{current}} -> {{latest}}",
|
|
9
|
+
"unknown": "未知",
|
|
10
|
+
"npmUpdateFailed": " ❌ 更新 {{package}} 失败:",
|
|
11
|
+
"notGitRepo": " ⚠️ {{name}} 不是 git 仓库(可能已移除 .git)",
|
|
12
|
+
"reinstallHint": " 提示: 使用 spaceflow install <source> 重新安装",
|
|
13
|
+
"pullingLatest": " 拉取最新代码...",
|
|
14
|
+
"gitUpdateFailed": " ❌ 更新 {{name}} 失败:",
|
|
15
|
+
"updatingCli": "🔄 更新 spaceflow CLI...",
|
|
16
|
+
"installMethod": " 安装方式: {{method}} ({{pm}})",
|
|
17
|
+
"installGlobal": "全局",
|
|
18
|
+
"installLocal": "本地",
|
|
19
|
+
"executing": " 执行: {{cmd}}",
|
|
20
|
+
"cliUpdateDone": "✅ CLI 更新完成",
|
|
21
|
+
"cliUpdateFailed": "❌ CLI 更新失败:",
|
|
22
|
+
"depNotFound": "❌ 未找到依赖: {{name}}",
|
|
23
|
+
"updating": "📦 更新: {{name}}",
|
|
24
|
+
"localNoUpdate": " ✓ 本地路径无需更新",
|
|
25
|
+
"noDeps": "📦 没有找到依赖",
|
|
26
|
+
"updatingAll": "🔄 更新所有依赖 ({{count}} 个)...",
|
|
27
|
+
"updateComplete": "✅ 更新完成: {{success}} 成功, {{fail}} 失败"
|
|
28
|
+
}
|
|
@@ -1,23 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* key: 编辑器名称(用于配置文件)
|
|
4
|
-
* value: 编辑器配置目录名(以 . 开头)
|
|
2
|
+
* 从 @spaceflow/shared 重导出 editor-config
|
|
5
3
|
*/
|
|
6
|
-
export
|
|
7
|
-
claudeCode: ".claude",
|
|
8
|
-
windsurf: ".windsurf",
|
|
9
|
-
cursor: ".cursor",
|
|
10
|
-
opencode: ".opencode",
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 默认支持的编辑器
|
|
15
|
-
*/
|
|
16
|
-
export const DEFAULT_EDITOR = "claudeCode";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* 根据编辑器名称获取配置目录名
|
|
20
|
-
*/
|
|
21
|
-
export function getEditorDirName(editor: string): string {
|
|
22
|
-
return EDITOR_DIR_MAPPING[editor] || `.${editor}`;
|
|
23
|
-
}
|
|
4
|
+
export { EDITOR_DIR_MAPPING, DEFAULT_EDITOR, getEditorDirName } from "@spaceflow/shared";
|
|
@@ -108,7 +108,9 @@ export class OpenAIAdapter implements LlmAdapter {
|
|
|
108
108
|
const model = options?.model || openaiConf.model;
|
|
109
109
|
|
|
110
110
|
if (shouldLog(options?.verbose, 1)) {
|
|
111
|
-
console.log(
|
|
111
|
+
console.log(
|
|
112
|
+
`[LLMProxy.OpenAIAdapter.chatStream] 配置: Model=${model}, BaseURL=${openaiConf.baseUrl || "默认"}`,
|
|
113
|
+
);
|
|
112
114
|
}
|
|
113
115
|
try {
|
|
114
116
|
const stream = await client.chat.completions.create({
|