create-hq 6.0.0 → 7.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 (315) hide show
  1. package/dist/__tests__/scaffold.test.d.ts +2 -0
  2. package/dist/__tests__/scaffold.test.d.ts.map +1 -0
  3. package/dist/__tests__/scaffold.test.js +150 -0
  4. package/dist/__tests__/scaffold.test.js.map +1 -0
  5. package/dist/cloud-sync.d.ts +11 -0
  6. package/dist/cloud-sync.d.ts.map +1 -0
  7. package/dist/cloud-sync.js +25 -0
  8. package/dist/cloud-sync.js.map +1 -0
  9. package/dist/deps.d.ts.map +1 -1
  10. package/dist/deps.js +7 -1
  11. package/dist/deps.js.map +1 -1
  12. package/dist/fetch-template.d.ts +14 -0
  13. package/dist/fetch-template.d.ts.map +1 -0
  14. package/dist/fetch-template.js +136 -0
  15. package/dist/fetch-template.js.map +1 -0
  16. package/dist/index.js +8 -7
  17. package/dist/index.js.map +1 -1
  18. package/dist/scaffold.d.ts +2 -2
  19. package/dist/scaffold.d.ts.map +1 -1
  20. package/dist/scaffold.js +95 -286
  21. package/dist/scaffold.js.map +1 -1
  22. package/dist/ui.d.ts +2 -3
  23. package/dist/ui.d.ts.map +1 -1
  24. package/dist/ui.js +90 -44
  25. package/dist/ui.js.map +1 -1
  26. package/package.json +48 -40
  27. package/template/.claude/CLAUDE.md +0 -202
  28. package/template/.claude/commands/checkpoint.md +0 -127
  29. package/template/.claude/commands/cleanup.md +0 -307
  30. package/template/.claude/commands/execute-task.md +0 -440
  31. package/template/.claude/commands/exit-plan.md +0 -41
  32. package/template/.claude/commands/handoff.md +0 -97
  33. package/template/.claude/commands/learn.md +0 -218
  34. package/template/.claude/commands/metrics.md +0 -118
  35. package/template/.claude/commands/newworker.md +0 -162
  36. package/template/.claude/commands/nexttask.md +0 -67
  37. package/template/.claude/commands/prd.md +0 -238
  38. package/template/.claude/commands/reanchor.md +0 -51
  39. package/template/.claude/commands/remember.md +0 -126
  40. package/template/.claude/commands/run-project.md +0 -348
  41. package/template/.claude/commands/run.md +0 -110
  42. package/template/.claude/commands/search-reindex.md +0 -62
  43. package/template/.claude/commands/search.md +0 -100
  44. package/template/.claude/commands/setup.md +0 -381
  45. package/template/.claude/scripts/pure-ralph-loop.ps1 +0 -312
  46. package/template/.claude/scripts/pure-ralph-loop.sh +0 -859
  47. package/template/CHANGELOG.md +0 -220
  48. package/template/LICENSE +0 -21
  49. package/template/MIGRATION.md +0 -259
  50. package/template/README.md +0 -368
  51. package/template/data/journal/.gitkeep +0 -0
  52. package/template/docs/images/ascii-banner-options.md +0 -122
  53. package/template/docs/images/hq-banner.svg +0 -105
  54. package/template/knowledge/Ralph/01-overview.md +0 -71
  55. package/template/knowledge/Ralph/02-core-concepts.md +0 -114
  56. package/template/knowledge/Ralph/03-how-ralph-works.md +0 -184
  57. package/template/knowledge/Ralph/04-back-pressure.md +0 -222
  58. package/template/knowledge/Ralph/05-specifications.md +0 -210
  59. package/template/knowledge/Ralph/06-agents-md.md +0 -222
  60. package/template/knowledge/Ralph/07-implementation.md +0 -316
  61. package/template/knowledge/Ralph/08-economics.md +0 -182
  62. package/template/knowledge/Ralph/09-resources.md +0 -145
  63. package/template/knowledge/Ralph/10-claude-code-workflow.md +0 -212
  64. package/template/knowledge/Ralph/11-team-training-guide.md +0 -383
  65. package/template/knowledge/Ralph/README.md +0 -40
  66. package/template/knowledge/ai-security-framework/CONTRIBUTING.md +0 -139
  67. package/template/knowledge/ai-security-framework/GLOSSARY.md +0 -176
  68. package/template/knowledge/ai-security-framework/LICENSE +0 -21
  69. package/template/knowledge/ai-security-framework/QUICK-START.md +0 -172
  70. package/template/knowledge/ai-security-framework/README.md +0 -232
  71. package/template/knowledge/ai-security-framework/checklists/browser-security.md +0 -301
  72. package/template/knowledge/ai-security-framework/checklists/credential-isolation.md +0 -322
  73. package/template/knowledge/ai-security-framework/checklists/incident-response.md +0 -288
  74. package/template/knowledge/ai-security-framework/checklists/pre-flight.md +0 -249
  75. package/template/knowledge/ai-security-framework/checklists/weekly-audit.md +0 -159
  76. package/template/knowledge/ai-security-framework/configs/audit-logging.md +0 -372
  77. package/template/knowledge/ai-security-framework/configs/kill-switches.md +0 -354
  78. package/template/knowledge/ai-security-framework/docs/01-core-principles.md +0 -256
  79. package/template/knowledge/ai-security-framework/docs/02-threat-landscape.md +0 -326
  80. package/template/knowledge/ai-security-framework/docs/03-security-posture.md +0 -250
  81. package/template/knowledge/ai-security-framework/templates/agents-security.md +0 -233
  82. package/template/knowledge/design-styles/README.md +0 -42
  83. package/template/knowledge/design-styles/american-industrial.md +0 -136
  84. package/template/knowledge/design-styles/ethereal-abstract.md +0 -133
  85. package/template/knowledge/design-styles/liminal-portal.md +0 -111
  86. package/template/knowledge/design-styles/swipes/american-industrial/G-3m4YPW0AADdu2.jpeg +0 -0
  87. package/template/knowledge/design-styles/swipes/american-industrial/G-JJlt5WwAABK3K.png +0 -0
  88. package/template/knowledge/design-styles/swipes/american-industrial/G-JJmj5W0AEbJ-7.png +0 -0
  89. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ (1).jpeg +0 -0
  90. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ.jpeg +0 -0
  91. package/template/knowledge/design-styles/swipes/american-industrial/G7fVkn3WEAAM-ST.jpeg +0 -0
  92. package/template/knowledge/design-styles/swipes/american-industrial/G8ECO5JWEAIksyn.png +0 -0
  93. package/template/knowledge/design-styles/swipes/american-industrial/G9-3GQSWoAA8eqZ.png +0 -0
  94. package/template/knowledge/design-styles/swipes/american-industrial/G9xEOqrXkAEZRcs.png +0 -0
  95. package/template/knowledge/design-styles/swipes/american-industrial/G_MVeJrXQAA8sx4.jpeg +0 -0
  96. package/template/knowledge/design-styles/swipes/american-industrial/G_RSkmGXkAAgAVZ.png +0 -0
  97. package/template/knowledge/design-styles/swipes/american-industrial/README.md +0 -31
  98. package/template/knowledge/design-styles/swipes/american-industrial/qyqtg7Dq.png +0 -0
  99. package/template/knowledge/dev-team/README.md +0 -35
  100. package/template/knowledge/dev-team/patterns/README.md +0 -34
  101. package/template/knowledge/dev-team/patterns/frontend/react-best-practices.md +0 -178
  102. package/template/knowledge/dev-team/troubleshooting/README.md +0 -31
  103. package/template/knowledge/dev-team/workflows/README.md +0 -49
  104. package/template/knowledge/hq/checkpoint-schema.json +0 -51
  105. package/template/knowledge/hq/index-md-spec.md +0 -74
  106. package/template/knowledge/hq/thread-schema.md +0 -153
  107. package/template/knowledge/hq-core/checkpoint-schema.json +0 -51
  108. package/template/knowledge/hq-core/index-md-spec.md +0 -74
  109. package/template/knowledge/hq-core/thread-schema.md +0 -153
  110. package/template/knowledge/loom/README.md +0 -51
  111. package/template/knowledge/loom/architecture.md +0 -125
  112. package/template/knowledge/loom/code-style.md +0 -169
  113. package/template/knowledge/loom/llm-proxy.md +0 -132
  114. package/template/knowledge/loom/state-machine.md +0 -131
  115. package/template/knowledge/loom/thread-system.md +0 -117
  116. package/template/knowledge/loom/tools.md +0 -94
  117. package/template/knowledge/loom/weaver.md +0 -96
  118. package/template/knowledge/loom/web-frontend.md +0 -131
  119. package/template/knowledge/projects/README.md +0 -72
  120. package/template/knowledge/projects/templates/README.template.md +0 -28
  121. package/template/knowledge/workers/README.md +0 -195
  122. package/template/knowledge/workers/ralph-loop-pattern.md +0 -157
  123. package/template/knowledge/workers/skill-schema.md +0 -182
  124. package/template/knowledge/workers/state-machine.md +0 -102
  125. package/template/knowledge/workers/templates/base-worker.yaml +0 -73
  126. package/template/knowledge/workers/templates/code-worker.yaml +0 -85
  127. package/template/knowledge/workers/templates/skill.yaml +0 -49
  128. package/template/knowledge/workers/templates/social-worker.yaml +0 -70
  129. package/template/modules/examples/full-manifest.yaml +0 -92
  130. package/template/modules/examples/minimal.yaml +0 -14
  131. package/template/modules/modules.yaml +0 -59
  132. package/template/projects/.gitkeep +0 -0
  133. package/template/projects/incorporate-workers-into-pure-ralph/prd.json +0 -88
  134. package/template/projects/pure-ralph-branch-isolation/README.md +0 -114
  135. package/template/projects/pure-ralph-branch-isolation/prd.json +0 -123
  136. package/template/projects/purist-ralph-loop/README.md +0 -148
  137. package/template/projects/purist-ralph-loop/prd.json +0 -135
  138. package/template/projects/ralph-test/prd.json +0 -50
  139. package/template/prompts/pure-ralph-base.md +0 -551
  140. package/template/settings/.gitkeep +0 -0
  141. package/template/settings/pure-ralph.json +0 -42
  142. package/template/social-content/drafts/INDEX.md +0 -21
  143. package/template/social-content/drafts/linkedin/.gitkeep +0 -1
  144. package/template/social-content/drafts/x/.gitkeep +0 -1
  145. package/template/social-content/images/.gitkeep +0 -1
  146. package/template/starter-projects/code-worker/README.md +0 -97
  147. package/template/starter-projects/code-worker/prd.json +0 -45
  148. package/template/starter-projects/personal-assistant/README.md +0 -42
  149. package/template/starter-projects/personal-assistant/prd.json +0 -43
  150. package/template/starter-projects/social-media/README.md +0 -60
  151. package/template/starter-projects/social-media/prd.json +0 -43
  152. package/template/workers/content-brand/README.md +0 -59
  153. package/template/workers/content-brand/skills/messaging-alignment.md +0 -91
  154. package/template/workers/content-brand/skills/tone-check.md +0 -76
  155. package/template/workers/content-brand/skills/voice-analysis.md +0 -68
  156. package/template/workers/content-brand/worker.yaml +0 -81
  157. package/template/workers/content-legal/README.md +0 -80
  158. package/template/workers/content-legal/skills/claim-substantiation.md +0 -150
  159. package/template/workers/content-legal/skills/compliance-scan.md +0 -123
  160. package/template/workers/content-legal/skills/disclaimer-check.md +0 -146
  161. package/template/workers/content-legal/worker.yaml +0 -118
  162. package/template/workers/content-product/README.md +0 -77
  163. package/template/workers/content-product/skills/claim-verification.md +0 -96
  164. package/template/workers/content-product/skills/feature-accuracy.md +0 -117
  165. package/template/workers/content-product/skills/stats-check.md +0 -128
  166. package/template/workers/content-product/worker.yaml +0 -97
  167. package/template/workers/content-sales/README.md +0 -70
  168. package/template/workers/content-sales/skills/conversion-analysis.md +0 -96
  169. package/template/workers/content-sales/skills/cta-audit.md +0 -107
  170. package/template/workers/content-sales/skills/value-prop-check.md +0 -114
  171. package/template/workers/content-sales/worker.yaml +0 -93
  172. package/template/workers/content-shared/cli.ts +0 -242
  173. package/template/workers/content-shared/index.ts +0 -234
  174. package/template/workers/content-shared/lib/accuracy-analyzer.ts +0 -661
  175. package/template/workers/content-shared/lib/analyze.ts +0 -370
  176. package/template/workers/content-shared/lib/brand-analyzer.ts +0 -526
  177. package/template/workers/content-shared/lib/cms-integration.ts +0 -446
  178. package/template/workers/content-shared/lib/compliance-analyzer.ts +0 -655
  179. package/template/workers/content-shared/lib/conversion-analyzer.ts +0 -555
  180. package/template/workers/content-shared/lib/github-integration.ts +0 -582
  181. package/template/workers/content-shared/lib/output.ts +0 -373
  182. package/template/workers/content-shared/lib/parser.ts +0 -771
  183. package/template/workers/content-shared/lib/priority.ts +0 -439
  184. package/template/workers/content-shared/lib/recommendations.ts +0 -512
  185. package/template/workers/content-shared/lib/reporter.ts +0 -749
  186. package/template/workers/content-shared/lib/restructure.ts +0 -664
  187. package/template/workers/content-shared/lib/scorer.ts +0 -140
  188. package/template/workers/content-shared/lib/types.ts +0 -227
  189. package/template/workers/content-shared/lib/variants.ts +0 -595
  190. package/template/workers/content-shared/package.json +0 -51
  191. package/template/workers/content-shared/pnpm-lock.yaml +0 -39
  192. package/template/workers/content-shared/test/sample-page.json +0 -115
  193. package/template/workers/content-shared/tsconfig.json +0 -20
  194. package/template/workers/dev-team/README.md +0 -166
  195. package/template/workers/dev-team/_template.yaml +0 -70
  196. package/template/workers/dev-team/architect/package.json +0 -27
  197. package/template/workers/dev-team/architect/skills/api-design.md +0 -89
  198. package/template/workers/dev-team/architect/skills/refactor-plan.md +0 -96
  199. package/template/workers/dev-team/architect/skills/system-design.md +0 -100
  200. package/template/workers/dev-team/architect/src/index.ts +0 -49
  201. package/template/workers/dev-team/architect/src/mcp-server.ts +0 -122
  202. package/template/workers/dev-team/architect/src/skills/api-design.ts +0 -316
  203. package/template/workers/dev-team/architect/src/skills/refactor-plan.ts +0 -264
  204. package/template/workers/dev-team/architect/src/skills/system-design.ts +0 -212
  205. package/template/workers/dev-team/architect/tsconfig.json +0 -19
  206. package/template/workers/dev-team/architect/worker.yaml +0 -128
  207. package/template/workers/dev-team/backend-dev/package-lock.json +0 -1252
  208. package/template/workers/dev-team/backend-dev/package.json +0 -27
  209. package/template/workers/dev-team/backend-dev/skills/implement-endpoint.md +0 -70
  210. package/template/workers/dev-team/backend-dev/skills/implement-service.md +0 -62
  211. package/template/workers/dev-team/backend-dev/src/index.ts +0 -51
  212. package/template/workers/dev-team/backend-dev/src/mcp-server.ts +0 -109
  213. package/template/workers/dev-team/backend-dev/src/skills/implement-endpoint.ts +0 -122
  214. package/template/workers/dev-team/backend-dev/src/skills/implement-service.ts +0 -126
  215. package/template/workers/dev-team/backend-dev/tsconfig.json +0 -19
  216. package/template/workers/dev-team/backend-dev/worker.yaml +0 -128
  217. package/template/workers/dev-team/code-reviewer/package-lock.json +0 -1080
  218. package/template/workers/dev-team/code-reviewer/package.json +0 -24
  219. package/template/workers/dev-team/code-reviewer/skills/merge-to-production.md +0 -61
  220. package/template/workers/dev-team/code-reviewer/skills/merge-to-staging.md +0 -54
  221. package/template/workers/dev-team/code-reviewer/skills/request-changes.md +0 -63
  222. package/template/workers/dev-team/code-reviewer/skills/review-pr.md +0 -77
  223. package/template/workers/dev-team/code-reviewer/src/index.ts +0 -56
  224. package/template/workers/dev-team/code-reviewer/src/mcp-server.ts +0 -101
  225. package/template/workers/dev-team/code-reviewer/tsconfig.json +0 -19
  226. package/template/workers/dev-team/code-reviewer/worker.yaml +0 -90
  227. package/template/workers/dev-team/database-dev/package.json +0 -22
  228. package/template/workers/dev-team/database-dev/skills/create-schema.md +0 -48
  229. package/template/workers/dev-team/database-dev/src/index.ts +0 -50
  230. package/template/workers/dev-team/database-dev/src/mcp-server.ts +0 -76
  231. package/template/workers/dev-team/database-dev/tsconfig.json +0 -18
  232. package/template/workers/dev-team/database-dev/worker.yaml +0 -90
  233. package/template/workers/dev-team/frontend-dev/package.json +0 -22
  234. package/template/workers/dev-team/frontend-dev/skills/create-component.md +0 -26
  235. package/template/workers/dev-team/frontend-dev/src/index.ts +0 -50
  236. package/template/workers/dev-team/frontend-dev/src/mcp-server.ts +0 -77
  237. package/template/workers/dev-team/frontend-dev/tsconfig.json +0 -18
  238. package/template/workers/dev-team/frontend-dev/worker.yaml +0 -132
  239. package/template/workers/dev-team/infra-dev/package.json +0 -24
  240. package/template/workers/dev-team/infra-dev/skills/add-monitoring.md +0 -73
  241. package/template/workers/dev-team/infra-dev/skills/configure-deployment.md +0 -80
  242. package/template/workers/dev-team/infra-dev/skills/create-dockerfile.md +0 -62
  243. package/template/workers/dev-team/infra-dev/skills/setup-cicd.md +0 -63
  244. package/template/workers/dev-team/infra-dev/src/index.ts +0 -55
  245. package/template/workers/dev-team/infra-dev/src/mcp-server.ts +0 -82
  246. package/template/workers/dev-team/infra-dev/tsconfig.json +0 -19
  247. package/template/workers/dev-team/infra-dev/worker.yaml +0 -92
  248. package/template/workers/dev-team/knowledge-curator/package.json +0 -24
  249. package/template/workers/dev-team/knowledge-curator/skills/curate-troubleshooting.md +0 -63
  250. package/template/workers/dev-team/knowledge-curator/skills/process-learnings.md +0 -61
  251. package/template/workers/dev-team/knowledge-curator/skills/sync-documentation.md +0 -76
  252. package/template/workers/dev-team/knowledge-curator/skills/update-patterns.md +0 -63
  253. package/template/workers/dev-team/knowledge-curator/src/index.ts +0 -53
  254. package/template/workers/dev-team/knowledge-curator/src/mcp-server.ts +0 -92
  255. package/template/workers/dev-team/knowledge-curator/tsconfig.json +0 -19
  256. package/template/workers/dev-team/knowledge-curator/worker.yaml +0 -80
  257. package/template/workers/dev-team/motion-designer/package.json +0 -22
  258. package/template/workers/dev-team/motion-designer/skills/add-animation.md +0 -25
  259. package/template/workers/dev-team/motion-designer/skills/generate-image.md +0 -36
  260. package/template/workers/dev-team/motion-designer/src/index.ts +0 -63
  261. package/template/workers/dev-team/motion-designer/src/mcp-server.ts +0 -79
  262. package/template/workers/dev-team/motion-designer/tsconfig.json +0 -18
  263. package/template/workers/dev-team/motion-designer/worker.yaml +0 -84
  264. package/template/workers/dev-team/product-planner/queue.json +0 -4
  265. package/template/workers/dev-team/product-planner/worker.yaml +0 -220
  266. package/template/workers/dev-team/project-manager/package-lock.json +0 -1252
  267. package/template/workers/dev-team/project-manager/package.json +0 -27
  268. package/template/workers/dev-team/project-manager/skills/create-prd.md +0 -66
  269. package/template/workers/dev-team/project-manager/skills/next-issue.md +0 -51
  270. package/template/workers/dev-team/project-manager/skills/project-status.md +0 -59
  271. package/template/workers/dev-team/project-manager/skills/update-learnings.md +0 -65
  272. package/template/workers/dev-team/project-manager/src/index.ts +0 -54
  273. package/template/workers/dev-team/project-manager/src/mcp-server.ts +0 -207
  274. package/template/workers/dev-team/project-manager/src/skills/create-prd.ts +0 -86
  275. package/template/workers/dev-team/project-manager/src/skills/next-issue.ts +0 -137
  276. package/template/workers/dev-team/project-manager/src/skills/project-status.ts +0 -131
  277. package/template/workers/dev-team/project-manager/src/skills/update-learnings.ts +0 -94
  278. package/template/workers/dev-team/project-manager/tsconfig.json +0 -19
  279. package/template/workers/dev-team/project-manager/worker.yaml +0 -96
  280. package/template/workers/dev-team/qa-tester/package.json +0 -24
  281. package/template/workers/dev-team/qa-tester/skills/create-demo-account.md +0 -36
  282. package/template/workers/dev-team/qa-tester/skills/run-tests.md +0 -36
  283. package/template/workers/dev-team/qa-tester/skills/write-test.md +0 -27
  284. package/template/workers/dev-team/qa-tester/src/index.ts +0 -61
  285. package/template/workers/dev-team/qa-tester/src/mcp-server.ts +0 -88
  286. package/template/workers/dev-team/qa-tester/tsconfig.json +0 -18
  287. package/template/workers/dev-team/qa-tester/worker.yaml +0 -116
  288. package/template/workers/dev-team/task-executor/package-lock.json +0 -1252
  289. package/template/workers/dev-team/task-executor/package.json +0 -27
  290. package/template/workers/dev-team/task-executor/skills/analyze-issue.md +0 -101
  291. package/template/workers/dev-team/task-executor/skills/execute.md +0 -133
  292. package/template/workers/dev-team/task-executor/skills/report-learnings.md +0 -106
  293. package/template/workers/dev-team/task-executor/skills/validate-completion.md +0 -121
  294. package/template/workers/dev-team/task-executor/src/index.ts +0 -54
  295. package/template/workers/dev-team/task-executor/src/mcp-server.ts +0 -139
  296. package/template/workers/dev-team/task-executor/src/skills/analyze-issue.ts +0 -219
  297. package/template/workers/dev-team/task-executor/src/skills/execute.ts +0 -132
  298. package/template/workers/dev-team/task-executor/src/skills/report-learnings.ts +0 -119
  299. package/template/workers/dev-team/task-executor/src/skills/validate-completion.ts +0 -142
  300. package/template/workers/dev-team/task-executor/tsconfig.json +0 -19
  301. package/template/workers/dev-team/task-executor/worker.yaml +0 -110
  302. package/template/workers/registry.yaml +0 -171
  303. package/template/workers/security-scanner/README.md +0 -73
  304. package/template/workers/security-scanner/skills/pre-deploy-check.md +0 -205
  305. package/template/workers/security-scanner/worker.yaml +0 -26
  306. package/template/workspace/checkpoints/.gitkeep +0 -0
  307. package/template/workspace/content-ideas/inbox.jsonl +0 -0
  308. package/template/workspace/drafts/.gitkeep +0 -0
  309. package/template/workspace/learnings/.gitkeep +0 -3
  310. package/template/workspace/orchestrator/.gitkeep +0 -0
  311. package/template/workspace/ralph-test/COMPLETE.md +0 -18
  312. package/template/workspace/ralph-test/hello.txt +0 -2
  313. package/template/workspace/reports/.gitkeep +0 -0
  314. package/template/workspace/scratch/.gitkeep +0 -0
  315. package/template/workspace/threads/.gitkeep +0 -3
