jarvis-agent-factory 3.45.7 → 3.46.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 +26 -22
- package/dist/package.json +3 -3
- package/dist/src/cli/commands/diff.d.ts +0 -3
- package/dist/src/cli/commands/diff.js +351 -21
- package/dist/src/cli/commands/diff.js.map +1 -1
- package/dist/src/cli/commands/resolve.d.ts +12 -0
- package/dist/src/cli/commands/resolve.js +385 -0
- package/dist/src/cli/commands/resolve.js.map +1 -0
- package/dist/src/cli/index.js +1 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/utils/resolve.d.ts +3 -0
- package/dist/src/cli/utils/resolve.js +14 -2
- package/dist/src/cli/utils/resolve.js.map +1 -1
- package/dist/src/engine/agent-registry.d.ts +5 -0
- package/dist/src/engine/agent-registry.js +26 -1
- package/dist/src/engine/agent-registry.js.map +1 -1
- package/dist/src/engine/db.js +1 -1
- package/dist/src/engine/db.js.map +1 -1
- package/dist/src/engine/gates.js +2 -2
- package/dist/src/engine/gates.js.map +1 -1
- package/dist/src/engine/server.js +90 -22
- package/dist/src/engine/server.js.map +1 -1
- package/dist/src/hook.js +2 -2
- package/dist/src/hook.js.map +1 -1
- package/dist/src/install.js +486 -38
- package/dist/src/install.js.map +1 -1
- package/dist/src/shared/markdown-utils.d.ts +54 -0
- package/dist/src/shared/markdown-utils.js +150 -0
- package/dist/src/shared/markdown-utils.js.map +1 -0
- package/dist/src/templates/platforms/claude/agents/algorithm-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/android-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/android-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/android-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/api-contract-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/api-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-api-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-architect.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-data-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-logic-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/backend-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/browser-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/browser-use-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/change-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/code-explore-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/database-architect.md +2 -0
- package/dist/src/templates/platforms/claude/agents/diff-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/docs-engineer.md +5 -3
- package/dist/src/templates/platforms/claude/agents/docs-research-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/e2e-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/external-resource-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/fix-retest.md +2 -0
- package/dist/src/templates/platforms/claude/agents/flutter-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/flutter-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/flutter-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-architect.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/frontend-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/infra-deploy-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/ios-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/ios-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/ios-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/perf-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/perf-test-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/planner.md +2 -0
- package/dist/src/templates/platforms/claude/agents/project-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/qa-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/react-native-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/react-native-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/react-native-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/remediation-expert.md +6 -2
- package/dist/src/templates/platforms/claude/agents/remediation-planner.md +2 -0
- package/dist/src/templates/platforms/claude/agents/review-fix-optimize.md +6 -1
- package/dist/src/templates/platforms/claude/agents/review-only.md +2 -0
- package/dist/src/templates/platforms/claude/agents/security-review-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/skill-assignment-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/taro-dev-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/taro-state-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/taro-ui-expert.md +2 -0
- package/dist/src/templates/platforms/claude/agents/task-design.md +2 -0
- package/dist/src/templates/platforms/claude/agents/test-doc-writer.md +2 -0
- package/dist/src/templates/platforms/claude/agents/test-executor.md +2 -0
- package/dist/src/templates/platforms/claude/commands/algorithm-expert.md +2 -0
- package/dist/src/templates/platforms/claude/commands/android.md +4 -0
- package/dist/src/templates/platforms/claude/commands/backend-architect.md +2 -0
- package/dist/src/templates/platforms/claude/commands/backend.md +7 -0
- package/dist/src/templates/platforms/claude/commands/browser-explore.md +2 -0
- package/dist/src/templates/platforms/claude/commands/browser-test.md +2 -0
- package/dist/src/templates/platforms/claude/commands/bug-fix.md +2 -0
- package/dist/src/templates/platforms/claude/commands/debug.md +2 -0
- package/dist/src/templates/platforms/claude/commands/evaluate.md +2 -0
- package/dist/src/templates/platforms/claude/commands/expo.md +4 -0
- package/dist/src/templates/platforms/claude/commands/flutter.md +4 -0
- package/dist/src/templates/platforms/claude/commands/frontend-architect.md +2 -0
- package/dist/src/templates/platforms/claude/commands/frontend.md +7 -0
- package/dist/src/templates/platforms/claude/commands/hotfix.md +10 -3
- package/dist/src/templates/platforms/claude/commands/ios.md +4 -0
- package/dist/src/templates/platforms/claude/commands/jarvis-lite.md +13 -6
- package/dist/src/templates/platforms/claude/commands/jarvis.md +22 -1
- package/dist/src/templates/platforms/claude/commands/migrate.md +2 -0
- package/dist/src/templates/platforms/claude/commands/refactor.md +8 -2
- package/dist/src/templates/platforms/claude/commands/review-fix.md +2 -0
- package/dist/src/templates/platforms/claude/commands/review.md +2 -0
- package/dist/src/templates/platforms/claude/commands/taro.md +4 -0
- package/dist/src/templates/platforms/claude/commands/task-bdd.md +2 -0
- package/dist/src/templates/platforms/claude/commands/task-ddd.md +2 -0
- package/dist/src/templates/platforms/claude/commands/task-tdd.md +2 -0
- package/dist/src/templates/platforms/claude/commands/test-e2e.md +2 -0
- package/dist/src/templates/platforms/claude/commands/test-integration.md +2 -0
- package/dist/src/templates/platforms/claude/commands/test-perf.md +2 -0
- package/dist/src/templates/platforms/claude/commands/test-security.md +2 -0
- package/dist/src/templates/platforms/claude/commands/test-unit.md +2 -0
- package/dist/src/templates/platforms/claude/skills/behavioral-guidelines/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/browser-testing/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/browser-use/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/browser-use/references/cdp-python.md +4 -0
- package/dist/src/templates/platforms/claude/skills/browser-use/references/multi-session.md +4 -0
- package/dist/src/templates/platforms/claude/skills/chinese-documentation/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/code-quality-gate/SKILL.md +5 -1
- package/dist/src/templates/platforms/claude/skills/code-review-and-quality/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/code-simplification/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/code-standards/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/context-engineering/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/debugging-and-error-recovery/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/debugging-deep/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/documentation-and-adrs/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/find-docs/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/finishing-a-development-branch/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/frontend-design/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/git-workflow-and-versioning/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/idea-refine/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/incremental-implementation/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/mcp-builder/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/perf-testing/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/planning-and-task-breakdown/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/refactoring/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/security-and-hardening/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/security-testing/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/shipping-and-launch/SKILL.md +4 -0
- package/dist/src/templates/platforms/claude/skills/source-driven-development/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/spec-driven-development/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/test-data-factory/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/test-driven-development/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/using-agent-skills/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/verification-before-completion/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/writing-skills/SKILL.md +2 -0
- package/dist/src/templates/platforms/claude/skills/writing-skills/anthropic-best-practices.md +4 -0
- package/dist/src/templates/platforms/claude/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +4 -0
- package/dist/src/templates/platforms/claude/skills/writing-skills/persuasion-principles.md +4 -0
- package/dist/src/templates/platforms/claude/skills/writing-skills/testing-skills-with-subagents.md +4 -0
- package/dist/src/web/routes.js +10 -2
- package/dist/src/web/routes.js.map +1 -1
- package/dist/tests/install-merge.test.d.ts +1 -0
- package/dist/tests/install-merge.test.js +266 -0
- package/dist/tests/install-merge.test.js.map +1 -0
- package/dist/tests/install-section-hash.test.d.ts +1 -0
- package/dist/tests/install-section-hash.test.js +161 -0
- package/dist/tests/install-section-hash.test.js.map +1 -0
- package/dist/web/index.html +50 -50
- package/package.json +3 -3
- package/dist/src/web/views/agents.html +0 -579
- package/dist/src/web/views/pipeline.html +0 -1347
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Jarvis Agent Factory · 贾维斯智能体工厂
|
|
2
2
|
|
|
3
3
|
[](./LICENSE)
|
|
4
|
-
[](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
|
|
5
5
|
[](https://www.npmjs.com/package/jarvis-agent-factory)
|
|
6
6
|
[](https://github.com/Wjl1224734792/visual-primitives-mcp)
|
|
7
7
|
<br>💡 **纯文本模型(如 DeepSeek)主力用户** → 搭配 [Visual Primitives MCP](https://github.com/Wjl1224734792/visual-primitives-mcp) 获得视觉理解能力
|
|
@@ -64,27 +64,28 @@ jarvis web # 启动 Web 面板(按需)
|
|
|
64
64
|
```
|
|
65
65
|
docs/
|
|
66
66
|
├── tmp/ # 临时产物(截图、快照、导出的验证数据等,已 .gitignore 排除)
|
|
67
|
-
├──
|
|
68
|
-
├──
|
|
69
|
-
├──
|
|
70
|
-
├──
|
|
71
|
-
├──
|
|
72
|
-
├──
|
|
73
|
-
├──
|
|
74
|
-
|
|
67
|
+
├── YYYY-MM-DD/ # ★ 日期分类目录(唯一合法格式)
|
|
68
|
+
│ ├── requirements/ # Gate A — 需求文档
|
|
69
|
+
│ ├── tasks/ # Gate B — 任务分解文档
|
|
70
|
+
│ ├── architecture/ # Gate B1 — 架构评审产出
|
|
71
|
+
│ ├── plans/ # Gate C — 执行计划文档
|
|
72
|
+
│ ├── implementation/ # Gate C-impl — 实现文档
|
|
73
|
+
│ ├── testing/ # Gate C2 — 测试文档与报告
|
|
74
|
+
│ ├── review/ # Gate D — 评审报告
|
|
75
|
+
│ └── shipping/ # Gate E — 发布记录
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
| 目录 | 对应 Gate | 说明 |
|
|
78
79
|
|------|----------|------|
|
|
79
80
|
| `docs/tmp/` | 全部 | 过程临时产物,不入版本库 |
|
|
80
|
-
| `docs/requirements/` | Gate A | 需求澄清文档 |
|
|
81
|
-
| `docs/tasks/` | Gate B | 任务分解文档 |
|
|
82
|
-
| `docs/architecture/` | Gate B1 | 架构评审报告 |
|
|
83
|
-
| `docs/plans/` | Gate C | 执行计划 |
|
|
84
|
-
| `docs/implementation/` | Gate C-impl | 实现说明文档 |
|
|
85
|
-
| `docs/testing/` | Gate C2 | 测试用例与报告 |
|
|
86
|
-
| `docs/review/` | Gate D | 代码评审报告 |
|
|
87
|
-
| `docs/shipping/` | Gate E | 发布记录与版本日志 |
|
|
81
|
+
| `docs/YYYY-MM-DD/requirements/` | Gate A | 需求澄清文档 |
|
|
82
|
+
| `docs/YYYY-MM-DD/tasks/` | Gate B | 任务分解文档 |
|
|
83
|
+
| `docs/YYYY-MM-DD/architecture/` | Gate B1 | 架构评审报告 |
|
|
84
|
+
| `docs/YYYY-MM-DD/plans/` | Gate C | 执行计划 |
|
|
85
|
+
| `docs/YYYY-MM-DD/implementation/` | Gate C-impl | 实现说明文档 |
|
|
86
|
+
| `docs/YYYY-MM-DD/testing/` | Gate C2 | 测试用例与报告 |
|
|
87
|
+
| `docs/YYYY-MM-DD/review/` | Gate D | 代码评审报告 |
|
|
88
|
+
| `docs/YYYY-MM-DD/shipping/` | Gate E | 发布记录与版本日志 |
|
|
88
89
|
|
|
89
90
|
## 架构
|
|
90
91
|
|
|
@@ -255,8 +256,8 @@ test-doc-writer → test-executor → fix-retest
|
|
|
255
256
|
## 生命周期流水线
|
|
256
257
|
|
|
257
258
|
```
|
|
258
|
-
想法细化 → 需求澄清 → 任务分解 → 执行规划 → 并行实现 → 质量门 → 视觉验证 → 测试 → 评审 → 发布
|
|
259
|
-
Gate 0 Gate A Gate B Gate C Gate C Gate C1 Gate C1.5 Gate C2 Gate D Gate E
|
|
259
|
+
想法细化 → 需求澄清 → 任务分解 → 执行规划 → 并行实现 → 质量门 → 视觉验证 → 测试 → 评审 → 质量重检 → 发布
|
|
260
|
+
Gate 0 Gate A Gate B Gate C Gate C Gate C1 Gate C1.5 Gate C2 Gate D Gate E(前置) Gate E
|
|
260
261
|
```
|
|
261
262
|
|
|
262
263
|
## 平台入口速查(Claude Code)
|
|
@@ -320,9 +321,12 @@ test-doc-writer → test-executor → fix-retest
|
|
|
320
321
|
|
|
321
322
|
## 发布流程
|
|
322
323
|
|
|
323
|
-
|
|
324
|
+
**质量重检 → 测试 → 推送 main → 打 Tag → GitHub Actions 自动发布**
|
|
324
325
|
|
|
325
|
-
1.
|
|
326
|
+
1. 🔴 **最终质量重检**(Gate E 前置条件,不可跳过):
|
|
327
|
+
- Lint + Type-check + Build + Deps Audit 全部通过
|
|
328
|
+
- 测试套件全部通过(`npm test`)
|
|
329
|
+
- 失败 → 修复 → 重跑全部,最多 2 轮
|
|
326
330
|
2. 更新 `package.json` 版本号(语义化版本)
|
|
327
331
|
3. **同步更新 AGENTS.md / README.md / docs/README.md**
|
|
328
332
|
4. 提交 + 打 Tag:`git tag -a v<version> -m "v<version> - <概要>"`
|
|
@@ -330,7 +334,7 @@ test-doc-writer → test-executor → fix-retest
|
|
|
330
334
|
6. GitHub Actions:Release 工作流自动执行(质量检查 → Changelog → GitHub Release + 单 HTML 面板 → npm publish)
|
|
331
335
|
7. 验证:`npm view jarvis-agent-factory version` 确认版本
|
|
332
336
|
|
|
333
|
-
>
|
|
337
|
+
> 每次提交前自问:文档是否需要同步更新?质量重检是否已通过?
|
|
334
338
|
|
|
335
339
|
## 命令流程图
|
|
336
340
|
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jarvis-agent-factory",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.46.1",
|
|
4
4
|
"description": "Jarvis Agent Factory CLI — Claude Code 多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jarvis",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test": "vitest run",
|
|
39
39
|
"test:watch": "vitest",
|
|
40
40
|
"typecheck": "tsc --noEmit",
|
|
41
|
-
"build": "tsc && node
|
|
41
|
+
"build": "tsc && node -e \"import{cpSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true})\"",
|
|
42
42
|
"build:web": "cd web && npm run build",
|
|
43
43
|
"dev": "tsx src/cli/index.ts",
|
|
44
44
|
"jarvis": "node dist/src/cli/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"tsx": "^4.19.0",
|
|
65
65
|
"typescript": "^6.0.3",
|
|
66
66
|
"typescript-eslint": "^8.59.2",
|
|
67
|
-
"vitest": "^4.1.
|
|
67
|
+
"vitest": "^4.1.6"
|
|
68
68
|
},
|
|
69
69
|
"lint-staged": {
|
|
70
70
|
"*.ts": [
|
|
@@ -6,8 +6,187 @@ import { resolveScope } from '../utils/scope.js';
|
|
|
6
6
|
import { resolveTarget } from '../utils/resolve.js';
|
|
7
7
|
import { PLATFORMS, ALL_PLATFORMS, PKG_ROOT } from '../utils/constants.js';
|
|
8
8
|
import { getHashFilePath } from '../../hash-paths.js';
|
|
9
|
+
import { readFrontmatter, splitMarkdownSections, isSectionHashRecord } from '../../shared/markdown-utils.js';
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* 计算 Markdown 文件当前各 section 的 SHA256 hash 映射。
|
|
12
|
+
* @param filePath 文件绝对路径
|
|
13
|
+
* @returns section title → hash 映射
|
|
14
|
+
*/
|
|
15
|
+
function computeCurrentSectionHashes(filePath) {
|
|
16
|
+
try {
|
|
17
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
18
|
+
const { sections } = splitMarkdownSections(content);
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const s of sections) {
|
|
21
|
+
result[s.title] = s.hash;
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// diffJsonConfig — JSON 字段级差异对比
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* 深度对比两个 JSON 对象,返回字段级差异列表。
|
|
34
|
+
* @param template 模板对象(新版)
|
|
35
|
+
* @param target 目标对象(已安装版)
|
|
36
|
+
* @param prefix 当前字段路径前缀(用于递归拼接)
|
|
37
|
+
* @returns 差异描述行列表(含缩进前缀)
|
|
38
|
+
*/
|
|
39
|
+
function diffJsonConfig(template, target, prefix) {
|
|
40
|
+
const diffs = [];
|
|
41
|
+
const allKeys = new Set([...Object.keys(template), ...Object.keys(target)]);
|
|
42
|
+
for (const key of allKeys) {
|
|
43
|
+
const fullPath = prefix ? `${prefix}.${key}` : key;
|
|
44
|
+
const inTemplate = key in template;
|
|
45
|
+
const inTarget = key in target;
|
|
46
|
+
if (!inTarget) {
|
|
47
|
+
// 目标中不存在此字段 → 来自模板的新增字段
|
|
48
|
+
diffs.push(` + ${fullPath}`);
|
|
49
|
+
}
|
|
50
|
+
else if (!inTemplate) {
|
|
51
|
+
// 模板中不存在此字段 → 模板已移除此字段
|
|
52
|
+
diffs.push(` - ${fullPath}`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const tv = template[key];
|
|
56
|
+
const tg = target[key];
|
|
57
|
+
const isTvObj = typeof tv === 'object' && tv !== null && !Array.isArray(tv);
|
|
58
|
+
const isTgObj = typeof tg === 'object' && tg !== null && !Array.isArray(tg);
|
|
59
|
+
if (isTvObj && isTgObj) {
|
|
60
|
+
// 双方都是纯对象 → 递归对比
|
|
61
|
+
diffs.push(...diffJsonConfig(tv, tg, fullPath));
|
|
62
|
+
}
|
|
63
|
+
else if (JSON.stringify(tv) !== JSON.stringify(tg)) {
|
|
64
|
+
// 值不同 → 已修改
|
|
65
|
+
diffs.push(` ~ ${fullPath} (已修改)`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return diffs;
|
|
70
|
+
}
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// 冲突文件扫描
|
|
73
|
+
// ============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* 递归扫描目录及子目录,查找所有包含未解决冲突标记(<<<<<<< user)的文件。
|
|
76
|
+
* 仅检查 .md 和 .json 文件,跳过隐藏目录和 node_modules。
|
|
77
|
+
* @param root 搜索根目录
|
|
78
|
+
* @returns 冲突文件的相对路径列表(相对于 root)
|
|
79
|
+
*/
|
|
80
|
+
function scanConflictFiles(root) {
|
|
81
|
+
const conflicts = [];
|
|
82
|
+
let scanned = 0;
|
|
83
|
+
const MAX_SCAN = 200;
|
|
84
|
+
/** 检查单个文件是否含冲突标记并记录 */
|
|
85
|
+
function checkFileForConflict(fullPath) {
|
|
86
|
+
if (hasConflictMarker(fullPath)) {
|
|
87
|
+
conflicts.push(fullPath.substring(root.length + 1));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** 递归扫描子目录 */
|
|
91
|
+
function scanDir(dir) {
|
|
92
|
+
if (scanned >= MAX_SCAN)
|
|
93
|
+
return;
|
|
94
|
+
let entries;
|
|
95
|
+
try {
|
|
96
|
+
entries = readdirSync(dir);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
for (const entry of entries) {
|
|
102
|
+
if (scanned >= MAX_SCAN)
|
|
103
|
+
return;
|
|
104
|
+
if (entry.startsWith('.') || entry === 'node_modules')
|
|
105
|
+
continue;
|
|
106
|
+
const fullPath = join(dir, entry);
|
|
107
|
+
let isDir;
|
|
108
|
+
try {
|
|
109
|
+
isDir = statSync(fullPath).isDirectory();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (isDir) {
|
|
115
|
+
scanDir(fullPath);
|
|
116
|
+
}
|
|
117
|
+
else if (entry.endsWith('.md') || entry.endsWith('.json')) {
|
|
118
|
+
scanned++;
|
|
119
|
+
checkFileForConflict(fullPath);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
scanDir(root);
|
|
124
|
+
return conflicts;
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// Markdown section 差异计算
|
|
128
|
+
// ============================================================================
|
|
129
|
+
/**
|
|
130
|
+
* 三向对比 section hash,返回差异描述列表。
|
|
131
|
+
* 源 hash(srcHash)对比旧记录 hash(oldHash)和目标 hash(dstHash):
|
|
132
|
+
* - 源未记录 → 删除;旧未记录 → 新增
|
|
133
|
+
* - 源变 + 目标变 → 冲突;仅源变 → 修改
|
|
134
|
+
*
|
|
135
|
+
* @param oldSections 旧 hash 记录中的 section 映射
|
|
136
|
+
* @param srcSecHashes 当前模板 section hash 映射
|
|
137
|
+
* @param dstSecHashes 当前已安装文件 section hash 映射
|
|
138
|
+
* @returns 差异描述行列表
|
|
139
|
+
*/
|
|
140
|
+
function diffSectionChanges(oldSections, srcSecHashes, dstSecHashes) {
|
|
141
|
+
const diffs = [];
|
|
142
|
+
const allTitles = new Set([...Object.keys(oldSections), ...Object.keys(srcSecHashes)]);
|
|
143
|
+
for (const title of allTitles) {
|
|
144
|
+
const oldHash = oldSections[title];
|
|
145
|
+
const srcHash = srcSecHashes[title];
|
|
146
|
+
const dstHash = dstSecHashes[title];
|
|
147
|
+
if (!srcHash) {
|
|
148
|
+
diffs.push(` § ## ${title} 删除`);
|
|
149
|
+
}
|
|
150
|
+
else if (!oldHash) {
|
|
151
|
+
diffs.push(` § ## ${title} 新增`);
|
|
152
|
+
}
|
|
153
|
+
else if (srcHash !== oldHash && dstHash && dstHash !== oldHash) {
|
|
154
|
+
diffs.push(` § ## ${title} 冲突`);
|
|
155
|
+
}
|
|
156
|
+
else if (srcHash !== oldHash) {
|
|
157
|
+
diffs.push(` § ## ${title} 修改`);
|
|
158
|
+
}
|
|
159
|
+
// srcHash === oldHash → 源未变,忽略
|
|
160
|
+
}
|
|
161
|
+
return diffs;
|
|
162
|
+
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// diffPlatform — 对比单个平台模板与已安装文件的差异
|
|
165
|
+
// ============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* 检查文件是否包含未解决的冲突标记(<<<<<<< user)。
|
|
168
|
+
* @param filePath 文件绝对路径
|
|
169
|
+
* @returns 含冲突标记返回 true,读取失败返回 false
|
|
170
|
+
*/
|
|
171
|
+
function hasConflictMarker(filePath) {
|
|
172
|
+
try {
|
|
173
|
+
return readFileSync(filePath, 'utf-8').includes('<<<<<<< user');
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 对比单个平台模板与已安装文件的差异(增强版)。
|
|
181
|
+
* - Markdown 文件(v2 section hash):显示 version diff + section 级差异
|
|
182
|
+
* - JSON 配置文件:显示字段级差异
|
|
183
|
+
* - 旧 hash 格式(字符串):降级为文件级展示
|
|
184
|
+
* - 汇总冲突文件
|
|
185
|
+
*
|
|
186
|
+
* @param platform 平台名称
|
|
187
|
+
* @param target 项目根目录
|
|
188
|
+
* @param isGlobal 是否为全局安装
|
|
189
|
+
* @returns 该平台下检测到的冲突文件相对路径列表(用于末尾汇总)
|
|
11
190
|
*/
|
|
12
191
|
async function diffPlatform(platform, target, isGlobal) {
|
|
13
192
|
const srcRoot = resolve(PKG_ROOT, 'dist/src', 'templates', 'platforms', platform);
|
|
@@ -17,13 +196,20 @@ async function diffPlatform(platform, target, isGlobal) {
|
|
|
17
196
|
: resolve(homedir(), `.${platform}`))
|
|
18
197
|
: resolve(target, PLATFORMS[platform].dir);
|
|
19
198
|
if (!existsSync(srcRoot))
|
|
20
|
-
return;
|
|
199
|
+
return [];
|
|
21
200
|
const hashFile = getHashFilePath(target, isGlobal);
|
|
22
201
|
const hashes = existsSync(hashFile)
|
|
23
202
|
? JSON.parse(readFileSync(hashFile, 'utf-8'))
|
|
24
203
|
: {};
|
|
25
|
-
|
|
26
|
-
|
|
204
|
+
/** 计算文件整文件 SHA256 hash */
|
|
205
|
+
const fileHash = (f) => createHash('sha256').update(readFileSync(f)).digest('hex');
|
|
206
|
+
let totalChanged = 0;
|
|
207
|
+
let shownCount = 0;
|
|
208
|
+
const MAX_SHOW = 30;
|
|
209
|
+
const conflictFiles = [];
|
|
210
|
+
// ═══════════════════════════════════════════════════════════════
|
|
211
|
+
// 第一步:遍历 agents / commands / skills buckets
|
|
212
|
+
// ═══════════════════════════════════════════════════════════════
|
|
27
213
|
for (const bucket of ['agents', 'commands', 'skills']) {
|
|
28
214
|
const sd = join(srcRoot, bucket);
|
|
29
215
|
const dd = join(destRoot, bucket);
|
|
@@ -35,43 +221,187 @@ async function diffPlatform(platform, target, isGlobal) {
|
|
|
35
221
|
if (statSync(sp).isDirectory())
|
|
36
222
|
continue;
|
|
37
223
|
const rel = `${bucket}/${entry}`;
|
|
38
|
-
const newHash =
|
|
224
|
+
const newHash = fileHash(sp);
|
|
225
|
+
const oldHashRecord = hashes[dp];
|
|
226
|
+
// ── 场景 A:新文件(目标中不存在)──
|
|
39
227
|
if (!existsSync(dp)) {
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
228
|
+
if (shownCount < MAX_SHOW) {
|
|
229
|
+
const srcFm = entry.endsWith('.md') ? readFrontmatter(sp) : null;
|
|
230
|
+
const verExtra = srcFm && srcFm.version !== '0.0.0'
|
|
231
|
+
? `, version: ${srcFm.version}`
|
|
232
|
+
: '';
|
|
233
|
+
console.log(` + ${rel.padEnd(40)} (新增${verExtra})`);
|
|
234
|
+
shownCount++;
|
|
235
|
+
}
|
|
236
|
+
totalChanged++;
|
|
43
237
|
continue;
|
|
44
238
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
239
|
+
const destHash = fileHash(dp);
|
|
240
|
+
// 整文件未变化 → 跳过
|
|
241
|
+
if (newHash === destHash)
|
|
242
|
+
continue;
|
|
243
|
+
const isV2 = isSectionHashRecord(oldHashRecord);
|
|
244
|
+
// ── 场景 B:Markdown section 级 diff(v2 hash 记录)──
|
|
245
|
+
if (entry.endsWith('.md') && isV2) {
|
|
246
|
+
const srcFm = readFrontmatter(sp);
|
|
247
|
+
const destFm = readFrontmatter(dp);
|
|
248
|
+
const oldSections = oldHashRecord.sections;
|
|
249
|
+
const secDiffs = diffSectionChanges(oldSections, computeCurrentSectionHashes(sp), computeCurrentSectionHashes(dp));
|
|
250
|
+
// 版本对比
|
|
251
|
+
const srcVer = srcFm.version || '0.0.0';
|
|
252
|
+
const destVer = destFm.version || '0.0.0';
|
|
253
|
+
const verInfo = srcVer !== destVer ? ` (version: ${destVer} → ${srcVer})` : '';
|
|
254
|
+
if (shownCount < MAX_SHOW) {
|
|
255
|
+
const label = secDiffs.length > 0 ? verInfo : (verInfo || ' (preamble 变更)');
|
|
256
|
+
console.log(` M ${rel.padEnd(40)}${label}`);
|
|
257
|
+
secDiffs.forEach(d => console.log(d));
|
|
258
|
+
shownCount++;
|
|
53
259
|
}
|
|
54
|
-
|
|
260
|
+
totalChanged++;
|
|
261
|
+
// 内联检测冲突标记
|
|
262
|
+
if (hasConflictMarker(dp))
|
|
263
|
+
conflictFiles.push(rel);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// ── 场景 C:文件级 diff(旧 hash 格式或非 markdown)──
|
|
267
|
+
// 降级为文件级展示,保持向后兼容
|
|
268
|
+
const canUpdate = typeof oldHashRecord === 'string' && destHash === oldHashRecord;
|
|
269
|
+
const status = typeof oldHashRecord === 'undefined' || canUpdate
|
|
270
|
+
? '(更新)'
|
|
271
|
+
: '(跳过, 用户已修改)';
|
|
272
|
+
if (shownCount < MAX_SHOW) {
|
|
273
|
+
console.log(` M ${rel.padEnd(40)} ${status}`);
|
|
274
|
+
shownCount++;
|
|
275
|
+
}
|
|
276
|
+
totalChanged++;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// ── 检测目标中存在但模板中已删除的文件 ──
|
|
280
|
+
const srcFileSet = new Set(existsSync(sd) ? readdirSync(sd).filter(e => !statSync(join(sd, e)).isDirectory()) : []);
|
|
281
|
+
for (const entry of readdirSync(dd)) {
|
|
282
|
+
if (statSync(join(dd, entry)).isDirectory())
|
|
283
|
+
continue;
|
|
284
|
+
if (!srcFileSet.has(entry)) {
|
|
285
|
+
const dp = join(dd, entry);
|
|
286
|
+
const oldHashRecord = hashes[dp];
|
|
287
|
+
if (typeof oldHashRecord === 'undefined')
|
|
288
|
+
continue;
|
|
289
|
+
// 仅当有旧 hash 记录时(曾由 Jarvis 安装)才标记为删除
|
|
290
|
+
const rel = `${bucket}/${entry}`;
|
|
291
|
+
if (shownCount < MAX_SHOW) {
|
|
292
|
+
console.log(` - ${rel.padEnd(40)} (模板已移除)`);
|
|
293
|
+
shownCount++;
|
|
294
|
+
}
|
|
295
|
+
totalChanged++;
|
|
55
296
|
}
|
|
56
297
|
}
|
|
57
298
|
}
|
|
58
|
-
|
|
299
|
+
// ═══════════════════════════════════════════════════════════════
|
|
300
|
+
// 第二步:模板根级别 JSON 配置文件(如 settings.json)
|
|
301
|
+
// ═══════════════════════════════════════════════════════════════
|
|
302
|
+
for (const entry of readdirSync(srcRoot)) {
|
|
303
|
+
const sp = join(srcRoot, entry);
|
|
304
|
+
if (statSync(sp).isDirectory())
|
|
305
|
+
continue;
|
|
306
|
+
if (!entry.endsWith('.json'))
|
|
307
|
+
continue;
|
|
308
|
+
if (entry.startsWith('settings.local'))
|
|
309
|
+
continue;
|
|
310
|
+
const dp = join(destRoot, entry);
|
|
311
|
+
if (!existsSync(dp)) {
|
|
312
|
+
if (shownCount < MAX_SHOW) {
|
|
313
|
+
console.log(` + ${entry.padEnd(40)} (新增配置文件)`);
|
|
314
|
+
shownCount++;
|
|
315
|
+
}
|
|
316
|
+
totalChanged++;
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
const srcJson = JSON.parse(readFileSync(sp, 'utf-8'));
|
|
321
|
+
const destJson = JSON.parse(readFileSync(dp, 'utf-8'));
|
|
322
|
+
const diffs = diffJsonConfig(srcJson, destJson, '');
|
|
323
|
+
if (diffs.length > 0) {
|
|
324
|
+
if (shownCount < MAX_SHOW) {
|
|
325
|
+
console.log(` M ${entry.padEnd(40)}`);
|
|
326
|
+
diffs.forEach(d => console.log(d));
|
|
327
|
+
shownCount++;
|
|
328
|
+
}
|
|
329
|
+
totalChanged++;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// JSON 解析失败 → 降级为文件级对比
|
|
334
|
+
const newHash = fileHash(sp);
|
|
335
|
+
const destHash = fileHash(dp);
|
|
336
|
+
if (newHash !== destHash) {
|
|
337
|
+
if (shownCount < MAX_SHOW) {
|
|
338
|
+
console.log(` M ${entry.padEnd(40)} (JSON 差异)`);
|
|
339
|
+
shownCount++;
|
|
340
|
+
}
|
|
341
|
+
totalChanged++;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// ═══════════════════════════════════════════════════════════════
|
|
346
|
+
// 第三步:输出摘要
|
|
347
|
+
// ═══════════════════════════════════════════════════════════════
|
|
348
|
+
if (totalChanged === 0) {
|
|
59
349
|
console.log(` ✅ ${platform.padEnd(10)} up to date`);
|
|
60
350
|
}
|
|
61
|
-
else if (
|
|
62
|
-
console.log(` ...
|
|
351
|
+
else if (totalChanged > shownCount) {
|
|
352
|
+
console.log(` ... 还有 ${totalChanged - shownCount} 个文件未显示`);
|
|
63
353
|
}
|
|
354
|
+
return conflictFiles;
|
|
64
355
|
}
|
|
356
|
+
// ============================================================================
|
|
357
|
+
// execute — jarvis diff 入口
|
|
358
|
+
// ============================================================================
|
|
65
359
|
/**
|
|
66
360
|
* jarvis diff [path] — 预览升级变更(不实际执行)
|
|
361
|
+
*
|
|
362
|
+
* 增强输出:
|
|
363
|
+
* - Markdown 文件:显示 version diff + section 级差异
|
|
364
|
+
* - JSON 配置文件:显示字段级差异
|
|
365
|
+
* - 末尾:冲突文件汇总
|
|
366
|
+
* - 向后兼容:旧 hash 格式降级为文件级展示
|
|
367
|
+
*/
|
|
368
|
+
/**
|
|
369
|
+
* 计算指定平台的已安装目标根目录。
|
|
370
|
+
* 逻辑与 diffPlatform 内 destRoot 计算保持一致。
|
|
67
371
|
*/
|
|
372
|
+
function getDestRoot(platform, target, isGlobal) {
|
|
373
|
+
return isGlobal
|
|
374
|
+
? (platform === 'opencode'
|
|
375
|
+
? resolve(homedir(), '.config', 'opencode')
|
|
376
|
+
: resolve(homedir(), `.${platform}`))
|
|
377
|
+
: resolve(target, PLATFORMS[platform].dir);
|
|
378
|
+
}
|
|
68
379
|
export async function execute(opts, positional) {
|
|
69
380
|
const path = positional[1];
|
|
70
381
|
const isGlobal = await resolveScope(opts);
|
|
71
382
|
const target = resolveTarget(path, isGlobal);
|
|
72
383
|
console.log(`\n📋 检查变更预览 → ${isGlobal ? '~ (全局)' : target}\n`);
|
|
384
|
+
const allConflicts = [];
|
|
73
385
|
for (const name of ALL_PLATFORMS) {
|
|
74
|
-
|
|
386
|
+
// 内联冲突检测(来自 diff 过程中的 section 对比)
|
|
387
|
+
const platformConflicts = await diffPlatform(name, target, isGlobal);
|
|
388
|
+
for (const cf of platformConflicts) {
|
|
389
|
+
allConflicts.push(cf);
|
|
390
|
+
}
|
|
391
|
+
// 全面扫描冲突标记(覆盖未变更但含冲突标记的文件)
|
|
392
|
+
const destRoot = getDestRoot(name, target, isGlobal);
|
|
393
|
+
const scannedConflicts = scanConflictFiles(destRoot);
|
|
394
|
+
for (const cf of scannedConflicts) {
|
|
395
|
+
allConflicts.push(cf);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// ── 冲突文件汇总(去重后末尾统一展示)──
|
|
399
|
+
const uniqueConflicts = [...new Set(allConflicts)];
|
|
400
|
+
if (uniqueConflicts.length > 0) {
|
|
401
|
+
console.log(`\n冲突文件 (${uniqueConflicts.length}):`);
|
|
402
|
+
for (const file of uniqueConflicts) {
|
|
403
|
+
console.log(` ⚠ ${file}`);
|
|
404
|
+
}
|
|
75
405
|
}
|
|
76
406
|
console.log(`\n💡 运行 \`jarvis upgrade\` 应用这些变更。\n`);
|
|
77
407
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/cli/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/cli/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CliOpts } from '../utils/args.js';
|
|
2
|
+
/**
|
|
3
|
+
* jarvis resolve — 交互式和批量模式解决合并冲突。
|
|
4
|
+
*
|
|
5
|
+
* 用法:
|
|
6
|
+
* jarvis resolve <file> 交互式逐冲突选择
|
|
7
|
+
* jarvis resolve <file> --accept user 保留所有用户版本
|
|
8
|
+
* jarvis resolve <file> --accept template 使用所有模板版本
|
|
9
|
+
* jarvis resolve --all --accept user|template 批量解决
|
|
10
|
+
* jarvis resolve --list 列出所有冲突文件
|
|
11
|
+
*/
|
|
12
|
+
export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
|