create-hq 6.0.0 → 10.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 (336) hide show
  1. package/dist/__tests__/deps.test.d.ts +2 -0
  2. package/dist/__tests__/deps.test.d.ts.map +1 -0
  3. package/dist/__tests__/deps.test.js +176 -0
  4. package/dist/__tests__/deps.test.js.map +1 -0
  5. package/dist/__tests__/platform.test.d.ts +2 -0
  6. package/dist/__tests__/platform.test.d.ts.map +1 -0
  7. package/dist/__tests__/platform.test.js +127 -0
  8. package/dist/__tests__/platform.test.js.map +1 -0
  9. package/dist/__tests__/scaffold.test.d.ts +2 -0
  10. package/dist/__tests__/scaffold.test.d.ts.map +1 -0
  11. package/dist/__tests__/scaffold.test.js +150 -0
  12. package/dist/__tests__/scaffold.test.js.map +1 -0
  13. package/dist/auth.d.ts +32 -0
  14. package/dist/auth.d.ts.map +1 -0
  15. package/dist/auth.js +156 -0
  16. package/dist/auth.js.map +1 -0
  17. package/dist/cloud-sync.d.ts +11 -0
  18. package/dist/cloud-sync.d.ts.map +1 -0
  19. package/dist/cloud-sync.js +25 -0
  20. package/dist/cloud-sync.js.map +1 -0
  21. package/dist/deps.d.ts +32 -2
  22. package/dist/deps.d.ts.map +1 -1
  23. package/dist/deps.js +182 -7
  24. package/dist/deps.js.map +1 -1
  25. package/dist/fetch-template.d.ts +14 -0
  26. package/dist/fetch-template.d.ts.map +1 -0
  27. package/dist/fetch-template.js +136 -0
  28. package/dist/fetch-template.js.map +1 -0
  29. package/dist/index.js +9 -7
  30. package/dist/index.js.map +1 -1
  31. package/dist/packages.d.ts +71 -0
  32. package/dist/packages.d.ts.map +1 -0
  33. package/dist/packages.js +332 -0
  34. package/dist/packages.js.map +1 -0
  35. package/dist/platform.d.ts +9 -0
  36. package/dist/platform.d.ts.map +1 -0
  37. package/dist/platform.js +69 -0
  38. package/dist/platform.js.map +1 -0
  39. package/dist/scaffold.d.ts +3 -2
  40. package/dist/scaffold.d.ts.map +1 -1
  41. package/dist/scaffold.js +109 -290
  42. package/dist/scaffold.js.map +1 -1
  43. package/dist/ui.d.ts +2 -3
  44. package/dist/ui.d.ts.map +1 -1
  45. package/dist/ui.js +90 -44
  46. package/dist/ui.js.map +1 -1
  47. package/package.json +49 -40
  48. package/template/.claude/CLAUDE.md +0 -202
  49. package/template/.claude/commands/checkpoint.md +0 -127
  50. package/template/.claude/commands/cleanup.md +0 -307
  51. package/template/.claude/commands/execute-task.md +0 -440
  52. package/template/.claude/commands/exit-plan.md +0 -41
  53. package/template/.claude/commands/handoff.md +0 -97
  54. package/template/.claude/commands/learn.md +0 -218
  55. package/template/.claude/commands/metrics.md +0 -118
  56. package/template/.claude/commands/newworker.md +0 -162
  57. package/template/.claude/commands/nexttask.md +0 -67
  58. package/template/.claude/commands/prd.md +0 -238
  59. package/template/.claude/commands/reanchor.md +0 -51
  60. package/template/.claude/commands/remember.md +0 -126
  61. package/template/.claude/commands/run-project.md +0 -348
  62. package/template/.claude/commands/run.md +0 -110
  63. package/template/.claude/commands/search-reindex.md +0 -62
  64. package/template/.claude/commands/search.md +0 -100
  65. package/template/.claude/commands/setup.md +0 -381
  66. package/template/.claude/scripts/pure-ralph-loop.ps1 +0 -312
  67. package/template/.claude/scripts/pure-ralph-loop.sh +0 -859
  68. package/template/CHANGELOG.md +0 -220
  69. package/template/LICENSE +0 -21
  70. package/template/MIGRATION.md +0 -259
  71. package/template/README.md +0 -368
  72. package/template/data/journal/.gitkeep +0 -0
  73. package/template/docs/images/ascii-banner-options.md +0 -122
  74. package/template/docs/images/hq-banner.svg +0 -105
  75. package/template/knowledge/Ralph/01-overview.md +0 -71
  76. package/template/knowledge/Ralph/02-core-concepts.md +0 -114
  77. package/template/knowledge/Ralph/03-how-ralph-works.md +0 -184
  78. package/template/knowledge/Ralph/04-back-pressure.md +0 -222
  79. package/template/knowledge/Ralph/05-specifications.md +0 -210
  80. package/template/knowledge/Ralph/06-agents-md.md +0 -222
  81. package/template/knowledge/Ralph/07-implementation.md +0 -316
  82. package/template/knowledge/Ralph/08-economics.md +0 -182
  83. package/template/knowledge/Ralph/09-resources.md +0 -145
  84. package/template/knowledge/Ralph/10-claude-code-workflow.md +0 -212
  85. package/template/knowledge/Ralph/11-team-training-guide.md +0 -383
  86. package/template/knowledge/Ralph/README.md +0 -40
  87. package/template/knowledge/ai-security-framework/CONTRIBUTING.md +0 -139
  88. package/template/knowledge/ai-security-framework/GLOSSARY.md +0 -176
  89. package/template/knowledge/ai-security-framework/LICENSE +0 -21
  90. package/template/knowledge/ai-security-framework/QUICK-START.md +0 -172
  91. package/template/knowledge/ai-security-framework/README.md +0 -232
  92. package/template/knowledge/ai-security-framework/checklists/browser-security.md +0 -301
  93. package/template/knowledge/ai-security-framework/checklists/credential-isolation.md +0 -322
  94. package/template/knowledge/ai-security-framework/checklists/incident-response.md +0 -288
  95. package/template/knowledge/ai-security-framework/checklists/pre-flight.md +0 -249
  96. package/template/knowledge/ai-security-framework/checklists/weekly-audit.md +0 -159
  97. package/template/knowledge/ai-security-framework/configs/audit-logging.md +0 -372
  98. package/template/knowledge/ai-security-framework/configs/kill-switches.md +0 -354
  99. package/template/knowledge/ai-security-framework/docs/01-core-principles.md +0 -256
  100. package/template/knowledge/ai-security-framework/docs/02-threat-landscape.md +0 -326
  101. package/template/knowledge/ai-security-framework/docs/03-security-posture.md +0 -250
  102. package/template/knowledge/ai-security-framework/templates/agents-security.md +0 -233
  103. package/template/knowledge/design-styles/README.md +0 -42
  104. package/template/knowledge/design-styles/american-industrial.md +0 -136
  105. package/template/knowledge/design-styles/ethereal-abstract.md +0 -133
  106. package/template/knowledge/design-styles/liminal-portal.md +0 -111
  107. package/template/knowledge/design-styles/swipes/american-industrial/G-3m4YPW0AADdu2.jpeg +0 -0
  108. package/template/knowledge/design-styles/swipes/american-industrial/G-JJlt5WwAABK3K.png +0 -0
  109. package/template/knowledge/design-styles/swipes/american-industrial/G-JJmj5W0AEbJ-7.png +0 -0
  110. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ (1).jpeg +0 -0
  111. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ.jpeg +0 -0
  112. package/template/knowledge/design-styles/swipes/american-industrial/G7fVkn3WEAAM-ST.jpeg +0 -0
  113. package/template/knowledge/design-styles/swipes/american-industrial/G8ECO5JWEAIksyn.png +0 -0
  114. package/template/knowledge/design-styles/swipes/american-industrial/G9-3GQSWoAA8eqZ.png +0 -0
  115. package/template/knowledge/design-styles/swipes/american-industrial/G9xEOqrXkAEZRcs.png +0 -0
  116. package/template/knowledge/design-styles/swipes/american-industrial/G_MVeJrXQAA8sx4.jpeg +0 -0
  117. package/template/knowledge/design-styles/swipes/american-industrial/G_RSkmGXkAAgAVZ.png +0 -0
  118. package/template/knowledge/design-styles/swipes/american-industrial/README.md +0 -31
  119. package/template/knowledge/design-styles/swipes/american-industrial/qyqtg7Dq.png +0 -0
  120. package/template/knowledge/dev-team/README.md +0 -35
  121. package/template/knowledge/dev-team/patterns/README.md +0 -34
  122. package/template/knowledge/dev-team/patterns/frontend/react-best-practices.md +0 -178
  123. package/template/knowledge/dev-team/troubleshooting/README.md +0 -31
  124. package/template/knowledge/dev-team/workflows/README.md +0 -49
  125. package/template/knowledge/hq/checkpoint-schema.json +0 -51
  126. package/template/knowledge/hq/index-md-spec.md +0 -74
  127. package/template/knowledge/hq/thread-schema.md +0 -153
  128. package/template/knowledge/hq-core/checkpoint-schema.json +0 -51
  129. package/template/knowledge/hq-core/index-md-spec.md +0 -74
  130. package/template/knowledge/hq-core/thread-schema.md +0 -153
  131. package/template/knowledge/loom/README.md +0 -51
  132. package/template/knowledge/loom/architecture.md +0 -125
  133. package/template/knowledge/loom/code-style.md +0 -169
  134. package/template/knowledge/loom/llm-proxy.md +0 -132
  135. package/template/knowledge/loom/state-machine.md +0 -131
  136. package/template/knowledge/loom/thread-system.md +0 -117
  137. package/template/knowledge/loom/tools.md +0 -94
  138. package/template/knowledge/loom/weaver.md +0 -96
  139. package/template/knowledge/loom/web-frontend.md +0 -131
  140. package/template/knowledge/projects/README.md +0 -72
  141. package/template/knowledge/projects/templates/README.template.md +0 -28
  142. package/template/knowledge/workers/README.md +0 -195
  143. package/template/knowledge/workers/ralph-loop-pattern.md +0 -157
  144. package/template/knowledge/workers/skill-schema.md +0 -182
  145. package/template/knowledge/workers/state-machine.md +0 -102
  146. package/template/knowledge/workers/templates/base-worker.yaml +0 -73
  147. package/template/knowledge/workers/templates/code-worker.yaml +0 -85
  148. package/template/knowledge/workers/templates/skill.yaml +0 -49
  149. package/template/knowledge/workers/templates/social-worker.yaml +0 -70
  150. package/template/modules/examples/full-manifest.yaml +0 -92
  151. package/template/modules/examples/minimal.yaml +0 -14
  152. package/template/modules/modules.yaml +0 -59
  153. package/template/projects/.gitkeep +0 -0
  154. package/template/projects/incorporate-workers-into-pure-ralph/prd.json +0 -88
  155. package/template/projects/pure-ralph-branch-isolation/README.md +0 -114
  156. package/template/projects/pure-ralph-branch-isolation/prd.json +0 -123
  157. package/template/projects/purist-ralph-loop/README.md +0 -148
  158. package/template/projects/purist-ralph-loop/prd.json +0 -135
  159. package/template/projects/ralph-test/prd.json +0 -50
  160. package/template/prompts/pure-ralph-base.md +0 -551
  161. package/template/settings/.gitkeep +0 -0
  162. package/template/settings/pure-ralph.json +0 -42
  163. package/template/social-content/drafts/INDEX.md +0 -21
  164. package/template/social-content/drafts/linkedin/.gitkeep +0 -1
  165. package/template/social-content/drafts/x/.gitkeep +0 -1
  166. package/template/social-content/images/.gitkeep +0 -1
  167. package/template/starter-projects/code-worker/README.md +0 -97
  168. package/template/starter-projects/code-worker/prd.json +0 -45
  169. package/template/starter-projects/personal-assistant/README.md +0 -42
  170. package/template/starter-projects/personal-assistant/prd.json +0 -43
  171. package/template/starter-projects/social-media/README.md +0 -60
  172. package/template/starter-projects/social-media/prd.json +0 -43
  173. package/template/workers/content-brand/README.md +0 -59
  174. package/template/workers/content-brand/skills/messaging-alignment.md +0 -91
  175. package/template/workers/content-brand/skills/tone-check.md +0 -76
  176. package/template/workers/content-brand/skills/voice-analysis.md +0 -68
  177. package/template/workers/content-brand/worker.yaml +0 -81
  178. package/template/workers/content-legal/README.md +0 -80
  179. package/template/workers/content-legal/skills/claim-substantiation.md +0 -150
  180. package/template/workers/content-legal/skills/compliance-scan.md +0 -123
  181. package/template/workers/content-legal/skills/disclaimer-check.md +0 -146
  182. package/template/workers/content-legal/worker.yaml +0 -118
  183. package/template/workers/content-product/README.md +0 -77
  184. package/template/workers/content-product/skills/claim-verification.md +0 -96
  185. package/template/workers/content-product/skills/feature-accuracy.md +0 -117
  186. package/template/workers/content-product/skills/stats-check.md +0 -128
  187. package/template/workers/content-product/worker.yaml +0 -97
  188. package/template/workers/content-sales/README.md +0 -70
  189. package/template/workers/content-sales/skills/conversion-analysis.md +0 -96
  190. package/template/workers/content-sales/skills/cta-audit.md +0 -107
  191. package/template/workers/content-sales/skills/value-prop-check.md +0 -114
  192. package/template/workers/content-sales/worker.yaml +0 -93
  193. package/template/workers/content-shared/cli.ts +0 -242
  194. package/template/workers/content-shared/index.ts +0 -234
  195. package/template/workers/content-shared/lib/accuracy-analyzer.ts +0 -661
  196. package/template/workers/content-shared/lib/analyze.ts +0 -370
  197. package/template/workers/content-shared/lib/brand-analyzer.ts +0 -526
  198. package/template/workers/content-shared/lib/cms-integration.ts +0 -446
  199. package/template/workers/content-shared/lib/compliance-analyzer.ts +0 -655
  200. package/template/workers/content-shared/lib/conversion-analyzer.ts +0 -555
  201. package/template/workers/content-shared/lib/github-integration.ts +0 -582
  202. package/template/workers/content-shared/lib/output.ts +0 -373
  203. package/template/workers/content-shared/lib/parser.ts +0 -771
  204. package/template/workers/content-shared/lib/priority.ts +0 -439
  205. package/template/workers/content-shared/lib/recommendations.ts +0 -512
  206. package/template/workers/content-shared/lib/reporter.ts +0 -749
  207. package/template/workers/content-shared/lib/restructure.ts +0 -664
  208. package/template/workers/content-shared/lib/scorer.ts +0 -140
  209. package/template/workers/content-shared/lib/types.ts +0 -227
  210. package/template/workers/content-shared/lib/variants.ts +0 -595
  211. package/template/workers/content-shared/package.json +0 -51
  212. package/template/workers/content-shared/pnpm-lock.yaml +0 -39
  213. package/template/workers/content-shared/test/sample-page.json +0 -115
  214. package/template/workers/content-shared/tsconfig.json +0 -20
  215. package/template/workers/dev-team/README.md +0 -166
  216. package/template/workers/dev-team/_template.yaml +0 -70
  217. package/template/workers/dev-team/architect/package.json +0 -27
  218. package/template/workers/dev-team/architect/skills/api-design.md +0 -89
  219. package/template/workers/dev-team/architect/skills/refactor-plan.md +0 -96
  220. package/template/workers/dev-team/architect/skills/system-design.md +0 -100
  221. package/template/workers/dev-team/architect/src/index.ts +0 -49
  222. package/template/workers/dev-team/architect/src/mcp-server.ts +0 -122
  223. package/template/workers/dev-team/architect/src/skills/api-design.ts +0 -316
  224. package/template/workers/dev-team/architect/src/skills/refactor-plan.ts +0 -264
  225. package/template/workers/dev-team/architect/src/skills/system-design.ts +0 -212
  226. package/template/workers/dev-team/architect/tsconfig.json +0 -19
  227. package/template/workers/dev-team/architect/worker.yaml +0 -128
  228. package/template/workers/dev-team/backend-dev/package-lock.json +0 -1252
  229. package/template/workers/dev-team/backend-dev/package.json +0 -27
  230. package/template/workers/dev-team/backend-dev/skills/implement-endpoint.md +0 -70
  231. package/template/workers/dev-team/backend-dev/skills/implement-service.md +0 -62
  232. package/template/workers/dev-team/backend-dev/src/index.ts +0 -51
  233. package/template/workers/dev-team/backend-dev/src/mcp-server.ts +0 -109
  234. package/template/workers/dev-team/backend-dev/src/skills/implement-endpoint.ts +0 -122
  235. package/template/workers/dev-team/backend-dev/src/skills/implement-service.ts +0 -126
  236. package/template/workers/dev-team/backend-dev/tsconfig.json +0 -19
  237. package/template/workers/dev-team/backend-dev/worker.yaml +0 -128
  238. package/template/workers/dev-team/code-reviewer/package-lock.json +0 -1080
  239. package/template/workers/dev-team/code-reviewer/package.json +0 -24
  240. package/template/workers/dev-team/code-reviewer/skills/merge-to-production.md +0 -61
  241. package/template/workers/dev-team/code-reviewer/skills/merge-to-staging.md +0 -54
  242. package/template/workers/dev-team/code-reviewer/skills/request-changes.md +0 -63
  243. package/template/workers/dev-team/code-reviewer/skills/review-pr.md +0 -77
  244. package/template/workers/dev-team/code-reviewer/src/index.ts +0 -56
  245. package/template/workers/dev-team/code-reviewer/src/mcp-server.ts +0 -101
  246. package/template/workers/dev-team/code-reviewer/tsconfig.json +0 -19
  247. package/template/workers/dev-team/code-reviewer/worker.yaml +0 -90
  248. package/template/workers/dev-team/database-dev/package.json +0 -22
  249. package/template/workers/dev-team/database-dev/skills/create-schema.md +0 -48
  250. package/template/workers/dev-team/database-dev/src/index.ts +0 -50
  251. package/template/workers/dev-team/database-dev/src/mcp-server.ts +0 -76
  252. package/template/workers/dev-team/database-dev/tsconfig.json +0 -18
  253. package/template/workers/dev-team/database-dev/worker.yaml +0 -90
  254. package/template/workers/dev-team/frontend-dev/package.json +0 -22
  255. package/template/workers/dev-team/frontend-dev/skills/create-component.md +0 -26
  256. package/template/workers/dev-team/frontend-dev/src/index.ts +0 -50
  257. package/template/workers/dev-team/frontend-dev/src/mcp-server.ts +0 -77
  258. package/template/workers/dev-team/frontend-dev/tsconfig.json +0 -18
  259. package/template/workers/dev-team/frontend-dev/worker.yaml +0 -132
  260. package/template/workers/dev-team/infra-dev/package.json +0 -24
  261. package/template/workers/dev-team/infra-dev/skills/add-monitoring.md +0 -73
  262. package/template/workers/dev-team/infra-dev/skills/configure-deployment.md +0 -80
  263. package/template/workers/dev-team/infra-dev/skills/create-dockerfile.md +0 -62
  264. package/template/workers/dev-team/infra-dev/skills/setup-cicd.md +0 -63
  265. package/template/workers/dev-team/infra-dev/src/index.ts +0 -55
  266. package/template/workers/dev-team/infra-dev/src/mcp-server.ts +0 -82
  267. package/template/workers/dev-team/infra-dev/tsconfig.json +0 -19
  268. package/template/workers/dev-team/infra-dev/worker.yaml +0 -92
  269. package/template/workers/dev-team/knowledge-curator/package.json +0 -24
  270. package/template/workers/dev-team/knowledge-curator/skills/curate-troubleshooting.md +0 -63
  271. package/template/workers/dev-team/knowledge-curator/skills/process-learnings.md +0 -61
  272. package/template/workers/dev-team/knowledge-curator/skills/sync-documentation.md +0 -76
  273. package/template/workers/dev-team/knowledge-curator/skills/update-patterns.md +0 -63
  274. package/template/workers/dev-team/knowledge-curator/src/index.ts +0 -53
  275. package/template/workers/dev-team/knowledge-curator/src/mcp-server.ts +0 -92
  276. package/template/workers/dev-team/knowledge-curator/tsconfig.json +0 -19
  277. package/template/workers/dev-team/knowledge-curator/worker.yaml +0 -80
  278. package/template/workers/dev-team/motion-designer/package.json +0 -22
  279. package/template/workers/dev-team/motion-designer/skills/add-animation.md +0 -25
  280. package/template/workers/dev-team/motion-designer/skills/generate-image.md +0 -36
  281. package/template/workers/dev-team/motion-designer/src/index.ts +0 -63
  282. package/template/workers/dev-team/motion-designer/src/mcp-server.ts +0 -79
  283. package/template/workers/dev-team/motion-designer/tsconfig.json +0 -18
  284. package/template/workers/dev-team/motion-designer/worker.yaml +0 -84
  285. package/template/workers/dev-team/product-planner/queue.json +0 -4
  286. package/template/workers/dev-team/product-planner/worker.yaml +0 -220
  287. package/template/workers/dev-team/project-manager/package-lock.json +0 -1252
  288. package/template/workers/dev-team/project-manager/package.json +0 -27
  289. package/template/workers/dev-team/project-manager/skills/create-prd.md +0 -66
  290. package/template/workers/dev-team/project-manager/skills/next-issue.md +0 -51
  291. package/template/workers/dev-team/project-manager/skills/project-status.md +0 -59
  292. package/template/workers/dev-team/project-manager/skills/update-learnings.md +0 -65
  293. package/template/workers/dev-team/project-manager/src/index.ts +0 -54
  294. package/template/workers/dev-team/project-manager/src/mcp-server.ts +0 -207
  295. package/template/workers/dev-team/project-manager/src/skills/create-prd.ts +0 -86
  296. package/template/workers/dev-team/project-manager/src/skills/next-issue.ts +0 -137
  297. package/template/workers/dev-team/project-manager/src/skills/project-status.ts +0 -131
  298. package/template/workers/dev-team/project-manager/src/skills/update-learnings.ts +0 -94
  299. package/template/workers/dev-team/project-manager/tsconfig.json +0 -19
  300. package/template/workers/dev-team/project-manager/worker.yaml +0 -96
  301. package/template/workers/dev-team/qa-tester/package.json +0 -24
  302. package/template/workers/dev-team/qa-tester/skills/create-demo-account.md +0 -36
  303. package/template/workers/dev-team/qa-tester/skills/run-tests.md +0 -36
  304. package/template/workers/dev-team/qa-tester/skills/write-test.md +0 -27
  305. package/template/workers/dev-team/qa-tester/src/index.ts +0 -61
  306. package/template/workers/dev-team/qa-tester/src/mcp-server.ts +0 -88
  307. package/template/workers/dev-team/qa-tester/tsconfig.json +0 -18
  308. package/template/workers/dev-team/qa-tester/worker.yaml +0 -116
  309. package/template/workers/dev-team/task-executor/package-lock.json +0 -1252
  310. package/template/workers/dev-team/task-executor/package.json +0 -27
  311. package/template/workers/dev-team/task-executor/skills/analyze-issue.md +0 -101
  312. package/template/workers/dev-team/task-executor/skills/execute.md +0 -133
  313. package/template/workers/dev-team/task-executor/skills/report-learnings.md +0 -106
  314. package/template/workers/dev-team/task-executor/skills/validate-completion.md +0 -121
  315. package/template/workers/dev-team/task-executor/src/index.ts +0 -54
  316. package/template/workers/dev-team/task-executor/src/mcp-server.ts +0 -139
  317. package/template/workers/dev-team/task-executor/src/skills/analyze-issue.ts +0 -219
  318. package/template/workers/dev-team/task-executor/src/skills/execute.ts +0 -132
  319. package/template/workers/dev-team/task-executor/src/skills/report-learnings.ts +0 -119
  320. package/template/workers/dev-team/task-executor/src/skills/validate-completion.ts +0 -142
  321. package/template/workers/dev-team/task-executor/tsconfig.json +0 -19
  322. package/template/workers/dev-team/task-executor/worker.yaml +0 -110
  323. package/template/workers/registry.yaml +0 -171
  324. package/template/workers/security-scanner/README.md +0 -73
  325. package/template/workers/security-scanner/skills/pre-deploy-check.md +0 -205
  326. package/template/workers/security-scanner/worker.yaml +0 -26
  327. package/template/workspace/checkpoints/.gitkeep +0 -0
  328. package/template/workspace/content-ideas/inbox.jsonl +0 -0
  329. package/template/workspace/drafts/.gitkeep +0 -0
  330. package/template/workspace/learnings/.gitkeep +0 -3
  331. package/template/workspace/orchestrator/.gitkeep +0 -0
  332. package/template/workspace/ralph-test/COMPLETE.md +0 -18
  333. package/template/workspace/ralph-test/hello.txt +0 -2
  334. package/template/workspace/reports/.gitkeep +0 -0
  335. package/template/workspace/scratch/.gitkeep +0 -0
  336. package/template/workspace/threads/.gitkeep +0 -3
