@su-record/vibe 2.16.3 → 3.0.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 (353) hide show
  1. package/.env.example +15 -0
  2. package/CLAUDE.md +8 -8
  3. package/README.en.md +46 -29
  4. package/README.md +41 -24
  5. package/agents/acceptance-tester.md +56 -0
  6. package/agents/architect.md +25 -67
  7. package/agents/build-error-resolver.md +28 -97
  8. package/agents/code-reviewer.md +89 -0
  9. package/agents/diagrammer.md +34 -165
  10. package/agents/documenter.md +43 -0
  11. package/agents/e2e-tester.md +46 -277
  12. package/agents/event/event-ops.md +54 -77
  13. package/agents/event/event-planner.md +63 -0
  14. package/agents/figma/figma-engineer.md +76 -0
  15. package/agents/implementer.md +26 -41
  16. package/agents/security-reviewer.md +56 -0
  17. package/agents/tester.md +37 -33
  18. package/agents/ui/design-reviewer.md +62 -0
  19. package/agents/ui/design-system-gen.md +63 -0
  20. package/dist/__tests__/agent-model-sync.test.d.ts +2 -0
  21. package/dist/__tests__/agent-model-sync.test.d.ts.map +1 -0
  22. package/dist/__tests__/agent-model-sync.test.js +71 -0
  23. package/dist/__tests__/agent-model-sync.test.js.map +1 -0
  24. package/dist/cli/auth.d.ts.map +1 -1
  25. package/dist/cli/auth.js +8 -1
  26. package/dist/cli/auth.js.map +1 -1
  27. package/dist/cli/commands/index.d.ts +1 -0
  28. package/dist/cli/commands/index.d.ts.map +1 -1
  29. package/dist/cli/commands/index.js +1 -0
  30. package/dist/cli/commands/index.js.map +1 -1
  31. package/dist/cli/commands/info.d.ts.map +1 -1
  32. package/dist/cli/commands/info.js +2 -0
  33. package/dist/cli/commands/info.js.map +1 -1
  34. package/dist/cli/commands/llm.d.ts +11 -0
  35. package/dist/cli/commands/llm.d.ts.map +1 -0
  36. package/dist/cli/commands/llm.js +62 -0
  37. package/dist/cli/commands/llm.js.map +1 -0
  38. package/dist/cli/commands/remove.d.ts.map +1 -1
  39. package/dist/cli/commands/remove.js +8 -10
  40. package/dist/cli/commands/remove.js.map +1 -1
  41. package/dist/cli/commands/setup.d.ts.map +1 -1
  42. package/dist/cli/commands/setup.js +35 -1
  43. package/dist/cli/commands/setup.js.map +1 -1
  44. package/dist/cli/index.d.ts +0 -4
  45. package/dist/cli/index.d.ts.map +1 -1
  46. package/dist/cli/index.js +59 -6
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/llm/config.d.ts.map +1 -1
  49. package/dist/cli/llm/config.js +7 -0
  50. package/dist/cli/llm/config.js.map +1 -1
  51. package/dist/cli/llm/index.d.ts +1 -0
  52. package/dist/cli/llm/index.d.ts.map +1 -1
  53. package/dist/cli/llm/index.js +1 -0
  54. package/dist/cli/llm/index.js.map +1 -1
  55. package/dist/cli/llm/model-refresh.d.ts +29 -0
  56. package/dist/cli/llm/model-refresh.d.ts.map +1 -0
  57. package/dist/cli/llm/model-refresh.js +139 -0
  58. package/dist/cli/llm/model-refresh.js.map +1 -0
  59. package/dist/cli/llm/zai-commands.d.ts +15 -0
  60. package/dist/cli/llm/zai-commands.d.ts.map +1 -0
  61. package/dist/cli/llm/zai-commands.js +64 -0
  62. package/dist/cli/llm/zai-commands.js.map +1 -0
  63. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  64. package/dist/cli/postinstall/claude-agents.js +16 -77
  65. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  66. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  67. package/dist/cli/postinstall/constants.js +81 -296
  68. package/dist/cli/postinstall/constants.js.map +1 -1
  69. package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
  70. package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
  71. package/dist/cli/postinstall/cursor-agents.js +26 -68
  72. package/dist/cli/postinstall/cursor-agents.js.map +1 -1
  73. package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
  74. package/dist/cli/postinstall/cursor-skills.js +26 -30
  75. package/dist/cli/postinstall/cursor-skills.js.map +1 -1
  76. package/dist/cli/postinstall/main.d.ts.map +1 -1
  77. package/dist/cli/postinstall/main.js +0 -2
  78. package/dist/cli/postinstall/main.js.map +1 -1
  79. package/dist/cli/setup/Provisioner.d.ts.map +1 -1
  80. package/dist/cli/setup/Provisioner.js +19 -21
  81. package/dist/cli/setup/Provisioner.js.map +1 -1
  82. package/dist/cli/types.d.ts +15 -0
  83. package/dist/cli/types.d.ts.map +1 -1
  84. package/dist/cli/utils.d.ts +4 -1
  85. package/dist/cli/utils.d.ts.map +1 -1
  86. package/dist/cli/utils.js +4 -1
  87. package/dist/cli/utils.js.map +1 -1
  88. package/dist/infra/lib/FrameworkDetector.js +4 -4
  89. package/dist/infra/lib/FrameworkDetector.js.map +1 -1
  90. package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
  91. package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
  92. package/dist/infra/lib/browser/launch.js +1 -1
  93. package/dist/infra/lib/browser/launch.js.map +1 -1
  94. package/dist/infra/lib/browser/types.d.ts +1 -1
  95. package/dist/infra/lib/browser/types.js +1 -1
  96. package/dist/infra/lib/config/GlobalConfigManager.d.ts +2 -0
  97. package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
  98. package/dist/infra/lib/config/GlobalConfigManager.js +6 -0
  99. package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
  100. package/dist/infra/lib/constants.d.ts +1 -1
  101. package/dist/infra/lib/constants.d.ts.map +1 -1
  102. package/dist/infra/lib/constants.js +4 -5
  103. package/dist/infra/lib/constants.js.map +1 -1
  104. package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
  105. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
  106. package/dist/infra/lib/llm-availability.d.ts +4 -0
  107. package/dist/infra/lib/llm-availability.d.ts.map +1 -1
  108. package/dist/infra/lib/llm-availability.js +9 -1
  109. package/dist/infra/lib/llm-availability.js.map +1 -1
  110. package/dist/infra/lib/memory/index.d.ts +0 -2
  111. package/dist/infra/lib/memory/index.d.ts.map +1 -1
  112. package/dist/infra/lib/memory/index.js +0 -2
  113. package/dist/infra/lib/memory/index.js.map +1 -1
  114. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
  115. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
  116. package/dist/infra/lib/zai/client.d.ts +30 -0
  117. package/dist/infra/lib/zai/client.d.ts.map +1 -0
  118. package/dist/infra/lib/zai/client.js +124 -0
  119. package/dist/infra/lib/zai/client.js.map +1 -0
  120. package/dist/infra/lib/zai/index.d.ts +11 -0
  121. package/dist/infra/lib/zai/index.d.ts.map +1 -0
  122. package/dist/infra/lib/zai/index.js +10 -0
  123. package/dist/infra/lib/zai/index.js.map +1 -0
  124. package/dist/infra/lib/zai/orchestration.d.ts +15 -0
  125. package/dist/infra/lib/zai/orchestration.d.ts.map +1 -0
  126. package/dist/infra/lib/zai/orchestration.js +54 -0
  127. package/dist/infra/lib/zai/orchestration.js.map +1 -0
  128. package/dist/infra/lib/zai/types.d.ts +40 -0
  129. package/dist/infra/lib/zai/types.d.ts.map +1 -0
  130. package/dist/infra/lib/zai/types.js +5 -0
  131. package/dist/infra/lib/zai/types.js.map +1 -0
  132. package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
  133. package/dist/infra/orchestrator/SmartRouter.js +16 -34
  134. package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
  135. package/dist/infra/orchestrator/index.d.ts +1 -0
  136. package/dist/infra/orchestrator/index.d.ts.map +1 -1
  137. package/dist/infra/orchestrator/index.js +11 -9
  138. package/dist/infra/orchestrator/index.js.map +1 -1
  139. package/dist/infra/orchestrator/types.d.ts +32 -9
  140. package/dist/infra/orchestrator/types.d.ts.map +1 -1
  141. package/dist/infra/orchestrator/types.js +68 -37
  142. package/dist/infra/orchestrator/types.js.map +1 -1
  143. package/dist/infra/orchestrator/types.test.d.ts +2 -0
  144. package/dist/infra/orchestrator/types.test.d.ts.map +1 -0
  145. package/dist/infra/orchestrator/types.test.js +57 -0
  146. package/dist/infra/orchestrator/types.test.js.map +1 -0
  147. package/dist/tools/index.d.ts +0 -4
  148. package/dist/tools/index.d.ts.map +1 -1
  149. package/dist/tools/index.js +0 -4
  150. package/dist/tools/index.js.map +1 -1
  151. package/dist/tools/memory/autoSaveContext.d.ts +0 -1
  152. package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
  153. package/dist/tools/memory/autoSaveContext.js +13 -27
  154. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  155. package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
  156. package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
  157. package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
  158. package/hooks/scripts/__tests__/step-counter.test.js +1 -1
  159. package/hooks/scripts/code-check.js +16 -203
  160. package/hooks/scripts/context-save.js +0 -11
  161. package/hooks/scripts/lib/scope-from-spec.js +9 -6
  162. package/hooks/scripts/llm-orchestrate.js +49 -0
  163. package/hooks/scripts/post-edit-dispatcher.js +1 -1
  164. package/hooks/scripts/prompt-dispatcher.js +7 -18
  165. package/hooks/scripts/session-start.js +25 -35
  166. package/package.json +4 -4
  167. package/skills/agents-md/SKILL.md +62 -15
  168. package/skills/arch-guard/SKILL.md +1 -1
  169. package/skills/brand-assets/SKILL.md +2 -2
  170. package/skills/capability-loop/SKILL.md +1 -1
  171. package/skills/chub-usage/SKILL.md +1 -1
  172. package/skills/commerce-patterns/SKILL.md +2 -2
  173. package/skills/commit-push-pr/SKILL.md +0 -1
  174. package/skills/context7-usage/SKILL.md +1 -1
  175. package/skills/create-prd/agents/edge-case-finder.md +4 -4
  176. package/skills/create-prd/agents/prioritizer.md +4 -4
  177. package/skills/create-prd/agents/requirements-writer.md +3 -3
  178. package/skills/create-prd/agents/researcher.md +3 -3
  179. package/skills/create-prd/agents/reviewer.md +3 -3
  180. package/skills/create-prd/orchestrator.md +2 -0
  181. package/skills/design-refine/SKILL.md +140 -0
  182. package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
  183. package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
  184. package/skills/design-review/SKILL.md +143 -0
  185. package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
  186. package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
  187. package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
  188. package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
  189. package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
  190. package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
  191. package/skills/{design-audit → design-review}/orchestrator.md +5 -3
  192. package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
  193. package/skills/{design-audit → design-review}/templates/report.md +3 -3
  194. package/skills/design-teach/SKILL.md +11 -11
  195. package/skills/docs/SKILL.md +14 -16
  196. package/skills/e2e-commerce/SKILL.md +1 -1
  197. package/skills/event-comms/SKILL.md +1 -1
  198. package/skills/event-ops/SKILL.md +2 -2
  199. package/skills/event-planning/SKILL.md +1 -1
  200. package/skills/exec-plan/SKILL.md +2 -2
  201. package/skills/exec-plan/orchestrator.md +2 -0
  202. package/skills/figma/SKILL.md +240 -148
  203. package/skills/figma/rubrics/css-mapping.md +125 -0
  204. package/skills/git-worktree/SKILL.md +1 -1
  205. package/skills/handoff/SKILL.md +1 -1
  206. package/skills/parallel-research/SKILL.md +14 -28
  207. package/skills/parallel-research/orchestrator.md +2 -0
  208. package/skills/priority-todos/SKILL.md +1 -1
  209. package/skills/regress/SKILL.md +11 -0
  210. package/skills/restraint/SKILL.md +72 -0
  211. package/skills/seo-checklist/SKILL.md +2 -2
  212. package/skills/spec/SKILL.md +65 -836
  213. package/skills/test/SKILL.md +3 -3
  214. package/skills/tool-fallback/SKILL.md +2 -2
  215. package/skills/vercel-react-best-practices/SKILL.md +1 -1
  216. package/skills/vibe/SKILL.md +20 -35
  217. package/skills/vibe.analyze/SKILL.md +7 -9
  218. package/skills/vibe.docs/SKILL.md +1 -1
  219. package/skills/vibe.event/SKILL.md +27 -27
  220. package/skills/vibe.figma/SKILL.md +14 -18
  221. package/skills/vibe.harness/SKILL.md +5 -5
  222. package/skills/vibe.llm/SKILL.md +50 -0
  223. package/skills/vibe.reason/SKILL.md +0 -2
  224. package/skills/vibe.review/SKILL.md +45 -49
  225. package/skills/vibe.run/SKILL.md +2 -5
  226. package/skills/vibe.run/references/parallel-agents.md +33 -98
  227. package/skills/vibe.spec/SKILL.md +38 -535
  228. package/skills/vibe.utils/SKILL.md +3 -3
  229. package/skills/vibe.verify/SKILL.md +70 -542
  230. package/skills/video-production/SKILL.md +1 -1
  231. package/vibe/rules/orchestrator-contract.md +57 -0
  232. package/vibe/rules/quality/performance.md +1 -1
  233. package/vibe/templates/claudemd-template.md +1 -1
  234. package/vibe/templates/spec-template.md +35 -185
  235. package/agents/architect-low.md +0 -41
  236. package/agents/architect-medium.md +0 -59
  237. package/agents/compounder.md +0 -261
  238. package/agents/docs/api-documenter.md +0 -99
  239. package/agents/docs/changelog-writer.md +0 -93
  240. package/agents/event/event-comms.md +0 -78
  241. package/agents/event/event-content.md +0 -68
  242. package/agents/event/event-image.md +0 -95
  243. package/agents/event/event-scheduler.md +0 -69
  244. package/agents/event/event-speaker.md +0 -86
  245. package/agents/explorer-low.md +0 -42
  246. package/agents/explorer-medium.md +0 -59
  247. package/agents/explorer.md +0 -48
  248. package/agents/figma/figma-analyst.md +0 -52
  249. package/agents/figma/figma-architect.md +0 -112
  250. package/agents/figma/figma-auditor.md +0 -82
  251. package/agents/figma/figma-builder.md +0 -100
  252. package/agents/implementer-low.md +0 -43
  253. package/agents/implementer-medium.md +0 -52
  254. package/agents/junior-mentor.md +0 -141
  255. package/agents/planning/requirements-analyst.md +0 -84
  256. package/agents/planning/ux-advisor.md +0 -83
  257. package/agents/qa/acceptance-tester.md +0 -86
  258. package/agents/qa/edge-case-finder.md +0 -93
  259. package/agents/qa/qa-coordinator.md +0 -131
  260. package/agents/refactor-cleaner.md +0 -143
  261. package/agents/research/best-practices.md +0 -199
  262. package/agents/research/codebase-patterns.md +0 -157
  263. package/agents/research/framework-docs.md +0 -188
  264. package/agents/research/security-advisory.md +0 -213
  265. package/agents/review/architecture-reviewer.md +0 -107
  266. package/agents/review/complexity-reviewer.md +0 -116
  267. package/agents/review/data-integrity-reviewer.md +0 -88
  268. package/agents/review/git-history-reviewer.md +0 -103
  269. package/agents/review/performance-reviewer.md +0 -86
  270. package/agents/review/python-reviewer.md +0 -150
  271. package/agents/review/rails-reviewer.md +0 -139
  272. package/agents/review/react-reviewer.md +0 -144
  273. package/agents/review/security-reviewer.md +0 -80
  274. package/agents/review/simplicity-reviewer.md +0 -140
  275. package/agents/review/test-coverage-reviewer.md +0 -116
  276. package/agents/review/typescript-reviewer.md +0 -127
  277. package/agents/searcher.md +0 -54
  278. package/agents/simplifier.md +0 -120
  279. package/agents/teams/debug-team.md +0 -70
  280. package/agents/teams/dev-team.md +0 -88
  281. package/agents/teams/docs-team.md +0 -80
  282. package/agents/teams/figma-team.md +0 -85
  283. package/agents/teams/fullstack-team.md +0 -83
  284. package/agents/teams/lite-team.md +0 -69
  285. package/agents/teams/migration-team.md +0 -78
  286. package/agents/teams/refactor-team.md +0 -94
  287. package/agents/teams/research-team.md +0 -86
  288. package/agents/teams/review-debate-team.md +0 -125
  289. package/agents/teams/security-team.md +0 -81
  290. package/agents/ui/ui-a11y-auditor.md +0 -93
  291. package/agents/ui/ui-antipattern-detector.md +0 -102
  292. package/agents/ui/ui-dataviz-advisor.md +0 -69
  293. package/agents/ui/ui-design-system-gen.md +0 -57
  294. package/agents/ui/ui-industry-analyzer.md +0 -49
  295. package/agents/ui/ui-layout-architect.md +0 -65
  296. package/agents/ui/ui-stack-implementer.md +0 -68
  297. package/agents/ui/ux-compliance-reviewer.md +0 -81
  298. package/agents/ui-previewer.md +0 -258
  299. package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
  300. package/hooks/scripts/keyword-detector.js +0 -226
  301. package/skills/characterization-test/SKILL.md +0 -209
  302. package/skills/characterization-test/agents/behavior-capturer.md +0 -50
  303. package/skills/characterization-test/agents/coverage-checker.md +0 -54
  304. package/skills/characterization-test/agents/reporter.md +0 -50
  305. package/skills/characterization-test/agents/test-writer.md +0 -49
  306. package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
  307. package/skills/characterization-test/templates/test-template.ts +0 -101
  308. package/skills/claude-md-guide/SKILL.md +0 -353
  309. package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
  310. package/skills/design-audit/SKILL.md +0 -154
  311. package/skills/design-critique/SKILL.md +0 -140
  312. package/skills/design-distill/SKILL.md +0 -131
  313. package/skills/design-normalize/SKILL.md +0 -135
  314. package/skills/design-polish/SKILL.md +0 -132
  315. package/skills/figma-convert/SKILL.md +0 -236
  316. package/skills/figma-extract/SKILL.md +0 -242
  317. package/skills/interview/SKILL.md +0 -358
  318. package/skills/interview/checklists/api.md +0 -101
  319. package/skills/interview/checklists/feature.md +0 -88
  320. package/skills/interview/checklists/library.md +0 -95
  321. package/skills/interview/checklists/mobile.md +0 -89
  322. package/skills/interview/checklists/webapp.md +0 -97
  323. package/skills/interview/checklists/website.md +0 -99
  324. package/skills/plan/SKILL.md +0 -254
  325. package/skills/rob-pike/SKILL.md +0 -66
  326. package/skills/spec/references/askuser-examples.md +0 -57
  327. package/skills/spec/references/example-session.md +0 -87
  328. package/skills/spec/references/templates.md +0 -194
  329. package/skills/spec-review/SKILL.md +0 -725
  330. package/skills/systematic-debugging/SKILL.md +0 -142
  331. package/skills/techdebt/SKILL.md +0 -126
  332. package/skills/techdebt/agents/analyzer.md +0 -50
  333. package/skills/techdebt/agents/fixer.md +0 -41
  334. package/skills/techdebt/agents/reviewer.md +0 -47
  335. package/skills/techdebt/agents/scanner.md +0 -44
  336. package/skills/techdebt/orchestrator.md +0 -70
  337. package/skills/techdebt/rubrics/severity.md +0 -51
  338. package/skills/techdebt/scripts/scan.js +0 -90
  339. package/skills/techdebt/templates/report.md +0 -86
  340. package/skills/typescript-advanced-types/SKILL.md +0 -68
  341. package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
  342. package/skills/yagni-ladder/SKILL.md +0 -90
  343. /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
  344. /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
  345. /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
  346. /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
  347. /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
  348. /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
  349. /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
  350. /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
  351. /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
  352. /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
  353. /package/skills/{figma-convert → figma}/templates/component.md +0 -0
