jarvis-agent-factory 3.43.0 → 3.44.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.
Files changed (323) hide show
  1. package/README.md +36 -50
  2. package/bin/jarvis.js +1 -1
  3. package/dist/package.json +5 -7
  4. package/dist/src/cli/commands/add.d.ts +6 -0
  5. package/dist/src/cli/commands/add.js +48 -0
  6. package/dist/src/cli/commands/add.js.map +1 -0
  7. package/dist/src/cli/commands/diff.d.ts +5 -0
  8. package/dist/src/cli/commands/diff.js +78 -0
  9. package/dist/src/cli/commands/diff.js.map +1 -0
  10. package/dist/src/cli/commands/doctor.d.ts +6 -0
  11. package/dist/src/cli/commands/doctor.js +20 -0
  12. package/dist/src/cli/commands/doctor.js.map +1 -0
  13. package/dist/src/cli/commands/engine-restart.d.ts +8 -0
  14. package/dist/src/cli/commands/engine-restart.js +36 -0
  15. package/dist/src/cli/commands/engine-restart.js.map +1 -0
  16. package/dist/src/cli/commands/engine-status.d.ts +8 -0
  17. package/dist/src/cli/commands/engine-status.js +50 -0
  18. package/dist/src/cli/commands/engine-status.js.map +1 -0
  19. package/dist/src/cli/commands/engine.d.ts +11 -0
  20. package/dist/src/cli/commands/engine.js +47 -0
  21. package/dist/src/cli/commands/engine.js.map +1 -0
  22. package/dist/src/cli/commands/hook.d.ts +6 -0
  23. package/dist/src/cli/commands/hook.js +9 -0
  24. package/dist/src/cli/commands/hook.js.map +1 -0
  25. package/dist/src/cli/commands/init.d.ts +6 -0
  26. package/dist/src/cli/commands/init.js +35 -0
  27. package/dist/src/cli/commands/init.js.map +1 -0
  28. package/dist/src/cli/commands/remove.d.ts +7 -0
  29. package/dist/src/cli/commands/remove.js +79 -0
  30. package/dist/src/cli/commands/remove.js.map +1 -0
  31. package/dist/src/cli/commands/upgrade.d.ts +6 -0
  32. package/dist/src/cli/commands/upgrade.js +43 -0
  33. package/dist/src/cli/commands/upgrade.js.map +1 -0
  34. package/dist/src/{cli.d.ts → cli/index.d.ts} +1 -1
  35. package/dist/src/cli/index.js +50 -0
  36. package/dist/src/cli/index.js.map +1 -0
  37. package/dist/src/cli/utils/args.d.ts +26 -0
  38. package/dist/src/cli/utils/args.js +38 -0
  39. package/dist/src/cli/utils/args.js.map +1 -0
  40. package/dist/src/cli/utils/constants.d.ts +22 -0
  41. package/dist/src/cli/utils/constants.js +77 -0
  42. package/dist/src/cli/utils/constants.js.map +1 -0
  43. package/dist/src/cli/utils/io.d.ts +12 -0
  44. package/dist/src/cli/utils/io.js +30 -0
  45. package/dist/src/cli/utils/io.js.map +1 -0
  46. package/dist/src/cli/utils/resolve.d.ts +20 -0
  47. package/dist/src/cli/utils/resolve.js +47 -0
  48. package/dist/src/cli/utils/resolve.js.map +1 -0
  49. package/dist/src/cli/utils/scope.d.ts +18 -0
  50. package/dist/src/cli/utils/scope.js +27 -0
  51. package/dist/src/cli/utils/scope.js.map +1 -0
  52. package/dist/src/engine/agent-registry.d.ts +3 -3
  53. package/dist/src/engine/agent-registry.js +30 -117
  54. package/dist/src/engine/agent-registry.js.map +1 -1
  55. package/dist/src/engine/db.js +2 -1
  56. package/dist/src/engine/db.js.map +1 -1
  57. package/dist/src/engine/guardian.d.ts +56 -0
  58. package/dist/src/engine/guardian.js +229 -0
  59. package/dist/src/engine/guardian.js.map +1 -0
  60. package/dist/src/engine/pubsub.d.ts +57 -0
  61. package/dist/src/engine/pubsub.js +74 -0
  62. package/dist/src/engine/pubsub.js.map +1 -0
  63. package/dist/src/engine/server.d.ts +13 -2
  64. package/dist/src/engine/server.js +121 -44
  65. package/dist/src/engine/server.js.map +1 -1
  66. package/dist/src/hash-paths.d.ts +1 -1
  67. package/dist/src/hash-paths.js +1 -1
  68. package/dist/src/install.js +31 -2
  69. package/dist/src/install.js.map +1 -1
  70. package/dist/src/shared/mcp-config.d.ts +45 -0
  71. package/dist/src/shared/mcp-config.js +59 -0
  72. package/dist/src/shared/mcp-config.js.map +1 -0
  73. package/dist/src/suppress-warnings.d.ts +1 -1
  74. package/dist/src/suppress-warnings.js +1 -1
  75. package/dist/src/web/routes.d.ts +5 -1
  76. package/dist/src/web/routes.js +132 -4
  77. package/dist/src/web/routes.js.map +1 -1
  78. package/dist/tests/agent-registry.test.js +5 -15
  79. package/dist/tests/agent-registry.test.js.map +1 -1
  80. package/dist/tests/cli-scope.test.js +66 -0
  81. package/dist/tests/cli-scope.test.js.map +1 -0
  82. package/dist/tests/guardian.test.d.ts +1 -0
  83. package/dist/tests/guardian.test.js +377 -0
  84. package/dist/tests/guardian.test.js.map +1 -0
  85. package/dist/tests/mcp-config.test.d.ts +1 -0
  86. package/dist/tests/mcp-config.test.js +113 -0
  87. package/dist/tests/mcp-config.test.js.map +1 -0
  88. package/dist/tests/mcp-platform-info.test.js +55 -69
  89. package/dist/tests/mcp-platform-info.test.js.map +1 -1
  90. package/dist/tests/pubsub.test.d.ts +1 -0
  91. package/dist/tests/pubsub.test.js +166 -0
  92. package/dist/tests/pubsub.test.js.map +1 -0
  93. package/dist/tests/routes-emit.test.d.ts +1 -0
  94. package/dist/tests/routes-emit.test.js +246 -0
  95. package/dist/tests/routes-emit.test.js.map +1 -0
  96. package/dist/tests/server-emit.test.d.ts +1 -0
  97. package/dist/tests/server-emit.test.js +287 -0
  98. package/dist/tests/server-emit.test.js.map +1 -0
  99. package/dist/tests/server-error-handler.test.d.ts +1 -0
  100. package/dist/tests/server-error-handler.test.js +185 -0
  101. package/dist/tests/server-error-handler.test.js.map +1 -0
  102. package/dist/tests/sse-broadcast.test.d.ts +1 -0
  103. package/dist/tests/sse-broadcast.test.js +204 -0
  104. package/dist/tests/sse-broadcast.test.js.map +1 -0
  105. package/dist/web/index.html +47 -47
  106. package/package.json +5 -7
  107. package/dist/src/cli.js +0 -397
  108. package/dist/src/cli.js.map +0 -1
  109. package/dist/src/templates/platforms/codex/agents/algorithm_expert.toml +0 -67
  110. package/dist/src/templates/platforms/codex/agents/android_state_worker.toml +0 -12
  111. package/dist/src/templates/platforms/codex/agents/android_ui_worker.toml +0 -12
  112. package/dist/src/templates/platforms/codex/agents/android_worker.toml +0 -31
  113. package/dist/src/templates/platforms/codex/agents/api_docs_worker.toml +0 -50
  114. package/dist/src/templates/platforms/codex/agents/backend_api_worker.toml +0 -71
  115. package/dist/src/templates/platforms/codex/agents/backend_architect.toml +0 -74
  116. package/dist/src/templates/platforms/codex/agents/backend_data_worker.toml +0 -74
  117. package/dist/src/templates/platforms/codex/agents/backend_implementer.toml +0 -66
  118. package/dist/src/templates/platforms/codex/agents/backend_service_worker.toml +0 -74
  119. package/dist/src/templates/platforms/codex/agents/backend_test_worker.toml +0 -85
  120. package/dist/src/templates/platforms/codex/agents/browser_test_worker.toml +0 -63
  121. package/dist/src/templates/platforms/codex/agents/database_specialist.toml +0 -52
  122. package/dist/src/templates/platforms/codex/agents/diff_code_reviewer.toml +0 -75
  123. package/dist/src/templates/platforms/codex/agents/docs_researcher.toml +0 -39
  124. package/dist/src/templates/platforms/codex/agents/e2e_test_worker.toml +0 -66
  125. package/dist/src/templates/platforms/codex/agents/fix-retest.md +0 -60
  126. package/dist/src/templates/platforms/codex/agents/flutter_state_worker.toml +0 -12
  127. package/dist/src/templates/platforms/codex/agents/flutter_ui_worker.toml +0 -12
  128. package/dist/src/templates/platforms/codex/agents/flutter_worker.toml +0 -32
  129. package/dist/src/templates/platforms/codex/agents/frontend_architect.toml +0 -71
  130. package/dist/src/templates/platforms/codex/agents/frontend_implementer.toml +0 -74
  131. package/dist/src/templates/platforms/codex/agents/frontend_state_worker.toml +0 -71
  132. package/dist/src/templates/platforms/codex/agents/frontend_test_worker.toml +0 -82
  133. package/dist/src/templates/platforms/codex/agents/frontend_ui_worker.toml +0 -73
  134. package/dist/src/templates/platforms/codex/agents/infra_worker.toml +0 -45
  135. package/dist/src/templates/platforms/codex/agents/ios_state_worker.toml +0 -12
  136. package/dist/src/templates/platforms/codex/agents/ios_ui_worker.toml +0 -12
  137. package/dist/src/templates/platforms/codex/agents/ios_worker.toml +0 -31
  138. package/dist/src/templates/platforms/codex/agents/performance_audit_reviewer.toml +0 -73
  139. package/dist/src/templates/platforms/codex/agents/performance_test_worker.toml +0 -47
  140. package/dist/src/templates/platforms/codex/agents/planner.toml +0 -149
  141. package/dist/src/templates/platforms/codex/agents/post_change_reviewer.toml +0 -62
  142. package/dist/src/templates/platforms/codex/agents/project_audit_reviewer.toml +0 -75
  143. package/dist/src/templates/platforms/codex/agents/react_native_worker.toml +0 -34
  144. package/dist/src/templates/platforms/codex/agents/remediation_planner.toml +0 -69
  145. package/dist/src/templates/platforms/codex/agents/remediation_worker.toml +0 -65
  146. package/dist/src/templates/platforms/codex/agents/repo_explorer.toml +0 -84
  147. package/dist/src/templates/platforms/codex/agents/review_qa.toml +0 -163
  148. package/dist/src/templates/platforms/codex/agents/rn_state_worker.toml +0 -12
  149. package/dist/src/templates/platforms/codex/agents/rn_ui_worker.toml +0 -12
  150. package/dist/src/templates/platforms/codex/agents/security_auditor.toml +0 -43
  151. package/dist/src/templates/platforms/codex/agents/taro_state_worker.toml +0 -12
  152. package/dist/src/templates/platforms/codex/agents/taro_ui_worker.toml +0 -12
  153. package/dist/src/templates/platforms/codex/agents/taro_worker.toml +0 -53
  154. package/dist/src/templates/platforms/codex/agents/task_design.toml +0 -93
  155. package/dist/src/templates/platforms/codex/agents/test-executor.md +0 -52
  156. package/dist/src/templates/platforms/codex/agents/test_doc_writer.toml +0 -63
  157. package/dist/src/templates/platforms/codex/config.toml +0 -357
  158. package/dist/src/templates/platforms/codex/skills/agent-browser/SKILL.md +0 -51
  159. package/dist/src/templates/platforms/codex/skills/algorithm-expert/SKILL.md +0 -31
  160. package/dist/src/templates/platforms/codex/skills/android/SKILL.md +0 -46
  161. package/dist/src/templates/platforms/codex/skills/backend/SKILL.md +0 -66
  162. package/dist/src/templates/platforms/codex/skills/backend-architect/SKILL.md +0 -34
  163. package/dist/src/templates/platforms/codex/skills/behavioral-guidelines/SKILL.md +0 -193
  164. package/dist/src/templates/platforms/codex/skills/browser-test/SKILL.md +0 -58
  165. package/dist/src/templates/platforms/codex/skills/browser-testing/SKILL.md +0 -261
  166. package/dist/src/templates/platforms/codex/skills/bug-fix/SKILL.md +0 -59
  167. package/dist/src/templates/platforms/codex/skills/chinese-documentation/SKILL.md +0 -448
  168. package/dist/src/templates/platforms/codex/skills/code-quality-gate/SKILL.md +0 -79
  169. package/dist/src/templates/platforms/codex/skills/code-review-and-quality/SKILL.md +0 -201
  170. package/dist/src/templates/platforms/codex/skills/code-simplification/SKILL.md +0 -163
  171. package/dist/src/templates/platforms/codex/skills/code-standards/SKILL.md +0 -80
  172. package/dist/src/templates/platforms/codex/skills/context-engineering/SKILL.md +0 -244
  173. package/dist/src/templates/platforms/codex/skills/debugging-and-error-recovery/SKILL.md +0 -209
  174. package/dist/src/templates/platforms/codex/skills/documentation-and-adrs/SKILL.md +0 -506
  175. package/dist/src/templates/platforms/codex/skills/expo/SKILL.md +0 -45
  176. package/dist/src/templates/platforms/codex/skills/find-docs/SKILL.md +0 -58
  177. package/dist/src/templates/platforms/codex/skills/find-skills/SKILL.md +0 -106
  178. package/dist/src/templates/platforms/codex/skills/finishing-a-development-branch/SKILL.md +0 -166
  179. package/dist/src/templates/platforms/codex/skills/flutter/SKILL.md +0 -45
  180. package/dist/src/templates/platforms/codex/skills/frontend/SKILL.md +0 -80
  181. package/dist/src/templates/platforms/codex/skills/frontend-architect/SKILL.md +0 -35
  182. package/dist/src/templates/platforms/codex/skills/git-workflow-and-versioning/SKILL.md +0 -209
  183. package/dist/src/templates/platforms/codex/skills/idea-refine/SKILL.md +0 -133
  184. package/dist/src/templates/platforms/codex/skills/incremental-implementation/SKILL.md +0 -145
  185. package/dist/src/templates/platforms/codex/skills/ios/SKILL.md +0 -46
  186. package/dist/src/templates/platforms/codex/skills/jarvis/SKILL.md +0 -120
  187. package/dist/src/templates/platforms/codex/skills/mcp-builder/SKILL.md +0 -255
  188. package/dist/src/templates/platforms/codex/skills/planning-and-task-breakdown/SKILL.md +0 -213
  189. package/dist/src/templates/platforms/codex/skills/review-fix-optimize/SKILL.md +0 -89
  190. package/dist/src/templates/platforms/codex/skills/review-only/SKILL.md +0 -63
  191. package/dist/src/templates/platforms/codex/skills/security-and-hardening/SKILL.md +0 -356
  192. package/dist/src/templates/platforms/codex/skills/shipping-and-launch/SKILL.md +0 -492
  193. package/dist/src/templates/platforms/codex/skills/source-driven-development/SKILL.md +0 -151
  194. package/dist/src/templates/platforms/codex/skills/spec-driven-development/SKILL.md +0 -219
  195. package/dist/src/templates/platforms/codex/skills/taro/SKILL.md +0 -44
  196. package/dist/src/templates/platforms/codex/skills/test-driven-development/SKILL.md +0 -168
  197. package/dist/src/templates/platforms/codex/skills/using-agent-skills/SKILL.md +0 -193
  198. package/dist/src/templates/platforms/codex/skills/verification-before-completion/SKILL.md +0 -163
  199. package/dist/src/templates/platforms/codex/skills/writing-skills/SKILL.md +0 -654
  200. package/dist/src/templates/platforms/codex/skills/writing-skills/anthropic-best-practices.md +0 -1149
  201. package/dist/src/templates/platforms/codex/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  202. package/dist/src/templates/platforms/codex/skills/writing-skills/graphviz-conventions.dot +0 -172
  203. package/dist/src/templates/platforms/codex/skills/writing-skills/persuasion-principles.md +0 -187
  204. package/dist/src/templates/platforms/codex/skills/writing-skills/render-graphs.js +0 -168
  205. package/dist/src/templates/platforms/codex/skills/writing-skills/testing-skills-with-subagents.md +0 -384
  206. package/dist/src/templates/platforms/opencode/agents/algorithm-expert-chat.md +0 -47
  207. package/dist/src/templates/platforms/opencode/agents/algorithm-expert.md +0 -133
  208. package/dist/src/templates/platforms/opencode/agents/android-state-worker.md +0 -29
  209. package/dist/src/templates/platforms/opencode/agents/android-ui-worker.md +0 -26
  210. package/dist/src/templates/platforms/opencode/agents/android-worker.md +0 -60
  211. package/dist/src/templates/platforms/opencode/agents/android.md +0 -60
  212. package/dist/src/templates/platforms/opencode/agents/api-docs-worker.md +0 -67
  213. package/dist/src/templates/platforms/opencode/agents/api-test-worker.md +0 -115
  214. package/dist/src/templates/platforms/opencode/agents/backend-api-worker.md +0 -98
  215. package/dist/src/templates/platforms/opencode/agents/backend-architect-chat.md +0 -47
  216. package/dist/src/templates/platforms/opencode/agents/backend-architect.md +0 -151
  217. package/dist/src/templates/platforms/opencode/agents/backend-code-reviewer.md +0 -114
  218. package/dist/src/templates/platforms/opencode/agents/backend-data-worker.md +0 -101
  219. package/dist/src/templates/platforms/opencode/agents/backend-implementer.md +0 -133
  220. package/dist/src/templates/platforms/opencode/agents/backend-service-worker.md +0 -101
  221. package/dist/src/templates/platforms/opencode/agents/backend-test-worker.md +0 -117
  222. package/dist/src/templates/platforms/opencode/agents/backend.md +0 -144
  223. package/dist/src/templates/platforms/opencode/agents/browser-test-worker.md +0 -74
  224. package/dist/src/templates/platforms/opencode/agents/browser-test.md +0 -95
  225. package/dist/src/templates/platforms/opencode/agents/bug-fix.md +0 -118
  226. package/dist/src/templates/platforms/opencode/agents/database-specialist.md +0 -69
  227. package/dist/src/templates/platforms/opencode/agents/diff-code-reviewer.md +0 -146
  228. package/dist/src/templates/platforms/opencode/agents/docs-researcher.md +0 -71
  229. package/dist/src/templates/platforms/opencode/agents/e2e-test-worker.md +0 -76
  230. package/dist/src/templates/platforms/opencode/agents/expo.md +0 -62
  231. package/dist/src/templates/platforms/opencode/agents/fix-retest.md +0 -56
  232. package/dist/src/templates/platforms/opencode/agents/flutter-state-worker.md +0 -30
  233. package/dist/src/templates/platforms/opencode/agents/flutter-ui-worker.md +0 -29
  234. package/dist/src/templates/platforms/opencode/agents/flutter-worker.md +0 -60
  235. package/dist/src/templates/platforms/opencode/agents/flutter.md +0 -62
  236. package/dist/src/templates/platforms/opencode/agents/frontend-architect-chat.md +0 -47
  237. package/dist/src/templates/platforms/opencode/agents/frontend-architect.md +0 -147
  238. package/dist/src/templates/platforms/opencode/agents/frontend-code-reviewer.md +0 -112
  239. package/dist/src/templates/platforms/opencode/agents/frontend-implementer.md +0 -179
  240. package/dist/src/templates/platforms/opencode/agents/frontend-state-worker.md +0 -122
  241. package/dist/src/templates/platforms/opencode/agents/frontend-test-worker.md +0 -114
  242. package/dist/src/templates/platforms/opencode/agents/frontend-ui-worker.md +0 -190
  243. package/dist/src/templates/platforms/opencode/agents/frontend.md +0 -147
  244. package/dist/src/templates/platforms/opencode/agents/infra-worker.md +0 -64
  245. package/dist/src/templates/platforms/opencode/agents/ios-state-worker.md +0 -29
  246. package/dist/src/templates/platforms/opencode/agents/ios-ui-worker.md +0 -27
  247. package/dist/src/templates/platforms/opencode/agents/ios-worker.md +0 -60
  248. package/dist/src/templates/platforms/opencode/agents/ios.md +0 -60
  249. package/dist/src/templates/platforms/opencode/agents/jarvis-lite.md +0 -117
  250. package/dist/src/templates/platforms/opencode/agents/jarvis.md +0 -656
  251. package/dist/src/templates/platforms/opencode/agents/performance-audit-reviewer.md +0 -93
  252. package/dist/src/templates/platforms/opencode/agents/performance-test-worker.md +0 -65
  253. package/dist/src/templates/platforms/opencode/agents/planner.md +0 -267
  254. package/dist/src/templates/platforms/opencode/agents/post-change-reviewer.md +0 -92
  255. package/dist/src/templates/platforms/opencode/agents/project-audit-reviewer.md +0 -92
  256. package/dist/src/templates/platforms/opencode/agents/react-native-worker.md +0 -62
  257. package/dist/src/templates/platforms/opencode/agents/remediation-planner.md +0 -90
  258. package/dist/src/templates/platforms/opencode/agents/remediation-worker.md +0 -92
  259. package/dist/src/templates/platforms/opencode/agents/repo-explorer.md +0 -113
  260. package/dist/src/templates/platforms/opencode/agents/review-fix-optimize.md +0 -142
  261. package/dist/src/templates/platforms/opencode/agents/review-fix.md +0 -74
  262. package/dist/src/templates/platforms/opencode/agents/review-only.md +0 -108
  263. package/dist/src/templates/platforms/opencode/agents/review-qa.md +0 -184
  264. package/dist/src/templates/platforms/opencode/agents/review.md +0 -57
  265. package/dist/src/templates/platforms/opencode/agents/rn-state-worker.md +0 -31
  266. package/dist/src/templates/platforms/opencode/agents/rn-ui-worker.md +0 -29
  267. package/dist/src/templates/platforms/opencode/agents/security-auditor.md +0 -66
  268. package/dist/src/templates/platforms/opencode/agents/taro-state-worker.md +0 -29
  269. package/dist/src/templates/platforms/opencode/agents/taro-ui-worker.md +0 -27
  270. package/dist/src/templates/platforms/opencode/agents/taro-worker.md +0 -70
  271. package/dist/src/templates/platforms/opencode/agents/taro.md +0 -62
  272. package/dist/src/templates/platforms/opencode/agents/task-design.md +0 -174
  273. package/dist/src/templates/platforms/opencode/agents/test-doc-writer.md +0 -68
  274. package/dist/src/templates/platforms/opencode/agents/test-executor.md +0 -48
  275. package/dist/src/templates/platforms/opencode/package.json +0 -5
  276. package/dist/src/templates/platforms/opencode/plugins/jarvis-gate-check.d.ts +0 -30
  277. package/dist/src/templates/platforms/opencode/plugins/jarvis-gate-check.js +0 -128
  278. package/dist/src/templates/platforms/opencode/plugins/jarvis-gate-check.js.map +0 -1
  279. package/dist/src/templates/platforms/opencode/plugins/jarvis-gate-check.ts +0 -131
  280. package/dist/src/templates/platforms/opencode/skills/agent-browser/SKILL.md +0 -51
  281. package/dist/src/templates/platforms/opencode/skills/behavioral-guidelines/SKILL.md +0 -193
  282. package/dist/src/templates/platforms/opencode/skills/browser-testing/SKILL.md +0 -261
  283. package/dist/src/templates/platforms/opencode/skills/chinese-documentation/SKILL.md +0 -448
  284. package/dist/src/templates/platforms/opencode/skills/code-quality-gate/SKILL.md +0 -79
  285. package/dist/src/templates/platforms/opencode/skills/code-review-and-quality/SKILL.md +0 -201
  286. package/dist/src/templates/platforms/opencode/skills/code-simplification/SKILL.md +0 -163
  287. package/dist/src/templates/platforms/opencode/skills/code-standards/SKILL.md +0 -80
  288. package/dist/src/templates/platforms/opencode/skills/context-engineering/SKILL.md +0 -244
  289. package/dist/src/templates/platforms/opencode/skills/debugging-and-error-recovery/SKILL.md +0 -209
  290. package/dist/src/templates/platforms/opencode/skills/documentation-and-adrs/SKILL.md +0 -506
  291. package/dist/src/templates/platforms/opencode/skills/find-docs/SKILL.md +0 -58
  292. package/dist/src/templates/platforms/opencode/skills/find-skills/SKILL.md +0 -106
  293. package/dist/src/templates/platforms/opencode/skills/finishing-a-development-branch/SKILL.md +0 -166
  294. package/dist/src/templates/platforms/opencode/skills/git-workflow-and-versioning/SKILL.md +0 -219
  295. package/dist/src/templates/platforms/opencode/skills/idea-refine/SKILL.md +0 -133
  296. package/dist/src/templates/platforms/opencode/skills/incremental-implementation/SKILL.md +0 -145
  297. package/dist/src/templates/platforms/opencode/skills/mcp-builder/SKILL.md +0 -255
  298. package/dist/src/templates/platforms/opencode/skills/planning-and-task-breakdown/SKILL.md +0 -213
  299. package/dist/src/templates/platforms/opencode/skills/security-and-hardening/SKILL.md +0 -356
  300. package/dist/src/templates/platforms/opencode/skills/shipping-and-launch/SKILL.md +0 -492
  301. package/dist/src/templates/platforms/opencode/skills/source-driven-development/SKILL.md +0 -151
  302. package/dist/src/templates/platforms/opencode/skills/spec-driven-development/SKILL.md +0 -219
  303. package/dist/src/templates/platforms/opencode/skills/test-driven-development/SKILL.md +0 -168
  304. package/dist/src/templates/platforms/opencode/skills/using-agent-skills/SKILL.md +0 -193
  305. package/dist/src/templates/platforms/opencode/skills/verification-before-completion/SKILL.md +0 -163
  306. package/dist/src/templates/platforms/opencode/skills/writing-skills/SKILL.md +0 -654
  307. package/dist/src/templates/platforms/opencode/skills/writing-skills/anthropic-best-practices.md +0 -1149
  308. package/dist/src/templates/platforms/opencode/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  309. package/dist/src/templates/platforms/opencode/skills/writing-skills/graphviz-conventions.dot +0 -172
  310. package/dist/src/templates/platforms/opencode/skills/writing-skills/persuasion-principles.md +0 -187
  311. package/dist/src/templates/platforms/opencode/skills/writing-skills/render-graphs.js +0 -168
  312. package/dist/src/templates/platforms/opencode/skills/writing-skills/testing-skills-with-subagents.md +0 -384
  313. package/dist/src/templates/platforms/opencode/tools/jarvis-agent-config.ts +0 -41
  314. package/dist/src/templates/platforms/opencode/tools/jarvis-gate-advance.ts +0 -30
  315. package/dist/src/templates/platforms/opencode/tools/jarvis-gate-check.ts +0 -31
  316. package/dist/src/templates/platforms/opencode/tools/jarvis-pipeline-status.ts +0 -61
  317. package/dist/src/templates/platforms/opencode/tools/jarvis-report.ts +0 -26
  318. package/dist/tests/gate-hook.test.d.ts +0 -13
  319. package/dist/tests/gate-hook.test.js +0 -141
  320. package/dist/tests/gate-hook.test.js.map +0 -1
  321. package/dist/tests/tools.test.js +0 -231
  322. package/dist/tests/tools.test.js.map +0 -1
  323. /package/dist/tests/{tools.test.d.ts → cli-scope.test.d.ts} +0 -0
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.43.0-green)](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
4
+ [![Version](https://img.shields.io/badge/version-v3.44.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
  [![Visual Primitives MCP](https://img.shields.io/badge/DeepSeek-Visual%20Primitives%20MCP-purple)](https://github.com/Wjl1224734792/visual-primitives-mcp)
7
7
  <br>💡 **纯文本模型(如 DeepSeek)主力用户** → 搭配 [Visual Primitives MCP](https://github.com/Wjl1224734792/visual-primitives-mcp) 获得视觉理解能力
8
8
  <br>**简体中文** | [English](./README_EN.md)
9
9
 
10
- 跨平台多智能体 AI 编程助手配置集 + MCP 编排引擎。从想法到交付的完整软件开发流水线,<br>**主力支持 Claude Code**,OpenCode / Codex 配置保留但暂不维护。
10
+ AI 编程助手配置集 + MCP 编排引擎。从想法到交付的完整软件开发流水线,<br>**仅支持 Claude Code**。
11
11
 
12
12
  > **v3.43.0** — Dashboard 简化:文档阅读器替代 X6 画布 · Agent 事件去重 · Gate 耗时修复 · 多平台适配初始化
13
13
 
@@ -15,7 +15,7 @@
15
15
 
16
16
  ```bash
17
17
  npm i -g jarvis-agent-factory # 安装 CLI(零原生依赖,node:sqlite 内置)
18
- jarvis init -y # 一键部署三平台配置 + MCP + 钩子
18
+ jarvis init -y # 一键部署配置 + MCP + 钩子
19
19
  # → Claude Code 重启后引擎自动拉起,无需手动启动
20
20
  jarvis web # 启动 Web 面板(按需)
21
21
  # → http://localhost:3456/dashboard
@@ -54,11 +54,7 @@ jarvis web # 启动 Web 面板(按需)
54
54
 
55
55
  | 平台 | 维护状态 | 说明 |
56
56
  |------|---------|------|
57
- | **Claude Code** | ✅ 维护中 | 主力平台,所有功能、Agent、技能持续迭代 |
58
- | **OpenCode** | ⛔ 已停止 | 配置文件保留但不再维护更新,**不推荐使用** |
59
- | **Codex** | ⛔ 已停止 | 配置文件保留但不再维护更新,**不推荐使用** |
60
-
61
- > **重要**:当前仅 Claude Code 平台可用。OpenCode 和 Codex 的 CLI 命令和配置文件仍保留在仓库中但不做任何更新,使用可能导致功能异常或配置不完整。
57
+ | **Claude Code** | ✅ 维护中 | 唯一支持平台,所有功能、Agent、技能持续迭代 |
62
58
 
63
59
  ## 产物目录规范
64
60
 
@@ -100,16 +96,10 @@ docs/
100
96
  │ └────┬────┘ └────┬─────┘ └────────────────────────┘ │
101
97
  │ └────────────┼─────────────────────────────────────│
102
98
  └─────────────────────┼─────────────────────────────────────┘
103
- ▲ │
104
- .mcp.json jarvis web .codex/config.toml
105
- Claude Code (:3457) Codex
99
+ ▲ │
100
+ .mcp.json jarvis web
101
+ Claude Code
106
102
  (stdio 自动拉起引擎)
107
-
108
- Web Panel (:3457) — 独立按需启动
109
- ┌───────────────────────────────┐
110
- │ 流水线看板 + 归档 + Agent配置 │
111
- │ API 代理 → Engine (:3456) │
112
- └───────────────────────────────┘
113
103
  ```
114
104
 
115
105
  ## CLI 命令
@@ -117,8 +107,8 @@ docs/
117
107
  ```bash
118
108
  jarvis [path] # 引导安装(交互式选择全局/项目)
119
109
  jarvis init [path] -y # 初始化项目
120
- jarvis add <claude|opencode|codex> # 添加平台
121
- jarvis remove <platform> [path] # 移除平台
110
+ jarvis add claude # 添加平台
111
+ jarvis remove claude [path] # 移除平台
122
112
  jarvis upgrade [path] # 智能升级(只覆盖变更文件)
123
113
  jarvis diff [path] # 预览待更新文件
124
114
  jarvis doctor [path] # 健康检查
@@ -172,7 +162,7 @@ GITHUB_TOKEN=xxx # GitHub 个人访问令牌(sync-github-releases 需要
172
162
  | 归档记录 | `#/archive` | 已归档运行记录 · 按任务名搜索过滤 · 恢复到看板 · 永久删除 |
173
163
  | 智能体配置 | `#/agents` | MCP 接入指示 · Agent 搜索/筛选 · 模型/思考等级配置 · 文件同步 |
174
164
 
175
- 侧边栏实时显示各平台(Claude Code / OpenCode / Codex)的 MCP 连接状态:绿点 = 已接入,灰点 = 未接入。
165
+ 侧边栏实时显示 Claude Code MCP 连接状态:绿点 = 已接入,灰点 = 未接入。
176
166
 
177
167
  ### 会话管理操作
178
168
 
@@ -205,8 +195,6 @@ test-doc-writer → test-executor → fix-retest
205
195
  | 平台 | 配置文件 | Transport | 说明 |
206
196
  |------|---------|-----------|------|
207
197
  | **Claude Code** | `.mcp.json` | `type: stdio` → 自动拉起 `jarvis engine start --stdio` |
208
- | **OpenCode** | `opencode.json` | `type: local` → 自动拉起 `jarvis engine start --stdio` |
209
- | **Codex** | `.codex/config.toml` | `url = "localhost:3456/mcp"` → 需引擎已运行 |
210
198
 
211
199
  ### Visual Primitives MCP(推荐,纯文本模型必备)
212
200
 
@@ -266,37 +254,35 @@ test-doc-writer → test-executor → fix-retest
266
254
  Gate 0 Gate A Gate B Gate C Gate C Gate C1 Gate C1.5 Gate C2 Gate D Gate E
267
255
  ```
268
256
 
269
- ## 平台入口速查
270
-
271
- > **仅 Claude Code 可用**。OpenCode / Codex 列仅供参考历史配置,实际不可用。
272
-
273
- | 领域 | Claude Code(✅ 可用) | OpenCode(⛔ 不可用) | Codex(⛔ 不可用) |
274
- |------|-----------|----------|-------|
275
- | 全栈 | `/jarvis` | `--agent jarvis` | `jarvis` skill |
276
- | 前端 | `/frontend` | `--agent frontend` | `frontend` skill |
277
- | 后端 | `/backend` | `--agent backend` | `backend` skill |
278
- | Android | `/android` | `--agent android` | `android` skill |
279
- | iOS | `/ios` | `--agent ios` | `ios` skill |
280
- | Flutter | `/flutter` | `--agent flutter` | `flutter` skill |
281
- | Expo | `/expo` | `--agent expo` | `expo` skill |
282
- | Taro | `/taro` | `--agent taro` | `taro` skill |
283
- | 审查 | `/review` | `--agent review-only` | `review-only` skill |
284
- | 修复闭环 | `/review-fix` | `--agent review-fix-optimize` | `review-fix-optimize` skill |
285
- | 浏览器测试 | `/browser-test` | spawn browser-test-worker | `browser-test` skill |
286
- | Bug 修复 | `/bug-fix` | spawn via orchestrator | `bug-fix` skill |
287
- | 算法专家 | `/algorithm-expert` | `--agent algorithm-expert` | `algorithm-expert` skill |
288
- | 前端架构 | `/frontend-architect` | `--agent frontend-architect` | `frontend-architect` skill |
289
- | 后端架构 | `/backend-architect` | `--agent backend-architect` | `backend-architect` skill |
257
+ ## 平台入口速查(Claude Code)
258
+
259
+ | 领域 | Claude Code |
260
+ |------|------------|
261
+ | 全栈 | `/jarvis` |
262
+ | 前端 | `/frontend` |
263
+ | 后端 | `/backend` |
264
+ | Android | `/android` |
265
+ | iOS | `/ios` |
266
+ | Flutter | `/flutter` |
267
+ | Expo | `/expo` |
268
+ | Taro | `/taro` |
269
+ | 审查 | `/review` |
270
+ | 修复闭环 | `/review-fix` |
271
+ | 浏览器测试 | `/browser-test` |
272
+ | Bug 修复 | `/bug-fix` |
273
+ | 算法专家 | `/algorithm-expert` |
274
+ | 前端架构 | `/frontend-architect` |
275
+ | 后端架构 | `/backend-architect` |
290
276
 
291
277
  ## 统计
292
278
 
293
- | | Claude Code | OpenCode | Codex |
294
- |---|:--:|:--:|:--:|
295
- | Agents | 88 | 55 | 45 |
296
- | Commands | 16 | 0 | 0 |
297
- | Skills | 29 | 27 | 42 |
298
- | 钩子 | settings.json | 原生插件 (.ts) | hooks.json |
299
- | MCP | `.mcp.json` | `opencode.json` | `.codex/config.toml` |
279
+ | | Claude Code |
280
+ |---|:--:|
281
+ | Agents | 88 |
282
+ | Commands | 16 |
283
+ | Skills | 29 |
284
+ | 钩子 | settings.json |
285
+ | MCP | `.mcp.json` |
300
286
 
301
287
  ## 引擎能力矩阵
302
288
 
package/bin/jarvis.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // npm 全局安装时生成 .cmd / .ps1 / bash 包装器;bash 包装器直接 exec 此文件,需 shebang。
3
- import { run } from '../dist/src/cli.js';
3
+ import { run } from '../dist/src/cli/index.js';
4
4
 
5
5
  run().catch(err => {
6
6
  console.error('❌', err.message);
package/dist/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "jarvis-agent-factory",
3
- "version": "3.43.0",
4
- "description": "Jarvis Agent Factory CLI — 跨平台多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code / OpenCode / Codex",
3
+ "version": "3.44.0",
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",
7
7
  "agent",
8
8
  "ai",
9
9
  "claude-code",
10
- "opencode",
11
- "codex",
12
10
  "multi-agent",
13
11
  "orchestration",
14
12
  "skills",
@@ -42,9 +40,9 @@
42
40
  "typecheck": "tsc --noEmit",
43
41
  "build": "tsc && node -e \"import{cpSync}from'fs';cpSync('package.json','dist/package.json');cpSync('src/templates','dist/src/templates',{recursive:true})\"",
44
42
  "build:web": "cd web && npm run build",
45
- "dev": "tsx src/cli.ts",
46
- "jarvis": "node dist/src/cli.js",
47
- "jarvis:dev": "tsx src/cli.ts",
43
+ "dev": "tsx src/cli/index.ts",
44
+ "jarvis": "node dist/src/cli/index.js",
45
+ "jarvis:dev": "tsx src/cli/index.ts",
48
46
  "check": "npm run lint && npm run typecheck && npm run test",
49
47
  "prepare": "husky",
50
48
  "install:browser-use": "pip install --user browser-use"
@@ -0,0 +1,6 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis add <platform...> [path] — 向项目添加指定平台配置
4
+ * 若不指定平台参数,则默认安装全部平台(与 init 行为一致)
5
+ */
6
+ export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,48 @@
1
+ import { install } from '../../install.js';
2
+ import { resolveScope } from '../utils/scope.js';
3
+ import { resolveTarget } from '../utils/resolve.js';
4
+ import { PLATFORMS, ALL_PLATFORMS, PKG_ROOT } from '../utils/constants.js';
5
+ /**
6
+ * jarvis add <platform...> [path] — 向项目添加指定平台配置
7
+ * 若不指定平台参数,则默认安装全部平台(与 init 行为一致)
8
+ */
9
+ export async function execute(opts, positional) {
10
+ const platforms = [];
11
+ let path = '.';
12
+ for (let i = 1; i < positional.length; i++) {
13
+ const p = positional[i];
14
+ if (PLATFORMS[p]) {
15
+ platforms.push(p);
16
+ }
17
+ else if (!p.startsWith('-')) {
18
+ path = p;
19
+ }
20
+ }
21
+ if (platforms.length === 0) {
22
+ if (positional.length === 1) {
23
+ // 无平台参数时默认安装全部平台
24
+ platforms.push(...ALL_PLATFORMS);
25
+ }
26
+ else {
27
+ console.error('\n❌ No valid platform specified.\n');
28
+ console.log(`Valid platforms: ${ALL_PLATFORMS.join(', ')}\n`);
29
+ return;
30
+ }
31
+ }
32
+ const isGlobal = await resolveScope(opts);
33
+ const target = resolveTarget(path, isGlobal);
34
+ const scope = isGlobal ? '~ (全局)' : target;
35
+ console.log(`\n📦 Adding to ${scope}\n`);
36
+ for (const name of platforms) {
37
+ await install({
38
+ platform: name,
39
+ target,
40
+ pkgRoot: PKG_ROOT,
41
+ platforms: PLATFORMS,
42
+ force: opts.yes,
43
+ global: isGlobal,
44
+ });
45
+ }
46
+ console.log(`\n✅ Done!\n`);
47
+ }
48
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAoB;IAC/D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,GAAG,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,iBAAiB;YACjB,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM;YACN,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis diff [path] — 预览升级变更(不实际执行)
4
+ */
5
+ export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,78 @@
1
+ import { resolve, join } from 'node:path';
2
+ import { existsSync, readdirSync, statSync, readFileSync } from 'node:fs';
3
+ import { createHash } from 'node:crypto';
4
+ import { homedir } from 'node:os';
5
+ import { resolveScope } from '../utils/scope.js';
6
+ import { resolveTarget } from '../utils/resolve.js';
7
+ import { PLATFORMS, ALL_PLATFORMS, PKG_ROOT } from '../utils/constants.js';
8
+ import { getHashFilePath } from '../../hash-paths.js';
9
+ /**
10
+ * 对比单个平台模板与已安装文件的差异
11
+ */
12
+ async function diffPlatform(platform, target, isGlobal) {
13
+ const srcRoot = resolve(PKG_ROOT, 'dist/src', 'templates', 'platforms', platform);
14
+ const destRoot = isGlobal
15
+ ? (platform === 'opencode'
16
+ ? resolve(homedir(), '.config', 'opencode')
17
+ : resolve(homedir(), `.${platform}`))
18
+ : resolve(target, PLATFORMS[platform].dir);
19
+ if (!existsSync(srcRoot))
20
+ return;
21
+ const hashFile = getHashFilePath(target, isGlobal);
22
+ const hashes = existsSync(hashFile)
23
+ ? JSON.parse(readFileSync(hashFile, 'utf-8'))
24
+ : {};
25
+ const hash = (f) => createHash('sha256').update(readFileSync(f)).digest('hex');
26
+ let changed = 0;
27
+ for (const bucket of ['agents', 'commands', 'skills']) {
28
+ const sd = join(srcRoot, bucket);
29
+ const dd = join(destRoot, bucket);
30
+ if (!existsSync(sd) || !existsSync(dd))
31
+ continue;
32
+ for (const entry of readdirSync(sd)) {
33
+ const sp = join(sd, entry);
34
+ const dp = join(dd, entry);
35
+ if (statSync(sp).isDirectory())
36
+ continue;
37
+ const rel = `${bucket}/${entry}`;
38
+ const newHash = hash(sp);
39
+ if (!existsSync(dp)) {
40
+ if (changed < 20)
41
+ console.log(` + ${rel.padEnd(30)} (new)`);
42
+ changed++;
43
+ continue;
44
+ }
45
+ const oldHash = hashes[dp];
46
+ if (newHash !== oldHash) {
47
+ if (changed < 20) {
48
+ const destHash = hash(dp);
49
+ const status = !oldHash || destHash === oldHash
50
+ ? 'update'
51
+ : 'skip (modified by user)';
52
+ console.log(` ~ ${rel.padEnd(30)} ${status}`);
53
+ }
54
+ changed++;
55
+ }
56
+ }
57
+ }
58
+ if (changed === 0) {
59
+ console.log(` ✅ ${platform.padEnd(10)} up to date`);
60
+ }
61
+ else if (changed > 20) {
62
+ console.log(` ... and ${changed - 20} more files`);
63
+ }
64
+ }
65
+ /**
66
+ * jarvis diff [path] — 预览升级变更(不实际执行)
67
+ */
68
+ export async function execute(opts, positional) {
69
+ const path = positional[1];
70
+ const isGlobal = await resolveScope(opts);
71
+ const target = resolveTarget(path, isGlobal);
72
+ console.log(`\n📋 检查变更预览 → ${isGlobal ? '~ (全局)' : target}\n`);
73
+ for (const name of ALL_PLATFORMS) {
74
+ await diffPlatform(name, target, isGlobal);
75
+ }
76
+ console.log(`\n💡 运行 \`jarvis upgrade\` 应用这些变更。\n`);
77
+ }
78
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,MAAc,EACd,QAAiB;IAEjB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElF,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU;YACxB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO;IAEjC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CACzB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7D,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAAE,SAAS;QAEjD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEzC,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,IAAI,OAAO,GAAG,EAAE;oBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC7D,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC1B,MAAM,MAAM,GACV,CAAC,OAAO,IAAI,QAAQ,KAAK,OAAO;wBAC9B,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,yBAAyB,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;SAAM,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,GAAG,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAoB;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAE/D,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis doctor [path] — 验证安装健康状态
4
+ * 别名: jarvis check
5
+ */
6
+ export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,20 @@
1
+ import { doctor } from '../../doctor.js';
2
+ import { resolveScope } from '../utils/scope.js';
3
+ import { resolveTarget } from '../utils/resolve.js';
4
+ import { PLATFORMS, PKG_ROOT } from '../utils/constants.js';
5
+ /**
6
+ * jarvis doctor [path] — 验证安装健康状态
7
+ * 别名: jarvis check
8
+ */
9
+ export async function execute(opts, positional) {
10
+ const path = positional[1];
11
+ const isGlobal = await resolveScope(opts);
12
+ const target = resolveTarget(path, isGlobal);
13
+ doctor({
14
+ target,
15
+ platforms: PLATFORMS,
16
+ pkgRoot: PKG_ROOT,
17
+ global: isGlobal,
18
+ });
19
+ }
20
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAoB;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE7C,MAAM,CAAC;QACL,MAAM;QACN,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * 执行引擎重启
4
+ *
5
+ * @param opts - CLI 选项(未使用,保留接口一致性)
6
+ * @param positional - 位置参数数组,第二项及以后为子命令参数
7
+ */
8
+ export declare function executeRestart(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * engine restart 子命令:停止引擎后重新启动
3
+ *
4
+ * 流程:
5
+ * 1. 调用 stopEngine 停止当前引擎
6
+ * 2. 等待端口释放
7
+ * 3. 调用 startEngine 重新启动
8
+ */
9
+ import { stopEngine, startEngine } from '../../engine/server.js';
10
+ /**
11
+ * 执行引擎重启
12
+ *
13
+ * @param opts - CLI 选项(未使用,保留接口一致性)
14
+ * @param positional - 位置参数数组,第二项及以后为子命令参数
15
+ */
16
+ export async function executeRestart(opts, positional) {
17
+ console.log('Restarting Jarvis Engine...');
18
+ // 解析参数:跳过 "engine" 和 "restart"
19
+ const args = positional.slice(2);
20
+ const port = parseInt(args.find(a => a.startsWith('--port='))?.split('=')[1] ||
21
+ process.env.PORT ||
22
+ '3456');
23
+ const stdio = args.includes('--stdio');
24
+ const projectRoot = args.find(a => !a.startsWith('-') && a !== '--stdio') || '.';
25
+ // 1. 停止当前引擎
26
+ stopEngine();
27
+ // 2. 等待端口释放(500ms 缓冲)
28
+ await new Promise(resolve => setTimeout(resolve, 500));
29
+ // 3. 重新启动
30
+ await startEngine({
31
+ port,
32
+ stdio,
33
+ projectRoot,
34
+ });
35
+ }
36
+ //# sourceMappingURL=engine-restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-restart.js","sourceRoot":"","sources":["../../../../src/cli/commands/engine-restart.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGjE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAa,EAAE,UAAoB;IACtE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,+BAA+B;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,QAAQ,CACnB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,IAAI;QAChB,MAAM,CACT,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAC3C,IAAI,GAAG,CAAC;IAET,YAAY;IACZ,UAAU,EAAE,CAAC;IAEb,sBAAsB;IACtB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEvD,UAAU;IACV,MAAM,WAAW,CAAC;QAChB,IAAI;QACJ,KAAK;QACL,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * 查询并显示引擎状态
4
+ *
5
+ * @param opts - CLI 选项(未使用,保留接口一致性)
6
+ * @param positional - 位置参数数组(未使用)
7
+ */
8
+ export declare function executeStatus(_opts: CliOpts, _positional: string[]): void;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * engine status 子命令:返回引擎运行状态、PID、运行时长、重启次数
3
+ *
4
+ * 通过 guardian PID JSON 文件获取详细信息。
5
+ */
6
+ import { readPidFile, isEngineRunning } from '../../engine/guardian.js';
7
+ /**
8
+ * 格式化秒数为人类可读的持续时间字符串
9
+ *
10
+ * @param seconds - 总秒数
11
+ * @returns 格式化后的字符串(如 "2h 30m 5s")
12
+ */
13
+ function formatUptime(seconds) {
14
+ const h = Math.floor(seconds / 3600);
15
+ const m = Math.floor((seconds % 3600) / 60);
16
+ const s = seconds % 60;
17
+ const parts = [];
18
+ if (h > 0)
19
+ parts.push(`${h}h`);
20
+ if (m > 0 || h > 0)
21
+ parts.push(`${m}m`);
22
+ parts.push(`${s}s`);
23
+ return parts.join(' ');
24
+ }
25
+ /**
26
+ * 查询并显示引擎状态
27
+ *
28
+ * @param opts - CLI 选项(未使用,保留接口一致性)
29
+ * @param positional - 位置参数数组(未使用)
30
+ */
31
+ export function executeStatus(_opts, _positional) {
32
+ const data = readPidFile();
33
+ if (!data) {
34
+ console.log('Engine: not running');
35
+ return;
36
+ }
37
+ if (isEngineRunning()) {
38
+ const uptime = Math.floor((Date.now() - data.startedAt) / 1000);
39
+ console.log('Engine Status:');
40
+ console.log(` Status: running`);
41
+ console.log(` PID: ${data.pid}`);
42
+ console.log(` Uptime: ${formatUptime(uptime)}`);
43
+ console.log(` Restarts: ${data.restartCount}`);
44
+ console.log(` Started: ${new Date(data.startedAt).toISOString()}`);
45
+ }
46
+ else {
47
+ console.log(`Engine: not running (stale PID ${data.pid})`);
48
+ }
49
+ }
50
+ //# sourceMappingURL=engine-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-status.js","sourceRoot":"","sources":["../../../../src/cli/commands/engine-status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGxE;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,WAAqB;IACjE,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis engine <start|stop|restart|status> — 管理 MCP 编排引擎
4
+ * jarvis web [--port=N] — 启动 Web 面板(≡ engine start)
5
+ */
6
+ export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
7
+ /**
8
+ * jarvis web [--port=N] — Web 面板快捷命令
9
+ * 底层复用 engine start,无需独立实现
10
+ */
11
+ export declare function executeWeb(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,47 @@
1
+ import { startEngine, stopEngine } from '../../engine/server.js';
2
+ import { executeRestart } from './engine-restart.js';
3
+ import { executeStatus } from './engine-status.js';
4
+ /**
5
+ * jarvis engine <start|stop|restart|status> — 管理 MCP 编排引擎
6
+ * jarvis web [--port=N] — 启动 Web 面板(≡ engine start)
7
+ */
8
+ export async function execute(opts, positional) {
9
+ const sub = positional[1];
10
+ if (sub === 'start') {
11
+ const port = parseInt(positional.find(a => a.startsWith('--port='))?.split('=')[1] ||
12
+ process.env.PORT ||
13
+ '3456');
14
+ const stdio = positional.includes('--stdio');
15
+ await startEngine({
16
+ port,
17
+ stdio,
18
+ projectRoot: positional.find(a => !a.startsWith('-') &&
19
+ a !== 'start' &&
20
+ a !== 'engine' &&
21
+ a !== '--stdio') || '.',
22
+ });
23
+ }
24
+ else if (sub === 'stop') {
25
+ stopEngine();
26
+ }
27
+ else if (sub === 'restart') {
28
+ await executeRestart(opts, positional);
29
+ }
30
+ else if (sub === 'status') {
31
+ executeStatus(opts, positional);
32
+ }
33
+ else {
34
+ console.log('\nUsage: jarvis engine <start|stop|restart|status> [--port=<N>]\n');
35
+ }
36
+ }
37
+ /**
38
+ * jarvis web [--port=N] — Web 面板快捷命令
39
+ * 底层复用 engine start,无需独立实现
40
+ */
41
+ export async function executeWeb(opts, positional) {
42
+ const port = parseInt(positional.find(a => a.startsWith('--port='))?.split('=')[1] ||
43
+ process.env.WEB_PORT ||
44
+ '3456');
45
+ await startEngine({ port, projectRoot: '.' });
46
+ }
47
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../src/cli/commands/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAoB;IAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,QAAQ,CACnB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,IAAI;YAChB,MAAM,CACT,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,WAAW,CAAC;YAChB,IAAI;YACJ,KAAK;YACL,WAAW,EACT,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAClB,CAAC,KAAK,OAAO;gBACb,CAAC,KAAK,QAAQ;gBACd,CAAC,KAAK,SAAS,CAClB,IAAI,GAAG;SACX,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,CAAC;IACf,CAAC;SAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAa,EAAE,UAAoB;IAClE,MAAM,IAAI,GAAG,QAAQ,CACnB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,QAAQ;QACpB,MAAM,CACT,CAAC;IACF,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis hook <subcommand...> — 执行钩子命令
4
+ * 委托到 src/hook.ts 的 hookCommand 函数
5
+ */
6
+ export declare function execute(_opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { hookCommand } from '../../hook.js';
2
+ /**
3
+ * jarvis hook <subcommand...> — 执行钩子命令
4
+ * 委托到 src/hook.ts 的 hookCommand 函数
5
+ */
6
+ export async function execute(_opts, positional) {
7
+ await hookCommand(positional.slice(1));
8
+ }
9
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc,EAAE,UAAoB;IAChE,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CliOpts } from '../utils/args.js';
2
+ /**
3
+ * jarvis init [path] — 初始化项目配置(安装所有平台 + MCP)
4
+ * jarvis (无参数) — 等同于 jarvis init .
5
+ */
6
+ export declare function execute(opts: CliOpts, positional: string[]): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { install } from '../../install.js';
2
+ import { resolveScope } from '../utils/scope.js';
3
+ import { resolveTarget } from '../utils/resolve.js';
4
+ import { PLATFORMS, ALL_PLATFORMS, PKG_ROOT, PKG_VERSION, PKG_NAME } from '../utils/constants.js';
5
+ import { checkLatest, semverGt } from '../utils/resolve.js';
6
+ /**
7
+ * jarvis init [path] — 初始化项目配置(安装所有平台 + MCP)
8
+ * jarvis (无参数) — 等同于 jarvis init .
9
+ */
10
+ export async function execute(opts, positional) {
11
+ const path = positional[1];
12
+ const isGlobal = await resolveScope(opts);
13
+ const target = resolveTarget(path, isGlobal);
14
+ const scope = isGlobal ? '~ (全局)' : target;
15
+ console.log(`\n🚀 Jarvis v${PKG_VERSION}\n`);
16
+ console.log(` Target: ${scope}\n`);
17
+ // 检查 CLI 自身更新
18
+ const latest = checkLatest();
19
+ if (latest && semverGt(latest, PKG_VERSION)) {
20
+ console.log(` Update available: ${PKG_NAME} v${PKG_VERSION} → v${latest}`);
21
+ console.log(` npm i -g ${PKG_NAME}@latest\n`);
22
+ }
23
+ for (const name of ALL_PLATFORMS) {
24
+ await install({
25
+ platform: name,
26
+ target,
27
+ pkgRoot: PKG_ROOT,
28
+ platforms: PLATFORMS,
29
+ force: opts.yes,
30
+ global: isGlobal,
31
+ });
32
+ }
33
+ console.log(`\n✅ Done! \`jarvis doctor\` to verify.\n`);
34
+ }
35
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG5D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAoB;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;IAErC,cAAc;IACd,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,KAAK,WAAW,OAAO,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,OAAO,CAAC;YACZ,QAAQ,EAAE,IAAI;YACd,MAAM;YACN,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC"}