jarvis-agent-factory 3.23.2 → 3.25.2

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.
Files changed (338) hide show
  1. package/README.md +48 -9
  2. package/bin/jarvis.js +2 -2
  3. package/dist/src/cli.d.ts +1 -0
  4. package/dist/src/cli.js +371 -0
  5. package/dist/src/cli.js.map +1 -0
  6. package/dist/src/doctor.d.ts +12 -0
  7. package/dist/src/doctor.js +92 -0
  8. package/dist/src/doctor.js.map +1 -0
  9. package/dist/src/engine/agent-fs.d.ts +5 -0
  10. package/dist/src/engine/agent-fs.js +98 -0
  11. package/dist/src/engine/agent-fs.js.map +1 -0
  12. package/dist/src/engine/agent-registry.d.ts +28 -0
  13. package/dist/src/engine/agent-registry.js +213 -0
  14. package/dist/src/engine/agent-registry.js.map +1 -0
  15. package/dist/src/engine/db.d.ts +126 -0
  16. package/dist/src/engine/db.js +388 -0
  17. package/dist/src/engine/db.js.map +1 -0
  18. package/dist/src/engine/gates.d.ts +186 -0
  19. package/dist/src/engine/gates.js +128 -0
  20. package/dist/src/engine/gates.js.map +1 -0
  21. package/dist/src/engine/server.d.ts +15 -0
  22. package/dist/src/engine/server.js +616 -0
  23. package/dist/src/engine/server.js.map +1 -0
  24. package/dist/src/hook.d.ts +9 -0
  25. package/dist/src/hook.js +77 -0
  26. package/dist/src/hook.js.map +1 -0
  27. package/dist/src/install.d.ts +8 -0
  28. package/dist/src/install.js +295 -0
  29. package/dist/src/install.js.map +1 -0
  30. package/dist/src/web/routes.d.ts +6 -0
  31. package/dist/src/web/routes.js +358 -0
  32. package/dist/src/web/routes.js.map +1 -0
  33. package/{src → dist/src}/web/views/agents.html +1 -1
  34. package/{src → dist/src}/web/views/pipeline.html +461 -28
  35. package/dist/tests/db.test.d.ts +1 -0
  36. package/dist/tests/db.test.js +137 -0
  37. package/dist/tests/db.test.js.map +1 -0
  38. package/dist/tests/gates.test.d.ts +1 -0
  39. package/dist/tests/gates.test.js +46 -0
  40. package/dist/tests/gates.test.js.map +1 -0
  41. package/package.json +23 -7
  42. package/src/cli.js +0 -357
  43. package/src/doctor.js +0 -83
  44. package/src/engine/agent-fs.js +0 -100
  45. package/src/engine/agent-registry.js +0 -226
  46. package/src/engine/db.js +0 -282
  47. package/src/engine/gates.js +0 -117
  48. package/src/engine/server.js +0 -635
  49. package/src/hook.js +0 -65
  50. package/src/install.js +0 -283
  51. package/src/templates/hooks-claude.json +0 -25
  52. package/src/templates/mcp-claude.json +0 -14
  53. package/src/templates/mcp-codex.toml +0 -9
  54. package/src/templates/mcp-opencode.json +0 -15
  55. package/src/templates/platforms/claude/agents/algorithm-expert.md +0 -128
  56. package/src/templates/platforms/claude/agents/android-dev-expert.md +0 -59
  57. package/src/templates/platforms/claude/agents/android-state-expert.md +0 -43
  58. package/src/templates/platforms/claude/agents/android-ui-expert.md +0 -43
  59. package/src/templates/platforms/claude/agents/api-contract-expert.md +0 -131
  60. package/src/templates/platforms/claude/agents/backend-api-expert.md +0 -117
  61. package/src/templates/platforms/claude/agents/backend-architect.md +0 -146
  62. package/src/templates/platforms/claude/agents/backend-data-expert.md +0 -120
  63. package/src/templates/platforms/claude/agents/backend-dev-expert.md +0 -121
  64. package/src/templates/platforms/claude/agents/backend-logic-expert.md +0 -120
  65. package/src/templates/platforms/claude/agents/backend-review-expert.md +0 -110
  66. package/src/templates/platforms/claude/agents/backend-test-expert.md +0 -136
  67. package/src/templates/platforms/claude/agents/browser-test-expert.md +0 -160
  68. package/src/templates/platforms/claude/agents/change-review-expert.md +0 -87
  69. package/src/templates/platforms/claude/agents/code-explore-expert.md +0 -109
  70. package/src/templates/platforms/claude/agents/database-architect.md +0 -126
  71. package/src/templates/platforms/claude/agents/diff-review-expert.md +0 -158
  72. package/src/templates/platforms/claude/agents/docs-research-expert.md +0 -67
  73. package/src/templates/platforms/claude/agents/e2e-test-expert.md +0 -100
  74. package/src/templates/platforms/claude/agents/flutter-dev-expert.md +0 -59
  75. package/src/templates/platforms/claude/agents/flutter-state-expert.md +0 -42
  76. package/src/templates/platforms/claude/agents/flutter-ui-expert.md +0 -43
  77. package/src/templates/platforms/claude/agents/frontend-architect.md +0 -142
  78. package/src/templates/platforms/claude/agents/frontend-dev-expert.md +0 -169
  79. package/src/templates/platforms/claude/agents/frontend-review-expert.md +0 -108
  80. package/src/templates/platforms/claude/agents/frontend-state-expert.md +0 -119
  81. package/src/templates/platforms/claude/agents/frontend-test-expert.md +0 -133
  82. package/src/templates/platforms/claude/agents/frontend-ui-expert.md +0 -204
  83. package/src/templates/platforms/claude/agents/infra-deploy-expert.md +0 -76
  84. package/src/templates/platforms/claude/agents/ios-dev-expert.md +0 -59
  85. package/src/templates/platforms/claude/agents/ios-state-expert.md +0 -43
  86. package/src/templates/platforms/claude/agents/ios-ui-expert.md +0 -43
  87. package/src/templates/platforms/claude/agents/perf-review-expert.md +0 -100
  88. package/src/templates/platforms/claude/agents/perf-test-expert.md +0 -125
  89. package/src/templates/platforms/claude/agents/planner.md +0 -264
  90. package/src/templates/platforms/claude/agents/project-review-expert.md +0 -101
  91. package/src/templates/platforms/claude/agents/qa-review-expert.md +0 -151
  92. package/src/templates/platforms/claude/agents/react-native-dev-expert.md +0 -60
  93. package/src/templates/platforms/claude/agents/react-native-state-expert.md +0 -43
  94. package/src/templates/platforms/claude/agents/react-native-ui-expert.md +0 -42
  95. package/src/templates/platforms/claude/agents/remediation-expert.md +0 -109
  96. package/src/templates/platforms/claude/agents/remediation-planner.md +0 -83
  97. package/src/templates/platforms/claude/agents/review-fix-optimize.md +0 -152
  98. package/src/templates/platforms/claude/agents/review-only.md +0 -112
  99. package/src/templates/platforms/claude/agents/security-review-expert.md +0 -79
  100. package/src/templates/platforms/claude/agents/taro-dev-expert.md +0 -117
  101. package/src/templates/platforms/claude/agents/taro-state-expert.md +0 -45
  102. package/src/templates/platforms/claude/agents/taro-ui-expert.md +0 -45
  103. package/src/templates/platforms/claude/agents/task-design.md +0 -178
  104. package/src/templates/platforms/claude/commands/algorithm-expert.md +0 -40
  105. package/src/templates/platforms/claude/commands/android.md +0 -98
  106. package/src/templates/platforms/claude/commands/backend-architect.md +0 -40
  107. package/src/templates/platforms/claude/commands/backend.md +0 -145
  108. package/src/templates/platforms/claude/commands/browser-test.md +0 -138
  109. package/src/templates/platforms/claude/commands/bug-fix.md +0 -162
  110. package/src/templates/platforms/claude/commands/expo.md +0 -101
  111. package/src/templates/platforms/claude/commands/flutter.md +0 -103
  112. package/src/templates/platforms/claude/commands/frontend-architect.md +0 -40
  113. package/src/templates/platforms/claude/commands/frontend.md +0 -157
  114. package/src/templates/platforms/claude/commands/ios.md +0 -98
  115. package/src/templates/platforms/claude/commands/jarvis-lite.md +0 -119
  116. package/src/templates/platforms/claude/commands/jarvis.md +0 -348
  117. package/src/templates/platforms/claude/commands/review-fix.md +0 -45
  118. package/src/templates/platforms/claude/commands/review.md +0 -36
  119. package/src/templates/platforms/claude/commands/taro.md +0 -91
  120. package/src/templates/platforms/claude/settings.json +0 -22
  121. package/src/templates/platforms/claude/skills/behavioral-guidelines/SKILL.md +0 -193
  122. package/src/templates/platforms/claude/skills/browser-testing/SKILL.md +0 -207
  123. package/src/templates/platforms/claude/skills/chinese-documentation/SKILL.md +0 -448
  124. package/src/templates/platforms/claude/skills/code-quality-gate/SKILL.md +0 -79
  125. package/src/templates/platforms/claude/skills/code-review-and-quality/SKILL.md +0 -201
  126. package/src/templates/platforms/claude/skills/code-simplification/SKILL.md +0 -163
  127. package/src/templates/platforms/claude/skills/code-standards/SKILL.md +0 -67
  128. package/src/templates/platforms/claude/skills/context-engineering/SKILL.md +0 -244
  129. package/src/templates/platforms/claude/skills/debugging-and-error-recovery/SKILL.md +0 -209
  130. package/src/templates/platforms/claude/skills/documentation-and-adrs/SKILL.md +0 -506
  131. package/src/templates/platforms/claude/skills/find-docs/SKILL.md +0 -58
  132. package/src/templates/platforms/claude/skills/finishing-a-development-branch/SKILL.md +0 -166
  133. package/src/templates/platforms/claude/skills/frontend-design/LICENSE.txt +0 -177
  134. package/src/templates/platforms/claude/skills/frontend-design/SKILL.md +0 -45
  135. package/src/templates/platforms/claude/skills/git-workflow-and-versioning/SKILL.md +0 -209
  136. package/src/templates/platforms/claude/skills/idea-refine/SKILL.md +0 -133
  137. package/src/templates/platforms/claude/skills/incremental-implementation/SKILL.md +0 -145
  138. package/src/templates/platforms/claude/skills/mcp-builder/SKILL.md +0 -255
  139. package/src/templates/platforms/claude/skills/planning-and-task-breakdown/SKILL.md +0 -213
  140. package/src/templates/platforms/claude/skills/security-and-hardening/SKILL.md +0 -356
  141. package/src/templates/platforms/claude/skills/shipping-and-launch/SKILL.md +0 -492
  142. package/src/templates/platforms/claude/skills/source-driven-development/SKILL.md +0 -151
  143. package/src/templates/platforms/claude/skills/spec-driven-development/SKILL.md +0 -219
  144. package/src/templates/platforms/claude/skills/test-driven-development/SKILL.md +0 -168
  145. package/src/templates/platforms/claude/skills/using-agent-skills/SKILL.md +0 -193
  146. package/src/templates/platforms/claude/skills/verification-before-completion/SKILL.md +0 -163
  147. package/src/templates/platforms/claude/skills/writing-skills/SKILL.md +0 -654
  148. package/src/templates/platforms/claude/skills/writing-skills/anthropic-best-practices.md +0 -1149
  149. package/src/templates/platforms/claude/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  150. package/src/templates/platforms/claude/skills/writing-skills/graphviz-conventions.dot +0 -172
  151. package/src/templates/platforms/claude/skills/writing-skills/persuasion-principles.md +0 -187
  152. package/src/templates/platforms/claude/skills/writing-skills/render-graphs.js +0 -168
  153. package/src/templates/platforms/claude/skills/writing-skills/testing-skills-with-subagents.md +0 -384
  154. package/src/templates/platforms/codex/agents/algorithm_expert.toml +0 -67
  155. package/src/templates/platforms/codex/agents/android_state_worker.toml +0 -12
  156. package/src/templates/platforms/codex/agents/android_ui_worker.toml +0 -12
  157. package/src/templates/platforms/codex/agents/android_worker.toml +0 -31
  158. package/src/templates/platforms/codex/agents/api_docs_worker.toml +0 -50
  159. package/src/templates/platforms/codex/agents/backend_api_worker.toml +0 -71
  160. package/src/templates/platforms/codex/agents/backend_architect.toml +0 -74
  161. package/src/templates/platforms/codex/agents/backend_data_worker.toml +0 -74
  162. package/src/templates/platforms/codex/agents/backend_implementer.toml +0 -66
  163. package/src/templates/platforms/codex/agents/backend_service_worker.toml +0 -74
  164. package/src/templates/platforms/codex/agents/backend_test_worker.toml +0 -85
  165. package/src/templates/platforms/codex/agents/browser_test_worker.toml +0 -63
  166. package/src/templates/platforms/codex/agents/database_specialist.toml +0 -52
  167. package/src/templates/platforms/codex/agents/diff_code_reviewer.toml +0 -75
  168. package/src/templates/platforms/codex/agents/docs_researcher.toml +0 -39
  169. package/src/templates/platforms/codex/agents/e2e_test_worker.toml +0 -66
  170. package/src/templates/platforms/codex/agents/flutter_state_worker.toml +0 -12
  171. package/src/templates/platforms/codex/agents/flutter_ui_worker.toml +0 -12
  172. package/src/templates/platforms/codex/agents/flutter_worker.toml +0 -32
  173. package/src/templates/platforms/codex/agents/frontend_architect.toml +0 -71
  174. package/src/templates/platforms/codex/agents/frontend_implementer.toml +0 -74
  175. package/src/templates/platforms/codex/agents/frontend_state_worker.toml +0 -71
  176. package/src/templates/platforms/codex/agents/frontend_test_worker.toml +0 -82
  177. package/src/templates/platforms/codex/agents/frontend_ui_worker.toml +0 -73
  178. package/src/templates/platforms/codex/agents/infra_worker.toml +0 -45
  179. package/src/templates/platforms/codex/agents/ios_state_worker.toml +0 -12
  180. package/src/templates/platforms/codex/agents/ios_ui_worker.toml +0 -12
  181. package/src/templates/platforms/codex/agents/ios_worker.toml +0 -31
  182. package/src/templates/platforms/codex/agents/performance_audit_reviewer.toml +0 -73
  183. package/src/templates/platforms/codex/agents/performance_test_worker.toml +0 -47
  184. package/src/templates/platforms/codex/agents/planner.toml +0 -149
  185. package/src/templates/platforms/codex/agents/post_change_reviewer.toml +0 -62
  186. package/src/templates/platforms/codex/agents/project_audit_reviewer.toml +0 -75
  187. package/src/templates/platforms/codex/agents/react_native_worker.toml +0 -34
  188. package/src/templates/platforms/codex/agents/remediation_planner.toml +0 -69
  189. package/src/templates/platforms/codex/agents/remediation_worker.toml +0 -65
  190. package/src/templates/platforms/codex/agents/repo_explorer.toml +0 -84
  191. package/src/templates/platforms/codex/agents/review_qa.toml +0 -163
  192. package/src/templates/platforms/codex/agents/rn_state_worker.toml +0 -12
  193. package/src/templates/platforms/codex/agents/rn_ui_worker.toml +0 -12
  194. package/src/templates/platforms/codex/agents/security_auditor.toml +0 -43
  195. package/src/templates/platforms/codex/agents/taro_state_worker.toml +0 -12
  196. package/src/templates/platforms/codex/agents/taro_ui_worker.toml +0 -12
  197. package/src/templates/platforms/codex/agents/taro_worker.toml +0 -53
  198. package/src/templates/platforms/codex/agents/task_design.toml +0 -93
  199. package/src/templates/platforms/codex/config.toml +0 -357
  200. package/src/templates/platforms/codex/skills/agent-browser/SKILL.md +0 -51
  201. package/src/templates/platforms/codex/skills/algorithm-expert/SKILL.md +0 -31
  202. package/src/templates/platforms/codex/skills/android/SKILL.md +0 -46
  203. package/src/templates/platforms/codex/skills/backend/SKILL.md +0 -66
  204. package/src/templates/platforms/codex/skills/backend-architect/SKILL.md +0 -34
  205. package/src/templates/platforms/codex/skills/behavioral-guidelines/SKILL.md +0 -193
  206. package/src/templates/platforms/codex/skills/browser-test/SKILL.md +0 -58
  207. package/src/templates/platforms/codex/skills/browser-testing/SKILL.md +0 -197
  208. package/src/templates/platforms/codex/skills/bug-fix/SKILL.md +0 -59
  209. package/src/templates/platforms/codex/skills/chinese-documentation/SKILL.md +0 -448
  210. package/src/templates/platforms/codex/skills/code-quality-gate/SKILL.md +0 -79
  211. package/src/templates/platforms/codex/skills/code-review-and-quality/SKILL.md +0 -201
  212. package/src/templates/platforms/codex/skills/code-simplification/SKILL.md +0 -163
  213. package/src/templates/platforms/codex/skills/code-standards/SKILL.md +0 -67
  214. package/src/templates/platforms/codex/skills/context-engineering/SKILL.md +0 -244
  215. package/src/templates/platforms/codex/skills/debugging-and-error-recovery/SKILL.md +0 -209
  216. package/src/templates/platforms/codex/skills/documentation-and-adrs/SKILL.md +0 -506
  217. package/src/templates/platforms/codex/skills/expo/SKILL.md +0 -45
  218. package/src/templates/platforms/codex/skills/find-docs/SKILL.md +0 -58
  219. package/src/templates/platforms/codex/skills/find-skills/SKILL.md +0 -106
  220. package/src/templates/platforms/codex/skills/finishing-a-development-branch/SKILL.md +0 -166
  221. package/src/templates/platforms/codex/skills/flutter/SKILL.md +0 -45
  222. package/src/templates/platforms/codex/skills/frontend/SKILL.md +0 -80
  223. package/src/templates/platforms/codex/skills/frontend-architect/SKILL.md +0 -35
  224. package/src/templates/platforms/codex/skills/git-workflow-and-versioning/SKILL.md +0 -209
  225. package/src/templates/platforms/codex/skills/idea-refine/SKILL.md +0 -133
  226. package/src/templates/platforms/codex/skills/incremental-implementation/SKILL.md +0 -145
  227. package/src/templates/platforms/codex/skills/ios/SKILL.md +0 -46
  228. package/src/templates/platforms/codex/skills/jarvis/SKILL.md +0 -120
  229. package/src/templates/platforms/codex/skills/mcp-builder/SKILL.md +0 -255
  230. package/src/templates/platforms/codex/skills/planning-and-task-breakdown/SKILL.md +0 -213
  231. package/src/templates/platforms/codex/skills/review-fix-optimize/SKILL.md +0 -89
  232. package/src/templates/platforms/codex/skills/review-only/SKILL.md +0 -63
  233. package/src/templates/platforms/codex/skills/security-and-hardening/SKILL.md +0 -356
  234. package/src/templates/platforms/codex/skills/shipping-and-launch/SKILL.md +0 -492
  235. package/src/templates/platforms/codex/skills/source-driven-development/SKILL.md +0 -151
  236. package/src/templates/platforms/codex/skills/spec-driven-development/SKILL.md +0 -219
  237. package/src/templates/platforms/codex/skills/taro/SKILL.md +0 -44
  238. package/src/templates/platforms/codex/skills/test-driven-development/SKILL.md +0 -168
  239. package/src/templates/platforms/codex/skills/using-agent-skills/SKILL.md +0 -193
  240. package/src/templates/platforms/codex/skills/verification-before-completion/SKILL.md +0 -163
  241. package/src/templates/platforms/codex/skills/writing-skills/SKILL.md +0 -654
  242. package/src/templates/platforms/codex/skills/writing-skills/anthropic-best-practices.md +0 -1149
  243. package/src/templates/platforms/codex/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  244. package/src/templates/platforms/codex/skills/writing-skills/graphviz-conventions.dot +0 -172
  245. package/src/templates/platforms/codex/skills/writing-skills/persuasion-principles.md +0 -187
  246. package/src/templates/platforms/codex/skills/writing-skills/render-graphs.js +0 -168
  247. package/src/templates/platforms/codex/skills/writing-skills/testing-skills-with-subagents.md +0 -384
  248. package/src/templates/platforms/opencode/agents/algorithm-expert.md +0 -133
  249. package/src/templates/platforms/opencode/agents/android-state-worker.md +0 -29
  250. package/src/templates/platforms/opencode/agents/android-ui-worker.md +0 -26
  251. package/src/templates/platforms/opencode/agents/android-worker.md +0 -60
  252. package/src/templates/platforms/opencode/agents/android.md +0 -123
  253. package/src/templates/platforms/opencode/agents/api-docs-worker.md +0 -67
  254. package/src/templates/platforms/opencode/agents/backend-api-worker.md +0 -98
  255. package/src/templates/platforms/opencode/agents/backend-architect.md +0 -151
  256. package/src/templates/platforms/opencode/agents/backend-data-worker.md +0 -101
  257. package/src/templates/platforms/opencode/agents/backend-implementer.md +0 -133
  258. package/src/templates/platforms/opencode/agents/backend-service-worker.md +0 -101
  259. package/src/templates/platforms/opencode/agents/backend-test-worker.md +0 -117
  260. package/src/templates/platforms/opencode/agents/backend.md +0 -278
  261. package/src/templates/platforms/opencode/agents/browser-test-worker.md +0 -74
  262. package/src/templates/platforms/opencode/agents/database-specialist.md +0 -69
  263. package/src/templates/platforms/opencode/agents/diff-code-reviewer.md +0 -146
  264. package/src/templates/platforms/opencode/agents/docs-researcher.md +0 -71
  265. package/src/templates/platforms/opencode/agents/e2e-test-worker.md +0 -76
  266. package/src/templates/platforms/opencode/agents/expo.md +0 -128
  267. package/src/templates/platforms/opencode/agents/flutter-state-worker.md +0 -30
  268. package/src/templates/platforms/opencode/agents/flutter-ui-worker.md +0 -29
  269. package/src/templates/platforms/opencode/agents/flutter-worker.md +0 -60
  270. package/src/templates/platforms/opencode/agents/flutter.md +0 -131
  271. package/src/templates/platforms/opencode/agents/frontend-architect.md +0 -147
  272. package/src/templates/platforms/opencode/agents/frontend-implementer.md +0 -179
  273. package/src/templates/platforms/opencode/agents/frontend-state-worker.md +0 -122
  274. package/src/templates/platforms/opencode/agents/frontend-test-worker.md +0 -114
  275. package/src/templates/platforms/opencode/agents/frontend-ui-worker.md +0 -190
  276. package/src/templates/platforms/opencode/agents/frontend.md +0 -286
  277. package/src/templates/platforms/opencode/agents/infra-worker.md +0 -64
  278. package/src/templates/platforms/opencode/agents/ios-state-worker.md +0 -29
  279. package/src/templates/platforms/opencode/agents/ios-ui-worker.md +0 -27
  280. package/src/templates/platforms/opencode/agents/ios-worker.md +0 -60
  281. package/src/templates/platforms/opencode/agents/ios.md +0 -123
  282. package/src/templates/platforms/opencode/agents/jarvis.md +0 -656
  283. package/src/templates/platforms/opencode/agents/performance-audit-reviewer.md +0 -93
  284. package/src/templates/platforms/opencode/agents/performance-test-worker.md +0 -65
  285. package/src/templates/platforms/opencode/agents/planner.md +0 -267
  286. package/src/templates/platforms/opencode/agents/post-change-reviewer.md +0 -92
  287. package/src/templates/platforms/opencode/agents/project-audit-reviewer.md +0 -92
  288. package/src/templates/platforms/opencode/agents/react-native-worker.md +0 -62
  289. package/src/templates/platforms/opencode/agents/remediation-planner.md +0 -90
  290. package/src/templates/platforms/opencode/agents/remediation-worker.md +0 -92
  291. package/src/templates/platforms/opencode/agents/repo-explorer.md +0 -113
  292. package/src/templates/platforms/opencode/agents/review-fix-optimize.md +0 -142
  293. package/src/templates/platforms/opencode/agents/review-only.md +0 -108
  294. package/src/templates/platforms/opencode/agents/review-qa.md +0 -184
  295. package/src/templates/platforms/opencode/agents/rn-state-worker.md +0 -31
  296. package/src/templates/platforms/opencode/agents/rn-ui-worker.md +0 -29
  297. package/src/templates/platforms/opencode/agents/security-auditor.md +0 -66
  298. package/src/templates/platforms/opencode/agents/taro-state-worker.md +0 -29
  299. package/src/templates/platforms/opencode/agents/taro-ui-worker.md +0 -27
  300. package/src/templates/platforms/opencode/agents/taro-worker.md +0 -70
  301. package/src/templates/platforms/opencode/agents/taro.md +0 -125
  302. package/src/templates/platforms/opencode/agents/task-design.md +0 -174
  303. package/src/templates/platforms/opencode/package.json +0 -5
  304. package/src/templates/platforms/opencode/plugins/jarvis-gate-check.ts +0 -42
  305. package/src/templates/platforms/opencode/skills/agent-browser/SKILL.md +0 -51
  306. package/src/templates/platforms/opencode/skills/behavioral-guidelines/SKILL.md +0 -193
  307. package/src/templates/platforms/opencode/skills/browser-testing/SKILL.md +0 -197
  308. package/src/templates/platforms/opencode/skills/chinese-documentation/SKILL.md +0 -448
  309. package/src/templates/platforms/opencode/skills/code-quality-gate/SKILL.md +0 -79
  310. package/src/templates/platforms/opencode/skills/code-review-and-quality/SKILL.md +0 -201
  311. package/src/templates/platforms/opencode/skills/code-simplification/SKILL.md +0 -163
  312. package/src/templates/platforms/opencode/skills/code-standards/SKILL.md +0 -67
  313. package/src/templates/platforms/opencode/skills/context-engineering/SKILL.md +0 -244
  314. package/src/templates/platforms/opencode/skills/debugging-and-error-recovery/SKILL.md +0 -209
  315. package/src/templates/platforms/opencode/skills/documentation-and-adrs/SKILL.md +0 -506
  316. package/src/templates/platforms/opencode/skills/find-docs/SKILL.md +0 -58
  317. package/src/templates/platforms/opencode/skills/find-skills/SKILL.md +0 -106
  318. package/src/templates/platforms/opencode/skills/finishing-a-development-branch/SKILL.md +0 -166
  319. package/src/templates/platforms/opencode/skills/git-workflow-and-versioning/SKILL.md +0 -209
  320. package/src/templates/platforms/opencode/skills/idea-refine/SKILL.md +0 -133
  321. package/src/templates/platforms/opencode/skills/incremental-implementation/SKILL.md +0 -145
  322. package/src/templates/platforms/opencode/skills/mcp-builder/SKILL.md +0 -255
  323. package/src/templates/platforms/opencode/skills/planning-and-task-breakdown/SKILL.md +0 -213
  324. package/src/templates/platforms/opencode/skills/security-and-hardening/SKILL.md +0 -356
  325. package/src/templates/platforms/opencode/skills/shipping-and-launch/SKILL.md +0 -492
  326. package/src/templates/platforms/opencode/skills/source-driven-development/SKILL.md +0 -151
  327. package/src/templates/platforms/opencode/skills/spec-driven-development/SKILL.md +0 -219
  328. package/src/templates/platforms/opencode/skills/test-driven-development/SKILL.md +0 -168
  329. package/src/templates/platforms/opencode/skills/using-agent-skills/SKILL.md +0 -193
  330. package/src/templates/platforms/opencode/skills/verification-before-completion/SKILL.md +0 -163
  331. package/src/templates/platforms/opencode/skills/writing-skills/SKILL.md +0 -654
  332. package/src/templates/platforms/opencode/skills/writing-skills/anthropic-best-practices.md +0 -1149
  333. package/src/templates/platforms/opencode/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  334. package/src/templates/platforms/opencode/skills/writing-skills/graphviz-conventions.dot +0 -172
  335. package/src/templates/platforms/opencode/skills/writing-skills/persuasion-principles.md +0 -187
  336. package/src/templates/platforms/opencode/skills/writing-skills/render-graphs.js +0 -168
  337. package/src/templates/platforms/opencode/skills/writing-skills/testing-skills-with-subagents.md +0 -384
  338. package/src/web/routes.js +0 -301
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Jarvis Agent Factory · 贾维斯智能体工厂
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)
4
- [![Version](https://img.shields.io/badge/version-v3.21.5-green)](https://gitee.com/wujl1124/JarvisAgentFactory/releases)
4
+ [![Version](https://img.shields.io/badge/version-v3.25.0-green)](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
5
5
  [![npm](https://img.shields.io/npm/v/jarvis-agent-factory)](https://www.npmjs.com/package/jarvis-agent-factory)
6
6
  <br>**简体中文** | [English](./README_EN.md)
7
7
 
8
8
  跨平台多智能体 AI 编程助手配置集 + MCP 编排引擎。从想法到交付的完整软件开发流水线,支持 **Claude Code / OpenCode / Codex** 三平台。
9
9
 
10
- > **v3.21.5** — MCP stdio 自动拉起引擎 · 零手动启动 · Web 面板独立按需 · 防重复启动
10
+ > **v3.25.0** — API 功能测试 Agent(api-test-expert)· CI/CD 工作流重构 · 文档同步约束强化
11
11
 
12
12
  ## 快速开始
13
13
 
@@ -28,8 +28,10 @@ jarvis web # 启动 Web 面板(按需)
28
28
  | **轻量编排** | `/jarvis-lite` 按任务类型智能映射 Gate 入口,跳过无关闸门 |
29
29
  | **多流水线类型** | full / frontend / backend / lite 四种模式,按需选择 |
30
30
  | **会话隔离** | 每个编辑窗口独立流水线状态,互不干扰 |
31
- | **Web 面板** | 独立启动 Dashboard + MCP 平台接入状态 + 会话列表 + 平台筛选 + Agent 模型配置 |
31
+ | **会话管理** | 会话命名(MCP session_set_name)· 归档/删除 · 置顶 · 指令标签(/jarvis 等) |
32
+ | **Web 面板** | Hash 路由(#/dashboard #/archive #/agents)· SSE 实时推送 · 平台筛选 |
32
33
  | **Agent 配置** | Web 面板修改模型/思考等级 → 自动同步回 `.md`/`.toml` 源文件 |
34
+ | **浏览器测试** | 文档驱动工作流:test-doc-writer → test-executor → fix-retest 闭环 |
33
35
  | **智能安装** | Hash 对比只覆盖变更文件,用户自定义自动保留 |
34
36
  | **三平台 Hook/Plugin** | Claude hooks + OpenCode 原生插件 + Codex hooks 全覆盖 |
35
37
  | **平台扩展** | `platform_info` MCP 工具 + `/api/platforms` REST 端点 |
@@ -53,7 +55,7 @@ jarvis web # 启动 Web 面板(按需)
53
55
 
54
56
  Web Panel (:3457) — 独立按需启动
55
57
  ┌───────────────────────────────┐
56
- │ 流水线看板 + Agent模型配置
58
+ │ 流水线看板 + 归档 + Agent配置
57
59
  │ API 代理 → Engine (:3456) │
58
60
  └───────────────────────────────┘
59
61
  ```
@@ -109,13 +111,38 @@ GITHUB_TOKEN=xxx # GitHub 个人访问令牌(sync-github-releases 需要
109
111
 
110
112
  使用 `jarvis web` 独立启动(需先运行 `jarvis engine start`),默认端口 3457。
111
113
 
112
- | 页面 | 路径 | 功能 |
113
- |------|------|------|
114
- | 流水线看板 | `/dashboard` | Gate 进度 · MCP 平台接入状态 · 会话列表 · Gate 推进 · 平台筛选 |
115
- | 智能体配置 | `/agents` | MCP 接入指示 · Agent 搜索/筛选 · 模型/思考等级配置 · 文件同步 |
114
+ | 页面 | Hash 路由 | 功能 |
115
+ |------|----------|------|
116
+ | 流水线看板 | `#/dashboard` | 会话列表(任务名/指令标签/Gate状态)· MCP 平台接入状态 · 置顶/归档/删除 · 3-dot 操作菜单 |
117
+ | 归档记录 | `#/archive` | 已归档运行记录 · 按任务名搜索过滤 · 恢复到看板 · 永久删除 |
118
+ | 智能体配置 | `#/agents` | MCP 接入指示 · Agent 搜索/筛选 · 模型/思考等级配置 · 文件同步 |
116
119
 
117
120
  侧边栏实时显示各平台(Claude Code / OpenCode / Codex)的 MCP 连接状态:绿点 = 已接入,灰点 = 未接入。
118
121
 
122
+ ### 会话管理操作
123
+
124
+ | 操作 | 说明 |
125
+ |------|------|
126
+ | 设置名称 | MCP 工具 `session_set_name` → 替代会话 ID 显示 |
127
+ | 置顶 | 将活跃运行置顶到会话列表最前(📌 图标) |
128
+ | 归档 | 将运行记录移入归档面板,从看板隐藏 |
129
+ | 删除 | 永久删除运行记录(需确认,不可恢复) |
130
+
131
+ 归档后的运行记录可在「归档记录」页面搜索、恢复或永久删除。
132
+
133
+ ## 浏览器测试工作流
134
+
135
+ ```
136
+ test-doc-writer → test-executor → fix-retest
137
+ (编写用例) (按文档执行) (失败→修复→复测)
138
+ ```
139
+
140
+ 专为浏览器自动化测试设计的文档驱动闭环,集成在 Gate C2 阶段:
141
+
142
+ 1. **test-doc-writer** — 编写结构化测试用例文档(步骤、预期结果),不执行测试
143
+ 2. **test-executor** — 严格按照文档执行测试,产出通过/失败清单报告
144
+ 3. **fix-retest** — 分析失败用例,spawn 对应修复 Agent,最多 2 轮修复-重测
145
+
119
146
  ## 三平台 MCP 配置
120
147
 
121
148
  | 平台 | 配置文件 | Transport | 说明 |
@@ -155,7 +182,7 @@ GITHUB_TOKEN=xxx # GitHub 个人访问令牌(sync-github-releases 需要
155
182
 
156
183
  | | Claude Code | OpenCode | Codex |
157
184
  |---|:--:|:--:|:--:|
158
- | Agents | 49 | 55 | 45 |
185
+ | Agents | 53 | 58 | 48 |
159
186
  | Commands | 16 | 0 | 0 |
160
187
  | Skills | 28 | 28 | 42 |
161
188
  | 钩子 | settings.json | 原生插件 (.ts) | hooks.json |
@@ -173,10 +200,22 @@ GITHUB_TOKEN=xxx # GitHub 个人访问令牌(sync-github-releases 需要
173
200
  | 操作前 Gate 检查 | `gate_check` MCP 工具 | 🔄 自动 |
174
201
  | 流程指引 | `pipeline_guide` MCP 工具 | 👆 按需 |
175
202
  | 平台信息 | `platform_info` MCP 工具 | 👆 按需 |
203
+ | 会话命名 | `session_set_name` MCP 工具 | 👆 按需 |
176
204
  | 流水线状态 | Dashboard + SSE 实时推送 | 👆 按需 |
177
205
  | 会话隔离 | 每 session_id 独立 pipeline | 🔄 自动 |
178
206
  | 文件同步 | Web 配置 → `.md`/`.toml` | 👆 保存时触发 |
179
207
 
208
+ ## 发布流程
209
+
210
+ 1. 更新 `package.json` 版本号(语义化版本)
211
+ 2. **同步更新 AGENTS.md / README.md / docs/README.md**
212
+ 3. 提交 + 打 Tag:`git tag -a v<version> -m "v<version> - <概要>"`
213
+ 4. 推送 GitHub **含 Tag**:`git push origin main && git push origin v<version>`
214
+ 5. GitHub Actions:Release 工作流自动执行(质量检查 → Changelog → GitHub Release → npm publish)
215
+ 6. 验证:`npm view jarvis-agent-factory version` 确认版本
216
+
217
+ > 每次提交前自问:文档是否需要同步更新?
218
+
180
219
  ## License
181
220
 
182
221
  MIT
package/bin/jarvis.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
-
3
- import { run } from '../src/cli.js';
2
+ // npm 全局安装时生成 .cmd / .ps1 / bash 包装器;bash 包装器直接 exec 此文件,需 shebang。
3
+ import { run } from '../dist/src/cli.js';
4
4
 
5
5
  run().catch(err => {
6
6
  console.error('❌', err.message);
@@ -0,0 +1 @@
1
+ export declare function run(): Promise<void>;
@@ -0,0 +1,371 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { readFileSync, existsSync, rmSync } from 'node:fs';
4
+ import { execSync } from 'node:child_process';
5
+ import { createInterface } from 'node:readline';
6
+ import { homedir } from 'node:os';
7
+ import { install } from './install.js';
8
+ import { doctor } from './doctor.js';
9
+ import { startEngine, stopEngine, engineStatus, startWeb } from './engine/server.js';
10
+ import { hookCommand } from './hook.js';
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ const PKG_ROOT = resolve(__dirname, '..', '..');
13
+ const PKG = JSON.parse(readFileSync(resolve(PKG_ROOT, 'package.json'), 'utf-8'));
14
+ const PKG_VERSION = PKG.version;
15
+ const PKG_NAME = PKG.name;
16
+ const PLATFORMS = {
17
+ claude: { dir: '.claude', desc: 'Claude Code — 47 agents + 15 commands + 27 skills' },
18
+ opencode: { dir: '.opencode', desc: 'OpenCode — 55 agents + 27 skills (agent switching)' },
19
+ codex: { dir: '.codex', desc: 'Codex — 45 agents + 42 skills (skill-triggered)' },
20
+ };
21
+ const ALL_PLATFORMS = Object.keys(PLATFORMS);
22
+ const HELP = `🧠 Jarvis Agent Factory v${PKG_VERSION}
23
+
24
+ Bootstrap multi-agent AI coding assistant configs
25
+ for Claude Code, OpenCode, and Codex.
26
+
27
+ Usage:
28
+ jarvis [path] ≡ jarvis init [path]
29
+ jarvis init [path] Bootstrap project with all platforms + MCP
30
+ jarvis add <p...> [path] Add platform(s) to project
31
+ jarvis remove <p...> [path] Remove platform(s) from project
32
+ jarvis upgrade [path] Upgrade to latest config version
33
+ jarvis diff [path] Show what files would change on upgrade
34
+ jarvis engine start [--port=N] Start MCP orchestration engine
35
+ jarvis engine stop Stop engine
36
+ jarvis engine status Engine status
37
+ jarvis web [--port=N] Start web dashboard (requires engine)
38
+ jarvis doctor [path] Verify installation
39
+
40
+ Options:
41
+ -g, --global Target user global directory instead of project
42
+ -y, --yes Skip confirmation prompts
43
+ -h, --help Show this help
44
+ -v, --version Show version
45
+
46
+ Platforms:
47
+ claude ${PLATFORMS.claude.desc}
48
+ opencode ${PLATFORMS.opencode.desc}
49
+ codex ${PLATFORMS.codex.desc}
50
+
51
+ Examples:
52
+ jarvis Bootstrap current directory
53
+ jarvis init my-app Bootstrap new project
54
+ jarvis add claude opencode Add platforms to current directory
55
+ jarvis add claude -g Add Claude Code globally
56
+ jarvis remove codex Remove Codex from project
57
+ jarvis engine start Start MCP orchestration engine
58
+ jarvis web Start web dashboard
59
+ jarvis upgrade Upgrade all configs
60
+ jarvis doctor Check current directory
61
+ `;
62
+ function showHelp() { console.log(HELP); }
63
+ function parseArgs(raw) {
64
+ const opts = { yes: false, global: false, globalExplicit: false };
65
+ const positional = [];
66
+ for (const a of raw) {
67
+ if (a === '-y' || a === '--yes')
68
+ opts.yes = true;
69
+ else if (a === '-g' || a === '--global') {
70
+ opts.global = true;
71
+ opts.globalExplicit = true;
72
+ }
73
+ else if (a === '-h' || a === '--help') {
74
+ opts.help = true;
75
+ return { opts, positional };
76
+ }
77
+ else if (a === '-v' || a === '--version') {
78
+ opts.version = true;
79
+ return { opts, positional };
80
+ }
81
+ else
82
+ positional.push(a);
83
+ }
84
+ return { opts, positional };
85
+ }
86
+ function checkLatest() {
87
+ try {
88
+ return execSync(`npm view ${PKG_NAME} version`, {
89
+ encoding: 'utf-8', timeout: 8000, stdio: ['ignore', 'pipe', 'ignore']
90
+ }).trim() || null;
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ function resolveTarget(path, isGlobal) {
97
+ return isGlobal ? resolve('.') : resolve(path || '.');
98
+ }
99
+ export async function run() {
100
+ const { opts, positional } = parseArgs(process.argv.slice(2));
101
+ if (opts.help) {
102
+ showHelp();
103
+ return;
104
+ }
105
+ if (opts.version) {
106
+ console.log(`${PKG_NAME} v${PKG_VERSION}`);
107
+ const latest = checkLatest();
108
+ if (latest && latest !== PKG_VERSION) {
109
+ console.log(`\n Update available: v${latest} → npm i -g ${PKG_NAME}@latest`);
110
+ }
111
+ return;
112
+ }
113
+ const cmd = positional[0];
114
+ // jarvis (no args) ≡ jarvis init .
115
+ if (!cmd) {
116
+ const target = resolve('.');
117
+ const isGlobal = await resolveScope(opts);
118
+ const scope = isGlobal ? '~ (全局)' : target;
119
+ console.log(`\n🚀 Jarvis v${PKG_VERSION}\n`);
120
+ console.log(` Target: ${scope}\n`);
121
+ for (const name of ALL_PLATFORMS) {
122
+ await install({ platform: name, target, pkgRoot: PKG_ROOT, platforms: PLATFORMS, force: opts.yes, global: isGlobal });
123
+ }
124
+ console.log(`\n✅ Done! \`jarvis doctor\` to verify.\n`);
125
+ return;
126
+ }
127
+ switch (cmd) {
128
+ case 'init': {
129
+ const path = positional[1];
130
+ const isGlobal = await resolveScope(opts);
131
+ const target = resolveTarget(path, isGlobal);
132
+ const scope = isGlobal ? '~ (全局)' : target;
133
+ console.log(`\n🚀 Jarvis v${PKG_VERSION}\n`);
134
+ console.log(` Target: ${scope}\n`);
135
+ for (const name of ALL_PLATFORMS) {
136
+ await install({ platform: name, target, pkgRoot: PKG_ROOT, platforms: PLATFORMS, force: opts.yes, global: isGlobal });
137
+ }
138
+ console.log(`\n✅ Done!\n`);
139
+ break;
140
+ }
141
+ case 'add': {
142
+ const platforms = [];
143
+ let path = '.';
144
+ for (let i = 1; i < positional.length; i++) {
145
+ const p = positional[i];
146
+ if (PLATFORMS[p])
147
+ platforms.push(p);
148
+ else if (!p.startsWith('-'))
149
+ path = p;
150
+ }
151
+ if (platforms.length === 0) {
152
+ console.error('\n❌ No valid platform specified.\n');
153
+ console.log(`Valid platforms: ${ALL_PLATFORMS.join(', ')}\n`);
154
+ return;
155
+ }
156
+ const isGlobal = await resolveScope(opts);
157
+ const target = resolveTarget(path, isGlobal);
158
+ const scope = isGlobal ? '~ (全局)' : target;
159
+ console.log(`\n📦 Adding to ${scope}\n`);
160
+ for (const name of platforms) {
161
+ await install({ platform: name, target, pkgRoot: PKG_ROOT, platforms: PLATFORMS, force: opts.yes, global: isGlobal });
162
+ }
163
+ console.log(`\n✅ Done!\n`);
164
+ break;
165
+ }
166
+ case 'remove':
167
+ case 'rm': {
168
+ const platforms = [];
169
+ let path = '.';
170
+ for (let i = 1; i < positional.length; i++) {
171
+ const p = positional[i];
172
+ if (PLATFORMS[p])
173
+ platforms.push(p);
174
+ else if (!p.startsWith('-'))
175
+ path = p;
176
+ }
177
+ if (platforms.length === 0) {
178
+ console.error('\n❌ No valid platform specified.\n');
179
+ console.log(`Valid platforms: ${ALL_PLATFORMS.join(', ')}\n`);
180
+ return;
181
+ }
182
+ const isGlobal = await resolveScope(opts);
183
+ const target = resolveTarget(path, isGlobal);
184
+ for (const name of platforms) {
185
+ const dir = isGlobal ? (GLOBAL_ROOTS[name]) : resolve(target, PLATFORMS[name].dir);
186
+ if (existsSync(dir)) {
187
+ if (!opts.yes) {
188
+ const ok = await confirm(` Remove ${dir}? [y/N] `);
189
+ if (!ok) {
190
+ console.log(` ⏭ Skipped ${name}`);
191
+ continue;
192
+ }
193
+ }
194
+ rmSync(dir, { recursive: true, force: true });
195
+ console.log(` - ${PLATFORMS[name].dir.padEnd(10)} removed`);
196
+ // Also remove MCP config
197
+ removeMcp(name, target, isGlobal);
198
+ }
199
+ else {
200
+ console.log(` ⏭ ${PLATFORMS[name].dir.padEnd(10)} not found`);
201
+ }
202
+ }
203
+ console.log(`\n✅ Done!\n`);
204
+ break;
205
+ }
206
+ case 'upgrade':
207
+ case 'update': {
208
+ // Check CLI self-upgrade
209
+ const latest = checkLatest();
210
+ if (latest && latest !== PKG_VERSION) {
211
+ console.log(`\n⬆️ CLI: v${PKG_VERSION} → v${latest}`);
212
+ console.log(` npm i -g ${PKG_NAME}@latest\n`);
213
+ }
214
+ const path = positional[1];
215
+ const isGlobal = await resolveScope(opts);
216
+ const target = resolveTarget(path, isGlobal);
217
+ const scope = isGlobal ? '~ (全局)' : target;
218
+ console.log(`🔄 Upgrading → ${scope}\n`);
219
+ for (const name of ALL_PLATFORMS) {
220
+ const dir = isGlobal ? GLOBAL_ROOTS[name] : resolve(target, PLATFORMS[name].dir);
221
+ if (existsSync(dir)) {
222
+ await install({ platform: name, target, pkgRoot: PKG_ROOT, platforms: PLATFORMS, force: opts.yes, global: isGlobal });
223
+ }
224
+ else {
225
+ console.log(` ⏭ ${PLATFORMS[name].dir} not installed, skipped`);
226
+ }
227
+ }
228
+ console.log(`\n✅ Done!\n`);
229
+ break;
230
+ }
231
+ case 'engine': {
232
+ const sub = positional[1];
233
+ if (sub === 'start') {
234
+ const port = parseInt(positional.find(a => a.startsWith('--port='))?.split('=')[1] || process.env.PORT || '3456');
235
+ const stdio = positional.includes('--stdio');
236
+ await startEngine({ port, stdio, projectRoot: positional.find(a => !a.startsWith('-') && a !== 'start' && a !== 'engine' && a !== '--stdio') || '.' });
237
+ }
238
+ else if (sub === 'stop') {
239
+ stopEngine();
240
+ }
241
+ else if (sub === 'status') {
242
+ engineStatus();
243
+ }
244
+ else {
245
+ console.log('\nUsage: jarvis engine <start|stop|status> [--port=<N>]\n');
246
+ }
247
+ break;
248
+ }
249
+ case 'web': {
250
+ const port = parseInt(positional.find(a => a.startsWith('--port='))?.split('=')[1] || process.env.WEB_PORT || '3457');
251
+ await startWeb({ port });
252
+ break;
253
+ }
254
+ case 'hook': {
255
+ await hookCommand(positional.slice(1));
256
+ break;
257
+ }
258
+ case 'diff': {
259
+ const path = positional[1];
260
+ const isGlobal = await resolveScope(opts);
261
+ const target = resolveTarget(path, isGlobal);
262
+ console.log(`\n📋 检查变更预览 → ${isGlobal ? '~ (全局)' : target}\n`);
263
+ for (const name of ALL_PLATFORMS) {
264
+ await diffPlatform(name, target, isGlobal);
265
+ }
266
+ console.log(`\n💡 运行 \`jarvis upgrade\` 应用这些变更。\n`);
267
+ break;
268
+ }
269
+ case 'doctor':
270
+ case 'check': {
271
+ const path = positional[1];
272
+ const isGlobal = await resolveScope(opts);
273
+ const target = resolveTarget(path, isGlobal);
274
+ doctor({ target, platforms: PLATFORMS, pkgRoot: PKG_ROOT, global: isGlobal });
275
+ break;
276
+ }
277
+ default: {
278
+ console.error(`\n❌ Unknown command: ${cmd}\n`);
279
+ showHelp();
280
+ }
281
+ }
282
+ }
283
+ const GLOBAL_ROOTS = {
284
+ claude: resolve(homedir(), '.claude'),
285
+ opencode: resolve(homedir(), '.config', 'opencode'),
286
+ codex: resolve(homedir(), '.codex'),
287
+ };
288
+ function removeMcp(platform, target, isGlobal) {
289
+ const files = {
290
+ claude: '.mcp.json',
291
+ opencode: 'opencode.json',
292
+ codex: '.codex/config.toml',
293
+ };
294
+ const f = files[platform];
295
+ if (!f)
296
+ return;
297
+ const dest = isGlobal ? resolve(homedir(), f) : resolve(target, f);
298
+ if (existsSync(dest)) {
299
+ rmSync(dest, { recursive: true, force: true });
300
+ console.log(` - ${f.padEnd(18)} removed`);
301
+ }
302
+ }
303
+ async function diffPlatform(platform, target, isGlobal) {
304
+ const { join } = await import('node:path');
305
+ const { existsSync, readdirSync, statSync, readFileSync } = await import('node:fs');
306
+ const { createHash } = await import('node:crypto');
307
+ const srcRoot = resolve(PKG_ROOT, 'src', 'templates', 'platforms', platform);
308
+ const destRoot = isGlobal
309
+ ? (platform === 'opencode' ? resolve(homedir(), '.config', 'opencode') : resolve(homedir(), `.${platform}`))
310
+ : resolve(target, PLATFORMS[platform].dir);
311
+ if (!existsSync(srcRoot))
312
+ return;
313
+ const hashFile = join((isGlobal ? destRoot : target), '.jarvis', 'file-hashes.json');
314
+ const hashes = existsSync(hashFile) ? JSON.parse(readFileSync(hashFile, 'utf-8')) : {};
315
+ const hash = (f) => createHash('sha256').update(readFileSync(f)).digest('hex');
316
+ let changed = 0;
317
+ for (const bucket of ['agents', 'commands', 'skills']) {
318
+ const sd = join(srcRoot, bucket), dd = join(destRoot, bucket);
319
+ if (!existsSync(sd) || !existsSync(dd))
320
+ continue;
321
+ for (const entry of readdirSync(sd)) {
322
+ const sp = join(sd, entry), dp = join(dd, entry);
323
+ if (statSync(sp).isDirectory())
324
+ continue;
325
+ const rel = `${bucket}/${entry}`;
326
+ const newHash = hash(sp);
327
+ if (!existsSync(dp)) {
328
+ if (changed < 20)
329
+ console.log(` + ${rel.padEnd(30)} (new)`);
330
+ changed++;
331
+ continue;
332
+ }
333
+ const oldHash = hashes[`/${rel}`] || hashes[rel];
334
+ if (newHash !== oldHash) {
335
+ if (changed < 20) {
336
+ const destHash = hash(dp);
337
+ const status = (!oldHash || destHash === oldHash) ? 'update' : 'skip (modified by user)';
338
+ console.log(` ~ ${rel.padEnd(30)} ${status}`);
339
+ }
340
+ changed++;
341
+ }
342
+ }
343
+ }
344
+ if (changed === 0)
345
+ console.log(` ✅ ${platform.padEnd(10)} up to date`);
346
+ else if (changed > 20)
347
+ console.log(` ... and ${changed - 20} more files`);
348
+ }
349
+ async function confirm(q) {
350
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
351
+ return new Promise(res => { rl.question(q, a => { rl.close(); res(a.toLowerCase() === 'y' || a.toLowerCase() === 'yes'); }); });
352
+ }
353
+ async function question(q) {
354
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
355
+ return new Promise(res => { rl.question(q, a => { rl.close(); res(a.trim()); }); });
356
+ }
357
+ /** 当用户未通过 -g 显式指定安装范围时,交互式选择全局 / 项目级别 */
358
+ async function promptScope() {
359
+ console.log('\n📋 请选择安装范围:');
360
+ console.log(' [1] 项目级别 — 安装到当前项目目录(推荐)');
361
+ console.log(' [2] 全局级别 — 安装到用户目录,所有项目共享');
362
+ const answer = await question(' 请输入 1 或 2(默认: 1): ');
363
+ return answer === '2';
364
+ }
365
+ /** 解析安装范围:显式 -g 用全局,否则交互提示 */
366
+ async function resolveScope(opts) {
367
+ if (opts.globalExplicit)
368
+ return opts.global;
369
+ return promptScope();
370
+ }
371
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Check the health of installed Jarvis configurations.
3
+ */
4
+ export declare function doctor({ target, platforms, pkgRoot, ..._rest }: {
5
+ target: string;
6
+ platforms: Record<string, {
7
+ dir: string;
8
+ desc: string;
9
+ }>;
10
+ pkgRoot: string;
11
+ global?: boolean;
12
+ }): void;
@@ -0,0 +1,92 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
2
+ import { resolve, join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ /**
5
+ * Check the health of installed Jarvis configurations.
6
+ */
7
+ export function doctor({ target, platforms, pkgRoot, ..._rest }) {
8
+ console.log(`\n🔍 Jarvis Doctor — checking ${target}\n`);
9
+ // Read source package version
10
+ let version = '?.?.?';
11
+ try {
12
+ version = JSON.parse(readFileSync(resolve(pkgRoot, 'package.json'), 'utf-8')).version;
13
+ }
14
+ catch { }
15
+ console.log(` CLI version: ${version}\n`);
16
+ let allOk = true;
17
+ for (const [name, info] of Object.entries(platforms)) {
18
+ const dir = resolve(target, info.dir);
19
+ const exists = existsSync(dir);
20
+ if (!exists) {
21
+ console.log(` ❌ ${name.padEnd(10)} not installed (missing ${info.dir}/)`);
22
+ allOk = false;
23
+ continue;
24
+ }
25
+ const agentsDir = join(dir, 'agents');
26
+ const skillsDir = join(dir, 'skills');
27
+ const commandsDir = join(dir, 'commands');
28
+ const agentCount = existsSync(agentsDir) ? readdirSync(agentsDir).filter(f => f.endsWith('.md') || f.endsWith('.toml')).length : 0;
29
+ const skillCount = existsSync(skillsDir) ? readdirSync(skillsDir).filter(f => statSync(join(skillsDir, f)).isDirectory()).length : 0;
30
+ const cmdCount = existsSync(commandsDir) ? readdirSync(commandsDir).filter(f => f.endsWith('.md')).length : 0;
31
+ const expected = getExpected(name);
32
+ let status = '✅';
33
+ if (agentCount < expected.agents * 0.8) {
34
+ status = '⚠️';
35
+ allOk = false;
36
+ }
37
+ if (skillCount < expected.skills * 0.8) {
38
+ status = '⚠️';
39
+ allOk = false;
40
+ }
41
+ console.log(` ${status} ${name.padEnd(10)} ${agentCount} agents, ${cmdCount} commands, ${skillCount} skills`);
42
+ }
43
+ // Check root files
44
+ for (const f of ['CLAUDE.md', 'AGENTS.md']) {
45
+ const p = resolve(target, f);
46
+ if (existsSync(p)) {
47
+ console.log(` ✅ ${f.padEnd(12)} present`);
48
+ }
49
+ }
50
+ console.log('');
51
+ // Terminal compatibility tips (Windows)
52
+ if (process.platform === 'win32') {
53
+ console.log(' 💡 终端兼容性提示:');
54
+ console.log(' - 如 PowerShell 中 jarvis 命令不工作,使用 `jarvis.cmd` 或 `npx jarvis`');
55
+ console.log(' - PowerShell 执行策略检查: Get-ExecutionPolicy');
56
+ console.log(' - 若为 Restricted,npm 全局 bin 目录中的 .cmd 包装器仍然可用\n');
57
+ }
58
+ // Check engine status (sync — check PID file)
59
+ const pidFile = resolve(homedir(), '.jarvis', 'engine.pid');
60
+ let engineRunning = false;
61
+ if (existsSync(pidFile)) {
62
+ try {
63
+ const pid = Number(readFileSync(pidFile, 'utf-8').trim());
64
+ process.kill(pid, 0);
65
+ engineRunning = true;
66
+ }
67
+ catch { }
68
+ }
69
+ if (!engineRunning) {
70
+ console.log('\n ⚠️ Engine not running. Gate enforcement is INACTIVE.');
71
+ console.log(' Start it: jarvis engine start [--dashboard]\n');
72
+ allOk = false;
73
+ }
74
+ if (allOk) {
75
+ console.log(' ✅ All platforms OK, engine running\n');
76
+ }
77
+ else {
78
+ if (!engineRunning)
79
+ console.log(' ⚠️ Start the engine to enable gate enforcement.\n');
80
+ else
81
+ console.log(' ⚠️ Some platforms need attention. Run `jarvis add <platform>` to fix.\n');
82
+ }
83
+ }
84
+ function getExpected(name) {
85
+ switch (name) {
86
+ case 'claude': return { agents: 47, commands: 15, skills: 27 };
87
+ case 'opencode': return { agents: 55, commands: 0, skills: 27 };
88
+ case 'codex': return { agents: 45, commands: 0, skills: 42 };
89
+ default: return { agents: 40, commands: 0, skills: 27 };
90
+ }
91
+ }
92
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Write model and effort back to the agent's source file.
3
+ * Returns true if file was updated.
4
+ */
5
+ export declare function syncAgentFile(root: string, agentId: string, model: string, effort: string): boolean;