@@ -1,54 +1,39 @@
1
- # Implementer Agent (Sonnet 4)
1
+ # Implementer Agent
2
2
 
3
- Core implementation specialist sub-agent.
3
+ Core implementation specialist — turns a SPEC or task description into working code.
4
4
 
5
5
  ## Role
6
6
 
7
- - Code implementation
8
- - File creation/modification
9
- - Refactoring
10
- - Bug fixes
7
+ - Feature implementation and component creation
8
+ - Bug fixes and refactoring
9
+ - Wiring new code into existing routes/exports/configuration
11
10
 
12
11
  ## Model
13
12
 
14
- **Sonnet 4** - Balance between implementation quality and speed
13
+ **Sonnet** implementation quality at loop speed
15
14
 
16
- ## Usage
15
+ ## Goal
17
16
 
18
- Call via Task tool:
19
- ```
20
- Task(model: "sonnet", prompt: "Implement according to SPEC")
21
- ```
17
+ Implement exactly what the task or SPEC asks for, following the patterns
18
+ already present in the codebase. Before writing code, look at how neighboring
19
+ code solves the same kind of problem (naming, error handling, test placement,
20
+ import style) and match it. Finish by self-verifying: the code compiles/
21
+ typechecks, lint passes, and any tests you touched run.
22
22
 