@@ -1,446 +0,0 @@
1
- /**
2
- * CMS API Integration (US-018)
3
- * Submit suggestions to CMS review queue
4
- */
5
-
6
- import type { Suggestion } from './recommendations.js';
7
-
8
- // ============================================
9
- // Types
10
- // ============================================
11
-
12
- export interface CMSSuggestion {
13
- pageSlug: string;
14
- sectionId?: string;
15
- original: string;
16
- suggested: string;
17
- rationale: string;
18
- source: string;
19
- priority: 'high' | 'medium' | 'low';
20
- }
21
-
22
- export interface CMSClientConfig {
23
- baseUrl: string;
24
- apiKey?: string;
25
- timeout?: number;
26
- }
27
-
28
- export interface CMSClientInstance {
29
- config: CMSClientConfig;
30
- submitSuggestion: (suggestion: CMSSuggestion) => Promise<CMSSubmitResult>;
31
- submitSuggestions: (suggestions: CMSSuggestion[]) => Promise<CMSBatchResult>;
32
- getSuggestionStatus: (suggestionId: string) => Promise<CMSSuggestionStatus>;
33
- listPendingSuggestions: (pageSlug?: string) => Promise<CMSSuggestion[]>;
34
- }
35
-
36
- export interface CMSSubmitResult {
37
- success: boolean;
38
- suggestionId?: string;
39
- message?: string;
40
- error?: string;
41
- }
42
-
43
- export interface CMSBatchResult {
44
- submitted: number;
45
- failed: number;
46
- results: CMSSubmitResult[];
47
- }
48
-
49
- export interface CMSSuggestionStatus {
50
- id: string;
51
- status: 'pending' | 'approved' | 'rejected' | 'applied';
52
- reviewedBy?: string;
53
- reviewedAt?: string;
54
- comments?: string;
55
- }
56
-
57
- export const DEFAULT_CMS_CONFIG: CMSClientConfig = {
58
- baseUrl: '',
59
- apiKey: undefined,
60
- timeout: 30000,
61
- };
62
-
63
- // ============================================
64
- // CMS Client Factory
65
- // ============================================
66
-
67
- /**
68
- * Create CMS client instance
69
- */
70
- export function createCMSClient(config: CMSClientConfig): CMSClientInstance {
71
- const cfg = { ...DEFAULT_CMS_CONFIG, ...config };
72
-
73
- return {
74
- config: cfg,
75
- submitSuggestion: (suggestion) => submitSuggestion(cfg, suggestion),
76
- submitSuggestions: (suggestions) => submitSuggestions(cfg, suggestions),
77
- getSuggestionStatus: (id) => getSuggestionStatus(cfg, id),
78
- listPendingSuggestions: (pageSlug) => listPendingSuggestions(cfg, pageSlug),
79
- };
80
- }
81
-
82
- // ============================================
83
- // CMS API Functions
84
- // ============================================
85
-
86
- /**
87
- * Submit a single suggestion to CMS review queue
88
- */
89
- async function submitSuggestion(
90
- config: CMSClientConfig,
91
- suggestion: CMSSuggestion
92
- ): Promise<CMSSubmitResult> {
93
- if (!config.baseUrl) {
94
- return {
95
- success: false,
96
- error: 'CMS base URL not configured',
97
- };
98
- }
99
-
100
- try {
101
- const response = await fetch(`${config.baseUrl}/api/suggestions`, {
102
- method: 'POST',
103
- headers: buildHeaders(config),
104
- body: JSON.stringify(suggestion),
105
- signal: AbortSignal.timeout(config.timeout ?? 30000),
106
- });
107
-
108
- if (!response.ok) {
109
- const errorText = await response.text();
110
- return {
111
- success: false,
112
- error: `HTTP ${response.status}: ${errorText}`,
113
- };
114
- }
115
-
116
- const data = await response.json() as { id?: string; message?: string };
117
- return {
118
- success: true,
119
- suggestionId: data.id,
120
- message: data.message ?? 'Suggestion submitted successfully',
121
- };
122
- } catch (error) {
123
- return {
124
- success: false,
125
- error: error instanceof Error ? error.message : 'Unknown error',
126
- };
127
- }
128
- }
129
-
130
- /**
131
- * Submit batch of suggestions to CMS
132
- */
133
- async function submitSuggestions(
134
- config: CMSClientConfig,
135
- suggestions: CMSSuggestion[]
136
- ): Promise<CMSBatchResult> {
137
- const results: CMSSubmitResult[] = [];
138
- let submitted = 0;
139
- let failed = 0;
140
-
141
- // Process in batches of 10 to avoid overwhelming the API
142
- const batchSize = 10;
143
- for (let i = 0; i < suggestions.length; i += batchSize) {
144
- const batch = suggestions.slice(i, i + batchSize);
145
-
146
- // Submit batch in parallel
147
- const batchResults = await Promise.all(
148
- batch.map(s => submitSuggestion(config, s))
149
- );
150
-
151
- for (const result of batchResults) {
152
- results.push(result);
153
- if (result.success) {
154
- submitted++;
155
- } else {
156
- failed++;
157
- }
158
- }
159
- }
160
-
161
- return { submitted, failed, results };
162
- }
163
-
164
- /**
165
- * Get suggestion status from CMS
166
- */
167
- async function getSuggestionStatus(
168
- config: CMSClientConfig,
169
- suggestionId: string
170
- ): Promise<CMSSuggestionStatus> {
171
- if (!config.baseUrl) {
172
- throw new Error('CMS base URL not configured');
173
- }
174
-
175
- const response = await fetch(
176
- `${config.baseUrl}/api/suggestions/${suggestionId}`,
177
- {
178
- method: 'GET',
179
- headers: buildHeaders(config),
180
- signal: AbortSignal.timeout(config.timeout ?? 30000),
181
- }
182
- );
183
-
184
- if (!response.ok) {
185
- throw new Error(`Failed to get suggestion status: HTTP ${response.status}`);
186
- }
187
-
188
- return response.json() as Promise<CMSSuggestionStatus>;
189
- }
190
-
191
- /**
192
- * List pending suggestions from CMS
193
- */
194
- async function listPendingSuggestions(
195
- config: CMSClientConfig,
196
- pageSlug?: string
197
- ): Promise<CMSSuggestion[]> {
198
- if (!config.baseUrl) {
199
- throw new Error('CMS base URL not configured');
200
- }
201
-
202
- const url = new URL(`${config.baseUrl}/api/suggestions`);
203
- url.searchParams.set('status', 'pending');
204
- if (pageSlug) {
205
- url.searchParams.set('pageSlug', pageSlug);
206
- }
207
-
208
- const response = await fetch(url.toString(), {
209
- method: 'GET',
210
- headers: buildHeaders(config),
211
- signal: AbortSignal.timeout(config.timeout ?? 30000),
212
- });
213
-
214
- if (!response.ok) {
215
- throw new Error(`Failed to list suggestions: HTTP ${response.status}`);
216
- }
217
-
218
- const data = await response.json() as { suggestions: CMSSuggestion[] };
219
- return data.suggestions;
220
- }
221
-
222
- /**
223
- * Build request headers
224
- */
225
- function buildHeaders(config: CMSClientConfig): Record<string, string> {
226
- const headers: Record<string, string> = {
227
- 'Content-Type': 'application/json',
228
- };
229
-
230
- if (config.apiKey) {
231
- headers['Authorization'] = `Bearer ${config.apiKey}`;
232
- }
233
-
234
- return headers;
235
- }
236
-
237
- // ============================================
238
- // Suggestion Conversion
239
- // ============================================
240
-
241
- /**
242
- * Convert internal suggestion to CMS format
243
- */
244
- export function toCMSSuggestion(suggestion: Suggestion): CMSSuggestion {
245
- return {
246
- pageSlug: suggestion.pageSlug,
247
- sectionId: suggestion.sectionId,
248
- original: suggestion.original,
249
- suggested: suggestion.suggested,
250
- rationale: suggestion.rationale,
251
- source: formatSource(suggestion.source),
252
- priority: suggestion.impact,
253
- };
254
- }
255
-
256
- /**
257
- * Convert batch of suggestions to CMS format
258
- */
259
- export function toCMSSuggestions(suggestions: Suggestion[]): CMSSuggestion[] {
260
- return suggestions.map(toCMSSuggestion);
261
- }
262
-
263
- /**
264
- * Format source for CMS
265
- */
266
- function formatSource(source: Suggestion['source']): string {
267
- const sourceMap: Record<Suggestion['source'], string> = {
268
- brand: 'Brand Voice Analysis',
269
- sales: 'Conversion Analysis',
270
- product: 'Product Accuracy Check',
271
- legal: 'Compliance Review',
272
- };
273
- return sourceMap[source] ?? source;
274
- }
275
-
276
- // ============================================
277
- // Status Sync
278
- // ============================================
279
-
280
- /**
281
- * Sync suggestion status from CMS
282
- */
283
- export async function syncSuggestionStatus(
284
- client: CMSClientInstance,
285
- suggestionId: string
286
- ): Promise<string> {
287
- const status = await client.getSuggestionStatus(suggestionId);
288
- return status.status;
289
- }
290
-
291
- /**
292
- * Sync multiple suggestion statuses
293
- */
294
- export async function syncSuggestionStatuses(
295
- client: CMSClientInstance,
296
- suggestionIds: string[]
297
- ): Promise<Map<string, string>> {
298
- const statuses = new Map<string, string>();
299
-
300
- // Fetch in parallel with rate limiting
301
- const batchSize = 5;
302
- for (let i = 0; i < suggestionIds.length; i += batchSize) {
303
- const batch = suggestionIds.slice(i, i + batchSize);
304
- const results = await Promise.all(
305
- batch.map(async (id) => {
306
- try {
307
- const status = await syncSuggestionStatus(client, id);
308
- return { id, status };
309
- } catch {
310
- return { id, status: 'unknown' };
311
- }
312
- })
313
- );
314
-
315
- for (const { id, status } of results) {
316
- statuses.set(id, status);
317
- }
318
- }
319
-
320
- return statuses;
321
- }
322
-
323
- // ============================================
324
- // Dry Run / Preview Mode
325
- // ============================================
326
-
327
- /**
328
- * Create a dry-run CMS client that logs instead of submitting
329
- */
330
- export function createDryRunCMSClient(): CMSClientInstance {
331
- const dryRunResults: CMSSuggestion[] = [];
332
-
333
- return {
334
- config: { baseUrl: 'dry-run://localhost' },
335
-
336
- async submitSuggestion(suggestion: CMSSuggestion): Promise<CMSSubmitResult> {
337
- dryRunResults.push(suggestion);
338
- console.log('[DRY RUN] Would submit suggestion:', suggestion.pageSlug);
339
- return {
340
- success: true,
341
- suggestionId: `dry-run-${Date.now()}`,
342
- message: 'Dry run - not actually submitted',
343
- };
344
- },
345
-
346
- async submitSuggestions(suggestions: CMSSuggestion[]): Promise<CMSBatchResult> {
347
- const results: CMSSubmitResult[] = [];
348
- for (const s of suggestions) {
349
- const result = await this.submitSuggestion(s);
350
- results.push(result);
351
- }
352
- return {
353
- submitted: suggestions.length,
354
- failed: 0,
355
- results,
356
- };
357
- },
358
-
359
- async getSuggestionStatus(id: string): Promise<CMSSuggestionStatus> {
360
- return {
361
- id,
362
- status: 'pending',
363
- comments: 'Dry run mode - no actual status available',
364
- };
365
- },
366
-
367
- async listPendingSuggestions(): Promise<CMSSuggestion[]> {
368
- return dryRunResults;
369
- },
370
- };
371
- }
372
-
373
- // ============================================
374
- // Formatting for Review
375
- // ============================================
376
-
377
- /**
378
- * Format CMS suggestion for human review
379
- */
380
- export function formatCMSSuggestionForReview(suggestion: CMSSuggestion): string {
381
- const lines: string[] = [];
382
-
383
- lines.push(`## ${suggestion.pageSlug}${suggestion.sectionId ? ` > ${suggestion.sectionId}` : ''}`);
384
- lines.push('');
385
- lines.push(`**Priority:** ${suggestion.priority}`);
386
- lines.push(`**Source:** ${suggestion.source}`);
387
- lines.push('');
388
- lines.push('### Current');
389
- lines.push('```');
390
- lines.push(suggestion.original);
391
- lines.push('```');
392
- lines.push('');
393
- lines.push('### Suggested');
394
- lines.push('```');
395
- lines.push(suggestion.suggested);
396
- lines.push('```');
397
- lines.push('');
398
- lines.push(`**Rationale:** ${suggestion.rationale}`);
399
- lines.push('');
400
-
401
- return lines.join('\n');
402
- }
403
-
404
- /**
405
- * Format batch of suggestions as review document
406
- */
407
- export function formatSuggestionsForReview(suggestions: CMSSuggestion[]): string {
408
- const lines: string[] = [];
409
-
410
- lines.push('# CMS Suggestions Review');
411
- lines.push('');
412
- lines.push(`**Total Suggestions:** ${suggestions.length}`);
413
- lines.push(`**Generated:** ${new Date().toISOString()}`);
414
- lines.push('');
415
-
416
- // Group by priority
417
- const high = suggestions.filter(s => s.priority === 'high');
418
- const medium = suggestions.filter(s => s.priority === 'medium');
419
- const low = suggestions.filter(s => s.priority === 'low');
420
-
421
- if (high.length > 0) {
422
- lines.push('# High Priority');
423
- lines.push('');
424
- for (const s of high) {
425
- lines.push(formatCMSSuggestionForReview(s));
426
- }
427
- }
428
-
429
- if (medium.length > 0) {
430
- lines.push('# Medium Priority');
431
- lines.push('');
432
- for (const s of medium) {
433
- lines.push(formatCMSSuggestionForReview(s));
434
- }
435
- }
436
-
437
- if (low.length > 0) {
438
- lines.push('# Low Priority');
439
- lines.push('');
440
- for (const s of low) {
441
- lines.push(formatCMSSuggestionForReview(s));
442
- }
443
- }
444
-
445
- return lines.join('\n');
446
- }