create-claude-pipeline 0.1.1 → 0.3.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 (405) hide show
  1. package/bin/cli.js +368 -359
  2. package/package.json +32 -32
  3. package/template/.claude/agents/be-developer.md +218 -218
  4. package/template/.claude/agents/designer.md +192 -192
  5. package/template/.claude/agents/fe-developer.md +175 -175
  6. package/template/.claude/agents/infra-developer.md +270 -270
  7. package/template/.claude/agents/planner.md +126 -126
  8. package/template/.claude/agents/pm.md +130 -130
  9. package/template/.claude/agents/qa-engineer.md +270 -270
  10. package/template/.claude/agents/security-reviewer.md +281 -281
  11. package/template/.claude/settings.json +5 -5
  12. package/template/.claude/skills/analyze-requirements/SKILL.md +166 -166
  13. package/template/.claude/skills/api-integration/SKILL.md +354 -354
  14. package/template/.claude/skills/assemble-context/SKILL.md +192 -192
  15. package/template/.claude/skills/db-migration/SKILL.md +228 -228
  16. package/template/.claude/skills/explore-be-codebase/SKILL.md +260 -260
  17. package/template/.claude/skills/explore-codebase/SKILL.md +190 -190
  18. package/template/.claude/skills/explore-design-system/SKILL.md +150 -150
  19. package/template/.claude/skills/explore-fe-codebase/SKILL.md +209 -209
  20. package/template/.claude/skills/explore-implementation/SKILL.md +147 -147
  21. package/template/.claude/skills/explore-infra/SKILL.md +242 -242
  22. package/template/.claude/skills/implement-api/SKILL.md +477 -477
  23. package/template/.claude/skills/implement-components/SKILL.md +217 -217
  24. package/template/.claude/skills/review-auth/SKILL.md +175 -175
  25. package/template/.claude/skills/scan-vulnerabilities/SKILL.md +200 -200
  26. package/template/.claude/skills/write-cicd/SKILL.md +293 -293
  27. package/template/.claude/skills/write-design-spec/SKILL.md +363 -363
  28. package/template/.claude/skills/write-dockerfile/SKILL.md +269 -269
  29. package/template/.claude/skills/write-plan-doc/SKILL.md +164 -164
  30. package/template/.claude/skills/write-plan-doc/assets/plan_template.html +251 -251
  31. package/template/.claude/skills/write-qa-report/SKILL.md +151 -151
  32. package/template/.claude/skills/write-security-report/SKILL.md +185 -185
  33. package/template/.claude/skills/write-test-cases/SKILL.md +234 -234
  34. package/template/.claude-pipeline/dashboard/.env.example +1 -1
  35. package/template/.claude-pipeline/dashboard/.eslintrc.json +3 -3
  36. package/template/.claude-pipeline/dashboard/README.md +36 -36
  37. package/template/.claude-pipeline/dashboard/next.config.mjs +6 -6
  38. package/template/.claude-pipeline/dashboard/package-lock.json +8148 -8148
  39. package/template/.claude-pipeline/dashboard/package.json +34 -36
  40. package/template/.claude-pipeline/dashboard/postcss.config.mjs +8 -8
  41. package/template/.claude-pipeline/dashboard/server.ts +25 -24
  42. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/[id]/checkpoint/route.ts +23 -23
  43. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/[id]/events/route.ts +85 -0
  44. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/[id]/outputs/[...filepath]/route.ts +18 -18
  45. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/[id]/route.ts +10 -10
  46. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/route.ts +88 -64
  47. package/template/.claude-pipeline/dashboard/src/app/api/pipelines/stream/route.ts +72 -0
  48. package/template/.claude-pipeline/dashboard/src/app/globals.css +52 -52
  49. package/template/.claude-pipeline/dashboard/src/app/layout.tsx +33 -33
  50. package/template/.claude-pipeline/dashboard/src/app/page.tsx +49 -49
  51. package/template/.claude-pipeline/dashboard/src/app/pipeline/[id]/page.tsx +84 -84
  52. package/template/.claude-pipeline/dashboard/src/components/agent-card.tsx +40 -40
  53. package/template/.claude-pipeline/dashboard/src/components/agent-logs.tsx +65 -65
  54. package/template/.claude-pipeline/dashboard/src/components/artifact-viewer.tsx +130 -130
  55. package/template/.claude-pipeline/dashboard/src/components/checkpoint-banner.tsx +59 -59
  56. package/template/.claude-pipeline/dashboard/src/components/new-pipeline-modal.tsx +74 -63
  57. package/template/.claude-pipeline/dashboard/src/components/output-list.tsx +57 -57
  58. package/template/.claude-pipeline/dashboard/src/components/phase-dots.tsx +37 -37
  59. package/template/.claude-pipeline/dashboard/src/components/pipeline-card.tsx +53 -53
  60. package/template/.claude-pipeline/dashboard/src/components/resizable-panels.tsx +91 -91
  61. package/template/.claude-pipeline/dashboard/src/hooks/use-pipeline-detail.ts +51 -65
  62. package/template/.claude-pipeline/dashboard/src/hooks/use-pipelines.ts +47 -60
  63. package/template/.claude-pipeline/dashboard/src/hooks/use-sse.ts +61 -0
  64. package/template/.claude-pipeline/dashboard/src/lib/agents.ts +30 -30
  65. package/template/.claude-pipeline/dashboard/src/lib/checkpoint.ts +37 -37
  66. package/template/.claude-pipeline/dashboard/src/lib/pipelines.ts +89 -91
  67. package/template/.claude-pipeline/dashboard/src/lib/sse.ts +55 -0
  68. package/template/.claude-pipeline/dashboard/src/types/pipeline.ts +55 -61
  69. package/template/.claude-pipeline/dashboard/tailwind.config.ts +31 -31
  70. package/template/.claude-pipeline/dashboard/tsconfig.json +26 -26
  71. package/template/.claude-pipeline/runner/dist/checkpoint-waiter.d.ts +6 -0
  72. package/template/.claude-pipeline/runner/dist/checkpoint-waiter.js +43 -0
  73. package/template/.claude-pipeline/runner/dist/checkpoint-waiter.js.map +1 -0
  74. package/template/.claude-pipeline/runner/dist/context-watcher.d.ts +19 -0
  75. package/template/.claude-pipeline/runner/dist/context-watcher.js +97 -0
  76. package/template/.claude-pipeline/runner/dist/context-watcher.js.map +1 -0
  77. package/template/.claude-pipeline/runner/dist/pipeline-runner.d.ts +1 -0
  78. package/template/.claude-pipeline/runner/dist/pipeline-runner.js +227 -0
  79. package/template/.claude-pipeline/runner/dist/pipeline-runner.js.map +1 -0
  80. package/template/.claude-pipeline/runner/dist/signal-watcher.d.ts +24 -0
  81. package/template/.claude-pipeline/runner/dist/signal-watcher.js +141 -0
  82. package/template/.claude-pipeline/runner/dist/signal-watcher.js.map +1 -0
  83. package/template/.claude-pipeline/runner/dist/state-manager.d.ts +14 -0
  84. package/template/.claude-pipeline/runner/dist/state-manager.js +80 -0
  85. package/template/.claude-pipeline/runner/dist/state-manager.js.map +1 -0
  86. package/template/.claude-pipeline/runner/dist/types.d.ts +34 -0
  87. package/template/.claude-pipeline/runner/dist/types.js +2 -0
  88. package/template/.claude-pipeline/runner/dist/types.js.map +1 -0
  89. package/template/.claude-pipeline/runner/node_modules/.package-lock.json +101 -0
  90. package/template/.claude-pipeline/runner/node_modules/@types/fs-extra/LICENSE +21 -0
  91. package/template/.claude-pipeline/runner/node_modules/@types/fs-extra/README.md +15 -0
  92. package/template/.claude-pipeline/runner/node_modules/@types/fs-extra/esm.d.mts +111 -0
  93. package/template/.claude-pipeline/runner/node_modules/@types/fs-extra/index.d.ts +996 -0
  94. package/template/.claude-pipeline/runner/node_modules/@types/fs-extra/package.json +84 -0
  95. package/template/.claude-pipeline/runner/node_modules/@types/jsonfile/LICENSE +21 -0
  96. package/template/.claude-pipeline/runner/node_modules/@types/jsonfile/README.md +15 -0
  97. package/template/.claude-pipeline/runner/node_modules/@types/jsonfile/index.d.ts +71 -0
  98. package/template/.claude-pipeline/runner/node_modules/@types/jsonfile/package.json +37 -0
  99. package/template/.claude-pipeline/runner/node_modules/@types/jsonfile/utils.d.ts +9 -0
  100. package/template/.claude-pipeline/runner/node_modules/@types/node/LICENSE +21 -0
  101. package/template/.claude-pipeline/runner/node_modules/@types/node/README.md +15 -0
  102. package/template/.claude-pipeline/runner/node_modules/@types/node/assert/strict.d.ts +8 -0
  103. package/template/.claude-pipeline/runner/node_modules/@types/node/assert.d.ts +1062 -0
  104. package/template/.claude-pipeline/runner/node_modules/@types/node/async_hooks.d.ts +605 -0
  105. package/template/.claude-pipeline/runner/node_modules/@types/node/buffer.buffer.d.ts +471 -0
  106. package/template/.claude-pipeline/runner/node_modules/@types/node/buffer.d.ts +1936 -0
  107. package/template/.claude-pipeline/runner/node_modules/@types/node/child_process.d.ts +1475 -0
  108. package/template/.claude-pipeline/runner/node_modules/@types/node/cluster.d.ts +577 -0
  109. package/template/.claude-pipeline/runner/node_modules/@types/node/compatibility/disposable.d.ts +16 -0
  110. package/template/.claude-pipeline/runner/node_modules/@types/node/compatibility/index.d.ts +9 -0
  111. package/template/.claude-pipeline/runner/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  112. package/template/.claude-pipeline/runner/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  113. package/template/.claude-pipeline/runner/node_modules/@types/node/console.d.ts +452 -0
  114. package/template/.claude-pipeline/runner/node_modules/@types/node/constants.d.ts +21 -0
  115. package/template/.claude-pipeline/runner/node_modules/@types/node/crypto.d.ts +4590 -0
  116. package/template/.claude-pipeline/runner/node_modules/@types/node/dgram.d.ts +597 -0
  117. package/template/.claude-pipeline/runner/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  118. package/template/.claude-pipeline/runner/node_modules/@types/node/dns/promises.d.ts +479 -0
  119. package/template/.claude-pipeline/runner/node_modules/@types/node/dns.d.ts +871 -0
  120. package/template/.claude-pipeline/runner/node_modules/@types/node/domain.d.ts +170 -0
  121. package/template/.claude-pipeline/runner/node_modules/@types/node/events.d.ts +977 -0
  122. package/template/.claude-pipeline/runner/node_modules/@types/node/fs/promises.d.ts +1270 -0
  123. package/template/.claude-pipeline/runner/node_modules/@types/node/fs.d.ts +4375 -0
  124. package/template/.claude-pipeline/runner/node_modules/@types/node/globals.d.ts +172 -0
  125. package/template/.claude-pipeline/runner/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  126. package/template/.claude-pipeline/runner/node_modules/@types/node/http.d.ts +2049 -0
  127. package/template/.claude-pipeline/runner/node_modules/@types/node/http2.d.ts +2631 -0
  128. package/template/.claude-pipeline/runner/node_modules/@types/node/https.d.ts +578 -0
  129. package/template/.claude-pipeline/runner/node_modules/@types/node/index.d.ts +93 -0
  130. package/template/.claude-pipeline/runner/node_modules/@types/node/inspector.generated.d.ts +3966 -0
  131. package/template/.claude-pipeline/runner/node_modules/@types/node/module.d.ts +539 -0
  132. package/template/.claude-pipeline/runner/node_modules/@types/node/net.d.ts +1012 -0
  133. package/template/.claude-pipeline/runner/node_modules/@types/node/os.d.ts +506 -0
  134. package/template/.claude-pipeline/runner/node_modules/@types/node/package.json +140 -0
  135. package/template/.claude-pipeline/runner/node_modules/@types/node/path.d.ts +200 -0
  136. package/template/.claude-pipeline/runner/node_modules/@types/node/perf_hooks.d.ts +961 -0
  137. package/template/.claude-pipeline/runner/node_modules/@types/node/process.d.ts +1961 -0
  138. package/template/.claude-pipeline/runner/node_modules/@types/node/punycode.d.ts +117 -0
  139. package/template/.claude-pipeline/runner/node_modules/@types/node/querystring.d.ts +152 -0
  140. package/template/.claude-pipeline/runner/node_modules/@types/node/readline/promises.d.ts +162 -0
  141. package/template/.claude-pipeline/runner/node_modules/@types/node/readline.d.ts +589 -0
  142. package/template/.claude-pipeline/runner/node_modules/@types/node/repl.d.ts +430 -0
  143. package/template/.claude-pipeline/runner/node_modules/@types/node/sea.d.ts +153 -0
  144. package/template/.claude-pipeline/runner/node_modules/@types/node/stream/consumers.d.ts +38 -0
  145. package/template/.claude-pipeline/runner/node_modules/@types/node/stream/promises.d.ts +90 -0
  146. package/template/.claude-pipeline/runner/node_modules/@types/node/stream/web.d.ts +533 -0
  147. package/template/.claude-pipeline/runner/node_modules/@types/node/stream.d.ts +1675 -0
  148. package/template/.claude-pipeline/runner/node_modules/@types/node/string_decoder.d.ts +67 -0
  149. package/template/.claude-pipeline/runner/node_modules/@types/node/test.d.ts +1787 -0
  150. package/template/.claude-pipeline/runner/node_modules/@types/node/timers/promises.d.ts +108 -0
  151. package/template/.claude-pipeline/runner/node_modules/@types/node/timers.d.ts +286 -0
  152. package/template/.claude-pipeline/runner/node_modules/@types/node/tls.d.ts +1259 -0
  153. package/template/.claude-pipeline/runner/node_modules/@types/node/trace_events.d.ts +197 -0
  154. package/template/.claude-pipeline/runner/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  155. package/template/.claude-pipeline/runner/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  156. package/template/.claude-pipeline/runner/node_modules/@types/node/ts5.6/index.d.ts +93 -0
  157. package/template/.claude-pipeline/runner/node_modules/@types/node/tty.d.ts +208 -0
  158. package/template/.claude-pipeline/runner/node_modules/@types/node/url.d.ts +964 -0
  159. package/template/.claude-pipeline/runner/node_modules/@types/node/util.d.ts +2331 -0
  160. package/template/.claude-pipeline/runner/node_modules/@types/node/v8.d.ts +809 -0
  161. package/template/.claude-pipeline/runner/node_modules/@types/node/vm.d.ts +1001 -0
  162. package/template/.claude-pipeline/runner/node_modules/@types/node/wasi.d.ts +181 -0
  163. package/template/.claude-pipeline/runner/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  164. package/template/.claude-pipeline/runner/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  165. package/template/.claude-pipeline/runner/node_modules/@types/node/web-globals/events.d.ts +97 -0
  166. package/template/.claude-pipeline/runner/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  167. package/template/.claude-pipeline/runner/node_modules/@types/node/worker_threads.d.ts +715 -0
  168. package/template/.claude-pipeline/runner/node_modules/@types/node/zlib.d.ts +598 -0
  169. package/template/.claude-pipeline/runner/node_modules/fs-extra/LICENSE +15 -0
  170. package/template/.claude-pipeline/runner/node_modules/fs-extra/README.md +294 -0
  171. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/copy/copy-sync.js +176 -0
  172. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/copy/copy.js +180 -0
  173. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/copy/index.js +7 -0
  174. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/empty/index.js +39 -0
  175. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/file.js +66 -0
  176. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/index.js +23 -0
  177. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/link.js +64 -0
  178. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/symlink-paths.js +101 -0
  179. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/symlink-type.js +34 -0
  180. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/ensure/symlink.js +92 -0
  181. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/esm.mjs +68 -0
  182. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/fs/index.js +146 -0
  183. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/index.js +16 -0
  184. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/json/index.js +16 -0
  185. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/json/jsonfile.js +11 -0
  186. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/json/output-json-sync.js +12 -0
  187. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/json/output-json.js +12 -0
  188. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/mkdirs/index.js +14 -0
  189. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/mkdirs/make-dir.js +27 -0
  190. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/mkdirs/utils.js +21 -0
  191. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/move/index.js +7 -0
  192. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/move/move-sync.js +55 -0
  193. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/move/move.js +59 -0
  194. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/output-file/index.js +31 -0
  195. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/path-exists/index.js +12 -0
  196. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/remove/index.js +17 -0
  197. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/util/async.js +29 -0
  198. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/util/stat.js +159 -0
  199. package/template/.claude-pipeline/runner/node_modules/fs-extra/lib/util/utimes.js +36 -0
  200. package/template/.claude-pipeline/runner/node_modules/fs-extra/package.json +71 -0
  201. package/template/.claude-pipeline/runner/node_modules/graceful-fs/LICENSE +15 -0
  202. package/template/.claude-pipeline/runner/node_modules/graceful-fs/README.md +143 -0
  203. package/template/.claude-pipeline/runner/node_modules/graceful-fs/clone.js +23 -0
  204. package/template/.claude-pipeline/runner/node_modules/graceful-fs/graceful-fs.js +448 -0
  205. package/template/.claude-pipeline/runner/node_modules/graceful-fs/legacy-streams.js +118 -0
  206. package/template/.claude-pipeline/runner/node_modules/graceful-fs/package.json +53 -0
  207. package/template/.claude-pipeline/runner/node_modules/graceful-fs/polyfills.js +355 -0
  208. package/template/.claude-pipeline/runner/node_modules/jsonfile/LICENSE +15 -0
  209. package/template/.claude-pipeline/runner/node_modules/jsonfile/README.md +230 -0
  210. package/template/.claude-pipeline/runner/node_modules/jsonfile/index.js +88 -0
  211. package/template/.claude-pipeline/runner/node_modules/jsonfile/package.json +40 -0
  212. package/template/.claude-pipeline/runner/node_modules/jsonfile/utils.js +14 -0
  213. package/template/.claude-pipeline/runner/node_modules/typescript/LICENSE.txt +55 -0
  214. package/template/.claude-pipeline/runner/node_modules/typescript/README.md +50 -0
  215. package/template/.claude-pipeline/runner/node_modules/typescript/SECURITY.md +41 -0
  216. package/template/.claude-pipeline/runner/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  217. package/template/.claude-pipeline/runner/node_modules/typescript/bin/tsc +2 -0
  218. package/template/.claude-pipeline/runner/node_modules/typescript/bin/tsserver +2 -0
  219. package/template/.claude-pipeline/runner/node_modules/typescript/lib/_tsc.js +133818 -0
  220. package/template/.claude-pipeline/runner/node_modules/typescript/lib/_tsserver.js +659 -0
  221. package/template/.claude-pipeline/runner/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  222. package/template/.claude-pipeline/runner/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  223. package/template/.claude-pipeline/runner/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  224. package/template/.claude-pipeline/runner/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  225. package/template/.claude-pipeline/runner/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  226. package/template/.claude-pipeline/runner/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  227. package/template/.claude-pipeline/runner/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  228. package/template/.claude-pipeline/runner/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  229. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.d.ts +22 -0
  230. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  231. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  232. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  233. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  234. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  235. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  236. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  237. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  238. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  239. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  240. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  241. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  242. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  243. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  244. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  245. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  246. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  247. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  248. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  249. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  250. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  251. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  252. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  253. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  254. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  255. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  256. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  257. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  258. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  259. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  260. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  261. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  262. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  263. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  264. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  265. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  266. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  267. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  268. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  269. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  270. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  271. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  272. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  273. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  274. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  275. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  276. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  277. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  278. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  279. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  280. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  281. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  282. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  283. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  284. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  285. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  286. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  287. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  288. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  289. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  290. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  291. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  292. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  293. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  294. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  295. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  296. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  297. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  298. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  299. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  300. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  301. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  302. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  303. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  304. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  305. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  306. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  307. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  308. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  309. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  310. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  311. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  312. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  313. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  314. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  315. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  316. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  317. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  318. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  319. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  320. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  321. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  322. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  323. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  324. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  325. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  326. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  327. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  328. package/template/.claude-pipeline/runner/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  329. package/template/.claude-pipeline/runner/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  330. package/template/.claude-pipeline/runner/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  331. package/template/.claude-pipeline/runner/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  332. package/template/.claude-pipeline/runner/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  333. package/template/.claude-pipeline/runner/node_modules/typescript/lib/tsc.js +8 -0
  334. package/template/.claude-pipeline/runner/node_modules/typescript/lib/tsserver.js +8 -0
  335. package/template/.claude-pipeline/runner/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  336. package/template/.claude-pipeline/runner/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  337. package/template/.claude-pipeline/runner/node_modules/typescript/lib/typesMap.json +497 -0
  338. package/template/.claude-pipeline/runner/node_modules/typescript/lib/typescript.d.ts +11437 -0
  339. package/template/.claude-pipeline/runner/node_modules/typescript/lib/typescript.js +200276 -0
  340. package/template/.claude-pipeline/runner/node_modules/typescript/lib/typingsInstaller.js +8 -0
  341. package/template/.claude-pipeline/runner/node_modules/typescript/lib/watchGuard.js +53 -0
  342. package/template/.claude-pipeline/runner/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  343. package/template/.claude-pipeline/runner/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  344. package/template/.claude-pipeline/runner/node_modules/typescript/package.json +120 -0
  345. package/template/.claude-pipeline/runner/node_modules/undici-types/LICENSE +21 -0
  346. package/template/.claude-pipeline/runner/node_modules/undici-types/README.md +6 -0
  347. package/template/.claude-pipeline/runner/node_modules/undici-types/agent.d.ts +31 -0
  348. package/template/.claude-pipeline/runner/node_modules/undici-types/api.d.ts +43 -0
  349. package/template/.claude-pipeline/runner/node_modules/undici-types/balanced-pool.d.ts +29 -0
  350. package/template/.claude-pipeline/runner/node_modules/undici-types/cache.d.ts +36 -0
  351. package/template/.claude-pipeline/runner/node_modules/undici-types/client.d.ts +108 -0
  352. package/template/.claude-pipeline/runner/node_modules/undici-types/connector.d.ts +34 -0
  353. package/template/.claude-pipeline/runner/node_modules/undici-types/content-type.d.ts +21 -0
  354. package/template/.claude-pipeline/runner/node_modules/undici-types/cookies.d.ts +28 -0
  355. package/template/.claude-pipeline/runner/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  356. package/template/.claude-pipeline/runner/node_modules/undici-types/dispatcher.d.ts +256 -0
  357. package/template/.claude-pipeline/runner/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  358. package/template/.claude-pipeline/runner/node_modules/undici-types/errors.d.ts +149 -0
  359. package/template/.claude-pipeline/runner/node_modules/undici-types/eventsource.d.ts +61 -0
  360. package/template/.claude-pipeline/runner/node_modules/undici-types/fetch.d.ts +209 -0
  361. package/template/.claude-pipeline/runner/node_modules/undici-types/file.d.ts +39 -0
  362. package/template/.claude-pipeline/runner/node_modules/undici-types/filereader.d.ts +54 -0
  363. package/template/.claude-pipeline/runner/node_modules/undici-types/formdata.d.ts +108 -0
  364. package/template/.claude-pipeline/runner/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  365. package/template/.claude-pipeline/runner/node_modules/undici-types/global-origin.d.ts +7 -0
  366. package/template/.claude-pipeline/runner/node_modules/undici-types/handlers.d.ts +15 -0
  367. package/template/.claude-pipeline/runner/node_modules/undici-types/header.d.ts +4 -0
  368. package/template/.claude-pipeline/runner/node_modules/undici-types/index.d.ts +71 -0
  369. package/template/.claude-pipeline/runner/node_modules/undici-types/interceptors.d.ts +17 -0
  370. package/template/.claude-pipeline/runner/node_modules/undici-types/mock-agent.d.ts +50 -0
  371. package/template/.claude-pipeline/runner/node_modules/undici-types/mock-client.d.ts +25 -0
  372. package/template/.claude-pipeline/runner/node_modules/undici-types/mock-errors.d.ts +12 -0
  373. package/template/.claude-pipeline/runner/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  374. package/template/.claude-pipeline/runner/node_modules/undici-types/mock-pool.d.ts +25 -0
  375. package/template/.claude-pipeline/runner/node_modules/undici-types/package.json +55 -0
  376. package/template/.claude-pipeline/runner/node_modules/undici-types/patch.d.ts +33 -0
  377. package/template/.claude-pipeline/runner/node_modules/undici-types/pool-stats.d.ts +19 -0
  378. package/template/.claude-pipeline/runner/node_modules/undici-types/pool.d.ts +39 -0
  379. package/template/.claude-pipeline/runner/node_modules/undici-types/proxy-agent.d.ts +28 -0
  380. package/template/.claude-pipeline/runner/node_modules/undici-types/readable.d.ts +65 -0
  381. package/template/.claude-pipeline/runner/node_modules/undici-types/retry-agent.d.ts +8 -0
  382. package/template/.claude-pipeline/runner/node_modules/undici-types/retry-handler.d.ts +116 -0
  383. package/template/.claude-pipeline/runner/node_modules/undici-types/util.d.ts +18 -0
  384. package/template/.claude-pipeline/runner/node_modules/undici-types/webidl.d.ts +228 -0
  385. package/template/.claude-pipeline/runner/node_modules/undici-types/websocket.d.ts +150 -0
  386. package/template/.claude-pipeline/runner/node_modules/universalify/LICENSE +20 -0
  387. package/template/.claude-pipeline/runner/node_modules/universalify/README.md +76 -0
  388. package/template/.claude-pipeline/runner/node_modules/universalify/index.js +24 -0
  389. package/template/.claude-pipeline/runner/node_modules/universalify/package.json +34 -0
  390. package/template/.claude-pipeline/runner/package-lock.json +113 -0
  391. package/template/.claude-pipeline/runner/package.json +19 -0
  392. package/template/.claude-pipeline/runner/src/checkpoint-waiter.ts +51 -0
  393. package/template/.claude-pipeline/runner/src/context-watcher.ts +110 -0
  394. package/template/.claude-pipeline/runner/src/pipeline-runner.ts +274 -0
  395. package/template/.claude-pipeline/runner/src/signal-watcher.ts +168 -0
  396. package/template/.claude-pipeline/runner/src/state-manager.ts +88 -0
  397. package/template/.claude-pipeline/runner/src/types.ts +38 -0
  398. package/template/.claude-pipeline/runner/tsconfig.json +17 -0
  399. package/template/CLAUDE.md +366 -301
  400. package/template/references/context-structure.md +34 -34
  401. package/template/references/pm-context-assembly.md +34 -34
  402. package/template/references/task-context-template.md +65 -65
  403. package/template/.claude-pipeline/dashboard/src/hooks/use-websocket.ts +0 -58
  404. package/template/.claude-pipeline/dashboard/src/lib/watcher.ts +0 -90
  405. package/template/.claude-pipeline/dashboard/src/lib/ws-server.ts +0 -123