23
- ## Rules Reference
23
+ ## Constraints
24
24
 
25
- Must follow `~/.claude/vibe/rules/` (global):
25
+ Surgical precision every changed line traces to the request; no drive-by
26
+ refactoring, no scope creep. Respect project complexity limits (function ≤50
27
+ lines, nesting ≤3, params ≤5, cyclomatic ≤10) and the TypeScript rules (no
28
+ `any`/`as any`/`@ts-ignore`, explicit return types). No `console.log`, no
29
+ hardcoded magic values, no commented-out code. When removing code, delete only
30
+ what is provably unused (private/local scope); for exported or public-API
31
+ symbols, verify no dynamic usage first and flag rather than silently delete.
32
+ If the SPEC is ambiguous, state the assumption you picked instead of choosing
33
+ silently.
26
34
 
27
- - `core/development-philosophy.md` - Surgical precision
28
- - `standards/complexity-metrics.md` - Functions ≤20 lines, nesting ≤3 levels
29
- - `quality/checklist.md` - Quality checklist
35
+ ## Done
30
36
 
31
- ## Process
32
-
33
- 1. Review SPEC and exploration results
34
- 2. Create implementation plan
35
- 3. Write code (Edit/Write)
36
- 4. Self-validation
37
- 5. Return results
38
-
39
- ## Output
40
-
41
- ```markdown
42
- ## Implementation Results
43
-
44
- ### Created Files
45
- - src/components/LoginForm.tsx ✅
46
- - src/hooks/useLogin.ts ✅
47
-
48
- ### Modified Files
49
- - src/App.tsx (route added)
50
-
51
- ### Validation
52
- - TypeScript compile: ✅
53
- - Lint: ✅
54
- ```
37
+ - Requested behavior is implemented and reachable (routed/exported/registered)
38
+ - Build and typecheck pass; lint passes; touched tests pass
39
+ - Report lists created/modified files and any assumptions made
@@ -0,0 +1,56 @@
1
+ # Security Reviewer Agent
2
+
3
+ Security review through an attacker's lens — threat-model first, checklist second.
4
+
5
+ ## Role
6
+
7
+ - Threat-model changed code: entry points, trust boundaries, assets at risk
8
+ - Detect injection, authn/authz, and data-exposure vulnerabilities
9
+ - Verify dependency and configuration security
10
+
11
+ ## Model
12
+
13
+ **Sonnet** — accurate analysis for a quality gate
14
+
15
+ ## Goal
16
+
17
+ For the changed files, work out what an attacker could reach and what it would
18
+ cost. Identify the entry points (HTTP handlers, message consumers, file
19
+ parsers, CLI args), the trust boundary each input crosses, and the assets
20
+ behind them (credentials, PII, money, code execution). Then hunt the paths
21
+ that actually connect attacker-controlled input to those assets. Depth goes
22
+ where the threat model points — auth code gets more scrutiny than a logging
23
+ helper.
24
+
25
+ ## High-Signal Checks
26
+
27
+ - **Injection**: user input reaching SQL/NoSQL/shell/LDAP without
28
+ parameterization or escaping; `eval`/`exec`/`pickle` on untrusted data
29
+ - **AuthN**: password hashing (bcrypt/argon2, never plain or fast hashes),
30
+ brute-force/rate limiting, session fixation and expiry; secret comparisons
31
+ in constant time (`crypto.timingSafeEqual` — equal-length buffers required)
32
+ - **AuthZ**: every object access re-checks ownership/permission (IDOR);
33
+ privilege checks server-side, never trust client-supplied roles
34
+ - **Secrets & data exposure**: hardcoded keys/passwords, secrets or PII in
35
+ logs and error messages, stack traces reaching users, debug mode in prod
36
+ - **XSS/CSRF**: `innerHTML`/`dangerouslySetInnerHTML` with user data, missing
37
+ CSP; state-changing endpoints without CSRF token or SameSite cookies
38
+ - **SSRF & uploads**: user-supplied URLs fetched server-side; upload paths,
39
+ types, and sizes unvalidated
40
+ - **Dependencies**: known-vulnerable packages (`npm audit`, `pip-audit`,
41
+ `bundler-audit`) when the diff touches manifests
42
+
43
+ ## Constraints
44
+
45
+ Report-only, changed files (and code reachable from them) only. Every finding
46
+ names a concrete attack path — who sends what, and what they gain; skip
47
+ theoretical findings with no reachable input. Prioritize by exploitability ×
48
+ impact: P1 = remotely exploitable or credential/data compromise, P2 =
49
+ exploitable with preconditions, P3 = hardening. Propose the minimal fix at
50
+ each location, don't write it.
51
+
52
+ ## Done
53
+
54
+ - Entry points and trust boundaries of the diff stated in one short paragraph
55
+ - Findings as P1/P2/P3 with file:line, attack path, and concrete fix
56
+ - Explicit "no findings" verdict (with what was checked) when the diff is clean
package/agents/tester.md CHANGED
@@ -1,49 +1,53 @@
1
- # Tester Agent (Haiku 4.5)
1
+ # Tester Agent
2
2
 