package/dist/scaffold.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import * as path from "path";
2
- import * as os from "os";
3
2
  import fs from "fs-extra";
4
3
  import { createInterface } from "readline";
5
- import { banner, success, warn, step, nextSteps, info, upgradeSummary, upgradeNextSteps } from "./ui.js";
4
+ import { createRequire } from "node:module";
5
+ import { banner, success, warn, step, nextSteps, stepStatus } from "./ui.js";
6
6
  import { checkDeps } from "./deps.js";
7
- import { fileURLToPath } from "url";
8
- import { execSync, spawnSync } from "child_process";
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = path.dirname(__filename);
7
+ import { initGit, hasGit } from "./git.js";
8
+ import { execSync } from "child_process";
9
+ import { fetchTemplate } from "./fetch-template.js";
10
+ import { detectExistingSync } from "./cloud-sync.js";
11
+ const require = createRequire(import.meta.url);
12
+ const pkg = require("../package.json");
11
13
  async function prompt(question, defaultVal) {
12
14
  const rl = createInterface({ input: process.stdin, output: process.stdout });
13
15
  const suffix = defaultVal ? ` (${defaultVal})` : "";
@@ -25,313 +27,125 @@ async function confirm(question, defaultYes = true) {
25
27
  return defaultYes;
26
28
  return answer.toLowerCase().startsWith("y");
27
29
  }
28
- const HQ_REPO_URL = "https://github.com/indigoai-us/hq.git";
29
- /**
30
- * Try to fetch the latest HQ template from GitHub.
31
- * Returns the path to the template/ dir inside a temp clone, or null on failure.
32
- * The caller is responsible for cleaning up the temp dir after copying.
33
- */
34
- function fetchRemoteTemplate() {
35
- const tmpDir = path.join(os.tmpdir(), `hq-template-${Date.now()}`);
36
- try {
37
- execSync(`git clone --depth 1 "${HQ_REPO_URL}" "${tmpDir}"`, {
38
- stdio: "pipe",
39
- timeout: 60000,
40
- });
41
- const templatePath = path.join(tmpDir, "template");
42
- if (fs.existsSync(templatePath) && fs.existsSync(path.join(templatePath, ".claude"))) {
43
- return { templateDir: templatePath, cleanupDir: tmpDir };
44
- }
45
- // Template dir not found in repo — clean up
46
- fs.removeSync(tmpDir);
47
- return null;
48
- }
49
- catch {
50
- // Git clone failed (no access, no git, offline) — fall back to bundled
51
- try {
52
- fs.removeSync(tmpDir);
53
- }
54
- catch { /* best effort */ }
55
- return null;
56
- }
57
- }
58
- /**
59
- * Get the template directory. Tries GitHub first for the latest version,
60
- * falls back to the bundled template in the npm package.
61
- */
62
- function getTemplateDir() {
63
- // Try fetching latest from GitHub
64
- const remote = fetchRemoteTemplate();
65
- if (remote) {
66
- return { templateDir: remote.templateDir, cleanupDir: remote.cleanupDir, source: "github" };
67
- }
68
- // Fall back to bundled template
69
- const candidates = [
70
- path.resolve(__dirname, "..", "..", "template"),
71
- path.resolve(__dirname, "..", "template"),
72
- path.resolve(__dirname, "..", "..", "..", "template"),
73
- ];
74
- for (const candidate of candidates) {
75
- if (fs.existsSync(candidate) && fs.existsSync(path.join(candidate, ".claude"))) {
76
- return { templateDir: candidate, source: "bundled" };
77
- }
78
- }
79
- throw new Error("Could not find HQ template directory. This is a packaging error — please report at https://github.com/indigoai-us/hq/issues");
80
- }
81
- /**
82
- * Recursively collect all file paths in a directory, relative to the root.
83
- * Skips .git/ and node_modules/ directories.
84
- */
85
- function collectFiles(dir, root) {
86
- const base = root ?? dir;
87
- const results = [];
88
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
89
- const fullPath = path.join(dir, entry.name);
90
- const relPath = path.relative(base, fullPath);
91
- if (entry.name === ".git" || entry.name === "node_modules")
92
- continue;
93
- if (entry.isDirectory()) {
94
- results.push(...collectFiles(fullPath, base));
95
- }
96
- else {
97
- results.push(relPath);
98
- }
99
- }
100
- return results;
101
- }
102
- /**
103
- * Non-destructive merge: copies files from templateDir to targetDir,
104
- * skipping any file that already exists in targetDir.
105
- * Returns lists of added and skipped relative paths.
106
- */
107
- function mergeTemplate(templateDir, targetDir) {
108
- const templateFiles = collectFiles(templateDir);
109
- const added = [];
110
- const skipped = [];
111
- for (const relPath of templateFiles) {
112
- const targetPath = path.join(targetDir, relPath);
113
- if (fs.existsSync(targetPath)) {
114
- skipped.push(relPath);
115
- }
116
- else {
117
- // Ensure parent directory exists
118
- fs.ensureDirSync(path.dirname(targetPath));
119
- fs.copyFileSync(path.join(templateDir, relPath), targetPath);
120
- added.push(relPath);
121
- }
122
- }
123
- return { added, skipped };
124
- }
125
30
  export async function scaffold(directory, options) {
126
- banner();
127
- const isUpgrade = options.upgrade === true;
31
+ // Show banner with installer version; hqVersion will be added after template fetch
32
+ banner(pkg.version);
128
33
  // 1. Resolve target directory
129
34
  const targetDir = path.resolve(directory);
130
- const displayDir = directory.startsWith("/") || directory.startsWith("\\")
35
+ const displayDir = directory.startsWith("/")
131
36
  ? directory
132
37
  : path.relative(process.cwd(), targetDir) || ".";
133
- // Validate upgrade target
134
- if (isUpgrade) {
135
- if (!fs.existsSync(targetDir)) {
136
- throw new Error(`Cannot upgrade: directory ${displayDir} does not exist. Use create-hq without --upgrade to create a new HQ.`);
137
- }
138
- // Check for a minimal HQ marker (CLAUDE.md or .claude/ directory)
139
- const hasClaudeDir = fs.existsSync(path.join(targetDir, ".claude"));
140
- const hasClaudeMd = fs.existsSync(path.join(targetDir, ".claude", "CLAUDE.md"));
141
- if (!hasClaudeDir && !hasClaudeMd) {
142
- const proceed = await confirm(`Directory ${displayDir} does not appear to be an HQ directory (no .claude/ found). Upgrade anyway?`, false);
38
+ // Check if directory already exists
39
+ if (fs.existsSync(targetDir)) {
40
+ const contents = fs.readdirSync(targetDir);
41
+ if (contents.length > 0) {
42
+ const proceed = await confirm(`Directory ${displayDir} already exists and is not empty. Continue anyway?`, false);
143
43
  if (!proceed) {
144
44
  console.log(" Aborted.");
145
45
  process.exit(0);
146
46
  }
147
47
  }
148
- info(`Upgrading existing HQ at ${displayDir}`);
149
- info("Existing files will NOT be overwritten");
150
48
  }
151
- else {
152
- // Fresh install check if directory already exists
153
- if (fs.existsSync(targetDir)) {
154
- const contents = fs.readdirSync(targetDir);
155
- if (contents.length > 0) {
156
- const proceed = await confirm(`Directory ${displayDir} already exists and is not empty. Continue anyway?`, false);
157
- if (!proceed) {
158
- console.log(" Aborted.");
159
- process.exit(0);
160
- }
161
- }
162
- }
49
+ // 2. Fetch template from GitHub
50
+ const fetchLabel = "Fetching HQ template from GitHub...";
51
+ stepStatus(fetchLabel, "running");
52
+ let hqVersion = "";
53
+ try {
54
+ const { version } = await fetchTemplate(targetDir, options.tag);
55
+ hqVersion = version;
56
+ // Count what we fetched
57
+ const commandCount = fs.existsSync(path.join(targetDir, ".claude", "commands"))
58
+ ? fs.readdirSync(path.join(targetDir, ".claude", "commands")).filter((f) => f.endsWith(".md")).length
59
+ : 0;
60
+ const workerCount = fs.existsSync(path.join(targetDir, "workers"))
61
+ ? fs.readdirSync(path.join(targetDir, "workers"), { recursive: true })
62
+ .filter((f) => String(f).endsWith("worker.yaml")).length
63
+ : 0;
64
+ stepStatus(fetchLabel, "done");
65
+ success(`HQ template ${version} (${commandCount} commands, ${workerCount} workers)`);
66
+ }
67
+ catch (err) {
68
+ stepStatus(fetchLabel, "failed");
69
+ throw err;
163
70
  }
164
- // 2. Fetch template
165
- step("Fetching latest HQ template...");
166
- const { templateDir, cleanupDir, source } = getTemplateDir();
167
- if (source === "github") {
168
- info("Using latest template from GitHub");
71
+ // 3. Git init
72
+ const gitLabel = "Initializing git repository";
73
+ stepStatus(gitLabel, "running");
74
+ if (hasGit()) {
75
+ initGit(targetDir);
76
+ stepStatus(gitLabel, "done");
169
77
  }
170
78
  else {
171
- info("Using bundled template (offline or no git access)");
79
+ stepStatus(gitLabel, "failed");
80
+ warn("git not found — skipping git init");
172
81
  }
173
- if (isUpgrade) {
174
- // Non-destructive merge: only add files that don't already exist
175
- step("Merging template (non-destructive)...");
176
- const { added, skipped } = mergeTemplate(templateDir, targetDir);
177
- // Clean up temp clone if we fetched from GitHub
178
- if (cleanupDir) {
82
+ // 4. Governance bootstrap — compute checksums and verify integrity
83
+ const integrityLabel = "Verifying kernel integrity";
84
+ stepStatus(integrityLabel, "running");
85
+ try {
86
+ const computeChecksumsScript = path.join(targetDir, "scripts", "compute-checksums.sh");
87
+ const coreIntegrityScript = path.join(targetDir, "scripts", "core-integrity.sh");
88
+ const hasComputeChecksums = fs.existsSync(computeChecksumsScript);
89
+ const hasCoreIntegrity = fs.existsSync(coreIntegrityScript);
90
+ if (hasComputeChecksums && hasCoreIntegrity) {
91
+ execSync("bash scripts/compute-checksums.sh", { cwd: targetDir, stdio: "pipe" });
179
92
  try {
180
- fs.removeSync(cleanupDir);
93
+ execSync("bash scripts/core-integrity.sh", { cwd: targetDir, stdio: "pipe" });
94
+ stepStatus(integrityLabel, "done");
95
+ }
96
+ catch {
97
+ stepStatus(integrityLabel, "failed");
98
+ warn("Kernel integrity check found issues — run scripts/core-integrity.sh to investigate");
181
99
  }
182
- catch { /* best effort */ }
183
- }
184
- if (added.length === 0) {
185
- success("HQ is already up to date — no new files to add");
186
100
  }
187
101
  else {
188
- success(`Merged template: ${added.length} new files added`);
102
+ // Scripts not present in this template version skip silently
103
+ stepStatus(integrityLabel, "done");
189
104
  }
190
- upgradeSummary(added, skipped);
191
105
  }
192
- else {
193
- // Fresh install: copy everything
194
- await fs.copy(templateDir, targetDir, {
195
- filter: (src) => {
196
- const rel = path.relative(templateDir, src);
197
- // Skip git internals and node_modules
198
- if (rel.includes(".git/") || rel.includes("node_modules/"))
199
- return false;
200
- return true;
201
- },
202
- });
203
- // Clean up temp clone if we fetched from GitHub
204
- if (cleanupDir) {
205
- try {
206
- fs.removeSync(cleanupDir);
207
- }
208
- catch { /* best effort */ }
209
- }
210
- // Count what we copied
211
- const commandCount = fs.existsSync(path.join(targetDir, ".claude", "commands"))
212
- ? fs.readdirSync(path.join(targetDir, ".claude", "commands")).filter((f) => f.endsWith(".md")).length
213
- : 0;
214
- const workerCount = fs.existsSync(path.join(targetDir, "workers"))
215
- ? fs.readdirSync(path.join(targetDir, "workers"), { recursive: true })
216
- .filter((f) => String(f).endsWith("worker.yaml")).length
217
- : 0;
218
- success(`Copied template (${commandCount} commands, ${workerCount} workers)`);
106
+ catch {
107
+ stepStatus(integrityLabel, "failed");
108
+ // governance bootstrap should never abort the scaffold
219
109
  }
220
- // 3. Check dependencies
110
+ // 5. Check dependencies
111
+ const depsLabel = "Checking dependencies";
112
+ stepStatus(depsLabel, "running");
221
113
  if (!options.skipDeps) {
222
114
  checkDeps();
223
115
  }
224
- // 4. Install / update hq-cli
116
+ stepStatus(depsLabel, "done");
117
+ // 6. Smart cloud sync detection
118
+ const alreadySynced = await detectExistingSync(targetDir);
119
+ if (alreadySynced) {
120
+ success("Cloud sync already configured — skipping setup");
121
+ }
122
+ // 7. Install hq-cli
225
123
  if (!options.skipCli) {
226
124
  console.log();
227
- if (isUpgrade) {
228
- // During upgrade, always update to latest
229
- const updateCli = await confirm("Update @indigoai-us/hq-cli to latest version?");
230
- if (updateCli) {
231
- try {
232
- step("Updating @indigoai-us/hq-cli to latest...");
233
- execSync("npm install -g @indigoai-us/hq-cli@latest", { stdio: "pipe" });
234
- success("Updated @indigoai-us/hq-cli to latest");
235
- }
236
- catch {
237
- warn("Failed to update @indigoai-us/hq-cli — you can update manually with: npm install -g @indigoai-us/hq-cli@latest");
238
- }
125
+ const installCli = await confirm("Install @indigoai-us/hq-cli globally for module management?");
126
+ if (installCli) {
127
+ const cliLabel = "Installing @indigoai-us/hq-cli";
128
+ stepStatus(cliLabel, "running");
129
+ try {
130
+ execSync("npm install -g @indigoai-us/hq-cli", { stdio: "pipe" });
131
+ stepStatus(cliLabel, "done");
239
132
  }
240
- }
241
- else {
242
- const installCli = await confirm("Install @indigoai-us/hq-cli globally for module management?");
243
- if (installCli) {
244
- try {
245
- step("Installing @indigoai-us/hq-cli...");
246
- execSync("npm install -g @indigoai-us/hq-cli", { stdio: "pipe" });
247
- success("Installed @indigoai-us/hq-cli");
248
- }
249
- catch {
250
- warn("Failed to install @indigoai-us/hq-cli — you can install it later with: npm install -g @indigoai-us/hq-cli");
251
- }
133
+ catch {
134
+ stepStatus(cliLabel, "failed");
135
+ warn("Failed to install @indigoai-us/hq-cli you can install it later with: npm install -g @indigoai-us/hq-cli");
252
136
  }
253
137
  }
254
138
  }
255
- // 5. Cloud sync + session setup
256
- if (!options.skipCloud) {
139
+ // 8. Cloud sync setup
140
+ if (!options.skipSync && !alreadySynced) {
257
141
  console.log();
258
- const cloudPrompt = isUpgrade
259
- ? "Set up HQ Cloud? (add cloud capabilities to your existing HQ)"
260
- : "Set up HQ Cloud? (syncs your HQ files and enables remote AI sessions)";
261
- const setupCloud = await confirm(cloudPrompt);
262
- if (setupCloud) {
263
- // Step 5a: Authenticate with Clerk
264
- let authOk = false;
265
- try {
266
- step("Authenticating with HQ Cloud...");
267
- const authResult = spawnSync("hq", ["auth", "login"], {
268
- stdio: "inherit",
269
- shell: true,
270
- });
271
- if (authResult.status === 0) {
272
- success("Authenticated with HQ Cloud");
273
- authOk = true;
274
- }
275
- else {
276
- warn("Authentication did not complete — you can retry later with: hq auth login");
277
- }
278
- }
279
- catch {
280
- warn("Could not run hq auth login — you can retry later with: hq auth login");
281
- }
282
- // Step 5b: Upload HQ files to cloud
283
- if (authOk) {
284
- let uploadOk = false;
285
- try {
286
- step("Uploading HQ files to cloud...");
287
- const uploadResult = spawnSync("hq", ["cloud", "upload", "--hq-root", targetDir, "--on-conflict", "merge"], { stdio: "inherit", shell: true });
288
- if (uploadResult.status === 0) {
289
- success("HQ files uploaded to cloud");
290
- uploadOk = true;
291
- }
292
- else {
293
- warn("Upload did not complete — you can run later with: hq cloud upload");
294
- }
295
- }
296
- catch {
297
- warn("Could not upload files — you can run later with: hq cloud upload");
298
- }
299
- // Step 5c: Verify sync is working
300
- if (uploadOk) {
301
- try {
302
- const statusResult = spawnSync("hq", ["sync", "status"], { stdio: "inherit", shell: true, cwd: targetDir });
303
- if (statusResult.status === 0) {
304
- success("Cloud sync is configured and working");
305
- }
306
- }
307
- catch {
308
- // Non-fatal — sync status is informational
309
- }
310
- }
311
- }
312
- // Step 5d: Set up Claude token for cloud sessions
313
- if (authOk) {
314
- console.log();
315
- try {
316
- step("Setting up Claude token for cloud sessions...");
317
- const tokenResult = spawnSync("hq", ["cloud", "setup-token"], {
318
- stdio: "inherit",
319
- shell: true,
320
- });
321
- if (tokenResult.status === 0) {
322
- success("Claude token configured for cloud sessions");
323
- }
324
- else {
325
- warn("Token setup did not complete — you can retry later with: hq cloud setup-token");
326
- }
327
- }
328
- catch {
329
- warn("Could not run hq cloud setup-token — you can retry later with: hq cloud setup-token");
330
- }
331
- }
142
+ const setupSync = await confirm("Set up cloud sync? (enables mobile access via hq.indigoai.com)");
143
+ if (setupSync) {
144
+ step("Cloud sync setup will be available after running /setup in Claude Code");
145
+ step("Run: hq sync init");
332
146
  }
333
147
  }
334
- // 6. Index with qmd
148
+ // 9. Index with qmd
335
149
  try {
336
150
  execSync("qmd index .", { cwd: targetDir, stdio: "pipe" });
337
151
  success("Indexed HQ for search");
@@ -339,12 +153,7 @@ export async function scaffold(directory, options) {
339
153
  catch {
340
154
  // qmd not installed, skip silently — already warned in deps check
341
155
  }
342
- // 7. Next steps
343
- if (isUpgrade) {
344
- upgradeNextSteps(displayDir);
345
- }
346
- else {
347
- nextSteps(displayDir);
348
- }
156
+ // 10. Next steps
157
+ nextSteps(displayDir);
349
158
  }
350
159
  //# sourceMappingURL=scaffold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAS3C,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,UAAmB;IACzD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,OAAO,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YAClD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,UAAU,GAAG,IAAI;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAE5D;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,WAAW,MAAM,MAAM,GAAG,EAAE;YAC3D,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YACrF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC3D,CAAC;QACD,4CAA4C;QAC5C,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc;IACrB,kCAAkC;IAClC,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9F,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;KACtD,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YAC/E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,IAAa;IAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;IACzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;YAAE,SAAS;QACrE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3C,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAiB,EACjB,OAAwB;IAExB,MAAM,EAAE,CAAC;IAET,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAE3C,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QACxE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC;IAEnD,0BAA0B;IAC1B,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,6BAA6B,UAAU,sEAAsE,CAC9G,CAAC;QACJ,CAAC;QACD,kEAAkE;QAClE,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,aAAa,UAAU,6EAA6E,EACpG,KAAK,CACN,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,aAAa,UAAU,oDAAoD,EAC3E,KAAK,CACN,CAAC;gBACF,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAE7D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,iEAAiE;QACjE,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEjE,gDAAgD;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,gDAAgD,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,oBAAoB,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAC9D,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,iCAAiC;QACjC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;YACpC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAC5C,sCAAsC;gBACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAC7E,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACrG,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACjE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;YAC5D,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO,CAAC,oBAAoB,YAAY,cAAc,WAAW,WAAW,CAAC,CAAC;IAChF,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,SAAS,EAAE,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,EAAE,CAAC;YACd,0CAA0C;YAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,+CAA+C,CAChD,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAClD,QAAQ,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBACzE,OAAO,CAAC,uCAAuC,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,gHAAgH,CAAC,CAAC;gBACzH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,MAAM,OAAO,CAC9B,6DAA6D,CAC9D,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,IAAI,CAAC,mCAAmC,CAAC,CAAC;oBAC1C,QAAQ,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAClE,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,2GAA2G,CAAC,CAAC;gBACpH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,SAAS;YAC3B,CAAC,CAAC,+DAA+D;YACjE,CAAC,CAAC,uEAAuE,CAAC;QAC5E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,mCAAmC;YACnC,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACxC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;oBACpD,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,6BAA6B,CAAC,CAAC;oBACvC,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,2EAA2E,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAChF,CAAC;YAED,oCAAoC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC;oBACH,IAAI,CAAC,gCAAgC,CAAC,CAAC;oBACvC,MAAM,YAAY,GAAG,SAAS,CAC5B,IAAI,EACJ,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,EACrE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAClC,CAAC;oBACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,4BAA4B,CAAC,CAAC;wBACtC,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,mEAAmE,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBAC3E,CAAC;gBAED,kCAAkC;gBAClC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC;wBACH,MAAM,YAAY,GAAG,SAAS,CAC5B,IAAI,EACJ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAClD,CAAC;wBACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC9B,OAAO,CAAC,sCAAsC,CAAC,CAAC;wBAClD,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,2CAA2C;oBAC7C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kDAAkD;YAClD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,IAAI,CAAC,+CAA+C,CAAC,CAAC;oBACtD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE;wBAC5D,KAAK,EAAE,SAAS;wBAChB,KAAK,EAAE,IAAI;qBACZ,CAAC,CAAC;oBACH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7B,OAAO,CAAC,4CAA4C,CAAC,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,+EAA+E,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,qFAAqF,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;IACpE,CAAC;IAED,gBAAgB;IAChB,IAAI,SAAS,EAAE,CAAC;QACd,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAS9D,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,UAAmB;IACzD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,OAAO,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YAClD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,QAAgB,EAAE,UAAU,GAAG,IAAI;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,SAAiB,EACjB,OAAwB;IAExB,mFAAmF;IACnF,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpB,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC;IAEnD,oCAAoC;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,aAAa,UAAU,oDAAoD,EAC3E,KAAK,CACN,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG,qCAAqC,CAAC;IACzD,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,SAAS,GAAG,OAAO,CAAC;QAEpB,wBAAwB;QACxB,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAC7E,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACrG,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACjE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;YAC5D,CAAC,CAAC,CAAC,CAAC;QAEN,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,eAAe,OAAO,KAAK,YAAY,cAAc,WAAW,WAAW,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,cAAc;IACd,MAAM,QAAQ,GAAG,6BAA6B,CAAC;IAC/C,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChC,IAAI,MAAM,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC5C,CAAC;IAED,mEAAmE;IACnE,MAAM,cAAc,GAAG,4BAA4B,CAAC;IACpD,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACvF,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACjF,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,mBAAmB,IAAI,gBAAgB,EAAE,CAAC;YAC5C,QAAQ,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,QAAQ,CAAC,gCAAgC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9E,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,oFAAoF,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACrC,uDAAuD;IACzD,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,uBAAuB,CAAC;IAC1C,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,SAAS,EAAE,CAAC;IACd,CAAC;IACD,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9B,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,gDAAgD,CAAC,CAAC;IAC5D,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,OAAO,CAC9B,6DAA6D,CAC9D,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,gCAAgC,CAAC;YAClD,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,QAAQ,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClE,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/B,IAAI,CAAC,2GAA2G,CAAC,CAAC;YACpH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,gEAAgE,CACjE,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,wEAAwE,CAAC,CAAC;YAC/E,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;IACpE,CAAC;IAED,iBAAiB;IACjB,SAAS,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC"}
package/dist/ui.d.ts CHANGED
@@ -1,9 +1,8 @@
1
- export declare function banner(): void;
1
+ export declare function banner(installerVersion?: string, hqVersion?: string): void;
2
+ export declare function stepStatus(label: string, status: "pending" | "running" | "done" | "failed"): void;
2
3
  export declare function success(msg: string): void;
3
4
  export declare function warn(msg: string): void;
4
5
  export declare function info(msg: string): void;
5
6
  export declare function step(msg: string): void;
6
7
  export declare function nextSteps(dir: string): void;
7
- export declare function upgradeSummary(added: string[], skipped: string[]): void;
8
- export declare function upgradeNextSteps(dir: string): void;
9
8
  //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,IAAI,IAAI,CAa7B;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAW3C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAsBvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAelD"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAKA,wBAAgB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAmC1E;AAMD,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAChD,IAAI,CA2CN;AAID,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkB3C"}
package/dist/ui.js CHANGED
@@ -1,16 +1,85 @@
1
1
  import chalk from "chalk";
2
- export function banner() {
2
+ import ora from "ora";
3
+ // ─── ASCII Art Banner ────────────────────────────────────────────────────────
4
+ export function banner(installerVersion, hqVersion) {
5
+ const d = chalk.dim;
6
+ const w = chalk.bold.white;
7
+ const c = chalk.white; // city
3
8
  console.log();
4
- console.log(chalk.bold.white(" ██ ██ ██████ "));
5
- console.log(chalk.bold.white(" ██ ██ ██ ██ "));
6
- console.log(chalk.bold.white(" ███████ ██ ██ "));
7
- console.log(chalk.bold.white(" ██ ██ ██ ▄▄ ██ "));
8
- console.log(chalk.bold.white(" ██ ██ ██████ "));
9
- console.log(chalk.dim(" ▀▀ "));
9
+ console.log(c(" ^"));
10
+ console.log(c(" _______ ^^^"));
11
+ console.log(c(" |xxxxxxx| _^^^^^_"));
12
+ console.log(c(" |xxxxxxx| | [][] |"));
13
+ console.log(c(" ______xxxxx| |[][][] |"));
14
+ console.log(c(" |++++++|xxxx| | [][][]|") + w(" ██╗ ██╗ ██████╗"));
15
+ console.log(c(" |++++++|xxxx| |[][][] |") + w(" ██║ ██║██╔═══██╗"));
16
+ console.log(c(" |++++++|_________ [][]|") + w(" ███████║██║ ██║"));
17
+ console.log(c(" |++++++|=|=|=|=|=| [] |") + w(" ██╔══██║██║▄▄ ██║"));
18
+ console.log(c(" |++++++|=|=|=|=|=|[][]|") + w(" ██║ ██║╚██████╔╝"));
19
+ console.log(c("________|++HH++| _HHHH__| |______") + d("╚═╝ ╚═╝ ╚══▀▀═╝"));
20
+ console.log(c(" _______________ ______________ ______________"));
21
+ console.log(c("_____________ ___________ __________________ ____________"));
10
22
  console.log();
11
- console.log(chalk.dim(" Personal OS for AI Workers") + chalk.dim(" v6.0.0"));
23
+ console.log(d(" Personal OS for AI Workers"));
12
24
  console.log();
25
+ const parts = [];
26
+ if (installerVersion) {
27
+ parts.push(d(`create-hq v${installerVersion}`));
28
+ }
29
+ if (hqVersion) {
30
+ parts.push(chalk.cyan(`HQ template ${hqVersion}`));
31
+ }
32
+ if (parts.length > 0) {
33
+ console.log(" " + parts.join(d(" · ")));
34
+ console.log();
35
+ }
13
36
  }
37
+ // ─── Step Status Tracking ────────────────────────────────────────────────────
38
+ const spinners = new Map();
39
+ export function stepStatus(label, status) {
40
+ switch (status) {
41
+ case "pending":
42
+ console.log(chalk.dim(" [ ] ") + chalk.dim(label));
43
+ break;
44
+ case "running": {
45
+ // Stop any existing spinner for this label
46
+ const existing = spinners.get(label);
47
+ if (existing)
48
+ existing.stop();
49
+ const spinner = ora({
50
+ text: chalk.white(label),
51
+ prefixText: " ",
52
+ spinner: "dots",
53
+ color: "cyan",
54
+ }).start();
55
+ spinners.set(label, spinner);
56
+ break;
57
+ }
58
+ case "done": {
59
+ const s = spinners.get(label);
60
+ if (s) {
61
+ s.succeed(chalk.white(label));
62
+ spinners.delete(label);
63
+ }
64
+ else {
65
+ console.log(chalk.green(" [✓] ") + chalk.white(label));
66
+ }
67
+ break;
68
+ }
69
+ case "failed": {
70
+ const sf = spinners.get(label);
71
+ if (sf) {
72
+ sf.fail(chalk.white(label));
73
+ spinners.delete(label);
74
+ }
75
+ else {
76
+ console.log(chalk.red(" [✗] ") + chalk.white(label));
77
+ }
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ // ─── Basic Output Helpers ────────────────────────────────────────────────────
14
83
  export function success(msg) {
15
84
  console.log(chalk.green(" ✓") + " " + msg);
16
85
  }
@@ -24,43 +93,20 @@ export function step(msg) {
24
93
  console.log(chalk.cyan(" →") + " " + msg);
25
94
  }
26
95
  export function nextSteps(dir) {
96
+ const W = 48;
97
+ const line = "─".repeat(W);
98
+ const pad = (text, len) => text + " ".repeat(Math.max(0, len - text.length));
99
+ const row = (text) => chalk.dim(" │") + pad(text, W) + chalk.dim("│");
27
100
  console.log();
28
- console.log(chalk.bold(" All done! Next steps:"));
29
- console.log();
30
- console.log(chalk.white(` cd ${dir}`));
31
- console.log(chalk.white(" claude"));
32
- console.log(chalk.white(" /setup") +
33
- chalk.dim(" ← interactive wizard to personalize your HQ"));
34
- console.log();
35
- }
36
- export function upgradeSummary(added, skipped) {
37
- console.log();
38
- console.log(chalk.bold(" Upgrade Summary"));
39
- console.log(chalk.dim(" ─────────────────────────────────────"));
40
- console.log(chalk.green(` Added: ${added.length} new file${added.length !== 1 ? "s" : ""}`));
41
- console.log(chalk.dim(` Skipped: ${skipped.length} existing file${skipped.length !== 1 ? "s" : ""} (not overwritten)`));
42
- if (added.length > 0) {
43
- console.log();
44
- console.log(chalk.dim(" New files added:"));
45
- for (const file of added.slice(0, 20)) {
46
- console.log(chalk.green(` + ${file}`));
47
- }
48
- if (added.length > 20) {
49
- console.log(chalk.dim(` ... and ${added.length - 20} more`));
50
- }
51
- }
52
- console.log();
53
- }
54
- export function upgradeNextSteps(dir) {
55
- console.log();
56
- console.log(chalk.bold(" Upgrade complete! Next steps:"));
57
- console.log();
58
- if (dir !== ".") {
59
- console.log(chalk.white(` cd ${dir}`));
60
- }
61
- console.log(chalk.white(" claude"));
62
- console.log(chalk.dim(" Your existing files (CLAUDE.md, workers/, projects/) are untouched."));
63
- console.log(chalk.dim(" New template files have been added alongside your existing setup."));
101
+ console.log(chalk.dim(" ┌" + line + "┐"));
102
+ console.log(row(chalk.bold.white(" All done! Your HQ is ready.")));
103
+ console.log(chalk.dim(" ├" + line + "┤"));
104
+ console.log(row(""));
105
+ console.log(row(` cd ${dir}`));
106
+ console.log(row(" claude"));
107
+ console.log(row(" /setup " + chalk.dim("← personalize your HQ")));
108
+ console.log(row(""));
109
+ console.log(chalk.dim(" └" + line + "┘"));
64
110
  console.log();
65
111
  }
66
112
  //# sourceMappingURL=ui.js.map