package/bin/cli.js CHANGED
@@ -1,359 +1,368 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
- // If the importer is in node compatibility mode or this is not an ESM
19
- // file that has been converted to a CommonJS file using a Babel-
20
- // compatible transform (i.e. "__esModule" has not been set), then set
21
- // "default" to the CommonJS "module.exports" for node compatibility.
22
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
- mod
24
- ));
25
-
26
- // src/index.ts
27
- var import_path7 = __toESM(require("path"));
28
- var import_fs_extra5 = __toESM(require("fs-extra"));
29
- var import_ora = __toESM(require("ora"));
30
-
31
- // src/logger.ts
32
- var import_chalk = __toESM(require("chalk"));
33
- function step(current, total, message) {
34
- console.log(import_chalk.default.cyan(` [${current}/${total}] `) + message);
35
- }
36
- function success(message) {
37
- console.log(import_chalk.default.green(" \u2713 ") + message);
38
- }
39
- function error(message) {
40
- console.log(import_chalk.default.red(" \u2717 ") + message);
41
- }
42
- function banner() {
43
- console.log();
44
- console.log(import_chalk.default.bold(" \u{1F680} Claude Pipeline \uC124\uCE58 \uC911..."));
45
- console.log();
46
- }
47
- function done(url) {
48
- console.log();
49
- console.log(import_chalk.default.green.bold(` \u2705 \uC644\uB8CC! \uB300\uC2DC\uBCF4\uB4DC: ${url}`));
50
- console.log(import_chalk.default.gray(" \uC885\uB8CC: Ctrl+C"));
51
- console.log();
52
- }
53
-
54
- // src/copy-template.ts
55
- var import_path2 = __toESM(require("path"));
56
- var import_fs_extra = __toESM(require("fs-extra"));
57
-
58
- // src/paths.ts
59
- var import_path = __toESM(require("path"));
60
- function getTemplateDir() {
61
- return import_path.default.join(__dirname, "..", "template");
62
- }
63
-
64
- // src/copy-template.ts
65
- async function copyDirSkipExisting(src, dest) {
66
- const copied = [];
67
- const skipped = [];
68
- await import_fs_extra.default.ensureDir(dest);
69
- const entries = await import_fs_extra.default.readdir(src, { withFileTypes: true });
70
- for (const entry of entries) {
71
- const srcPath = import_path2.default.join(src, entry.name);
72
- const destPath = import_path2.default.join(dest, entry.name);
73
- if (await import_fs_extra.default.pathExists(destPath)) {
74
- skipped.push(entry.name);
75
- continue;
76
- }
77
- await import_fs_extra.default.copy(srcPath, destPath);
78
- copied.push(entry.name);
79
- }
80
- return { copied, skipped };
81
- }
82
- async function copyTemplateFiles(targetDir) {
83
- const templateDir = getTemplateDir();
84
- const agents = await copyDirSkipExisting(
85
- import_path2.default.join(templateDir, ".claude", "agents"),
86
- import_path2.default.join(targetDir, ".claude", "agents")
87
- );
88
- const skills = await copyDirSkipExisting(
89
- import_path2.default.join(templateDir, ".claude", "skills"),
90
- import_path2.default.join(targetDir, ".claude", "skills")
91
- );
92
- const references = await copyDirSkipExisting(
93
- import_path2.default.join(templateDir, "references"),
94
- import_path2.default.join(targetDir, "references")
95
- );
96
- const dashboardSrc = import_path2.default.join(templateDir, ".claude-pipeline", "dashboard");
97
- const dashboardDest = import_path2.default.join(targetDir, ".claude-pipeline", "dashboard");
98
- await import_fs_extra.default.copy(dashboardSrc, dashboardDest, { overwrite: true });
99
- await import_fs_extra.default.ensureDir(import_path2.default.join(targetDir, "pipelines"));
100
- return { agents, skills, references, dashboard: true };
101
- }
102
-
103
- // src/merge-claude-md.ts
104
- var import_path3 = __toESM(require("path"));
105
- var import_fs_extra2 = __toESM(require("fs-extra"));
106
- var MARKER_START = "<!-- claude-pipeline-start -->";
107
- var MARKER_END = "<!-- claude-pipeline-end -->";
108
- async function mergeCLAUDEmd(targetDir) {
109
- const targetPath = import_path3.default.join(targetDir, "CLAUDE.md");
110
- const templatePath = import_path3.default.join(getTemplateDir(), "CLAUDE.md");
111
- const templateContent = await import_fs_extra2.default.readFile(templatePath, "utf-8");
112
- if (!await import_fs_extra2.default.pathExists(targetPath)) {
113
- const wrapped = `${MARKER_START}
114
- ${templateContent}
115
- ${MARKER_END}
116
- `;
117
- await import_fs_extra2.default.writeFile(targetPath, wrapped, "utf-8");
118
- return "created";
119
- }
120
- const existing = await import_fs_extra2.default.readFile(targetPath, "utf-8");
121
- if (existing.includes(MARKER_START)) {
122
- return "skipped";
123
- }
124
- const section = `
125
-
126
- ---
127
-
128
- ${MARKER_START}
129
- ${templateContent}
130
- ${MARKER_END}
131
- `;
132
- await import_fs_extra2.default.appendFile(targetPath, section, "utf-8");
133
- return "merged";
134
- }
135
-
136
- // src/merge-settings.ts
137
- var import_path4 = __toESM(require("path"));
138
- var import_fs_extra3 = __toESM(require("fs-extra"));
139
- function mergeArrays(existing, incoming) {
140
- const existingStrs = new Set(existing.map(String));
141
- return [
142
- ...existing,
143
- ...incoming.filter((item) => !existingStrs.has(String(item)))
144
- ];
145
- }
146
- function deepMerge(existing, incoming) {
147
- const result = { ...existing };
148
- for (const key of Object.keys(incoming)) {
149
- if (!(key in result)) {
150
- result[key] = incoming[key];
151
- } else if (Array.isArray(result[key]) && Array.isArray(incoming[key])) {
152
- result[key] = mergeArrays(result[key], incoming[key]);
153
- } else if (typeof result[key] === "object" && result[key] !== null && typeof incoming[key] === "object" && incoming[key] !== null && !Array.isArray(result[key])) {
154
- result[key] = deepMerge(
155
- result[key],
156
- incoming[key]
157
- );
158
- }
159
- }
160
- return result;
161
- }
162
- async function mergeSettings(targetDir) {
163
- const targetPath = import_path4.default.join(targetDir, ".claude", "settings.json");
164
- const templatePath = import_path4.default.join(getTemplateDir(), ".claude", "settings.json");
165
- const templateContent = await import_fs_extra3.default.readJSON(templatePath);
166
- if (!await import_fs_extra3.default.pathExists(targetPath)) {
167
- await import_fs_extra3.default.ensureDir(import_path4.default.dirname(targetPath));
168
- await import_fs_extra3.default.writeJSON(targetPath, templateContent, { spaces: 2 });
169
- return "created";
170
- }
171
- const existingContent = await import_fs_extra3.default.readJSON(targetPath);
172
- const merged = deepMerge(existingContent, templateContent);
173
- await import_fs_extra3.default.writeJSON(targetPath, merged, { spaces: 2 });
174
- return "merged";
175
- }
176
-
177
- // src/update-gitignore.ts
178
- var import_path5 = __toESM(require("path"));
179
- var import_fs_extra4 = __toESM(require("fs-extra"));
180
- var ENTRIES = [
181
- ".claude-pipeline/dashboard/node_modules/",
182
- ".claude-pipeline/dashboard/.next/",
183
- "pipelines/"
184
- ];
185
- async function updateGitignore(targetDir) {
186
- const gitignorePath = import_path5.default.join(targetDir, ".gitignore");
187
- const added = [];
188
- const skipped = [];
189
- let content = "";
190
- if (await import_fs_extra4.default.pathExists(gitignorePath)) {
191
- content = await import_fs_extra4.default.readFile(gitignorePath, "utf-8");
192
- }
193
- const lines = content.split("\n").map((l) => l.trim());
194
- for (const entry of ENTRIES) {
195
- if (lines.includes(entry)) {
196
- skipped.push(entry);
197
- } else {
198
- added.push(entry);
199
- }
200
- }
201
- if (added.length > 0) {
202
- const section = "\n# Claude Pipeline\n" + added.join("\n") + "\n";
203
- await import_fs_extra4.default.appendFile(gitignorePath, section, "utf-8");
204
- }
205
- return { added, skipped };
206
- }
207
-
208
- // src/install.ts
209
- var import_child_process = require("child_process");
210
- async function npmInstall(cwd) {
211
- try {
212
- (0, import_child_process.execSync)("npm install", {
213
- cwd,
214
- stdio: "pipe",
215
- timeout: 12e4
216
- });
217
- } catch (err) {
218
- const message = err instanceof Error ? err.message : String(err);
219
- throw new Error(
220
- `npm install \uC2E4\uD328: ${message}
221
- \uC218\uB3D9\uC73C\uB85C \uC2E4\uD589\uD574\uC8FC\uC138\uC694: cd ${cwd} && npm install`
222
- );
223
- }
224
- }
225
-
226
- // src/start-dashboard.ts
227
- var import_path6 = __toESM(require("path"));
228
- var import_child_process2 = require("child_process");
229
- var import_detect_port = __toESM(require("detect-port"));
230
- var import_open = __toESM(require("open"));
231
- async function startDashboard(targetDir) {
232
- const dashboardDir = import_path6.default.join(targetDir, ".claude-pipeline", "dashboard");
233
- const port = await (0, import_detect_port.default)(3e3);
234
- const child = (0, import_child_process2.spawn)("npm", ["run", "dev"], {
235
- cwd: dashboardDir,
236
- stdio: "inherit",
237
- env: {
238
- ...process.env,
239
- PORT: String(port),
240
- PIPELINES_DIR: import_path6.default.join(targetDir, "pipelines")
241
- },
242
- shell: true
243
- });
244
- child.on("error", (err) => {
245
- error(`\uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589 \uC2E4\uD328: ${err.message}`);
246
- process.exit(1);
247
- });
248
- const cleanup = (signal) => {
249
- child.kill(signal);
250
- process.exit(0);
251
- };
252
- process.on("SIGINT", () => cleanup("SIGINT"));
253
- process.on("SIGTERM", () => cleanup("SIGTERM"));
254
- const url = `http://localhost:${port}`;
255
- const maxAttempts = 30;
256
- for (let i = 0; i < maxAttempts; i++) {
257
- try {
258
- await fetch(url);
259
- break;
260
- } catch {
261
- await new Promise((resolve) => setTimeout(resolve, 500));
262
- }
263
- }
264
- await (0, import_open.default)(url);
265
- done(url);
266
- await new Promise((resolve) => {
267
- child.on("close", () => resolve());
268
- });
269
- }
270
-
271
- // src/index.ts
272
- var TOTAL_STEPS = 6;
273
- function showHelp() {
274
- console.log(`
275
- Usage: npx create-claude-pipeline
276
-
277
- Claude Code \uD30C\uC774\uD504\uB77C\uC778 \uC2DC\uC2A4\uD15C\uC744 \uD604\uC7AC \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC124\uCE58\uD558\uACE0 \uB300\uC2DC\uBCF4\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
278
-
279
- \uCD5C\uCD08 \uC2E4\uD589: \uC804\uCCB4 \uC2DC\uC2A4\uD15C \uC124\uCE58 + \uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589
280
- \uC7AC\uC2E4\uD589: \uB300\uC2DC\uBCF4\uB4DC\uB9CC \uC2E4\uD589
281
-
282
- Options:
283
- --help \uC774 \uB3C4\uC6C0\uB9D0 \uD45C\uC2DC
284
- --version \uBC84\uC804 \uD45C\uC2DC
285
- `);
286
- }
287
- async function showVersion() {
288
- const pkg = await import_fs_extra5.default.readJSON(import_path7.default.join(__dirname, "..", "package.json"));
289
- console.log(pkg.version);
290
- }
291
- async function main() {
292
- const args = process.argv.slice(2);
293
- if (args.includes("--help")) {
294
- showHelp();
295
- return;
296
- }
297
- if (args.includes("--version")) {
298
- await showVersion();
299
- return;
300
- }
301
- const major = parseInt(process.version.slice(1), 10);
302
- if (major < 18) {
303
- error(`Node.js 18 \uC774\uC0C1\uC774 \uD544\uC694\uD569\uB2C8\uB2E4 (\uD604\uC7AC: ${process.version})`);
304
- process.exit(1);
305
- }
306
- const cwd = process.cwd();
307
- const dashboardPkg = import_path7.default.join(cwd, ".claude-pipeline", "dashboard", "package.json");
308
- if (await import_fs_extra5.default.pathExists(dashboardPkg)) {
309
- console.log();
310
- success("\uC774\uBBF8 \uC124\uCE58\uB428 \u2014 \uB300\uC2DC\uBCF4\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4");
311
- await startDashboard(cwd);
312
- return;
313
- }
314
- banner();
315
- step(1, TOTAL_STEPS, "\uD30C\uC77C \uBCF5\uC0AC \uC911...");
316
- const copyResult = await copyTemplateFiles(cwd);
317
- success(`.claude/agents/ (${copyResult.agents.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.agents.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
318
- success(`.claude/skills/ (${copyResult.skills.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.skills.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
319
- success(`references/ (${copyResult.references.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.references.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
320
- step(2, TOTAL_STEPS, "CLAUDE.md \uBCD1\uD569 \uC911...");
321
- const mdResult = await mergeCLAUDEmd(cwd);
322
- if (mdResult === "created") {
323
- success("CLAUDE.md \uC0DD\uC131");
324
- } else if (mdResult === "merged") {
325
- success("\uAE30\uC874 CLAUDE.md\uC5D0 \uD30C\uC774\uD504\uB77C\uC778 \uC139\uC158 \uCD94\uAC00");
326
- } else {
327
- success("CLAUDE.md \uC774\uBBF8 \uD30C\uC774\uD504\uB77C\uC778 \uC139\uC158 \uD3EC\uD568 \u2014 \uAC74\uB108\uB700");
328
- }
329
- step(3, TOTAL_STEPS, ".claude/settings.json \uBCD1\uD569 \uC911...");
330
- const settingsResult = await mergeSettings(cwd);
331
- if (settingsResult === "created") {
332
- success("settings.json \uC0DD\uC131");
333
- } else {
334
- success("\uAE30\uC874 settings.json\uC5D0 \uD30C\uC774\uD504\uB77C\uC778 \uC124\uC815 \uBCD1\uD569");
335
- }
336
- step(4, TOTAL_STEPS, ".gitignore \uC5C5\uB370\uC774\uD2B8 \uC911...");
337
- const gitignoreResult = await updateGitignore(cwd);
338
- if (gitignoreResult.added.length > 0) {
339
- success(`.gitignore\uC5D0 ${gitignoreResult.added.length}\uAC1C \uD56D\uBAA9 \uCD94\uAC00`);
340
- } else {
341
- success(".gitignore \uC774\uBBF8 \uCD5C\uC2E0 \u2014 \uAC74\uB108\uB700");
342
- }
343
- step(5, TOTAL_STEPS, "\uB300\uC2DC\uBCF4\uB4DC \uC124\uCE58 \uC911...");
344
- const spinner = (0, import_ora.default)(" npm install \uC2E4\uD589 \uC911...").start();
345
- try {
346
- await npmInstall(import_path7.default.join(cwd, ".claude-pipeline", "dashboard"));
347
- spinner.succeed(" npm install \uC644\uB8CC");
348
- } catch (err) {
349
- spinner.fail(" npm install \uC2E4\uD328");
350
- error(err instanceof Error ? err.message : String(err));
351
- process.exit(1);
352
- }
353
- step(6, TOTAL_STEPS, "\uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589 \uC911...");
354
- await startDashboard(cwd);
355
- }
356
- main().catch((err) => {
357
- error(err instanceof Error ? err.message : String(err));
358
- process.exit(1);
359
- });
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
+ // If the importer is in node compatibility mode or this is not an ESM
19
+ // file that has been converted to a CommonJS file using a Babel-
20
+ // compatible transform (i.e. "__esModule" has not been set), then set
21
+ // "default" to the CommonJS "module.exports" for node compatibility.
22
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
+ mod
24
+ ));
25
+
26
+ // src/index.ts
27
+ var import_path7 = __toESM(require("path"));
28
+ var import_fs_extra5 = __toESM(require("fs-extra"));
29
+ var import_ora = __toESM(require("ora"));
30
+
31
+ // src/logger.ts
32
+ var import_chalk = __toESM(require("chalk"));
33
+ function step(current, total, message) {
34
+ console.log(import_chalk.default.cyan(` [${current}/${total}] `) + message);
35
+ }
36
+ function success(message) {
37
+ console.log(import_chalk.default.green(" \u2713 ") + message);
38
+ }
39
+ function error(message) {
40
+ console.log(import_chalk.default.red(" \u2717 ") + message);
41
+ }
42
+ function banner() {
43
+ console.log();
44
+ console.log(import_chalk.default.bold(" \u{1F680} Claude Pipeline \uC124\uCE58 \uC911..."));
45
+ console.log();
46
+ }
47
+ function done(url) {
48
+ console.log();
49
+ console.log(import_chalk.default.green.bold(` \u2705 \uC644\uB8CC! \uB300\uC2DC\uBCF4\uB4DC: ${url}`));
50
+ console.log(import_chalk.default.gray(" \uC885\uB8CC: Ctrl+C"));
51
+ console.log();
52
+ }
53
+
54
+ // src/copy-template.ts
55
+ var import_path2 = __toESM(require("path"));
56
+ var import_fs_extra = __toESM(require("fs-extra"));
57
+
58
+ // src/paths.ts
59
+ var import_path = __toESM(require("path"));
60
+ function getTemplateDir() {
61
+ return import_path.default.join(__dirname, "..", "template");
62
+ }
63
+
64
+ // src/copy-template.ts
65
+ async function copyDirSkipExisting(src, dest) {
66
+ const copied = [];
67
+ const skipped = [];
68
+ await import_fs_extra.default.ensureDir(dest);
69
+ const entries = await import_fs_extra.default.readdir(src, { withFileTypes: true });
70
+ for (const entry of entries) {
71
+ const srcPath = import_path2.default.join(src, entry.name);
72
+ const destPath = import_path2.default.join(dest, entry.name);
73
+ if (await import_fs_extra.default.pathExists(destPath)) {
74
+ skipped.push(entry.name);
75
+ continue;
76
+ }
77
+ await import_fs_extra.default.copy(srcPath, destPath);
78
+ copied.push(entry.name);
79
+ }
80
+ return { copied, skipped };
81
+ }
82
+ async function copyTemplateFiles(targetDir) {
83
+ const templateDir = getTemplateDir();
84
+ const agents = await copyDirSkipExisting(
85
+ import_path2.default.join(templateDir, ".claude", "agents"),
86
+ import_path2.default.join(targetDir, ".claude", "agents")
87
+ );
88
+ const skills = await copyDirSkipExisting(
89
+ import_path2.default.join(templateDir, ".claude", "skills"),
90
+ import_path2.default.join(targetDir, ".claude", "skills")
91
+ );
92
+ const references = await copyDirSkipExisting(
93
+ import_path2.default.join(templateDir, "references"),
94
+ import_path2.default.join(targetDir, "references")
95
+ );
96
+ const dashboardSrc = import_path2.default.join(templateDir, ".claude-pipeline", "dashboard");
97
+ const dashboardDest = import_path2.default.join(targetDir, ".claude-pipeline", "dashboard");
98
+ await import_fs_extra.default.copy(dashboardSrc, dashboardDest, { overwrite: true });
99
+ const runnerSrc = import_path2.default.join(templateDir, ".claude-pipeline", "runner");
100
+ const runnerDest = import_path2.default.join(targetDir, ".claude-pipeline", "runner");
101
+ await import_fs_extra.default.copy(runnerSrc, runnerDest, { overwrite: true });
102
+ await import_fs_extra.default.ensureDir(import_path2.default.join(targetDir, "pipelines"));
103
+ return { agents, skills, references, dashboard: true, runner: true };
104
+ }
105
+
106
+ // src/merge-claude-md.ts
107
+ var import_path3 = __toESM(require("path"));
108
+ var import_fs_extra2 = __toESM(require("fs-extra"));
109
+ var MARKER_START = "<!-- claude-pipeline-start -->";
110
+ var MARKER_END = "<!-- claude-pipeline-end -->";
111
+ async function mergeCLAUDEmd(targetDir) {
112
+ const targetPath = import_path3.default.join(targetDir, "CLAUDE.md");
113
+ const templatePath = import_path3.default.join(getTemplateDir(), "CLAUDE.md");
114
+ const templateContent = await import_fs_extra2.default.readFile(templatePath, "utf-8");
115
+ if (!await import_fs_extra2.default.pathExists(targetPath)) {
116
+ const wrapped = `${MARKER_START}
117
+ ${templateContent}
118
+ ${MARKER_END}
119
+ `;
120
+ await import_fs_extra2.default.writeFile(targetPath, wrapped, "utf-8");
121
+ return "created";
122
+ }
123
+ const existing = await import_fs_extra2.default.readFile(targetPath, "utf-8");
124
+ if (existing.includes(MARKER_START)) {
125
+ return "skipped";
126
+ }
127
+ const section = `
128
+
129
+ ---
130
+
131
+ ${MARKER_START}
132
+ ${templateContent}
133
+ ${MARKER_END}
134
+ `;
135
+ await import_fs_extra2.default.appendFile(targetPath, section, "utf-8");
136
+ return "merged";
137
+ }
138
+
139
+ // src/merge-settings.ts
140
+ var import_path4 = __toESM(require("path"));
141
+ var import_fs_extra3 = __toESM(require("fs-extra"));
142
+ function mergeArrays(existing, incoming) {
143
+ const existingStrs = new Set(existing.map(String));
144
+ return [
145
+ ...existing,
146
+ ...incoming.filter((item) => !existingStrs.has(String(item)))
147
+ ];
148
+ }
149
+ function deepMerge(existing, incoming) {
150
+ const result = { ...existing };
151
+ for (const key of Object.keys(incoming)) {
152
+ if (!(key in result)) {
153
+ result[key] = incoming[key];
154
+ } else if (Array.isArray(result[key]) && Array.isArray(incoming[key])) {
155
+ result[key] = mergeArrays(result[key], incoming[key]);
156
+ } else if (typeof result[key] === "object" && result[key] !== null && typeof incoming[key] === "object" && incoming[key] !== null && !Array.isArray(result[key])) {
157
+ result[key] = deepMerge(
158
+ result[key],
159
+ incoming[key]
160
+ );
161
+ }
162
+ }
163
+ return result;
164
+ }
165
+ async function mergeSettings(targetDir) {
166
+ const targetPath = import_path4.default.join(targetDir, ".claude", "settings.json");
167
+ const templatePath = import_path4.default.join(getTemplateDir(), ".claude", "settings.json");
168
+ const templateContent = await import_fs_extra3.default.readJSON(templatePath);
169
+ if (!await import_fs_extra3.default.pathExists(targetPath)) {
170
+ await import_fs_extra3.default.ensureDir(import_path4.default.dirname(targetPath));
171
+ await import_fs_extra3.default.writeJSON(targetPath, templateContent, { spaces: 2 });
172
+ return "created";
173
+ }
174
+ const existingContent = await import_fs_extra3.default.readJSON(targetPath);
175
+ const merged = deepMerge(existingContent, templateContent);
176
+ await import_fs_extra3.default.writeJSON(targetPath, merged, { spaces: 2 });
177
+ return "merged";
178
+ }
179
+
180
+ // src/update-gitignore.ts
181
+ var import_path5 = __toESM(require("path"));
182
+ var import_fs_extra4 = __toESM(require("fs-extra"));
183
+ var ENTRIES = [
184
+ ".claude-pipeline/dashboard/node_modules/",
185
+ ".claude-pipeline/dashboard/.next/",
186
+ "pipelines/"
187
+ ];
188
+ async function updateGitignore(targetDir) {
189
+ const gitignorePath = import_path5.default.join(targetDir, ".gitignore");
190
+ const added = [];
191
+ const skipped = [];
192
+ let content = "";
193
+ if (await import_fs_extra4.default.pathExists(gitignorePath)) {
194
+ content = await import_fs_extra4.default.readFile(gitignorePath, "utf-8");
195
+ }
196
+ const lines = content.split("\n").map((l) => l.trim());
197
+ for (const entry of ENTRIES) {
198
+ if (lines.includes(entry)) {
199
+ skipped.push(entry);
200
+ } else {
201
+ added.push(entry);
202
+ }
203
+ }
204
+ if (added.length > 0) {
205
+ const section = "\n# Claude Pipeline\n" + added.join("\n") + "\n";
206
+ await import_fs_extra4.default.appendFile(gitignorePath, section, "utf-8");
207
+ }
208
+ return { added, skipped };
209
+ }
210
+
211
+ // src/install.ts
212
+ var import_child_process = require("child_process");
213
+ async function npmInstall(cwd) {
214
+ try {
215
+ (0, import_child_process.execSync)("npm install", {
216
+ cwd,
217
+ stdio: "pipe",
218
+ timeout: 12e4
219
+ });
220
+ } catch (err) {
221
+ const message = err instanceof Error ? err.message : String(err);
222
+ throw new Error(
223
+ `npm install \uC2E4\uD328: ${message}
224
+ \uC218\uB3D9\uC73C\uB85C \uC2E4\uD589\uD574\uC8FC\uC138\uC694: cd ${cwd} && npm install`
225
+ );
226
+ }
227
+ }
228
+
229
+ // src/start-dashboard.ts
230
+ var import_path6 = __toESM(require("path"));
231
+ var import_child_process2 = require("child_process");
232
+ var import_detect_port = __toESM(require("detect-port"));
233
+ var import_open = __toESM(require("open"));
234
+ async function startDashboard(targetDir) {
235
+ const dashboardDir = import_path6.default.join(targetDir, ".claude-pipeline", "dashboard");
236
+ const port = await (0, import_detect_port.default)(3e3);
237
+ const child = (0, import_child_process2.spawn)("npm", ["run", "dev"], {
238
+ cwd: dashboardDir,
239
+ stdio: "inherit",
240
+ env: {
241
+ ...process.env,
242
+ PORT: String(port),
243
+ PIPELINES_DIR: import_path6.default.join(targetDir, "pipelines")
244
+ },
245
+ shell: true
246
+ });
247
+ child.on("error", (err) => {
248
+ error(`\uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589 \uC2E4\uD328: ${err.message}`);
249
+ process.exit(1);
250
+ });
251
+ const cleanup = (signal) => {
252
+ child.kill(signal);
253
+ process.exit(0);
254
+ };
255
+ process.on("SIGINT", () => cleanup("SIGINT"));
256
+ process.on("SIGTERM", () => cleanup("SIGTERM"));
257
+ const url = `http://localhost:${port}`;
258
+ const maxAttempts = 30;
259
+ for (let i = 0; i < maxAttempts; i++) {
260
+ try {
261
+ await fetch(url);
262
+ break;
263
+ } catch {
264
+ await new Promise((resolve) => setTimeout(resolve, 500));
265
+ }
266
+ }
267
+ await (0, import_open.default)(url);
268
+ done(url);
269
+ await new Promise((resolve) => {
270
+ child.on("close", () => resolve());
271
+ });
272
+ }
273
+
274
+ // src/index.ts
275
+ var TOTAL_STEPS = 6;
276
+ function showHelp() {
277
+ console.log(`
278
+ Usage: npx create-claude-pipeline
279
+
280
+ Claude Code \uD30C\uC774\uD504\uB77C\uC778 \uC2DC\uC2A4\uD15C\uC744 \uD604\uC7AC \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC124\uCE58\uD558\uACE0 \uB300\uC2DC\uBCF4\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
281
+
282
+ \uCD5C\uCD08 \uC2E4\uD589: \uC804\uCCB4 \uC2DC\uC2A4\uD15C \uC124\uCE58 + \uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589
283
+ \uC7AC\uC2E4\uD589: \uB300\uC2DC\uBCF4\uB4DC\uB9CC \uC2E4\uD589
284
+
285
+ Options:
286
+ --help \uC774 \uB3C4\uC6C0\uB9D0 \uD45C\uC2DC
287
+ --version \uBC84\uC804 \uD45C\uC2DC
288
+ `);
289
+ }
290
+ async function showVersion() {
291
+ const pkg = await import_fs_extra5.default.readJSON(import_path7.default.join(__dirname, "..", "package.json"));
292
+ console.log(pkg.version);
293
+ }
294
+ async function main() {
295
+ const args = process.argv.slice(2);
296
+ if (args.includes("--help")) {
297
+ showHelp();
298
+ return;
299
+ }
300
+ if (args.includes("--version")) {
301
+ await showVersion();
302
+ return;
303
+ }
304
+ const major = parseInt(process.version.slice(1), 10);
305
+ if (major < 18) {
306
+ error(`Node.js 18 \uC774\uC0C1\uC774 \uD544\uC694\uD569\uB2C8\uB2E4 (\uD604\uC7AC: ${process.version})`);
307
+ process.exit(1);
308
+ }
309
+ const cwd = process.cwd();
310
+ const dashboardPkg = import_path7.default.join(cwd, ".claude-pipeline", "dashboard", "package.json");
311
+ if (await import_fs_extra5.default.pathExists(dashboardPkg)) {
312
+ console.log();
313
+ success("\uC774\uBBF8 \uC124\uCE58\uB428 \u2014 \uB300\uC2DC\uBCF4\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4");
314
+ await startDashboard(cwd);
315
+ return;
316
+ }
317
+ banner();
318
+ step(1, TOTAL_STEPS, "\uD30C\uC77C \uBCF5\uC0AC \uC911...");
319
+ const copyResult = await copyTemplateFiles(cwd);
320
+ success(`.claude/agents/ (${copyResult.agents.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.agents.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
321
+ success(`.claude/skills/ (${copyResult.skills.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.skills.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
322
+ success(`references/ (${copyResult.references.copied.length}\uAC1C \uBCF5\uC0AC, ${copyResult.references.skipped.length}\uAC1C \uAC74\uB108\uB700)`);
323
+ step(2, TOTAL_STEPS, "CLAUDE.md \uBCD1\uD569 \uC911...");
324
+ const mdResult = await mergeCLAUDEmd(cwd);
325
+ if (mdResult === "created") {
326
+ success("CLAUDE.md \uC0DD\uC131");
327
+ } else if (mdResult === "merged") {
328
+ success("\uAE30\uC874 CLAUDE.md\uC5D0 \uD30C\uC774\uD504\uB77C\uC778 \uC139\uC158 \uCD94\uAC00");
329
+ } else {
330
+ success("CLAUDE.md \uC774\uBBF8 \uD30C\uC774\uD504\uB77C\uC778 \uC139\uC158 \uD3EC\uD568 \u2014 \uAC74\uB108\uB700");
331
+ }
332
+ step(3, TOTAL_STEPS, ".claude/settings.json \uBCD1\uD569 \uC911...");
333
+ const settingsResult = await mergeSettings(cwd);
334
+ if (settingsResult === "created") {
335
+ success("settings.json \uC0DD\uC131");
336
+ } else {
337
+ success("\uAE30\uC874 settings.json\uC5D0 \uD30C\uC774\uD504\uB77C\uC778 \uC124\uC815 \uBCD1\uD569");
338
+ }
339
+ step(4, TOTAL_STEPS, ".gitignore \uC5C5\uB370\uC774\uD2B8 \uC911...");
340
+ const gitignoreResult = await updateGitignore(cwd);
341
+ if (gitignoreResult.added.length > 0) {
342
+ success(`.gitignore\uC5D0 ${gitignoreResult.added.length}\uAC1C \uD56D\uBAA9 \uCD94\uAC00`);
343
+ } else {
344
+ success(".gitignore \uC774\uBBF8 \uCD5C\uC2E0 \u2014 \uAC74\uB108\uB700");
345
+ }
346
+ step(5, TOTAL_STEPS, "Runner & \uB300\uC2DC\uBCF4\uB4DC \uC124\uCE58 \uC911...");
347
+ const spinner = (0, import_ora.default)(" npm install \uC2E4\uD589 \uC911...").start();
348
+ try {
349
+ const runnerDir = import_path7.default.join(cwd, ".claude-pipeline", "runner");
350
+ await npmInstall(runnerDir);
351
+ spinner.text = " Runner \uBE4C\uB4DC \uC911...";
352
+ const { execSync: execSync2 } = await import("child_process");
353
+ execSync2("npm run build", { cwd: runnerDir, stdio: "pipe", timeout: 6e4 });
354
+ spinner.text = " \uB300\uC2DC\uBCF4\uB4DC npm install \uC2E4\uD589 \uC911...";
355
+ await npmInstall(import_path7.default.join(cwd, ".claude-pipeline", "dashboard"));
356
+ spinner.succeed(" npm install + \uBE4C\uB4DC \uC644\uB8CC");
357
+ } catch (err) {
358
+ spinner.fail(" \uC124\uCE58/\uBE4C\uB4DC \uC2E4\uD328");
359
+ error(err instanceof Error ? err.message : String(err));
360
+ process.exit(1);
361
+ }
362
+ step(6, TOTAL_STEPS, "\uB300\uC2DC\uBCF4\uB4DC \uC2E4\uD589 \uC911...");
363
+ await startDashboard(cwd);
364
+ }
365
+ main().catch((err) => {
366
+ error(err instanceof Error ? err.message : String(err));
367
+ process.exit(1);
368
+ });