3
- Test writing specialist sub-agent.
3
+ Test writing specialist — turns implemented code and Feature scenarios into a
4
+ test suite that would actually catch the bugs this code could have.
4
5
 
5
6
  ## Role
6
7
 
7
- - Test code writing
8
- - BDD Feature-based testing
9
- - Edge case validation
10
- - Test execution
8
+ - Test writing for implemented code, driven by `.vibe/features/*.feature` scenarios when present
9
+ - Edge-case and boundary-condition coverage
10
+ - Test execution and failure reporting
11
11
 
12
12
  ## Model
13
13
 
14
- **Haiku 4.5** - Fast test generation
14
+ **Haiku** fast test generation inside the run loop
15
15
 
16
- ## Usage
16
+ ## Goal
17
17
 
18
- Call via Task tool:
19
- ```
20
- Task(model: "haiku", prompt: "Write tests for the implemented code")
21
- ```
18
+ Write tests that verify the behavior the SPEC/Feature promises, then run them.
19
+ Cover the happy path once, error paths explicitly, and the boundaries where
20
+ this specific code can break. Prefer testing observable behavior over
21
+ implementation details; mock external dependencies only.
22
22
 
23
- ## Process
23
+ ## Edge-Case Heuristics
24
24
 
25
- 1. Check `.vibe/features/{feature-name}.feature`
26
- 2. Analyze implemented code
27
- 3. Write test cases
28
- 4. Run tests
29
- 5. Return results
25
+ Scan the code under test against these boundary families and test the ones
26
+ that apply they are where most real bugs live:
30
27
 
31
- ## Output
28
+ - **Input**: empty string / null / undefined; maximum-length input; special
29
+ characters (unicode, emoji, RTL, zero-width); numeric bounds (0, -1,
30
+ MAX_INT, NaN, Infinity); empty arrays/collections; deeply nested structures
31
+ - **State**: first-time use (no data/history); one item vs many; capacity
32
+ reached; concurrent modification (race conditions, lost updates);
33
+ interrupted operations (network drop, process kill); session expiry mid-flow
34
+ - **Environment**: slow network/offline; API timeout; clock skew, timezone
35
+ and locale differences (date/number formats); multiple tabs/instances
36
+ - **Data**: duplicates; circular references; type mismatches (string where
37
+ number expected); malformed/corrupt payloads; oversized inputs
32
38
 
33
- ```markdown
34
- ## Test Results
39
+ ## Constraints
35
40
 
36
- ### Generated Tests
37
- - src/__tests__/LoginForm.test.tsx
38
- - src/__tests__/useLogin.test.ts
41
+ Follow the project's existing test framework, file placement, and naming —
42
+ never introduce a new test runner. Tests must be deterministic: no real time,
43
+ real randomness, or live external services (fix the clock, seed the RNG, mock
44
+ the network). Don't chase a coverage number with assertion-free tests; every
45
+ test must fail if the behavior it names regresses. Don't modify production
46
+ code — if a test exposes a bug, report it as a finding instead of patching
47
+ around it.
39
48
 
40
- ### Coverage
41
- - Statements: 85%
42
- - Branches: 80%
43
- - Functions: 90%
49
+ ## Done
44
50
 
45
- ### Execution Results
46
- 12 passed
47
- ⏭️ 0 skipped
48
- ❌ 0 failed
49
- ```
51
+ - Tests exist for the new/changed behavior: happy path, error paths, applicable boundaries
52
+ - Full test run executed; results reported as pass/fail counts with failures explained
53
+ - Any bug found is reported with a minimal reproducing test, not silently fixed
@@ -0,0 +1,62 @@
1
+ # UI Design Reviewer Agent
2
+
3
+ Design-quality gate for changed UI files: accessibility, UX compliance, and
4
+ anti-pattern detection in one pass.
5
+
6
+ ## Role
7
+
8
+ - Audit changed UI files for WCAG 2.1 AA compliance
9
+ - Verify UX interaction states, feedback, and navigation patterns
10
+ - Detect design-system violations, dark patterns, and AI-generated-aesthetic tells
11
+
12
+ ## Model
13
+
14
+ **Sonnet** — parallel-review accuracy
15
+
16
+ ## Goal
17
+
18
+ Given the changed UI files (from git diff), judge whether the interface is
19
+ usable by everyone, honest with the user, and consistent with the project's
20
+ design system. Load `.vibe/design-system/{project}/MASTER.md` when it exists
21
+ and treat it as the token SSOT; use `core_ui_search` (domains `ux`, `web`,
22
+ `style`) to back findings with specific guidelines. Every finding cites its
23
+ source — a WCAG criterion, a named guideline, or a MASTER.md section.
24
+
25
+ ## Review Lenses
26
+
27
+ **Accessibility (WCAG 2.1 AA — Level A violations are always P1)** — text
28
+ alternatives for non-text content; semantic HTML/landmarks; color never the
29
+ sole information carrier; contrast ≥ 4.5:1 text / 3:1 large text and UI
30
+ components; full keyboard operability with no traps, logical focus order, and
31
+ a visible focus indicator; touch targets ≥ 44×44px; form fields labeled with
32
+ errors associated to inputs; correct ARIA name/role/value; live regions for
33
+ dynamic status; no unexpected context change on focus.
34
+
35
+ **UX compliance** — every async operation has loading, error (user-friendly
36
+ message), empty, and success states; destructive actions get confirmation and
37
+ reversible ones get undo; multi-step flows show progress; forms validate
38
+ inline with logical tab order; navigation shows active state and a way back.
39
+
40
+ **Consistency & anti-patterns** — hardcoded colors/font sizes/spacing instead
41
+ of design tokens; values not in the MASTER.md palette/scale; multiple primary
42
+ CTAs competing; modals without focus traps; z-index without a system; icon
43
+ buttons without accessible labels. AI-slop tells: cyan-on-dark and
44
+ purple-to-blue gradients, gradient text on metrics, hero-metric card grids,
45
+ nested cards, glassmorphism everywhere, one-sided colored borders,
46
+ bounce/elastic easing and >500ms feedback animations, cliched loading copy,
47
+ Inter/Roboto as unconsidered defaults. Dark patterns (always P1):
48
+ confirm-shaming, hidden unsubscribe/close, forced continuity, misdirecting
49
+ visual hierarchy.
50
+
51
+ ## Constraints
52
+
53
+ Changed files only; report-only — no edits. Findings need file:line, the
54
+ violated criterion/guideline/token, who is affected, and the specific
55
+ remediation. Don't flag intentional, documented deviations from MASTER.md;
56
+ don't pad with subjective taste calls that cite no guideline.
57
+
58
+ ## Done
59
+
60
+ - All changed UI files reviewed through all three lenses
61
+ - Findings as P1/P2/P3 with citation and concrete fix; WCAG-A violations and dark patterns marked P1
62
+ - Design-system consistency verdict given (or noted that no MASTER.md exists)
@@ -0,0 +1,63 @@
1
+ # UI Design System Generator Agent
2
+
3
+ Generates the project's visual foundation: industry analysis → MASTER.md
4
+ design system → layout and stack-specific implementation guidance.
5
+
6
+ ## Role
7
+
8
+ - Detect industry category and derive style/color/typography strategy
9
+ - Generate and persist the MASTER.md design system (tokens, palette, type, spacing)
10
+ - Advise on page layout, data-visualization, and framework-specific implementation
11
+
12
+ ## Model
13
+
14
+ **Sonnet** — comprehensive generation quality
15
+
16
+ ## Goal
17
+
18
+ From a product description, produce a design system the whole pipeline can
19
+ build against. Start with analysis: detect the industry category (SaaS,
20
+ fintech, e-commerce, healthcare, gaming, …) and derive style priority, color
21
+ mood, and typography mood — persist as
22
+ `.vibe/design-system/{project}/analysis-result.json` for downstream agents.
23
+ Then generate MASTER.md via `core_ui_generate_design_system` +
24
+ `core_ui_persist_design_system`, with sections: Category & Severity, Style,
25
+ Color Palette (CSS variables), Typography (Google Fonts URL included),
26
+ Spacing & Layout, Effects & Animation, and Anti-Patterns (DO NOT USE). Use
27
+ `core_ui_search` (domains `product`, `style`, `color`, `typography`,
28
+ `landing`) to ground choices in real patterns rather than defaults.
29
+
30
+ ## Extended Guidance (when the task asks)
31
+
32
+ **Layout** — section structure with ordered sections (e.g. Hero → Features →
33
+ Social Proof → CTA), component hierarchy per section, primary/secondary CTA
34
+ placement with a conversion rationale, and responsive behavior at desktop
35
+ (1024px+), tablet (768px), mobile (320px+).
36
+
37
+ **Data visualization** (SPEC mentions charts/dashboard/analytics/metrics) —
38
+ match chart type to the data (time series → line, comparison → bar,
39
+ distribution → donut), recommend a library with a reason, pull chart colors
40
+ from the MASTER.md palette with colorblind-safe series contrast, require
41
+ screen-reader descriptions and a data-table fallback, and use canvas rendering
42
+ for 1000+ point datasets.
43
+
44
+ **Stack mapping** — detect the framework from package.json/project files and
45
+ map the design system onto it via `core_ui_stack_search`: how CSS variables
46
+ are imported, theme provider and dark-mode approach, and component library
47
+ pairings (React/Next.js, Vue/Nuxt, Svelte, Astro, React Native, Flutter,
48
+ SwiftUI, Tailwind/shadcn, Jetpack Compose).
49
+
50
+ ## Constraints
51
+
52
+ Everything downstream consumes tokens, not taste: every color, font, and
53
+ spacing value must land as a named CSS variable in MASTER.md — no orphan
54
+ values in prose. The anti-patterns section must be populated (it drives
55
+ design-reviewer checks). Don't overwrite an existing MASTER.md wholesale when
56
+ asked for an update — extend or revise the affected sections. Files are
57
+ written only under `.vibe/design-system/{project}/`.
58
+
59
+ ## Done
60
+
61
+ - `analysis-result.json` exists and is valid JSON with category, style priority, color mood, typography mood
62
+ - MASTER.md persisted with all sections populated, CSS variables defined, Google Fonts URL, anti-patterns listed
63
+ - Requested extended guidance (layout / dataviz / stack) delivered referencing MASTER.md tokens
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-model-sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-sync.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-model-sync.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { globSync } from 'glob';
5
+ /**
6
+ * 모델 할당 SSOT 가드 — agents/(**)/*.md 의 `## Model` 섹션이
7
+ * src/cli/postinstall/constants.ts > CLAUDE_MODEL_MAPPING 과 일치하는지 검증한다.
8
+ *
9
+ * 이 매핑이 유일 SSOT 다(postinstall 이 이 값을 설치 시 frontmatter `model:` 로 주입).
10
+ * 문서 본문에 손으로 박은 모델명이 드리프트하면 CI 에서 여기서 실패한다.
11
+ * 자동 정렬: `npm run sync:agent-models`.
12
+ *
13
+ * NOTE: 재작성 로직은 scripts/sync-agent-models.ts 에 있지만, tsconfig rootDir=src
14
+ * 때문에 여기서 import 하지 않고 불변식을 순수 fs 로 독립 검증한다(동일 SSOT 참조).
15
+ */
16
+ const ROOT = path.resolve(__dirname, '..', '..');
17
+ const AGENTS_DIR = path.join(ROOT, 'agents');
18
+ const CONSTANTS_FILE = path.join(ROOT, 'src', 'cli', 'postinstall', 'constants.ts');
19
+ const DISPLAY = {
20
+ haiku: 'Haiku',
21
+ sonnet: 'Sonnet',
22
+ opus: 'Opus',
23
+ inherit: 'Inherit',
24
+ };
25
+ function loadModelMapping() {
26
+ const content = fs.readFileSync(CONSTANTS_FILE, 'utf-8');
27
+ const block = content.match(/CLAUDE_MODEL_MAPPING[^{]*\{([\s\S]*?)\n\};/);
28
+ if (!block)
29
+ throw new Error('CLAUDE_MODEL_MAPPING not found in constants.ts');
30
+ const map = {};
31
+ for (const m of block[1].matchAll(/'([\w-]+)':\s*'([\w-]+)'/g))
32
+ map[m[1]] = m[2];
33
+ return map;
34
+ }
35
+ /** `## Model` 섹션의 첫 모델 라인 (`**Model** ...`) 을 반환 */
36
+ function firstModelLine(content) {
37
+ const lines = content.split('\n');
38
+ const h = lines.findIndex((l) => /^##\s+Model\s*$/.test(l));
39
+ if (h === -1)
40
+ return null;
41
+ for (let i = h + 1; i < lines.length && !/^##\s/.test(lines[i]); i++) {
42
+ if (/^\s*\*\*(Haiku|Sonnet|Opus|Inherit)/.test(lines[i]))
43
+ return lines[i].trim();
44
+ }
45
+ return null;
46
+ }
47
+ describe('agent model SSOT (CLAUDE_MODEL_MAPPING)', () => {
48
+ const map = loadModelMapping();
49
+ const files = globSync('**/*.md', { cwd: AGENTS_DIR }).sort();
50
+ it('discovers agent files', () => {
51
+ expect(files.length).toBeGreaterThan(0);
52
+ });
53
+ for (const rel of files) {
54
+ const name = path.basename(rel, '.md');
55
+ it(`${rel} has a CLAUDE_MODEL_MAPPING entry`, () => {
56
+ expect(map[name], `no model mapping for "${name}"`).toBeDefined();
57
+ });
58
+ it(`${rel} '## Model' matches the mapped tier (no drift, no version)`, () => {
59
+ const tier = map[name];
60
+ if (!tier)
61
+ return; // covered by the entry test above
62
+ const content = fs.readFileSync(path.join(AGENTS_DIR, rel), 'utf-8');
63
+ const line = firstModelLine(content);
64
+ expect(line, `missing '## Model' section in ${rel}`).not.toBeNull();
65
+ // 매핑 tier 와 표기가 일치해야 하고, 버전 숫자(예: "Haiku 4.5")가 없어야 한다.
66
+ expect(line).toMatch(new RegExp(`^\\*\\*${DISPLAY[tier]}\\*\\*`));
67
+ expect(line, `version-pinned model name in ${rel}`).not.toMatch(/\*\*(Haiku|Sonnet|Opus)\s+[\d.]/);
68
+ });
69
+ }
70
+ });
71
+ //# sourceMappingURL=agent-model-sync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-model-sync.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAe/C;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,UAAQ,GAAG,gBAAgB,CAsCvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAWvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAYxF;AAaD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAuBxC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI3E;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAuB/C;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,UAAQ,GAAG,gBAAgB,CAsCvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAWvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAYxF;AAaD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAyBxC"}
package/dist/cli/auth.js CHANGED
@@ -8,7 +8,7 @@ import { detectAntigravityCli, detectClaudeCli, detectCodexCli } from './utils/c
8
8
  * LLM 인증 상태 확인 (config.json 우선, process.env fallback)
9
9
  */
10
10
  export function getLLMAuthStatus() {
11
- const status = { claude: [], gpt: [], antigravity: [] };
11
+ const status = { claude: [], gpt: [], antigravity: [], zai: [] };
12
12
  const config = readGlobalConfig();
13
13
  // GPT
14
14
  if (config.credentials?.gpt?.apiKey || process.env.OPENAI_API_KEY) {
@@ -18,6 +18,11 @@ export function getLLMAuthStatus() {
18
18
  if (config.credentials?.antigravity?.apiKey || process.env.ANTIGRAVITY_API_KEY) {
19
19
  status.antigravity.push({ type: 'apikey', valid: true });
20
20
  }
21
+ // ZAI (Z.ai / GLM) — coding plan 키 또는 일반 키
22
+ if (config.credentials?.zai?.codingApiKey || config.credentials?.zai?.apiKey ||
23
+ process.env.ZAI_CODING_API_KEY || process.env.ZAI_API_KEY) {
24
+ status.zai.push({ type: 'apikey', valid: true });
25
+ }
21
26
  return status;
22
27
  }
23
28
  const CLAUDE_AUTH_CHECK_TIMEOUT = 10_000;
@@ -119,6 +124,7 @@ export function formatLLMStatus() {
119
124
  const antigravityRow = formatLlmCliRow(antigravityCli.installed, antigravityCli.authenticated);
120
125
  const gptKey = apiStatus.gpt.length > 0 ? '✓ Key' : '⬚ —';
121
126
  const antigravityKey = apiStatus.antigravity.length > 0 ? '✓ Key' : '⬚ —';
127
+ const zaiKey = apiStatus.zai.length > 0 ? '✓ Key' : '⬚ —';
122
128
  return [
123
129
  'LLM CLI (orchestration):',
124
130
  ` Claude Code ${claudeRow}`,
@@ -128,6 +134,7 @@ export function formatLLMStatus() {
128
134
  'LLM API Key (direct):',
129
135
  ` GPT ${gptKey}`,
130
136
  ` Antigravity ${antigravityKey}`,
137
+ ` ZAI (GLM) ${zaiKey}`,
131
138
  ].join('\n');
132
139
  }
133
140
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -14,4 +14,5 @@ export { figmaSetup, figmaStatus, figmaLogout, figmaBreakpoints, figmaHelp } fro
14
14
  export { configShow, configHelp } from './config.js';
15
15
  export { statsDefault, statsWeek, statsQuality, statsHelp } from './stats.js';
16
16
  export { codexLaunch, codexStatus, codexShell, codexHelp } from './codex-proxy.js';
17
+ export { llmList, llmRefresh, llmHelp } from './llm.js';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -14,4 +14,5 @@ export { figmaSetup, figmaStatus, figmaLogout, figmaBreakpoints, figmaHelp } fro
14
14
  export { configShow, configHelp } from './config.js';
15
15
  export { statsDefault, statsWeek, statsQuality, statsHelp } from './stats.js';
16
16
  export { codexLaunch, codexStatus, codexShell, codexHelp } from './codex-proxy.js';
17
+ export { llmList, llmRefresh, llmHelp } from './llm.js';
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CA2C/B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA2BjC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CA6C/B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CA2BjC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
@@ -29,6 +29,8 @@ LLM:
29
29
  vibe claude <cmd> Claude (key, status, logout)
30
30
  vibe gpt <cmd> GPT (key, status, logout)
31
31
  vibe antigravity <cmd> Antigravity (key, status, logout)
32
+ vibe zai <cmd> ZAI / GLM (coding-key, key, status, logout)
33
+ vibe llm <cmd> List / refresh available models (list, refresh)
32
34
 
33
35
  Figma:
34
36
  vibe figma setup <token> Set Figma access token
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClF,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;IACV,MAAM,aAAa,GAAG,aAAa;QACjC,CAAC,CAAC,KAAK,WAAW,EAAE;QACpB,CAAC,CAAC,uCAAuC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC;gBACE,WAAW,CAAC,OAAO;;WAExB,aAAa;EACtB,aAAa,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;EAC7D,eAAe,EAAE;GAChB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CX,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClF,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;IACV,MAAM,aAAa,GAAG,aAAa;QACjC,CAAC,CAAC,KAAK,WAAW,EAAE;QACpB,CAAC,CAAC,uCAAuC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC;gBACE,WAAW,CAAC,OAAO;;WAExB,aAAa;EACtB,aAAa,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;EAC7D,eAAe,EAAE;GAChB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `vibe llm` — LLM 모델 조회/최신화
3
+ *
4
+ * vibe llm list provider 별 현재 사용 가능한 모델 표시
5
+ * vibe llm refresh 라이브 조회 후 추천 모델을 ~/.vibe/config.json 에 반영
6
+ * vibe llm help
7
+ */
8
+ export declare function llmList(): Promise<void>;
9
+ export declare function llmRefresh(): Promise<void>;
10
+ export declare function llmHelp(): void;
11
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7C;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAehD;AAED,wBAAgB,OAAO,IAAI,IAAI,CAY9B"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * `vibe llm` — LLM 모델 조회/최신화
3
+ *
4
+ * vibe llm list provider 별 현재 사용 가능한 모델 표시
5
+ * vibe llm refresh 라이브 조회 후 추천 모델을 ~/.vibe/config.json 에 반영
6
+ * vibe llm help
7
+ */
8
+ import { fetchAllProviders, applyToConfig } from '../llm/model-refresh.js';
9
+ function sourceLabel(p) {
10
+ if (p.source === 'no-key')
11
+ return 'no key — curated list';
12
+ if (p.oauthOnly)
13
+ return 'oauth (Codex) — curated list';
14
+ if (p.source === 'curated')
15
+ return 'API unavailable — curated list';
16
+ return 'live';
17
+ }
18
+ function printProvider(p) {
19
+ console.log(`\n${p.label} [${sourceLabel(p)}]`);
20
+ for (const id of p.models) {
21
+ const star = id === p.recommended ? ' ★' : '';
22
+ console.log(` ${id}${star}`);
23
+ }
24
+ }
25
+ export async function llmList() {
26
+ console.log('Fetching available models from providers...');
27
+ const providers = await fetchAllProviders();
28
+ for (const p of providers)
29
+ printProvider(p);
30
+ console.log('\n★ = recommended (latest). Update SSOT: vibe llm refresh');
31
+ }
32
+ export async function llmRefresh() {
33
+ console.log('Refreshing models from provider APIs...');
34
+ const providers = await fetchAllProviders();
35
+ for (const p of providers)
36
+ printProvider(p);
37
+ const changes = applyToConfig(providers);
38
+ console.log('\n─── SSOT update (~/.vibe/config.json models) ───');
39
+ if (changes.length === 0) {
40
+ console.log(' Already up to date — no changes.');
41
+ }
42
+ else {
43
+ for (const c of changes) {
44
+ console.log(` ${c.key}: ${c.from ?? '(unset)'} → ${c.to}`);
45
+ }
46
+ }
47
+ console.log('\nNote: Claude models are managed as Claude Code tiers (sonnet/opus/haiku) and are not auto-overwritten.');
48
+ }
49
+ export function llmHelp() {
50
+ console.log(`
51
+ vibe llm — LLM model discovery & SSOT refresh
52
+
53
+ vibe llm list List currently available models per provider
54
+ (claude, openai api+oauth, gemini, zai)
55
+ vibe llm refresh Fetch latest models and update ~/.vibe/config.json models
56
+ vibe llm help Show this help
57
+
58
+ Live fetch uses each provider's key (or oauth); missing keys fall back to a
59
+ curated list. Recommended (★) models are written to the runtime model SSOT.
60
+ `);
61
+ }
62
+ //# sourceMappingURL=llm.js.map